Cassandra 能否处理包含 200 亿条单独信息的表格?

Avi*_*kma 1 cassandra

我知道 Cassandra 具有大规模可扩展性,但它目前 在存储 20 亿条单独信息方面存在限制

现在,假设我想将信息存储在一个表中,并且我有 200 亿个数据点。一个例子可能是每个用户存储多个设备(桌面 PC、移动设备等),地球上有超过 70 亿个人(可能的用户)。每人多台设备,可想而知数据集可达20+亿条记录。

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

Wil*_*ice 6

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

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

这是您提到的限制,但它比您的解释更具体。具体来说,该限制是针对单个分区的。如果您将最多2 x 10 9条记录插入到一​​个分区中,则至少需要 10 个单独的分区来共同存储假设的 20B 记录。创建 10 个分区很容易。

这是原始问题中“如何”的答案:(应用程序开发人员)将数据拆分到多个分区时,Cassandra 会超出此限制。

事实上,一个设计良好、健康的 Cassandra集群将包含数千或数百万(或更多)个单独的分区。虽然理论上每个分区可以包含一组唯一的 20 亿个数据点,但实际上您不太可能看到分区增长到如此大,并且您不应该设计架构以达到该限制。(毕竟这是一个限制,应该避免。)

Cassandra 集群中的单个节点(单独的机器)可以存储多个分区,但每个分区的数据必须能够完全驻留在一个节点内。在更改其数据时,该节点还必须对分区执行排序操作。您可能可以想象,对接近 10 亿个数据点的任何地方进行排序将花费大量时间。相反,Cassandra 希望您通过跨多个节点分布数据来分布工作来“大规模”扩展。 生产集群可以很容易地由数十个、数百个甚至数千个单独的节点组成。

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