我正在使用Spring Data REST开发RESTful API。现在进行审计了,Spring确实可以选择审计诸如created_date
和modified_date
之类的元数据,但是它们不提供实体版本控制。
当前,实体版本有两个流行的库,分别是Envers和Javers。我已经寻找了两者的比较,但是没有关于此事的任何文章。
那么,使用Javers over Envers有什么优点和缺点?
最佳答案
JaVers和Envers之间有两个大区别:
它与Hibernate集成良好,但是您只能将其与传统SQL数据库一起使用。
如果您选择NoSQL数据库或SQL但具有其他持久性框架,例如
JOOQ —不能选择Envers。
相反,JaVers可以与任何类型的数据库和任何类型的数据库一起使用
持久性框架。目前,JaVers随附了MongoDB和
流行的SQL数据库。将来可能会添加其他数据库(如Cassandra,Elastic)。
对于每个被审核实体,都会创建一个审核表。
默认情况下,审计表名称是通过在原始名称后添加
_AUD
后缀来创建的。如果审核数据离实时数据很近,这可能是一个优势。 Envers的表格看起来很熟悉。
使用SQL查询它们很容易。
JaVers使用其自己的快照模型来审核数据。
快照与实时数据脱钩,
JaVers将它们作为具有统一结构的JSON文档保存到单个表(
jv_snapshots
)中。好处?您可以选择存储审核数据的位置。
默认情况下,JaVers使用与应用程序相同的数据库,
但您可以指向另一个数据库。例如,用于应用程序的SQL和用于JaVers的MongoDB
或为公司中所有应用程序共享的集中式JaVers数据库)。
阅读此博客文章,并进行JaVers与Envers的完整比较:
https://javers.org/blog/2017/12/javers-vs-envers-comparision.html
关于spring - Javers-使用Javers而不是Envers有什么优势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46077069/