【问题标题】:Does Cassandra Store Columns from Composite Keys on Different NodesCassandra 是否在不同节点上存储来自复合键的列
【发布时间】: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


    【解决方案1】:

    我认为这意味着具有相同 block_id 的行存储在不同的节点上。正如您所说,分区键就像“block_id +品种”,因此具有相同block_id但不同品种的列通常会存储在不同的节点上。但是block_id和breed相同的列会存储在同一个节点上。

    基本上,存储分区的节点只能通过分区键的函数找到。无论是否是复合的,没有其他东西可以连接在一起或拆分行。

    【讨论】:

    • 这是我怀疑的,只是想确定一下。您说,“具有相同 block_id 的行存储在不同的节点上”,但这实际上只取决于(复合)分区键,所以它可能会发生,但不一定。如果我错了,请纠正我。谢谢你的回答。
    猜你喜欢
    • 2013-07-30
    • 2014-09-19
    • 1970-01-01
    • 2016-07-11
    • 2013-08-25
    • 2017-04-13
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多