gpt4 book ai didi

database - Cassandra 遵循哪种分区技术?

转载 作者:行者123 更新时间:2023-12-02 16:39:43 26 4
gpt4 key购买 nike

我是 Cassandra 的新手,在阅读有关数据库分区(垂直和水平)的内容时,我感到困惑,想知道 Cassandra 是否遵循水平分区(分片)或垂直分区技术?

另外,根据我的理解,Cassandra是面向列的DB,应该遵循Vertical partitioning技术。如果不是这种情况,那么有人可以详细解释一下吗?

最佳答案

as Cassandra is column oriented DB

这一点已经在 Stack Overflow specifically in this answer 上进行了令人厌恶的讨论。 Cassandra 不是 面向列的数据库。它是一个分区行存储。数据以“行”的形式组织和呈现,类似于关系数据库。

whether Cassandra follows Horizontal partitioning (sharding)

从技术上讲,Cassandra 就是您所说的“分片”数据库,但几乎从未以这种方式提及它。本质上,每个节点负责特定范围的分区。这些分区( token )是一个数值,Murmur3Partitioner 范围从 -2^63 到 +2^63-1。

事实上,在简化节点以保存单个 token 范围的场景中,您可以根据集群(数据中心)中的节点数量计算范围,如下所示:

python -c 'print [str(((2**64 / 6) * i) - 2**63) for i in range(6)]'

['-9223372036854775808', '-6148914691236517206', '-3074457345618258604',
'-2', '3074457345618258600', '6148914691236517202']

当然,对于 vNodes ,一个节点几乎总是负责多个 token 范围。

在操作时,分区键被散列成一个 token 。此 token 告诉 Cassandra 数据驻留在哪个节点上。考虑这张表:

SELECT token(studentid),studentid,fname,lname FROM student ;

system.token(studentid) | studentid | fname | lname
-------------------------+-----------+-------+----------
-5626264886876159064 | janderson | Jordy | Anderson
-1472930629430174260 | aploetz | Avery | Ploetz
8993000853088610283 | mgin | Micah | Gin

(3 rows)

由于此表具有 studentid 的简单主键定义,因此用作分区键。上面的 token(studentid) 函数的结果表明哪些分区包含数据。

如果有另一个表也使用 studentid 作为其分区键,则该表的数据将存储在与 student 表相同的节点上。

无论如何,这是所发生情况的简化版本。请随意阅读 vNodes(上面的链接)以及 Robbie Strickland 的 Cassandra: High Availability。他撰写了 (IMO) Cassandra 散列和分区分布过程的最佳描述。

关于database - Cassandra 遵循哪种分区技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61941402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com