技術解讀資料庫如何實現“多租戶”?

来源:https://www.cnblogs.com/huaweiyun/p/18258109
-Advertisement-
Play Games

本文分享自華為雲社區《【GaussTech速遞】技術解讀之GaussDB多租技術》,作者:GaussDB資料庫。 資料庫多租技術介紹 隨著雲計算時代的到來,多租戶的概念也逐漸廣為人知。“多租戶”使得租戶之間可以共用物理資源,能夠幫助用戶節約硬體成本和運維成本,提高資源利用效率。同時,在實現的過程中, ...


本文分享自華為雲社區《【GaussTech速遞】技術解讀之GaussDB多租技術》,作者:GaussDB資料庫。

資料庫多租技術介紹

隨著雲計算時代的到來,多租戶的概念也逐漸廣為人知。“多租戶”使得租戶之間可以共用物理資源,能夠幫助用戶節約硬體成本和運維成本,提高資源利用效率。同時,在實現的過程中,考慮到共用帶來的安全、隔離等問題以及後續業務面臨的擴展需求,“多租戶”在隔離性和擴展性方面也進行了相應的設計實現。

那麼,在資料庫領域是如何實現“多租戶”呢?

業界有虛擬機多租、容器多租、資料庫內核多租等多種技術可以實現多租戶。

虛擬機多租和容器多租,顧名思義就是在一臺物理伺服器上部署多個虛擬機或者容器,然後在虛擬機或者容器內進行資料庫服務的部署。這類技術方案在安全性和隔離性方面具有天然的優勢。

資料庫內核多租,是由資料庫內核提供的多租戶特性。相比於虛擬機多租和容器多租,內核多租沒有虛擬化管理層、OS(Operating System,簡稱操作系統)層、資料庫公共層的額外開銷,而且底噪小,在資源整合、資源的彈性伸縮等方面具備天然優勢。資料庫內核多租通過將資料庫內核語義與成熟的資源隔離技術棧相整合,實現更高的Scale-Down(縮容)能力,極大地提升了資料庫在計算資源方面的利用率。

GaussDB支持被部署在虛擬機或者容器內,給客戶提供整體虛擬機/容器多租的解決方案,同時也提供了資料庫內核多租特性,滿足客戶不同業務場景的需求。

  • 在客戶資金充裕,且對資源的隔離性、可靠性等要求更高的場景下,可以選擇虛擬器/容器多租方案;
  • 在客戶投入有限,需要更大力度利用現有資源的場景下,可以選擇GaussDB資料庫內核提供的多租方案。

本文將對GaussDB資料庫內核集中式場景下提供的多租技術進行重點介紹。

GaussDB多租架構

GaussDB多租是指在一個資料庫實例中劃分出多個邏輯處理單元,我們稱這個邏輯單元為PDB(pluggable database),每個PDB具備物理資料庫的絕大多數能力,同時相互隔離。

在資料庫初始化時,會生成一個template pdb作PDB創建的模板。

集群內可以創建多個資源計劃,每個資源計划下掛載多個plan directive,每個plan directive對應一個PDB,PDB通過plan directive配置自己的資源規格,包括CPU、記憶體、IO等。

1.png

圖1 GaussDB多租架構

一個PDB歸屬於一個獨立的業務或公司。獨立的業務或公司可以連接到自己的PDB運行資料庫業務。

GaussDB多租技術特點

1.隔離性

多租戶架構的目的是為了讓多用戶或者多業務使用同一套資料庫集群,PDB數據的隔離性是實現該架構的基礎。

假設同一個公司的兩個業務共用同一個資料庫實例,業務A的相關數據可以被業務B查看,這是完全不可接受的行為。

GaussDB資料庫的PDB之間數據完全隔離,實現租戶數據完全獨立、互不幹擾,保障租戶數據的安全隱私:

(1)每個PDB除了有自己的表、索引等對象數據,也有自己的用戶、角色、表空間以及定時任務等對象。

(2)除了資料庫對象,PDB的其它屬性也完全隔離。比如:每個PDB有獨立的相容模式、線程組、GUC配置參數等。

2.png

圖2 PDB之間數據完全隔離

