2010-11-30 43 views
2

我很好奇用於構建確保沒有數據丟失的系統的技術是最重要的。舉一個簡單的例子,金融機構做什麼來確保在賬戶之間轉移資金時,一旦從一個賬戶中提取資金,毫無疑問就會將其存入另一個賬戶。我並不是在尋找諸如數據庫事務這樣的特殊技術,而是尋找更大,更體系結構的概念,比如如果服務器關閉或者隊列用完空間或者其他什麼時,數據如何保存。永不丟失數據技術

如果有人能指點我的書籍或文章,我會非常感激。

+0

此問題可能更適合http://serverfault.com/ – 2010-11-30 21:30:54

+0

我認爲在這些情況下,交易應該回滾。我認爲這個東西可能屬於「兩階段承諾」 ,這是交叉> = 2系統的交易,而不是100%確定... – FrustratedWithFormsDesigner 2010-11-30 21:31:48

回答

0

基本技巧是消除任何單點故障。任何在您的設置中可能會失敗的情況都需要備份或多個備份。從多臺交換機,服務器,UPS,硬盤驅動器等......數據庫不斷被複制,數據備份和存儲在異地,以防發生火災或其他可能會損壞建築物的災難。

0

它可以真正歸結爲在兩個地方有相同的數據;從下到在數據提交之前持有緩存的代碼,一直到服務器冗餘。

確保您不會丟失東西的唯一方法是獲得多份副本。

0

您可能想了解XA或X/Open事務,這些事務可以將多個系統(包括數據庫,隊列等)協調爲ACID類似DB的事務。

我還沒有使用它,但我聽說它可能是昂貴的延遲明智和計算。但是,您的數據完整性又值多少錢?

http://en.wikipedia.org/wiki/X/Open_XA

0
在銀行例子中

,各銀行將保持記錄的每一筆交易,說明什麼多少,並在那裏和從那裏多少,以及他們的時間順序

這樣以後如果你比較兩個事務日誌的一個問題,如果他們不匹配,你可以找出丟失的交易

這也涵蓋了一個銀行不能信任另一個記錄保留它

問題

,因爲他們交叉檢查這幾乎是一個分佈式的交易協議

0

正如你所指,有各種機制(如交易),以確保基於「握手」的軟件是可靠的,併成功完成。

建築上 - 是的有兩個副本的東西給你redundencey,這有助於不丟失的東西。除此之外:

  • 清除流程:人們需要知道信息的確切位置 - 無論是在陽光明媚的日子裏,還是在棕色的東西打到粉絲身上。擁有數據但無法找到它或識別它與損失它一樣糟糕。更清晰(且有據可查)的流程更好。
  • 一致性:自動化顯然更好,隨機的人爲錯誤。
  • 要專門回答你的問題 - 但上述觀點應該在體系結構和設計中得到迴應,這種體系結構和設計清晰明確,並且明確分開了擔憂。
  • 儘可能減少故障點。
  • 重點關注高風險領域。
  • 使用成熟的技術(我想這就是你實際要求的)。
  • 讓事情儘可能簡單。

我一直在爲現成的文檔管理系統解決方案架構,沒有數據丟失是最重要的驅動因素。該系統在全國範圍內推出,因此在用於爲當地用戶提供服務的「區域」緩存和實際的「數據中心」方面實現了多地點。感興趣的幾點:

  • 所有組件(如果可能)被部署到虛擬盒,這是背版到SAN,所以IUN一個肌肉發展主機的情況下下降,我們可以更快地恢復服務。就數據丟失而言,這意味着如果系統關閉,用戶更有可能使用受保護的系統,而不是在本地存儲東西。
  • 另外,SAN被認爲比本地磁盤更安全。
  • 以上是現有設置的一部分,所以Ops無需學習。
  • 故障切換站點,帶有複製。這不是實時的,而是由數據庫上的事務日誌增強的。

我想這一切都不是嚴重軟件中心,但我認爲所有好的軟件架構/設計原則「我們」使用幫助指導我的思想。