Cassandra列限制

3
当使用Cassandra时,在中,我输入以下内容:
cqlsh:info> SELECT count(*) FROM info.customerinfo WHERE KEY = 'ds10128832';

并且得到了以下结果:

 count
-------
 10000

Default LIMIT of 10000 was used. Specify your own LIMIT clause to get more results.

基本上,我想找出已存储在行键ds10128832中的列数。这个输出意味着我已经在该键中存储了10000个列,不能再添加更多的列,因为限制是10000吗?如果是这样,一旦达到10000,将不会插入更多的列吗?如果是,请问如何改变这种情况?我必须设置一个LIMIT吗?因为我有很多要存储的列,所以我不想有一个LIMIT
2个回答

4
Cassandra术语区分分区和行。查询结果表明,分区键ds10128832中有10000行。
实际上,正如catpaws所指出的,有一个默认限制为10000的限制,因此您可能具有具有该分区键的更多行。要计算其余部分,您需要指定较高的LIMIT子句,例如:
"cqlsh:info > SELECT count (*) FROM info.customerinfo WHERE KEY ='ds10128832' LIMIT 100000;"
如果您发现在查询期间一直达到了限制,则可能需要将限制数字递增。
在您的问题中,您提到计算列,而我已回答ROW的内容。在内部,Cassandra基于排序键将“行”存储为列(实际上是一组列),这就是我所假设的内容。在这种情况下,术语很重要。catpaws提到有2B列限制,其中包括基于排序键和行的所有子列,这将有助于限制。每行将贡献实际(内部)列数,等于模式中非主键值的数量。
例如,如果您的表是: CREATE TABLE info.customerinfo ( key text, account text, email text, screenname text, PRIMARY KEY (key, account) );
然后上面的计数将计算分区键“ds10128832”上的“account”行数。每个(key,account)组合将是一个唯一的逻辑行,它将(在内部)是两列:一个用于电子邮件,一个用于屏幕名称。在Cassandra强制执行的2B列限制之前,每个customerinfo“key”可能会有1B这样的帐户。
编辑:达到限制将抛出异常。

1
每个分区(行)中的最大列数为2B。输出中的默认LIMIT意味着cqlsh将显示的结果数量限制为10000。输出中的默认LIMIT在此页面上有解释:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__specifying-rows-returned-using-limit 在Cassandra 2.1.1中,您可以在cqlsh中使用查询分页,以100行为一组获取查询输出,后跟“more”提示符:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/paging.html

本页面列出了CQL中有硬性上限的内容,例如分区中的列:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/refLimits.html

在select表达式中使用COUNT(*)将返回与查询匹配的行数:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__counting-returned-rows


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接