Понимание SSTable неизменности - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь лучше понять неизменность sstables в Кассандре. Очень ясно, что происходит как в операции вставки, так и в операции обновления / удаления, когда данные существуют в записываемой таблице. Но не ясно, что происходит, когда я хочу изменить данные, которые уже были удалены.

Итак, я понимаю простое сенарио: я выполняю операцию вставки, и данные записываются в таблицу памяти. Когда memtable заполнен, он сбрасывается в sstable.

Теперь, как происходит изменение данных? Что происходит, когда я выполняю команду удаления или обновления (когда данные были сброшены)? Если sstable является неизменным, то как данные будут удалены / обновлены? И как memtable работает в командах удаления и обновления (данных, которых нет в нем, потому что они были удалены)? Что будет в памятке?

1 Ответ

0 голосов
/ 24 июня 2018

В Кассандре / Сцилле вы ВСЕГДА добавляете.Это означает, что любая операция, будь то вставка / обновление / удаление, создаст новую запись для этого раздела, содержащую новые данные и новую метку времени.В случае операции удаления новая запись будет фактически надгробной плитой с новой отметкой времени (указывающей, что предыдущие данные были удалены).Это применимо, независимо от того, находятся ли данные в памяти (memtable) или уже записаны на диск -> sstable создан.

Несколько «версий» одного и того же раздела с разными данными и разными временными метками могут находиться в нескольких sstables (и дажев памяти) одновременно.SStables будут объединены по продолжительности сжатия, и есть несколько стратегий сжатия, которые могут быть применены.

Когда срок действия gc_grace_period (по умолчанию: 10 дней, настраиваемый) истечет, при следующем сжатии этот надгробный камень будет удален, что означаетданные, которые были удалены, и надгробная плита, указывающая последнее действие (удаление), не будут объединены с новым sstable.

Внутренняя реализация memtables может немного отличаться в Scylla и Cassandra, но радипростота, давайте предположим, что это то же самое.

Вы можете прочитать больше об архитектуре в следующей документации:

...