資料庫的水平與垂直資源調度比較

如果沒有適當的基礎架構或調整,隨著應用程式規模擴大,資料庫可能會成為系統瓶頸。流量激增時,工程師往往面臨艱難的抉擇:應該提升現有伺服器的效能,還是增加伺服器數量?本指南將說明水平和垂直資源調度的差異、各自的優缺點,以及如何根據需求選擇合適的做法。

運用 Google Cloud 資料庫擴充及創新

什麼是資料庫資源調度?

資料庫資源調度是指提高系統容量、效能和可用性的程序。這可讓資料庫能處理更多資料,並因應使用者人數增加的需求。

業界專家主要使用兩個詞彙來描述這個過程。垂直資源調度就是「向上擴充」,水平資源調度則是「向外擴充」。瞭解這兩種路徑,是建構可靠資料系統的第一步。

什麼是垂直資源調度?

垂直資源調度 (又稱向上擴充) 是指為現有伺服器增加更多運算能力。您會保留相同的資料庫節點,但為其提供更多 CPU、記憶體或儲存空間來完成工作。

這通常被視為擴充關聯式資料庫的傳統方式。由於所有資料仍集中在同一處,因此架構得以保持簡單。

垂直資源調度的優點與挑戰

優點

  • 簡易性:程式碼不變,因為對應用程式來說,資料庫仍像單一機器
  • 維護更輕鬆:只需要管理及更新一部伺服器
  • 一致性:不必擔心多個伺服器之間的資料同步問題

挑戰

  • 硬性限制:每部機器都有容量上限。最終,您就無法在單一伺服器中新增更多硬體
  • 停機時間:停機時間:您通常需要暫時將資料庫離線,才能執行這些硬體升級
  • 單點故障:如果該伺服器故障,整個應用程式也會隨之停擺

代管資料庫服務 (例如 Cloud SQL) 可讓您輕鬆變更機器大小,只要按幾下滑鼠即可完成垂直資源調度,但請務必記得,您仍可能達到實體硬體限制。

垂直資源調度範例和常見用途

小規模:假設一家快速成長的新創公司在單一資料庫上執行網頁應用程式。當流量開始攀升時,這家公司可以改用較大的執行個體,進而獲得更多運算能力來處理額外的訪客,不必重寫應用程式程式碼。

企業規模:擁有舊版系統的大型企業也可能採用垂直資源調度。這類系統通常仰賴資料之間的複雜關係。由於這類企業的程式碼是為單一資料庫所建構,因此可透過提升單一機器的效能來向上擴充,不必嘗試遷移至分散式系統。

內部需求:部分公司也會針對內部報表採用垂直資源調度。這類公司可能會在主要資料庫伺服器中新增更多 RAM,以便更快處理耗用大量資源的大型查詢,同時確保一般使用者的體驗不受影響。

什麼是水平資源調度?

水平資源調度 (又稱向外擴充) 是指在資料庫系統中新增機器,而非提升單一機器的效能,藉此將工作分配給一群伺服器。這是現代雲端運算和分散式系統的核心概念。

工程師會運用資料分割 (sharding) 和複製 (replication) 等技術來達成這個目標,前者將資料切成較小的區塊並分散到不同伺服器,後者則將資料複製到多個節點。

水平資源調度的優點與挑戰

優點

  • 成長無極限:隨著需求增加,您可以持續新增機器
  • 高可用性:由於有多部伺服器,即使其中一個節點故障,系統仍可維持運作
  • 成本效益:您可以使用較便宜的標準硬體,不必購買昂貴的大型伺服器

挑戰

  • 複雜度:應用程式需要知道如何與多個伺服器通訊,這會增加設計難度
  • 資料一致性:在多部機器上同步資料可能難以管理
  • 程式碼變更:您可能需要變更應用程式程式碼,才能處理分散式資料庫環境

Spanner 等分散式 SQL 資料庫可協助您解決這些難題。Spanner 會處理在多部機器之間同步資料的繁重工作,因此您不必手動分割資料,也不必犧牲關聯式資料庫所提供的保障。這樣一來,您就能向外擴充,同時避免系統過於複雜。

水平資源調度範例和常見用途

