DEV Community · Show DEV9/4 22:2454

pistachio:PostgreSQL 声明式模式管理工具

I built pistachio, a declarative schema tool for PostgreSQL

阅读原文
开发者构建了 pistachio,一个用于 PostgreSQL 的声明式模式管理工具。用户以 SQL 编写期望的模式,CLI 生成与当前数据库的 DDL 差异,并采用类似 Terraform 的 plan/apply 工作流。示例中,在模式文件中添加一行 email 列,plan 显示 ALTER TABLE 语句,apply 执行,再次 plan 显示无变化。该工具使用 pg_query_go(PostgreSQL 解析器库)解析模式,从 pg_catalog 读取当前模式,比较后生成 DDL。目前管理表、列、约束、索引、视图、物化视图、枚举、域、复合类型、序列、行级安全、触发器、注释、存储参数,以及可选函数和过程。重命名通过 -- pista:renamed-from 指令支持。作者提到 sqldef 和 pgschema 的不足,但认为 sqldef 支持多数据库,pgschema 更准确。