【问题标题】:cassandra: variable number of column in single rowcassandra:单行中的可变列数
【发布时间】:2013-02-14 18:24:09
【问题描述】:

我想设计列族来存储几个客户的聊天记录, 将一对特定夫妇的所有历史记录在一行中, 对于给定的行,我们如何只存储该行所需的列。

示例:

id1 | id2 | message1 | message2
5     2     "hey"      "why"
id1| id2  | message1 | message2 | message3 | message4
2     3     "dcx"       "ddfs"    "ddd"         "dd"

id1| id2  | message1 | message2 | message3 | message4
4     6     "dcx"       "ppp"    

create columnfamily chat (id1 int,id2 int primary key)
insert into chat(id1,id2) values(8103333,8104444);

我想在同一行添加新列'message1','message2' ......等 那么我如何在特定行中创建列 我正在使用 cqlsh 2.3.0 |卡桑德拉 1.2.1 | cql空间3.0.0

【问题讨论】:

    标签: sql database cassandra


    【解决方案1】:

    使用复合键代替 message1、message2 等列,如下所示:

    CREATE TABLE chat (
       id1 int,
       id2 int,
       message_sent_at timestamp,
       message text,
       primary key ((id1, id2), message_sent_at)
    )
    

    Cassandra 现在将为您按时间顺序对属于 id1/id2 对的消息进行聚类。

    请参阅 http://www.datastax.com/dev/blog/schema-in-cassandra-1-1http://www.datastax.com/docs/1.2/ddl/table#cassandra-tables

    【讨论】:

    • 非常感谢,但我想将所有消息存储在一行中,因为我认为水平搜索比垂直搜索快。如果这个错误的想法我可以插入时间戳格式
    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    相关资源
    最近更新 更多