如果cassandra中不存在列,如何更改表添加列?

时间:2014-10-08 15:36:32

标签: python cassandra

我在Cassandra表/列系列中有一些预定义的列。我还得到另一个JSON / dictionary对象,它具有key:value对,它们不是预定义的,因此不包含在create table语句中(我在python上使用cql3库)。我想将此数据添加到我的Cassandra表中,我希望json对象中的唯一键成为新列。如果在json中存在已经成为列的键,Cassandra应该在不抛出异常的情况下拒绝该查询。如果我尝试简单地更改表以添加预先存在的列,则会抛出异常。如果列不存在类型查询,或者我应该通过异常处理来处理它吗?是否存在alter table add列?

1 个答案:

答案 0 :(得分:1)

目前还没有这样做的机制。 IF NOT EXISTS功能目前是only for CREATE and DROP modification statements(请参阅条件架构修改)。

我会改造表格以允许你所谓的在列中(如表的列中)并使用集合来存储其各种值,最后得到如下结果:

 key    | date_added                           | values
--------+--------------------------------------+-------
 1      | e64d8be0-4f2a-11e4-b409-138283d4b034 | ['item1', 'item2']
 7      | e64d8be0-4f2a-11e4-b409-138283d4b034 | ['item1', 'item5']
 1      | e64d8be0-4f2a-11e4-b409-138283d4b034 | ['item4']



另外,如果每次执行查询时都有IF NOT EXISTS alter语句,则会产生大量开销,从而验证该行不存在。