最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【架構(gòu)篇】Supabase架構(gòu)和功能介紹

2023-08-26 19:31 作者:張文平__  | 我要投稿

Supabase是什么

Supabase將自己定位為Firebase的開源替代品,提供了一套工具來幫助開發(fā)者構(gòu)建web或移動應(yīng)用程序。Supabase是建立在Postgres之上的,Postgres是一個(gè)免費(fèi)的開源數(shù)據(jù)庫,被認(rèn)為是世界上最穩(wěn)定、最先進(jìn)的數(shù)據(jù)庫之一。Supabase對標(biāo)Firebase,因此也屬于BaaS,下面是cloudflare對BaaS的一段比較經(jīng)典的定義描述:

后端即服務(wù) (BaaS) 是一種云服務(wù),開發(fā)人員在使用BaaS進(jìn)行 Web 或移動應(yīng)用開發(fā)時(shí),僅需自行編寫和維護(hù)前端代碼。BaaS提供商為開發(fā)者提供了開發(fā)應(yīng)用所需要的后端服務(wù),例如用戶身份驗(yàn)證、數(shù)據(jù)庫管理、推送通知(針對移動應(yīng)用程序),以及云存儲和托管等。

BaaS 使開發(fā)人員可以專注于編寫前端應(yīng)用程序代碼。通過 BaaS 供應(yīng)商提供的 API和 SDK,他們可以集成所需的所有后端功能,而無需自行構(gòu)建后端。他們也不必管理服務(wù)器、虛擬機(jī)或容器,即可保持應(yīng)用程序運(yùn)行。因此,開發(fā)者可以更快地構(gòu)建和啟動移動應(yīng)用程序和 Web 應(yīng)用程序。

Supabase與Firebase的關(guān)系

Supabase號稱是Firebase的開源替代,但其底層技術(shù)和對外接口實(shí)際上跟Firebase完全不同,因此用Firebase開發(fā)的應(yīng)用是不能直接遷移到Supabase上的,需要進(jìn)行代碼改造。

下面是一些主要的區(qū)別:

  • Firebase提供的是NoSQL接口(Firestore),其功能和接口相對簡單,入門容易,但是數(shù)據(jù)關(guān)聯(lián)查詢能力要弱很多。而Supabase的底層是PostgreSQL,可以作為簡單的kv來使用,也可以完成復(fù)雜的企業(yè)級場景應(yīng)用的構(gòu)建。

  • Supabase的核心組件都是基于開源工具構(gòu)建的。Firebase只有商業(yè)版本,且國內(nèi)無法使用。

  • 開發(fā)者如果有條件,可以自己部署Supabase在私有云環(huán)境中使用。Firebase則只能使用Google的服務(wù)。

Supabase基本架構(gòu)

Supabase圍繞PostgreSQL組合了一系列的開源工具,用以實(shí)現(xiàn)BaaS所需的用戶認(rèn)證、實(shí)時(shí)數(shù)據(jù)庫、對象存儲、RESTAPI接口等功能。在整合這些工具的同時(shí),為開發(fā)者封裝了統(tǒng)一的SDK,方便開發(fā)者以統(tǒng)一的方式調(diào)用這些能力。官方提供了JavaScript和Flutter的SDK,社區(qū)貢獻(xiàn)了Python、C#、Swift、Kotlin的SDK,開發(fā)者在開發(fā)移動端和web應(yīng)用時(shí),可以很方便的調(diào)用Supabase提供的后端能力。

下面是Supabase整體架構(gòu)圖:

開發(fā)者主要通過三個(gè)組件來使用Supabase

  • Supabase SDK

如上所述,Supabase官方及社區(qū)貢獻(xiàn)了目前主流的移動端和Web端的SDK,幫助開發(fā)者更容易的開發(fā)應(yīng)用。Supabase SDK有非常多的子項(xiàng)目構(gòu)成,通常以supabase-*命名,如supabase-js,supabase-dart。

  • Supabase Studio

Studio是Supabase的管理頁面,也就是suapbase的官方網(wǎng)站以及project管理控制臺這些Web及后端服務(wù)都是Studio這個(gè)工具實(shí)現(xiàn)的。studio的代碼在supabase的主倉庫里。

  • Supabase CLI

supabase的命令行管理工具,可以方便的在命令行上管理project。

Supabase通過四個(gè)核心組件為開發(fā)者提供后端服務(wù)

  • Postgrest

postgres是一個(gè)歷史比較悠久的開源組件,能夠?qū)ostgresql以REST接口暴露給開發(fā)者,開發(fā)者可以直接通過HTTP接口操作數(shù)據(jù)庫。

  • storage api

提供對象存儲功能,解決開發(fā)者需要上傳、下載文件的需求,比如圖片、文檔等。storage api將數(shù)據(jù)存儲在S3存儲上。

  • gotrue

