我对cassandra数据建模并不熟悉。我试图了解我是否可以在群集密钥中具有高唯一值。例如:我们有4列。 Storeid,shipping_status,orderid和guestname。我们每天有大约3000家商店,4种状态类型和高级订单。我们需要查询storeid,status和有时orderid。所以我试图将storeid和status作为分区键,orderid作为集群键。所以我的问题是我可以在群集密钥中保留这么低的粒度级别列。 orderid每天都会拥有巨大的独特ID。如果我在群集密钥中添加guestname也会有任何问题。 tnx为您的建议。
答案 0 :(得分:0)
使用storeid
和shipping_status
作为分区键的一部分,然后使用orderid
作为群集键,使情况与时间序列数据非常相似。
Cassandra非常适合存储具有该数据模型的东西(在前CQL术语中称为“宽行”),并且限制是针对每个分区的2x10E9(2亿个)聚类键值设置的。
所以你不应该选择“开放式”分区,而是使用分块:你可以有一个分区密钥,storeid + status + year
是每年的订单量远小于2x10E9,或{{1如果你是亚马逊。
要回答你的第二个问题,不,没有问题让所有列都成为主键的一部分。