我正在使用 Spring Data REST 开发 RESTful API。现在对于审计,Spring 确实可以选择审计元数据,例如created_date
and modified_date
但他们不提供实体版本控制。
目前实体版本有两个流行的库,分别是Envers和Javers。我查看了两者的比较,但没有任何关于此事的文章。
那么使用 Javers 相对于 Envers 有哪些优点和缺点呢?
JaVers 和 Envers 之间有两个很大的区别:
-
Envers 是 Hibernate 插件。
它与 Hibernate 具有良好的集成,但您只能将其与传统 SQL 数据库一起使用。
如果您选择 NoSQL 数据库或 SQL,但使用其他持久性框架,例如JOOQ https://www.jooq.org/——恩弗斯不是一个选择。
相反,JaVers 可以与任何类型的数据库和任何类型的应用程序一起使用。
持久化框架。目前,JaVers 附带了 MongoDB 和
流行的 SQL 数据库。将来可能会添加其他数据库(如 Cassandra、Elastic)。
-
Envers 的审计数据模型是应用程序数据模型的副本。正如医生所说:对于每个审计实体,都会创建一个审计表。
默认情况下,审计表名称是通过添加_AUD
原名称的后缀。这可能是一个优势,您拥有接近实时数据的审计数据。恩弗斯的桌子看起来很熟悉。
使用 SQL 查询它们很容易。
JaVers 使用自己的快照模型来审计数据。
快照与实时数据分离,
JaVers 将它们保存到单个表中 (jv_snapshots
)作为具有统一结构的JSON文档。
优点?您可以选择存储审核数据的位置。
默认情况下,JaVers 使用与应用程序相同的数据库,
但你可以指向另一个数据库。例如,用于应用程序的 SQL 和用于 JaVers 的 MongoDB
或为公司中的所有应用程序共享的集中式 JaVers 数据库)。
阅读这篇博文,其中包含 JaVers 与 Envers 的完整比较:https://javers.org/blog/2017/12/javers-vs-envers-comparison.html https://javers.org/blog/2017/12/javers-vs-envers-comparision.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)