PDB之間數據互相隔離,但用戶業務開發並不需要感知是使用了一個PDB還是一個物理實例,對用戶業務開發來說,使用PDB和使用物理實例的操作沒有區別。

2.PDB粒度的資源管理

PDB資源的分配與變更由GaussDB內核接管,並不依賴任何外部組件。每個PDB可以設置自己的資源規格,包括CPU、記憶體以及IO。

GaussDB內核通過資源計劃管理所有PDB的資源,每個資源計劃包含了多個資源計劃指令,每個資源計劃指令設置了一個PDB的資源規格。

上層可以調用資源計劃高級包介面,完成資源的分配與變更。系統中可以有多個資源計劃,可以通過資源計劃的切換,做到一鍵切換所有PDB資源規格的能力。

3.png

圖3 PDB資源的變更和切換

每個PDB的資源使用由GaussDB內核中的資源管理模塊管理。相較於將資源分配交由外部組件(虛擬機,容器等)管理,GaussDB通過實現資料庫內核的自主資源分配,在保證租戶資源按照配額公平使用的前提下,也可獲得以下優勢:

(1)提高資源利用率:租戶間的後臺工作整合,通過合理的調度演算法,最大限度地利用系統空閑資源。

(2)內核感知資源分配,根據資源分配情況,動態調整CPU占比,記憶體大小以及線程池、連接池等資源,最終獲得更優的整體表現。

(3)在物理機資源充足的情況下,PDB的資源變更通過SQL語句即可完成,實現資源秒級變更,業務無感知。

相比而言,目前雲上虛擬機的規格變更耗費時間較長,需要先變更備機,然後主備倒換,然後進行其他變更操作,端到端時間約為:(虛擬機關機 + IaaS資源調度+新虛擬機開機+資料庫拉起)X 資料庫節點個數。

(4)內核中所有PDB公用一套系統資源,有效的減少了內核底噪的資源占用。

3.實例發放

GaussDB內核多租技術的實例發放效率領先於其他的多租技術。

以虛擬機多租為例,虛擬機實例的發放需要先申請一定規格的虛擬機,然後再部署GaussDB集群,需要消耗10-30分鐘或者更多的時間。

而GaussDB內核多租技術,內核中管理了PDB的創建/打開/關閉/刪除。在物理機上部署GaussDB的基礎上,使用幾個SQL語句即可完成這些操作,秒級時間內即可實現實例的發放。

4.GaussDB多租規格配置

GaussDB多租支持的PDB規格配置見下表:

可以看到,GaussDB支持1U(1個CPU)級別的PDB規格,而當前虛擬機多租和容器多租一般只能提供8U級別的商用規格。這是因為:

  • 資料庫中通常存在很多後臺任務以及運維任務,需要維護整個集群的正常運行。

以GaussDB為例,存在auto vacuum、慢/全量SQL收集等後臺任務。

  • 資料庫管控層的實例指標監控也需要連接到資料庫收集信息。

例如TPS,QPS等。

這些任務都需要消耗CPU,故虛擬機/容器實例做到更小規格(例如2U)基本不太可能。而內核多租是在GaussDB進程中劃分了多個邏輯實例,所有邏輯實例共用同一份後臺任務,管控的指標監控連接一次就可以收集到所有PDB的數據,大大減少了資料庫底噪,因此內核多租可以很好的支持1U邏輯實例的發放。

另外,GaussDB後續會繼續優化PDB規格。比如,後續計劃支持1U4G的PDB規格,以滿足更多客戶場景的需求。

5.支持PDB關閉

對於不需要一直運行的資料庫業務,GaussDB支持關閉該業務的PDB並釋放資源。關閉PDB非常簡單,內核中只需要執行語句:ALTER PLUGGABLE DATABASE [pdbname] CLOSE語句即可。

PDB關閉即意味著業務無法連接到這個邏輯實例,用戶可以釋放PDB的CPU、記憶體、IO資源,對不使用的資源不計費,實現節約成本。

6.WDR報告中PDB相關增強

GaussDB在WDR(Workload Diagnosis Report 負載診斷報告)工具中適配了多租特性,可在WDR報告中查看PDB信息,以及PDB級別的SQL Statistics等性能數據視圖。

