老胡茶室
老胡茶室

出海技术人的“全能基础设施套装” —— Serverless DB 篇

冯宇

书接上文,在上一篇文章中,我们解决了“部署上线”的问题,这一篇要解决的是出海产品最核心、也最容易翻车的部分——数据库架构。如果你正在用 Vercel 构建应用,那你接下来最需要的,就是一个真正适配 Serverless 架构、免维护、还能高性能扩展的云数据库方案。本文将详解 Neon 和 Supabase 两个顶级 Serverless PostgreSQL 方案,带你从选型逻辑到实战集成,一步步搭建能支撑商业化的数据库底座。

在本文中你可以了解到:

  • 什么是 Serverless 数据库?为什么 Vercel 需要 Serverless 数据库?
  • Neon 和 Supabase 的主要特点和区别
  • Drizzle ORM 的快速上手
  • Drizzle ORM 连接 Supabase,部署在 Vercel 环境
  • Polar.sh 商品同步脚本的编写和集成

PostgreSQL 云数据库解决方案 —— Neon / Supabase

对于在部署在 Vercel 的应用,我们需要选择一个 Serverless 的云数据库解决方案。那什么是 Serverless 数据库呢?和传统的独立部署的数据库服务或者 RDS 云服务有何区别呢?

关于 Serverless 数据库的概念,可以直接参考 AWS 的 Blog: 什么是无服务器数据库?,简单来说,Serverless 数据库是一种完全云原生的,按需自动扩展的数据库服务,开发者无需管理底层基础设施,可以专注于应用程序的开发。

和独立部署的数据库服务相比,Serverless 数据库是云原生的,完全免运维的,而且支持弹性伸缩,使用更简便。

和 RDS 云数据库实例相比,它的用量申请更灵活,支持按需计费,也具有更高的可扩展性。而 RDS 通常是预先配置的实例,大部分情况可能只能逐步升级和扩容,难以降级和缩容。

另外就是,Serverless 数据库完全贴合 Serverless 架构的场景,提供服务端的连接池功能,通常直接提供基于 PgBouncer 的连接池服务,传统的 RDS 通常不提供这个服务,需要自己配置 PgBouncer 实现。

而 Vercel 是典型的 Lambda 架构 (在 Vercel 中,它被称为 Vercel Functions),和传统的 C/S, B/S 架构不同,Lambda 不是长时间运行的进程服务,而是由一系列短暂的函数组成,这些函数在需要时被动态调用,执行完毕之后资源就被释放。因此在 Lambda 架构中,你无法像传统的服务端程序一样,使用任何内存来存储临时数据(如缓存,session 等),更无法使用传统的数据库连接池,因为他们是在客户端维护的长连接,使用内存来存储连接池信息。所以在 Lambda 这种短时运行的架构中,是无法使用客户端长连接实现连接池的。因此我们只能使用 Serverless 数据库提供的服务端连接池功能。

而 PostgreSQL Serverless 解决方案中,Neon 和 Supabase 是两个非常优秀的开源云数据库解决方案,而且这两家在 Vercel 都有集成,在 Vercel 的 Marketplace 中可以直接找到它们的集成,点击 Install 即可使用。集成后,你可以在 Vercel 的项目设置中配置数据库连接信息,Vercel 会自动为你创建数据库实例,并提供连接字符串。

如果不需要 Vercel 集成,你也可以直接访问它们的官网进行注册和使用,自行管理实例,在环境变量中配置好连接信息即可。

Neon 和 Supabase 的介绍与对比

Neon 和 Supabase 都是基于 PostgreSQL 的云数据库解决方案,但它们在功能和定位上有所不同。

Neon

Neon 是一个专注于 PostgreSQL 的 Serverless 数据库解决方案,提供了以下主要特点:

  • Serverless 架构:Neon 提供了完全的 Serverless 数据库服务,支持自动扩展和按需计费。
  • 分层存储:Neon 采用了分层存储架构,将热数据和冷数据分开存储,优化了性能和成本。
  • pgrag: 独家支持 pgrag 插件,如需简单的 RAG 需求可以考虑直接使用

Supabase

Supabase 是一个开源的后端即服务 (BaaS) 平台,提供了完整的后端解决方案,包括数据库、认证、存储等。通常被视作 Firebase 的开源替代品。它的主要特点包括:

  • 全栈解决方案:Supabase 提供了数据库、认证、存储、Edge Functions 等完整的后端服务,适合快速开发全栈应用。
  • 实时功能:Supabase 内置实时功能,支持实时更新和订阅,适合构建实时应用。
  • AI:Supabase 提供了 AI 相关的功能,如自动化数据标注和智能查询等,帮助开发者更高效地构建应用。

Neon vs Supabase

...
付费内容

本文是付费文章

以上是此文章的预览内容

数字产品一经出售,概不退款