2015-12-25 104 views
0

因此,我正在研究MongoDB,以符合高層管理層決定採用開放源代碼並將現有產品數據庫從SQL Server遷移到MongoDB並重新整理所有內容。請注意,我們的數據庫應該集中在數據一致性交易保證mongodb中的交易保證

而我發現這個職位:Click here。後的總結如下:

MongoDB中聲稱自己是堅決一致的,但很多證據 最近已經表明這不是在某些情況下的情況下(當 網絡分區時,它可以發生在重負荷下)。這個 意味着你可能會丟失MongoDB有 確認爲「成功寫入」的記錄。

在應用程序方面,如果你有一個需要有交易 保證(這意味着如果你不能讓一個持久的寫,需要 交易失敗),你應該避免的MongoDB。需要強一致性和耐久性的示例場景 包括「使 存入銀行賬戶」或「創建出生記錄」。換而言之,如果您指示操作成功並且 沒有,那麼您可以通過其他方式將 換成其他方式,在這種情況下,您的客戶可能會在 表面遭到打孔。

所以,我的問題是如下:
1)在何種擴展呢「數據丟失」在MongoDB中的當前版本是否仍然有效?
2)可以採取什麼方法來確保MongoDB中的交易保證?

我很確定,如果像PayPal這樣的公司使用MongoDB,肯定有辦法克服這些問題。

回答

1

在該職位的引用都被這裏討論之前(例如,這裏是一個:MongoDB: Does Write Concern guarantee the write on primary plus atleast one secondary)。無需重複您的問題。 「Aphyr」博客大多使用這些文章來宣傳自己的技術(如果你閱讀整個博客,你會意識到他們有自己的市場數據庫)。他們顯示的每個數據庫都會丟失除自己以外的數據

2)在MongoDB中可以採取什麼方法來保證事務性保證?

我同意你應該在客戶端代碼中處理數據庫問題,如果不是,那麼你的客戶端在分區事件中會如何保持一致?

既然你是不是哈利·波特(你好嗎?)我會說,你需要檢查你的客戶端代碼拋出的異常,並根據需要做反應。

1)在當前版本的MongoDB中,「丟失的數據」仍然有效嗎?

至於他在2.4.3中提到的錯誤:他失敗了(正如我在鏈接的文章中提到的)再次聲明錯誤引用,但仍然沒有評論。

除了2中寫道:6000?這比在分區上的MySQL中看到的數據丟失少!所以不要太簡單。

我沒有在自己的應用程序注意到了這種行爲,並從小型到非常大的網站,我還沒有發現任何人複製爲顯示的文章中標杆型的情況,我很懷疑你會的。

我很確定,如果像PayPal這樣的公司使用MongoDB,肯定有辦法克服這些問題。

他們將有嚴格的編碼,以確保在分佈式環境中的一致性。

當然,他們會從選擇合適的技術開始......

0

寫入關注參考

寫擔憂介紹從MongoDB的請求寫入操作獨立的mongod或副本集或分片集羣承認的水平。在分片簇中,mongos實例會將寫入關注傳遞給分片。

https://docs.mongodb.org/v3.0/reference/write-concern/

+0

這是如何回答這個問題的?你所做的一切都是引用文檔,甚至沒有解釋它是如何應用的 – Sammaye