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