[ PROMPT_NODE_24074 ]
Do Storage 说明文档
[ SKILL_DOCUMENTATION ]
# Cloudflare Durable Objects 存储
为 Durable Objects 提供的持久化存储 API,支持 SQLite 和 KV 后端、PITR(时间点恢复)以及自动并发控制。
## 概览
DO 存储提供:
- SQLite 后端(推荐)或 KV 后端
- SQL API + 同步/异步 KV API
- 自动输入/输出门控(无竞态条件)
- 30 天时间点恢复 (PITR)
- 事务与闹钟 (Alarms)
**使用场景:** 有状态协调、实时协作、计数器、会话、速率限制器
**计费:** 按请求数、GB-月存储量以及 SQL 操作的读取/写入行数收费
## 快速入门
typescript
export class Counter extends DurableObject {
sql: SqlStorage;
constructor(ctx: DurableObjectState, env: Env) {
super(ctx, env);
this.sql = ctx.storage.sql;
this.sql.exec('CREATE TABLE IF NOT EXISTS data(key TEXT PRIMARY KEY, value INTEGER)');
}
async increment(): Promise {
const result = this.sql.exec(
'INSERT INTO data VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = value + 1 RETURNING value',
'counter', 1
).one();
return result?.value || 1;
}
}
## 存储后端
| 后端 | 创建方法 | API | PITR |
|---------|---------------|------|------|
| SQLite (推荐) | `new_sqlite_classes` | SQL + 同步 KV + 异步 KV | ✅ |
| KV (旧版) | `new_classes` | 仅异步 KV | ❌ |
## 核心 API
- **SQL API** (`ctx.storage.sql`): 完整的 SQLite 支持(包含 FTS5, JSON, 数学函数)
- **同步 KV** (`ctx.storage.kv`): 同步键值对(仅限 SQLite)
- **异步 KV** (`ctx.storage`): 异步键值对(支持两种后端)
- **事务** (`transactionSync()`, `transaction()`)
- **PITR** (`getBookmarkForTime()`, `onNextSessionRestoreBookmark()`)
- **闹钟** (`setAlarm()`, `alarm()` 处理程序)
## 阅读顺序
**DO 存储新手:** configuration.md → api.md → patterns.md → gotchas.md
**构建功能:** patterns.md → api.md → gotchas.md
**调试问题:** gotchas.md → api.md
**编写测试:** testing.md
## 本参考文档内容
- [configuration.md](./configuration.md) - wrangler.jsonc 迁移、SQLite 与 KV 设置、RPC 绑定
- [api.md](./api.md) - SQL 执行/游标、KV 方法、存储选项、事务、闹钟、PITR
- [patterns.md](./patterns.md) - 模式迁移、缓存、速率限制、批处理、父子协调
- [gotchas.md](./gotchas.md) - 并发门控、整数精度、事务规则、SQL 限制
- [testing.md](./testing.md) - vitest-pool-workers 设置, t