greenplum 是最出色的開源mpp資料庫,經過15年的發展,從資料倉儲發展成了雲時代的理想大資料平台。
本系列文章將從各個方面介紹greenplum對雲的支援。本篇側重多租戶。
多租戶指一套系統能夠支撐多個租戶。乙個租戶通常是具有相似訪問模式和許可權的一組使用者,典型的租戶是同乙個組織或者公司的若干使用者。
要實現多租戶,首先需要考慮的是資料層面的多租戶。資料層的多租戶模型對上層服務和應用的多租戶實現有突出影響。本文重點介紹資料層多租戶及greenplum資料庫對各種多租戶模型的支援。
權衡不同的多租戶實現方式時,需要考慮如下因素:
多租戶模型描述了租戶和該租戶的資料之間的對映關係。不同的多租戶模型會影響資料庫和應用程式的設計、管理和維護。
使用較多的多租戶模型有三種。 greenplum 對這三種模型都有出色的支援。
最簡單的多租戶實現方式是為每乙個租戶建立乙個greenplum集群,如下圖所示。應用程式為每個租戶分配乙個租戶id,並為每個租戶配置相應的資料庫連線資訊(包括資料庫ip、埠等)。應用程式根據租戶id連線到為其分配的資料庫。
這種模型中不同租戶的資料物理隔離,安全級別高。如果每個租戶的greenplum集群使用不同的硬體,則他們之間的資源使用也是物理隔離的;如果租戶的greenplum集群共用同一套硬體,則需要對資源進行合理分配和管理,避免相互影響。由於不同租戶使用獨立的資料庫,靈活性好,容易滿足不同租戶的特定需求(譬如需要額外的字段)。出現故障時影響面小。缺點是資料庫數量大,維護複雜,擁有成本高。適合租戶數目比較少的場景。
多個租戶共享同乙個資料庫,每個租戶擁有獨立的名字空間(或模式)。應用程式為每個租戶分配乙個id,並把每個租戶的所有操作限制在為其分配的名字空間/模式之中。如下圖所示。
這種多租戶模型下,不同租戶的資料邏輯上相互隔離,安全控制相對簡單。不同租戶有不同的模式,可以簡便的滿足不同租戶的特定需求,靈活性高。對資源管理能力要求高,以避免不同租戶競爭資源。結合 greenplum 的 filepace 和 tablespace 特性,可以把不同租戶的資料儲存在不同的磁碟上,降低了對磁碟io的競爭。運維和管理較複雜,不易實現大量租戶的跨租戶分析。適合租戶數目適中的場景。
不同租戶共享同乙個資料庫、同乙個名字空間。不同租戶的資料在同一組表中共存,通過租戶id標記和訪問不同租戶的資料(應用需要調整訪問資料的sql以包含租戶id)。如下圖所示。
這種多租戶模型中,不同租戶的資料物理儲存在一起,對系統的資源隔離和安全隔離要求很高。運維相對簡單。擴充套件能力好,可以支援較多數量租戶。由於租戶資料儲存在一起,跨租戶資料分析和優化非常簡單。成本低,可以較低的代價支援更多的租戶。
全共享模型中,很多資料庫採用新增大量自定義欄位的方式滿足不同租戶的特定需求,以提高靈活性。這種方式有諸多侷限性,譬如字段數目不能太多、管理複雜等。greenplum 自 5.0 開始支援更多半結構化資料,包括json、hstore 等,通過這種半結構化資料,可以更靈活、高效、便捷的滿足不同租戶的特定需求。
這種模型不是乙個新的實現方式,而是混合前面介紹的三種模型以滿足不同使用者的服務級別需求。譬如對於最大的少數幾個租戶採用一租戶一資料庫的模型,其他租戶採用全共享方式。或者對資源隔離級別要求高、服務響應時間要求高的客戶採用一租戶一資料庫的模型,其他租戶採用一租戶一名字空間方式或者全共享方式。
下表列出了不同模式的特點。混合模型兼具不同模型的優缺點,不再單獨列出。根據不同需求可以採用不同的實現方式。
特性一租戶一資料庫
一租戶一名字空間
全共享擴充套件性、租戶數量低中
高安全隔離
物理隔離
邏輯隔離
依賴資料庫和應用安全控制
資源隔離
若用不同集群,則高;否則依賴資料庫資源管理特性
依賴資料庫資源管理特性
依賴資料庫資源管理特性
靈活性高
高通過json等半結構化資料型別提供較高靈活性
跨租戶分析
很難,需要跨庫查詢
難,需要跨模式查詢
容易運維管理
複雜度高
複雜度中
複雜度低
對應用影響低低
較高成本高中
低上面提到,不管使用何種多租戶模型(除非是不同的物理集群),否則都涉及到資源管理的問題,以滿足不同租戶的不同資源使用需求,避免某個租戶過度使用資源,影響其他租戶。
greenplum 5 設計實現了乙個全新的基於資源組的資源管理器,相比之前的資源佇列,可以做到靈活高效的資源管理。
下表對資源組和資源佇列進行了對比:
特性資源組(resource group)
資源佇列(resource queue)
併發控制
事務級別
語句級別死鎖無
極端情況下會出現
cpu 管理
基於比例、基於cgroup
基於粗粒度的優先順序
cpu 空閒利用率
可以充分利用空閒cpu
部分利用
記憶體限制
精細粒度粗
組內記憶體共享是否
動態修改資源配置是部分
排隊無併發槽位或者記憶體配額時
無併發槽位時
管理ddl、utility語句是否
segment級別監控管理是否
基於規則的資源管理是否
greenplum 可以實現細粒度的資源管理,在雲上多租戶場景下,非常適合實現租戶的資源隔離,避免某個租戶過度占用資源,確保資源合理使用。
有關更多細節,請參考官方文件
多租戶是雲資料庫的基本要求,本文介紹了greenplum的四種多租戶實現方式,並對之進行了對比。還介紹了 greenplum 新的基於資源組的資源管理器,以實現多租戶的資源共享和隔離。
大資料 雲計算區別
關於大資料和雲計算的關係人們通常會有誤解。而且也會把它們混起來說,分別做一句話直白解釋就是 雲計算就是硬體資源的虛擬化,大資料就是海量資料的高效處理 雖然上面的一句話解釋不是非常的貼切,但是可以幫助你簡單的理解二者的區別。另外,如果做乙個更形象的解釋,雲計算相當於我們的計算機和作業系統,將大量的硬體...
大資料平台容量評估 大資料平台
系統概述 大資料應用支撐平台提供資料支撐服務,對外發布資料服務進行資料價值變現。包含資料採集 資料治理 資料交換 資料儲存 資料計算相關元件的搭建 驗證,並建立大資料倉儲。b 功能要求 2.資料治理,由於從資料採集工具採集過來的資料不具備統一的資料標準及資料格式,資料治理工具需要對到達的資料進行格式...
關於大資料的大資料平台
大資料平台,顧名思義就是整合 應用和大資料系統之間的差異,將應用程式產生的資料匯入到大資料系統,經過處理計算後再匯出給應用程式使用。網際網路產品處理使用者請求,需要毫秒級的響應,要在 1 秒內完成計算,普通大資料計算必然不能實現這樣的響應要求。如何才能彌補這網際網路和大資料系統之間的差異呢?解決方案...