Cassandra 数据建模和聚类设计

Cassandra Data Modelling and designing the Clustering

我对为 Cassandra 设计数据模型有点困惑,来自 SQL 背景!我已经多次阅读 Datastax 文档以了解有关 Cassandra 的许多事情!这似乎是个问题,我不确定如何克服这个问题以及我应该选择的数据模型类型!

Primary Key along with Clustering 在这里解释得很好! 文档说,主键(分区键,集群键)是数据模型中最重要的东西。

我的用例非常简单:

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?

显然我不能在应用程序中创建一些 ID 生成登录,因为它在许多实例上运行,如果我必须依赖某些逻辑,最终 Cassandra 的目的就在这里折腾。

对于这个特定示例,您实际上不需要二级索引,默认情况下不会创建二级索引。您的集群键本身将允许您执行看起来像

的查询
SELECT * from TABLE where ITEM_ID = SOMETHING; 

这将自动返回按您的集群键 CREATED_ON 排序的结果。

这是因为您的密钥基本上会在内部创建看起来像

的分区
ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...