(中國移動通信集團設計院有限公司網絡所,北京 100080)
隨著移動互聯網的迅猛發展,運營商網絡中的數據呈現爆炸性增長,帶來海量數據存儲、分析及管理的需求。大數據分析場景以非結構化數據為主,運營商由小型機構建的傳統數據庫系統在架構、成本、分析能力等方面均出現瓶頸或不滿足發展需求,運營商系統對分布式數據庫需求大量增加。因此,秉承“高效低成本”的指導原則,并實現大數據的交換、整合和分析,本文基于運營商大數據分析系統,探討了以分布式數據庫為特征的架構方案具體落地。
在大數據時代,面對海量數據的井噴式增長,傳統集中式數據庫的弊端日益顯現,采用分布式數據庫的驅動主要來源于以下方面:
(1)更強的擴展能力:傳統小型機構成的數據庫系統受限于其架構,最多幾百TB級別的數據容量,其擴展性能已接近瓶頸。而分布式數據庫架構能夠動態地增添存儲節點,在支持PB級別的數據環境方面更具優勢。
(2)較大的成本優勢:大數據下,傳統小型機及數據庫擴容成本急劇提升,而分布式數據庫在成本方面具備較大的優勢。以運營商存儲總量為500TB的大數據分析系統為例,在考慮服務器、數據庫軟件及網絡設備的整體架構方案設計下,傳統數據庫架構造價成本為11.2萬元/TB,而分布式數據庫架構造價成本僅為2.2萬元/TB,單位造價降低80%。
(3)更優的使用效果:在大數據分析場景下,分布式架構的列存儲、透明壓縮、并行處理等技術很容易實現海量存儲和管理要求,可以及時響應大規模用戶的讀/寫請求,在查詢、統計和分析類操作較傳統數據庫具備天然的優勢。
分布式數據庫一般基于MPP(Massive Parallel Processing,大規模并行處理)技術實現,由多個松耦合的處理單元構成,每個處理單元都有自己的計算資源、存儲資源和軟件資源,如總線、內存、硬盤、操作系統和數據庫實例等。每個處理單元都是獨立的、自給的、對等的,整個系統中不存在單點瓶頸。
分布式數據庫提供動態擴展的方式,由多個處理單元協同完成相同的任務,多個處理單元之間的信息交互是通過節點互聯網絡實現的。每個節點只訪問自己的本地資源,不存在異地內存訪問的問題,是一種完全無共享(Shared Nothing)結構。該架構下,數據平均分布到系統的所有節點上,每個節點存儲每張表或表分區的部分行,所有數據加載和查詢均可自動在各個節點服務器上并行運行。
區別于傳統行存數據庫,分布式數據庫的數據在磁盤中支持混合方式(按行或按列)進行組織和物理存儲。由于列存儲架構對查詢、統計和分析類操作具備天然的優勢,因此在運營商經營分析系統等大數據分析場景中能獲得很好的應用。混合存儲的優勢體現在以下方面:
(1)更高靈活性:混合按列或按行存儲數據,每張表或表分區可以由管理員根據應用需要或者數據格式的不同,指定不同的存儲和壓縮方式。該方式可較大地提高配置的靈活性,具體如圖1所示。

