【发布时间】:2018-02-14 17:07:13
【问题描述】:
我正在尝试将以下结构存储在 cassandra 中。
ShopID, UserID , FirstName , LastName etc....
上面的查询最多的是
select * from table where ShopID = ? , UserID = ?
这就是为什么将 (ShopID, UserID) 设置为主键很有用的原因。
根据文档,Cassandra 的默认分区键是主键的第一列 - 就我而言,它是 ShopID,但我想在 Cassandra 集群上均匀分布数据,我不能允许来自一个 @ 的所有数据987654325@只存储在一个分区中,因为有些商店有10M的记录,有些只有1k。
我可以将 (ShopID, UserID) 设置为分区键,然后我可以在 Cassandra 集群中实现记录的均匀分布。但是之后我无法接收属于某个shopid的所有用户。
select *
from table
where ShopID = ?
很明显,这个查询需要对整个集群进行全面扫描,但我没有任何可能这样做。它看起来像非常硬的约束。
我的问题是如何重组数据以同时解决这两个问题(统一数据分区、进行全扫描查询的可能性)。
【问题讨论】:
标签: cassandra