四种数据库选型——H2、PostgreSQL、MySQL、KingbaseES 怎么选
选择建议先给结论
| 场景 | 推荐 |
|---|---|
| 本地快速体验、开发 | H2 |
| 生产部署、Docker 栈 | PostgreSQL 16 |
| 已有 MySQL 环境 | MySQL 8 |
| 国产数据库合规要求 | KingbaseES |
MateClaw 是 Spring Boot 项目,通过 Spring profile 切换数据库。Flyway 负责 schema 迁移,按数据库方言管理版本。
H2(开发/桌面端默认)
零配置——什么都不用设,启动就跑。数据库文件在 data/mateclaw.mv.db,默认文件数据库。
优点:零配置、速度快、单文件方便备份。缺点:不支持并发连接(桌面端单用户无所谓,但多用户会锁库)。
常见问题:锁文件残留导致下次启动报 H2 锁错误。解决:删掉 data/mateclaw.mv.db.lock,或者直接清空 data/ 目录重新开始。
PostgreSQL 16(生产首选)
MateClaw 的公开 Docker 栈默认就用 PostgreSQL 16。支持并发、事务完整、扩展丰富(比如 pg_trgm 模糊搜索、pgvector 向量搜索可以配合 Wiki 的语义检索)。
Flyway migration 里有 PostgreSQL 专属的 DDL——某些表结构(比如 JSONB 字段)只在 PostgreSQL 下创建。
MySQL 8
如果你已经有 MySQL 环境不想迁移,MateClaw 通过 profile 继续支持 MySQL 8。Flyway 会自动切换 MySQL 方言的 migration 脚本。
KingbaseES
国产数据库环境下用。驱动按需启用(不是默认打包在 JAR 里——需要自己加依赖或者用 MateClaw 提供的专用 profile)。
KingbaseES 兼容 PostgreSQL 的 SQL 子集,大部分 PostgreSQL migration 脚本可以直接跑。