cop*_*opt 5 couchdb acid mongodb nosql oracle-nosql
据我所知,NoSQL 数据库可能是高强度数据读取应用程序的不错选择,但如果您还需要进行大量数据更新,则不太适合,并且事务性对您来说非常重要(因为没有酸合规性)。对?可能太简单了。
但无论如何,假设我至少部分正确,我现在担心 NoSQL 数据库如何维护您正在阅读或编写的数据的“读取一致”视图。还是他们?如果他们不这样做,这不是一个很大的问题吗?
我的意思是,如果您正在阅读(或更新)的数据在阅读时发生变化,那么您可能会得到不一致/脏的结果集。来自 Oracle rdbms 背景,所有这些都只是为您处理,我发现它令人困惑,缺乏读取一致性并不是一个大问题。很可能虽然我错过了关于这一切的一些关键点。有人可以让我直截了当吗?
小智 5
我是 Oracle NoSQL 数据库的开发人员,将回答您与该特定 NoSQL 系统相关的问题。
Oracle NoSQL 数据库 API 允许程序员在每次 API 调用中指定读取一致性级别。四个可能的值,从最严格到最宽松,是 Absolute、Time、Version 和 None。Absolute 表示始终从复制主机读取,以便返回最新的值。“时间”表示系统可以从任何副本返回一个值,该值至少在主服务器的某个时间增量内(例如,从主服务器 2 秒内的任何副本读取值)。对系统的每次读写调用都会返回一个“版本句柄”。当指定 Consistency.Version 时,此版本句柄可以传递到任何读取调用中,它告诉系统从至少与该版本一样最新的任何副本中读取。这对于读取修改写入(又名 CAS)场景很有用。最后一个值 Consistency.None 表示可以使用任何副本(即不保证一致性)。
我希望这是有帮助的。
查尔斯·兰姆
小智 2
MongoDB 允许应用程序使用“写入关注”选择所需的读取一致性级别。这个概念允许您的应用程序阻塞,直到满足给定写入的特定条件。
举例来说,只要操作传达到主服务器,您就可以认为任何写入都是成功的。或者,您可以阻塞,直到写入已传播到副本集中的大多数节点。通过这种方式,您可以根据口味混合性能/一致性。