我的问题是我不确定该怎么做。我正在考虑建立一个类似的数据库结构(来源):
但是,在研究时我发现有这样的审计包。所以我想知道,有什么优点和缺点?
我的想法是:
SQL 历史:
临:
- 具有特定属性的表的特定来源
- 数据库查看器上的每一行都易于阅读
缺点:
- 更难实施
像 Laravel 审计
临:
- 易于通过 Trait 实现
- 轻松获取历史数据到 Eloquent
缺点:
- 包含所有表的所有可审计更改的单个审计表
- 很难在 DB 查看器上阅读
你会走艰难的路还是只接受包裹?
我会使用该软件包,主要是因为易于使用和配置。
关于你提到的缺点:
首先,我不能说这是一件坏事,因为它可以很容易地将用户与跨不同模型所做的所有更改联系起来。
否则,如果每个模型都有一个审计表(order_audits
, costumer_audits
, ...),您将不得不使用 JOIN 语句来处理简单的事情,例如获取用户在系统上所做的更改总数。
您指出的第二个原因,我假设这是因为某些数据被存储为 JSON。如果是这种情况,您始终可以将存储该数据的列类型从TEXT
转换为JSON
(在文档中介绍)。
好处之一(在支持它的 RDBMS 上)是您可以使用WHERE
JSON 类型列上的语句来应用过滤,并且鉴于 JSON 类型已经存在了一段时间,我敢打赌有数据库查看器可以正确显示数据,而不是有一串JSON。