《AI Agent 工程实战》17.3 版本与迁移:不中断 schema 迁移演练
灰度让新旧两版代码同时在跑,于是 schema 变更不能一删了事。本节讲 expand–contract 五阶段迁移法,并在本机 Postgres 17.11 上用 psycopg 真跑一遍:加新列、双写、回填、切读、删旧列,每阶段查询验证新旧两列一致,另演示 DDL 锁表与 CREATE INDEX CONCURRENTLY。
tag
灰度让新旧两版代码同时在跑,于是 schema 变更不能一删了事。本节讲 expand–contract 五阶段迁移法,并在本机 Postgres 17.11 上用 psycopg 真跑一遍:加新列、双写、回填、切读、删旧列,每阶段查询验证新旧两列一致,另演示 DDL 锁表与 CREATE INDEX CONCURRENTLY。
Rust 数据库访问两大主流方案深度对比:sqlx 的编译期 SQL 校验与异步驱动、Diesel 的 DSL 查询构建器与类型安全、连接池(sqlx::Pool 与 deadpool/r2d2)选型、迁移工具、类型映射与 NULL 处理、事务与批量写入实践,附选型决策表。
系统讲解变异注释与临床解读:从 VEP 与 snpEff 注释流程、gnomAD 与 ClinVar 及 OMIM 数据库整合、CADD 与 REVEL 等打分器、ACMG/AMP 致病性判读准则与自动化工具,到 SV 与 CNV 的注释、报告生成与可重复性保障,给出可复用的命令与判读阈值。
上一节讲了 database/sql 的原语,本节把它们组装成 TaskAPI 的仓储层。实现增删改查五个方法,用 LastInsertId 取自增 ID、用 RowsAffected 判断记录是否存在、把 ErrNoRows 翻译成领域错误,并用 BeginTx/Commit/Rollback 与 defer Rollback 惯用法保证多步写入的原子性。
TaskAPI 不能再把任务放在内存里了。本节讲清 database/sql 的双层设计——标准库提供接口、驱动提供实现,sql.DB 为何是连接池而非连接、连接池参数怎么调、Exec/QueryRow/Query 三种执行方式与预处理语句的区别。为便于本机实测,还给出一份纯标准库实现的内存驱动,把整条链路真正跑通。
GraphQL 与数据库/ORM 的集成实践:Prisma、Drizzle、TypeORM 的接入模式,DataLoader 批量加载与 N+1 治理,事务与原子性保证,连接池与资源管理,查询计划观测,以及分页下推。
从数据目录与 VOLUME 语义出发,讲解 Postgres、MySQL、Redis 的容器化持久化方案:PGDATA 权限与初始化脚本、mysql_native_password 认证坑、Redis AOF 与 RDB 双持久化,以及命名卷选型、pg_dump/pg_basebackup/mysqldump 备份恢复、WAL 与 fsync 语义、共享内存与存储驱动性能陷阱。
系统讲解数据库与查询层的可观测性建设:慢查询日志与语句归一化、连接池指标与等待分析、执行计划与索引效率、数据库内部等待事件、从数据库指标到应用链路的端到端定位,以及常见避坑与最佳实践清单。
用 Terraform 编排 RDS、Aurora 与 Cloud SQL:实例与参数组建模、子网组与安全组定位、备份与时间点恢复、只读副本与读写分离、大版本升级与维护窗口,以及删除保护与生命周期策略。
深入 Clojure 生态的 Datalog 与 Datomic/Xtdb 实践:数据即事实(EAVT)模型、查询与拉取(pull)语法、规则与递归、时间旅行与 as-of 历史查询、事务与数据库函数、Xtdb 的对象存储架构,以及与 SQL/ORM 的对比选型,帮你掌握一套不可变、可回溯、面向事实的数据层。
系统讲解 psql 与 mysql 客户端的批处理用法:连接参数安全传递、事务与错误处理、批量导出导入、慢查询与锁排查,以及幂等迁移脚本的工程化实践。
系统讲解 Erlang 访问关系型数据库的完整方案:epgsql 与 mysql-otp 驱动选型、poolboy 连接池设计、事务与预处理语句、迁移与索引策略、故障重连与超时治理。
MCP 数据库工具的设计与安全:SQL 查询工具、Schema 资源暴露、读写权限边界、防注入、审计与多数据库适配,帮助 LLM 安全可靠地访问数据层。
Zig 通过 C ABI 绑定可无缝调用 SQLite 和 PostgreSQL,配合参数化查询防注入、连接池设计与事务封装,构建安全高效的数据库访问层。本文系统讲解 SQLite CRUD、PostgreSQL 连接池、轻量 ORM 结构体映射、迁移脚本设计与连接生命周期管理。
PHP 数据库迁移治理:迁移系统原理(Laravel Migrations/Doctrine Migrations/Phinx)、迁移命名与版本策略、数据库架构设计(范式与反范式/索引策略/分区表)、多环境管理(开发测试生产同步)、回滚与数据修复策略、Schema 变更的零停机部署、迁移测试与 CI/CD 集成、大表变更的在线方案、文档与版本注释规范。
Ecto 高级查询与数据库工程:查询构建器(from/join/where/order/group/having/窗口函数)、关联预加载(preload/join_preload)、多态关联(表继承/单表继承/多态外键)、数据库事务与隔离级别(Repo.transaction/Ecto.Multi)、变更集与数据验证(cast/validate/unique_constraint)、子查询与 CTE、Ecto 适配器与连接池(DBConnection/连接池大小/超时)、与 PostgreSQL 高级特性集成(JSONB/数组/范围/全文搜索)、性能分析与 N+1 治理。
Flutter 本地持久化全攻略:shared_preferences、sqflite、drift、Isar 与 Hive 方案对比,事务、代码生成、索引查询、数据迁移与同步缓存策略与选型建议。
系统覆盖 TypeScript 下类型安全 ORM 的完整选型与实践:Prisma schema 驱动与类型生成、Drizzle 的 SQL 式类型推导、TypeORM 装饰器风格、数据库迁移与 schema 演进、查询构造的类型推导机制、类型化查询与 raw SQL 的边界取舍、事务与连接池的工程实践,以及 N+1、索引、预编译等性能基准,帮助开发者选出并用好适合自己项目的类型安全数据访问层。
系统讲解主键标识符设计:自增 ID 与 UUID 的根本权衡、UUID 各版本(v1/v4/v5/v7)的语义、UUID 作主键的索引与存储代价、ULID/KSUID/雪花算法的排序性、单调性要求、长度与可读性权衡(Base62/Short UUID),以及分布式多机房下的 ID 生成器设计。
系统覆盖微型博客的数据建模:领域实体与核心表设计(用户/内容/关注/互动四域)、时间线的热温冷分层存储、索引与读写路径、软删除与墓碑机制、Schema 字段演进(additive/backfill/双写)、大表拆分与归档、计数一致性与快照对账、迁移工具链与灰度发布,帮助读者把「能跑的表结构」升级为「能长期演进的 Schema」。