什么是正确的Cassandra收藏限制?

时间:2016-11-05 12:48:23

标签: cassandra

我正在测试一个应用程序,其中集合的大小将来必然增长,64k是在某些情况下可能达到的限制。

这个问题与收集规模有关,因为官方文件中似乎存在矛盾。

根据this文件:

  

如果您将超过64K项目插入集合中,则只有64K项目   将是可查询的,导致数据丢失。

但如果您点击该页面上的CQL Limits link,您会看到:

  
      
  • 收藏(清单):收藏规模:2B (2 ^ 31);值大小:65535(2 ^ 16-1)(Cassandra 2.1及更高版本,使用本机协议v3)

  •   
  • 收藏(套装):收藏品大小:2B (2 ^ 31);值大小:65535(2 ^ 16-1)(Cassandra 2.1及更高版本,使用本机协议v3)

  •   
  • 收藏(地图):收藏规模:2B (2 ^ 31);键数:65535(2 ^ 16-1);值大小:65535(2 ^ 16-1)(Cassandra 2.1及更高版本,使用   原生协议v3)

  •   

那是哪一个?每个系列64k项目,或每个集合20亿项目?或者是20亿可写但超过64k不可读?

提前致谢。

2 个答案:

答案 0 :(得分:3)

您正在使用哪个版本的cassandra?

该文档适用于2.0和2.1。在这种情况下,您可以在集合中放置多少元素。这是64k。但是,如果使用本机协议v3,则每个元素的大小可以为2b。 检查此https://issues.apache.org/jira/browse/CASSANDRA-5428

但是如果您使用的是cassandra 2.2及更高版本,则可以将20亿个项目插入到集合中。 链接在这里。 http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCollections.html

说过你不应该在集合中插入那么多项。在达到最大元素插入限制之前,您将遇到性能问题。

Collections cannot be "sliced"; Cassandra reads a collection in its entirety, impacting performance. Thus, collections should be much smaller than the maximum limits listed. The collection is not paged internally.

如果你必须拥有那么多项目,那么在那种情况下,集合不再适合,并且应该使用特定的表格(带有聚类列)。

我希望这会有所帮助。

答案 1 :(得分:2)

如果您使用cassandra 2.1,则无法在cassandra集合中添加超过64k的itens。在这个版本中,cassandra使用16位来索引元素。否则,单个项目可以是64k(大小)或2B(取决于协议)。