全部文章
2026-08-27FlareStarter Teamengineeringcloudflared1supabasecomparison

Cloudflare D1 vs Supabase——这个对比通常本身就是品类错误

Supabase 是建在 Postgres 上的后端平台,D1 是绑定在 Worker 上的 SQLite 数据库。直接对打是错的,而正确的对比问题更有用。附 2026 年 8 月真实定价。

多数「D1 vs Supabase」的文章摆出两张功能表然后选个赢家。这个框架从一开始就是坏的。

Supabase 是后端平台——Postgres 加上认证、存储、实时、向量检索、边缘函数,打包成一个产品。D1 是数据库——SQLite,绑定在 Worker 上,仅此而已。

所以诚实的对比不是「哪个数据库更好」,而是:你想要一个直接给你五个服务的平台,还是想要自己拼装的原语? 回答了这个,数据库的问题基本就自己回答了。

FlareStarter Pro 跑在 D1 上。这篇讲理由,也包括 Supabase 明显更合适的地方。

老实摆定价

公开费率,截至 2026-08-23。

Cloudflare D1——包含在 $5/月的 Workers 付费套餐里,不单独计费:

包含超出
行读取每月 250 亿每百万 $0.001
行写入每月 5000 万每百万 $1.00
存储5 GB每 GB-月 $0.75

免费额度:每天 500 万行读、5 GB 存储。

Supabase Pro——$25/月,含 $10 计算额度:

包含超出
数据库存储8 GB每 GB $0.125
MAU100,000每 MAU $0.00325
出站流量250 GB每 GB $0.09

免费额度:500 MB 数据库、50,000 MAU、5 GB 出站,最多 2 个项目——而且免费项目闲置一周后会被暂停。

三个比标称数字更重要的观察:

计费维度不同,所以单位价格对比毫无意义。 D1 按触碰的行数收费,Supabase 按存储、出站流量和用户数收费。读多、行小的应用在 D1 上很便宜,在 Supabase 上中等;存储大、查询少的应用则反过来。

每月 250 亿行包含读量是个很高的天花板。 以典型 B2B SaaS 的查询模式,多数团队都摸不到。这是 D1 最强的经济学论据。

免费项目会暂停是 Supabase 免费档最大的反对理由。 一个睡了一周的副业项目回来时是停机状态。D1 没有这个行为。

Postgres 有而 SQLite 没有的

这是 D1 明确落败的地方:

  • 扩展。 做 embedding 的 pgvector、做地理的 PostGIS、真正好用的全文检索。如果你要在数据库里做 AI 向量检索,D1 没有答案,Supabase 有。
  • 行级安全(RLS)。 Supabase 整套客户端模型都建立在 RLS 上——浏览器直连数据库,由策略强制访问控制。D1 没有对应物,每个查询都要经过你的 Worker,由代码来强制访问控制。
  • 并发。 Postgres 能扛很多并发写入者,SQLite 在设计上把写入串行化。
  • 类型与 SQL 表面。 丰富类型、窗口函数、CTE、物化视图。SQLite 现在覆盖了不少,但不是全部。
  • 实时订阅,开箱即用,基于 websocket。

如果上面任何一条对你的产品是承重的,别读了,用 Supabase。这不接近。

绑定为什么胜过连接

D1 的优势不在数据库引擎,而在数据库相对于你代码所处的位置。

D1 数据库是一个 binding——注入进 Worker 环境的对象。没有连接串、没有连接池、没有 TLS 握手、没有凌晨三点的「连接数过多」。Serverless 运行时和连接池数据库之间的关系一直很别扭,Cloudflare 的解法是干脆不要连接。

从 Cloudflare Workers 访问 Supabase 是可行的,但你是在从一个 isolate 里跨网络够一个 Postgres 实例。你走 HTTP 层或连接池代理,接受那一跳。那一跳通常没问题,但它永远不是零。

在 FlareStarter Pro 里这体现为:组织成员关系、座位订阅、credits 账本、API key、审计行,全都在同一个 D1 数据库里做外键关联,由服务这次请求的同一个 Worker 查询,没有连接池可耗尽,也没有第二个服务可宕机。

D1 会在哪咬你

说具体点,因为多数鼓吹 D1 的文章不说:

  • 写入串行化。 写密集型负载——比如高频事件摄取——不是 D1 的形状。
  • 迁移是永久的。 一旦生产应用过某个迁移,它的历史就冻结了。这对任何数据库都成立,但 D1 的工具链留给你纠错的余地更小。
  • 生态更小。 完整支持它的 ORM 更少、能检查它的工具更少、撞过你这个 bug 的人更少。
  • 没有 RLS 意味着访问控制是你代码的职责。 这是一份真实且持续的安全责任,而 Supabase 能把它推进数据库里。
  • 其余部分你自己拼。 认证、存储、实时——Supabase 包含,D1 不含。你会自己加上 better-auth、R2 和 Durable Objects。

这些情况选 Supabase

  • 你就是需要 Postgres——扩展、pgvector、全文检索、复杂 SQL。
  • 你要 RLS,好让客户端能安全地直连数据库。
  • 你想要认证、存储、实时打包好、第一天就能用。
  • 你的负载写密集或高并发。
  • 你不在 Cloudflare 上——那 D1 的主要优势对你根本不适用。

这些情况选 D1

  • 你已经在 Workers 上,想让数据库待在同一个运行时里。
  • 你的负载读密集——那 250 亿行的天花板是实打实省下来的钱。
  • 你想要一份账单、一个平台,而不是一堆厂商。
  • 你能接受在应用代码里强制访问控制。
  • 你想要一个不会睡着的免费档。

结论

如果你不在 Cloudflare 上,这个对比很简单:用 Supabase。D1 的优势是「离 Worker 近」,没有 Worker 就没有优势。

如果你在 Cloudflare 上,问题就变成了:你是否需要 Postgres 的能力到了值得跨网络去够的程度。对一个 CRUD 形态的 B2B SaaS——组织、订阅、账本、审计日志——通常不需要。对任何涉及向量、地理、实时的东西,通常需要。

按能力选,别按跑分选。行读取天花板只有在功能集已经匹配之后才有意义。


FlareStarter Pro 建在单个 Worker 内的 D1 与 KV 之上——组织、座位计费、只追加的 credits 账本、API key 限流、审计日志,全部在同一个数据库里做外键关联。

定价取自 Cloudflare 与 Supabase 公开页面,截至 2026-08-23,会漂移。