首页 文章

Cassandra是否在不同节点上存储来自复合键的列

提问于
浏览
0

我正在阅读Datastax网站上的文档http://www.datastax.com/documentation/cassandra/1.2/cassandra/cql_reference/create_table_r.html,我看到:"When you use a composite partition key, Cassandra treats the columns in nested parentheses as partition keys and stores columns of a row on more than one node. "

给出的示例是:CREATE TABLE Cats(block_id uuid,品种文本,颜色文本,short_hair布尔值,PRIMARY KEY((block_id,品种),颜色,short_hair));

我理解群集列(在本例中为color和short_hair)如何在它们如何实际存储在磁盘上作为给定行的连续“列” . 我不明白的是“......在多个节点上存储一行的列” . 这是正确的吗?

对于给定的block_id和品种,这个复合键是不是只创建一个类似于“block_id breed”的分区键,在这种情况下,列/簇将在同一行中,其物理位置由分区键确定(block_id品种)?

或者在这一行中是否存在某种分裂,因为主键基于两个字段?

编辑:我认为理查德的答案可能是正确的,但我也在1.2的Datastax文档中遇到了这个,它强制执行我发布的第一个引用:

“复合分区键 - 使用在表的PRIMARY KEY定义的嵌套括号中声明的分区键,在多个节点上存储一行的列 . ”

为什么会说使用复数分区键* s * ...据我所知,构成复合键的字段构成唯一的行键,它们都用于制作键 .

然后他们说, a 行的列可以拆分,这对我来说意味着单行(带有给定的分区键)可以将其列拆分在不同的节点上,这意味着复合键的字段将被单独处理 .

对Datastax文档仍然有点困惑,是否真的正确 .

1 回答

  • 1

    我认为这意味着具有相同block_id的行存储在不同的节点上 . 正如您所说,分区键类似于“block_id品种”,因此具有相同block_id但不同品种的列通常将存储在不同的节点上 . 但具有相同block_id和品种的列将存储在同一节点上 .

    基本上,存储分区的节点仅由分区键的功能找到 . 无论是否为复合,其他任何东西都不能连接在一起或拆分行 .

相关问题