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