数据库应用程序的 DDL 版本控制

目录

文章目录

  • 目录
  • 什么是 DDL?
  • 为什么需要 DDL 版本控制?
  • 常见的 DDL 版本控制软件
    • Alembic
    • GORM

什么是 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 数据库版本迁移》一文。

你可能感兴趣的:(数据库设计原理)