2014-10-08 68 views
1

我在卡桑德拉表/列家族中有一些预定义的列。我还得到另一个JSON /字典对象,它具有key:value对,它们不是预定义的,因此未包含在create table语句中(我在python上使用cql3库)。我想将这些数据添加到我的Cassandra表中,我希望json对象中的唯一键成为一个新列。如果在json中存在一个已经存在列的键,Cassandra应该拒绝该查询而不抛出异常。它会抛出一个异常,如果我试图简单地修改表来添加一个预先存在的列。如果列不存在类型查询,还是应该通过异常处理来处理它,那么是否存在alter table add列?如何更改表添加列如果列不存在于cassadra?

回答

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语句,则会产生大量的开销,验证该行不存在。

+0

+1好的替代解决方案。 – Aaron 2014-10-08 21:21:34

+0

我假设,alter table是Cassandra中的一个常量操作。 – extraDarker 2014-10-09 08:29:57

相关问题