我需要在Java应用程序中实现数据库同步,并且我开始使用SymmetricDS,它是一种成熟的工具,可以同步不同的DBMS。
我在SymmetricDS上玩了些游戏,但是我无法满足自己的需求,因此我对这个工具有一些疑问。
首先,我将介绍应用程序的上下文:
开发了一个用Java编写的桌面应用程序(JavaFX 2.0 + H2数据库+ Hibernate),我对Java相当陌生,但是我设法构建了MVC架构并最终完成了独立版本我的应用程序。
现在,我必须在不同计算机上安装的应用程序的多个实例之间进行同步。
我有一个在外部服务器上运行的“主” MySQL数据库,该数据库也将SymmetricDS作为“主”引擎运行。
该应用程序使用H2数据库和ClientSymmetricEngine。
而且我需要在客户端之间同步所有数据。
我设法使用SymmetricDS建立了一个或多或少的功能系统,但是有一些问题:
有没有一种方法可以简单地实现“上次更新获胜”策略,而不是默认情况下使用的“上次同步获胜”策略?
是否存在将SymmetricDS嵌入现有应用程序中的更完整的文档或分步指南?
如何在不使用Spring Framework的情况下扩展对称的拉和推作业(我需要在同步期间冻结应用程序)?
如果我自己清除表:
DATA DATA_EVENT OUTGOING_BATCH INCOMING_BATCH DATA_GAP NODE_HOST_STATS NODE_HOST_CHANNEL_STATS NODE_HOST_JOB_STATS后会怎样处理?几分钟后,即使没有更改要同步,该表也会快速增长,这会使我的应用程序变慢。
谢谢你的阅读。
JBRTRND
有没有一种方法可以简单地实现“上次更新获胜”策略,而不是默认情况下使用的“上次同步获胜”策略?
就在这里:
NEWER_WINS:指示当USE_TIMESTAMP或USE_VERSION检测到冲突时,源或目标将基于具有较新时间戳或更高版本号的哪一方获胜。resolve_row_only列控制是应忽略整个批处理还是仅应冲突的行。
您必须使用USE_TIMESTAMP或USE_VERSION冲突检测,然后使用NEWER_WINS冲突解决策略。
是否存在将SymmetricDS嵌入现有应用程序中的更完整的文档或分步指南?
不,那里没有。您必须自己解决这个问题,甚至最好使用独立服务器。不仅您不需要浪费时间将其集成到您的应用中,而且将来的更新也将是微不足道的。只需下载新版本并替换旧版本即可。
如何在不使用Spring Framework的情况下扩展对称的拉和推作业(我需要在同步期间冻结应用程序)?
SymmetricDS是使用Spring编写的,因此在不进行大量重写的情况下很难使用其他方法进行扩展。如果您使用独立服务器,则无需扩展即可避免使用Spring。
如果我自己清除表:DATA DATA_EVENT OUTGOING_BATCH INCOMING_BATCH DATA_GAP NODE_HOST_STATS NODE_HOST_CHANNEL_STATS NODE_HOST_JOB_STATS,该怎么办?几分钟后,即使没有更改要同步,该表也会快速增长,这会使我的应用程序变慢。
请勿自行清除,只需减少清除工作的时间并减少成功同步代码的生存时间,如下所述:http : //www.symmetricds.org/doc/3.6/user-guide/html- single / user-guide.html#purge-job
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句