Supabase:帮助快速构建应用后端的BaaS服务

最近在使用一些低代码平台进行开发部署的时候,经常会看到一个用于部署的组件:Supabase。那这是什么呢?本文整理并组织了一些supabase的基本信息,帮助大家对这玩意有个快速的了解。

简介

Supabase 作为一个开源的 Firebase 替代品,其核心在于提供了一个完整的后端即服务 (BaaS) 平台帮助开发者快速构建和部署应用程序。它的核心功能包括:

核心功能 说明
实时数据库 (Realtime Database) 基于 PostgreSQL,提供实时数据同步功能,让前端应用可以实时获取数据库的更新。支持订阅、查询等操作,方便构建实时应用。
身份认证 (Authentication) 提供全面的用户认证系统,支持多种登录方式(邮箱、手机号、社交登录等)。可以自定义用户角色和权限,实现细粒度的访问控制。
存储 (Storage) 提供对象存储功能,用于存储用户上传的图片、视频等文件。集成 S3 兼容接口,方便与其他云存储服务对接。
边缘函数 (Edge Functions) 允许开发者在边缘节点上运行 JavaScript 函数,实现自定义逻辑。可以用于处理请求、触发事件、实现服务端渲染等。
GraphQL API 提供 GraphQL API,支持灵活的数据查询和操作。可以根据需要自定义 GraphQL schema。
REST API 自动生成基于 PostgreSQL schema 的 REST API,方便前端和移动端访问数据。

features

  • 快速开发: Supabase 提供了开箱即用的功能,如身份验证、数据库、存储等,大大加快了开发速度。
  • 实时数据: 实时订阅功能让开发者可以轻松构建实时应用。
  • 灵活可扩展: Supabase 基于 PostgreSQL,具有强大的扩展性,可以满足各种复杂的业务需求。
  • 开源: 可以自由地查看和修改源代码,具有高度的灵活性。
  • 成本效益高: Supabase 提供了免费的套餐,适合小型项目和个人开发者。

Supabase 的使用场景

Supabase在可以对以下场景发挥比较大的作用:

  • 需要快速构建 MVP 的项目: Supabase 可以帮助你快速搭建一个可用的产品原型。
  • 对数据实时性要求高的项目: Supabase 的实时订阅功能非常适合构建实时应用。
  • 需要高度自定义后端的项目: Supabase 的开源特性允许你根据自己的需求进行定制。
  • 对安全性要求高的项目: Supabase 提供了强大的安全机制,可以保护你的数据。

一些更常见的具体的应用场景如下:

  • Web 应用开发

    • 实时聊天应用: 利用 Supabase 的实时订阅功能,实现消息的实时推送。
    • 社交网络: 构建用户、帖子、评论等功能,并实现用户之间的实时互动。
    • 在线商城: 管理产品信息、用户订单、支付等功能。
    • 博客系统: 创建、编辑和发布文章,并实现用户评论和点赞功能。
  • 移动应用开发

    • 移动端应用的后端: 为 iOS 和 Android 应用提供数据存储、用户认证等服务。
    • 物联网应用: 收集和存储传感器数据,实现远程控制等功能。
  • 内部工具开发

    • 公司内部管理系统: 构建员工管理、项目管理等内部工具。
    • 数据分析平台: 收集和分析用户数据,生成报表。

架构分析

Supabase的架构主要围绕 PostgreSQL 数据库,并结合了其他开源工具,提供了一套完整的功能。关于架构的更多详情参考官方文档,这里列出其主要架构:

核心组件

对于每一个supabase项目都会由以下组件构成

组件 说明
KONG 云原生API网关
GoTrue 提供用户认证和授权功能,支持多种认证方式,如邮箱、社交登录等。
Postgrest 基于 PostgreSQL 的 RESTful API,允许开发者通过 HTTP 请求对数据库进行 CRUD 操作。
Realtime 基于 Postgres LISTEN/NOTIFY 机制实现的实时订阅功能,可以实时推送数据更新。
Storage 提供对象存储功能,用于存储用户上传的文件。
postgres-meta 用于管理你的 Postgres 的 RESTful API。获取表、添加角色并运行查询。
Edge Functions 允许开发者编写自定义函数,处理请求和响应
pg_graphql 提供graphQL的API
PostgreSQL 数据库 作为 Supabase 的数据存储核心,PostgreSQL 提供了强大的关系型数据库功能,支持复杂的查询和事务。

开发流程

当我们要基于Supabase进行开发时,一个基本的流程如下:

  1. 用户创建项目: 在 Supabase 平台上创建一个新的项目。
  2. 配置数据库: 自定义数据库的表结构、索引和权限。
  3. 开发前端: 使用 Supabase JavaScript 客户端库,在前端应用程序中调用 Supabase 提供的 API,实现数据查询、更新、认证等功能。
  4. 部署: 将前端应用部署到任意平台,后端服务由 Supabase 托管。

处理流程

  1. 用户在前端发起一个请求,例如获取用户信息。

  2. 前端代码调用 Supabase JavaScript 客户端库,发送请求到 Supabase 的 API。

  3. Supabase 的 API 接收到请求后,将请求转发给 PostgreSQL 数据库。

  4. PostgreSQL 执行查询,返回结果。

  5. Supabase 将查询结果返回给前端。

最后

本文主要介绍了Supabase的功能、主要特性、使用场景,并介绍了其架构组成,帮助我们对这个平台建立一个快速清晰的了解。关于Supabase的更多信息(比如架构和具体如何进行业务开发、具体实践等),本文没有做过多的介绍,建议感兴趣的朋友自己再去官网详细了解。

相关推荐
Victor35627 分钟前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易27 分钟前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Kiri霧34 分钟前
Range循环和切片
前端·后端·学习·golang
WizLC37 分钟前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Victor35643 分钟前
Netty(19)Netty的性能优化手段有哪些?
后端
爬山算法1 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端
白宇横流学长1 小时前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端
Python编程学习圈2 小时前
Asciinema - 终端日志记录神器,开发者的福音
后端
bing.shao2 小时前
Golang 高并发秒杀系统踩坑
开发语言·后端·golang
壹方秘境2 小时前
一款方便Java开发者在IDEA中抓包分析调试接口的插件
后端