【问题标题】:How to alter table add column if column not exists in cassandra?如果 cassandra 中不存在列,如何更改表添加列?
【发布时间】:2014-12-03 08:21:56
【问题描述】:

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

【问题讨论】:

标签: python cassandra


【解决方案1】:

目前没有这样做的机制。 IF NOT EXISTS 功能当前为 only for CREATE and DROP modification statements(查看条件模式修改)。

我会改造表格以允许您称之为 key 的内容位于列中(如在表格的列中)并使用集合来存储其各种值,最终结果如下:

 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 EXISTSalter 语句,那么验证该行是否不存在会产生大量开销。

【讨论】:

  • 我假设,alter table 是 Cassandra 中的常数时间操作。
猜你喜欢
  • 2020-11-25
  • 2014-11-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 2014-09-16
  • 2012-02-10
相关资源
最近更新 更多