Hibernate Envers 性能 MySQL

Hibernate Envers performance MySQL

现在我正在尝试选择最合适的方法,以便使用 AWS RDS MySQL 数据库为我的实体实施审计跟踪。

我必须记录所有实体更改,包括发起这些更改的发起者(用户)。主要标准之一是性能。

Hibernate Envers 看起来是最简单、最完整的解决方案,可以非常快速地集成。现在我担心 Envers 引入后性能可能会下降。我看到一些帖子,其中开发人员更喜欢基于数据库触发器的 Audit Trail 方法。

触发器的主要问题是如何获取发起这些更改的发起者(用户)。

根据您的经验,您能否建议 Java/Spring/Hibernate/MySQL(AWS) 的方法以针对历史更改实施审计跟踪。

此外,我们是否有针对 AWS RDS MySQL 数据库基础架构中的 Audit Trail 的任何解决方案?

了解在没有具体证据支持自己的理论的情况下对性能的推测类似于代码的过早优化。这几乎总是在浪费时间。

从简单的数据库角度来看,随着 table 增长到特定限制,是的,它的性能会下降,但通常这主要影响查询,如果 insertion/update 影响较小29=] 已正确编入索引且查询格式正确。

但是许多数据库支持分区作为控制性能问题的一种方式,尤其是在较大的 table 上。这通常涉及跨一组由您创建的分区方案定义的边界分隔 table 的数据。您只需定义最相关的数据,然后尝试将此分区存储在最快的 drives/storage 上,而不太相关、通常较旧的数据存储在较慢的 drives/storage.

您还可以选择将数据库 table 存储在不同的 schemas/tablespaces 中,方法是指定 envers 属性 org.hibernate.envers.default_schema。如果您的数据库支持将模式放在文件系统上的不同数据库文件中,您可以通过允许您的实体 table reads/writes 不影响审计 reads/writes table 来帮助提高性能秒。

我不能说 MySQL 对这些东西的支持,但我知道 MSSQL/Oracle 支持分区非常容易,而且 Oracle 肯定允许跨不同的模式分离数据库文件。