【发布时间】:2016-05-03 17:53:38
【问题描述】:
在 Cassandra 中实现行级锁定的机制是什么?我想要做的是只允许一个进程在任何给定时间修改给定行。
【问题讨论】:
在 Cassandra 中实现行级锁定的机制是什么?我想要做的是只允许一个进程在任何给定时间修改给定行。
【问题讨论】:
Cassandra 不提供锁定功能。它确实提供了轻量级事务,在某些情况下可以代替锁定。另请注意,对单行的操作是原子的,因此锁定行并不一定要确保对行的读取或写入为该行提供一致的字段值。
Cassandra 不提供锁定是因为对各种分布式数据存储的一个基本限制:分布式数据存储不能在提供性能和可用性的同时确保一致性,但它可以提供这三个属性中的两个。 Cassandra 的设计选择不提供一致性,因此它可以提供高性能和可用性。锁定是关于一致性的。因此,Cassandra 无法在不牺牲性能和/或可用性的情况下提供锁定。由于这与 Cassandra 的设计目标背道而驰,因此 Cassandra永远不会具有锁定功能是一个不错的选择。
您真的需要锁定吗?如果您有 RDBMS 背景,您可能会惊讶于它并不像您想象的那样经常需要。如果确实需要,则必须选择不同的数据存储,该数据存储旨在以牺牲性能或可用性(或两者兼而有之)为代价提供一致性。
【讨论】: