趙鑫
摘要:隨著互聯(lián)網(wǎng)的急速發(fā)展和云計(jì)算的大范圍普及,我們生活的環(huán)境正在經(jīng)歷著大規(guī)模的數(shù)據(jù)爆炸,海量的數(shù)據(jù)在迅速的增長和積累,我們已經(jīng)步入了大數(shù)據(jù)的時(shí)代。面對(duì)如此龐大的數(shù)據(jù)量,傳統(tǒng)的關(guān)系數(shù)據(jù)庫存儲(chǔ)的硬盤已經(jīng)無法承受各種需求,對(duì)于高訪問和高存儲(chǔ)的海量數(shù)據(jù)也無法滿足其高效率的要求,對(duì)于改善服務(wù)器對(duì)于高擴(kuò)展性和高可用性的缺陷問題,NoSQL這種數(shù)據(jù)庫變營運(yùn)而生,對(duì)于大數(shù)據(jù)的處理起著至關(guān)重要的作用。該文將從NoSQL的相關(guān)內(nèi)容進(jìn)行闡述,進(jìn)而提出基于NoSQL數(shù)據(jù)庫的大數(shù)據(jù)處理的分析。
關(guān)鍵詞:NoSQL;數(shù)據(jù)庫;大數(shù)據(jù);數(shù)據(jù)處理
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0026-02
Analysis of Large Data Processing Based on NoSQL database
ZHAO Xin
(Liaoning Administration Institute, Shengyang 110161, China)
Abstract: with the wide range of the rapid development of Internet and the popularity of cloud computing, our living environment is undergoing a massive explosion of data, massive data in the rapid growth and accumulation, we have entered the era of big data. In the face of such a huge amount of data, the traditional relational database storage hard disk has been unable to withstand a variety of needs, for the high access and storage of massive data can not meet the requirements of high efficiency, to improve the server for high scalability and high availability problems of NoSQL database, the operation is born, to handle large data plays a vital role in the. This paper will elaborate the related content of NoSQL, and analysis of large data processing based on NoSQL database.
Key words: NoSQL; database; data; data processing
隨著社會(huì)的發(fā)展和不斷的進(jìn)步,海量是數(shù)據(jù)已經(jīng)大規(guī)模的出現(xiàn)在人們的生活和科學(xué)研究的各個(gè)領(lǐng)域之中,人們對(duì)于如此多的數(shù)據(jù)的存儲(chǔ)和管理的問題必須重視考慮,互聯(lián)網(wǎng)和云計(jì)算技術(shù)的興起,越來越多的人們樂意與其他人進(jìn)行網(wǎng)上分享和交流,尤其隨著電子商務(wù)的發(fā)展、測(cè)量技術(shù)、生物化學(xué)、醫(yī)學(xué)天文等各個(gè)領(lǐng)域,要想將有價(jià)值的數(shù)據(jù)在海量的信息中提取出來,僅僅通過傳統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)已經(jīng)不能將這些龐大的數(shù)據(jù)進(jìn)行及時(shí)有效的處理,于是,一種新的設(shè)計(jì)思想力求滿足系統(tǒng)的不同需求,沒有固定的模式,可以進(jìn)行擴(kuò)展,對(duì)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫進(jìn)行補(bǔ)充,這些系統(tǒng)目前被統(tǒng)稱為NoSQL數(shù)據(jù)庫。
1 關(guān)于大數(shù)據(jù)
大數(shù)據(jù)在近段時(shí)間來,已經(jīng)走入了我們的生活之中,大數(shù)據(jù)具備著數(shù)據(jù)量大、結(jié)構(gòu)復(fù)雜、實(shí)時(shí)性高、價(jià)值密度低這樣的四個(gè)特征,被歸納為“四個(gè)V”,即Volume、Variety、Velocity、Value。主要是對(duì)海量的數(shù)據(jù)在可容忍的時(shí)間范圍內(nèi)進(jìn)行數(shù)據(jù)捕捉、存儲(chǔ)、查詢、共享、分析以及顯示?,F(xiàn)在的人們?cè)谌粘I钪邢矚g與人分享自己的心情、圖片等,通常通過微信、微博等社交工具,因此,常見的如網(wǎng)絡(luò)日志、視頻圖片、地理位置等都已經(jīng)成為大數(shù)據(jù)的數(shù)據(jù)來源,而且這些存在的數(shù)據(jù)大部分是半結(jié)構(gòu)化或者是非結(jié)構(gòu)化的數(shù)據(jù)。
大數(shù)據(jù)中的數(shù)據(jù)是海量的,但是價(jià)值密度低,也就是說大量的信息中,信息量的價(jià)值較低,加之對(duì)大數(shù)據(jù)的處理存在缺陷和問題,導(dǎo)致只有在足夠多的數(shù)據(jù)之中,擁有足夠的能力對(duì)這些海量數(shù)據(jù)加以處理,才能真正的去挖掘出有價(jià)值的部分,從而為企業(yè)等創(chuàng)造巨大的價(jià)值。而從技術(shù)層面來說,就需要具備分析處理數(shù)據(jù)的工具和人才,采用更加靈活、高效的數(shù)據(jù)存儲(chǔ)模型與處理方式來應(yīng)對(duì)大數(shù)據(jù)環(huán)境之下的海量數(shù)據(jù)。
2 關(guān)于NoSQL
2.1 NoSQL的概念
NoSQL(Not Only SQL)是在1998年便被提出,直到2009年作為非關(guān)系的分布式數(shù)據(jù)庫才被世人所知,NoSQL主要是指相對(duì)于傳統(tǒng)關(guān)系數(shù)據(jù)庫的一類數(shù)據(jù)庫的總稱,這一類數(shù)據(jù)庫主要采用的是靈活的、分布式的、可擴(kuò)展的數(shù)據(jù)存儲(chǔ)方式來對(duì)數(shù)據(jù)進(jìn)行管理,去滿足大數(shù)據(jù)存儲(chǔ)于處理的需求,由于此類數(shù)據(jù)庫對(duì)關(guān)系操作不支持,因此一般情況下不支持SQL的語言接口。
2.2 NoSQL的特點(diǎn)
相比于傳統(tǒng)的數(shù)據(jù)庫,NoSQL主要具備四大優(yōu)勢(shì)的特點(diǎn),即較容易擴(kuò)展、較高的性能、數(shù)據(jù)模型的靈活性、可用性能高。NoSQL數(shù)據(jù)庫摒棄了傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的特征,數(shù)據(jù)之間無關(guān)系,擴(kuò)展起來較為容易,同時(shí),NoSQL數(shù)據(jù)庫的結(jié)構(gòu)簡單,因此在大數(shù)據(jù)的環(huán)境下更有利于讀寫,NoSQL可以將用戶存儲(chǔ)的數(shù)據(jù)可以及時(shí)進(jìn)行存儲(chǔ),更符合大數(shù)據(jù)的特點(diǎn),對(duì)此進(jìn)行優(yōu)化,可提供更加高效、符合大數(shù)據(jù)處理數(shù)據(jù)的需求的操作方式。
3 NoSQL數(shù)據(jù)庫的存儲(chǔ)模型
由于NoSQL并非基于關(guān)系模型的數(shù)據(jù)結(jié)構(gòu),因此,NoSQL數(shù)據(jù)存儲(chǔ)通常是不基于表的連接操作。NoSQL數(shù)據(jù)庫可以根據(jù)數(shù)據(jù)庫的存儲(chǔ)模型及其特點(diǎn)進(jìn)行分類,通??煞譃樗膫€(gè)類型,即:廣義列模型、鍵值模型、文檔模型和圖模型。NoSQL數(shù)據(jù)庫存儲(chǔ)模型劃分實(shí)例和特點(diǎn)如圖1所示。
圖1 NoSQL數(shù)據(jù)庫存儲(chǔ)模型劃分
3.1 廣義列模型
廣義列模型也可以叫做列式模型,這種模型并不支持類似于多表連接這樣的操作,主要適用于類似傳統(tǒng)的二維表的這樣的數(shù)據(jù)庫,列式模型主要的特點(diǎn)就是在對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),主要是圍繞列而并非行進(jìn)行存儲(chǔ)。也就是說,在大數(shù)據(jù)之中進(jìn)行海量數(shù)據(jù)的存儲(chǔ)的時(shí)候,同一列的數(shù)據(jù)會(huì)盡可能的存放在硬盤的同一個(gè)頁面上,這樣的優(yōu)勢(shì)在于,對(duì)于同一列數(shù)據(jù)進(jìn)行海量的數(shù)據(jù)分析時(shí),會(huì)大大的減少硬盤的輸入及輸出的操作,這樣便可以極大的提升數(shù)據(jù)處理的速度。
3.2 鍵值模型
鍵值模型的思想來源于數(shù)據(jù)結(jié)構(gòu)中的哈希表,有一個(gè)特定的key和一個(gè)value指針,用來指向特定的數(shù)據(jù)。在大數(shù)據(jù)的環(huán)境之下,海量的數(shù)據(jù)存儲(chǔ)使用鍵值模型最大的優(yōu)勢(shì)就在于數(shù)據(jù)模型相對(duì)簡單,比較容易實(shí)現(xiàn),非常使用通過key對(duì)數(shù)據(jù)進(jìn)行查詢和修改等操作。但是如果整個(gè)大數(shù)據(jù)的環(huán)境之中存儲(chǔ)系統(tǒng)更加注重的是批量數(shù)據(jù)的查詢以及更新的操作,那么,鍵值模型便在效率上處于劣勢(shì),可見,鍵值模型的存儲(chǔ)方式并不適用于較為復(fù)雜的數(shù)據(jù)操作。
3.3 文檔模型
文檔模型的數(shù)據(jù)庫就好比是在鍵值存儲(chǔ)模型和傳統(tǒng)的關(guān)系數(shù)據(jù)庫之間進(jìn)行溝通,數(shù)據(jù)結(jié)構(gòu)主要是以JSON或者是相類似的JSON格式的文檔對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),在存儲(chǔ)過程中,是有語義存在的,文檔模型的數(shù)據(jù)庫主要應(yīng)用為MongoDB和CouchDB。通常來說,文檔模型的數(shù)據(jù)庫可以認(rèn)為是鍵值數(shù)據(jù)庫的升級(jí),對(duì)鍵值是允許嵌套的,而且文檔模型是可以對(duì)其值進(jìn)行索引的創(chuàng)建,這樣會(huì)方便上層的應(yīng)用,這也正是鍵值數(shù)據(jù)模型所無法支持的。與鍵值數(shù)據(jù)模型相比,文檔數(shù)據(jù)模型在海量數(shù)據(jù)查詢時(shí),效率會(huì)更為突出。
3.4 圖模型
目前來說,對(duì)于圖模型的研究為數(shù)不多,不過,從早期的數(shù)據(jù)模型發(fā)展來看,所說的圖模型就是傳統(tǒng)關(guān)心數(shù)據(jù)庫中的網(wǎng)絡(luò)結(jié)構(gòu)圖,但圖結(jié)構(gòu)較關(guān)系數(shù)據(jù)庫模型相比更加規(guī)范化,但是,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在對(duì)文件的遞歸結(jié)構(gòu)以及社交網(wǎng)絡(luò)結(jié)構(gòu)查詢的時(shí)候會(huì)受到性能的影響,不但操作緩慢,而且對(duì)于表中元組數(shù)量的增加無法跟著伸縮,為了解決傳統(tǒng)關(guān)系數(shù)據(jù)庫的性能缺陷,研究人員便提出了圖模型。一個(gè)完整的圖模型當(dāng)中包含節(jié)點(diǎn)、關(guān)系、節(jié)點(diǎn)和關(guān)系上的屬性等單元。
4 基于NoSQL數(shù)據(jù)庫的大數(shù)據(jù)處理方法
4.1 MapReduce方法
MapReduce是目前處理大數(shù)據(jù)最普遍和最流行的方法。Map即映射,Reduce即化簡,設(shè)計(jì)思想主要來源于函數(shù)編程語言,對(duì)于MapReduce處理大數(shù)據(jù)的流程圖如圖2所示。
圖2 MapReduce處理任務(wù)流程圖
在大數(shù)據(jù)環(huán)境之下,MapReduce 的流程就是將大數(shù)據(jù)集分解成為多個(gè)小數(shù)據(jù)集,一個(gè)或多個(gè)數(shù)據(jù)集分別由集群中的節(jié)點(diǎn)來處理和生成中間結(jié)果,然后這些中間節(jié)點(diǎn)又通過大量的合并形成最終結(jié)果,在這整個(gè)過程中,需要用戶完成的工作只是編寫所需的 Map 函數(shù)和Reduce 函數(shù)。處理大數(shù)據(jù)的效率是非??斓?。
4.2 Dryad 方法
Dryad是微軟公司發(fā)布的并行處理海量數(shù)據(jù)設(shè)計(jì)的分布式架構(gòu),可以為海量的數(shù)據(jù)提供高效可靠的分布式擴(kuò)展服務(wù),同時(shí),還可以為海量的數(shù)據(jù)處理的并行程序提供一個(gè)分布式的高效率的執(zhí)行引擎。Dryad的架構(gòu)主要包含了四個(gè)重要的組件:基礎(chǔ)設(shè)施(WindowsHPC Server)、DFS(即分布式文件系統(tǒng),Cosmos)、執(zhí)行引擎(Dryad )和語言解釋引擎(DryadLINQ)。
總之,在如今這個(gè)大數(shù)據(jù)的時(shí)代,傳統(tǒng)的關(guān)系數(shù)據(jù)庫已經(jīng)逐漸的不能再適應(yīng)人們的需求,NoSQL數(shù)據(jù)庫則具有良好的擴(kuò)展性和可用性,可以將傳統(tǒng)的數(shù)據(jù)庫的缺陷進(jìn)行彌補(bǔ),大數(shù)據(jù)時(shí)代的到來以及云計(jì)算技術(shù)的普及,都為NoSQL數(shù)據(jù)庫帶來了新的挑戰(zhàn)與機(jī)遇,NoSQL數(shù)據(jù)庫還有許多地方值得深思,但將NoSQL數(shù)據(jù)庫與其他的技術(shù)相結(jié)合,在大數(shù)據(jù)的海量數(shù)據(jù)處理之中,對(duì)于提高速度和存儲(chǔ)容量仍是不可取代的!
參考文獻(xiàn):
[1] 李偉.大數(shù)據(jù)下的NoSQL數(shù)據(jù)庫技術(shù)分析[J].信息通信.2014(7).
[2] 李青.基于NoSQL的大數(shù)據(jù)處理的研究[D].西南電子科技大學(xué).2014.
[3] 吳金朋.一種大數(shù)據(jù)存儲(chǔ)模型的研究與應(yīng)用[D].北京郵電大學(xué).2012.