Nella terminologia BigTable/GFS e Cassandra, qual è la definizione di un SSTable?Che cos'è un SSTable?
risposta
Ordinati Strings Table (preso in prestito da google) è un file di coppie di stringhe chiave/valore, ordinati per chiavi
Grazie per l'ennesima eccellente QUINDI risposta di Cassandra! A proposito, hai visto questa domanda: http://stackoverflow.com/questions/2573106/what-are-the-alternative-ways-to-model-mm-relations-in-cassandra – knorv
È generalmente immutabile? –
sì, gli sstables sono immutabili per design - che è una fantastica funzione – Schildmeijer
"Uno SSTable fornisce un ordinato mappa immutabile persistente da chiavi di valori, in cui entrambe le chiavi e valori sono stringhe di byte arbitrarie. Vengono fornite operazioni per cercare il valore associato a una chiave specificata e per iterare su tutte le coppie chiave/valore in un intervallo di chiavi specificato. Internamente, ogni SSTable contiene una sequenza di blocchi (in genere ogni blocco ha una dimensione di 64 KB) , ma questo è configurabile). Un indice di blocco (memorizzato alla fine dell'SSTable) viene utilizzato per individuare i blocchi, l'indice viene caricato in memoria quando viene aperto l'SST. È possibile eseguire una ricerca con una ricerca su disco singolo: per prima cosa trova il blocco appropriato eseguendo una ricerca binaria in in-memor Indice y, quindi lettura del blocco appropriato dal disco. Facoltativamente, uno SSTable può essere completamente mappato in memoria, che ci permette di eseguire ricerche e scansioni senza toccare disco ".
"senza toccare il disco" -> "senza essere a conoscenza che il disco viene toccato". Memory IO mappato è una tecnica molto utile perché delega l'IO effettivo al sistema operativo, supponendo che possa fare un buon lavoro nella cache (specialmente quando diversi processi condividono lo stesso file). Ma ha lo svantaggio di non averne il controllo. Se la pagina non è residente in memoria, il thread si bloccherà e non potrà eseguire altre operazioni; contrasto con "async IO", in cui è possibile registrare un callback e fare altre cose nello stesso thread, mentre l'IO è in sospeso. – ithkuil
@ithkuil: Si può assolutamente avere il controllo dell'IO memoria mappata almeno al punto di essere in grado di assicurare che certe pagine siano in memoria o siano state commesse su disco (c'è ancora spazio per le pagine che non sono garantite per essere in memoria ma potrebbe essere benissimo). Ecco cosa sono le cose meravigliose come mlock(), msync() e MAP_LOCKED.È inoltre possibile ottenere una comprensione di ciò che attualmente è e non viene inserito tramite mincore(). –
@ChristopherSmith: sì, hai ragione, ci sono modi per controllarlo. Tuttavia, in genere viene utilizzato per le sezioni delle prestazioni critiche (in tempo reale) o problemi relativi alla sicurezza (come evitare che una password in memoria venga scambiata su disco). I file mappati in memoria sono molto utili proprio per il fatto che non è necessario decidere quanti di essi tenere in memoria; altrimenti potresti semplicemente leggere l'intero file in memoria senza mmap e ottenere lo stesso effetto. In effetti, ho appena inteso il codice di Cassandra; l'unica chiamata è 'mlockall (MCL_CURRENT);' fatto all'avvio. Vedi anche: http://goo.gl/AEgPM – ithkuil
Compressa è memorizzata sotto forma di SSTables.
SSTable (direttamente mappata GFS) è . valore-chiave basa stoccaggio immutabile memorizza i blocchi di dati, ciascuno è di 64 KB
Definizioni:.
- Indice delle chiavi: chiave e luogo di partenza
- Chunk è un'unità di archiviazione in GFS, gestione delle repliche sono di pezzo
SSTable (Engl. Tabella delle stringhe ordinate) è un file di coppie chiave/valore , ordinate per chiavi.
Un SSTable fornisce una mappa immutabile persistente e ordinata dalle chiavi ai valori , dove sia le chiavi che i valori sono stringhe di byte arbitrarie.
Internamente, ogni SSTable contiene una sequenza di blocchi (in genere
ogni blocco ha una dimensione di 64 KB, ma è configurabile).
Questo è un grande post intro di SSTables: http://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/ –