我对Cassandra建议的群集方法的理解是通过散列文档的唯一ID来确保群集中的每个节点都接收相等的数据分布。我的问题是,是否有办法改变这种情况并定义一个自定义密钥,以便“智能地”将文档路由到集群中的特定节点?
在我的场景中,我有与特定实体相关的数据(想想客户端 - 项目 - 任务 - 项目)我的所有数据;我将有足够的物品需要一些水平缩放;但是,每次搜索都将始终与给定的客户端项目任务相关,对于该任务,数据集的大小适中。
有没有办法在Cassandra中创建这种类型的分区/路由(我在同一件事中看到的不同名称)逻辑?
感谢;布伦特
答案 0 :(得分:0)
我认为 - http://www.datastax.com/documentation/cql/3.0/share/glossary/gloss_partition_key.html - 是我正在寻找的答案
在PRIMARY KEY定义中声明的第一列,或者在复合键的情况下,多列可以声明构成主键的那些列。
答案 1 :(得分:0)
Cassandra中的聚类方法不仅仅是为了平等分配数据。它还确保所有读/写操作都在集群中分布,以使这些操作更快。除此之外,很可能您将具有大于1的复制因子以确保数据冗余,以便节点故障不会导致数据丢失。
回到你的问题和你自己的答案。如果对数据使用相同的分区键,这可以保证Cassandra分区将数据的主副本存储在同一节点上,甚至更多,它会将它们存储在同一个分区中(旧的“宽行”)命名方式)。