【问题标题】:Cassandra Data Modelling and designing the ClusteringCassandra 数据建模和集群设计
【发布时间】:2015-03-17 17:10:26
【问题描述】:

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

Primary Key along with Clustering 在这里得到了很好的解释! 文档说,Primary Key(Partition key,Clustering keys)是数据模型中最重要的东西。

我的用例非常简单:

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 的目的就在这里折腾。

【问题讨论】:

    标签: cassandra primary-key data-modeling clustering-key


    【解决方案1】:

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

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

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

    这样做的原因是您的密钥基本上会在内部创建看起来像这样的分区

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

    【讨论】:

    • 聚类列不使用二级索引吗?还是我错过了什么? primary key(itemid,created_on)
    • 它不使用二级索引。二级索引是一个完全不同的概念。
    • 这篇文章和stackoverflow.com/questions/18168379/… 是矛盾的?? :-/ 有点困惑
    • 不,我建议您再次阅读答案。特别是“在主键中,我们有这些组件:PRIMARY KEY(partitioning key, clustering key_1 ... clustering key_n)”主键由一个分区键和 0 个或多个集群键组成。这些定义了 Cassandra 表中数据的磁盘布局,并且与二级索引的概念完全分离。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多