建立 Firestore 資料庫時,您必須選擇兩種模式之一:原生模式或 Datastore 模式。本頁面說明這兩種模式的差異。
選擇資料庫模式
建立新的 Firestore 資料庫時,您必須選取資料庫模式。您可以在同一專案中同時使用原生模式和 Datastore 模式資料庫,但每個資料庫只能是單一類型。
選擇資料庫模式時,我們有以下建議:
針對所有新應用程式 (伺服器、行動裝置和網頁),使用原生模式的 Firestore。
原生模式的 Firestore 使用符合業界標準的文件型資料模型。除了強烈一致且可擴充的資料庫,原生模式的 Firestore 還提供即時資料同步和後端即服務功能。
如果應用程式依附於 Datastore API,請使用 Datastore 模式的 Firestore。
我們完全支援 Datastore 模式,建議依附於 Datastore API 的應用程式採用這種模式。原生模式和 Datastore 模式共用底層儲存層,因此具有相同的可用性、一致性和擴充功能。
原生模式的 Firestore
Firestore 是 Datastore 的下一個主要版本,也是這項產品進行品牌重塑之後的新版本。Firestore 是 NoSQL 文件資料庫,綜合 Datastore 與 Firebase 即時資料庫的精華,專為自動調整資源配置、發揮高效能以及便利的應用程式開發流程而打造。
Firestore 推出下列功能:
- 具同步一致性的儲存空間層
- 集合與文件資料模型
- 即時更新
- 行動與網路用戶端程式庫
Firestore 能回溯相容 Datastore,但資料模型、即時更新內容以及行動和網路用戶端程式庫等新功能則無法回溯相容。如要存取所有 Firestore 功能,必須在原生模式下使用 Firestore。
Datastore 模式的 Firestore
Datastore 模式下的 Firestore 使用 Datastore 系統行為,但會移除以下 Datastore 限制,以利存取 Firestore 的儲存空間層:
- 除非您明確要求最終一致性,否則所有 Datastore 查詢現在都會保持同步一致性。
- 交易中的查詢不再需要是祖先查詢。
- 交易不再侷限於 25 個實體群組。
- 寫入實體群組的速度不再侷限於每秒 1 個。
Datastore 模式會停用與 Datastore 不相容的 Firestore 功能:
- 專案會接受 Datastore API 要求,並拒絕 Firestore API 要求。
- 專案會使用 Datastore 索引,不用 Firestore 索引。
- 您可以在這個專案中使用 Datastore 用戶端程式庫,但不能使用 Firestore 用戶端程式庫。
- 不提供 Firestore 即時功能。
- 在 Google Cloud 控制台中,資料庫會使用 Datastore 檢視器。
定價與位置
原生模式與 Datastore 模式資料庫使用相同的定價結構,並且位於相同的位置。定價與位置會在下列頁面中詳細說明:
原生模式的 Firestore
Datastore 模式的 Firestore
功能比較
下表比較資料庫模式的系統行為:
Firestore ( 原生模式) |
Datastore 模式的 Firestore |
|
---|---|---|
資料模型 | 文件資料庫分為文件和集合。 | 實體分為種類和實體群組。 |
儲存層 | 具同步一致性的儲存空間層。 | 具同步一致性的儲存空間層。 |
查詢和交易 |
|
|
Datastore v1 API 支援 | 沒有,會拒絕要求 | 有 |
支援 Firestore v1 API | 有 | 沒有,會拒絕要求 |
即時更新 |
監聽一份或一組文件時,用戶端會收到資料異動通知,也會收到最新的資料集。 |
不支援 |
離線資料保存 | 行動和網路用戶端程式庫支援永久保存離線資料。 | 不支援 |
用戶端程式庫 |
Firestore 用戶端程式庫:
|
Datastore 用戶端程式庫:
|
安全性 |
|
IAM 管理資料庫存取權 |
效能 | 自動擴充至數百萬個並行用戶端。 | 自動擴充至每秒數百萬次寫入。 |
服務水準協議 | Firestore 服務水準協議 | Firestore 服務水準協議 |
位置 |
這兩種模式支援相同的位置。如需詳細的地區清單,請參閱下列頁面: |
|
定價 |
兩種模式的實體和文件作業都採用相同的定價結構。 Firestore (Datastore 模式) 不會對小型作業收費。 這兩種模式的儲存資料和網路頻寬定價結構相同。 如要進一步瞭解定價,請參閱下列頁面: |
|
遊戲主機 | Firebase 控制台和 Google Cloud 控制台 Firestore 檢視器 | Google Cloud 主控台 Datastore 檢視器 |
命名空間 | 不支援 | 支援命名空間 |
整合 App Engine 用戶端程式庫 | App Engine 標準環境 Python 2.7 和 PHP 5.5 執行階段不支援 App Engine 標準環境支援,所有其他執行階段 App Engine 彈性環境的所有執行階段均支援 |
所有執行階段均支援 |
建立新的資料庫
您可以建立原生模式或 Datastore 模式的 Firestore 資料庫。這項選擇與專案中現有資料庫的模式無關。
詳情請參閱「建立及管理資料庫」。在原生模式和 Datastore 模式之間切換
如果資料庫沒有內容,您可以切換原生模式和 Datastore 模式。
將資料庫變更為原生模式:
gcloud
使用 gcloud firestore databases update 指令,將資料庫變更為原生模式。
gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'
將 DATABASE_ID 替換為資料庫 ID。
rest
curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"
更改下列內容:
- PROJECT_ID:專案 ID
- DATABASE_ID:資料庫 ID
將資料庫變更為 Datastore 模式:
gcloud
使用 gcloud firestore databases update 指令,將資料庫變更為 Datastore 模式。
gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'
將 DATABASE_ID 替換為資料庫 ID。
rest
curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"
更改下列內容:
- PROJECT_ID:專案 ID
- DATABASE_ID:資料庫 ID