Postgresql

NoSQL 中的並發性

  • April 14, 2017

我正計劃編寫一個網路應用程序,使用者可以在其中從賣家那裡購買物品。此外,我想外包付款,這樣我就不必自己處理付款流程。我想知道以下場景如何在像 MongoDB 這樣的 NoSQL 數據庫中執行?

  • 如果使用者購買了一個對象,但同時賣家刪除了該對象,因為他不想再出售它,會發生什麼?
  • 如何在像 MongoDB 這樣的 NoSQL 數據庫中處理它?
  • 還是我必須在應用程序級別進行?

我看到一個大型旅遊公司使用 MongoDB 的例子,所以我的猜測是這樣的場景應該可以修復,我只是不知道如何解決。我應該堅持使用像 PostgreSQL 這樣的 SQL 數據庫嗎?

我建議您先閱讀以下有關 MongoDB 的文件。對於這樣的論壇來說,這是一個非常廣泛的問題。除非有人詳細分析您的應用需求,否則無法給出準確的答案。

在 MongoDB 中,ACID 屬性廣泛適用於單個文件,而不適用於多文件。

MongoDB 是否支持 ACID 事務?

是的,但在有限的意義上。MongoDB 支持文件級別的 ACID 事務;今天 MongoDB 不支持多文件事務。對於許多(但不是所有)應用程序來說,這已經足夠了,因為記錄的數據往往作為單個文件進行管理。與大多數數據庫一樣,MongoDB 使用預寫日誌記錄到磁碟日誌以保證寫入操作的持久性並提供崩潰恢復能力。

MongoDB 的分佈式特性需要在 ACID 之外額外考慮一致性和可用性。MongoDB 自動維護副本集,多個數據副本分佈在伺服器、機架和數據中心以實現高可用性(請參閱 MongoDB 如何確保高可用性?) MongoDB 強一致性:預設情況下,所有讀取和寫入都應用於主成員. (請參閱 MongoDB 如何確保一致性?)寫入操作會自動應用於所有副本集成員。您可以將每次寫入配置為在主節點、多個集合成員、大多數集合成員或所有成員成功後返回。讀取可以應用於主要成員,如果主要成員不可用,則可以應用於輔助成員,專門用於特定成員(用於工作負載隔離),或根據 ping 距離到最近的輔助節點。您可以配置讀取和寫入以實現應用程序所需的一致性和可用性。

在此處閱讀有關並發的更多資訊。

引用自:https://dba.stackexchange.com/questions/171011