圖1 混合存儲示意圖
(2)提高響應速度:查詢語句時,傳統行存數據庫需要從磁盤上將整行數據取出,而列存儲只讀取所需要的列,其他列的數據不需要讀取。該方式可大幅降低I/O開銷,提高查詢性能和響應速度。
(3)高擴展性:分布式數據庫的獨特存儲格式對列數據可再細分為“數據包”。無論一個表有多大,數據庫只操作相關的數據包,性能不會隨著數據量的增加而下降,這樣表數據可以達到很高的可擴展性。
高效透明壓縮技術能夠按照數據類型和數據分布規律自動選擇最優壓縮算法,并設置了庫級、表級、列級等壓縮選項,靈活平衡性能與壓縮比的關系,而且壓縮與解壓縮過程對用戶是透明的。
由于分布式數據庫支持列存儲,列數據包內都是內容相關性高的同構數據,因此更易于實現壓縮,壓縮比可以達到5~20倍以上,數據占用空間較傳統數據庫可節省50%~90%。此外,壓縮態下對I/O要求大大降低,數據加載和查詢性能比傳統數據庫快幾十倍以上。
與傳統數據庫建立在行數據上的細粒度索引技術相比,分布式數據庫的智能索引是一種建立在數據包上的粗粒度索引。每個數據包在加載數據時自動建立,包含過濾信息和統計信息。粗粒度的智能索引包含了描述數據間相互依賴關系的高級信息,能夠準確識別數據包的需要,可有效解決復雜的多表連接和子查詢。表中的所有列自動建立,不需用戶手工建立和維護。
智能索引本身占空間很少,擴展性很好,建立索引后無膨脹。后續的數據包建立索引的速度不會受到前面數據包的影響,建立索引的速度相當快。并且在數據查詢時不需要解包就能得到統計值,可進一步降低I/O速度,對復雜查詢的優化效果明顯。
分布式數據庫針對數據加載和數據查詢實現了自動高效的并行處理技術,充分利用智能算法適配實現多核CPU資源并行,實現數據庫分區內的查詢并行。針對不同的數據分布及特征智能選擇不同算法進行處理,如低效的寫操作、并發運行且消耗大量資源的查詢操作,控制在各自適合的條件下運行。
分布式并行技術具有系統資源管控能力,通過可配置的負載均衡機制,有效調度和平衡各個節點的負載及并行處理過程。用戶所面對的都是同一個數據庫系統,它負責調度各節點的工作,分解查詢請求,制訂節點查詢計劃,并對不同節點的查詢結果進行匯總。并行處理技術可以將一個用戶的單個查詢任務分解在同一臺主機的多個CPU上并行運算,也可以將一個用戶的多個查詢任務分解在同一臺主機的多個CPU上并行運算,還可以將多個用戶的多個查詢任務分解在多臺主機的多個CPU上并行運算。
移動互聯網的迅猛發展使得運營商網絡中數據流量激增,運營商如何把握市場轉型所帶來的機遇,做好數據經營的價值挖掘,以低成本、高效率的運營模式面臨挑戰,將會是一個重要的課題。
本文以某省運營商大數據分析系統為例,為實現深度挖掘支撐精準營銷和精細化服務,并實現對大量并發自助服務查詢的支撐要求,將該系統中的分布式數據庫分為融合計算集群和自助查詢集群。其中,融合計算集群有效數據量為300TB,并要求具備高效并行計算能力;自助查詢集群有效數據量為150TB,并要求具備復雜關聯查詢的支持能力。
分布式數據庫需要通過網絡傳輸大量的數據,為提升網絡帶寬并最終改善數據庫性能,一般建議采用萬兆交換網絡。本文將系統分為集群一(融合計算集群)和集群二(自助查詢集群),兩集群共用核心萬兆交換機。每集群配置相應數量的節點,每個節點配置2個萬兆網卡和2個千兆網卡綁定后分別連接2臺交換機,從網卡、交換機、節點等環節均實現高可用性。其中,千兆電口網卡用于外部對節點的管理登錄連接及監控信息通訊;萬兆光口網卡用于集群內部節點管理和節點間數據通訊。具體如圖2所示。

圖2 分布式架構網絡部署圖
每臺交換機劃分2個VLAN(Virtual Local Area Networks,虛擬局域網)。VLAN1支撐融合計算集群,VLAN2支撐自助查詢集群,并各自預留一定的擴容余量。
分布式數據庫的性能很大程度上取決于CPU、內存、I/O設備、磁盤數量等硬件配置是否均衡。資源配置均衡合理,避免瓶頸的出現,才能獲得更優的性能。例如,CPU和內存的比例一般要求在1:8或以上;應確保每個數據庫分區使用獨立的磁盤,以匹配分布式數據庫的無共享架構。
仍以前文架構為例,系統集群一和集群二分別部署54、36個節點,每個節點包含1臺X86服務器及8塊1TB內置磁盤。每個集群內的節點均為對等節點,共同提供計算或查詢服務。集群之間不存在依賴關系。
分布式數據庫可采取將一個大的集群拆分成多個高可用組的方式,實現高可用性。例如,融合計算集群共54個節點,可拆分成18個高可用組,每組內3個節點輪轉方式備份,每個節點的2個文件系統分別在另外2個節點上各有1份數據拷貝,確保任何節點宕機后數據庫仍然可以正常使用。
分布式數據庫配置硬盤及支持的數據空間換算過程如表1所示:

