据我所知,Cassandra可以大规模扩展,但目前有limitation 用于存储20亿条个别信息。
现在,我想将信息存储在一个表中,我有200亿个数据点。一个例子可能是每个用户存储多个设备(台式PC,移动设备等),这个地球上有超过70亿个人(可能的用户)。通过每人多个设备,可以想象数据集可以达到200多亿条记录。
答案 0 :(得分:4)
单个分区中的最大单元数(行x列)为20亿。
这是您提到的limitation,但它比您的解释更具体。具体而言,该限制适用于单个分区。如果要将最大 2 x 10 9 记录插入分区,则需要至少10个单独的分区来共同存储假设的20B记录。创建10个分区很容易。
这是原始问题中“如何”的答案:当您 (应用程序开发人员)将数据分割到多个分区时
事实上,设计良好,健康的Cassandra 集群将由数千或数百万(或更多)个别分区组成。虽然每个分区理论上可以包含一组20亿个数据点,但实际上 你不太可能看到分区变得那么大,而你不应该设计你的模式意图达到这个限制。 (毕竟,是一个限制,应该避免。)
Cassandra集群中的单个节点(单独的计算机)可以存储多个分区,但每个分区的数据必须能够完全驻留在一个节点内。该节点在更改其数据时还必须对分区执行 sort 操作。您可以想象,对接近10亿个数据点的排序将花费大量时间。相反, Cassandra打算通过在多个节点上分发数据来分配工作来“大规模”扩展。生产集群很容易包含数十,数百甚至数千个个别节点。