Java 日期版本控制和恢复

Java 日期版本控制和恢复,java,sql-server,sql-server-2008,database-versioning,Java,Sql Server,Sql Server 2008,Database Versioning,我们正在开发一个基于SAAS的应用程序。其中一项要求是记录数据库表中的每次更改,即创建基于日期/时间的数据版本。客户端应该能够恢复到数据的任何版本 我在数据库中有近30个表,数据插入频率是每天通过批量导入添加/更新80000条记录。不过,客户端也可以使用GUI通过表单插入数据(而不是批量导入) 在制定任何实施该要求的策略之前,我希望您能就如何实施该要求提出意见/建议 另一方面,我已经回顾并发现它是一个很好的起点,但我仍然怀疑如何恢复过去的数据 数据库快照是一个很有前途的解决方案,但正如我前面所说

我们正在开发一个基于SAAS的应用程序。其中一项要求是记录数据库表中的每次更改,即创建基于日期/时间的数据版本。客户端应该能够恢复到数据的任何版本

我在数据库中有近30个表,数据插入频率是每天通过批量导入添加/更新80000条记录。不过,客户端也可以使用GUI通过表单插入数据(而不是批量导入)

在制定任何实施该要求的策略之前,我希望您能就如何实施该要求提出意见/建议

另一方面,我已经回顾并发现它是一个很好的起点,但我仍然怀疑如何恢复过去的数据

数据库快照是一个很有前途的解决方案,但正如我前面所说的,这是一个基于SAAS的应用程序,我们将多个客户端数据存储在一个数据库中,快照还将恢复其他客户端的数据


请就如何执行此要求提出任何策略/计划。

如果您计划使用JPA/Hibernate获取数据,您可以给Envers一个机会

Envers是一个JBoss开源项目,用于维护数据库实体的版本。您可以使用
@Audited
注释标记整个表的某些列,以开始跟踪审核历史记录。它通常将所有审核数据存储在具有_auditname的表中。它还提供了查询历史数据的API


有关详细信息,请浏览

我们计划迁移到Spring框架,因此我想我们将使用Hibernate作为ORM。我们主要关心的是关联表中的大量数据,我们还必须对这些数据进行版本转换。其次,将数据还原回任何版本。