java—在系统中查找增量更改的方法

cwxwcias  于 2021-07-09  发布在  Java
关注(0)|答案(4)|浏览(175)

我们有一个以postgres为数据库的基于java的系统。出于某些原因,我们希望及时(比如1小时)将某些更改传播到不同的位置。两种广泛的方法是
在发生这种情况时将所有更改记录到文件中。但是,这种方法会将代码分散到任何地方。
在一些日志文件中找到postgres中两个时间戳之间的增量变化并发送。然而,我不确定这种方法是否可行。
有人对此有什么想法/想法吗?

yjghlzjz

yjghlzjz1#

有几种不同的选择:
根据写入的数据量,您可以尝试使用bucardo。
否则,也可以将pgq与londiste结合使用
或者使用触发器自己创建一些东西,以便生成某种审计表

c86crjj0

c86crjj02#

有许多预先打包的方法,所以您可能不需要开发自己的方法。许多选项在此wiki页面上进行了总结和比较:
http://wiki.postgresql.org/wiki/replication、\u群集、\u和\u连接\u池
其中许多都是基于使用触发器来捕获数据,并基于更友好的用户界面自动生成触发器。

kwvwclae

kwvwclae3#

我建议不要写自己的解决方案,而是利用别人已经完成的工作。在你描述的情况下,我会选择pgq+londiste(两者都是skytools包的一部分),它们很容易设置和使用。如果您不希望流式复制,您仍然可以使用pgq/londiste轻松捕获dml,并将它们写入到需要时可以加载的文件中。这将允许您在出现新需求时扩展设置/处理。

xcitsw88

xcitsw884#

如果数据库大小不是很大,您可以通过以下方法快速完成:
将整个postgresql转储到文本文件。
(如果转储文件未排序*1)排序文本文件。
使用上一个转储文件创建一个diff文件。
当然,我只建议在这样一种情况下使用它,即您的数据库将保持相对较小,而您只将它用于几个服务器。

  • 1:我不知道有没有分类,查一下文件。

相关问题