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 细胞数量限制的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Cassandra 不允许通过 IN 限制查询集群键?
使用 Pyspark / Dataframes 时,如何将谓词下推到 Cassandra 或限制请求的数据?