1

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

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

现在我想让搜索结果过滤 startDate_mobileNo、Call_TYPE 和 endDate。这可以通过将 endDate 作为二级索引来完成。但是超级列中的二级索引是不可能的。所以我无法弄清楚如何进行。是的,我可以通过使用简单的 java 编码过滤结果数据来完成二级索引过滤部分。但我想这不是正确的想法,因为如果大数据可能内存不足。所以请给我一些想法。

提前致谢

4

1 回答 1

3

我相信你可以使用复合键得到你想要的,它在 Cassandra 1.1 中具有新的一流 CQL 支持。有关更多信息,请参阅有关使用复合材料建模的博客文章。

超级柱绝对是错误的方式——它们总是有些问题,现在已被弃用,你可以使用复合材料从它们那里得到你想要的一切。

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

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

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

如果您想提供一个更具体的示例来说明您需要支持的排序查询,我可能会提供更多帮助。

于 2012-04-27T21:15:57.467 回答