Datastore API 總覽

Firestore 的 Datastore API 提供 NoSQL 文件資料庫,專為自動調整資源配置、提供高效能,以及協助輕鬆開發應用程式而打造。

Firestore 包含下列功能:

  • 不可分割的交易:執行一組作業,這些作業不是全數成功,就是全不執行。
  • 讀取和寫入作業的高可用性:資料庫在 Google 資料中心執行,並採用備援機制,盡量減少故障點的影響。
  • 高效能的大規模擴充性:分散式架構可自動管理擴充作業,並在負載過重時維持效能。
  • 彈性儲存及查詢資料:文件資料模型自然會對應至物件導向和指令碼語言,並透過多個用戶端向應用程式公開。Firestore 的 Datastore 相容 API 也提供類似 SQL 的查詢語言。
  • 同步一致性:查詢結果具有同步一致性。
  • 靜態加密:資料寫入磁碟前會自動加密,授權使用者讀取資料時會自動解密。詳情請參閱「伺服器端加密」。
  • 全代管服務,不會有預計停機時間:Google 會管理這項服務,讓您專注於應用程式。服務進行預定升級時,應用程式仍可使用 Firestore。

與關聯式資料庫的比較

雖然 Datastore 介面有許多與關聯式資料庫類似的功能,但做為 NoSQL 資料庫,它描述資料物件之間關係的方式有所不同。以下是 Datastore 和關聯式資料庫概念的概略比較:

概念 Datastore Firestore 關聯式資料庫
物件類別 種類 集合群組 資料表
單一物件 實體 文件 資料列
物件的個別資料 屬性 欄位 資料欄
物件的專屬 ID 索引鍵 文件 ID 主鍵

與關聯式資料庫表格中的資料列不同,相同種類的 Datastore 實體可以有不同的屬性,不同實體也可以有名稱相同但值型別不同的屬性。您可以運用這些獨特特徵設計及管理資料,自動擴充規模。

由於所有查詢都是由先前建構的索引提供服務,因此 Datastore API 可執行的查詢類型,比 SQL 關聯式資料庫允許的查詢類型更受限制。具體來說,Datastore 不支援聯結作業、多個屬性的不相等篩選條件,或根據子查詢結果篩選資料。如果應用程式需要進階查詢功能,包括聯結和子查詢,建議使用 Firestore Native API 或與 MongoDB 相容的 API。

與強制執行結構定義的關聯式資料庫不同,Datastore 沒有結構定義。它不要求相同種類的實體擁有一致的屬性集 (雖然您可以選擇在自己的應用程式程式碼中強制執行這類要求)。

其他儲存空間和資料庫選項

Firestore 的 Datastore 相容 API 旨在支援舊版 App Engine 應用程式。如果您要為新應用程式尋找以文件為導向的 NoSQL 資料庫,建議使用 Firestore API,而非 Datastore API,以便運用更多進階功能。進一步瞭解可用選項。

Firestore 是擴充性極高的文件資料庫,但可能不適合所有用途。舉例來說,這可能不是關聯式資料庫的最佳替代方案。在下列常見情境中,建議您考慮替代資料庫:

  • 如需提供完整 SQL 支援的關聯式資料庫,以供線上交易處理 (OLTP) 系統使用,建議考慮 Cloud SQL。
  • 如果您不需要支援 ACID 交易,或資料結構不複雜,請考慮使用 Bigtable。
  • 如果您需要在線上分析處理 (OLAP) 系統中進行互動式查詢,請考慮使用 BigQuery。
  • 如果您需要儲存不變的大型 blob (例如大型圖片或影片),請考慮使用 Cloud Storage。

如要進一步瞭解其他資料庫選項,請參閱資料庫服務總覽。

後續步驟

透過 App Engine 連線至 Datastore

App Engine 的 Go 標準執行階段會使用 Go Datastore API 連線至 Datastore。如需 datastore 套件內容的完整清單,請參閱 datastore 套件參考資料。