0
create column family Records with
          comparator = UTF8Type and
          column_metadata =
          [
            {column_name: name, validation_class: UTF8Type},
            {column_name: label, validation_class: UTF8Type},
            {column_name: releasedate, validation_class: LongType},

我想通过 Row-Key 查询记录,然后进一步检查发布日期(时间戳值)。据我了解:http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes,这应该很容易,因为我首先通过行键查询然后缩小范围发布日期。

但是如何在赫克托耳中做到这一点?

使用SliceQuery不起作用。我知道有,IndexedSliceQuery但我没有二级索引集(如上图所示)。使用 IndexedSliceQuery 是否正确且必须使用(即使我没有辅助索引)?

谢谢马库斯

4

2 回答 2

2

抱歉,Cassandra API 目前无法混合服务器端行和列过滤。(而且因为它只对保持顺序的分区器有意义,所以这不太可能改变。)

于 2011-06-12T22:29:59.827 回答
2

如果您知道需要按发布日期查询数据,那么使用 Apache Cassandra,您应该以这种方式存储它。

这可以通过两种方式完成: - 调整上面列族定义中的元数据以包含发布日期的索引:

update column family Records with column_metadata=[{column_name: releasedate, validation_class: LongType, index_name:releasedate_idx, index_type:0}];    
  • 或者创建一个额外的列族,使用发布日期作为键并将键存储到记录列族作为列名。这与上面的二级索引定义基本相同,但使管理更新和查询的过程更加手动。

我建议第一种方法,让您可以访问 IndexedSlicesQuery 及其所有优点。

于 2011-06-15T05:49:21.747 回答