超级列Cassandra中的二级索引的任何替代方法

时间:2012-04-27 04:30:25

标签: cassandra filtering super hector

我的数据模型看起来像这样

      #keyspace_name{
             #columnfamily1
               {startDate_mobileNo:  // row key
                       { Call_TYpe:  // super column
                               { xyz: value
                                 endDate : value;
                                }
                        }
                }

现在我想让搜索结果过滤startDate_mobileNo,Call_TYpe和endDate。 这可以通过将endDate作为二级索引来完成。但是超级列中的二级索引是不可能的。所以我无法想象如何继续。是的,我可以通过使用简单的java编码过滤结果数据来执行二级索引过滤部分。但我想这不是正确的想法,因为大数据可能存在稀缺性。所以请给我一些想法。

提前致谢

1 个答案:

答案 0 :(得分:3)

我相信你可以使用复合键获得你想要的东西,它在Cassandra 1.1中拥有新的一流CQL支持。有关更多信息,请参阅this blog post about modeling with composites

Supercolumns绝对是错误的方式 - 它们总是有些问题,现在已被弃用,您可以使用复合材料从中获得所需的一切。

如果我正确地解释您的模型,您可能会执行以下操作:

CREATE TABLE columnfamily1 (
    startDate timestamp,
    mobileNo text,
    Call_TYpe int,
    endDate timestamp,
    xyz text,
    PRIMARY KEY (startDate, mobileNo, Call_TYpe)
);

如果需要,您还可以在endDate上创建二级索引。我不清楚你是否愿意。

如果您想提供您需要支持的各种查询的更具体的示例,我可以提供更多帮助。