【问题标题】:Why Envers creates one audit table per table为什么 Envers 为每个表创建一个审计表
【发布时间】:2014-05-23 17:38:33
【问题描述】:

Envers 要求系统中的每个可审计表都有一个审计表。所以如果我想审计 30 个表,我必须有 30 个审计表。从 Can i use only one table for all hibernate envers auditing? 和文档来看,这似乎是唯一可用的选项。

我想知道为什么做出这个决定,而不是只有一个包含存储整个审计信息的元数据的表,或者为什么没有提供这个选项:

1- 这是性能问题吗?

2- 是否有一些场景无法涵盖所有​​审计信息只有一张表?

3- 这只是实现它的最简单方法吗?

4- 其他?

【问题讨论】:

    标签: hibernate hibernate-envers


    【解决方案1】:

    我认为有两个主要原因:

    • 我希望审计表具有清晰的、可供人工浏览的表示形式。虽然可以理解和查询 Envers 直接从 SQL 生成的审计表,但人类很难理解包含来自所有其他表的数据的单个表。

    • 单个表可能会很快变得非常大,从而使管理单个实体的审计变得更加困难。有了单独的实体,情况就很清楚了

    除此之外,我认为这两种解决方案都可能不错,但最终你必须选择一个。

    使用单个表(不同的审计策略)实现 Envers 的功能是可能的,但还没有人这样做。

    【讨论】:

    • 关于第二点,您的意思是为了保持性能而更难管理它?或者以编程方式难以获取信息?您能否详细说明一下,也许举个例子?
    • 从数据库的角度进行管理 - 有时审计只会对某些表变得很大,您可能需要例如在一段时间后截断历史记录,或移动到外部存储。
    猜你喜欢
    • 2015-02-22
    • 2018-09-19
    • 2013-06-28
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2023-04-05
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多