开发和测试
每个正在运行的 PostgreSQL 服务器实例都管理着一个或多个数据库。在组织 SQL 对象(“数据库对象”)的层次中,数据库位于最顶层。在一个 Redrock Postgres 的实例中,角色和表空间都是数据库级别的对象,每个数据库都有自己独立的数据体系结构(包括角色、用户、模式和对象权限相关信息),各个数据库的数据是完全隔离的。
我们在开发应用软件时经常会使用版本管理系统,来管理用于开发各种特性的代码分支。类似地,在 Redrock Postgres 中,我们也可以使用它的多数据库服务能力,管理用于开发和测试各种特性的数据库。
应用程序代码库应该有一个、且仅有一个主分支的数据库,它包含了应用程序所需的基础数据。所有提供给用户使用的正式版本的应用软件产品,都基于这个主分支数据库进行发布。这里我们把主分支数据库叫做master
。
我们可以把主分支数据库转储到一个 SQL 脚本文件,发布应用程序所需的基础数据:
$ pg_dump master > base.sql
如果我们需要重置应用开发和测试所需的基础数据,我们可以删除、重新创建新的主分支数据库:
DROP DATABASE master;
CREATE DATABASE master;
把带有基础数据的 SQL 脚本文件导入到主分支数据库,重置应用开发和测试所需的基础数据:
$ psql -d master -f base.sql
主分支数据库只用来发布重大版本,日常开发应该在另一条分支上完成。我们可以把开发用的分支,叫做develop
。
这个分支可以用来生成应用软件的最新隔夜版本(nightly)。如果想正式对外发布,就在主分支数据库上,对开发分支数据进行合并,构建新的主分支基础数据。
创建开发分支数据库的 SQL 命令:
CREATE DATABASE develop TEMPLATE master;
特性分支数据库,是为了开发某种特定功能,从开发分支上面分出来的。开发完成后,再将差异数据合并到开发分支。
特性分支数据库的名字,可以采用前缀feature_
加上特性名称的形式命名。
创建一个特性分支数据库的 SQL 命令:
CREATE DATABASE feature_x TEMPLATE develop;
还有一种是修补分支。软件正式发布以后,难免会出现问题。这时就需要创建一个分支数据库,进行问题修补。
修补分支是从主分支数据库上面分出来的。修补结束以后,再合并进主分支和开发分支。修补分支数据库的名字,可以采用前缀bugfix_
加上问题名称的形式命名。
创建一个修补分支数据库的 SQL 命令:
CREATE DATABASE bugfix_x TEMPLATE master;
测试数据库,是测试人员对发布的应用软件,进行测试所使用的数据库,数据环境需要和生产数据库尽可能保持一致。
测试数据库的名字,可以采用前缀test_
加上测试目的名称的形式命名。
创建一个测试数据库的 SQL 命令:
CREATE DATABASE test_x TEMPLATE master;