如何按数据范围查询 Cassandra 中以 TimeUUID 为第一个组件的复合列?
Posted
技术标签:
【中文标题】如何按数据范围查询 Cassandra 中以 TimeUUID 为第一个组件的复合列?【英文标题】:How to query, by data range, a composite column in Cassandra with TimeUUID as the first component? 【发布时间】:2012-07-19 10:40:34 【问题描述】:1) 插入一列
DynamicComposite dc = new DynamicComposite();
dc.add(0,TimeUUIDUtils.getUniqueTimeUUIDinMillis());
2) 尝试使用 SliceQuery 查询给定时间范围内的列
UUID afterUUID = TimeUUID.getTimeUUID((new Date (2012, 7, 17, 24, 0).getTime()));
UUID beforeUUID = TimeUUID.getTimeUUID((new Date (2012, 7, 20, 24, 0).getTime()));
startRange.add(0, afterUUID);
endRange.addComponent(0,beforeUUID, UUIDSerializer.get(), "TimeUUIDType", AbstractComposite.ComponentEquality.GREATER_THAN_EQUAL);
在 7 月 19 日执行代码,因此该列应该匹配但什么都没有。
感谢任何帮助。
【问题讨论】:
我现在正在使用一个 Long 和一个 System.currentTimeMillis()。直到我发现原来的解决方案有问题。 【参考方案1】:Cassandra 使用 UTC,System.currentTimeInMillis()
也是如此。使用 UTC 时间查询时,您的查询应该可以工作。
【讨论】:
以上是关于如何按数据范围查询 Cassandra 中以 TimeUUID 为第一个组件的复合列?的主要内容,如果未能解决你的问题,请参考以下文章