楊陽
摘 要 在當今互聯網技術廣泛普及的今天,大數據已經不再是新的研究課題,在當今數據來源越來越繁雜,每天都有海量的數據進行儲存、訪問的形勢下,過高的數據負載對系統的穩定性與擴展性造成不可忽視的影響。基于此,本文分析采用數據切分方案的特征,并對以數據切分方案提高大數據查詢性能的應用進行了研究與設計。
【關鍵詞】數據切分 方案 大數據 查詢性能 設計
1 數據切分概述
數據切分方法是按照某種切分規則將數據分布到指定的范圍內,達到數據查詢時提高系統并行處理能力的目的。數據切分后規模會進一步的減小,而且通常分布在多個數據庫中,當對數據進行查詢時,查詢的響應時間會大大降低,也可以減少通信開銷,平衡系統負載和減少計算量,從而提高系統性能。
2 數據切分模式及特征
數據切分按照不同的切分規則類型,可以分為垂直切分、水平切分兩種切分模式。
垂直切分是根據業務的特性,將不同的數據表按照某種切分規則切分到不同的數據庫上。垂直切分的最大特點是切分規則比較簡單,實施起來也比較方便,適合各個模塊耦合度低、相互影響小、業務邏輯簡單清晰的系統。這種系統很容易將不同模塊所使用的表拆分到不同的數據庫中。
水平切分則是根據表中數據的邏輯關系,按照某種切分規則將同一個表中的數據拆分到多個數據庫上,相對于垂直切分來說切分規則復雜一些。當一張表中的數據量巨大而且増長速度比較快時,為了提高查詢的效率就需要對其進行水平切分,按照指定的規則將表中的數據拆分到不同的數據庫中。水平切分通常需要根據指定字段進行數據切分,常用的切分規則如下:
2.1 枚舉法
比如數據是按照地區省份來保存的,用戶通過多級別劃分的,本規則適用于這些特定的場景。
2.2 求模
如果分片字段為數字,對分片字段進行十進制/百進制求模運算,數據可以均勻落在各分片內,也可以對字符串hash取模,支持存在符號字母的字段的分片。
2.3 范圍約定
對分片字段約定一個范圍,比如ID0-100000為一個分片,ID100001-200000為一個分片。
2.4 按日期
可以按月,按日,按小時分片。
2.5 一致性hash
對指定字段進行hash取值,然后根據hash值將數據進行分片。
當某個表或者某些表的數據量比較大而且訪問頻繁時,通過垂直切分仍然無法滿足系統的讀寫要求時,就需要將垂直切分和水平切分結合起來使用,先對數據進行垂直切分,然后進行水平切分,通過這兩種方式的組合來解決超大型表的讀寫性能問題。
3 以數據切分提高大數據查詢性能的設計方案
當前的大部分企業都擁有自己的數據存儲系統,利用數據存儲系統可以方便快捷的對企業信息數據進行查詢。但當這些信息數據的數據量達到一定級別時,從數據中查詢某一數據通常需要花費大量的時間,影響到整體工作效率,因此需要對數據查詢進行優化。以下以垂直切分與水平切分方案設計為例,通過對數據的劃分來提高海量數據的查詢性能。
3.1 垂直切分方案設計
本應用數據包括設備基本信息、內容推送序列信息、用戶行為信息及相關統計信息。分析數據的特性可以發現設備基本信息主要是用于查詢,數據更新的操作并不是很多。內容推送序列由管理員提前進行編輯,然后推送給各個用戶。因此內容序列也是主要用于用戶查詢操作。用戶行為信息是用戶使用移動端時產生的日志信息,主要記錄用戶使用設備瀏覽廣告的次數以及時長等,因此用戶行為信息主要進行數據庫的寫操作。統計信息主要是用戶瀏覽信息的次數,用戶的積分等信息,這些信息主要是由定時統計任務用戶活動較少的時段對相關信息統計后寫入到表中,也主要用于用戶查詢。
由于應用存在著大量的讀寫操作,為了保證數據庫系統的能夠較好的處理用戶的讀寫需求,獲得良好的用戶體驗,應該對數據進行讀寫分離,將大并發讀的數據和大并發寫的數據進行垂直切分存入不同的數據庫中。
另外,由于用戶量巨大,將所有的查詢密集的信息存入一個數據庫中,并不能滿足系統查詢性能的需求。同樣,將所有的寫密集型的數據寫到單臺數據庫,也不能滿足系統快速存儲數據的需求。因此,需要對數據進行進一步的切分。內容序列信息和統計信息并發查詢量都超出了單個數據庫的承受能力,所以將這兩個信息相關表放在不同的數據庫中,以更好的滿足用戶查詢的需求。
3.2 水平切分方案設計
以用戶行為信息表為例,由于應用將來會有大量的用戶,每天將會有海量記錄信息寫入數據庫。單臺數據庫己經不能滿足如此巨大數據的處理需求,因此,需要對用戶行為信息表進行水平切分。
對用戶行為信息表進行水平切分需要選取一個字段作為切分依據和標記。本文選取手機號字段進行數據切分,并且按照手機號的地域(省或者直轄市)作為切分標準。在用戶不斷增加的情況下可以更細粒度的按地域對數據進行劃分,系統的擴展性會比較好。
分析用戶行為信息的特性發現,用戶行為信息的數量隨著時間不斷的增長。隨著用戶的不斷增多,將會產生大量的數據,而且増長速度也會變快。如此巨大的數據保存在一個表里顯然是不合適的。因此,需要對數據表進行進一步拆分。分析發現數據是隨著時間線性增加的,因此可以對同一數據庫的按照月份對數據進行再次切分,每個月份的數據保存在單獨的表中。
4 結語
通過使用垂直切分與水平切分的方法,不僅能夠很好的應對信息數據不斷增長的形勢,還能通過增加維度來降低數據的規模,提高對大數據的并發讀寫查詢性能,有效的解決了海量數據的存儲問題和快速查詢問題。
參考文獻
[1]駱濤.面向大數據處理的并行計算模型及性能優化[D].合肥:中國科學技術大學,2015.
[2]劉義.大規模空間數據的高性能查詢處理關鍵技術研究[D].北京:國防科學技術大學,2013.
[3]王覓.基于虛擬班級的教師遠程培訓系統設計與實現[D].長沙:湖南大學,2012.
作者單位
國網陜西省電力公司信息通信公司 陜西省西安市 710048