【问题标题】:How to understand the concept of wide row and related concepts in Cassandra? [closed]如何理解 Cassandra 中宽行的概念及相关概念? [关闭]
【发布时间】:2020-03-23 15:20:24
【问题描述】:

Cassandra The Definite Guide中的宽行概念及相关概念我觉得很难理解:

Cassandra 使用称为 复合键(或复合键) 的特殊主键 表示宽行,也称为分区复合键由一个分区组成 键,加上一组可选的聚类列。 分区键用于确定 存储行的节点本身可以​​由多个列组成。这 集群列用于控制数据在分区内存储的排序方式。 Cassandra 还支持称为 静态列 的附加结构,它是 用于存储不属于主键但由 a 中的每一行共享的数据 分区。

图 4-5 显示了每个分区如何由分区键唯一标识,以及 聚类键如何用于唯一标识分区中的行。

宽行和分区是同义词吗?

在“分区键用于确定存储的节点并且本身可以由多个列组成”和“每个分区由分区键唯一标识”中,

  • 既然分区键用于宽行,为什么会有多个“行”(这里的“行”是指“宽行”)?

  • 分区键如何“确定存储的节点”?

  • 如何使用分区键来实现“每个分区都由一个分区键唯一标识”?

在“集群列用于控制数据在分区内存储的排序方式”中,

  • 什么是聚类列,例如图中的聚类列是什么?
  • 集群列如何“控制数据在分区内存储的排序方式”?

在“聚类键用于唯一标识分区内的行”中,

  • 分区是宽行的同义词,“分区内的行”是什么意思?
  • “如何使用聚类键来唯一标识分区内的行”?

谢谢。

【问题讨论】:

    标签: cassandra column-family


    【解决方案1】:

    宽行和分区是同义词吗?

    partition 和 row 可以被认为是同义词。宽行是一种情况,其中所选的分区键将导致该键的cells 数量非常多。考虑一个场景,一个国家的所有人和使用的分区键是城市,那么一个城市将有一行,并且所有人都将在该行中为cells。对于地铁城市,这将导致大排。另一个例子是使用 sensorId 作为分区键存储每隔几秒收到的传感器数据,这将导致几年后大量的cells

    既然分区键用于宽行,为什么会有多个“行” (这里的“行”是指“宽行”吗)?

    同上。

    分区键“如何确定行所在的节点” 存储”?

    从分区键哈希(默认为 MurMur3Hash)生成,cassandra 中的每个节点负责值的范围。考虑分区键值的哈希结果为 20,Node1 负责范围 1 到 100,那么该分区将驻留在 Node1 上。

    如何将分区键用于“每个分区都是唯一的 由分区键标识”?

    如上所述,分区键决定数据驻留在哪个节点上。数据表示可以被视为只能具有唯一键的巨大映射。

    什么是聚类列,例如什么是聚类 图中的列?

    考虑像Create TABLE test (a text,b int, c text, PRIMARY KEY(a,b)) 这样创建的表,这里a 是分区键,b 是集群列。附图中clustering key为聚类列,整个包围框为单元格。

    “聚类列”如何控制数据存储的排序方式 在一个分区内”?

    Cassandra 将使用上述示例表中的列b 对数据进行升序排序。也可以改为降序。

    INSERT INTO test(a,b,c) VALUES('test',2,'test2')
    INSERT INTO test(a,b,c) VALUES('test',1,'test1')
    INSERT INTO test(a,b,c) VALUES('test-new',1,'test1')
    

    如果您按此顺序运行上述查询,cassandra 将按以下顺序存储数据(数据表示比下面的要多得多。只需检查 b 列的顺序):

    test -> [b:1,c=test1] [b:2,c=test2]
    test-new -> [b:1,c=test1]
    

    分区是宽行的同义词,“行”是什么意思 在一个分区内”?

    聚类列用于识别分区内的cells(单元比行更好)。例如SELECT * from test where a='test' and b=1 将选择带有b:1 的单元格进行分区键测试。

    “如何使用聚类键来唯一标识其中的行 分区”?

    上面的答案也应该解释这一点。

    【讨论】:

    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多