【发布时间】:2013-07-12 19:17:57
【问题描述】:
我正在阅读 Datastax 网站上的文档http://www.datastax.com/documentation/cassandra/1.2/cassandra/cql_reference/create_table_r.html 我看到了: “当您使用复合分区键时,Cassandra 将嵌套括号中的列视为分区键,并将一行的列存储在多个节点上。”
给出的例子是: 创建表猫( block_id uuid, 培育文字, 彩色文字, short_hair 布尔值, 主键((block_id,品种),颜色,短发) );
我了解集群列(在本例中为 color 和 short_hair)在实际存储在磁盘上作为给定行的连续“列”的方式方面是如何工作的。我不明白的是“......在多个节点上存储一行的列”这一行。是这样吗?
对于给定的block_id和breed,这个复合键不只是创建一个类似于“block_id+breed”的分区键,在这种情况下,列/簇将在同一行,其物理位置由分区键(block_id + 品种)?
还是因为主键基于两个字段而导致这一行发生某种拆分?
编辑: 我认为理查德在下面的回答可能是正确的,但我在 1.2 的 Datastax 文档中也遇到了这一点,该文档强制执行我发布的第一个报价:
“复合分区键 - 使用在表的 PRIMARY KEY 定义的嵌套括号中声明的分区键将一行的列存储在多个节点上。”
为什么会说使用复数分区键*s*...组成复合键的字段构成唯一的行键,据我所知,它们都被使用制作钥匙。
然后他们说,a 行的列可以拆分,这对我来说意味着单行(具有给定的分区键)可以将其列拆分到不同的节点上,这意味着复合键的字段是分开处理的。
对 Datastax 文档以及它是否真的正确仍然有些困惑。
【问题讨论】:
标签: cassandra key storage composite