Cassandra-secondary索引部分复合键?

时间:2012-07-19 23:39:57

标签: cassandra secondary-indexes

我正在使用由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上使用某种索引。

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

1 个答案:

答案 0 :(得分:1)

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

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

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