代码之家  ›  专栏  ›  技术社区  ›  jassuncao

在不稳定的网络中保持分布式数据库的同步

  •  15
  • jassuncao  · 技术社区  · 16 年前

    我面临以下挑战:

    我在不同的地理位置有一组数据库,网络可能会出现很多故障(我使用的是蜂窝网络)。我需要保持所有数据库同步,但不需要实时。我正在使用Java,但我可以自由选择任何免费数据库。

    关于如何实现这一目标的任何建议。

    谢谢

    4 回复  |  直到 14 年前
        1
  •  10
  •   SquareCog    16 年前

    我不知道任何数据库会为您提供这种开箱即用的功能;由于需要最终的一致性和冲突解决,这里有很多复杂性(例如,如果网络被分成两半,您将某个值更新为123,而我将另一半的值更新为321,然后网络重新连接,会发生什么情况?)

    你可能得自己滚。

    有关如何实现这一点的一些想法,请查看雅虎PNUTS系统的设计: http://research.yahoo.com/node/2304 http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

        3
  •  4
  •   chenson42    16 年前

    SymmetricDS . SymmetricDS是支持web、独立于数据库的数据同步/复制软件。它使用web和数据库技术在关系数据库之间近乎实时地复制表。该软件设计用于扩展大量数据库,跨低带宽连接工作,并能承受网络中断。

        4
  •  0
  •   David    16 年前

    保持一堆小型数据库的同步是一项相当复杂的任务。有没有可能只拥有一个集中的数据库,让客户端应用程序直接连接到它,或者(我的首选解决方案)编写一些web服务来处理访问/更新数据,而不是拥有一堆客户端数据库?

    我意识到这限制了脱机访问,但您可以使用各种缓存策略(当然,这会让你回到原来的问题。)