java - 关于SymmetricDS Embedded的一些问题

标签 java synchronization symmetricds

我需要在 Java 应用程序中实现数据库同步,我开始使用 SymmetricDS,这是一个成熟的工具,允许同步不同的 DBMS。

我对SymmetricDS玩了一点,但我无法实现我的需求,所以我对这个工具有一些疑问。

首先,我将公开应用程序的上下文:
我开发了一个用 Java(JavaFX 2.0 + H2 数据库 + Hibernate)编写的桌面应用程序,我对 Java 相当陌生,但我设法构建了一个 MVC 架构,并最终完成了我的应用程序的独立版本。
现在,我必须在安装在不同计算机上的应用程序的多个实例之间进行同步。
我有一个在外部服务器上运行的“主”MySQL 数据库,它也将 SymmetricDS 作为“主”引擎运行。
应用程序使用H2 数据库和ClientSymmetricEngine。
而且我需要在客户端之间同步所有数据。

我设法使用 SymmetricDS 设置了一个或多或少的功能系统,但有一些症结所在:

  • 有没有一种方法可以简单地实现“最后更新优先”策略,而不是默认使用的“最后同步优先”策略?

  • 是否有更完整的文档或分步指南来将 SymmetricDS 嵌入现有应用程序?

  • 如何在不使用 Spring Framework 的情况下扩展对称拉取和推送作业(我需要在同步期间卡住应用程序)?

  • 如果我自己清除表会发生什么:
    数据 数据事件 OUTGOING_BATCH 批处理 INCOMING_BATCH 数据间隙 NODE_HOST_STATS NODE_HOST_CHANNEL_STATS NODE_HOST_JOB_STATS 每次成功推/拉后?即使没有要同步的更改,此表也会在几分钟后快速增长,这会使我的应用程序变慢。

感谢阅读。
JBRTRND

最佳答案

Is there a way to simply implement the "last update wins" strategy instead of the "last sync wins" used by default?

是的,有:

NEWER_WINS: Indicates that when a conflict is detected by USE_TIMESTAMP or USE_VERSION that the either the source or the target will win based on the which side has the newer timestamp or higher version number. The resolve_row_only column controls whether the entire batch should be ignore or just the row in conflict.

您必须使用 USE_TIMESTAMP 或 USE_VERSION 冲突检测,然后使用 NEWER_WINS 冲突解决策略。

Is there a more complete documentation or step-by-step guide to embed SymmetricDS in an existing application?

不,没有。你必须自己想办法,或者最好使用独立服务器。不仅您不需要浪费时间将其集成到您的应用程序中,而且 future 的更新也将变得微不足道。只需下载新版本并替换旧版本即可。

How I can extend symmetrics pull and push jobs without using Spring Framework (i need to freeze the application during synchronisation)?

SymmetricDS 是使用 Spring 编写的,因此如果不进行大的重写,将很难使用其他东西进行扩展。如果您使用独立服务器,则无需扩展它来避免使用 Spring。

What happens if I purge by myself the tables: DATA DATA_EVENT OUTGOING_BATCH INCOMING_BATCH DATA_GAP NODE_HOST_STATS NODE_HOST_CHANNEL_STATS NODE_HOST_JOB_STATS after each a success push/pull ? This table grows quickly after a few minutes even if there is no changes to sync and this makes my application slow.

不要自己清除,只需减少清除作业的周期并减少成功同步代码的生存期,如下所述:http://www.symmetricds.org/doc/3.6/user-guide/html-single/user-guide.html#purge-job

关于java - 关于SymmetricDS Embedded的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25782953/

相关文章:

SymmetricDS:相互同步客户端节点

java - 在具有 Java 扩展的 SymmetricDS 中使用后备同步 URL

java - Spring事务回滚不起作用

java - hibernate hbm2ddl.auto 默认值

java - 在与外部同步相同的对象上进行内部同步

mysql - Symmetricds:迁移或同步期间是否可以转换数据?

java - 为什么会出现Permgen OutOfMemoryError?

java - 检测静音通过语音获取用户输入

rest - RESTful 数据同步方法

c++ - 使 TBB 管道过滤器超时