【问题标题】:What situations require me to store different versions of the same data in a database?哪些情况需要我在数据库中存储相同数据的不同版本?
【发布时间】:2010-08-17 04:10:48
【问题描述】:

这是Google BigTable paper的截图

在这种情况下,我需要将相同数据的多个版本数据库中存储,而不是像 Oracle 的 redo logs 这样的场景?

具体来看这个例子,为什么我需要在我的数据库中存储多个版本的 html 页面?它不能作为备份,因为无论如何所有版本都不存在,只有其中一些版本存在(比如最后 5 个)。

【问题讨论】:

    标签: database algorithm oracle data-structures bigtable


    【解决方案1】:

    BigTable 和类似的非关系型存储需要认识到的一点是,它们具有完全不同的一致性模型。

    一旦引入跨多个节点分布数据的概念,您就会面临一致性错误的风险。分布式数据库预计能够从节点关闭导致的不一致结果中恢复,而无需关闭数据库或执行被视为“恢复”的操作。

    假设您有一条记录存储在节点“A”和“B”中。在“多主”复制中,您没有主副本和副本的概念。相反,可以同时在两个节点中更新记录(特别是如果两个节点之间的通信中断)。版本控制可以帮助解决由此产生的一致性问题。

    此外,这些数据库往往不会进行“删除”。您只需存储标记为已删除(或过期或其他)的较新版本。类似地,“回滚”是从较早的记录创建新版本的记录。

    【讨论】:

      【解决方案2】:

      案例:

      您想知道 daa 在过去发生了怎样的变化。示例:在整个流程中跟踪订单状态。即使客户搬家也能追踪他们的地址。

      这可以是业务要求,也可以是 - 实际上 - 法律要求。很多时候两者兼而有之。

      【讨论】:

        【解决方案3】:

        具体来看这个例子,为什么我需要在我的数据库中存储多个版本的 html 页面?

        如果您想恢复到以前的版本。

        【讨论】:

        • 我们也可以使用日志。此外,不可能将所有版本都存储在数据库中。也许就像您在数据库本身中有几个版本一样,其余的需要从日志中生成。
        • @Primx:从事务日志中恢复并不是您的 DBA 想要经常做的事情。如果有一次,但在一个月左右超过一次不会让其他人对您的数据库技能有很高的评价。
        • @Primx:日志对用户毫无用处。他们无法恢复数据库表单日志文件,但是许多应用程序需要让用户恢复到以前版本的功能(想想 wiki)。
        【解决方案4】:

        对于跟踪审计/更改日志的更改也很有用(即使您无法还原,您至少可以看到谁在什么时间更改了什么)。

        【讨论】:

          【解决方案5】:

          您知道(除了重做日志)Oracle 还存储相同数据的先前版本(在撤消表空间中)?这称为多版本并发控制并允许无锁选择(您可以选择正在被正在进行的事务更改的行的先前值,而无需等待新数据提交)。

          【讨论】:

            【解决方案6】:

            什么情况:“按原样”检索数据视图 - 这对于诊断非常有用(即能够使用相同的数据重新运行进程,而无需恢复整个数据库)。请参阅 Oracle 的闪回查询,了解在短时间内执行此操作的方法。

            我们有这样一种情况,客户在现场对业务规则进行软编码,并存储在数据库中。它们可能随时更改,但用于计算存储的数据。对配置进行版本控制为我们提供了一种“回滚”配置并了解数据是如何派生的方法。

            (我不记得 Oracle 内置行版本控制的具体术语,它有效地为每个表存储一个历史表)。

            是的,版本控制意味着更多的存储空间,但我想说的是,在它有用的地方,数据很少是易失性的。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-04-17
              • 2018-03-30
              • 1970-01-01
              • 1970-01-01
              • 2012-02-11
              • 2011-01-25
              • 2016-12-28
              • 1970-01-01
              相关资源
              最近更新 更多