Javers - 使用Javers而不是Envers有什么好处?

问题描述 投票:2回答:2

我正在使用Spring Data REST开发RESTful API。现在进行审计,Spring确实可以选择审计元数据,如created_datemodified_date,但它们不提供实体版本控制。

目前,实体版有两个流行的库,分别是Envers和Javers。我已经查看了两者的比较,但没有关于这个问题的任何文章。

那么使用Javers而不是Envers有什么好处和缺点呢?

spring spring-data-rest hibernate-envers auditing javers
2个回答
4
投票

There are two big difference between JaVers and Envers:

  1. Envers是Hibernate插件。它与Hibernate有很好的集成,但你只能在传统的SQL数据库中使用它。如果您选择NoSQL数据库或SQL但使用其他持久性框架(如JOOQ) - Envers不是一个选项。 相反,JaVers可以与任何类型的数据库和任何类型的持久性框架一起使用。目前,JaVers带有MongoDB和流行SQL数据库的存储库实现。其他数据库(如Cassandra,Elastic)将来可能会被添加。
  2. Envers的审计数据模型是应用程序数据模型的副本。正如文档所说:对于每个被审计的实体,都会创建一个审计表。默认情况下,通过在原始名称中添加_AUD后缀来创建审计表名称。有利的是,您的审计数据接近您的实时数据。 Envers的桌子看起来很熟悉。使用SQL查询它们很容易。 JaVers将自己的Snapshot模型用于审计数据。快照与实时数据分离,JaVers将它们作为具有统一结构的JSON文档保存到单个表(jv_snapshots)。好处?您可以选择存储审计数据的位置。默认情况下,JaVers使用与应用程序相同的数据库,但您可以指向另一个数据库。例如,用于应用程序的SQL和用于JaVers的MongoDB或用于公司中所有应用程序的集中式JaVers数据库)。

阅读此博客文章与完整的JaVers vs Envers比较:qazxsw poi


-1
投票

Enver就像数据库的git。

我不知道Javers,但完整的Envers数据绑定具有以下优点:

  1. 在数据库中创建一个名为REVINFO的表,该表具有时间戳和PK。
  2. 对于每个被审计的实体,都会创建一个卷影副本。 Theese shadow-copies让每个字段都可以为空,PK不是PK。 Theese shadow-copies有一个新字段,表REVINFO表。

这使得Enver可以记录过去在此影子副本中所做的更改。您可以将影子表移动到其他数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.