"Firestore"
- 從 Firestore 遷往自建 relational:撞牆驅動的 Type E 重建模、存取模型反轉與並行期
Firestore → 自建後端 + relational 不是匯資料而是反轉存取模型:client 直連變 API 中介、Security Rules 授權變後端授權、document 反正規化變正規 schema、realtime listener 與 offline 同步要重建;本文走 Type E paradigm shift 結構、展開為何字面遷移不成立、哪些該遷哪些先留、dual-write + shadow read 階段化與遷出代價判讀
- Firestore Security Rules 授權建模與可測試化:把規則當程式碼治理
Firestore client 直連模型把整個授權控制面壓在 Security Rules 這套 DSL 裡;本文展開規則的求值模型、把授權拆成可組合 function、用 emulator 寫單元測試、五個把規則寫成資安漏洞的 production 踩坑,以及規則複雜度撞牆時把授權拉回後端的邊界
- Firestore 高頻寫入與 distributed counter:單 document contention 邊界與分片計數
Firestore 單一 document 有持續寫入的軟上限、高頻計數寫爆 contention 是常見事故;本文展開寫入 contention 的成因、distributed counter 分片計數的實作與讀取彙總、shard 數量與讀寫成本的取捨、五個高頻寫入踩坑,以及計數需求超過分片能處理時改走外部聚合的邊界
- Firestore document 反正規化與一致性維護:fan-out write、副本同步與資料修復
Firestore 沒有 JOIN,查詢能力逼著把關聯資料反正規化複製多份;本文展開反正規化的建模決策、fan-out write 維護副本一致、batch 與 transaction 的選擇、五個副本不一致的 production 踩坑,以及反正規化複雜到該回關聯式的邊界
- Firestore realtime listener 扇出與成本:snapshot 訂閱、re-read 計費與連線規模
Firestore 的 snapshot listener 提供即時同步、但訂閱的扇出、查詢結果變動的 re-read 計費與連線數會在規模下變成成本與效能瓶頸;本文展開 listener 的推送模型、訂閱範圍設計、五個 realtime 成本踩坑,以及即時需求超過 listener 該換推送架構的邊界
- Firestore Distributed Counter Lab
在 emulator 上實作 distributed counter:建立 N 個 shard、隨機分片寫入、觀察 shard 分佈是否均勻、讀取彙總驗證總和正確,並說明 contention 本身是 emulator 不模擬的 production 特性
- Firestore Local Emulator Quickstart
用 Firebase CLI 啟動 Firestore emulator、寫 firestore.rules、用 admin SDK seed 資料、跑 query baseline 與 cleanup,建立後續 Security Rules 與 distributed counter lab 共用的本地環境
- Firestore Security Rules Test Lab
用 @firebase/rules-unit-testing 在 emulator 上把 Security Rules 寫成自動化測試:放行 / 越權拒絕 / 未登入拒絕 / 欄位竄改拒絕四類斷言、firebase emulators:exec 在 CI 跑、把規則測試接進 release gate