我很困惑为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?
显然我无法在Application中创建一些ID生成登录,因为它在许多实例上运行,如果我必须继续使用某些逻辑,最终Cassandra的目的就是在这里进行折腾。
答案 0 :(得分:3)
您实际上不需要此特定示例的辅助索引,并且默认情况下不会创建辅助索引。您的群集密钥本身将允许您执行看起来像
的查询SELECT * from TABLE where ITEM_ID = SOMETHING;
它会自动为您提供按群集密钥CREATED_ON
排序的结果。
原因是你的密钥基本上会在内部创建看起来像
的分区ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...