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