我在http://www.datastax.com/documentation/cassandra/1.2/cassandra/cql_reference/create_table_r.html阅读 Datastax 网站上的文档 ,我看到:“当您使用复合分区键时,Cassandra 会处理列在嵌套括号中作为分区键并将一行的列存储在多个节点上。"
给出的例子是: CREATE TABLE Cats ( block_id uuid,breed text, color text, short_hair boolean, PRIMARY KEY ((block_id,breed), color, short_hair) );
我了解集群列(在本例中为 color 和 short_hair)如何作为给定行的连续“列”实际存储在磁盘上。我不明白的是“......在多个节点上存储一行的列”这一行。这是正确的吗?
对于给定的block_id和breed,这个复合键不只是创建一个类似于“block_id+breed”的分区键,在这种情况下,列/簇将在同一行中,其物理位置由分区键确定( block_id + 品种)?
还是因为主键基于两个字段而在这一行中进行了某种拆分?
编辑:我认为理查德在下面的回答可能是正确的,但我也在 1.2 的 Datastax 文档中遇到了这个问题,它强制执行我发布的第一个报价:
“复合分区键 - 使用在表的 PRIMARY KEY 定义的嵌套括号中声明的分区键将一行的列存储在多个节点上。”
为什么会说使用复数分区键* s *...组成复合键的字段构成唯一的行键,据我所知,它们都用于制作键。
然后他们说,一行的列可以拆分,这对我来说意味着单行(具有给定的分区键)可以将其列拆分到不同的节点上,这意味着复合键的字段正在单独处理.
仍然对 Datastax 文档以及它是否正确感到有些困惑。