Google Cloud Firestore 簡介
Cloud Firestore 是 Google 提供的一款雲端 NoSQL 資料庫。資料模型上簡單分成了 collection 、 document 結構,本質上也是 JSON 格式,但使用起來更直觀。Firestore 還具有即時同步資料的功能,也就是說一旦資料庫有異動,資料便會自動同步到相關的用戶端上(如手機 App)
Firebase 和 Firestore 的關係
Firebase 是一個平台 BAAS 服務,提供了多種功能如: database 、身份驗證、應用程式部署等等…,併入 Google 後, BAAS 的功能更加地完備了。 而 Firebase 提供比較新的數據庫解決方案就是 Cloud Firestore,即 Firestore 是 Firebase 平台的一個雲端數據庫服務。
Firebase 是一個平台服務,有提供兩種數據庫解決方案,支持實時數據同步:
- Firestore (較新)
- Realtime Database
Firestore
有分成 :
- Native mode
- Datastore mode
目前每個 gcp project ,只允許一個 Firestore,強制預設名稱是 (default),注意括號不能省略 !
簡單整理表格 :
Native Mode | Datastore Mode | |
---|---|---|
資料類型 | document、collections | entity、kind |
Datastore v1 API | 不支援 | 支援 |
Firestore v1 API | 支援 | 不支援 |
即時更新 | 支援 listen document 的功能 | 不支援 |
一個 project 只能選擇一種 mode。
在 Cloud Firestore 中,存儲的基本單位是 document。其中 :
- collection 內會包含 document
- document 內可以包含 collection 和欄位 fields
- field 只能存在 document 內。
document 是一個 lightweight record ,可包含欄位fields,也可以嵌套另一個 collection。
展示範例如下 :
心得
因為每個 project ,只允許一個 Firestore,所以沒有刪掉整個庫來代替刪除資料的操作,對於測試有點不太方便;即使關閉 api ,下次 enable api 後,資料仍然會在 Firestore 裡面。另外看了一下 Firestore CLI , 會發現能用操作很少,跟 terraform 的整合甚至奇差無比…。舉例來說 :
用 terraform 建立 Firestore database ,只能在全新乾淨從來沒開過 Firestore 的 project 做。當 terraform destroy 之後,再 terraform apply 想建立 Firestore 就會出問題,會回報 Firestore 已存在。
terraform 建立其他名稱的 Firestore database 會失敗