Cassandra能否处理一张包含200亿条个别信息的表格?

时间:2014-11-25 09:21:14

标签: cassandra

据我所知,Cassandra可以大规模扩展,但目前有limitation 用于存储20亿条个别信息。

现在,我想将信息存储在一个表中,我有200亿个数据点。一个例子可能是每个用户存储多个设备(台式PC,移动设备等),这个地球上有超过70亿个人(可能的用户)。通过每人多个设备,可以想象数据集可以达到200多亿条记录。

  1. Cassandra可以处理这种情况吗?如果可能,那怎么样?
  2. 如果没有,如何处理这种情况?

1 个答案:

答案 0 :(得分:4)

是的,Cassandra可以存储200亿或更多的单个数据。

  

单个分区中的最大单元数(行x列)为20亿。

这是您提到的limitation,但它比您的解释更具体。具体而言,该限制适用于单个分区。如果要将最大 2 x 10 9 记录插入分区,则需要至少10个单独的分区来共同存储假设的20B记录。创建10个分区很容易。

这是原始问题中“如何”的答案:当您 (应用程序开发人员)将数据分割到多个分区时

事实上,设计良好,健康的Cassandra 集群将由数千或数百万(或更多)个别分区组成。虽然每个分区理论上可以包含一组20亿个数据点,但实际上 你不太可能看到分区变得那么大,而你不应该设计你的模式意图达到这个限制。 (毕竟,是一个限制,应该避免。)

Cassandra集群中的单个节点(单独的计算机)可以存储多个分区,但每个分区的数据必须能够完全驻留在一个节点内。该节点在更改其数据时还必须对分区执行 sort 操作。您可以想象,对接近10亿个数据点的排序将花费大量时间。相反, Cassandra打算通过在多个节点上分发数据来分配工作来“大规模”扩展。生产集群很容易包含数十,数百甚至数千个个别节点。

  1. 通过在多个分区之间拆分数据,避免接近2B /分区限制。
  2. 每个节点将能够根据其磁盘容量保留有限数量的分区。
  3. 通过向群集添加更多节点来避免受磁盘空间的限制,从而在更多磁盘上分发相同的数据。