Что делает Кассандра во время уплотнения? - PullRequest
8 голосов
/ 03 октября 2011

Я знаю, что Кассандра объединяет sstables, ключи строк, удаляет надгробную плиту и все.

  1. Но мне действительно интересно знать, как он выполняет уплотнение?

  2. Поскольку sstables являются неизменными, копирует ли он все соответствующие данные в новый файл? и во время записи в этот новый файл он отбрасывает данные, помеченные надгробной плитой.

я знаю, что делает уплотнение, но хочу знать, как это происходит (T)

Ответы [ 2 ]

7 голосов
/ 04 октября 2011

Надеюсь эта ветка поможет, при условии, что вы будете следить за всеми постами и комментариями в ней

http://comments.gmane.org/gmane.comp.db.cassandra.user/10577

AFAIK

Whenever memtable is flushed from memory to disk they are just appended[Not updated] to new SSTable created, sorted via rowkey.
SSTable merge[updation] will take place only during compaction. 
Till then read path will read from all the SSTable having that key you look up and the result from them is merged to reply back,

Two types : Minor and Major

Minor compaction is triggered automatically whenever a new sstable is being created.
May remove all tombstones
Compacts sstables of equal size in to one [initially memtable flush size] when minor compaction threshold is reached [4 by default]. 

Major Compaction is manually triggered using nodetool
Can be applied over a column family over a time
Compacts all the sstables of a CF in to 1

Compacts the SSTables and marks delete over unneeded SSTables. GC takes care of freeing up that space

С уважением, тамильский

3 голосов
/ 26 сентября 2013

Есть два способа запустить уплотнение:

A- Незначительное уплотнение.Запустить автоматически.Б- Основное уплотнение.Запустите mannualy.

В обоих случаях берет x файлов (за CF) и обрабатывает их.В этом процессе пометьте строки с истекшим ttl как надгробия и удалите существующие надгробия.При этом генерируется новый файл.Надгробия, сгенерированные в этом уплотнении, будут удалены при следующем уплотнении (если потратить льготный период, gc_grace).

Разница между A и B заключается в количестве принятых файлов и конечном файле.A берет несколько похожих файлов (одинакового размера) и генерирует новый файл.B берет ВСЕ файлы и генерирует только один большой файл.

...