2013-03-12 41 views

回答

6

完整的單服務器耐久性是ACID範例的一部分,更具體地說;耐用性(http://en.wikipedia.org/wiki/ACID#Durability)。

它要求如果服務器在單個服務器環境中出現故障,它將不會丟失數據或損壞。

由於延遲寫入日誌和磁盤的本質,MongoDB只部分遵守ACID的持久性規則。儘管此窗口很小(如60毫秒),但在單個服務器環境中仍有很小的可能性會丟失一些操作,除非您在應用程序中使用日記確認寫入。

如果日誌確認寫入失敗,您將能夠重播日誌以確保唯一的操作失敗將是那些在失敗之前無法到達服務器的操作。

如果在沒有日誌確認寫入的情況下發生故障,可能會在60毫秒的時間內丟失所有操作,您應該確定這對您是否意味着什麼;在單個服務器環境中,您的網站可能太小而無法關注tbh。

+0

我不知道日記確認選項的存在。很高興知道。感謝:) – Srik 2013-03-12 09:43:27

+0

因此,有了這個SSD功能,它是否像複製數據自動發生,以保持耐用性? – Srik 2013-03-12 09:52:12

+0

@SrikarA該日誌更像是一個日誌。它包含一系列針對數據庫的操作,並會理解某些操作未完成等,並且能夠將數據庫重置爲一致狀態(http://en.wikipedia.org/wiki/Journaling_file_system)。它不像交易那麼好,但它仍然很好。只有添加副本集時纔會發生數據複製。 – Sammaye 2013-03-12 09:55:53

1

這意味着獨奏服務器(不是複製集的一部分)至少提供了一些保證以持久的方式保存數據。在引入此功能之前,您必須使用副本集來確保如果服務器發生故障,它不會丟失數據。