在cassandra表中动态添加列

时间:2013-02-11 05:53:35

标签: cassandra hector cql cql3

我在CQl3中有以下表格

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

现在我想根据用户选择动态地将两列COL1和COL2添加到此表中。我该怎么做?

我做了以下事情

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

它将COL1和COL2添加到表格中。 然后,当我插入userInfo(..,..,COL1,..)值(..,..,'some value',..)时,它只是在COL1中放入NULL。

建议一些动态添加列的好方法。如果我想要添加大量的列,我不认为ALTER表是好的方法。我正在使用java程序中的Hector库来动态添加列。

1 个答案:

答案 0 :(得分:4)

也许CQL不是你的最佳选择。 CQL要求您预先定义模式以允许类似SQL的语法功能,但它会消除Cassandra的一些有用的动态功能。使用几乎任何Cassandra客户端的基于Thrift的变异功能,您只需命名要写入的列,如果它不存在,则会为您创建。

例如:

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