4.5 数据库与迁移
数据库配置
dwz-server 使用 GORM 抽象数据库访问,通过 DATABASE_DRIVER 在三种数据库之间切换,同一份代码不需要重新编译。
SQLite(独立模式默认)
database:
driver: sqlite
filepath: "./config/sqlite.db"- 驱动:
github.com/glebarez/sqlite,纯 Go 实现,无需 CGO - 适合个人、小型项目、试用
- 数据文件位置建议放在挂载的持久化卷中
MySQL
database:
driver: mysql
host: localhost
port: 3306
username: root
password: password
dbname: dwz_db- 驱动:
gorm.io/driver/mysql - 建议版本:MySQL 5.7+ / 8.0
- 字符集:请使用
utf8mb4以支持 emoji - 生产环境建议单独创建用户并授予该数据库的全部权限
PostgreSQL
database:
driver: postgresql
host: localhost
port: 5432
username: postgres
password: password
dbname: dwz_db- 驱动:
gorm.io/driver/postgres - 建议版本:PostgreSQL 12+
数据库迁移
服务首次启动会自动执行 GORM AutoMigrate 创建表结构。升级版本时,新版本会在启动时自动对齐表结构,一般无需手动执行 SQL 脚本。
重要:升级生产数据库前请先备份。虽然 AutoMigrate 只做增量变更,但跨大版本升级建议在预发环境先验证。
数据库选型建议
- < 100 万短链接、单实例:SQLite 足够
- 百万级短链接、单机:MySQL 或 PostgreSQL
- 千万级 / 多实例集群:MySQL/PG 主从 + Redis 分布式 ID