SymmetricDS:保留单独的自动增量计数器

时间:2019-06-12 13:37:12

标签: symmetricds

我有一个由SymmetricDS同步的群集。我希望每个服务器的主键范围保持不同。但是,如果我在一台服务器上更改自动增量,则会在另一台服务器上反映出来。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

您正在使用哪个数据库? SymmetricDS将允许并在目标上的MSSQL中插入标识,以便源ID与目标匹配,而不是自动递增。这将使数据库保持同步。我不确定当您说要保留每个服务器的不同范围时要问什么? SymmetricDS不同步范围的种子值,仅同步数据。您是不是偶然要求使用创建表进行加载,这会将源定义从源发送到目标并调整目标种子。

答案 1 :(得分:0)

可以通过增加表示中央节点上这些ID的列的长度来解决此问题。然后,该增加的长度可用于同步图中每个叶节点的唯一前缀。我通过添加自己的实现@GeneratedValue的{​​{1}}实现来解决了这个问题。然后,此过滤器与SymmetricDs引擎打包在一起并在org.jumpmind.symmetric.io.data.writer.DatabaseWriterFilterAdapter文件中注册。过滤器将拦截所有传入的数据行,检查发送方并在其前面添加唯一ID。所有外键都必须做同样的事情。

如果必须将此类数据从中央节点同步回叶节点,则必须创建并注册反向实现,该实现将在将数据发送到叶节点之前剥离前缀。

这听起来很复杂,但实际上并没有,一旦安装就可以很好地工作