如何跟踪数据库的变化



我正在使用Progress 11.6 appBuilder和过程编辑器(和数据字典)。

我们经常对客户的数据库进行修改,有两种类型的修改:

  • 结构的修改:使用数据字典的交互式GUI完成。
  • 数据修改:使用过程编辑器
  • 完成

过程中数据修改的示例通常如下所示:

FOR EACH Table1 WHERE Table1.Field1 = <value>:
CREATE Table2. 
Table2.Field1 = <value>.
Table2.Field2 = <some-other-value>.
END.

这与软件交付量的基础之一可重复性完全矛盾。再也没有办法回到以前的状态了!

因此,我正在寻找一种(可自动化的)可重复的方式来做到这一点,因此我的问题:

  • 为了执行/撤销数据库结构修改,我们可以使用什么来代替数据字典的交互式GUI(没有撤销功能)?
  • 我们能做些什么来撤销数据库数据修改?(是否有类似Oracle redo logOracle archive log正在进行中?)

如果你说">你在说什么?你可以做"撤销交易">",我的意思是:
我使用数据字典执行交易,我离开数据字典,第二天客户投诉。当我打开数据字典的那一刻,"撤销事务"功能被禁用。

在高层次上,您应该创建"df文件"(DDL脚本)并将其应用于客户数据库,而不是手动进行更改。有许多方法可以创建这些文件,您可以使用适当的工具自动化整个过程。

创建df文件最常用的方法之一是在开发数据库中创建任何您需要的新模式,然后使用"创建增量df"。数据字典工具中的工具。该工具将开发数据库模式与目标模式进行比较,并构建一个"df文件";(DDL脚本)的差异。您可以直接连接到目标数据库,也可以使用一个空的骨架数据库。

如何创建增量df文件

(如果反向比较,也可以创建反向df文件来撤销更改)

大多数df文件都是由添加的内容组成的——新表、新字段、新索引。这些都可以在线添加,并且都可以完全脚本化。当然,单个df文件和所有支持脚本可以(也应该)存储在存储库中(如git或其他)。

对于数据更改脚本…没有理由不把这些程序写成实际的程序并保存在存储库中。您可以将整个更新包含在事务中,并在适当的情况下撤消它。不管它是否值得,我个人认为这不是一个很好的主意。特别是当涉及到大量数据时,您真的不希望创建巨大的数gb撤销日志。你最好做第二次"反向交易"。脚本,将回滚的东西碎片。一个附带的好处是,如果您决定在一天或三天后退出更改,您仍然可以使用它。

真正的细节将取决于您的开发过程和客户变更管理过程以及可用的工具。这听起来似乎在这段关系的两端都没有太多的流程或工具,所以你可能有很多冒险在等着你!

最新更新