1

我有一个用例,我想将数据库表数据更改审核到另一个表中以达到合规性目的。首先,应审核对插入/更新/删除等数据的任何更改。我发现了不同的选项,例如JaVersHibernate EnversDatabase triggersDebezium

我避免使用 JaVers 和 Hibernate Envers,因为这不会捕获通过直接 SQL 查询发生的任何数据更改以及通过其他应用程序发生的任何数据更改。我看到的另一个问题是我们需要将与审计相关的代码添加到同一事务边界中的主应用程序代码中。

我也避免使用数据库触发器,因为我们根本没有在任何部署中使用触发器。

然后我带着很有希望的 Debezium 离开了。但是,我唯一担心的是我们需要使用 Kafka 来利用 Debezium。如果主表和审计表都位于同一个数据库实例中,是否需要使用 Kafka 才能使用 Debezium?

4

1 回答 1

0

Debezium 非常适合审计,但鉴于它是源连接器,它仅代表用例中数据管道的一部分。您将捕获每个表更改事件(c=create、r=read、u=update、d=delete),将其存储在 Kafka 主题或本地磁盘上,然后您需要一个 Sink 连接器(即 Camel Kafka SQL 或 JDBC、kafka -connect-jdbc) 插入到目标表中。

对于相同的事务边界要求,如果最终一致性很好,您可以使用发件箱模式。项目中还有一个发件箱事件路由器 SMT组件。

请注意,Debezium 也可以嵌入在独立的 Java 应用程序中运行,将偏移量存储在本地磁盘上,但是您会失去 KafkaConnect 以分布式模式运行所提供的 HA 功能。使用嵌入式模式,您还可以从配置驱动的方法切换到代码驱动的方法。

于 2021-03-01T07:13:22.860 回答