我是卡桑德拉的新人。我正在使用cassandra-3.0和datastax java驱动程序进行开发。我想知道cassandra是否提供了基于rowkey range的数据堆积选项?
就像这样
select * from <table-name> where rowkey > ? and rowkey < ?;如果没有,在cassandra ( java/cql)中是否有其他选项可以根据行范围获取数据?
发布于 2016-03-03 22:16:13
不幸的是,在Cassandra中真的没有一种机制可以按照您所要求的方式工作。对分区键(行键)运行范围查询的惟一方法是使用token函数。这是因为Cassandra根据分区键的散列标记值对集群中的行进行排序。这个值对你来说没有任何意义,但它允许你在一个大表中“分页”,而不会遇到超时。
SELECT * FROM <table-name>
WHERE token(rowkey) > -9223372036854775807
AND token(rowkey) < -5534023222112865485;对有意义的值进行范围查询的方法是找到一个值来对行进行分区,然后按数值或时间值进行聚类。例如,如果我按month (PRIMARY KEY(month,eventdate))对数据进行分区,则可以按日期范围查询事件表:
aploetz@cqlsh:stackoverflow> SELECT * FROM events
WHERE monthbucket='201509'
AND eventdate > '2015-09-19' AND eventdate < '2015-09-26';
monthbucket | eventdate | beginend | eventid | eventname
-------------+--------------------------+----------+--------------------------------------+------------------------
201509 | 2015-09-25 06:00:00+0000 | B | a223ad16-2afd-4213-bee3-08a2c4dd63e6 | Hobbit Day
201509 | 2015-09-25 05:59:59+0000 | E | 9cd6a265-6c60-4537-9ea9-b57e7c152db9 | Cassandra Summit
201509 | 2015-09-22 06:00:00+0000 | B | 9cd6a265-6c60-4537-9ea9-b57e7c152db9 | Cassandra Summit
201509 | 2015-09-20 05:59:59+0000 | E | b9fe9668-cef2-464e-beb4-d4f985ef9c47 | Talk Like a Pirate Day
201509 | 2015-09-19 06:00:00+0000 | B | b9fe9668-cef2-464e-beb4-d4f985ef9c47 | Talk Like a Pirate Day
(5 rows)https://stackoverflow.com/questions/35772888
复制相似问题