我想为我的网络应用程序创建一个“开发”数据库。
我正在使用Postgres 9.3,我希望'devdb'具有确切的表结构 我的制作'appdb'。我不希望他们共享数据,但我希望devdb接收对表结构所做的任何更改,如果可能的话。 (即如果我在appdb中添加一个新表,我希望devdb也有新表,如果我删除一个列也一样)
我是否需要使用模式,如果是这样,如何?我的appdb目前有一个公共模式。
谢谢!
答案 0 :(得分:2)
我认为你最好的选择是使用:
pg_dump --schema-only prod | psql dev
要使模式保持同步,请删除并重新加载dev db,或编写模式更改脚本,以便将更改应用于两个DB。无论如何,您应该这样做,在将它们应用于生产之前测试开发中的更改。
(像Liquibase这样的工具对此很有意思。)
尝试直接链接DDL定义是不安全的。它们创建了从生产到开发的依赖。这有风险。
例如,如果您要使用基于表继承的方法,那么持续锁定 dev 表的长时间运行事务可能会导致生产的延迟。 / p>