2013-08-04 40 views
3

據我所知,MongoDB不支持事務,也沒有實現這種支持的計劃。這是什麼原因?爲什麼MongoDB沒有交易?

+0

有沒有計劃?除了MongoDB通常是爲非事務性的東西設計的 – Sammaye

+0

@Sammaye - 當然,非事務性的東西很好,但有時候事務是非常有用的。 – Rogach

+0

如果它可能有用,它們通常不是必需的,我寧願使用MongoDb,也不願承受在分片部署中支持分佈式多文檔事務的性能影響。 – WiredPrairie

回答

7

沒有事務是權衡MongoDB的可擴展性。

事務的目的是確保整個數據庫在多個操作發生時保持一致。但是與大多數關係數據庫相反,MongoDB並不是設計爲在單個主機上運行。它旨在設置爲多個碎片集羣,其中每個碎片都是多個服務器的副本集(可選地位於不同的地理位置)。

事務可能會影響數據庫的大量主機。這意味着交易必須在所有這些主機之間進行同步。這意味着相當多的開銷,並且在通過添加更多服務器來增加數據庫的大小時會非常糟糕。

MongoDB FAQ解釋它是這樣的:

的MongoDB不具備傳統的鎖定或回滾複雜的交易支持。 MongoDB旨在實現輕量級,快速和可預測的性能。這與MySQL MyISAM自動提交模型類似。通過保持事務支持非常簡單,MongoDB可以提供更高的性能,特別是對於具有多個數據庫服務器進程的分區或複製系統。