Supabase 介绍
Supabase 是一个开源的 Firebase 替代品,以BaaS的形式向各种应用程序提供了一系列的后端功能,可以帮助开发者更快地构建产品。
对于想快速实现一个产品而言,如果使用传统开发,又要兼顾前端开发,同时又要花费时间构建后端服务。Supabase能够让开发人员可以专注于前端开发,而无需花费大量时间和精力来构建和维护后端基础设施。
Supbase 产品包括 Postgres 数据库和身份验证服务,存储和无服务器服务(用于后端逻辑)仍在开发中。它的所有工具大多是免费和开源的。Postgres 数据库包括与数据库相关的工具,例如对数据库修改的实时监控和一个管理界面。
此外,它还提供了可与 Firebase 相媲美的快速 API 和语法。这允许您以一致的方式处理 CRUD 任务,让您专注于创建而不是重写重复的 CRUD 代码。
Supabase 的功能
- 数据库:Supabase 使用 PostgreSQL 作为数据库,支持 SQL 和 RESTful API 访问。
- 认证:Supabase 提供了一个完整的认证系统,支持邮箱、手机号、第三方服务等多种登录方式。
- 实时订阅:Supabase 允许你通过 WebSocket 实现实时数据同步,无需编写额外的代码。
- 存储:Supabase 提供了一个对象存储服务,可以方便地上传、下载和管理文件。
- 边缘函数:Supabase 支持在边缘节点上运行 JavaScript 函数,可以用来处理请求或触发事件。
工作方式
Supabase 是一个开源工具的组合。我们正在使用企业级的开源产品构建 Firebase 的功能。如果存在相应的工具和社区,并且有 MIT、Apache 2 或同等的开放许可,我们将使用并支持该工具。如果该工具不存在,我们就自己开发并开放源代码。Supabase 不是 Firebase 的一对一映射。我们的目标是使用开源工具为开发者提供类似 Firebase 的开发者体验。
当前架构
Supabase 是一个托管平台。你可以注册并开始使用 Supabase,而无需安装任何软件。你也可以自托管和本地开发。
- PostgreSQL 是一个对象关系型数据库系统,经过 30 多年的积极开发,它在可靠性、功能健壮性和性能方面赢得了很好的声誉。
- Realtime 是一个 Elixir 服务器,允许你使用 WebSocket 监听 PostgreSQL 的插入、更新和删除。Supabase 监听 Postgres 的内置复制功能,将复制的字节流转换为 JSON,然后通过 WebSocket 广播 JSON。
- PostgREST 是一个 Web 服务器,可以将你的 PostgreSQL 数据库直接生成 RESTful API
- Storage 提供了一个 RESTful 接口,用于管理存储在 S3 中的文件,使用 Postgres 来管理权限。
- postgres-meta 是一个 RESTful API,用于管理你的 Postgres,允许你获取表、添加角色和运行查询等。
- GoTrue 是一个基于 SWT 的 API,用于管理用户和发布 SWT 令牌。
- Kong 是一个云原生 API 网关。
客户端库
我们的客户库是模块化的。每一个子库都是一个独立的实现,用于一个单一的外部系统。这是我们支持现有工具的方式之一。
语言 | 客户端 | 模块-客户端(已集成在 Supabase 客户端中) | |||
---|---|---|---|---|---|
Supabase | PostgREST | GoTrue | Realtime | Storage | |
官方 | |||||
JavaScript (TypeScript) | supabase-js | postgrest-js | gotrue-js | realtime-js | storage-js |
社区 | |||||
C# | supabase-csharp | postgrest-csharp | gotrue-csharp | realtime-csharp | storage-csharp |
Flutter | supabase-dart | postgrest-dart | gotrue-dart | realtime-dart | storage-dart |
Go | - | postgrest-go | - | - | - |
Java | - | - | gotrue-java | - | - |
Kotlin | supabase-kt | postgrest-kt | gotrue-kt | realtime-kt | storage-kt |
Python | supabase-py | postgrest-py | gotrue-py | realtime-py | - |
Ruby | supabase-rb | postgrest-rb | - | - | - |
Rust | - | postgrest-rs | - | - | - |
Swift | supabase-swift | postgrest-swift | gotrue-swift | realtime-swift | storage-swift |
什么是BaaS
BaaS(Backend as a Service,后端即服务)是一种新型的云服务,其中开发人员将 Web 或移动开发的幕后组件外包,以便他们可以专注于在即插即用的基础上构建和维护前端,并且摆脱编写服务器端代码的负担。
BaaS 平台(用于移动应用程序)提供支持服务器端任务的软件,例如身份验证、数据库管理、实时更新、存储、托管和推送警报。
尽管各种后端服务从根本上提供相同的解决方案,但它们使用不同的后端技术。这是许多开发人员在为某个项目选择最佳服务时的决定性因素。
项目地址:https://github.com/supabase/supabase
欢迎关注我的公众号