sql - 使用 CQL 遍历 Cassandra 表的分区键

标签 sql cassandra partitioning cql cql3

使用 CQL3,如何枚举 Cassandra 中表的所有分区键?特别是返回不同的键和对结果进行分页时会很复杂。

最佳答案

您可以按照以下示例进行操作。创建测试表:

> create table partition_keys_test (p_key text PRIMARY KEY, rest text);

并插入一些行,例如:
> insert into partition_keys_test (p_key, rest) VALUES ('1', 'blah');

我为 p_key '1', '2', ..., '9' 做了这个。

然后翻阅分区键。从...开始:
> select p_key from partition_keys_test limit 2;
 p_key
 -------
     6
     7

对于页面大小 2。然后,获取最后一个 p_key 结果并在下一个查询中使用它:
> select p_key from partition_keys_test where token(p_key) > token('7') limit 2;
 p_key
 -------
    9
    4

依此类推,直到您收到小于您的页面大小的结果。

请注意,您应该期望这会通读您的整个数据集。对于非常宽的行,它可能不会,但 I/O 仍然非常繁重。

此外,如果行被创建或删除并且具有比您到目前为止更高的标记,它们将出现在后续查询中。因此,如果您在创建或删除行时运行上述分页查询,则可能会或可能不会返回分区键,具体取决于时间。

关于sql - 使用 CQL 遍历 Cassandra 表的分区键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18230895/

相关文章:

sql - MySQL join显示类别、子类别和子子类别

mysql - 无法弄清楚为什么 mySql 数据库语法无法编译

mysql - 对表进行分区会提高这个 GROUP BY 查询的性能吗?

mysql - 怎么知道mysql表是分区的?

algorithm - 分区比排序更容易吗?

mysql - 如何最有效地获取多个last_insert_id

sql - 两个 T-SQL 查询的交集

python - 从 MySQL 快速更新 Cassandra

java - 使用java Spark将数据集保存到cassandra

Cassandra:向表中添加新列