Database 具有历史和分支的类DB系统

Database 具有历史和分支的类DB系统,database,algorithm,data-structures,version-control,Database,Algorithm,Data Structures,Version Control,我需要一个数据存储系统,模拟一个简单的数据库,但也可以存储的变化历史,并支持分支 也就是说,几个数据表(不需要支持实际的SQL语法)、提交任意更改的选项、标记系统状态的选项以及在标记之间移动的选项 它应该非常接近于一个简单的源代码控制系统,例如git。在没有合并等情况下,只需提交更改、放置标记和在标记之间移动(回滚和快进),并随时拥有与指定标记的系统状态相似的“工作副本” 我可以自己从头开始实现这样的数据结构,但我更愿意在现有的健壮实现之上构建它,例如DB引擎等 是否有已知的解决方案?以下是您的

我需要一个数据存储系统,模拟一个简单的数据库,但也可以存储的变化历史,并支持分支

也就是说,几个数据表(不需要支持实际的SQL语法)、提交任意更改的选项、标记系统状态的选项以及在标记之间移动的选项

它应该非常接近于一个简单的源代码控制系统,例如git。在没有合并等情况下,只需提交更改、放置标记和在标记之间移动(回滚和快进),并随时拥有与指定标记的系统状态相似的“工作副本”

我可以自己从头开始实现这样的数据结构,但我更愿意在现有的健壮实现之上构建它,例如DB引擎等

是否有已知的解决方案?

以下是您的选择:

  • -ESRI的ArcGIS支持通过ArcSDE数据层对地理数据库进行版本控制
  • -Oracle数据库功能,提供高性能 版本隔离程度和数据历史记录管理
  • SQL:2011时间特性,包括有效时间和事务性 时间支持
  • -它是Git版本控制系统的分散式数据库
  • -它是一个用于具有内置快照的持久存储的库, 分支和回复机制
SQL:2011支持编辑的“线性”历史记录

ESRI和Oracle都是很好的候选者,但它们都有用于操作版本的特定于供应商的接口


在Noms中,保留数据库的所有以前版本。您可以轻松地跟踪数据库如何发展到当前状态,轻松有效地比较任意两个版本,甚至从任何以前的版本倒带和分支。

不幸的是,Noms现在已经死了。剩下的选择是:

  • (但我不清楚是否真的支持分支)
Irmin最接近Noms,但上次我检查插入数据而不指定路径时还不受支持


另请参见:

查看这张@AshishRp:哇,谢谢!这确实是我需要的!只是我需要更简单的。合并是不必要的,我不打算存储大量数据。但这绝对值得一试。