我们有Progress OpenEdge数据库和PostgreSQL,如果Progress数据库中的表数据发生变化,那么我们必须在PostgreSQL数据库中进行相同的操作。
wfveoks01#
世上没有银,但只要稍加努力,你就能做到:Progress有一个可选产品,称为“CDC”,用于Change Data Capture,它允许您检测更改的数据,记录更改,然后使用自己的逻辑导出数据。您需要OpenEdge 11.7或更高版本才能运行它。https://www.progress.com/openedge/components/openedge-change-data-capture?&utm_source=google&utm_medium=cpc&utm_campaign=progress-openedge-cdc-search&gclid=Cj0KCQiAno_uBRC1ARIsAB496IXd6R1acqLMF2lM53Z1tjIFk-ON1J86lAnhkngoJzhKVQW2X-9zHkQaAq92EALw_wcB&gclsrc=aw.ds还有一个相关的产品叫做Pro2,但我不相信它支持PostgresSQL作为目标(尽管我可能错了)。如果你不想走这条路,那么你需要实现一些类似的复制触发器(Pro2最初是基于复制触发器的,现在仍然可以使用它们)。不需要额外的许可证,它们在任何现代版本中都可以使用。但是你必须“滚动你自己的”逻辑,而且工作量会更大。第三种选择是破坏审计子系统,您更改的数据可能是审计事件,您可以编写一些逻辑从审计日志中提取更改的数据。
vnzz0bqm2#
考虑在Progress数据库中实现CDC,然后使用某种消息传递系统将更改从该数据库流式传输到目标数据库(在本例中为PostgreSQL)。我用Kafka和Confluent平台创建了一些类似于Progress OpenEdge和AWS Redshift的东西。这不是一个微不足道的工作,但它运行得很好。在这个场景中,你可以在源Progress数据库中启用OpenEdge CDC,然后在你想要跟踪更改的表上创建一些SQL视图。然后你可以设置Kafka Connect来使用JDBCSourceConnector查询这些视图,只是为了使用JDBCSinkConnector to PostgreSQL将这些视图中的消息接收到你的目标数据库。任何ETL操作都可以使用KSQL环境来处理。有关如何将数据从OpenEdge流式传输到Kafka,请参阅这篇进度文章:https://www.progress.com/tutorials/jdbc/streaming-your-data-from-openedge-to-kafka
2条答案
按热度按时间wfveoks01#
世上没有银,但只要稍加努力,你就能做到:
Progress有一个可选产品,称为“CDC”,用于Change Data Capture,它允许您检测更改的数据,记录更改,然后使用自己的逻辑导出数据。
您需要OpenEdge 11.7或更高版本才能运行它。
https://www.progress.com/openedge/components/openedge-change-data-capture?&utm_source=google&utm_medium=cpc&utm_campaign=progress-openedge-cdc-search&gclid=Cj0KCQiAno_uBRC1ARIsAB496IXd6R1acqLMF2lM53Z1tjIFk-ON1J86lAnhkngoJzhKVQW2X-9zHkQaAq92EALw_wcB&gclsrc=aw.ds
还有一个相关的产品叫做Pro2,但我不相信它支持PostgresSQL作为目标(尽管我可能错了)。
如果你不想走这条路,那么你需要实现一些类似的复制触发器(Pro2最初是基于复制触发器的,现在仍然可以使用它们)。不需要额外的许可证,它们在任何现代版本中都可以使用。但是你必须“滚动你自己的”逻辑,而且工作量会更大。
第三种选择是破坏审计子系统,您更改的数据可能是审计事件,您可以编写一些逻辑从审计日志中提取更改的数据。
vnzz0bqm2#
考虑在Progress数据库中实现CDC,然后使用某种消息传递系统将更改从该数据库流式传输到目标数据库(在本例中为PostgreSQL)。
我用Kafka和Confluent平台创建了一些类似于Progress OpenEdge和AWS Redshift的东西。这不是一个微不足道的工作,但它运行得很好。
在这个场景中,你可以在源Progress数据库中启用OpenEdge CDC,然后在你想要跟踪更改的表上创建一些SQL视图。然后你可以设置Kafka Connect来使用JDBCSourceConnector查询这些视图,只是为了使用JDBCSinkConnector to PostgreSQL将这些视图中的消息接收到你的目标数据库。任何ETL操作都可以使用KSQL环境来处理。
有关如何将数据从OpenEdge流式传输到Kafka,请参阅这篇进度文章:https://www.progress.com/tutorials/jdbc/streaming-your-data-from-openedge-to-kafka