Что делает кассандра при уплотнении?

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

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

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

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


person samarth    schedule 03.10.2011    source источник


Ответы (2)


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

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

Насколько мне известно

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

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

person Tamil    schedule 04.10.2011
comment
есть ли способ ПОЛУЧИТЬ данные sstables после уплотнения? Я имею в виду, есть ли какой-либо Java API для получения сжатых данных непосредственно перед их записью в таблицы cassandra? - person abi_pat; 15.07.2015

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

A- Незначительное уплотнение. Запускать автоматически. B- Сильное уплотнение. Запускаем маннуалы.

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

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

person Christian Agrazar    schedule 25.09.2013