聚类键的粒度级别(高唯一值)

Posted

技术标签:

【中文标题】聚类键的粒度级别(高唯一值)【英文标题】:Granularity level in clustering key( high unique values) 【发布时间】:2015-06-22 15:41:49 【问题描述】:

我对 cassandra 数据建模并不陌生。我试图了解我是否可以在聚类键中具有高唯一值。例如:我们有 4 列。 Storeid、shipping_status、orderid 和 guestname。我们每天有大约 3000 家商店,4 种状态类型和高订单。我们需要查询 storeid 、 status ,有时还有 orderids 。所以我试图将 storeid 和 status 作为分区键,将 orderid 作为集群键。所以我的问题是我可以在集群键中保留这样一个最低粒度级别的列。 orderid 每天都会有巨大的唯一 ID。如果我在集群键中添加 guestname 也会有任何问题。 tnx 为您提供建议。

【问题讨论】:

【参考方案1】:

使用storeidshipping_status 作为分区键的一部分,然后使用orderid 作为集群键使得情况与时间序列数据非常相似。

Cassandra 非常适合使用该数据模型(在 CQL 之前的术语中称为“宽行”)存储内容,并且限制设置为每个分区的 2x10E9(20 亿)个集群键值。

所以你不应该选择“开放式”分区,而是使用分块:你可以有一个分区键 storeid + status + year 是每年的订单量远小于 2x10E9,或者 storeid + status + year + month 如果你'是亚马逊。

要回答您的第二个问题,不,所有列都是主键的一部分的表没有问题。

【讨论】:

以上是关于聚类键的粒度级别(高唯一值)的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库之粒度

通用字典类键值

是否可以从分区中的每个聚类键Y中选择X记录?

权限组件之粒度到按钮级别

数据库事务,事务并发问题,锁的隔离级别,锁的粒度

如何对链接到具有不同粒度级别的多个事实的维度表进行建模?