簡體   English   中英

保持分布式數據庫在不穩定的網絡中同步

[英]Keeping distributed databases synchronized in a unstable network

我面臨以下挑戰:

我在不同的地理位置有一堆數據庫,網絡可能會失敗很多(我使用的是蜂窩網絡)。 我需要保持所有數據庫同步,但不需要實時。 我正在使用Java,但我可以自由選擇任何免費數據庫。

關於如何實現這一點的任何建議。

謝謝。

這是一個非常成熟的研究領域的問題(人們顯然沒有意識到)。 我建議如果不是絕對必要的話, 不要重新發明一個有缺陷的,有缺陷的輪子(例如,允許一個簡單的解決方案這么特殊的要求)。

一些關鍵字: 復制移動DBMS分布式斷開連接的DBMS

這些研究論文也是相關的(作為該研究領域的一個例子):

  1. 分布式斷開數據庫

... 等等。

我不知道有任何數據庫可以為您提供開箱即用的功能; 這里存在很多復雜性,因為需要最終的一致性和沖突解決方案(例如,如果網絡被分成兩半,會發生什么,並且當我將另一半更新為321時,將某些內容更新為值123,然后網絡重新連接?)

你可能需要自己動手。

有關如何執行此操作的一些想法,請查看Yahoo PNUTS系統的設計: http ://research.yahoo.com/node/2304和Amazon的Dynamo: http//www.allthingsdistributed.com/2007/10/amazons_dynamo html的

查看SymmetricDS SymmetricDS是基於Web的,與數據庫無關的數據同步/復制軟件。 它使用Web和數據庫技術近乎實時地在關系數據庫之間復制表。 該軟件旨在擴展到大量數據庫,可在低帶寬連接上工作,並可承受網絡中斷期。

我不知道您的要求或您的應用程序,但這不是一個快速回答的問題類型。 我很想知道別人怎么說。 但是,根據您的要求和情況,我有可能或可能不適合您的建議。 特別是,如果您的用戶即使在網絡不可用時也需要使用該應用程序(離線訪問),這將無濟於事。

保持一堆小型數據庫同步是一項相當復雜的任務,可以正確完成。 是否有可能只有一個集中式數據庫,或者讓客戶端應用程序直接連接到它或(我的首選解決方案)編寫一些Web服務來處理訪問/更新數據而不是擁有一堆客戶端數據庫?

我意識到這限制了離線訪問,但您可以使用各種緩存策略。 (當然,這會引導您回到原來的問題。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM