当前位置: 首页 > news >正文

【开发PaaS】基于Postgresql的开发平台Supabase

Supadase是开源的。我们选择可扩展的开源工具,使其易于使用。

Supadase不是Firebase的1对1映射。虽然我们正在构建Firebase提供的许多功能,但我们不会以同样的方式进行:

我们的技术选择大不相同;我们使用的一切都是开源的;在任何可能的情况下,我们都使用和支持现有的工具,而不是从头开始开发。

最值得注意的是,我们使用Postgres而不是NoSQL存储。这个选择是经过深思熟虑的。我们相信,没有其他数据库能够提供与Firebase竞争所需的功能,同时保持超越Firebase所需的可扩展性。

选择您的舒适度#

我们在Suabase的目标是让所有的Postgres都易于使用。这并不意味着你必须使用所有的工具。如果你是一名研究生,你可能会喜欢我们提供的工具。如果你以前从未使用过Postgres,那就从小规模开始,慢慢发展。如果你只想把Postgres当作一个简单的表存储,那就太好了。

架构#

每个Subabase项目都由几个工具组成:

supabase-architecture

PostgreSQL (Database)#

PostgreSQL是Suabase的核心。我们不抽象PostgreSQL数据库——您可以访问它并以完全权限使用它。我们只是提供一些工具,使PostgreSQL像Firebase一样易于使用。

  • Official Docs: postgresql.org/docs
  • Source code: github.com/postgres/postgres (mirror)
  • License: PostgreSQL Licence
  • Language: C

Studio (Dashboard)#

用于管理数据库和服务的开源仪表板。

  • Official Docs: Supabase docs
  • Source code: github.com/supabase/supabase
  • License: Apache 2
  • Language: TypeScript

GoTrue (Auth)#

基于JWT的API,用于管理用户和发布访问令牌。这集成了PostgreSQL的行级安全和API服务器。

  • Official Docs: Supabase Auth reference docs
  • Source code: github.com/supabase/gotrue
  • License: MIT
  • Language: Go

PostgREST (API)#

一个独立的web服务器,可以将PostgreSQL数据库直接转换为RESTful API。我们将其与pg_graphql扩展一起使用,以提供graphql API。

  • Official Docs: postgrest.org
  • Source code: github.com/PostgREST/postgrest
  • License: MIT
  • Language: Haskell

Realtime (API & multiplayer)#

一个可扩展的websocket引擎,用于管理用户状态、广播消息和流式数据库更改。

  • Official Docs: Supabase Realtime docs
  • Source code: github.com/supabase/realtime
  • License: Apache 2
  • Language: Elixir

Storage API (large file storage)#

一个S3兼容的对象存储服务,将元数据存储在Postgres中。

  • Official Docs: Supabase Storage reference docs
  • Source code: github.com/supabase/storage-api
  • License: Apache 2.0
  • Language: NodeJS / TypeScript

Deno (Edge Functions)#

JavaScript和TypeScript的现代运行时。

  • Official Docs: deno.land
  • Source code: github.com/denoland/deno
  • License: MIT
  • Language: TypeScript / Rust

postgres-meta (Database management)#

一个RESTful API,用于管理您的postgres。获取表、添加角色和运行查询。

  • Official Docs: supabase.github.io/postgres-meta
  • Source code: github.com/supabase/postgres-meta
  • License: Apache 2.0
  • Language: NodeJS / TypeScript

PgBouncer#

PostgreSQL的轻量级连接池。当使用无服务器函数时,这对于连接到Postgres非常有用。

  • Official Docs: pgbouncer.org
  • Source code: pgbouncer/pgbouncer
  • License: ISC
  • Language: C

Kong (API Gateway)#

一个云原生的API网关,建立在Nginx之上。

  • Official Docs: docs.konghq.com
  • Source code: github.com/kong/kong
  • License: Apache 2.0
  • Language: Lua

产品原理#

我们的目标是提供一个任何大型公司都会为自己设计的体系结构,然后围绕该体系结构提供易于独立开发人员和小型团队使用的工具。

我们使用一系列原则来确保可扩展性和可用性永远不会相互排斥:

一切都是孤立的#

每个系统都必须作为一个独立的工具,尽可能少地使用移动部件。对此的试金石是:“用户能在只有Postgres数据库的情况下运行这个产品吗?”

