目录 (Outline)
- 一、 数据库的「Serverless 革命」:为什么传统的 RDS 已经不够用了?
- 二、 Neon:带「分支」功能的 Serverless Postgres
- 三、 Turso:基于 SQLite 的全球边缘数据库
- 四、 核心优势:冷启动优化、自动伸缩与全球分发
- 五、 快速上手:构建一个基于 Neon 的全栈应用
- 六、 实战 1:利用 Neon Branches 实现「开发隔离」与「预览部署」
- 七、 实战 2:利用 Turso 边缘同步实现毫秒级数据读取
- 八、 总结:Serverless Database 的选型建议
一、 数据库的「Serverless 革命」:为什么传统的 RDS 已经不够用了?
1. 历史局限
传统的关系型数据库(如 AWS RDS)是基于「持久连接」设计的:
- 连接数限制:在 Serverless 函数(如 Lambda)并发量大的时候,数据库连接会瞬间被耗尽。
- 高昂成本:即便没有流量,你也必须为运行中的实例付费。
- 扩展困难:手动伸缩极其繁琐。
2. 痛点
数据库冷启动慢、无法按需付费、缺乏边缘化支持。
二、 Neon:带「分支」功能的 Serverless Postgres
Neon 是一家创新的 Postgres 提供商。
核心特性
- 存储与计算分离:计算层可以自动缩减到零。
- 数据库分支 (Database Branching):你可以像创建 Git 分支一样创建一个数据库副本(包含所有数据和 Schema),用于测试或开发。
- HTTP 协议访问:支持通过 WebSockets 建立连接,完美适配 Serverless 环境。
三、 Turso:基于 SQLite 的全球边缘数据库
Turso 改变了我们对 SQLite 的认知。
核心特性
- 基于 libSQL:SQLite 的高性能分支。
- 全球复制 (Replication):数据可以自动同步到离用户最近的边缘节点。
- 毫秒级延迟:读取速度快如闪电。
四、 核心优势:冷启动优化、自动伸缩与全球分发
1. 极致弹性
当没有请求时,计算资源自动归零。当第一个请求到来时,数据库在几百毫秒内即可唤醒。
2. 全球一致性
Turso 的全球复制功能,让无论是在东京还是纽约的用户,都能获得极低的数据访问延迟。
五、 快速上手:构建一个基于 Neon 的全栈应用
代码示例:配置 Drizzle 与 Neon
import { neon } from '@neondatabase/serverless';
import { drizzle } from 'drizzle-orm/neon-http';
const sql = neon(process.env.DATABASE_URL!);
const db = drizzle(sql);
// 查询操作
const result = await db.select().from(users);
六、 实战 1:利用 Neon Branches 实现「开发隔离」与「预览部署」
你可以为每个 PR (Pull Request) 自动创建一个独立的数据库分支:
- 触发 PR:Vercel 部署预览版应用。
- 同步数据库:Neon API 自动克隆生产数据库的一个分支。
- 测试:在预览环境中放心地修改数据和 Schema,不会影响主库。
七、 实战 2:利用 Turso 边缘同步实现毫秒级数据读取
场景
你有一个全球化的电商应用,需要展示商品详情。
实现思路
- 主库:在主区域进行写操作。
- 边缘从库:在各个区域部署 Turso 副本。
- 读取:边缘函数(Cloudflare Workers)直接从本地副本读取数据,延迟通常小于 10ms。
八、 总结:Serverless Database 的选型建议
- 如果你需要强大的事务支持和复杂的查询:Neon (Postgres) 是最佳选择。
- 如果你追求极致的读取速度和边缘化部署:Turso (SQLite) 是首选。