我想设计列族来存储几个客户的聊天记录, 将一对特定夫妇的所有历史记录存储在一行中, 对于给定的行,我们如何仅存储该行所需的列。
样品:
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
答案 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-1和http://www.datastax.com/docs/1.2/ddl/table#cassandra-tables。