目录
什么是 DDL?
DDL(数据定义语言):用来创建数据库中的各种对象,例如:表、视图、索引、同义词、聚簇等,对应的指令为:CREATE TABLE、VIEW、INDEX、SYN、CLUSTER 等。注意,DDL 操作是隐性提交的,不能 Rollback。
为什么需要 DDL 版本控制?
数据库应用软件的版本迭代过程中难免需要修改 ORM 的数据模型(Data Model)即 DLL,例如:添加一个表、添加一个字段、修改一个字段的属性等。
然而在生产环境中,这些 DDL 操作不可以影响到现存的生成数据记录。这里就会出现一个需求:怎样在保证原有生产数据完整性的情况下对数据库进行升级,或回滚到之前的某一个时刻以复现环境,这就是需要 DLL 版本控制的缘由。
参见《Openstack_SQLAlchemy 修改数据库的表结构》一文。
常见的 DDL 版本控制软件
Alembic
在 Python 生态中,SQLAlchemy 是一款非常优秀的 ORM 框架,但其本身没有提供数据库版本控制功能。所以 SQLAlchemy 的开发者就再开发了 Alembic 这一款 Database Migration(数据迁移跟踪记录)软件来弥补这一缺失。
参见《用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级》一文。
GORM
在 Golang 生态中,GORM 同样是一款优秀的 ORM 框架,并且自身提供了 Migrator 的功能,包括:AutoMigrate 和 DDL 操作方法两个层面。
参见《Go 语言编程 — gorm 数据库版本迁移》一文。
转载:https://blog.csdn.net/Jmilk/article/details/108967204
查看评论