EdgeOne Makers 数据库存储
上一篇 讲了 Blob 存储,适合放文件和大对象。但业务里还有很多”结构化数据”——用户信息、订单、文章内容,这些更适合用数据库。这篇讲在 EdgeOne Makers 上怎么选数据库、怎么在 Cloud Functions 里用它。
先选对存储类型
Makers 提供多种存储,别一上来就用数据库。按需选择:
| 数据类型 | 适合用什么 | 文章 |
|---|---|---|
| 配置、会话、计数器 | KV 存储 | KV 存储 |
| 图片、视频、文件 | Blob 存储 | Blob 存储 |
| 结构化业务数据 | 数据库(本篇) | — |
| 向量、Embedding | 向量数据库(见下文) | — |
数据库的形态
在 Serverless 场景下,传统”自己装一个 MySQL”并不合适,因为函数实例是无状态的、随时启停。Makers 提供的是按需连接的数据库能力,常见两类:
| 类型 | 特点 | 适合 |
|---|---|---|
| 关系型(SQL) | 支持事务、复杂查询 | 订单、账务等强一致场景 |
| 文档型 / 向量型 | schema 灵活、擅存 Embedding | 内容、AI 检索 |
连接数据库一般在 Cloud Functions 里完成,因为函数有稳定的运行环境和出站网络。
在 Cloud Functions 里连接
以 Node.js 函数为例,把连接信息放到环境变量(见 构建与环境变量),代码里读取并查询。
// 从环境变量读取连接串,不要写死在代码里
const connectionString = process.env.DB_URL;
export async function handler(request) {
// 伪代码:建立连接 -> 查询 -> 返回
const db = connect(connectionString);
const users = await db.query("SELECT id, name FROM users LIMIT 10");
return new Response(JSON.stringify(users), {
headers: { "content-type": "application/json" },
});
}
要点:
| 注意点 | 说明 |
|---|---|
| 连接串放环境变量 | 避免泄露,也方便多环境切换 |
| 连接池 | 复用连接,别每次请求都新建 |
| 超时与重试 | 函数有执行时限,慢查询要设超时 |
| 只读副本 | 读多写少时走只读,降低主库压力 |
向量检索与 AI
如果你在做 AI 应用(见 AI 模型概览),常需要”语义搜索”:把问题转成向量,再去库里找最相似的片段。这类需求要用到向量数据库或带向量能力的表。
| 步骤 | 说明 |
|---|---|
| 入库 | 把文档切片,调模型生成 Embedding,存入向量表 |
| 查询 | 把用户问题生成 Embedding,做相似度检索 |
| 拼接 | 把检索到的片段连同问题发给大模型生成答案 |
这正是 RAG(检索增强生成)的核心,EdgeOne Makers RAG 与知识库 会展开讲。
选择建议
| 场景 | 推荐 |
|---|---|
| 简单键值、高频读 | KV |
| 文件、媒体 | Blob |
| 业务结构化数据 | 关系型数据库 |
| AI 语义检索 | 向量数据库 |
速查卡片
| 要点 | 说明 |
|---|---|
| 数据库在哪用 | 主要在 Cloud Functions 里连接 |
| 连接串 | 放环境变量,用连接池 |
| SQL vs 文档 | 强一致用 SQL,灵活/AI 用文档或向量 |
| AI 检索 | 向量数据库 + Embedding |
| 选型 | KV/Blob/SQL/向量 各司其职 |