【问题标题】:Cassandra-secondary index on part of the composite key?部分复合键上的 Cassandra-secondary 索引?
【发布时间】:2012-07-19 23:39:57
【问题描述】:

我正在使用由 2 个字符串 Name1、Name2 和时间戳组成的复合主键(例如“Joe:Smith:123456”)。我想查询给定Name1Name2 相等条件的一系列时间戳。

例如,在 SQL 中:

SELECT * FROM testcf WHERE (timestamp > 111111 AND timestamp < 222222 and Name2 = 'Brown');

SELECT * FROM testcf WHERE (timestamp > 111111 AND timestamp < 222222 and Name1 = 'Charlie);

据我了解,组合键的第一部分是分区键,所以第二个查询是可能的,但第一个查询需要 Name2 上的某种索引。

是否可以在复合键的组件上创建单独的索引?还是我在这里误解了什么?

【问题讨论】:

    标签: cassandra secondary-indexes


    【解决方案1】:

    如果您想使用您的架构并支持第一个查询,您将需要手动创建和维护名称索引。鉴于此要求,我质疑您在数据模型中的选择。您的模型在设计时应考虑到您的阅读模式。我假设您还存储了一些列值,您希望通过时间戳查询这些值。如果是这样,也许以下模型会更好地为您服务:

    "[current_day]:Joe:Smith" {
        123456:Field1 : value
        123456:Field2 : value
        123450:Field1 : value
        123450:Field2 : value
    }
    

    使用此模型,您可以使用当前日期(或某个已知日期)作为标记值,​​然后过滤名字和姓氏。您还可以使用复合列名按时间戳获取一系列列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2015-03-24
      • 2014-09-23
      • 1970-01-01
      • 2013-07-30
      相关资源
      最近更新 更多