簡介
Cloud Firestore 是一個快速、完全託管、Cloud Native 的 NoSQL 資料庫。適用於在 Firebase 和 GCP 上進行手機 App、網頁和後端開發。Cloud Firestore 目前已 GA 而且已佈署在更多地區,並且支援多種語言,包括:Swift、Java、Go、Python、Node.js 等。
儲存類型
Cloud Firestore 是檔案導向的 NoSQL 資料庫。不像 SQL 資料庫有 table、rows,Cloud Firestore 的資料都是存在檔案 (document),而這些檔案則是以資料夾 (collection)。每個檔案是以 key-value 做儲存資料的格式。
主要功能
高彈性 | 支援高彈性、階層式的儲存格式。資料存入檔案,由資料夾儲存各個檔案。資料夾也支援複雜的巢狀儲存型態。 |
簡易存取 | 可以藉由使用者設定的參數存取單一、特定的檔案或是整個資料夾。 |
即時更新 | 讓所有連接之設備同步至最新的資料。 |
離線支援 | 即時設備離線,應用程式還是能在做更新資料。當設備上線時,應用程式的所有變更會同步至 Cloud Firestore。 |
高擴展性 | Cloud Firestore 支援 multi-region 的自動化備份、高一致性、批次執行的單一性、transaction 支援。 |
Cloud Firestore v.s. Realtime Database
Firebase 提供兩種 Cloud Native 的資料庫,Realtime Database 以及 Cloud Firestore。可以把 Cloud Firestore 視為 Realtime Database 的下一代,延續 Realtime Database 的低延遲特性,新增的功能讓存取更快速、擴展性更好。
Realtime Database | Cloud Firestore | |
資料類型 | JSON 格式,較複雜的階層式資料較難管理 | 檔案與資料夾格式,較好管理複雜的階層式資料 |
離線支援 | 支援 iOS, Android 使用者 | 支援 iOS, Android, Web 使用者 |
Queries |
|
|
寫入以及 transactions |
|
|
可靠性以及效能 |
|
|
擴展性 |
|
|
安全性 |
|
|
價格 |
|
|
Cloud Firestore 與 Realtime Database 相關比較
區域
在使用 Cloud Firestore 之前,必須先選擇資料庫的區域 (location)。為了降低延遲以及增加可用性,請選擇距離您的使用者或服務較近的區域。
使用者可以選擇兩種區域類型,分別為 Multi-region 以及 Regional。Multi-region 顧名思義就是會把資料庫部署在多個 region,可用性較高但是目前只可以選擇歐洲或是美洲的 region。Regional 就是一個特定的區域,例如:asia-east1(台灣)。
註:參考資料
資料加密
Cloud Firestore 在把資料寫入硬碟前會自動加密,使用者不需要額外設定。在存取資料時,也會自動為有權限的使用者解密。
註:參考連結
價格
Cloud Firestore 主要針對以下動作進行收費:
- 讀寫、刪除每個檔案(document)的次數
- 資料庫儲存的大小,包括元數據(metadata)、indexes 等
- 使用的網路流量
假如使用者不是要查詢檔案(document),而是要查詢所有的資料夾(collection) ID,那會以查詢一個檔案的價格收費。
更多詳細的收費範例。
註:參考連結
Cloud Firestore 資料庫類型
在創建 Cloud Firestore 資料庫時可以選擇 Native mode 或是 Datastore mode。以下會比較 Native mode 以及 Datastore mode 的差別。官方文件是建議使用者如果有新的 server projects 可以選擇用 Datastore mode 如果是手機及網頁端的應用程式 projects 則可以選擇 Native mode。
需要注意一個 project 只能選擇一種 mode,兩種 mode 不能供存於同一個 project。
Native Mode | Datastore Mode | |
資料類型 | 資料庫由 document 以及 collections 組成。 | 資料庫由 entity 以及 kind 組成。(原先 Datastore 的格式) |
Queries 以及
Transactions |
|
|
Datastore v1 API | 不支援 | 支援 |
Firestore v1 API | 支援 | 不支援 |
即時更新 | 支援 listen document 的功能,當 document 更新時 client 端會收到最新的資料 | 不支援 |
Client 函式庫 |
|
|
價格 | 價格相同 |
目前在台灣(asia-east1) 還沒有支援 Cloud Firestore,距離較近的區域為東京(asia-northeast1)、香港(asia-east2)。
註:參考連結