每每在软件项目开发中,后端研发都是一个重头戏。如果我们要从头搭建,会花费大量时间,如果使用商业软件则会有更多的限制。
现在,有一个超级好的开源后端解决方案,它的名字叫做 Supabase,提供一个高度集成的后端即服务平台,称为BaaS,能够让开发者轻松能够上手,快速构建出功能更强大的后端服务。
Supabase 的创立故事
Supabase 由Paul Copplestone(首席执行官)和 Ant Wilson(首席技术官)于 2020 年初创立。
Copplestone 曾在东南亚的一家初创公司工作时尝试使用 Firebase。起初,它很方便,但当他需要强大的可扩展性、更灵活的查询或自定义功能时,他意识到扩展起来非常困难。如果切换到像 PostgreSQL 这样的关系数据库,他就必须自行构建实时功能和身份验证,这会带来巨大的开销。因此,Supabase 的初衷就是弥补这一缺陷——“保持 Firebase 级别的简洁性,同时享受 Postgres 般的灵活性”。
他们首先在 GitHub 上发布了一个开源的“实时 Postgres”项目,迅速引起了 Hacker News 和其它开发者社区的关注。很快,用户数量就飙升。后来,他们加入了 Y Combinator(S20 批次),并将宣传语调整为“Firebase 的开源替代品”,这一举措迅速获得了成功。
2020 年春季,Supabase 连续两天登上 Hacker News 的头版,用户数量几乎在一夜之间从 80 人飙升至 800 人,这迫使团队不得不迅速提升基础设施。此后,他们迅速添加了身份验证和存储功能,短短几年内,Supabase 就发展成为一个全球开发者平台。
Supabase 的产品特点及其与竞争对手的区别
与 Firebase 和 AWS Amplify 的比较
Supabase 快速增长的一个重要原因是 2020 年代初人们对 SQL 和开源技术重新燃起的兴趣。诚然,无代码、无服务器和 BaaS 解决方案(例如 Firebase 或 AWS Amplify)在加速开发方面确实取得了显著成效。但随着时间的推移,扩展这些解决方案或在 NoSQL 环境中处理复杂查询,让许多工程师感到头疼。相比之下,Supabase 的方法则以 PostgreSQL(一个久经考验的关系数据库)为骨干,同时仍秉承 Firebase 标志性的简洁性。最重要的是,它是完全开源的,因此它本质上是一个“开源后端平台”,兼具 BaaS 的便利性和 SQL 的灵活性。
当比较 Supabase 和 Firebase 时,数据模型方面的一个重要区别就显现出来了。Firebase 的 Firestore 是 NoSQL 且无模式的,这对于快速原型设计非常有用,但在需要高级 JOIN 或事务时可能会受到限制。人们也经常提到 Firebase 的供应商锁定问题,尤其是对于大公司而言。同时,Supabase 的代码库是完全开源的。您甚至可以自行托管它,如果您在云端运行 Supabase,底层技术是标准的 Postgres,因此如果需要,迁移或与其他服务集成要容易得多。实时功能也以不同的方式实现。Firebase 使用专有方法来猜测数据变化,而 Supabase 直接使用 Postgres 的 WAL(预写日志)来检测变化,让您保持实时更新,而无需牺牲关系数据库的功能。
与 AWS Amplify 相比,Amplify 提供了大量的亚马逊服务。这对于大型生态系统来说非常好,但也可能增加你的学习难度。例如,你可以将 Amplify 与 Cognito 结合使用进行身份验证,与 DynamoDB 或 Serverless Aurora 结合使用进行存储,等等——这会让你感觉相当复杂。与此同时,Supabase 更加精简:你拥有一个单一、一致的 UI,并且大部分后端功能都集中在一个地方,这大大降低了小型团队或刚起步人员的开销。此外,Amplify 通常与 DynamoDB(NoSQL)配对使用,因此如果你的应用程序改变方向,你可能不得不不断重新设计数据设计。Supabase 使用 Postgres,因此你会感受到“坚实的 RDB 可靠性”,加上自动化的 REST 和 GraphQL API,当需求发生变化时,这非常灵活。
与 Hasura 的区别
现在,如果将其与 Hasura 进行比较,该平台是一个“GraphQL 引擎”,位于您已有的 Postgres 之上,通过 GraphQL 自动公开您的架构。另一方面,Supabase 更像是一个“一体化 BaaS”,将身份验证、存储、实时功能等捆绑在一个解决方案中。如果您使用 Hasura,通常需要单独添加文件存储或身份验证提供程序,然后将它们全部拼凑在一起。相比之下,Supabase 将这些组件整合在一起,前端开发人员尤其喜欢这种方式,因为摩擦更少。在实时功能方面,Hasura 使用基于轮询的 GraphQL 订阅模型,而 Supabase 则本机监控 WAL 日志并推送更新,通常提供更好的性能和更低的延迟。
因此,Supabase 的定位与大型 BaaS 平台(Firebase、AWS Amplify)和纯 GraphQL 服务(如 Hasura)本质上有所不同。关键在于,它保留了关系型数据库的高级查询和可扩展性,同时又能提供 Firebase 所期望的那种精简的开发体验。而且由于它是开源的,您可以根据需要自行托管,并且可以轻松采用向量搜索等新功能,而不会感到被束缚。实际上,从初创公司到大型企业,各种各样的公司都已开始将 Supabase 用于各种项目:人工智能(使用 pgvector)、大型 SaaS(据说比 Amplify 更容易),甚至将 Web3 用作链下数据存储。从本质上讲,Postgres 的声誉和开源社区不断推动着良性循环:友好的用户界面、免费套餐帮助人们快速上手,并且这种势头持续不断。因此,那些认为 Firebase“方便但不灵活”,Amplify“功能强大但复杂”,或 Hasura“非常适合 GraphQL 但缺少其他功能”的开发者,最终往往会选择 Supabase 作为“恰到好处”的解决方案。从 2020 年到 2023 年左右,这个最佳平衡点带来了我们现在看到的爆炸式增长。
Supabase 为何受到开发者的青睐?
让我们深入探讨一下 Supabase 为何能引起如此多开发者的强烈共鸣。我们将从几个角度来探讨——开源、社区参与、以 Postgres 为中心的设计等等。
开源和社区驱动改进的力量
Supabase 完全开源,这一点至关重要。用户可以查看源代码、进行探索,甚至根据需要进行修改。事实上,GitHub 上有一个活跃的贡献者群体,他们提交问题和拉取请求。由于 Supabase 集成了 GoTrue(用于身份验证)、PostgREST(用于自动生成 API)和 pgvector(用于向量搜索)等热门开源软件,因此对于希望在久经考验的开源解决方案上进行构建的开发者来说,它极具吸引力。在社区的推动下,功能通常会快速添加或改进。
自托管能力也至关重要。在金融或医疗保健等安全至上的行业中,能够在本地运行整个堆栈是一个巨大的优势。一些用户,例如 Quivr,已经指出,他们更喜欢像 Supabase 这样的开源解决方案,而不是像 Auth0 这样的专有服务,正是因为它避免了供应商锁定,并且保持了一切透明。从更广泛的意义上讲,社区信任 Supabase 是一个值得信赖的稳定平台。
围绕 PostgreSQL 的设计
Supabase 团队做出的最明智的决定之一就是全面拥抱 PostgreSQL 生态系统。例如,Firebase 主要采用 NoSQL(Firestore),这对于基本用例来说非常出色,但当您需要更复杂的查询,或者需要具有关系约束的结构良好的数据时,它就会变得令人头疼。Supabase 依赖于 Postgres,这意味着您可以执行高级 SQL 查询、依赖行级安全性 (RLS)、处理事务,并将数据存储在常规的关系模式中。对于许多企业开发人员或经验丰富的工程师来说,SQL 至关重要——因此,Supabase 恰好做到了“轻松入门,成就卓越”这一完美平衡。
一个突出的功能是 pgvector,它支持直接在 Postgres 中进行向量搜索。这对于 AI 工作负载来说意义重大,它让您无需启动像 Pinecone 这样的专用向量数据库,即可管理来自 OpenAI 或 Stable Diffusion 等模型的嵌入。这让您感到轻松,因为您可以简化整个架构,同时仍然获得强大的性能,例如语义搜索或推荐。Supabase 迅速拥抱 Postgres × AI 是他们在该领域超越许多其他 BaaS 产品的一个重要原因。
简单的开发者体验(DX)和自动生成的 API
另一个重要卖点是卓越的开发者体验。一旦定义好 Postgres 模式,即可立即获得 REST 和 GraphQL 端点——无需手动编写自定义后端代码。只需一个周末,即可快速搭建一个基本的 Web 或移动应用原型,这对于希望快速测试创意的初创公司或独立开发者来说,无疑是一个巨大的福音。
同时,Supabase Realtime 通过监控 WAL 日志来工作,让您在数据库发生更改时自动向客户端发送推送更新。这意味着构建实时聊天、协作工具或实时仪表板变得非常简单。例如,Chatbase 就利用此功能实时处理用户请求,在不停机的情况下扩展到数十万访客,并在短短五个月内实现了 100 万美元的月收入。如果您能够在一个地方处理身份验证和存储,则可以节省大量的开发时间。
Supabase 代码开源,可说是Firebase的完美替代品。
从技术侧讲它基于一系列开源工具构建,比如Postgres、PostgREST、Realtime、GoTrue等一系列,它为开发者提供了一个完整并且容易使用的后端解决方案。不论是数据库管理、实时数据同步,还有身份验证、文件存储、Supabase都能轻松应对。
此外,Supabase还提供了RESTful API和GraphQL API,开发者设计好数据库后,Supabase就能自动生成API接口,从而省去了大量编写API的工作。
Supabase还支持通过WebSocket实现实时数据同步,当数据有变化时,可以自动更新推送到客户端。
当前成绩
Supabase当前在GitHub的星级为82.1K!
https://github.com/supabase
性能特色
强大数据库支撑:基于 PostgreSQL 构建,提供 REST 和 GraphQL 双接口,支持 SQL 原生操作,复杂查询、事务处理轻松搞定,灵活适配不同开发习惯。
开源自托管模式:代码完全开源可定制,支持自建服务器部署,数据存储与处理完全自主掌控,安全隐私有保障,尤其适合敏感项目。
一站式功能模块:集成用户认证(邮箱 / 手机号 / OAuth 等)、文件存储、Serverless 函数部署、WebSocket 实时通信等常用后端功能,无需重复造轮子。
高兼容性生态:无缝对接 React、Vue、Node.js、Python 等主流框架与语言,提供多语言 SDK,支持 Docker 容器化部署、Git 版本控制,开发流程更顺畅。
开发者友好设计:文档详细且入门门槛低,新手能快速上手,资深开发者也能找到高级玩法,配套活跃社区可交流答疑,降低学习成本。
如何快速使用
1)官方云托管平台
如果你不想自己搭建环境,可以直接注册使用 Supabase 的官方云托管平台。
访问 Supabase 官网 https://supabase.com,点击注册按钮,使用邮箱或 GitHub 账号进行注册。
注册完成后,登录到 Supabase 仪表板,创建一个新的项目。
在项目仪表板中,你可以看到项目的基本信息和配置选项。
接下来,你可以开始使用 Supabase 提供的各种功能,比如创建数据库表、配置身份验证等。
2)本地部署
当然,你也可以选择在本地部署 Supabase,方便在开发环境中进行调试。
git clone https://github.com/supabase/supabase.git
cd supabase/docker
cp .env.example .env
docker-compose up -d
访问仪表板:
服务启动后,可以通过 http://localhost:8000 访问 Supabase 仪表板,默认用户名是 supabase,密码是 this_password_is_insecure_and_should_be_updated。
项目体验展示
使用 Supabase 开发,那种高效的体验是让人赞叹的。比如创建项目、表结构、插入数据、查看文档以及在前端展示数据,整个流程都非常顺畅。
你可以轻松地创建一个用户表,通过简单的 API 调用实现用户注册和登录,还能实时更新和展示数据。
小结
Supabase 不仅功能强大,而且非常灵活,特别适合那些想要快速开发、又希望能完全掌控自己数据的开发者。无论是个人项目还是创业公司,甚至是大型企业,都能在 Supabase 中找到适合自己的解决方案。
总之,如果你正在寻找一个高效、可扩展的后端解决方案,Supabase 绝对值得一试,相信它会成为你的开发利器。
更多细节功能,感兴趣的可以到项目地址查看:
https://github.com/supabase/supabase
编辑:行动中的大雄
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。