容量:全球電子商務平台可能會在大型特價活動期間,進行水平資源調度。當數百萬人同時造訪網站時,系統會自動將資料重新分配至新節點,以處理流量,確保單一伺服器不會過載。

備援:關鍵任務財務應用程式有時也會採用水平資源調度。這類應用程式可將資料庫分散到多個實體位置,也就是可用區。這種設定有助於確保即使某個資料中心發生問題,應用程式仍能正常運作,兌現資料一致性的承諾。

鄰近性:全球遊戲公司可能會在世界各地部署資料庫節點。將資料庫節點設在離玩家較近的位置,就能提供快速流暢的體驗,延遲時間極短。舉例來說,如果玩家住在東京,系統會將其設定檔資料儲存在東京的資料庫節點,確保讀寫速度極快。

常見問題

談到雲端資源調度時,垂直資源調度是指升級託管資料庫的虛擬機器大小。水平資源調度是指在自動調度資源群組或分散式叢集中,新增更多機器執行個體。

有些公司會混合使用這兩種方法,這種做法稱為對角資源調度。這種做法是增加系統節點 (水平資源調度),並升級硬體容量 (垂直資源調度)。大型企業可藉此兼顧高可用性和強大效能,確保資料庫足以應付複雜的本機工作。

可以。過去這項作業相當困難,但現今的分散式 SQL 資料庫 (例如 Spanner) 採用先進的時鐘同步技術和智慧通訊協定,可進行水平資源調度,同時確保資料井然有序且準確無誤。

請留意相關警訊,例如 CPU 或記憶體用量偏高、查詢時間過長,以及使用者在尖峰時段的延遲時間增加。這些跡象都顯示,您目前的資料庫可能難以負荷。

水平與垂直資源調度的主要差異

水平和垂直資源調度之間的主要差異,在於將資源新增至系統的方式。垂直資源調度是提升單一機器的效能,水平資源調度則是將更多機器加入網路。

功能

垂直資源調度

水平資源調度

概念

為單一機器新增資源

將更多機器新增至網路

容量

硬體的硬性上限

幾乎不受限

停機時間

通常需要停機時間

完全不需要停機時間 (動態新增節點)

複雜度

偏低 (架構簡單)

較高 (需要分散式邏輯)

費用

大型硬體成本較高


使用標準機器進行線性資源調度

功能

垂直資源調度

水平資源調度

概念

為單一機器新增資源

將更多機器新增至網路

容量

硬體的硬性上限

幾乎不受限

停機時間

通常需要停機時間

完全不需要停機時間 (動態新增節點)

複雜度

偏低 (架構簡單)

較高 (需要分散式邏輯)

費用

大型硬體成本較高


使用標準機器進行線性資源調度

SQL 與 NoSQL 的擴充性:破解迷思

業界仍普遍存在一些關於 SQL 和 NoSQL 資料庫的過時觀念。傳統 SQL 資料庫在擴充時,主要難題在於如何處理聯結和資料一致性。將關聯式資料庫分散到多部伺服器,在技術上可能是一大挑戰,但現代分散式解決方案已解決許多這類問題,讓開發人員能水平擴充 SQL,同時保留所需的關聯式功能。以下列出三項常見誤解,並說明背後的事實:

事實:可以。舊版關聯式設計偏好垂直擴充,但現代分散式 SQL 系統可讓關聯式資料庫在多部機器間使用。這種做法結合了 SQL 的一致性與現代雲端架構的水平擴充能力。

事實:NoSQL 適合處理大量非結構化資料集,但 SQL 資料庫通常更適合複雜的結構化查詢。在某些情況,如果應用程式仰賴資料點之間的深層關係,經過妥善調整的 SQL 資料庫會比 NoSQL 資料庫更出色。

事實:不必做選擇。現代架構模式可讓您將系統擴充至多部機器,同時在整個叢集中維持嚴格的資料安全規則 (ACID 相容性)。

選擇合適的擴充方法

決定如何擴充資料庫時,通常會考量預算、資料量和所需運作時間。一般建議如下:

  • 如果流量可預測且適中,建議先採用垂直資源調度,因為設定起來較簡單快速。
  • 如果您的應用程式需要全球規模或持續運作,建議從一開始就規劃水平擴充。雖然設計上較費心,但日後可省去許多麻煩。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。