4

我正在设计一个系统,其中诸如“在特定时间匹配特定条件的所有记录的总和是多少”之类的问题很重要。

多值并发控制 (MVCC) 似乎是要走的路,因为它永远保持审计跟踪。

但是,如果数据存储能够为我处理这个问题,而不是从其他数据库功能中拼凑起来,那就太好了。现在,Oracle 和 CouchDB 其他数据库引擎使用 MVCC,但只是在幕后。他们使用它来解决冲突或决定在长时间运行的查询遇到最近更新的数据时要做什么。但我不知道有任何系统允许您明确地说“在 2009 年 1 月 20 日 17:00 的系统状态下,此查询返回什么”。那么有没有这样的系统呢?理想情况下,开源?

4

2 回答 2

1

据我所知,MVCC 不保证早期版本的行的持续时间。它的目标是事务的并发控制;当行“x”的所有事务都已提交时,MVCC 没有真正需要保留该行的早期版本。

您正在考虑Temporal Databases。Snodgrass 的旧书《用 SQL 开发面向时间的数据库应用程序》值得一读,尤其是现在它以 PDF 格式提供。如果我不得不再次从头开始做一个时态数据库,我还会阅读Temporal Data & the Relational Model以及任何其他处理 6NF 的内容。(其中“6NF”<>“DKNF”。)

于 2011-05-23T11:39:19.630 回答
1

看看 Oracle 的闪回查询。

于 2011-05-22T23:55:52.140 回答