Supabase拿下10万Star,用Postgres做出的Firebase开源替代品
GitHub上有一个项目最近突破了10万Star,它就是Supabase。一句话概括:用PostgreSQL做后端,给开发者类似Firebase的体验,但代码完全开源,数据完全在你手里。
Supabase把PostgreSQL这个数据库包装成一套完整的后端平台。数据库、接口、用户认证、文件存储、实时订阅、边缘函数,全在一个平台上搞定。你可以用它的云服务,也可以把整套代码部署到自己的服务器上。

一套Postgres,六项能力
Supabase把Postgres的能力拆成了六个模块:
数据库。 基于Postgres,支持行级安全策略,在数据库层面就能定义谁可以看到哪些数据。
接口自动生成。 建完数据表,REST和GraphQL接口自动就有了。背后是PostgREST和pg_graphql这两个子项目在工作,不需要手写CRUD。
用户认证。 基于JWT,支持邮箱、手机号、第三方登录。认证信息和Postgres的行级安全策略打通,权限控制精确到行。
文件存储。 每个项目自带S3兼容的对象存储,文件权限同样由Postgres管理。
实时订阅。 数据库中的增删改操作通过WebSocket推送到前端。背后是Elixir写的Realtime服务,监听Postgres的复制日志来捕获变更。
边缘函数。 在全球边缘节点运行TypeScript或Deno函数,处理需要服务端执行的逻辑。

架构上不搞重复造轮子
Supabase的技术选型比较务实。它没有从零写数据库,也没有自研认证系统,而是把现存的开源项目组装起来。
Postgres做主数据库,PostgREST生成REST接口,GoTrue处理认证,Kong做API网关。每个组件都是Apache 2或MIT协议,可以单独拆出来用。
这套组合拳的效果是,你不用在多个SaaS之间拼积木。注册一个Supabase账号,数据库、认证、存储、实时这些立马就通了。
自托管还是用云
Supabase提供两种部署方式。
第一种是用它的云平台。免费额度给两个项目、500MB数据库空间,个人开发和小项目够用了。
第二种是自托管。所有组件都提供Docker镜像,拉下来用docker-compose启动。数据留在你自己的服务器上,适合对数据有控制要求的团队。
客户端覆盖主流语言
Supabase官方维护了JavaScript、Flutter、Swift、Python四个SDK。社区还贡献了C#、Go、Java、Kotlin、Ruby、Rust、Godot的客户端。无论前端是什么技术栈,基本上都能找到对应的库。
而且它的客户端设计是模块化的。PostgREST客户端、Auth客户端、Realtime客户端能单独用,不强制引入整个SDK。
最后说两句
Supabase不是Firebase的精确复制品,它也没打算这么做。Firebase用NoSQL,Supabase用Postgres;Firebase是Google的闭源云服务,Supabase开源且可自托管。二者的共同点是都希望让开发者少写后端代码。
如果你在选型后端服务,三个场景适合考虑Supabase:需要SQL但不想写后端接口;项目有自托管需求;技术栈里已经有Postgres,想把认证和存储也统一起来。
10万Star的社区规模说明这套方案经过了大量验证。对于个人开发者和中小团队,它提供了一个把Postgres用出Firebase体验的选择。
套方案经过了大量验证。对于个人开发者和中小团队,它提供了一个把Postgres用出Firebase体验的选择。

1047

被折叠的 条评论
为什么被折叠?



