Laravel 可审核历史表 - SQL 历史或审核包的优缺点?
Laravel Auditable History Tables - Pro & Cons of SQL History or an auditing package?
我的问题是我不确定该怎么做。我正在考虑构建类似这样的数据库结构 (source):
然而,在研究过程中我发现有像 this 这样的审计包。所以我想知道,利弊是什么?
我的想法是:
SQL 历史:
临:
- 具有特定属性的表的特定来源
- 数据库查看器上的每一行都易于阅读
缺点:
- 更难实施
喜欢Laravel审核
临:
- 易于通过 Trait 实现
- 轻松获取历史数据到Eloquent
缺点:
- 单一审核 table 包含所有 tables
的所有 auditable 更改
- 难以在数据库查看器上阅读
你是走硬路还是直接拿包裹?
我会使用这个包,主要是因为易于使用和配置。
关于你提到的缺点:
- 单一审核 table 包含所有 tables
的所有 auditable 更改
- 难以在数据库查看器上阅读
首先,我真的不能说这是一件坏事,因为它可以很容易地将用户与跨不同模型所做的所有更改联系起来。
否则,如果您对每个模型(order_audits
、costumer_audits
、...)进行审核 table,则必须使用 JOIN 语句来处理简单的事情,例如获取例如,用户在系统上所做的更改总数。
你指出的第二个原因,我假设是因为一些数据被存储为 JSON。如果是这种情况,您始终可以将存储该数据的列类型从 TEXT
转换为 JSON
(在 documentation 中介绍)。
其中一个好处(在支持它的 RDBMS 上)是,您可以在 JSON 类型的列上使用 WHERE
语句来应用过滤,并且给定 JSON 类型大约有一段时间,我敢打赌有数据库查看器可以正确显示数据,而不是 JSON.
的字符串
我的问题是我不确定该怎么做。我正在考虑构建类似这样的数据库结构 (source):
然而,在研究过程中我发现有像 this 这样的审计包。所以我想知道,利弊是什么?
我的想法是:
SQL 历史:
临:
- 具有特定属性的表的特定来源
- 数据库查看器上的每一行都易于阅读
缺点:
- 更难实施
喜欢Laravel审核
临:
- 易于通过 Trait 实现
- 轻松获取历史数据到Eloquent
缺点:
- 单一审核 table 包含所有 tables 的所有 auditable 更改
- 难以在数据库查看器上阅读
你是走硬路还是直接拿包裹?
我会使用这个包,主要是因为易于使用和配置。
关于你提到的缺点:
- 单一审核 table 包含所有 tables 的所有 auditable 更改
- 难以在数据库查看器上阅读
首先,我真的不能说这是一件坏事,因为它可以很容易地将用户与跨不同模型所做的所有更改联系起来。
否则,如果您对每个模型(order_audits
、costumer_audits
、...)进行审核 table,则必须使用 JOIN 语句来处理简单的事情,例如获取例如,用户在系统上所做的更改总数。
你指出的第二个原因,我假设是因为一些数据被存储为 JSON。如果是这种情况,您始终可以将存储该数据的列类型从 TEXT
转换为 JSON
(在 documentation 中介绍)。
其中一个好处(在支持它的 RDBMS 上)是,您可以在 JSON 类型的列上使用 WHERE
语句来应用过滤,并且给定 JSON 类型大约有一段时间,我敢打赌有数据库查看器可以正确显示数据,而不是 JSON.