首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于行范围的Cassandra查询表

基于行范围的Cassandra查询表
EN

Stack Overflow用户
提问于 2016-03-03 21:00:24
回答 1查看 790关注 0票数 1

我是卡桑德拉的新人。我正在使用cassandra-3.0和datastax java驱动程序进行开发。我想知道cassandra是否提供了基于rowkey range的数据堆积选项?

就像这样

代码语言:javascript
复制
select * from <table-name> where rowkey > ? and rowkey < ?;

如果没有,在cassandra ( java/cql)中是否有其他选项可以根据行范围获取数据?

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 22:16:13

不幸的是,在Cassandra中真的没有一种机制可以按照您所要求的方式工作。对分区键(行键)运行范围查询的惟一方法是使用token函数。这是因为Cassandra根据分区键的散列标记值对集群中的行进行排序。这个值对你来说没有任何意义,但它允许你在一个大表中“分页”,而不会遇到超时。

代码语言:javascript
复制
SELECT * FROM <table-name>
WHERE token(rowkey) > -9223372036854775807
AND token(rowkey) < -5534023222112865485;

对有意义的值进行范围查询的方法是找到一个值来对行进行分区,然后按数值或时间值进行聚类。例如,如果我按month (PRIMARY KEY(month,eventdate))对数据进行分区,则可以按日期范围查询事件表:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35772888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档