В Cassandra / Scylla вы ВСЕГДА добавляете. Значение любой операции, будь то вставка / обновление / удаление, создаст новую запись для этого раздела, содержащую новые данные и новую метку времени. В случае операции удаления новая запись будет фактически надгробиной с новой отметкой времени (указывающей, что предыдущие данные были удалены). Это относится к тому, сохраняются ли данные в памяти (memtable) или уже сброшены на диск -> sstable.
Несколько «версий» того же раздела с разными данными и разными метками времени могут одновременно находиться в нескольких схожих (и даже в памяти). SStables будет объединено с уплотнением продолжительности и существует несколько стратегий уплотнения, которые могут быть применены.
Когда gc_grace_period
срок действия (по умолчанию: 10 дней, перестраиваемый) истек, при следующем уплотнении удаляется надгробная плита, что означает, что данные, которые были удалены, и надгробный камень с указанием последнего действия (удалить), не будут объединены в новый sstable.
Внутренняя реализация memtables может немного отличаться между Scylla и Cassandra, но для простоты предположим, что это одно и то же.
Вас приветствует, чтобы узнать больше об архитектуре в следующей документации:
-
SStables
-
Стратегии уплотнения