Cassandra Ordering Query (или запись автообновления) без первичного ключа - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть таблица cassandra, содержащая информацию о судовых идентификационных данных. В нем есть столбец: imo_number , mmsi_number , ship_name , timestamp .

У меня есть 2 требования к этой таблице:

  1. Я хочу, чтобы эта таблица сохраняла только строки с последними обновленными записями, согласно столбцу 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);

Проблема в том, что при использовании второй схемы мое первое требование не будет выполнено. Потому что каждая новая запись будет иметь разную временную метку, поэтому она будет вставлена ​​вместо обновленной.

Как я выполнил свои требования, указанные выше? Или может я что то не так сделал? Помощь оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...