2013-02-28 20 views
1

我想設計一個列族來存儲幾個客戶端的聊天記錄, 將一個特定的情侶的所有歷史存儲在一行中, 對於給定的行,我們如何存儲該行所需的列。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' ......等等等等,我怎麼能在一個特定的行 IAM期運用cqlsh 2.3創建列。 0 | cassandra 1.2.1 | CQL空間3.0.0

回答

5

相反MESSAGE1,消息2,等的列,使用這樣的化合物鍵:

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

卡桑德拉將屬於ID1/ID2對按照時間順序爲您現在簇消息。

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

+0

非常感謝,但我想將所有消息存儲在一行中,因爲我認爲橫向搜索比豎向快。如果這個錯誤的想法如何我可以插入時間戳合成 – 2013-03-01 12:07:34