我对两个看似矛盾的关于卡桑德拉的陈述感到困惑
假设我创建了以下简单表:
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'}
这不是必须在写入之前进行读取的情况吗? &#34;成本&#34;似乎是以下
插入仅仅是最后一个。
答案 0 :(得分:1)
写作前无需阅读。
在内部,每个集合每个条目使用一列存储数据 - 当您在集合中请求新条目时,操作在单列中完成*:如果该列已经存在,则将覆盖该列,否则将创建该列(InsertOrUpdate
)。
这就是为什么集合中的每个条目都可以具有自定义ttl和写入时间的原因。
*使用Map
和Set
这是透明的,有一些内部技巧可以在List
内允许多个具有同名的列。