我需要为 PostgreSQL 实现模式迁移机制。只是为了消除歧义:对于模式迁移,我的意思是我需要将我的数据库结构升级到最新版本,而不管它们在特定服务器实例上的当前状态如何。
例如,在版本一中我创建了一些表,然后在版本二中我重命名了一些列,在版本三中我删除了一个表并创建了另一个。我有多个服务器,在其中一些服务器上我有版本一,一些版本三等。
我的想法:
- 为产生的输出生成哈希
pg_dump --schema-only
每次在我更改数据库架构之前。这将是一种可靠的方式来识别将来应该应用补丁的数据库版本。
- 包含补丁列表以及它们应该应用的相关散列。
- 当我需要升级我的数据库时,我将运行一个应用程序来搜索与当前数据库结构相对应的哈希(通过计算本地数据库的哈希并将其与我拥有的哈希集进行比较)并应用相关的补丁。
- 重复直到找不到下一个哈希。
您能否指出这种方法的任何弱点?