我正在为每个客户创建一个数据库模式。所以,无论何时注册新客户,我都需要在运行时快速创建模式。数据库迁移:单个创建脚本与更改集
选项1
在运行时,使用Liquibase(或同等)运行所有的变更生成最新的模式。
缺点:
- 这是缓慢的,也可以是多个历史变迁setsa现在是不相关的话(create table和一年后放弃它)。
- Liquibase在运行时用于此处,而不仅仅是“迁移时间”。不知道这是不是一个好主意。
- 将Liquibase作为构建模式的一种手段,将迫使所有开发人员在开发过程中使用它。我们尽量避免向开发人员加载更多工具。
选项2
每个版本后,我们使用生成变更Liquibase临时DB。然后从数据库中创建一个基于当前快照的干净模式创建脚本。然后,当新客户来到时,我们只运行干净的脚本,而不是完整的变更集历史记录。
缺点:
- 下一次,我跑liquibase它会尝试从变更1.运行一种解决方法可能是在生成脚本以包括变更表的创建,并插入到它的最新变更。
- 使用一个脚本创建新模式,而旧模式经历变更集过程。理论上这可能会导致不同的模式。但是,单个脚本也经历了变更集过程,所以我不能想到会导致错误的确切情况,这是目前的一个理论问题。
您怎么看?