【问题标题】:Date versioning and restoring日期版本控制和恢复
【发布时间】:2012-03-10 15:42:25
【问题描述】:

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

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

在制定实施此要求的任何策略之前,我希望您能就如何实施此要求提供 cmets/建议。

顺便说一句,我查看了this blog post,发现它是一个很好的起点,但我仍然怀疑如何恢复过去的数据。

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

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

【问题讨论】:

    标签: java sql-server sql-server-2008 database-versioning


    【解决方案1】:

    如果您打算使用 JPA/Hibernate 来获取数据,可以试试 Envers。

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

    详情请至http://www.jboss.org/envers

    【讨论】:

    • 我们计划迁移到 Spring 框架,所以我想我们将使用 Hibernate 作为 ORM。我们主要关心的是关联表中的大量数据,我们也必须对其进行版本化。其次,将数据恢复到任何版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2014-06-14
    相关资源
    最近更新 更多