[英]Keeping distributed databases synchronized in a unstable network
我面臨以下挑戰:
我在不同的地理位置有一堆數據庫,網絡可能會失敗很多(我使用的是蜂窩網絡)。 我需要保持所有數據庫同步,但不需要實時。 我正在使用Java,但我可以自由選擇任何免費數據庫。
關於如何實現這一點的任何建議。
謝謝。
這是一個非常成熟的研究領域的問題(人們顯然沒有意識到)。 我建議如果不是絕對必要的話, 不要重新發明一個有缺陷的,有缺陷的輪子(例如,允許一個簡單的解決方案這么特殊的要求)。
一些關鍵字: 復制 , 移動DBMS , 分布式斷開連接的DBMS 。
這些研究論文也是相關的(作為該研究領域的一個例子):
... 等等。
我不知道有任何數據庫可以為您提供開箱即用的功能; 這里存在很多復雜性,因為需要最終的一致性和沖突解決方案(例如,如果網絡被分成兩半,會發生什么,並且當我將另一半更新為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.