如何跟踪数据库更改
How to keep track of database changes
我正在使用 Progress 11.6 appBuilder 和过程编辑器(和数据字典)。
我们经常在客户的数据库中进行修改,有两种类型的修改:
- 结构修改:已完成,使用数据字典的交互式 GUI。
- 数据修改:已完成,使用程序编辑器
过程中的数据修改示例通常如下所示:
FOR EACH Table1 WHERE Table1.Field1 = <value>:
CREATE Table2.
Table2.Field1 = <value>.
Table2.Field2 = <some-other-value>.
END.
这完全违背了软件交付数量的一个基础,可重复性:没办法return到以前的情况!
因此我正在寻找以(可自动)可重复的方式执行此操作的方法,因此我的问题是:
- 为了 perform/undo 数据库结构修改,我们可以使用什么来代替数据字典的交互式 GUI(没有撤消功能)?
- 我们可以做什么来撤销数据库数据修改? (是否有
Oracle redo log
或 Oracle archive log
之类的东西在进行中?)
如果您说“您在说什么?您可以在数据字典中执行“撤消事务”。”,我的意思是:
我使用数据字典执行交易,我离开了数据字典,第二天客户抱怨。当我当时打开数据字典时,“撤消事务”功能被禁用。
在较高级别,您应该创建“df 文件”(DDL 脚本)并将其应用于客户数据库,而不是手动进行更改。有许多方法可以创建这些文件,您可以使用适当的工具自动执行整个过程。
创建 df 文件的最常见方法之一是在开发数据库中创建您需要的任何新模式,然后使用数据字典工具中的“创建增量 df”工具。该工具将开发数据库模式与目标模式进行比较,并构建差异的“df 文件”(DDL 脚本)。您可以为此过程直接连接到目标数据库,或者您可以有一个用于此目的的空骨架数据库。
How to create an incremental df file
(如果您随后反转比较,您还可以创建一个反转 df 文件来撤消更改。)
大多数 df 文件都包含添加项 - 新表、新字段、新索引。这些都可以在线添加,并且都可以完全编写脚本。而且,当然,各个 df 文件和所有支持脚本可以(并且应该)存储在存储库中(如 git 或其他)。
至于数据更改脚本...没有理由不能将这些程序编写为实际程序并保存在存储库中。您可以将整个更新包含在事务中,并在适当时撤消它。对于它的价值,我个人认为这不是一个好主意。尤其是当涉及大量数据时,您真的不想创建庞大的数 GB 的撤消日志。你最好使用第二个“逆向交易”脚本,它会把事情一点一点地回滚。一个附带的好处是,如果您决定在一三天后取消更改,您仍然可以使用它。
真正的细节将取决于您的开发过程和客户变更管理过程以及可用的工具。听起来这段关系的两端都没有太多的过程或工具,所以你可能有很多冒险等着你!
我正在使用 Progress 11.6 appBuilder 和过程编辑器(和数据字典)。
我们经常在客户的数据库中进行修改,有两种类型的修改:
- 结构修改:已完成,使用数据字典的交互式 GUI。
- 数据修改:已完成,使用程序编辑器
过程中的数据修改示例通常如下所示:
FOR EACH Table1 WHERE Table1.Field1 = <value>:
CREATE Table2.
Table2.Field1 = <value>.
Table2.Field2 = <some-other-value>.
END.
这完全违背了软件交付数量的一个基础,可重复性:没办法return到以前的情况!
因此我正在寻找以(可自动)可重复的方式执行此操作的方法,因此我的问题是:
- 为了 perform/undo 数据库结构修改,我们可以使用什么来代替数据字典的交互式 GUI(没有撤消功能)?
- 我们可以做什么来撤销数据库数据修改? (是否有
Oracle redo log
或Oracle archive log
之类的东西在进行中?)
如果您说“您在说什么?您可以在数据字典中执行“撤消事务”。”,我的意思是:
我使用数据字典执行交易,我离开了数据字典,第二天客户抱怨。当我当时打开数据字典时,“撤消事务”功能被禁用。
在较高级别,您应该创建“df 文件”(DDL 脚本)并将其应用于客户数据库,而不是手动进行更改。有许多方法可以创建这些文件,您可以使用适当的工具自动执行整个过程。
创建 df 文件的最常见方法之一是在开发数据库中创建您需要的任何新模式,然后使用数据字典工具中的“创建增量 df”工具。该工具将开发数据库模式与目标模式进行比较,并构建差异的“df 文件”(DDL 脚本)。您可以为此过程直接连接到目标数据库,或者您可以有一个用于此目的的空骨架数据库。
How to create an incremental df file
(如果您随后反转比较,您还可以创建一个反转 df 文件来撤消更改。)
大多数 df 文件都包含添加项 - 新表、新字段、新索引。这些都可以在线添加,并且都可以完全编写脚本。而且,当然,各个 df 文件和所有支持脚本可以(并且应该)存储在存储库中(如 git 或其他)。
至于数据更改脚本...没有理由不能将这些程序编写为实际程序并保存在存储库中。您可以将整个更新包含在事务中,并在适当时撤消它。对于它的价值,我个人认为这不是一个好主意。尤其是当涉及大量数据时,您真的不想创建庞大的数 GB 的撤消日志。你最好使用第二个“逆向交易”脚本,它会把事情一点一点地回滚。一个附带的好处是,如果您决定在一三天后取消更改,您仍然可以使用它。
真正的细节将取决于您的开发过程和客户变更管理过程以及可用的工具。听起来这段关系的两端都没有太多的过程或工具,所以你可能有很多冒险等着你!