Cassandra分区技术
Cassandra partition technique
根据我的理解,Apache Cassandra 将 table 中的每一行划分为位于不同节点中的单独分区。在那种情况下,如果我们考虑 table 有数百万条记录或行,Cassandra 会将记录划分为数百万个节点。
我的疑问是“如果 table 有数百万条记录并不断增长,如果没有足够的节点来存储每条记录怎么办?”
你的理解有误。您的问题中使用的三个主要关键字是 partition
、rows
和 node
。现在考虑它们是如何定义的
Node
表示虚拟 machine/baremetal/cloud.
上的 Cassandra 进程 运行
Partition
代表一个逻辑实体,它帮助 Cassandra 集群知道请求的数据驻留在哪个节点上。主键应该是唯一的。
Row
表示分区中包含的记录。一个分区可以包含数百万行。
根据您的分区键,您的 Cassandra 集群将识别数据将驻留在哪个节点上。如果您有三个节点,那么 Cassandra 将对您的分区键进行哈希处理,并根据该值确定要写入数据的节点。因此,随着您的扩展,哈希值将被重新分配(与它们一起分配分区)。
因此,即使您有数百万条记录,如果您的集群只有一个节点,它们也可以驻留在单个节点中;如果您有多个节点,您的数据将几乎平均分布在节点之间。
根据我的理解,Apache Cassandra 将 table 中的每一行划分为位于不同节点中的单独分区。在那种情况下,如果我们考虑 table 有数百万条记录或行,Cassandra 会将记录划分为数百万个节点。
我的疑问是“如果 table 有数百万条记录并不断增长,如果没有足够的节点来存储每条记录怎么办?”
你的理解有误。您的问题中使用的三个主要关键字是 partition
、rows
和 node
。现在考虑它们是如何定义的
Node
表示虚拟 machine/baremetal/cloud.
Partition
代表一个逻辑实体,它帮助 Cassandra 集群知道请求的数据驻留在哪个节点上。主键应该是唯一的。
Row
表示分区中包含的记录。一个分区可以包含数百万行。
根据您的分区键,您的 Cassandra 集群将识别数据将驻留在哪个节点上。如果您有三个节点,那么 Cassandra 将对您的分区键进行哈希处理,并根据该值确定要写入数据的节点。因此,随着您的扩展,哈希值将被重新分配(与它们一起分配分区)。
因此,即使您有数百万条记录,如果您的集群只有一个节点,它们也可以驻留在单个节点中;如果您有多个节点,您的数据将几乎平均分布在节点之间。