主要观点:传统云存储速度慢,Durable Objects(DO)可将应用代码置于存储层,使代码直接在存储数据的机器上运行,数据库作为本地库嵌入应用,实现零存储延迟且持久一致。DO 起初只提供键值存储,现支持通过 SQLite 实现全 SQL 查询接口。DO 是云原生无服务器平台 Cloudflare Workers 的一部分,可用于实时协作等多种场景,旨在向外扩展而非向上扩展。
关键信息:
- DO 运行于 Cloudflare 网络,可通过唯一名称寻址,能在内存和磁盘中保存状态,自动根据访问位置决定存储位置,应用可创建大量 DO。
- SQLite 是世界上使用最广泛的 SQL 数据库实现,在服务器上不常见但在 DO 中能发挥强大作用,可实现零延迟查询和快速写入。
- SQLite 在 DO 中作为库调用,读写同步,避免异步事件循环的开销和潜在的微妙错误,通过“Output Gates”实现快速写入且不影响吞吐量。
- 零延迟查询允许不同的代码结构,如解决“N+1 selects”问题,使用 SQLite 时无需掌握复杂的 SQL 语法。
- SQLite 支持点时间恢复功能,DO 中使用 SQLite 时计费类似 D1,初期未启用 SQL 查询和存储计费,计划 2025 年上半年启用。
- D1 是更“管理”的数据库产品,与传统云架构适配,而 DO 更具控制权和灵活性。
- SQLite 支持的 DO 背后的存储中继服务(SRS)基于本地磁盘作为对象存储缓存的理念,通过记录数据库变更日志并批量上传、通过全球网络的追随者服务器中继等方式实现高效存储和快速确认写入,还支持点时间恢复功能。
重要细节:
- DO 示例中,航空公司可创建 FlightSeating DO 用于管理航班座位分配,通过 SQL 操作数据库。
- SRS 监控 SQLite 的 WAL 文件记录变更,批量上传至对象存储,偶尔上传数据库快照, followers 服务器协助确认写入和存储持久化。
- 开始使用 SQLite-in-DO 可访问开发者文档并通过 Discord 提供反馈,Cloudflare 提供多种网络服务和产品。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。