Deno 数据库选型
在 PostgreSQL、SQLite、MongoDB、Redis、Supabase 与 Deno KV 之间选择
Deno 能通过 npm 兼容层使用成熟数据库驱动,也能使用 Web/JSR 生态模块。选择依据应是数据模型、事务和部署环境,而不是“哪个包最像 Deno”。
| 数据层 | 适合 | Deno 接入 |
|---|---|---|
| PostgreSQL | 关系数据、事务、复杂查询 | npm:postgres、npm:pg、Drizzle、Kysely |
| SQLite | 单机、嵌入式、测试、轻服务 | node:sqlite 或兼容库;核对运行版本 |
| MongoDB | 文档模型、既有 Mongo 体系 | 官方 npm driver / Mongoose |
| Redis | cache、rate limit、短期状态 | 官方 npm client 或兼容服务 |
| Supabase | 托管 Postgres + Auth/Storage | 官方 npm SDK 或直接 Postgres |
| Deno KV | 简单 key-value、原子操作、Deno 平台集成 | Deno.openKv();先核对部署平台支持 |
通用连接边界
deno run \
--allow-env=DATABASE_URL \
--allow-net=db.example.com:5432 \
src/main.ts
- 在模块或应用生命周期内复用连接池,不要每次请求新建。
- 密钥只来自环境或 secret store,不进入源码、日志和错误响应。
- migration 是发布步骤;应用启动时自动改 schema 会放大并发风险。
- serverless 实例会并发扩容,连接池上限要结合实例数计算。
- 测试至少覆盖连接失败、事务回滚、唯一约束与超时。
新 Deno Deploy 提供 PostgreSQL 关联、timeline 隔离和 Deno KV,但不同 timeline 的数据与迁移策略必须单独设计。详见 Deploy 数据与 Cron。