有关SymmetricDS Embedded的一些问题

jbr*_*rnd 4 java synchronization symmetricds

我需要在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

Bor*_*vić 5

有没有一种方法可以简单地实现“上次更新获胜”策略,而不是默认情况下使用的“上次同步获胜”策略?

就在这里:

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