D1
它是什么
D1 是 Cloudflare 基于 SQLite 构建的 serverless SQL 数据库。你创建一个数据库,把它绑定到一个 Worker 或 Pages 项目,然后通过一套小巧的 JavaScript API 用纯 SQL 查询它。没有需要调整规格的服务器,也没有需要管理的连接池——Cloudflare 负责存储、复制和扩缩,你只为读写的行数付费。
优势
- 真正的 SQL(SQLite 方言)——熟悉的
SELECT、JOIN、事务和索引。 - Serverless:无需预置、没有连接数限制、可缩容到零。
- 通过单一绑定与 Workers 和 Pages 紧密集成。
- 读复制把副本放在靠近用户处,实现低延迟读取。
- 对于典型应用负载成本低廉,并提供可用的免费额度。
取舍
- SQLite 语义:超大数据集和极高的写并发不是它的强项。
- 单库大小限制意味着非常大的数据可能需要分片或改用 R2。
- 比 Postgres/MySQL 更新,因此工具链和生态仍在成熟中。
- 最适合从边缘访问;从 Cloudflare 之外使用它则不那么自然。
何时使用
在 Cloudflare 托管的项目中为应用数据选择 D1:用户记录、内容、设置、会话元数据——任何契合关系模型、并与你的 Workers 或 Pages 应用一同存在的数据。
Vibe coding 契合度
当一个 agent 已经在 Workers 上构建时,D1 是一个强力的默认选项,因为数据库、schema 和查询都在同一个项目里。可以让 agent 把迁移保存在带版本的 .sql 文件中并用 Wrangler 应用它们,这样 schema 就是可复现的。绑定让在处理器内部查询变成一行代码。
# wrangler.toml
[[d1_databases]]
binding = "DB"
database_name = "app-db"
database_id = "your-d1-id"
# Create a DB and run a migration
npx wrangler d1 create app-db
npx wrangler d1 execute app-db --file=./schema.sql