一切都是一体化的#

苏巴斯是可堆肥的。尽管每个产品都是孤立工作的,但平台上的每个产品都需要是其他产品的10倍。对于集成,每个工具都应该公开一个API和Webhook。

一切都是可扩展的#

我们正在考虑添加一个新工具,而更倾向于扩展现有工具。这与许多云提供商的产品扩展到利基用例正好相反。我们为开发人员提供原语,使他们能够实现任何目标。少,但更好。

一切都是便携的#

为了避免锁定,我们使迁移进出变得容易。我们的云产品与我们的自托管产品兼容。我们使用现有的标准来提高可移植性(如pg_dump和CSV文件)。如果出现了一个与“Subasse”方法相竞争的新标准,我们将反对该方法而支持该标准。这迫使我们在经验上竞争。我们的目标是成为最好的Postgres托管服务。

关注长期

我们牺牲短期胜利换取长期收益。例如,运行一个Postgres的分支,它具有只有我们的客户需要的额外功能,这是很诱人的。相反,我们更愿意支持上游缺失功能的努力,从而使整个社区受益。这还有确保便携性和使用寿命的额外好处。

为开发人员构建#

“开发人员”是一个特定的用户档案:他们是建设者。当将影响作为工作的函数进行评估时,由于开发人员可以构建的产品和系统的类型,他们有很大的效率。随着开发人员的配置文件随着时间的推移而变化,Suabase将继续开发产品以适应这种不断发展的配置文件。

支持现有工具#

Suabase尽可能支持现有的工具和社区。Suabase更像是一个“社区社区”——每个工具通常都有自己的社区供我们使用。开源是我们合作的方式:我们雇佣维护人员,赞助项目,投资业务,并开发我们自己的开源工具。

文章链接

【PaaS】Supabase架构 | 程序员云开发,云时代的程序员.

欢迎收藏【架构师酒馆】和【开发者开聊】

相关文章:

【开发PaaS】基于Postgresql的开发平台Supabase

Supadase是开源的。我们选择可扩展的开源工具,使其易于使用。 Supadase不是Firebase的1对1映射。虽然我们正在构建Firebase提供的许多功能,但我们不会以同样的方式进行: 我们的技术选择大不相同;我们使用的一切都是开源的&#…...

前端开启gzip优化页面加载速度

生成gizp的打包资源,可以优化页面加载速度 打包的时候开启gzip可以很大程度减少包的大小,页面大小可以变为原来的30%甚至更小,非常适合线上部署, 但还记得需要服务端支持 1、前端配置compression-webpack-plugin 先安装:npm install compres…...

用Java写一个俄罗斯方块

目录 游戏规则 小方块类:Cell 七种图形类:I、J、L、O、S、T、Z J L O S T Z 俄罗斯方块游戏主类:Tetris 效果展示 游戏规则 由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它…...

应用于智慧金融的AI边缘计算盒子+AI算法软硬一体化方案

传统金融营业厅存在运营管理模式落后、资源投放不平衡、从业人员培训效果不达预期、客户体验割裂等普遍现象; 部署英码数字金融解决方案,将助力企业从传统金融模式快速向数字金融模式转变,可针对每一个客户定制个性化“一对一”服务&#xff…...

目标检测——Faster R-CNN算法解读

论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 链接:https://arxiv.org/abs/1506.01497 代码:https://github.com/rbgirsh…...

Wireshark (一)安装入门 —— 软件介绍

文章目录 Wireshark是什么?为什么要使用Wireshark?相关网络分析工具软件对比 Wireshark是什么? Wireshark是一种开源网络协议分析器,它可以捕获和分析网络中传输的数据包。 用户可以使用Wireshark来诊断网络问题、了解网络协议的…...

Web框架与Django路由层

Web框架 一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…...

什么是CAS, 什么是AQS

文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer, 是juc 下一个核心的抽象类,用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…...

蓝桥杯每日一题2023.12.1

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题目而言思路较为重要&#xff0c;实际可以转化为求两个数字对应的操作&#xff0c;输出最前面的数字即可 #include<bits/stdc.h> using namespace std; int main() {for(int i 1…...

正则表达式从放弃到入门(1):“正则表达式”是什么?

