我真正需要的是可以进一步修改的轻量级数据库快照。
数据库可能很大,但快照本身应该很小并保持与父级的关系。
像这样的东西基本上可以让我每个分支都有一个数据库。它也可以用于测试几乎直接针对生产的环境,但不会影响它。
我对关系数据库实现或扩展最感兴趣。但对任何事情都持开放态度。
我真正需要的是可以进一步修改的轻量级数据库快照。
数据库可能很大,但快照本身应该很小并保持与父级的关系。
像这样的东西基本上可以让我每个分支都有一个数据库。它也可以用于测试几乎直接针对生产的环境,但不会影响它。
我对关系数据库实现或扩展最感兴趣。但对任何事情都持开放态度。
我认为任何 RDBMS 都不存在分支。您可以获得的最接近的方法是通过备份和还原或 BULK INSERTing 克隆整个数据库到新数据库中。
您可以尝试通过克隆每个分支的目标数据库架构并在其中存储“差异”(即已编辑的记录)来滚动您自己的分支系统,但这需要跨两个数据库进行查询,解决编辑冲突,并降级为唯一的当插入或删除记录时,地狱之环。
就个人而言,我只会使用完整/部分克隆进行主要测试,并使用较小的子集用于您正在编辑架构的分支。
想法:我还没有看到包含分支概念的关系数据库系统......尽管这个概念本身似乎非常有用恕我直言。
我知道 Microsoft Team Foundation Server + Visual Studio 2010(仅限高级版或旗舰版)通过“数据库项目”将数据库开发与源代码控制集成在一起。我确信其他版本控制系统具有类似的功能......但这并不能回答您对轻量级或内置数据库版本控制系统的问题。(因此,这在技术上不是答案——只是一些可以帮助您解决基本问题的信息)。
简短的搜索发现了一些有用的相关文章,但似乎并没有完全回答这个请求:
RedGate 是一家顶级数据库工具公司,为 Microsoft SQL Server、Oracle 和可能的其他数据库解决方案开发解决方案。问题是RedGate SQL Source Control 3.0可以在 SSMS(Microsoft SQL Server Management Studio)中使用您的版本控制系统,但它本身并不是一个 DB VCS(版本控制系统)。摘自他们的网站:
SQL Source Control 是 SQL Server Management Studio 的插件,可让您将数据库纳入源代码控制。因此,SQL Source Control 为数据库开发带来了源代码控制的变更管理和协作优势,而不会影响您的工作流程,也不需要新的开发流程。注意:SQL Source Control 不是源代码控制系统;它允许您将数据库存储在现有的源代码控制系统中。
我创建了LiteTree
它是对 SQLite 引擎的修改,以支持分支。