Cloudflare D1还是Turso:同为5美元档,运行时绑定更关键

|作者: QUASA 编辑团队|2 分钟阅读
Cloudflare D1还是Turso:同为5美元档,运行时绑定更关键

如果应用的计算层固定在 Cloudflare Workers,D1 的原生绑定通常是更直接的选择;如果同一服务要运行在 Node.js、Deno、Bun 等环境,Turso 的客户端路径更便于保留部署选择。两者都进入约 5 美元的付费档,但价格并非同一种费用:Workers Paid 的月度最低费用为 5 美元,其中包含 Workers 计算用量;Turso Developer 年付折合每月 4.99 美元,按月付费为 5.99 美元,应用运行费用仍取决于所用计算平台。

免费额度也不能只比较月度总数。D1 的免费档每天允许读取 500 万行、写入 10 万行,达到当日上限后查询会报错;Turso Free 则按月提供 5 亿行读取和 1000 万行写入。访问量集中在少数几天时,两个免费档可能给同一工作负载带来不同结果;而一条查询实际扫描多少行,又可能比返回多少条记录更影响账单。

起步价背后,额度怎样计算

D1 随 Workers 套餐提供数据库额度。Workers Paid 包含每月 250 亿行读取、5000 万行写入和账户内 5 GB 存储;超额读取每百万行 0.001 美元,超额写入每百万行 1 美元,额外存储每 GB 月 0.75 美元。D1 不另收数据库数据出站费,但处理请求的 Worker 仍会消耗请求次数和 CPU 时间。Workers Paid 每月包含 1000 万次请求及 3000 万毫秒 CPU 时间,超出后另计费。

Turso Free 提供 5 GB 存储和最多 100 个数据库;Developer 包含 9 GB 存储、每月 25 亿行读取和 2500 万行写入,数据库数量不限。Developer 的超额读取单价是每十亿行 1 美元,超额写入是每百万行 1 美元。这些额度按账户中的实际用量消耗;“数据库不限量”并不意味着每个租户都各有一份独立的读写和存储额度。

D1 的免费读写额度按日重置,付费包含额度按订阅周期计算;Turso 的读写额度按月列示。因此,即使月度读取总量看起来很低,D1 免费档仍可能在流量集中的一天触顶。付费比较则要把 Workers 套餐已经承担的计算任务算进去:若团队本来就在支付该套餐,D1 不会再产生一笔相同金额的数据库订阅费。

Workers 绑定与跨运行时访问

D1 的常用应用路径是给 Worker 配置数据库绑定,再从运行环境中取得该绑定并执行 SQL。开发者对两种接入方式的比较指出,Turso 客户端可用于 Node.js、Deno、Bun 等运行时,而 D1 的应用查询主要经由 Workers 绑定。对于路由、鉴权和后台逻辑都已放在 Workers 的项目,D1 少了一层外部数据库客户端配置;对于计算层分布在多个平台的项目,Turso 更容易保持一致的数据库接入方式。

D1 并非完全无法从 Workers 之外访问:Cloudflare 提供 REST API,也可以让外部服务调用一个代理 Worker。不过,REST API 更适合管理用途,生产应用若经代理访问,就要维护额外的接口、鉴权和错误处理。Turso 虽可跨运行时连接,其地址、凭证和客户端初始化仍需在各部署环境中配置;可移植性降低的是对单一运行时绑定的依赖,并非消除所有部署工作。

两者都使用 SQLite 相关的 SQL 能力,但“SQL 可以复用”不等于应用可以原样迁移。数据库访问层还包含连接或绑定的取得方式、事务接口、迁移脚本以及测试环境配置。若未来只更换计算平台,Turso 客户端代码通常更容易随服务移动;若连数据库供应商一起更换,数据导出、索引、权限和所用扩展功能仍要逐项处理。

多租户数据库与副本,分别消耗什么

Turso 的独立租户数据库与本地副本对应不同的用量条件

按租户分库时,先看数据库数量,再看各库合计的存储与操作量。Turso Free 的 100 个数据库上限会先约束小而多的租户集合;Developer 不限数据库数量,但全部租户仍共同消耗套餐内的存储、读取和写入额度。D1 也适合采用分库设计,不过应用需要维护租户与数据库之间的对应关系,并把各库扫描的行数合计进账户用量。

复制方式则影响读取发生在何处。D1 的全球只读副本在启用后可服务数据库读取;应用要通过 Sessions API 才能让查询使用这些副本,否则查询仍走主库。副本不另收存储或计算费用,查询仍按读取和写入行数计费。Turso 的本地副本方案把数据保留在具有持久化存储的应用环境中,读取可在本地完成,但同步量是另一项额度;在没有持久化本地文件的函数环境中,不能直接套用这种本地读取收益。

