PostgreSQL开发工作流程

Xin*_*Xin 6 database postgresql workflow development-environment

我开始使用PostgreSQL为我的项目构建一个新数据库.(顺便说一下,我是PostgreSQL和数据库的新手.)

我认为我的开发工作流程非常糟糕,以下是其中的一部分:

  1. 使用pgAdmin创建表/视图/功能.
  2. 在保存代码之前确定文件的名称.
    目标是能够通过运行所有已保存的脚本自动重新创建数据库,
    我需要知道为依赖性原因运行这些脚本的顺序.
    所以我为每个文件添加一个数字来表示订单.例如:001_create_role_user.ddl,002_create_database_project.ddl,013_user_table.ddl
  3. 保存代码.
  4. 使用GIT将文件提交到存储库.

以下是我能想到的一些不好的事情:

  • 我很容易忘记我所做的改变.例如,创建了一个新类型或编辑过的注释
  • 很难确定文件的名称(顺序).
  • 更改代码会很麻烦,特别是当新代码更改顺序时.

所以我的工作流程很糟糕.我想知道其他Postgres开发人员的工作流程是什么样的.

是否有任何好的工具(免费或便宜)用于编辑和保存脚本?好的IDE可能吗?

如果我可以为数据库创建自动化单元测试,那将是很棒的.

任何重建数据库的工具?CI服务器工具?

基本上我正在寻找任何建议,良好实践或数据库开发的好工具.

(对不起,这个问题可能不适合Q&A格式,但我不知道在哪里可以提出这个问题.)

n07*_*337 2

查看liquibase。我们在我工作的公司中使用它来设置 PostgreSQL 数据库。它是开源的,易于使用,您最终得到的变更日志文件可以添加到源代码管理中。每个变更集都有一个 id,因此每个变更集仅运行一次。您最终会得到两个额外的表,用于跟踪数据库运行时的更改。

虽然它与数据库无关,但您可以直接在每个变更集中使用 PostgreSQL SQL,并且每个变更集都可以有自己的注释。

使用它的唯一警告是,您必须警告自己和其他人,一旦将变更集应用于数据库,就不要重复使用它。对已应用的变更集的任何更改都会导致不同的校验和(甚至是空格),这可能会导致 liquibase 中止其更新。这可能会导致现场数据库更新失败,因此对任何变更日志的每次更新都应首先在本地进行测试。相反,所有更改(无论多么微小)都应该插入到具有新 ID 的新更改集中。他们有一个名为“validCheckSum”的变更集子标签,可以让您解决此问题,但我认为最好尝试强制始终创建新的变更集。

例如,以下是用于创建表创建视图的文档链接。