可能会出现哪种情况,而不是像Oracle的redo logs那样,我需要在相同数据的多个版本>数据库?
具体到这个例子,为什么我需要在我的数据库中存储多个版本的html页面?它不能作为备份,因为无论如何所有版本都不存在,只有部分版本(比如说5)。
答案 0 :(得分:3)
使用BigTable和类似的非关系存储来识别的一件事是它们具有完全不同的一致性模型。
一旦引入了跨多个节点分发数据的概念,就会存在一致性错误的风险。预计分布式数据库能够从关闭节点的不一致结果中恢复,而无需关闭数据库或执行被称为“恢复”的操作。
假设您在节点“A”和“B”中存储了记录。在“多主”复制中,您没有主要和副本的概念。相反,可以同时在两个节点中更新记录(特别是如果两个节点之间的通信中断)。版本控制可以帮助解决由此产生的一致性问题
此外,这些数据库往往不会'删除'。您只需存储标记为已删除(或已过期,或其他)的较新版本。类似地,'rollback'将从较早版本创建一个较新版本的记录。
答案 1 :(得分:2)
例:
你想知道daa过去是如何变化的。示例:在整个过程中跟踪订单状态。跟踪客户地址,即使他们搬家。
这可能是业务要求,也可能 - 实际上 - 是法律要求。通常都是。
答案 2 :(得分:1)
具体到这个例子,为什么我需要在我的数据库中存储多个版本的html页面?
如果您想恢复到以前的版本。
答案 3 :(得分:1)
对于跟踪审核/更改日志的更改也很有用(即使您无法还原,您至少可以看到谁更改了什么)。
答案 4 :(得分:1)
您知道(除了重做日志)Oracle还存储了相同数据的先前版本(在撤消表空间中)?这称为多版本并发控制,允许无锁选择(您可以选择正在进行的事务正在更改的行的先前值,而无需等待新数据提交)。
答案 5 :(得分:1)
在什么情况下:按原样检索数据视图 - 这对诊断非常有用(即能够使用相同数据重新运行进程,而无需恢复整个数据库)。有关在短时间内执行此操作的方法,请参阅Oracle的闪回查询。
我们遇到业务规则由客户在现场进行软编码并存储在数据库中的情况。它们可能随时改变,但用于计算存储的数据。对配置进行版本控制为我们提供了一种“回滚”配置并了解数据派生方式的方法。
(我不记得Oracle内置行版本控制的具体术语,它有效地存储了每个表的历史表)。
是的,版本控制意味着更多的存储空间,但我想说在有用的地方,数据很少会发生变化。