0

我需要为 PostgreSQL 实现模式迁移机制。只是为了消除歧义:对于模式迁移,我的意思是我需要将我的数据库结构升级到最新版本,而不管它们在特定服务器实例上的当前状态如何。

例如,在版本一中我创建了一些表,然后在版本二中我重命名了一些列,在版本三中我删除了一个表并创建了另一个。我有多个服务器,在其中一些服务器上我有版本一,一些版本三等。

我的想法:

  • 为产生的输出生成哈希

pg_dump --schema-only

每次在我更改数据库架构之前。这将是一种可靠的方式来识别将来应该应用补丁的数据库版本。

  • 包含补丁列表以及它们应该应用的相关散列。
  • 当我需要升级我的数据库时,我将运行一个应用程序来搜索与当前数据库结构相对应的哈希(通过计算本地数据库的哈希并将其与我拥有的哈希集进行比较)并应用相关的补丁。
  • 重复直到找不到下一个哈希。

您能否指出这种方法的任何弱点?

4

1 回答 1

0

你听说过https://pgmodeler.io吗?在我工作的公司,我们决定这样做,因为它甚至可以在本地和远程之间执行模式差异。我们对此非常满意。

否则,如果您更喜欢免费的解决方案,您可以开发一个迁移工具,该工具可用于应用您存储在单个存储库中的迁移。此外,该工具可以依赖于migration您保存在单独模式中的表,以便您的数据库始终知道应用了哪些迁移。

这种方法的美妙之处在于,迁移既可以涉及架构更改,也可以涉及数据更改。

我希望这能给你一些想法。

于 2020-01-25T10:56:10.660 回答