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

2023-12-02 07:12

本文主要是介绍【开发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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/444429

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3