Schema Evolution Manager 使用教程
1. 项目介绍
Schema Evolution Manager(简称 sem
)是一个用于简化 PostgreSQL 数据库模式变更管理的开源工具。它允许工程师将数据库模式变更作为源代码进行管理,并将这些变更以压缩的 tarball 文件形式部署,文件名与相应的 Git 标签对应。通过 sem
,工程师可以轻松地创建和管理数据库模式升级脚本,并确保这些脚本在所有环境中按时间顺序应用。
sem
的核心目标是提供一个简单、可靠的工具来管理数据库模式变更,避免复杂的依赖关系,并确保模式变更的增量性和可重复性。它不支持回滚操作,而是鼓励通过小步快跑的方式进行模式变更,以降低风险。
2. 项目快速启动
安装
使用 Homebrew 安装
brew install schema-evolution-manager
直接安装(无需 RubyGems)
git clone git@github.com:mbryzek/schema-evolution-manager.git
cd schema-evolution-manager
git checkout 0.9.54
ruby ./configure.rb
sudo ./install.rb
使用 RubyGems 安装
gem install schema-evolution-manager
初始化项目
git init /tmp/sample
sem-init --dir /tmp/sample --url postgresql://postgres@localhost/sample
创建第一个 SQL 脚本
cd /tmp/sample
echo "create table tmp_table (id integer)" > new.sql
sem-add ./new.sql
应用变更到本地数据库
cd /tmp/sample
createdb sample
sem-apply --url postgresql://postgres@localhost/sample
提交变更
git commit -m "Adding a new tmp table to test sem process"
发布版本
cd /tmp/sample
sem-dist
3. 应用案例和最佳实践
应用案例
在 Gilt Groupe 公司,sem
自 2012 年初开始使用,显著提高了生产环境中数十个独立 PostgreSQL 数据库的模式部署可靠性。通过将模式变更作为源代码管理,并使用 sem
进行自动化部署,团队能够更轻松地跟踪和管理数据库模式变更。
最佳实践
- 小步快跑:每次只进行小的模式变更,避免一次性进行大规模的变更,以降低风险。
- 独立部署:将模式变更与应用程序代码变更分开部署,确保应用程序代码可以回滚,而模式变更不会受到影响。
- 版本控制:使用 Git 管理模式变更脚本,并通过
sem
自动生成版本号和压缩包,确保变更的可重复性和可追溯性。
4. 典型生态项目
PostgreSQL
sem
主要用于管理 PostgreSQL 数据库的模式变更。它与 PostgreSQL 9.x 版本兼容,并尽量减少对高级功能的使用,以确保在 8.x 系列中也能正常工作。
Git
sem
依赖 Git 进行版本控制,所有版本变更都通过 Git 标签进行管理。通过 Git,团队可以轻松地跟踪和管理模式变更的历史记录。
Ruby
sem
使用 Ruby 编写,并支持 Ruby 2.x 版本。虽然 sem
不依赖 RubyGems,但用户可以选择使用 RubyGems 进行安装。
通过以上模块的介绍,您可以快速了解并上手使用 Schema Evolution Manager 进行 PostgreSQL 数据库模式变更管理。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考