前幾天總共介紹了4種不同的儲存方式,今天要來介紹最後一種: Cloud FireStore。 Firestore 跟 Bigtable 一樣,是一種非關聯式的 NoSQL 資料庫。相較於 Bigtable , 它適合儲存相對較小的資料,且價格便宜非常多,也有每天的免費扣打可以使用。
Firestore 是一種 Serverless 的服務,可以簡化儲存、查詢跟各種同步相關的使用需求,主要提供給行動裝置、網頁以及物聯網裝置使用,它也無縫的整合了 Firebase 的驗證機制。
Firestore 支援資料庫的 ACID,保障資料的可靠性。
- Atomicity 原子姓
- 一個事務的所有操作,不可分割,不可約簡。
- 如果過程中發生錯誤,必須還原 (Rollback) 回事務開始前的狀況
- Consistency 一致性
- 在事務的開始前與結束後,確保完整性沒有被破壞。
- Isolation 事務隔離
- 允許同時發起多個事務進行讀寫與修改,藉由隔離可以防止事務交叉執行導致資料的不一致。
- Durability 持久性
- 事務結束後,對於資料的修改就是永久的,故障也不會丟失。
Firestore 會自動的進行 Multi-region 的複製,保障資料的完整性,由於 Server 是完全由 Google 管理,因此對於複雜的 NoSQL Query,也不會降低效能。
目前的 Cloud Firestore 有兩種模式,分別是 Datastore Mode 與 Native Mode。
- Datastore Mode
- 向下相容於 Datastore 的 Application
- Native mode
- 更強健的 Storage layer
- 基於 Collection 以及 document 的 data model
- 支援 Mobile 以及 Web 的客戶端函式庫
Storage 總結
這幾天總共介紹了 Cloud Storage 、 Cloud SQL 、 Cloud Spanner 、 Cloud Big Table 、 Cloud Firestore 等不同的資料儲存方式,那我們要怎麼樣選擇最適合自己的儲存方案呢?
- 檔案儲存 (Binary)
- Cloud Storage
- Binary 資料
- 例如:照片、影音、備份檔案
- Cloud Storage
- Relational (SQL)
- Cloud SQL
- Web 平台
- 例如:CMS
- Cloud Spanner
- HTAP (Hybrid transaction/analytical processing),支援橫向scale
- 例如:Metadata、金融資料
- Cloud SQL
- Non-Relational (No-SQL)
- Cloud Firestore
- 階層式資料,行動裝置、網頁
- 例如:使用者 Profile、遊戲狀態
- Cloud Bigtable
- 需要大量讀寫的資料
- 金融、IoT
- Cloud Firestore