Наличие нескольких версий данных в вашей таблице, если вы используете составной первичный ключ вместо первичного ключа, состоящего из одного поля.
Таким образом, определение таблицы может выглядеть следующим образом (если вы «знаете» номер версии до вставки данных):
create table test(
id text,
version int,
payload text,
primary key (id, version)
) with clustering order by (version desc);
и вставка данных в виде:
insert into test (id, version, payload) values ('14BCE1209', 1, '....');
insert into test (id, version, payload) values ('14BCE1209', 2, '....');
, чтобы выбрать последнее значение для данного ключа, вы можете использовать LIMIT 1
:
SELECT * from test where id = '14BCE1209' LIMIT 1;
и для выбора последних версий для всех разделов (не рекомендуется, например, нужен особый подход для эффективной обработки):
SELECT * from test PER PARTITION LIMIT 1;
Но это будет работать только в тех случаях, когда вы заранее знаете версию. Если вы не знаете, тогда вы можете использовать timeuuid
тип для версии вместо int
:
create table test(
id text,
version timeuuid,
payload text,
primary key (id, version)
) with clustering order by (version desc);
и вставка данных как (вместо now()
вы можете использовать текущую временную метку, сгенерированную из вашего кода):
insert into test (id, version, payload) values ('14BCE1209', now(), '....');
insert into test (id, version, payload) values ('14BCE1209', now(), '....');
и select будут работать так же, как указано выше ...