Spanner 是高度可靠且全代管的資料庫系統。雖然 Spanner 已演進成為關聯資料庫管理系統,但其根源是做為非關聯式鍵/值儲存系統,並保留這類系統的基本特性。因此,您可以將 Spanner 用作非關聯式 (NoSQL) 資料庫,並從其他非關聯式資料庫遷移至 Spanner。這份文件可協助您瞭解 Spanner 是否適合您的非關聯工作負載。
NoSQL 資料庫的出現,是因為傳統關聯式資料庫缺乏可支援新興應用程式所需高擴充性、可用性和運算彈性的功能。為此,他們犧牲了幾項通常對資料管理至關重要的功能,例如交易、一致性和即時查詢。Spanner 的設計旨在同時支援高可用性應用程式的嚴格特性,以及傳統關聯資料庫提供的功能,讓客戶能夠同時享有這兩種功能的優點。
使用 Spanner,您可以先從簡單的非關聯式儲存空間需求開始,並視需要調整應用程式。
Spanner 如何符合 NoSQL 資料庫的條件
Spanner 符合下列關鍵條件,可用於 NoSQL 工作負載。
擴充性和效能
NoSQL 資料庫之所以廣受歡迎,是因為它們能夠水平擴充讀取和寫入作業。有了 Spanner,您就不必擔心擴充性或效能問題。鍵值式 Spanner 資料庫可水平擴充,支援每秒數百萬次讀取或寫入要求,以及數 PB 的資料。Spanner 的運算能力會隨著工作負載而擴充,即使應用程式擴充到數量級,仍可維持一致的低延遲設定檔。
NoSQL API
傳統關聯資料庫通常會透過 SQL 存取,但對於不熟悉關聯資料庫的開發人員來說,這需要一段學習期。這些資料庫的用戶端通常也仰賴持續性連線,並需要部署連線資源池基礎架構才能擴充。相較之下,Spanner API 則是建構在 gRPC/HTTP2 要求和回應模型之上,可自動處理連線失敗問題。Spanner 提供簡單、原生語言且高效的 NoSQL 讀寫 API,無須具備 SQL 知識。此外,Spanner 用戶端不需要任何連線集區,即可進行擴充。
全代管
NoSQL 資料庫的一大優勢,就是被認為更容易管理。由於 Spanner 是全代管服務,因此不會對客戶造成任何營運負擔。Spanner 會在幕後執行零停機的軟體和硬體更新,同時維持向後相容性。Spanner API 和語意與在單一機器資料庫上執行的作業相同,不需要瞭解 Spanner 的內部架構。Spanner 可在部署規模從 1/10 個節點到數萬個節點之間的環境中執行,並透過受管理的自動配置器自動調整資源配置,以便即時回應。
半結構化資料
Spanner 支援彈性資料類型,例如用於儲存半結構化或非結構化資料的 JSON 和 BYTES。如同其他 NoSQL 資料庫,您可以使用這些資料類型,避免事先指定所有儲存格式。
存取權控管
與其他 NoSQL 資料庫一樣,Spanner 支援以 IAM 為基礎的存取權控管。管理員可以設定及管理存取權控管政策,而無須將使用者名稱和密碼儲存在資料庫中。
Spanner 與傳統 NoSQL 資料庫的差異
相較於傳統的 NoSQL 資料庫,Spanner 具有下列優勢。
交易
隨著應用程式變得越來越複雜,通常需要在資料庫上執行多列和多資料表的交易作業。使用 Spanner 時,您不必隨著資料庫的成長遷移至交易式資料儲存庫,因為 Spanner 可完整支援讀寫交易。作為符合 ACID 標準的資料庫,Spanner 會隨時維持資料庫的交易一致性,無論規模為何皆然。
建立資料模型
由於無法執行彙整作業,NoSQL 資料庫中的結構定義設計可能會不自然,因為需要將所有資料都放入一個資料表,並強制將資料去規格化。使用 Spanner 時,您可以指定結構定義,而無須使用單一資料表或非正規化。如要最佳化涉及多個資料表的存取模式,您可以使用資料表交錯。您也可以跨資料表執行彙整作業。
臨時查詢
即使您主要使用 NoSQL API,還是建議您執行臨時查詢,以利偵錯或分析。Spanner 遵循 SQL 標準查詢語言。您可以使用要求優先順序,將臨時低優先順序流量與線上流量區隔開來,或是使用 Spanner Data Boost,針對與線上資料庫流量完全隔離的運算資源執行分析查詢。
同步一致性的次要索引
應用程式通常需要次要索引,才能支援低延遲的查詢。一般 NoSQL 資料庫會提供最終一致性的次要索引,或限制索引的大小。這可能會使應用程式邏輯變得複雜,因為應用程式需要因應這些限制。Spanner 可提供大規模的同步一致性次要索引,且不受任何大小限制。這樣您就能專注於應用程式邏輯,不必擔心一致性問題。
Spanner 是否適合您的 NoSQL 資料庫需求?
Spanner 是靈活的資料儲存系統,可同時支援 SQL 和 NoSQL 用途。雖然某些應用程式一開始只需要簡單的儲存空間,但隨著複雜度增加,就需要更多 NoSQL 資料庫通常不提供的功能,例如交易、一致的次要索引和彈性查詢語言。使用 Spanner 時,您不受這些限制的拘束,可以視需要擴充應用程式。
大多數非關聯工作負載都非常適合 Spanner。Spanner 不僅提供簡單的 NoSQL 讀寫 API,還提供高可用性、高可靠性、低延遲、彈性運算和極佳擴充性。Spanner 可讓您將各種工作負載整合至單一彈性平台。