CQL插入和更新之间的区别?

时间:2016-02-24 01:23:35

标签: cql cassandra-2.1

我是Cassandra的新手,我来自一个关系世界。当我玩CQL时,我发现我没有发现任何差异。例如:

当我执行以下查询

  

更新产品套装价格= 100,货币=美元,其中productID = 12345;

然后CQL在表中创建新行。在RDBMS中,由于没有productID = 12345的产品,因此无法工作。

你能提供一些见解吗?

1 个答案:

答案 0 :(得分:1)

你发现的是大多数Cassandra写的(除了少数例外)写没有读取。这有很多原因 - 一个是性能(首先读取很慢),但也考虑到第一个INSERT可能发生在另一个服务器上,还没有复制到处理UPDATE的服务器。

你真正说的是“将产品12345的价格设定为100美元”。如果没有这样的产品(但是?),它仍然会设定价格,因为它不会花时间来确定产品是否存在。

如果您需要检查该行是否存在,Cassandra为轻量级事务(http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0)提供了一个paxos实现,它可以为您提供一些IF [NOT EXISTS]类型逻辑(性能显着下降)。