为什么MongoDB没有交易?

时间:2013-08-04 11:05:56

标签: mongodb transactions

据我所知,MongoDB不支持交易,也没有实施此类支持的计划。这是什么原因?

1 个答案:

答案 0 :(得分:12)

没有交易是允许MongoDB可扩展的权衡。

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

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

MongoDB FAQ解释如下:

  

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