数据库

连接您的数据库

从前端、后端或无服务器环境连接Postgres数据库


快速概览

连接数据库的方式取决于您的连接来源:

快速入门

数据API与客户端库

数据API允许您通过REST或GraphQL请求与数据库交互。只要启用了行级安全(RLS),您就可以从前端使用这些API获取和插入数据。

为方便起见,您也可以使用Supabase客户端库,它们以开发者友好的接口封装了数据API并自动处理认证:

直接连接

直接连接字符串可直接连接到您的Postgres实例。这种连接方式非常适合持久性服务器,例如虚拟机(VM)和长期运行的容器。典型用例包括AWS EC2实例、Fly.io虚拟机和DigitalOcean Droplets。

连接字符串格式如下:

1
postgresql://postgres:[YOUR-PASSWORD]@db.apbkobhfnmcqqzqeeqss.supabase.co:5432/postgres

在项目仪表板中点击Connect获取项目的直接连接字符串。

共享连接池

每个Supabase项目都包含一个免费的共享连接池。当不支持IPv6时,这是持久性服务器的理想选择。

Supavisor 会话模式

会话模式连接字符串通过代理连接到您的 Postgres 实例。

连接字符串格式如下:

1
postgres://postgres.apbkobhfnmcqqzqeeqss:[YOUR-PASSWORD]@aws-0-[REGION].pooler.supabase.com:5432/postgres

在项目仪表盘中点击 Connect 获取您项目的会话池连接字符串。

Supavisor 事务模式

事务模式连接字符串通过代理连接到您的 Postgres 实例,该代理充当连接池。这种模式非常适合需要大量短暂连接的无服务器或边缘函数。

连接字符串格式如下:

1
postgres://postgres.apbkobhfnmcqqzqeeqss:[YOUR-PASSWORD]@aws-0-[REGION].pooler.supabase.com:6543/postgres

在项目仪表盘中点击 Connect 获取您项目的事务池连接字符串。

专用连接池

对于付费客户,我们会提供一个与您的Postgres数据库同地部署的专用连接池(PgBouncer)。这要求您使用IPv6连接,如果不可行,可以使用IPv4附加组件

专用连接池能确保最佳性能和最低延迟,但会消耗更多项目计算资源。如果您的网络支持IPv6或已启用IPv4附加组件,我们建议优先使用专用连接池而非共享连接池。

通过项目仪表板点击连接获取项目的专用连接池连接字符串。

关于连接池的更多信息

连接池通过复用查询间的现有连接来提升数据库性能,减少建立连接的开销并提高可扩展性。

根据后端是持久化还是无服务器架构,您可以选择使用应用端连接池或服务端连接池(Supabase自动提供的Supavisor)。

应用端连接池

应用端连接池内置于连接库和API服务器中,如Prisma、SQLAlchemy和PostgREST。它们会与Postgres或服务端连接池保持多个活跃连接,减少查询间建立连接的开销。当部署到静态架构(如长期运行的容器或虚拟机)时,单独使用应用端连接池就已足够。

服务器端连接池

Postgres 连接类似于 WebSocket。一旦建立,它们会一直保持,直到客户端(应用服务器)断开连接。服务器可能只执行一个 10 毫秒的查询,却毫无必要地占用数据库连接数秒甚至更长时间。

服务器端连接池(如 Supabase 的 Supavisor 事务模式)位于客户端和数据库之间,可以视为 Postgres 连接的负载均衡器。

连接池与数据库保持热连接,并智能地在需要时将这些连接共享给客户端,从而最大化单个连接可服务的查询量。它们最适合用于管理来自自动扩展系统(如边缘函数和无服务器函数)的查询。

使用 SSL 连接

在任何可能的情况下,都应使用 SSL 连接数据库,以防止窃听和中间人攻击。

您可以从应用的仪表板获取连接信息和服务器根证书:

连接信息与证书

相关资源