用戶登錄認(rèn)證模塊,幫助用戶簡化其應(yīng)用的用戶管理。允許開發(fā)者使用郵箱、手機(jī)號進(jìn)行注冊、登錄模塊的開發(fā),也可以通過OAuth協(xié)議接入github、google、apple等平臺的賬號。

  • realtime

realtime利用postgresql的listen/notify機(jī)制,實(shí)現(xiàn)了postgres數(shù)據(jù)庫實(shí)時(shí)數(shù)據(jù)變更通知能力。

在此基礎(chǔ)上,Supabase還提供了如下一些能力

  • 云函數(shù)(edge function)

postgrest本身提供了調(diào)用postgresql function的能力,開發(fā)者可以在pg中用sql或者JavaScript編寫函數(shù),然后通過rpc接口調(diào)用pg的函數(shù)。pg的函數(shù)能在一定程度上解決部分業(yè)務(wù)場景的需求,但是仍舊存在一些不方便或者不直觀的地方。

云函數(shù)(edge function)可以更靈活的適配一些場景,比如支付等需要跟第三方系統(tǒng)進(jìn)行對接的場景,使用云函數(shù)可以讓開發(fā)者編寫后端代碼并運(yùn)行在服務(wù)端。

  • Graphql

graphql是通過postgresql插件實(shí)現(xiàn)的,開發(fā)者在postgres建表之后,可以直接通過graphql進(jìn)行數(shù)據(jù)庫操作。

  • Web hook

Web hook為開發(fā)者提供了事件觸發(fā)能力,開發(fā)者可以設(shè)定滿足某個(gè)條件時(shí),自動觸發(fā)外部接口的調(diào)用,從而跟第三方系統(tǒng)進(jìn)行集成。比如跟飛書機(jī)器人集成。

Supabase還依賴下面這些組件來提供服務(wù)

  • PostgreSQL

一切的核心。Supabase整個(gè)服務(wù)是圍繞PostgreSQL構(gòu)建的。

  • kong

API網(wǎng)關(guān)。負(fù)責(zé)將API請求路由到目標(biāo)服務(wù)組件,并轉(zhuǎn)發(fā)結(jié)果給用戶。

  • postgres-meta

PostgreSQL的元數(shù)據(jù)管理組件,主要為studio提供服務(wù),可以用來查詢數(shù)據(jù)庫中的表、角色,執(zhí)行SQL等。

Supabase技術(shù)棧

由于Supabase組合非常多的開源組件,因此其后端服務(wù)(不包括SDK)的整體技術(shù)棧也相對復(fù)雜。使用到的開發(fā)語言和框架有:

  • Javascript/Typescript

  • Tailwind

  • Go

  • Elixir

  • Haskell

  • React

  • Nextjs

  • Phoenix

  • fastify

  • knex

  • chi

這其中有不少國內(nèi)比較冷門的編程語言,比如Haskell、Elixir

Supabase SDK介紹

Supabase的SDK也是通過組合多個(gè)客戶端庫實(shí)現(xiàn)的,以JavaScript SDK為例:

如上圖所示,supabase-js實(shí)際上是粘合了多個(gè)不同的組件的sdk客戶端,這樣做的好處:

  • 開發(fā)者不需要關(guān)注某個(gè)具體的組件如何工作,全部統(tǒng)一使用supabase-js的接口訪問后端服務(wù)。

  • supabase-js幫助開發(fā)者完成了各個(gè)組件間用戶認(rèn)證鑒權(quán)的統(tǒng)一處理。

總結(jié)

Supabase以PostgreSQL為核心,組合使用了很多優(yōu)秀的開源工具,為開發(fā)者提供了一個(gè)架構(gòu)良好、簡單易用的開發(fā)平臺。用戶可以使用Supabase提供的托管服務(wù),也可以使用這些組件自己搭建平臺在內(nèi)部使用。伴隨著PostgreSQL的流行,整個(gè)pg生態(tài)會更加完善,開發(fā)者也會越來越多的首選PostgreSQL作為核心數(shù)據(jù)庫。Supabase幾乎是將PostgreSQL當(dāng)做操作系統(tǒng)來使用,充分發(fā)掘了PostgreSQL的各種優(yōu)勢和能力,在后面我會給大家做更多的分享,相信能讓你腦洞大開。

【架構(gòu)篇】Supabase架構(gòu)和功能介紹的評論 (共 條)

分享到微博請遵守國家法律
凌海市| 洪湖市| 讷河市| 苏州市| 大化| 深州市| 岳普湖县| 梁平县| 静海县| 广南县| 商南县| 潞城市| 庆元县| 汉沽区| 青川县| 安丘市| 包头市| 德格县| 庄浪县| 南华县| 满洲里市| 江城| 文登市| 余庆县| 渑池县| 平湖市| 普格县| 安平县| 安阳县| 华宁县| 额济纳旗| 科技| 农安县| 龙岩市| 新泰市| 芦山县| 安宁市| 盈江县| 固镇县| 大关县| 浑源县|