(1)WDR報告中的PDB信息章節

5.png

(2)WDR報告SQL統計信息章節

如下圖所示,細化的統計信息中添加了“DB Name列”,PDB歸屬信息會顯示在該列。

6.png

(3)SQL Detail和Object Stats等章節中也添加了PDB信息,在此不一一列舉。

添加了PDB信息的WDR報告,可方便DBA瞭解指定時間段內PDB級別的系統資源使用情況以及資料庫運行情況,進行相應的運維處理。

總結

GaussDB內核提供的多租技術特性,在安全隔離的前提下,具備更高的資源利用效率,更快的實例發放效率和資源變更效率。同時將租戶相關的信息集成到WDR報告中,可以提升了客戶運維的便利性。因此,客戶可根據自身企業的組織結構,匹配相應的多租戶配置,更高效地利用現有資源,為企業節約成本。

 

點擊關註,第一時間瞭解華為雲新鮮技術~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 昨天同事遇到的一個案例,這裡簡單描述一下:一個表裡面有一個bit類型的欄位,同事在優化相關SQL的過程中,給這個表的bit類型的欄位新增了一個索引,然後測試驗證 時,居然發現SQL語句執行結果跟不加索引不一樣。加了索引後,SQL語句沒有查詢出一條記錄,刪除索引後,SQL語句就能查詢出幾十條記錄。下麵 ...
  • 本系列文章是DolphinScheduler由淺入深的教程,涵蓋搭建、二開迭代、核心原理解讀、運維和管理等一系列內容。適用於想對 DolphinScheduler瞭解或想要加深理解的讀者。 **祝開卷有益。 ** 本系列教程基於 DolphinScheduler 2.0.5 做的優化。(穩定版 ...
  • 通過本篇文章的學習和實踐,我們深入瞭解瞭如何利用Docker技術快速部署KingbaseES資料庫。從下載鏡像到編寫Docker Compose模板,再到容器的啟動和管理,每一步都體現了現代化部署方式的便捷和高效。此外,我們還掌握了KSQL命令行工具的使用,這將極大地提升開發人員與資料庫交互的效率。 ...
  • 本文是對這篇文章Detect And Repair Corruption in an Oracle Database[1]的翻譯,翻譯如有不當的地方,敬請諒解,請尊重原創和翻譯勞動成果,轉載的時候請註明出處。謝謝! Oracle資料庫提供了多種方法檢測和修複數據文件中的壞塊。主要有下麵一些方法: R ...
  • 在Tez上優化Hive查詢無法採用一刀切的方法。查詢性能取決於數據的大小、文件類型、查詢設計和查詢模式。在性能測試過程中,應評估和驗證配置參數及任何SQL修改。建議在工作負載的性能測試過程中一次只進行一項更改,並最好在開發環境中評估調優更改的影響,然後再在生產環境中使用。 ...
  • 在各行各業中,越來越多的公司開始重視收集數據,並尋找創新方法來獲得真實可行的商業成果,並且願意投入大量時間和金錢來實現這一目標。 據IDC稱,數據和分析軟體及雲服務市場規模在 2021 年達到了 900 億美元,隨著企業繼續對人工智慧和機器學習 (AI/ML) 和現代數據計划進行投資,預計到 202 ...
  • 近日,中國電子學會聯合中國電子技術標準化研究院等單位,在安徽省合肥市舉辦“節能服務進企業”暨綠色數據中心對接推廣活動。會議為天翼雲存儲資源盤活系統HBlock入選《國家工業和信息化領域節能降碳技術裝備推薦目錄(2024年版)》頒發榮譽證書;天翼雲存儲產品專家肖夏敏發表演講,向業界展示了HBlock在... ...
  • 近年來,新質生產力、數據要素及數據資產入表等新興概念猶如一股強勁的浪潮,持續衝擊並革新著企業數字化轉型的觀念視野,昭示著一個以數據為核心驅動力的新時代正穩步啟幕。 面對這些引領經濟轉型的新興概念,為了更好地服務於客戶並提供切實可行的實踐指導,自3月20日起,袋鼠雲將推出全新《袋鼠雲大數據實操指南》系 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...