代码之家  ›  专栏  ›  技术社区  ›  Jake Wharton

所有本地修改过的数据库在哪里?

  •  12
  • Jake Wharton  · 技术社区  · 16 年前

    我已经阅读了所有的SO问题、编写恐怖代码的文章,并在谷歌上搜索了修改控制数据的最佳方法。它们都可以工作,并且都有基于用例的适当实现,等等。我真正想知道的是,为什么数据库没有被写成本地支持数据级的修订?

    我感到困惑的是,API实际上已经在事务中就位了。我们启动一个事务,更改一些数据,以及 犯罪 . 我们也在对数据库进行身份验证,因此存在责任。我的公司存储整个数据库的月末版本,用于会计目的,相当于标记。这不是在尖叫吗?

    在模式方面,分支是数据库可以从中获益的,而不是数据。因为我真的只关心数据,这会在很大程度上增加实现的难度,所以我只关注标签和提交。

    现在,我知道数据库是非常关键的应用程序,所以任何不必要的开销都不会被忽略,一些数据库是史诗级的巨大,修订版只会使这个大小成倍增长。对于每个表,选择性修订控制无疑在中小型环境中有一席之地,在中小型环境中有毫秒的空闲时间,数据历史具有一定的重要性。我想要提交,我想要日志,我想要回复,我想要差异,我想要责备,我想要标签,我想要签出。我要修改控制。

    我有个问题要问…

    4 回复  |  直到 16 年前
        1
  •  3
  •   APC    16 年前

    一个本机解决方案是Oracle的 Flashback Database (aka Total Recall) . 它是企业版的额外收费,但它很酷。它透明地存储数据的版本,只要我们想保留它,并提供查询旧版本数据的语法。可以逐表启用。

    本质上,闪回数据库类似于使用触发器将记录存储在跟踪表中,但光滑、性能良好,正常工作时不可见。

        2
  •  3
  •   Bill Karwin    16 年前

    你可以读到 temporal databases .

    "Temporal Data & the Relational Model" 到达文和洛伦佐斯,作者介绍了 sixth normal form 考虑跟踪时间数据的问题。

    理查德·斯诺格拉斯提议 TSQL2 作为SQL的扩展来处理时间数据。

    实施包括:

        3
  •  1
  •   nvogel    16 年前

    几个DBMS实现了引擎级的版本控制机制。不幸的是,没有供应商独立的标准,所以它们都是专有的。已经提到了Oracle闪回。Microsoft在SQL Server中的变更数据捕获功能是另一个功能。

        4
  •  0
  •   Greg Hewgill    16 年前

    你忘了 我想要表演 . DBMS是一种非常低级的数据存储机制,在拥有数十亿行的系统中,性能可能非常重要。因此,如果您想要这种审计系统,您可以使用可用的工具(例如触发器)自己构建它。

    正如在文件系统中一样,并非所有文件都适用于版本控制,在数据库中,并非所有行都适用于版本控制。

    推荐文章