什么是 D1
D1 是 Cloudflare 提供的关系型数据库,基于 SQLite 构建,跑在全球边缘节点上。它最大的特点是:数据离用户更近,查询延迟更低,而且计费很友好,个人项目基本可以忽略成本。
创建第一个数据库
在 wrangler 中初始化 D1 非常简单:
npx wrangler d1 create my-blog-db
创建完成后,会返回一个 database_id。接下来在配置文件中声明绑定:
[[d1_databases]]
binding = "DB"
database_name = "my-blog-db"
database_id = "xxxx-xxxx"
执行 SQL
D1 支持标准的 SQL 语法,建表、插入、查询都可以直接用:
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
views INTEGER DEFAULT 0
);
在 Worker 里通过 env.DB.prepare() 执行语句:
const { results } = await env.DB.prepare(
'SELECT * FROM posts ORDER BY views DESC'
).all();
使用场景
- 网站访问量统计(本站的用量面板就用它);
- 评论、点赞等轻量数据;
- 全文索引的补充存储。
小结
D1 适合中小规模的数据需求,配合 Workers 可以做出很多有意思的小应用。如果你习惯了传统数据库,D1 的上手成本几乎为零。