Cassandra Data Моделирование и проектирование кластеризации

Я немного запутался в разработке модели данных для Cassandra, исходя из фона SQL! Я прошел Datastax документация несколько раз, чтобы понять многое о Кассандре! Кажется, это проблема, и я не уверен, как я могу преодолеть это и тип модели данных, которую я должен выбрать!

Первичный ключ вместе с кластеризацией - это то, что действительно хорошо объяснено здесь! В документации сказано, что первичный ключ (ключ раздела, ключи кластеризации) является наиболее важной вещью в модели данных.

Мой вариант использования довольно прост:

ITEM_ID    CREATED_ON     MOVED_FROM     MOVED_TO   COMMENT

ITEM_ID будет уникальным (partition_key) и у каждого предмета может быть 10-20 записей о движении! I wanted to get the movement records of an item sorted by time it's created on. Поэтому я решил пойти с CREATED_ON в качестве ключа кластеризации.

Согласно документации, clustering_key находится под вторичным индексом, который должен иметь как можно большее повторяемое значение, в отличие от ключа раздела. Моя модель данных здесь не работает! How do I preserve order using clustering to achieve the same?

Очевидно, что я не могу создать какой-либо логин для генерации идентификатора в Приложении, так как он запускается во многих случаях, и если мне нужно передать какую-то логику, в конечном итоге цель Кассандры идет здесь.

1 ответ

Решение

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

SELECT * from TABLE where ITEM_ID = SOMETHING; 

Который автоматически вернет вам результаты, отсортированные по ключу кластеризации CREATED_ON,

Причиной этого является то, что ваш ключ будет создавать внутренние разделы, которые выглядят как

ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...
Другие вопросы по тегам