【问题标题】:How to model cassandra table to allow where clause on a non primary key如何对 cassandra 表进行建模以允许非主键上的 where 子句
【发布时间】:2014-12-12 19:10:21
【问题描述】:

我在一个实验项目中使用cassandra。我的模型很简单,我有下表:

create table message(
id varchar,
msgId varchar,
tId varchar,
gtName varchar,
status varchar,
text text,
PRIMARY KEY (id, tId)

);

在第一次插入时,我只有 id 和 tId 可以插入。将有一个即时更新,我可以让 msgId 从被调用方法的返回类型中持久化。将再次调用我的应用程序,其中包含 status,它只知道 msgId。在这种情况下,我需要查找以使用where clause on msgId 更新消息表。

我怎样才能让cassandra 2.1.0 正常工作我也在使用spring-data-cassandra:1.1.0.RELEASE

感谢您的建议

【问题讨论】:

    标签: cassandra data-modeling spring-data-cassandra


    【解决方案1】:

    第一个简单的步骤是在该键上创建一个secondary index

    create index on message(msgId);
    select * from message where msgId='foo';
    

    二级索引确实存在一些性能问题,并且并不总是很合适,具体取决于您的数据模型。另一种选择是创建第二个表,将msgId 映射回idtId

    create table msgid (
         msgId varchar,
         id varchar,
         tId varchar,
         primary key (msgId)
    );
    

    以下是关于二级索引使用的一些有用的讨论:

    【讨论】:

    • 非常感谢,检查链接
    猜你喜欢
    • 2016-06-02
    • 2020-10-19
    • 2017-01-04
    • 2019-01-22
    • 2017-09-08
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多