正则表达式从放弃到入门&#xff08;1&#xff09;&#xff1a;“正则表达式”是什么&#xff1f; 本博文转载自 这是一篇”正则表达式”扫盲贴&#xff0c;如果你还不理解什么是正则表达式&#xff0c;看这篇文章就对了。 如果你已经掌握了”正则表达式”&#xff0c;就不用再…...

SQL解惑 - 谜题2

文章目录 一、谜题描述二、分析三、答案四、总结 一、谜题描述 创建一个记录雇员缺勤率的数据库。使用的表结构如下&#xff1a;Absenteeism 主键&#xff1a;PRIMARY KEY (emp_id, absent_date) 字段名字段类型字段中文名字段描述emp_idINTERGER雇员id-absent_dateSTRING缺勤…...

FWT+高维前缀和:Gym - 103202M

https://vj.imken.moe/contest/597216#problem/F 考虑两个人的集合分别为 i , j i,j i,j&#xff0c;那么我们令 f ( i ⊗ j ) f(i\otimes j) f(i⊗j)&#xff0c;其中 f ( s ) f(s) f(s) 表示两个人不同集合恰好为 s s s&#xff0c;显然 f ( s ) f(s) f(s) 可以FWT求…...

【C++】string类的接口综合运用

目录​​​​​​​ 介绍&#xff1a; 一&#xff0c;string对象的构建 二&#xff0c;string类对象的容量操作 介绍&#xff1a; string容器我们之前已经粗略了解了基本增添、修改、删除、插入等基本功能&#xff0c;这里就不再做过多说明&#xff0c;接下来我们全面并详细…...

分布式ID生成框架Leaf升级踩坑

背景&#xff1a; 在项目中需要一个统一的拿单号等唯一ID的服务&#xff0c;就想起了之前用到的leaf&#xff0c;但是因为项目要求&#xff0c;leaf的版本不符合&#xff0c;需要做一些升级 项目地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 升级点&#xff1…...

常用的设计模式

文章目录 常用的设计模式&#xff1a;一、单例模式3、懒汉式 - 懒汉式非线程安全4、饿汉式 - 线程安全5、懒汉式和饿汉式区别6、双重检查锁定7、应用场景 二、工厂模式1、简单工厂模式2、工厂模式3、抽象工厂4、总结 三、代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cgl…...

git的相关实用命令

参看文章&#xff1a;https://blog.csdn.net/qq_21688871/article/details/130158888 http://www.mobiletrain.org/about/BBS/159885.html 1、git commit后&#xff0c;但发现文件有误&#xff0c;不想push(提交到本地库&#xff0c;回退到暂存区&#xff09; git reset --sof…...

【使用`model.status`来获取gurobi求解过程中的模型状态】

在Gurobi中&#xff0c;你可以使用model.status来获取求解过程中的模型状态。可以使用了model.status来检查模型是否找到最优解。模型状态是一个Gurobi的常量&#xff0c;表示了求解过程中的不同状态。 以下是一些常见的模型状态&#xff1a; GRB.OPTIMAL: 最优解被找到。GRB…...

【UGUI】Unity教程:实现物品的拖拽功能

大家好&#xff0c;今天&#xff0c;我们将一起学习如何在Unity中实现物品的拖拽功能。这是一个非常实用的技能&#xff0c;无论你是在制作RPG游戏的背包系统&#xff0c;还是在制作策略游戏的建筑放置功能&#xff0c;都会用到这个技能。那么&#xff0c;让我们开始吧&#xf…...

【奇淫技巧】两数交换

【奇淫技巧】两数交换 临时变量法&#xff1a;借助中间变量加减法&#xff1a;不使用中间变量异或法&#xff1a;不使用中间变量语法糖&#xff1a;某些编程语言支持交换语法糖借助函数&#xff0c;不交换 前提&#xff1a;待交换的两个元素&#xff0c;分别用a,b表示&#xf…...

Java核心知识点整理大全26-笔记

目录 27. Storm 7.1.1. 概念 27.1.1. 集群架构 27.1.1.1. Nimbus&#xff08;master-代码分发给 Supervisor&#xff09; 27.1.1.2. Supervisor&#xff08;slave-管理 Worker 进程的启动和终止&#xff09; 27.1.1.3. Worker&#xff08;具体处理组件逻辑的进程&#xff…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...