Skip to content
返回部署

使用 FaunaDB 部署

Serverless 文档 DB,ACID 事务、时态查询和多区域。

平台进阶

为什么

FaunaDB 是 serverless 文档数据库,ACID 事务、时态(时间旅行)查询和自动多区域复制。无容量规划 — 按查询付费。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

需跨文档 ACID 的 serverless 应用用 FaunaDB。重读写避免(成本累积)。

如何做

1. 创建 — fauna.com → 新建数据库 2. 集合 — CreateCollection({ name: "users" }) 3. 索引 — CreateIndex 可查询字段 4. FQL — Fauna 查询语言,可组合 5. 认证 — Fauna key 或 token 认证 6. 时态 — .ts() 时间旅行查询 7. SDK — fauna from 'fauna' 用于 JS

示例

import { Client, query as q } from "faunadb"; const client = new Client({ secret: process.env.FAUNA_SECRET }); // 创建和查询 await client.query( q.Create(q.Collection("users"), { data: { name: "Alice", email: "[email protected]" } }) ); const result = await client.query( q.Map(q.Paginate(q.Match(q.Index("users_by_email"), "[email protected]")), q.Lambda("ref", q.Get(q.Var("ref")))) ); // 时态查询 — 获取过去时间的用户 await client.query(q.Get(q.Ref(q.Collection("users"), "123")).ts("2024-01-01T00:00:00Z"));

常见问题

  • ⚠无索引 — 无法按字段查询,先建索引
  • ⚠成本意外 — 按查询付费,面板监控用量
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓所有查询模式建索引 — Fauna 需显式索引
  • ✓复杂事务用 FQL — 可组合,跨文档 ACID
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答