Turso Free 列有每月 3 GB 同步额度,Developer 为 10 GB,后者超出部分每 GB 收 0.35 美元。对移动端或常驻服务,本地副本可能改变远程读取次数;对纯无服务器函数,是否能使用本地状态取决于具体运行环境。因此,比较副本时要区分数据库端的只读复制与应用端的本地同步,不能把两者都简单写成“全球读副本”。

正常月和三倍峰值,免费档会怎样分岔

三倍峰值下,Cloudflare D1 的每日免费额度与 Turso 的每月额度产生不同结果

下面是条件模型,用于比较额度,不是实测结果。假设一个月按 30 天计算:应用每月执行 100 万次读取查询,每次实际扫描 100 行,另写入 200 万行,数据库占用 2 GB。月读取量便是 1 亿行;若每天均匀发生,日均约读取 333 万行、写入 6.7 万行。这组数据库用量同时落在 D1 和 Turso 的免费额度内,前提是其他请求限制也未触及。

再假设查询和写入都增加到三倍,且仍均匀分布:月读取变为 3 亿行、写入 600 万行;每天约读取 1000 万行、写入 20 万行。Turso Free 的月度读写额度仍可覆盖这组数值,D1 Free 则会超过每日读写上限,必须降低当日用量或进入付费档。若只是一个活动日突然达到三倍,不能拿其余平静日的剩余额度补给 D1 的当天限额。

为把计算费用纳入同一模型,再假设高峰月有 300 万次 Worker 请求,每次消耗 5 毫秒 CPU,合计 1500 万毫秒。请求和 CPU 都在 Workers Paid 的包含额度内,且上述 D1 读写量、存储量也未超出其付费包含额度,此时 D1 路径的月费用为 5 美元。Turso Free 在这组数据库用量下没有数据库订阅费,但承载应用的计算平台仍需单独计价;这不是两个完整应用账单的直接对比。

缺失索引,怎样让相同 SQL 产生不同账单

同一条 SQL 在有索引与缺失索引时扫描的行数不同,改变 D1 和 Turso 的读取用量

读取额度统计的是查询扫描的行数,不是返回的记录数。Turso 对全表扫描的说明指出,查询即使只找到少量结果,扫描整张表仍会计入整表的行读取;D1 的计费口径同样按实际扫描行数计算。D1 查询结果中的 rows_read 和 rows_written 元数据可显示单次查询的用量,因而请求次数相同,并不保证数据库费用相同。

沿用前面的假设:同一条读取 SQL 每月执行 100 万次。有合适索引时,假设计费结果为每次读取 100 行,月读取共 1 亿行;若缺少索引,假设每次完整扫描一张有 1 万行的表,月读取就变成 100 亿行。SQL 文本与请求次数没有变化,读取量却扩大了 100 倍。这是用固定扫描量展示机制的算例,不代表索引查询必然只读 100 行。

在不计其他超额项目、并保持前述 Workers 请求与 CPU 用量处于包含额度内的条件下,100 亿行读取仍落在 D1 付费档的 250 亿行额度内,月基础费用为 5 美元。Turso Developer 超出 25 亿行额度 75 亿行,按年付折算月价加读取超额费,约为 12.49 美元;按月订阅时基础价更高。索引本身也有代价:D1 对涉及被索引字段的写入会增加计费写入行,索引还占用存储,因此应比较节省的读取与新增的写入、空间用量。

如果这条缺失索引的查询再经历三倍流量,假设月读取达到 300 亿行。D1 比付费包含额度多出 50 亿行,读取超额费为 5 美元,连同基础费用约 10 美元。Turso Developer 若继续按超额单价计算,年付折算月费约 32.49 美元;此时年付折算每月 24.92 美元、包含 1000 亿行读取的 Scaler 档反而更便宜。这个例子没有计入额外同步、存储或计算费用,也没有把索引造成的写入变化假装成固定值。

迁移计算层时,真正要搬走哪些约束

第四种情境是应用准备从 Workers 迁往其他运行时,但数据库暂时保留。选择 D1 时,业务 SQL 可以整理在数据访问层,迁移仍要为原有 Worker 绑定提供新的访问路径,或保留一个代理 Worker;请求鉴权、故障处理和由谁承担这层计算费用都会随之改变。选择 Turso 时,连接客户端可继续用于不同运行时,但新平台仍要配置数据库地址与凭证,并重新核算请求、网络和执行时间的费用。

若数据库也要一起迁移,账面上的读取单价只是成本的一部分。需要搬运的数据量、停写窗口、索引重建、查询行为和副本同步方式,会决定迁移工作有多大;这些工作无法从两张价目表直接换算。对长期固定在 Workers 的应用,D1 绑定带来的简单接入有实际价值;对计算层可能分散或迁出的服务,Turso 的跨运行时客户端通常提供更宽的部署余地。最终影响费用最大的变量,仍是最忙一天的用量以及高频查询实际扫描的行数。

相关阅读:

分享:

订阅我们的新闻通讯

将最新 Web3、AI 和加密货币新闻直接发送到您的邮箱。

0