【问题标题】:Cassandra - Hector: Search by Row-Key but filter by further expression?Cassandra - Hector:按行键搜索但按进一步表达过滤?
【发布时间】:2011-06-09 09:55:21
【问题描述】:
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,这应该很容易实现,因为我首先按行键查询,然后按 releaseate 缩小范围。

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

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

谢谢 马库斯

【问题讨论】:

    标签: java cassandra hector


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-11-15
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 2012-12-04
        • 2017-01-29
        相关资源
        最近更新 更多