【问题标题】:Can Cassandra handle a table containing 20 billion individual pieces of information?Cassandra 可以处理包含 200 亿条信息的表格吗?
【发布时间】:2014-11-28 10:08:37
【问题描述】:

我知道 Cassandra 可大规模扩展,但它目前有一个 limitation 用于存储 20 亿条单独的信息。

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

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

【问题讨论】:

  • 世界人口只有70亿。您将如何输入 200 亿条记录?你的要求毫无意义。
  • @Raedwald 编辑完成。

标签: cassandra


【解决方案1】:

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

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

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

这是原始问题中“如何”的答案:当应用程序开发人员您将数据拆分到多个分区时,Cassandra 的扩展超出了此限制。 em>.

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

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

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

【讨论】:

  • 点赞“事实上,一个设计良好、健康的 Cassandra 集群将由数千或数百万(或更多)个单独的分区组成”
  • 感谢威廉的回答,但似乎仍然令人困惑,因为还有更多关于 cassandra 限制和解释的其他文件。到目前为止我的理解- 1.使用分区键我们可以创建任意数量的分区 2.在每个分区(每一行)中,它可以有 2B 列值。
  • 分区 != 行。列存储在行中。行存储在分区中。分区存储在节点中。一个或多个节点组成一个集群。所有这些术语都是不同的东西。 one 分区中所有行的所有列的计数必须为 最新版本相关的文档;一些术语在引入 CQL 时改变了一些含义。)
  • @William 你会检查以下链接吗?
    link。实际上,一个简单明了的例子很容易理解和解释。
  • 见幻灯片 #48 of this presentation
猜你喜欢
  • 1970-01-01
  • 2018-02-04
  • 2016-09-02
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2014-01-21
相关资源
最近更新 更多