Cassandra Data моделирование, избегая надгробий - PullRequest
0 голосов
/ 30 ноября 2018

Я начинаю с первоначальной идеи переписать приложение мамонта spark-kafka-hbase с помощью spark-kafka-cassandra (на kubernetes).

У меня есть следующие модели данных, одна из которых поддерживает вставки на все времена, а другаяподдерживается upserts

Подход 1:

создать таблицу test.inv_positions (
location_id int,
item bigint,
time_id timestamp,
sales_floor_qty int,
backroom_qty int,
in_backroom логический,
транзит_qty int,
первичный ключ ((location_id), item, time_id)) с порядком кластеризации по (item asc, time_id DESC);

Эта таблица продолжает вставляться, поскольку timeid является частью кластеризации col.Я подумываю прочитать последние (timeid is desc) путем выборки 1 и каким-то образом удалить старую запись, установив TTL на ключевые столбцы или удалив их в одночасье.

Проблемы: TTL или удаление старых записей создает надгробия.

Подход 2:

создать таблицу test.inv_positions (
location_id int,
item bigint, time_id timestamp,
sales_floor_qty int,
backroom_qty int,
in_backroom логический,
транзит_qty int,
первичный ключ ((location_id), item)) с порядком кластеризации по (item asc);

Эта таблица, если приходит новая записьдля того же местоположения и предмета, это поддерживает его.Его легко читать, и не нужно беспокоиться об удалении старых записей.

Проблемы: у меня есть другое приложение на Cassandra, которое обновляет разные col в разное время, и у нас все еще есть проблемы с чтением.Тем не менее, upserts также создает надгробия, но насколько хуже по сравнению с подходом 1?или любой другой лучший способ моделирования это правильно?

1 Ответ

0 голосов
/ 05 декабря 2018

Первый подход кажется хорошим.TTL и delete, оба создают надгробия.Вы можете ссылаться на стратегию сжатия для удалений на основе TTL.TWCS лучше подходит для удалений на основе TTL, иначе вы можете использовать STCS для простых удалений.Кроме того, настройте gc_grace_seconds соответствующим образом, чтобы плавно очищать надгробные камни, потому что тяжелые надгробные камни приводят к задержке чтения.

...