书接上文,在上一篇文章中,我们解决了“部署上线”的问题,这一篇要解决的是出海产品最核心、也最容易翻车的部分——数据库架构。如果你正在用 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
...本文是付费文章
以上是此文章的预览内容