Mat*_*ner 2 sql partitioning cql cassandra cql3
使用CQL3,如何枚举Cassandra中表的所有分区键?特别是返回不同的键并分页结果会带来一些麻烦。
您可以按照以下示例进行操作。创建一个测试表:
> create table partition_keys_test (p_key text PRIMARY KEY, rest text);
Run Code Online (Sandbox Code Playgroud)
并插入一些行,例如:
> insert into partition_keys_test (p_key, rest) VALUES ('1', 'blah');
Run Code Online (Sandbox Code Playgroud)
我为p_key'1','2',...,'9'完成了此操作。
然后翻阅分区键。从...开始:
> select p_key from partition_keys_test limit 2;
p_key
-------
6
7
Run Code Online (Sandbox Code Playgroud)
获取页面大小2。然后,获取最后的p_key结果,并在下一个查询中使用它:
> select p_key from partition_keys_test where token(p_key) > token('7') limit 2;
p_key
-------
9
4
Run Code Online (Sandbox Code Playgroud)
依此类推,直到收到的结果少于页面大小的结果。
请注意,您应该期望它可以读取整个数据集。对于非常宽的行,可能不会,但是仍然会占用非常大的I / O。
此外,如果创建或删除了行,并且令牌的数量比到目前为止高,它们将出现在后续查询中。因此,如果在创建或删除行时正在运行上述分页查询,则取决于时间,分区键可能不会返回。