Cassandra 中的数据分布

dbmsdatabaseprogramming

数据分布是通过一致性哈希来实现的,以使数据均匀分布在集群中的节点上。表的行不是放在单个节点上,而是分布在集群中,从而使表数据的负载均匀分布。分区键用于在节点之间分配数据并确定数据位置。

在 Cassandra 中,数据分布和复制协同工作。主要取决于三个因素,即分区键、键值和令牌范围。

Cassandra 表

此表由两行组成,其中一行有四列,后跟它们的值,而第二行包含两列,列中显示它们的值。第 1 列具有主键。

示例

在此示例中,我们将展示数据如何在集群中分布。

id     name      dob                     salary
1       x        5−12−2000                60000            
2       y        6−12−1999                70000         
3       z        7−12−1998                80000               
4       a        8−1−1998                 90000     

下面给出的环架构有四个节点,它们具有令牌范围和特定的令牌 ID。分区器将生成令牌值并将它们分配给集群。

分区器

它有助于在 Cassandra 集群中的节点之间进行数据分配。对行数据的分区键使用哈希来获取令牌值。Cassandra 中的默认分区器是 Murmur3。

令牌

它们是用于在环中存储行的哈希值。令牌是一个 64 位整数。令牌的范围是 -2^63 到 2^63。

例如:让我们对上表取一些随机哈希值。

PARTITION KEY	MURMUR 3 HASH VALUE
 x	              −700
 y	              −300
 z	               400
 a	               700

复制因子

它显示了整个集群中数据副本的总数。复制因子=1 表示我们只有一个数据副本,因此如果它发生故障,则无法恢复。

复制因子=2 表示存在两个副本,依此类推。

结论

本文包括 Cassandra 中的数据分发。数据以集群的形式通过散列进行分发。主要组件是分区键、键值和令牌。分区键在集群中的节点之间执行分发。令牌用于以环形式存储行。复制因子决定了整个集群中数据的副本数。


相关文章