11

更新:MongoDB 支持 4.0 版的事务。

原始问题:

据我所知,MongoDB 不支持事务,也没有实现这种支持的计划。这是什么原因?

4

1 回答 1

15

没有事务是允许 MongoDB 可扩展的权衡。

事务的目的是确保整个数据库在多个操作发生时保持一致。但与大多数关系数据库相反,MongoDB 并非设计为在单个主机上运行。它被设计成一个由多个分片组成的集群,其中每个分片是多个服务器的副本集(可选地在不同的地理位置)。

一个事务可能会影响数据库的许多主机。这意味着事务必须在所有这些主机之间同步。这将意味着相当多的开销,并且在通过添加更多服务器来增加数据库大小时会非常糟糕地扩展。

MongoDB FAQ是这样解释的:

MongoDB 不支持具有回滚功能的传统锁定或复杂事务。MongoDB 旨在实现轻量级、快速和可预测的性能。这类似于 MySQL MyISAM 自动提交模型。通过保持事务支持极其简单,MongoDB 可以提供更高的性能,尤其是对于具有多个数据库服务器进程的分区或复制系统。

于 2013-08-04T13:06:30.990 回答