AlloyDB for PostgreSQL 是與 PostgreSQL 相容的全代管資料庫服務,專為最嚴苛的工作負載 (包括混合型交易和分析處理作業) 而設計。AlloyDB 結合 Google 打造的資料庫引擎與雲端式多節點架構,提供企業級效能、可靠性和可用性。
AlloyDB 的運作方式
應用程式會使用標準 PostgreSQL 通訊協定和技術,連線至 AlloyDB 執行個體。應用程式接著會使用 PostgreSQL 查詢語法來處理資料庫。
在幕後,AlloyDB 會運用雲端式元件和功能階層,盡可能提高資料可用性,並提升查詢效能和輸送量。 Google Cloud管理工具可讓您監控 AlloyDB 部署作業的健康狀態,並調整規模和大小,以因應工作負載不斷變化的需求。
AlloyDB 與標準 PostgreSQL 的架構差異
傳統的 PostgreSQL 部署作業會將處理查詢的資料庫引擎,與資料所在的儲存空間 (通常位於同一部伺服器) 結合。AlloyDB 採用分離式架構,運算和儲存層是分開的,可個別調度資源。
擴充典型的 PostgreSQL 設定時,需要升級至較大的伺服器,進行垂直擴充,或使用也會複製資料的唯讀副本,進行讀取作業的水平擴充。
AlloyDB 的分離式設計以 Google 的分散式檔案系統為基礎,具備多項優勢:
- 獨立調度:您可以根據查詢需求調度運算資源 (節點和執行個體),不必佈建或取消佈建儲存空間。您也可以擴充唯讀節點,提升讀取作業的擴充性,且不會影響可用性。隨著資料量增加,儲存空間也會擴充,不會影響運算作業。
- 提升效能:AlloyDB 採用最佳化的雲端原生儲存引擎,可提供快速的交易和分析查詢效能,這是因為 AlloyDB 具備智慧型快取層和進階 I/O 管理功能。
- 簡化管理:透過關注點分離,系統可自動管理許多資料庫作業,包括複製、備份和修補程式,這些作業在自行管理的 PostgreSQL 中都是手動工作。
- 高可用性和耐用性:耐用層中的備援資料儲存空間涵蓋多個可用區,因此無論執行個體健康狀態如何,都能自動容錯移轉及復原,且不會遺失資料。
這項基本架構差異會反映在 AlloyDB 的資源階層中,其中叢集是整體邏輯資料庫容器,節點提供運算能力,執行個體則做為應用程式連線點,而資料會保留在獨立的非聚合儲存層中。
下圖說明叢集擴充的範例,可處理高負載工作負載,並包含多個負載平衡的讀取集區執行個體:
叢集
在特定 Google Cloud 區域內,單一 AlloyDB 部署作業會將所有資源整理成一個叢集。包括所有資料庫、記錄和其他中繼資料。AlloyDB 會在單一虛擬私有雲 (VPC) 中部署一個叢集的所有資源,並使用 Google 設計的雲端檔案系統,該系統已針對 AlloyDB 進行最佳化。
節點和執行個體
叢集包含多個節點,這些節點是專門用於執行 PostgreSQL 相容資料庫引擎的虛擬機器執行個體,應用程式會使用這些引擎查詢叢集資料。AlloyDB 會將節點整理成執行個體,每個執行個體在 VPC 中都有一個靜態私人 IP 位址。實際上,您的應用程式會使用 PostgreSQL 通訊協定,連線至這些 IP 位址的執行個體。執行個體接著會將 SQL 查詢傳遞至節點。
AlloyDB 執行個體分為兩種類型:
主要執行個體:每個叢集都有一個主要執行個體,可提供資料的讀取或寫入存取點。主要執行個體可以是高可用性 (HA) 或基本執行個體。
高可用性主要執行個體:高可用性主要執行個體有兩個節點:作用中節點和待命節點。AlloyDB 會監控作用中節點的可用性,並在必要時自動將待命節點升級為作用中節點。
基本執行個體:如果非正式環境不需要高可用性,可以選擇使用基本執行個體。基本執行個體只有一個節點,沒有待命節點。詳情請參閱「使用基本執行個體降低成本」。
讀取集區執行個體:叢集可選擇性地包含一或多個讀取集區執行個體,每個執行個體包含一或多個唯讀節點,最多可有 20 個。AlloyDB 會自動對傳送至讀取集區執行個體的所有要求進行負載平衡,並將要求轉送至執行個體的節點。
在較簡單的用途中,叢集可以只有主要執行個體,沒有讀取集區,應用程式會使用主要執行個體處理所有查詢。如要處理更繁重的工作,可以將讀取集區執行個體新增至叢集。然後,您會設定報表或分析應用程式,將讀取要求傳送至這些應用程式。這項技術可減少主要執行個體的負載,並將負載分散到多個節點,進而提升擴充性。
您可以隨時新增、移除或調整讀取集區執行個體的節點計數,因應應用程式需求變化。您也可以在需要時調整執行個體組成節點的記憶體大小和 vCPU 數量,停機時間極短。擴充執行個體不會有資料遺失的風險,因為 AlloyDB 會將資料儲存在叢集的彈性儲存層,而不是執行個體中。
主要功能與特色
除了前文所述多節點架構固有的垂直和水平擴充優勢外,AlloyDB 與標準 PostgreSQL 安裝作業的不同之處還包括:以下各節將深入探討 AlloyDB 的主要功能。
自動調整的資料庫功能
AlloyDB 節點搭載的資料庫引擎與 PostgreSQL 完全相容,並具備多項功能,可持續分析執行個體處理的查詢結構和頻率,然後根據這些資訊建議改善結構定義,或自動套用最佳化設定:
索引建議會根據您的使用模式,找出可使用新索引最佳化資料庫結構定義的機會。
資料欄引擎可使用資料欄格式將資料儲存在記憶體中,藉此提升數據分析查詢的效能。這樣一來,AlloyDB 就能在需要時使用進階處理技術,有效率地掃描大量資料表資料。
PostgreSQL 過時資料自動清理功能的適應性變體會自動調整與清理作業相關的參數,以最符合工作負載的形狀。
自動記憶體和儲存空間管理系統會充分運用 AlloyDB 執行的 Google 建構雲端環境,持續視需要分配及釋出記憶體和儲存空間,確保叢集以最佳效能和資源效率運作。
高可用性
根據預設,AlloyDB 叢集會透過主要執行個體位於兩個不同區域的備援節點,提供高可用性 (HA),並自動進行容錯移轉。
在非正式環境中運作的叢集,如果不需要高可用性,也可以選擇使用基本單一可用區主要執行個體。
新增至少包含兩個節點的讀取集區執行個體,可進一步建立負載平衡的多可用區高可用性資料存取點。所有讀取集區執行個體都會獨立於主要執行個體執行。
如要進一步瞭解特定地區的注意事項,請參閱「地理位置與區域」一文。
資料備份與災害復原
AlloyDB 具有持續備份與復原系統,可讓您根據可調整保留期限內的任何時間點建立新叢集。以便在資料遺失時快速復原。
此外,AlloyDB 可以視需求或定期建立及儲存叢集資料的完整備份。您隨時可以從備份還原至新的 AlloyDB 叢集,其中包含備份建立時原始叢集的所有資料。
詳情請參閱「關於備份」。
您可以在不同 Google Cloud區域中建立次要叢集,藉此進行跨區域複製,進一步提升災難復原能力。AlloyDB 會將指定主要叢集的資料非同步串流至每個次要叢集。如有需要,您可以將次要叢集升級為功能齊全的 AlloyDB 叢集,其中包含主要和讀取集區執行個體。
詳情請參閱「關於跨區域複製」。
安全性和存取權控管
您可以將叢集設定為必須透過安全的 AlloyDB Auth Proxy 連線,該 Proxy 會使用 Google Cloud 身分存取權管理 Google Cloud (IAM) 控管存取權。詳情請參閱「授權」。
AlloyDB 採用標準 PostgreSQL 使用者角色系統進行驗證,並導入少數 AlloyDB 專屬角色。詳情請參閱「管理 AlloyDB 使用者角色」。
加密
根據預設,AlloyDB 會使用 Google 的加密方法保護所有靜態資料。如要改用您提供的金鑰加密資料,可以在建立叢集時指定客戶自行管理的加密金鑰 (CMEK)。AlloyDB 接著會使用 CMEK 金鑰,加密寫入該叢集的所有資料。
CMEK 也適用於備份。建立隨選備份、設定備份排程或從備份還原時,您可以指定 CMEK 金鑰。
詳情請參閱「關於 CMEK」。
不中斷的維護作業
AlloyDB 維護作業的設計宗旨是盡量減少對資料庫的干擾。主要和次要執行個體的停機時間不到一秒,讀取集區則會持續可用,不會停機。做法是準備好替代伺服器,並在就緒時快速與現用伺服器交換。在此期間,資料庫的所有有效連線都會暫時中斷。在此期間,您仍可照常使用資料庫。
雖然這項更換程序可確保停機時間最短,但如 Google Cloud 控制台和 Google Cloud CLI 所示,整體作業可能需要幾分鐘。
這些維護作業包括 Google 執行的定期維護工作,以及您手動執行的工作,例如標記設定和執行個體大小調整。如要立即套用任何更新 (即使停機時間較長),請使用 FORCE_APPLY
資料庫旗標。
擴充功能支援
AlloyDB 支援多種熱門的 PostgreSQL 擴充功能。如需完整清單,請參閱「支援的資料庫擴充功能」。
自架主機替代方案:AlloyDB Omni
Google 提供 AlloyDB Omni,做為在 Google Cloud 中執行 AlloyDB 的替代方案。 Google Cloud這個可下載的精簡版 AlloyDB,讓您在自己的 Linux 電腦環境中執行強大的資料庫引擎,不論該環境位於何處。
詳情請參閱「關於 AlloyDB Omni」。