Casa > O > O Que É Um Sstable Na Infra-Estrutura Interna Do Google?

O que é um SSTable na infra-estrutura interna do Google?

O meu entendimento é que este é um formato de arquivo em disco representando um mapa de string para string. Os pares (chave, valor) são ordenados por chave, e escritos sequencialmente. No final do arquivo é escrito um índice que armazena cada chave e o offset do seu valor. Desta forma, apenas o índice (o tamanho de todas as chaves) precisa de caber na memória para permitir uma procura eficiente de qualquer string na tabela, mesmo quando os valores podem ser muito maiores do que a memória disponível. Para carregar uma SSTable para acesso aleatório, um processo irá buscar o índice, lê-lo (que pode ser uma cópia direta na memória ou mmap), e buscar valores apenas quando necessário.

SSTables são imutáveis, o que significa que uma vez escritos, os itens não podem ser adicionados ou removidos do mapa.

Até onde posso dizer o índice está no final para que uma SSTable possa ser construída em uma única passagem sobre a entrada, escrevendo os valores e construindo o índice na memória (com seus offsets), e então escrevendo o índice no final.

Uma aplicação de exemplo de SSTables é a Bigtable. Uma SSTable é usada para armazenar o conteúdo de parte de uma tabela (tablet). As teclas são (linha, coluna, tempo). Para simular a mutabilidade, novas SSTables são escritas que incluem as adições e remoções de valores na SSTable original. Ocasionalmente, uma "compactação" de coleta de lixo ocorrerá na qual todas essas tabelas serão fundidas em uma única. Esta estratégia evita escritas aleatórias e torna eficiente mover um tablet de um servidor para outro.

De Etz Decou

Qual conexão usa mais bateria no smartphone? WiFi ou 4G? :: Quais são alguns aplicativos andróides pagos que todos deveriam comprar?