資料庫租戶能力大調研
來源:韓鋒頻道
隨著SaaS軟體日益流行,如何為企業使用者提供即統一又相互獨立的服務,成為很多基礎軟體商的課題,因而租戶能力正受到更多關注。另一方面,隨著分散式資料庫的流行,如何充分利用分散式環境的算力及儲存資源為不同業務服務,也同樣對租戶能力提出的要求。本文針對常用的租戶實現方法、技術路線進行說明,重點說明場景資料庫的租戶能力並加以對比。
1).多租戶業務訴求
2).多租戶構建模式
獨立資料庫:一個租戶獨享一個資料庫例項,提供最強的分離度,租戶資料彼此物理不可見,備份恢復都很靈活; 共享資料庫、獨立 Schema:將每個租戶關聯到同一個資料庫的不同 Schema,租戶間資料彼此邏輯不可見,上層應用程式的實現和獨立資料庫一樣簡單,但備份恢復稍顯複雜; 共享資料庫、共享 Schema、共享資料表:租戶資料在資料表級別實現共享,提供最低成本,但引入了額外的程式設計複雜性,備份恢復也更復雜。
從上面多種構建模式對比可見,各方案有著鮮明的優缺點。在技術實現上,可分為兩種情況,一種是採用資料庫內建能力來支援租戶,一種是在應用側來解決。針對前者,後文將著重談談各資料庫的租戶能力;後者往往依賴於應用研發能力。特別是共享庫、Schema、表的模式,具有成本低的明顯優勢,通常在應用研發側來解決,但這一模式面臨諸多難點,在實際使用中常透過中介軟體策略增強這一模式能力,補齊短板。
3).中介軟體策略解決難點
開發複雜問題。原模式中通常需要引入租戶ID的概念,在行級增加標識來區分,這對於業務研發是不太友好的,需要在中介軟體層面最好遮蔽,讓業務研發迴歸到租戶內,不用感知到租戶資訊。 跨機分散式事務。有時是需要提供跨租戶的資料訪問,這意味著業務需要做很多額外的應用改造成本,才能儘量來避免跨機事務導致業務出現報錯。可透過中介軟體層提供強一致分散式事務能力來解決這一問題。 後設資料一致性。當使用跨Schema或共享資料表的模式,都面臨操作所有租戶物件同時生效問題。比如在 MySQL 的建刪表、加減列、加減索引等常見的DDL操作,需要中介軟體能力來保證平臺所有租戶的表能同時生效,一旦執行中斷,可以自動回退,無需人工介入來訂正。 租戶資料遷移。當租戶發展壯大後會面臨資源不足需要遷移等情況,此時就需要針對租戶提供資料遷移能力,與底層資源層解耦,實現按需使用。這部分維護成本很高,中介軟體可提供此能力便於在租戶層面進行遷移。
有很多資料庫已經內建了多租戶能力,使用者可很方便地基於此快速開發 SaaS 類應用。下面簡單對比下:
1).Oracle 租戶能力
獨立性:每個 PDB 都是一個獨立的資料庫,具有自己的資料和配置。這使得您可以在同一個資料庫例項中執行多個獨立的應用程式,而不會相互干擾。
共享資源:多個 PDB 可以共享一些資源,如資料庫伺服器、CPU 和記憶體。這有助於提高資源利用率,並降低硬體成本。
資料隔離:每個 PDB 都有自己獨立的資料儲存,確保資料安全性。此外,Oracle 多租戶還支援跨 PDB 資料複製和同步,便於資料在不同 PDB 之間共享和一致性。
許可權管理:Oracle 多租戶功能允許您為每個 PDB 獨立設定使用者和許可權。這有助於實現精細化的許可權控制,提高資料安全性。
簡化管理:透過 Oracle 多租戶功能,您可以集中管理多個 PDB,從而簡化資料庫管理和維護工作。
高可用性:Oracle 多租戶支援 PDB 的自動故障轉移、資料備份和恢復,確保應用程式的高可用性。
2).PostgreSQL 租戶能力
3).TiDB 租戶能力
資源組,是資源管理的邏輯單元。任意一個會話屬於唯一的資源組,而同一資源組的所有會話共享同一組資源限額。TiDB 支援資料庫使用者與資源組的對映關係,透過設定資料庫使用者的預設資源組,使用者會話可以分屬於不同的資源組。未指定預設資源組的使用者,與系統內建的 default 資源組相關聯。
資源限額,TiDB 首先支援為資源組配置用量 (RU)。RU (Request Unit) 是 TiDB 對 CPU、IO 等系統資源的統一抽象的單位,目前會考慮 CPU、IOPS 和 IO 頻寬三個指標,按照一定的比例統一到 RU 單位上。TiDB 支援設定資源組為 BURSTABLE 模式,BURSTABLE 模式允許資源組超額使用到叢集的空閒資源。
排程優先順序,預設情況下所有資源組的優先順序 (PRIORITY)均為“中等(medium)”。當資源組在同一優先順序下,排程優先順序按照資源配額的比例分配,這已經能夠滿足絕大多數場景的需要。使用者仍舊可以顯式地指定資源組優先順序為“高(high)”或者“低(low)”,從而完成更復雜的設定。
4).OceanBase 租戶能力
資源規格,定義常見物理資源項的大小,包括 CPU、記憶體、磁碟空間、IOPS 等。建立資源池時指定其資源規格,從而根據定義建立資源單元。 資源單元(Unit),Unit 是租戶管理中非常重要的概念。OceanBase 按照 Unit 來管理物理資源,是 CPU、記憶體、儲存空間、IOPS 等物理資源的集合。Unit 也是資源排程的基本單位,其具有節點、Zone、Region 等位置屬性,節點是伺服器的抽象,Zone 是機房的抽象,Region 是地域的抽象,透過調整 Unit 的位置屬性從而調整租戶的部署方式。 資源池,每個 Unit 都歸屬於一個資源池,每個資源池由若干個 Unit 組成,資源池是資源分配的基本單位,同一個資源池內的各個 Unit 具有相同的資源規格,即該資源池內 Unit 的物理資源大小都相同。
5).PolarDB-X 租戶能力
PolarDB-X 是阿里雲旗下一款分散式資料庫產品。它透過結合非模板化二級分割槽與Locality兩項能力,來解決租戶場景問題。
非模組化二級分割槽,是指 PolarDB-X 支援使用二級分割槽建立分割槽表。可在各個一級分割槽之下的二級分的分割槽數目及其邊界值定義允許不一致。透過這種方式可以將大小租戶的資料進行不同的資料儲存策略,例如大租戶可以將資料路由到一組資料分割槽中,小租戶可以按雜湊演算法自動均衡到不同分割槽,從而避免訪問熱點。
Locality,PolarDB-X 透過這個關鍵字來指定資料庫分割槽的實際儲存資源位置(PolarDB分散式版中儲存資源由多個資料節點(DN節點)組成,可以透過DN的ID進行位置分配),以實現資料隔離或資料的均勻分佈。
1).TiDB 操作示例
2).OceanBase 操作示例
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70027826/viewspace-3000552/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式資料庫索引能力大調研分散式資料庫索引
- 資料庫調研:memcached資料庫
- 國產資料庫調研之——AntDB資料庫資料庫
- 大資料體系下的多租戶管理方案大資料
- Oracle 12c系列(一)|多租戶容器資料庫Oracle資料庫
- oracle12之 多租戶容器資料庫架構Oracle資料庫架構
- 技術解讀資料庫如何實現“多租戶”?資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 2Oracle資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 1Oracle資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 3Oracle資料庫
- 1.2.2. 多租戶對於資料庫整合的好處資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 參考Oracle資料庫
- 調研azkaban內部資料庫幾張table資料庫
- 多租戶:防止意外建立可插拔資料庫(PDB)- Lone-PDB資料庫
- MySQL監控-Datadog資料庫監控調研MySql資料庫
- MaxCompute多租戶資料安全體系
- Oracle 20C 多租戶_1.2 資料庫與例項介紹Oracle資料庫
- 分久必合?資料庫進入“超”融合時代 | 愛分析調研資料庫
- Oracle12c多租戶資料庫備份與恢復 - 僅備份一個PDB資料庫Oracle資料庫
- 首個國產分散式資料庫調研:TDSQL產品技術及服務能力排名第一分散式資料庫SQL
- 2.10.1 在non-CDB(非多租戶)環境中克隆資料庫資料庫
- 探索 Python/Django 支援分散式多租戶資料庫,如 Postgres+CitusPythonDjango分散式資料庫
- 多租戶
- 梳理資料需求,資料分析7大能力
- 海外報告 | 印度娛樂行業大資料調研報告行業大資料
- 2015中國大資料調研五大趨勢大資料
- 關於oracle 12c多租戶可插拔資料庫的啟停分析(一)Oracle資料庫
- 資料庫調優資料庫
- Faster資料庫研習,一AST資料庫
- Oracle12c多租戶資料庫備份與恢復 - 恢復一個PDBOracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 單獨恢復CDBOracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 備份表空間Oracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 僅僅備份CDBOracle資料庫
- openGauss 分散式資料庫能力分散式資料庫
- 企業門戶專案需求調研指南
- 喚醒資料價值,惟客資料打造客戶經營數字化閉環 | 愛分析調研
- Oracle12c多租戶資料庫備份與恢復 - PDB中資料檔案的恢復Oracle資料庫
- 入門大資料---大資料調優彙總大資料