分叉(postgre)SQL数据库结构

时间:2016-04-27 14:41:10

标签: sql database git postgresql version-control

作为我公司的首席开发人员,我几年来一直在开发网络安全应用程序。它是一种分离式架构设计,其中一个组件位于客户的网络中,另一个组件位于我们自己的云中。我们开发了自己的自定义版本控制系统,可以在每个补丁(每个客户)保持双方同步,但到目前为止它只允许进行增量更改,并且无法进行回滚。

我们希望为我们的代码转移到一个类似可分叉的类似git的解决方案,这样我们就可以同时开发和测试多个功能,但是那个让我们回过头来的就是我们的数据库。我们使用PostgreSQL(目前为9.3.12),并且我已经编写了一个自定义脚本来计算" old"之间的增量。和"新"数据库结构,每次我们制作补丁"。它会发出一个更新" old"所需的SQL命令列表。数据库结构看起来像" new",包括表,函数,序列,触发器,你可以命名它。它非常优雅,几乎不会失败,即使是复杂的增量。

但是,我意识到为了有一个类似git的解决方案(签出,签入,合并更改为测试和生产代码等),同时保持数据库更改与应用程序代码同步,我们需要的东西比仅仅#34; old"更高级。 vs" new"。请注意,我们不需要在大多数情况下修改数据库数据,只需要修改现有客户数据库中的表结构。

所以我的问题是:对于类似git的SQL版本控制系统的任何想法,它允许分叉和合并,并且可以轻松地与应用程序代码更改保持同步?我们的自定义工具是已经比我们研究过的一些开源工具(例如sqlt-diff)更先进了,像Red Gate这样的工具作为一个初创公司有点超出了我们的价格范围(更不用说我没有&# 39;听说有人提到在红门的背景下分叉)。我们开始编写自定义工具,如果这是我们需要做的事情,但我们会在这里开始讨论从哪里开始。我们知道如何计算增量,但我们不知道如何在不同的叉子上管理所有这些事情。

我们非常感谢免费或开源工具,我们可以采用的框架,或构建此类工具的一般指导原则!

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是迁移。一些轻量级工具,但还有很多其他工具:

http://sequel.jeremyevans.net/rdoc/files/doc/migration_rdoc.html

https://flywaydb.org/

不是在事后计算版本之间的增量,而是可以使用迁移以受控方式发展模式。您可以创建特定于功能的迁移,可以跟踪(和分叉/合并)以及其余代码。

根据您想要获得的花哨程度,您可能需要扩展默认的命名/编号方案。