我想设计列族来存储几个客户的聊天记录, 将一对特定夫妇的所有历史记录存储在一行中, 对于给定的行,我们如何只存储该行所需的列。
示例:
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 空间 3.0.0
最佳答案
代替 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 .
关于sql - cassandra:单行可变列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137616/