表1 分布式數據庫配置硬盤及數據空間計算模型
由此可見,配置硬盤及支持的壓縮數據空間大約在1:1之間。但考慮本文僅保守取定5倍的壓縮比例,且目前單節點配置硬盤已經廣泛達到24TB(12塊2TB),分布式數據庫可支持的數據空間還有較大的提升潛力。
以前文提到的融合計算集群和自助查詢集群為例,最終通過MPP架構數據庫集群實現了較高的并行計算能力、高并發訪問支持能力以及高效即席查詢能力來支持數據分析平臺的業務需求。主要應用效果如下:
(1)混合應用的負載支撐
分布式數據庫可支持各種類型的應用,如數據裝載、數據加工、數據計算、數據更新和刪除、數據插入導出、用戶并發查詢等操作。分布式數據庫通過良好的索引技術和并發機制能夠很好地支持混合負載場景,滿足業務需要。
(2)大量業務的負載管理
分布式數據庫可承載大規模的數據容量及大量的業務,有大量的業務用戶使用。通過高效的工作負載管理能力實現各類作業有條不紊地運行,提高系統的整體吞吐量。工作負載管理可提供用戶優先級管理(高優先級用戶可以使用更多系統資源)、數據優先級管理(熱點數據優先,查詢熱點數據獲取更多系統資源)、作業并發度控制(按作業執行成本分類,控制每類作業的并發度)、作業類型管理(如數據裝載、查詢、調用)等。
(3)滿足高并發查詢需求
在數據分析平臺自助服務查詢業務中,需面向基數龐大的客戶群體提供即席查詢服務,并發訪問峰值量極大,因此要求自助服務查詢數據庫具有支持大并發的能力。
根據實際應用情況,分布式數據庫可同時支持不少于200個并發查詢任務。分布式數據庫對于1億條記錄規模以內的數據查詢,處理性能可控在2小時以內。對記錄為2億條數據的表同時進行數據加載和查詢,查詢時間可控在40分鐘以內。
(4)滿足高數據加載能力需求
根據實際應用情況,日匯總數據28億條,單節點加載效率可達到1.5萬條/秒;月匯總數據320億條,單節點加載效率可達到5.5萬條/秒。對于2億條數據的表做單表匯總操作時間不超過90分鐘。
針對多表關聯的情況,日匯總表兩表關聯時,數據量為2億×0.5億情況下,關聯匯總的時間可控在40分鐘以內;在三表關聯時,數據量為2億×0.6億×0.5億情況下,關聯匯總的時間可控在50分鐘以內。
(5)滿足高擴展能力需求
隨著數據量的增加,應用功能不斷豐富,分布式數據庫系統勢必需要進行擴容,增加處理能力和存儲容量。分布式數據庫通常采用增加新的處理節點的方式,實現處理能力和存儲容量同時擴容。從系統擴展角度來說,分布式數據庫集群最大節點支持數在1 000以上;從運維角度來說,300TB存儲的分布式數據庫集群在增加節點后能夠在8小時內完成數據的重新分布。
數據庫支持定制哈希位圖,可盡量減少重分布的數據量以及減輕重分布期間對業務應用的影響,數據庫支持數據重分布期間對外提供服務,為客戶提供更多的選擇。
(6)實現系統穩定性和高可用性需求
分布式數據庫的高可用性包括應對多種故障,在網絡連接異常、磁盤故障、節點級故障等情況下,應用均不需要重新連接,可以繼續執行直至完成。同時,系統一般通過多副本等冗余機制來保證數據的高可用特性和安全。分布式數據庫在CPU利用率達到70%以上和200個線程同時計算的狀態下能夠穩定運行,能保障7×24小時持續運行,年故障數可控在5次以內。
本文分析了大數據分析場景下分布式數據技術的建設驅動力及關鍵技術,并對分布式架構建設方案進行了詳細的闡述。基于上述技術的分布式數據庫系統已經在運營商VGOP、經分等多個大數據分析平臺中得到應用。分布式數據庫可提高運營商系統的通用性、可擴展性、靈活性,并在一定程度上降低了開發成本。后續將對分布式數據庫進行進一步研究,以便其更好地服務于大數據的發展。
[1] 陳如明. 大數據時代的挑戰、價值與應對策略[J]. 移動通信, 2012(17): 14-16.
[2] 劉昭,張海峰,李瑋,等. 運營商發展大數據技術及建設模式展望[J]. 電信工程技術與標準化, 2015(3): 12-16.
[3] 趙東暉,李立奇,彭慶. 運營商大數據引入方案分析[J].移動通信, 2013(21): 69-74.
[4] 陳吉榮,樂嘉錦. 基于Hadoop生態系統的大數據解決方案綜述[J]. 計算機工程與科學, 2013,35(10): 25-32.
[5] 全波,姚素丹. 移動互聯網時代電信運營商流量經營探索[J]. 電信科學, 2012,28(7): 18-21.
[6] 翟巖龍,羅壯,楊凱,等. 基于Hadoop的高性能海量數據處理平臺研究[J]. 計算機科學, 2013,40(3): 100-103.
[7] 康尚欽,李軍,葉何亮,等. 基于分布式計算的電信聯機采集系統設計[J]. 計算機與現代化, 2013(1): 91-94.
[8] 陳娜,張金娟,劉智瓊,等. 基于Hadoop平臺的電信大數據入庫及查詢性能優化研究[J]. 移動通信, 2014(7):58-63.
[9] 彭慶. 基于大數據技術的流量分析平臺方案研究[J]. 郵電設計技術, 2014(8): 22-25.
[10] 郭健. 精細化流量經營業務支撐系統的研究與設計[J].電信工程技術與標準化, 2013(4): 1-5.