Как Cassandra взаимодействует с обновлениями и ключами кластера?
- Cassandra никогда не обновляет записи после того, как они были записаны, она помечает старую версию как удаленную с помощью надгробной плиты и записывает как старую, так и новую версию до тех пор, пока старая версия в конечном итоге не будет удалена служебным процессом: форма мусора коллекция.
- Ключи кластера реализуются с использованием некоторой магии, которая записывает данные в «настоящую» запись, имеющую только ключ раздела.
Мне кажется, что эти две функции могут плохо взаимодействовать, вызывая чрезмерное количество мусора.
Рассмотрим эту схему:
CREATE TABLE t (
p int,
c int,
d string,
PRIMARY KEY ((p), c),
);
После выполнения следующих прошивок:
INSERT INTO t (p, c, d) VALUE (1, 1, "text-1");
INSERT INTO t (p, c, d) VALUE (1, 2, "text-2");
есть ли запись с пометкой-надгробием, содержащая данные (1, 1, "text-1")
, и новая запись, содержащая как данные (1, 1, "text-1")
, так и (1, 2, "text-2")
? То есть была ли вторая вставка реализована как обновление «реальной» записи, имеющей ключ раздела (p
), равный 1?