Cassandra 卡桑德拉cql计数错误(*)

Cassandra 卡桑德拉cql计数错误(*),cassandra,cql,Cassandra,Cql,我试图为我的测试创建一些用户。我使用cassandra cql gem for Ruby on Rails在一个0..100000的循环中创建了用户,然后我计算了数据库中的用户数,结果只有10000个用户。如果我创建9000,一切正常。首先,我认为用户不存在,但我使用了Apollo WebUI for Cassandra,我可以找到id为100000的用户和以下用户。为什么会发生这种情况 我知道我应该使用计数器列来提供应用程序中的用户数,但我想知道这是我的错误还是失败 def self.crea

我试图为我的测试创建一些用户。我使用cassandra cql gem for Ruby on Rails在一个0..100000的循环中创建了用户,然后我计算了数据库中的用户数,结果只有10000个用户。如果我创建9000,一切正常。首先,我认为用户不存在,但我使用了Apollo WebUI for Cassandra,我可以找到id为100000的用户和以下用户。为什么会发生这种情况

我知道我应该使用计数器列来提供应用程序中的用户数,但我想知道这是我的错误还是失败

def self.create_users
  (0..19000).each do |f|
    @@db.execute("INSERT INTO users (uid, first_name, last_name, email) VALUES (?,?,?,?)", f.to_s, "first_name", "last_name", "email")
  end
end

def self.count_users
  count = @@db.execute("SELECT count(*) FROM users")
  count.fetch do |c|
    return c[0]
  end
end

CQL操作限制将返回给用户的行数和列数。默认情况下,该限制为10000。由于count(*)操作实际上必须取出所有行才能获得计数,因此它也受到默认值10000行的限制。您可以增加查询的限制(尽管我不建议这样做):


请注意,这是一个昂贵的操作,尤其是当您有很多行时。您应该预料到,对于任何中型或大型数据集,这种类型的查询可能需要很长时间。如果可能的话,您应该将此计数反规范化为计数器或其他形式,而不需要获取列族中的所有行。

您好,请问您使用的是什么版本的cassandra?我面临着一个与
select count(*)
相关的问题,而
limit
似乎被完全忽略了:这个问题是从2012年1月开始的,所以很可能是Cassandra 1.0.X。从那时起,CQL已被彻底检修,现在具有完全不同的语义。
SELECT count(*) FROM users limit 20000;