Cassandra 细胞数量限制

Posted

技术标签:

【中文标题】Cassandra 细胞数量限制【英文标题】:Cassandra Cell Number Limitation 【发布时间】:2014-07-12 11:32:46 【问题描述】:

每个分区 20 亿个单元的限制仍然有效吗?

http://wiki.apache.org/cassandra/CassandraLimitations

假设您平均每个单元格节省 16 个字节。那么你“只是”可以在一台机器上保存 16*2e9 字节 = 32 GB 的数据(加上列名)!? 或者,如果您想象一个二次表,您将能够存储 44721 行,每行 44721 列!?

听起来不像是大数据。

这对吗?

谢谢!

马耳他

【问题讨论】:

这是每个分区而不是每个数据库。您可以在单个节点上拥有许多(数百万)个分区。 【参考方案1】:

20 亿个单元格的限制仍然有效,如果您开始看到每个分区有那么多单元格,您很可能希望重新建模您的数据。

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

分区由 CQL 中的分区键定义,并将定义特定数据的存储位置。例如,如果我有两个节点,虚构范围为 0-100 和 100-200。散列到 0 到 100 之间的分区键将驻留在第一个节点上,散列值在 100 到 200 之间的分区键将驻留在第二个节点上。实际上,Cassandra 使用 Murmur3 算法对主键进行散列,生成介于 -2^63 和 2^63-1 之间的值。

真正的限制往往取决于您的分区键有多少唯一值。如果您在单个列中没有大量唯一性,许多用户会组合列以生成更多唯一性(复合主键)。

http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html

有关散列以及 C* 如何保存数据的更多信息。

http://www.datastax.com/documentation/cassandra/2.0/cassandra/architecture/architecturePartitionerAbout_c.html

【讨论】:

谢谢!我认为一个节点是一个分区,分区键决定了该行所在的分区。但现在很清楚:)

以上是关于Cassandra 细胞数量限制的主要内容,如果未能解决你的问题,请参考以下文章

将 PIG 与 cassandra 一起使用的限制

为啥 Cassandra 不允许通过 IN 限制查询集群键?

使用 Pyspark / Dataframes 时,如何将谓词下推到 Cassandra 或限制请求的数据?

Spark Cassandra 连接器 - perPartitionLimit

如何在 cassandra 中为 API 实现分页?

Cassandra Scaling:为多节点 Cassandra DB 使用通用挂载是个好主意吗?