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] ...