2013-02-11 64 views
2

我在CQl3在卡桑德拉表動態地添加列

create table userInfo 
(
userid text, 
email text, 
firstName text, 
lastName text, 
city text, 
Primary key (userid,email) 
); 

下表現在我要動態添加兩個列COL1和COL2此表爲每個用戶selection.How我能做到這一點?

我以後的事

ALTER TABLE ADD COL1 text; 
ALTER TABLE ADD COL2 text; 

它增加了COL1 COL2和對錶。 然後,當我插入到userInfo(..,..,COL1,..)values(..,..,'some value',..)它只是把NULL置於COL1。

建議一些好方法動態添加列。我不認爲ALTER表是好方法,如果我想要添加大量列的話。我使用Java程序的Hector庫來動態添加列。

回答

2

也許CQL不是您的最佳選擇。 CQL要求您事先定義您的架構以允許類似SQL的語法功能,但它會消除Cassandra的一些有用的動態特性。使用幾乎任何Cassandra客戶端的基於Thrift的變異功能,您可以簡單地命名您要編寫的列,如果它不存在,它將爲您創建。

例如:

ks.insert(key, createColumnPath(colName), bytes(value)); 
+1

我發現在CQL一個解決方案是使用** **地圖。我將添加功能特定的Map 。那是更好的節儉解決方案嗎?你能給我一個簡單的例子,使用hector向CQL添加地圖。 – user1802597 2013-02-12 04:27:50