cassandra:单行中可变数量的列

时间:2013-02-28 14:11:47

标签: sql database cassandra

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

样品:

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 | cassandra 1.2.1 | cql space 3.0.0

1 个答案:

答案 0 :(得分:5)

使用复合键代替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