У меня есть таблица cassandra, содержащая информацию о судовых идентификационных данных. В нем есть столбец: imo_number , mmsi_number , ship_name , timestamp .
У меня есть 2 требования к этой таблице:
- Я хочу, чтобы эта таблица сохраняла только строки с последними обновленными записями, согласно столбцу imo_number , mmsi_number и ship_name . Поэтому, если любая новая запись со значением этого столбца будет точно такой же, она будет обновлена. Как я знаю, мне нужно определить эти столбцы как первичные ключи в Кассандре.
create table keyspace.table (
mmsi_number text,
imo_number text,
ship_name text,
timestamp timestamp,
primary key ((mmsi_number), imo_number, ship_name)
);
Я хочу иметь возможность загружать данные из таблицы с помощью mmsi в качестве условия where и сортировать их по отметке времени, чтобы найти последнюю запись или найти записи в диапазоне дат. Как я знаю, схема CQL будет выглядеть следующим образом:
create table keyspace.table (
mmsi_number text,
imo_number text,
ship_name text,
timestamp timestamp,
primary key ((mmsi_number), timestamp, imo_number, ship_name)
) with clustering order by (timestamp desc);
Проблема в том, что при использовании второй схемы мое первое требование не будет выполнено. Потому что каждая новая запись будет иметь разную временную метку, поэтому она будет вставлена вместо обновленной.
Как я выполнил свои требования, указанные выше? Или может я что то не так сделал? Помощь оценена.