COMMIT LOGS, MEMTABLES, AND SSTABLE
Uma gravação é bem sucedida depois de gravada no commit log e na memtable. Memtable é liberado para SSTable assim que atinge o limite.
Memtable é uma estrutura em memória para CQL table e os indices. Dados em memtable são armazenados pela chave de linha de tabela. Essas estruturas de chave são gravadas sequencialmente quando enviadas a disco como SSTable.
SSTable significa “tabela de strings classificadas”.
A cada flush uma nova SSTable é gerada com os dados ordenados da memtable.
Podemos encontrar a configuração de commit log e diretório de dados no arquivo: cassnadra.yaml
Commitlog_directory: <configuração do commit log>
Data_file_directories: <configuração dos datafiles>
TOMBSTONES
Tombstones (ou lápides) são gerados quando uma linha inteira é excluída ou apenas um valor de coluna é excluído. Cassandra não grava valores null. Caso tente-se realizar uma atualização ou uma exclusão que for gerar um valor null, Cassandra excluirá a célula e gerará uma marca para exclusão.
Qualquer operação de exclusão de linha ou célula será um processo de gravação. Todas as operações de gravação no Cassandra são sequenciais o que faz com que seja optimizado desempenho.
Cassandra não exclui uma informação imediatamente, ele marca na memtable como “deleted”. A razão para isso é para que haja tempo para todos os nós com a replica dos dados entendam essa marca de exclusão. Um nó de replica set fora por exemplo, ele volta a topologia e assim verifica a marca e entende que aquele dado está marcado para exclusão. Quando realizado o flush da memtalbe para SSTable, o “deleted” é gravado.
Os tombstones existem em SSTalbes e são removidos pelo processo de compactação após gc_grace_seconds passar.
O gc_grace_seconds que indica o mínimo de tempo que o dado permanece com a marca de exclusão antes de ser realmente excluido. Por padrão o valor de gc_grace_seconds é de 86400 segundos (10 dias).
Passados os 10 dias, os dados então são elegíveis para exclusão e a compactação realmente aconteça. Compactação é quando as SSTables são combinadas para prover performance para leitura devido ao número de tabelas SSTables e para recuperar o espaço em disco do dado deletado.
A compactação é normal e automática embora possa ser iniciada manualmente usando o comando nodetool compact.
Deixe um comentário