我有一个需要数据库的应用程序+将极大地受益于脉动循环控制电路模型。理想情况下,它将支持永久历史记录存储、特定时间点的数据访问以及增量备份。
我正在查看可能支持此功能的数据库。我知道 CouchDB 可以(除了增量备份,我不确定)但在这个应用程序中我真的需要一个关系数据库。
我很惊讶MySQL 列出 MVCC 支持在 Innodb / Falcon 中。我的印象是,这可能仅适用于事务内的数据库状态,一旦提交了所有事务级别,历史记录就会丢失。
关于什么PostgreSQL?
答案1
MVCC 不是您想要的。听起来您希望能够根据“时间点”查询数据,并根据该指定时间点的数据状态获得结果。
那是一个时态数据库模式。您可以为时间查询设计一个关系数据库模式,但 SQL 本身使某些类型的时间查询非常繁琐。曾经有一个时间 SQL 方言(这规格在这里,尽管它似乎是研究出版物但从未标准化),它应该使时间查询不那么麻烦,同时仍然“是 SQL”。
如果你搜索一下,就会发现很多关于时间数据和关系模型的研究和书籍。良好的数据建模可以帮你实现很多目标,不过如果你要使用 SQL 作为查询语言,你可能会不喜欢某些查询的最终结果。
编辑:时间数据库是 Oracle 的一个前端,它添加了时间查询方言。此代码的发布许可完全不清楚。
答案2
McObject 在 2009 年 11 月宣布其 eXtremeDB 数据库已添加可选的 MVCC 事务管理器:
http://www.mcobject.com/november9/2009
eXtremeDB 最初是作为内存数据库系统 (IMDS) 开发的,现在提供混合(内存/磁盘)存储、高可用性、64 位支持等版本。接口包括 SQL、更快的本机 API 和 Java 本机接口 (JNI)。
答案3
在 RTC Magazine 上的这篇文章中,McObject 的联合创始人兼首席执行官用图表对 MVCC 进行了很好的解释,并给出了一些 eXtremeDB 的性能数据:
http://www.rtcmagazine.com/articles/view/101612
显然,随着应用程序扩展以包含在多个 CPU 核心上执行的多项任务,MVCC 的优势越来越明显。
答案4
另请参阅 Wikipedia 上的列表,了解支持 MVCC 的其他数据库 https://en.wikipedia.org/wiki/List_of_databases_using_MVCC