机械做网站好处,上孩做网站,电子产品网页设计模板,免费虚拟主机空间Supabase是什么
Supabase将自己定位为Firebase的开源替代品#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的#xff0c;Postgres是一个免费的开源数据库#xff0c;被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…Supabase是什么
Supabase将自己定位为Firebase的开源替代品提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的Postgres是一个免费的开源数据库被认为是世界上最稳定、最先进的数据库之一。Supabase对标Firebase因此也属于BaaS下面是cloudflare对BaaS的一段比较经典的定义描述
后端即服务 (BaaS) 是一种云服务开发人员在使用BaaS进行 Web 或移动应用开发时仅需自行编写和维护前端代码。BaaS提供商为开发者提供了开发应用所需要的后端服务例如用户身份验证、数据库管理、推送通知针对移动应用程序以及云存储和托管等。、 BaaS 使开发人员可以专注于编写前端应用程序代码。通过 BaaS 供应商提供的 API和 SDK他们可以集成所需的所有后端功能而无需自行构建后端。他们也不必管理服务器、虚拟机或容器即可保持应用程序运行。因此开发者可以更快地构建和启动移动应用程序和 Web 应用程序。
Supabase与Firebase的关系
Supabase号称是Firebase的开源替代但其底层技术和对外接口实际上跟Firebase完全不同因此用Firebase开发的应用是不能直接迁移到Supabase上的需要进行代码改造。
下面是一些主要的区别 Firebase提供的是NoSQL接口Firestore其功能和接口相对简单入门容易但是数据关联查询能力要弱很多。而Supabase的底层是PostgreSQL可以作为简单的kv来使用也可以完成复杂的企业级场景应用的构建。 Supabase的核心组件都是基于开源工具构建的。Firebase只有商业版本且国内无法使用。 开发者如果有条件可以自己部署Supabase在私有云环境中使用。Firebase则只能使用Google的服务。
Supabase基本架构
Supabase围绕PostgreSQL组合了一系列的开源工具用以实现BaaS所需的用户认证、实时数据库、对象存储、RESTAPI接口等功能。在整合这些工具的同时为开发者封装了统一的SDK方便开发者以统一的方式调用这些能力。官方提供了JavaScript和Flutter的SDK社区贡献了Python、C#、Swift、Kotlin的SDK开发者在开发移动端和web应用时可以很方便的调用Supabase提供的后端能力。
下面是Supabase整体架构图 开发者主要通过三个组件来使用Supabase
Supabase SDK
如上所述Supabase官方及社区贡献了目前主流的移动端和Web端的SDK帮助开发者更容易的开发应用。Supabase SDK有非常多的子项目构成通常以supabase-*命名如supabase-jssupabase-dart。
Supabase Studio
Studio是Supabase的管理页面也就是suapbase的官方网站以及project管理控制台这些Web及后端服务都是Studio这个工具实现的。studio的代码在supabase的主仓库里。
Supabase CLI
supabase的命令行管理工具可以方便的在命令行上管理project。
Supabase通过四个核心组件为开发者提供后端服务
Postgrest
postgres是一个历史比较悠久的开源组件能够将postgresql以REST接口暴露给开发者开发者可以直接通过HTTP接口操作数据库。
storage api
提供对象存储功能解决开发者需要上传、下载文件的需求比如图片、文档等。storage api将数据存储在S3存储上。
gotrue
用户登录认证模块帮助用户简化其应用的用户管理。允许开发者使用邮箱、手机号进行注册、登录模块的开发也可以通过OAuth协议接入github、google、apple等平台的账号。
realtime
realtime利用postgresql的listen/notify机制实现了postgres数据库实时数据变更通知能力。
在此基础上Supabase还提供了如下一些能力
云函数(edge function)
postgrest本身提供了调用postgresql function的能力开发者可以在pg中用sql或者JavaScript编写函数然后通过rpc接口调用pg的函数。pg的函数能在一定程度上解决部分业务场景的需求但是仍旧存在一些不方便或者不直观的地方。
云函数edge function可以更灵活的适配一些场景比如支付等需要跟第三方系统进行对接的场景使用云函数可以让开发者编写后端代码并运行在服务端。
Graphql
graphql是通过postgresql插件实现的开发者在postgres建表之后可以直接通过graphql进行数据库操作。
Web hook
Web hook为开发者提供了事件触发能力开发者可以设定满足某个条件时自动触发外部接口的调用从而跟第三方系统进行集成。比如跟飞书机器人集成。
Supabase还依赖下面这些组件来提供服务
PostgreSQL
一切的核心。Supabase整个服务是围绕PostgreSQL构建的。
kong
API网关。负责将API请求路由到目标服务组件并转发结果给用户。
postgres-meta
PostgreSQL的元数据管理组件主要为studio提供服务可以用来查询数据库中的表、角色执行SQL等。
Supabase技术栈
由于Supabase组合非常多的开源组件因此其后端服务不包括SDK的整体技术栈也相对复杂。使用到的开发语言和框架有
Javascript/TypescriptTailwindGoElixirHaskellReactNextjsPhoenixfastifyknexchi 这其中有不少国内比较冷门的编程语言比如Haskell、Elixir
Supabase SDK介绍
Supabase的SDK也是通过组合多个客户端库实现的以JavaScript SDK为例 如上图所示supabase-js实际上是粘合了多个不同的组件的sdk客户端这样做的好处 开发者不需要关注某个具体的组件如何工作全部统一使用supabase-js的接口访问后端服务。 supabase-js帮助开发者完成了各个组件间用户认证鉴权的统一处理。
总结
Supabase以PostgreSQL为核心组合使用了很多优秀的开源工具为开发者提供了一个架构良好、简单易用的开发平台。用户可以使用Supabase提供的托管服务也可以使用这些组件自己搭建平台在内部使用。伴随着PostgreSQL的流行整个pg生态会更加完善开发者也会越来越多的首选PostgreSQL作为核心数据库。Supabase几乎是将PostgreSQL当做操作系统来使用充分发掘了PostgreSQL的各种优势和能力在后面我会给大家做更多的分享相信能让你脑洞大开。