1.5.3 数据仓库怎么选——数据库选择:PostgreSQL vs MySQL vs SQLite
一句话破题
数据库是应用的"记忆"——选对数据库,决定了数据存储的可靠性、查询的效率、以及未来的扩展能力。
三大数据库对比
| 特性 | PostgreSQL | MySQL | SQLite |
|---|---|---|---|
| 类型 | 关系型数据库 | 关系型数据库 | 嵌入式数据库 |
| 部署 | 需要服务器 | 需要服务器 | 文件即数据库 |
| 并发 | 优秀 | 良好 | 受限 |
| 功能 | 最丰富 | 够用 | 基础 |
| 学习成本 | 中等 | 低 | 最低 |
| 适用场景 | 生产环境 | 生产环境 | 开发/小型应用 |
推荐选择
本课程推荐:
- 开发环境:SQLite(零配置,方便本地开发)
- 生产环境:PostgreSQL(功能强大,与 Prisma 配合最佳)
PostgreSQL 优势
- JSON 支持:原生支持 JSON/JSONB 类型,适合存储灵活结构的数据
- 丰富的数据类型:数组、范围类型、全文搜索等
- 强大的扩展:PostGIS(地理信息)、TimescaleDB(时序数据)
- 行级安全:内置 RLS(Row Level Security),适合多租户应用
- 与 Prisma 配合:Prisma 对 PostgreSQL 的支持最完善
快速上手 PostgreSQL
本地安装(开发环境)
方式 1:Docker(推荐)
bash
docker run --name postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres方式 2:本地安装
- macOS:
brew install postgresql - Windows: 下载安装包 postgresql.org/download
云服务(生产环境)
| 服务商 | 特点 | 免费额度 |
|---|---|---|
| Supabase | PostgreSQL + Auth + Storage | 500MB 数据库 |
| Neon | Serverless PostgreSQL | 0.5GB 存储 |
| Railway | 一键部署 | $5 免费额度/月 |
Prisma 连接配置
在 .env 文件中配置数据库连接:
env
# SQLite(本地开发)
DATABASE_URL="file:./dev.db"
# PostgreSQL(生产环境)
DATABASE_URL="postgresql://user:password@localhost:5432/mydb?schema=public"在 prisma/schema.prisma 中配置:
prisma
datasource db {
provider = "postgresql" // 或 "sqlite"
url = env("DATABASE_URL")
}开发到生产的切换策略
- 本地开发:使用 SQLite,零配置启动
- 测试环境:使用 PostgreSQL Docker 容器
- 生产环境:使用云服务 PostgreSQL
Prisma 会帮你处理不同数据库之间的差异,只需要修改 DATABASE_URL 即可。
避坑指南
- SQLite 限制:不支持并发写入,不适合生产环境
- 连接字符串安全:数据库密码必须通过环境变量管理,不要硬编码
- 本地 vs 云端:开发环境用本地数据库,避免网络延迟和费用
- 备份策略:生产数据库必须配置自动备份
