【问题标题】:Audit data changes with Debezium使用 Debezium 审计数据更改
【发布时间】:2021-05-30 11:48:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: hibernate-envers debezium audit-trail audit-tables


    【解决方案1】:

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

    对于相同的事务边界要求,如果最终一致性很好,您可以使用Outbox Pattern。还有一个Outbox Event Router SMT 组件是该项目的一部分。

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

    【讨论】:

    • 感谢您的意见。我有后续问题。 1. 我们可以将 Debezium 配置为仅捕获特定表而不是模式中的所有表吗? 2. 有没有提到在生产中使用 Debezium 的客户?
    • 1. Debezium 是可配置的。您可以设置要“复制”的表以及哪些事件(板条箱/读取/更新/删除)。 2. Debezium 已准备好生产。您应该看的是 Kafka 的安装和设置(如果您之前没有经验)。它不是解决所有问题的锤子。
    猜你喜欢
    • 2013-04-24
    • 2021-05-18
    • 1970-01-01
    • 2015-02-15
    • 2011-07-16
    • 2016-12-25
    • 2012-12-16
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多