GCP Firestore NoSQL
serverless 文档 DB — 强一致性、实时监听、移动离线同步。
GCP进阶
为什么
Firestore 自动伸缩、实时同步客户端、移动离线工作。强一致性、ACID 事务。免费:1GB 存储 + 5 万读/天。无需连接池。
何时使用
需实时同步的移动/Web 应用、用户画像、排行榜时用。避免复杂连接(用 Cloud SQL)或重分析(用 BigQuery)。
如何做
1. 创建 — Firebase 控制台或 gcloud、Native 模式(非 Datastore)
2. 集合 — /users/{userId}/orders/{orderId}、层次
3. 添加 — db.collection("users").add({...})
4. 查询 — .where("age", ">", 18).limit(50)、需复合索引
5. 实时 — onSnapshot、自动同步所有监听
6. 事务 — 原子读 + 写、冲突重试
7. 安全规则 — 声明式、按文档控制访问
8. 离线 — SDK 缓存、重连同步
示例
import { initializeApp } from "firebase/app";
import { getFirestore, collection, onSnapshot, where, query } from "firebase/firestore";
const db = getFirestore(initializeApp(config));
// 实时监听 — 自动更新
const q = query(collection(db, "orders"), where("status", "==", "pending"));
onSnapshot(q, (snap) => {
snap.docChanges().forEach((c) => {
console.log(c.type, c.doc.data()); // added/modified/removed
});
});
// 安全规则 — 仅所有者可读
rules_version = '2';
service cloud.firestore {
match /databases/{db}/documents {
match /users/{userId} { allow read, write: if request.auth.uid == userId; }
}
}
常见问题
- ⚠需复合索引 — Firestore 提示创建、随规则部署
- ⚠读成本 — 5 万免费后 $0.036/10 万、实时监听累积
- ⚠无 != 查询 — 用多 where 子句或重构
最佳实践
- ✓用安全规则 — 声明式、DB 强制、无需服务器
- ✓批写 — 每批 500 操作、降成本和延迟
- ✓用 Cloud Functions 触发 — 服务端响应变更、无客户端轮询
常见问题解答
什么是GCP Firestore NoSQL?它解决什么问题?
serverless 文档 DB — 强一致性、实时监听、移动离线同步。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。
如何在 5 分钟内上手GCP Firestore NoSQL?
两步即可跑通:① 创建 — Firebase 控制台或 gcloud、Native 模式(非 Datastore);② 集合 — /users/{userId}/orders/{orderId}、层次。建议先用免费套餐验证流程,再接入生产环境。
GCP Firestore NoSQL 最容易踩的坑是什么?
最高频的问题是:需复合索引 — Firestore 提示创建、随规则部署。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。
GCP Firestore NoSQL 的最佳实践有哪些?
GCP Firestore NoSQL 的最佳实践包括:用安全规则 — 声明式、DB 强制、无需服务器;批写 — 每批 500 操作、降成本和延迟;用 Cloud Functions 触发 — 服务端响应变更、无客户端轮询。其中首条「用安全规则 — 声明式、DB 强制、无需服务器」应作为团队默认规范写入 IaC 模板。
GCP Firestore NoSQL 如何控制成本与避免账单意外?
三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。GCP Firestore NoSQL 多数提供免费套餐,先在免费额度内验证再放量。