【发布时间】:2015-07-06 15:31:52
【问题描述】:
我对关于 Cassandra 的两个看似矛盾的陈述感到困惑
- 在写入之前没有读取(可能是因为写入是顺序的,而读取需要扫描主键索引)
- INSERT 和 UPDATE 具有相同的语义(在 CQL manual 的 older version 中说明,但可能仍被认为基本正确)
假设我创建了以下简单表格:
CREATE TABLE data (
id varchar PRIMARY KEY,
names set<text>
);
现在我插入一些值:
insert into data (id, names) values ('123', {'joe', 'john'});
现在,如果我进行更新:
update data set names = names + {'mary'} where id = '123';
结果如预期:
id | names
-----+-------------------------
123 | {'joe', 'john', 'mary'}
这不是必须先读再写的情况吗? “成本”似乎如下
- 阅读专栏的成本
- 创建两个集合并集的成本(此处可以忽略不计,但使用较大的集合可能会很明显)
- 使用键和新列数据写入数据的成本
插入只是做这些中的最后一个。
【问题讨论】:
标签: cassandra-2.0 cqlsh