Cos'è un SSTable nell'infrastruttura interna di Google?
La mia comprensione è che questo è un formato di file su disco che rappresenta una mappa da stringa a stringa. Le coppie (chiave, valore) sono ordinate per chiave e scritte in sequenza. Alla fine del file viene scritto un indice che memorizza ogni chiave e l'offset del suo valore. In questo modo, solo l'indice (la dimensione di tutte le chiavi) deve stare in memoria per permettere una ricerca efficiente di qualsiasi stringa nella tabella, anche quando i valori potrebbero essere molto più grandi della memoria disponibile. Per caricare una SSTable per un accesso casuale, un processo cercherà l'indice, lo leggerà (che può essere una copia diretta in memoria o mmap), e cercherà i valori solo se necessario.
Le SSTable sono immutabili, il che significa che una volta scritte, gli elementi non possono essere aggiunti o rimossi dalla mappa.
Per quanto ne so, l'indice è alla fine in modo che una SSTable possa essere costruita in un singolo passaggio sull'input, scrivendo i valori e costruendo l'indice in memoria (con i loro offset), e poi scrivendo l'indice alla fine.
Un esempio di applicazione delle SSTable è Bigtable. Una SSTable è usata per memorizzare il contenuto di una parte di una tabella (tablet). Le chiavi sono (riga, colonna, tempo). Per simulare la mutabilità, vengono scritte nuove SSTable che includono le aggiunte e le rimozioni di valori nella SSTable originale. Occasionalmente si verificherà una "compattazione" tipo garbage collection in cui tutte queste tabelle vengono fuse in una sola. Questa strategia evita le scritture casuali e rende efficiente lo spostamento di una tavoletta da un server all'altro.
Articoli simili
- Come spostare file (immagini, video, audio ecc.) dalla memoria interna alla scheda SD che viene formattata come memoria interna del dispositivo
- Che aspetto ha l'infrastruttura di Google Fiber?
- Quando saranno sostituiti i pali del telefono con l'infrastruttura wireless?
- Qual è il miglior servizio di infrastruttura VoIP, API o soluzione open source da usare per un'app VoIP mobile?