Cassandra分区技术



根据我的理解,Apache Cassandra将表中的每一行划分为位于不同节点中的单独分区。在这种情况下,如果我们考虑一个表有数百万条记录或行,Cassandra将把记录划分为数百万个节点。

我的怀疑是"如果一个表中有数百万条记录并且在不断增长,那么如果没有足够的节点来存储每条记录,该怎么办">

你的理解是错误的。问题中使用的三个主要关键字是partitionrowsnode。现在考虑一下他们是如何定义的

Node表示在virtaul机器/baremetal/cloud上运行的Cassandra进程。

Partition表示一个逻辑实体,它帮助Cassandra集群知道请求的数据驻留在哪个节点上。主键应该是唯一的。

CCD_ 6表示包含在分区内的记录。一个分区可以包含数百万行。

根据您的分区密钥,Cassandra集群将确定数据将驻留在哪个节点上。如果您有三个节点,那么Cassandra将对您的分区密钥进行散列,并根据该值确定将在哪里写入数据的节点。因此,随着规模的扩大,散列数将被重新分发(分区也将随之分发(。

因此,即使你有数百万条记录,如果你的集群有一个节点,如果你有多个节点,它们也可以驻留在一个节点中,你的数据将几乎均匀地分布在节点之间。

最新更新