如何理解cassandra中宽行的概念和相关概念?

qxgroojn  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(501)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

去年关门了。
改进这个问题
我觉得很难理解宽行的概念和Cassandra明确指南中的相关概念:
cassandra使用一个称为复合键(或复合键)的特殊主键来表示宽行,也称为分区。复合键由一个分区键和一组可选的集群列组成。分区键用于确定存储行的节点,它本身可以由多列组成。集群列用于控制如何对数据进行排序,以便在分区内进行存储。cassandra还支持一个称为static column的额外构造,用于存储不是主键的一部分但由分区中的每一行共享的数据。
图4-5显示了如何通过分区键唯一地标识每个分区,以及如何使用集群键唯一地标识分区中的行。

宽行和分区是同义词吗?
在“分区键用于确定存储行的节点,它本身可以由多列组成”和“每个分区由一个分区键唯一标识”中,
既然分区键是针对宽行的,为什么会有多个“行”(这里的“行”是指“宽行”)呢?
分区键如何“确定存储行的节点”?
如何将分区键用于“每个分区都由分区键唯一标识”?
在“集群列用于控制如何对数据进行排序以存储在分区中”中,
什么是聚类列,例如,图中的聚类列是什么?
集群列如何“控制数据在分区内存储的排序方式”?
在“集群密钥用于唯一标识分区中的行”中,
分区是宽行的同义词,“分区内的行”是什么意思?
如何“使用集群键来唯一地标识分区中的行”?
谢谢。

fslejnso

fslejnso1#

宽行和分区是同义词吗?
分区和行可以看作同义词。宽行是这样一种情况:所选的分区键将导致大量的 cells 为了那把钥匙。考虑这样一个场景:一个国家有所有的人,分区键是city,那么一个城市就有一行,所有的人都是city cells 在那排。对于大都会来说,这将导致大范围的争吵。另一个例子是用sensorid作为分区密钥存储每隔几秒钟接收的传感器数据,这将导致大量的数据丢失 cells 几年之后。
既然分区键是针对宽行的,为什么会有多个“行”(这里的“行”是指“宽行”)呢?
同上。
分区键如何“确定存储行的节点”?
从partiton生成密钥散列(默认值为3散列),cassandra中的每个节点负责值的范围。考虑到分区键值的散列结果是20,并且node1负责范围1到100,那么该分区将驻留在node1上。
如何将分区键用于“每个分区都由分区键唯一标识”?
如上所述,分区键决定数据驻留在哪个节点上。。数据表示可以看作是一个只有唯一密钥的巨大Map。
什么是聚类列,例如,图中的聚类列是什么?
考虑这样创建的表 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 用于分区键测试。
如何“使用集群键来唯一地标识分区中的行”?
上面的答案应该也能解释这一点。

相关问题