Использовать метку времени изменения как КЛАСТЕРНЫЙ КЛЮЧ в заказе DESC, например,
CREATE TABLE customer_data_versions (
id text,
change_time timestamp,
name text,
PRIMARY KEY (id, change_time)
) WITH CLUSTERING ORDER BY ( change_time DESC );
Это позволит вам хранить версии данных по идентификатору клиента в порядке убывания.
Вставьте две версии для одного и того же идентификатора:
INSERT INTO customer_data_versions (id, change_time, name) VALUES ('id1', totimestamp(now()),'John');
INSERT INTO customer_data_versions (id, change_time, name) VALUES ('id1', totimestamp(now()),'John Doe');
Получить последнюю сохраненную версию:
SELECT * FROM customer_data_versions WHERE id='id1' LIMIT 1;
Получить все версии для идентификатора:
SELECT * FROM customer_data_versions WHERE id='id1';
Получить версии между датами:
SELECT * FROM customer_data_versions WHERE id='id1' AND change_time <= before_date AND change_time >= after_date;
Обратите внимание, что существуют некоторые ограничения для размера раздела (сколько версий вы сможете сохранить для каждого идентификатора клиента):
Ячейки в разделе: ~ 2 миллиарда (231); размер одного столбца: 2 ГБ (рекомендуется 1 МБ)