馬凱航++高永明++吳止鍰++李磊
摘要:隨著計算機(jī)技術(shù)和網(wǎng)絡(luò)的快速發(fā)展,半結(jié)構(gòu)化和非結(jié)構(gòu)化等類型數(shù)據(jù)成幾何倍增長,學(xué)習(xí)和使用大數(shù)據(jù)管理技術(shù)順應(yīng)時代發(fā)展潮流。本文從數(shù)據(jù)管理技術(shù)的發(fā)展進(jìn)程出發(fā),介紹了人工管理方式、文件系統(tǒng)管理方式、數(shù)據(jù)庫管理方式三種階段的管理方式。然后詳細(xì)介紹了關(guān)系數(shù)據(jù)庫和NoSQL非關(guān)系數(shù)據(jù)庫,并且將兩者從三種角度進(jìn)行了對比。最后對未來大數(shù)據(jù)時代數(shù)據(jù)管理方式作出了展望。
關(guān)鍵詞:計算機(jī)應(yīng)用技術(shù);大數(shù)據(jù);數(shù)據(jù)管理技術(shù);關(guān)系數(shù)據(jù)庫;NoSQL數(shù)據(jù)庫
中圖分類號:TP392 文獻(xiàn)標(biāo)識碼:A DOI: 10.3969/j.issn.1003-6970.2015.10.013
引言
隨著計算機(jī)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,移動互聯(lián)、社交網(wǎng)絡(luò)、電子商務(wù)、云計算等各種新興服務(wù)的興起,極大拓展了互聯(lián)網(wǎng)的疆界和應(yīng)用領(lǐng)域,隨之產(chǎn)生的是海量的數(shù)據(jù),這些數(shù)據(jù)不僅來源的渠道多樣,并且數(shù)據(jù)規(guī)模和數(shù)據(jù)種類也是快速的增長,大數(shù)據(jù)時代已經(jīng)來臨。大數(shù)據(jù)時代,無法將海量數(shù)據(jù)存儲和管理在一臺或者有限數(shù)目的服務(wù)器內(nèi),更無法借助有限的計算機(jī)去處理和管理大數(shù)據(jù)。因此,如何利用現(xiàn)有的資源應(yīng)對當(dāng)前數(shù)據(jù)量的快速增長,實現(xiàn)對大數(shù)據(jù)的有效、便捷、安全的管理,是當(dāng)前國內(nèi)外關(guān)于數(shù)據(jù)管理和數(shù)據(jù)分析亟需解決的問題。
1 數(shù)據(jù)管理技術(shù)的發(fā)展
數(shù)據(jù)管理是指對各種類型的數(shù)據(jù)進(jìn)行采集、存儲、分類、計算、加工、檢索和傳輸?shù)倪^程。隨著計算機(jī)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和改進(jìn),數(shù)據(jù)庫管理技術(shù)也在不斷的更新?lián)Q代。到目前階段為止,數(shù)據(jù)管理技術(shù)主要發(fā)展歷程經(jīng)歷了以下階段:人工數(shù)據(jù)管理方式、文件系統(tǒng)管理方式和數(shù)據(jù)庫系統(tǒng)管理方式。
1.1 人工數(shù)據(jù)管理方式
20世紀(jì)50年代中期,計算機(jī)初期被應(yīng)用于科學(xué)計算方面,因此,早期的數(shù)據(jù)處理都是手工完成的。數(shù)據(jù)存儲只有磁帶、卡片和紙帶等低速存儲設(shè)備。既沒有操作系統(tǒng),也沒有管理數(shù)據(jù)的專門軟件,此階段管理的數(shù)據(jù),不能進(jìn)行共享,且沒有獨立性,數(shù)據(jù)純粹面向應(yīng)用,服務(wù)于應(yīng)用。
1.2 文件系統(tǒng)管理方式
20世紀(jì)60年代中期,隨著計算機(jī)進(jìn)一步的發(fā)展,不僅用于科學(xué)計算,而且更多地用于信息處理。對于數(shù)據(jù)存儲,有了磁盤、磁鼓等存儲設(shè)備。操作系統(tǒng)和高級語言的出現(xiàn)為文件系統(tǒng)管理提供了可能。此階段的文件系統(tǒng),是按照相應(yīng)的規(guī)則將數(shù)據(jù)組織成一個獨立的命名文件。這一時期的數(shù)據(jù)特點是:數(shù)據(jù)可以長期存儲在磁盤上、有專門的軟件進(jìn)行管理維護(hù)、數(shù)據(jù)不再獨立存在,數(shù)據(jù)不止服務(wù)于應(yīng)用,在一定程度上,數(shù)據(jù)的共享性得到了提高。
1.3 數(shù)據(jù)庫系統(tǒng)管理方式
20世紀(jì)60年代后期,數(shù)據(jù)庫系統(tǒng)管理方式逐漸形成并具有一定的規(guī)模。由于磁盤技術(shù)的不斷進(jìn)步和發(fā)展,低成本、高速的硬盤占領(lǐng)了市場,為新的數(shù)據(jù)管理技術(shù)提供了產(chǎn)生的必要條件。對應(yīng)的軟件技術(shù)也有一定的發(fā)展。數(shù)據(jù)庫系統(tǒng)是由計算機(jī)的軟硬件資源共同組成,實現(xiàn)了數(shù)據(jù)的動態(tài)、有規(guī)則、獨立存儲。如圖1所示。
2 大數(shù)據(jù)管理技術(shù)
大數(shù)據(jù)是指無法在可承受的時間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合。歸結(jié)為四個特點就是四“V”,即大量(Volume)、高速(Velocity)和多樣性(Variety)和價值(Value)。大數(shù)據(jù)首先體現(xiàn)在數(shù)據(jù)量上:全球著名咨詢機(jī)構(gòu)IDC(國際文獻(xiàn)資料中心)在2006年估計全世界產(chǎn)生的數(shù)據(jù)量是0.18ZB(1ZB=100萬PB),而截至2011年這個數(shù)字已經(jīng)提升了一個數(shù)量級,達(dá)到1.8ZB。這種數(shù)據(jù)產(chǎn)生的速度仍在增長,預(yù)計2015年將達(dá)到8ZB。隨著數(shù)據(jù)量的增長,得到龐大的數(shù)據(jù)源和樣本數(shù)據(jù)后,人們并不能容忍對于這些龐大的數(shù)據(jù)處理響應(yīng)時間。因此,大數(shù)據(jù)需要在數(shù)據(jù)量提高的前提下,數(shù)據(jù)的處理和響應(yīng)能力進(jìn)行提高,從而確保數(shù)據(jù)延遲可以在人們的接受范圍之內(nèi)。因此數(shù)據(jù)處理要得到有效的保證,那如何存儲和組織管理這些海量數(shù)據(jù),值得我們?nèi)ヌ剿骱脱芯俊?/p>
2.1 關(guān)系型數(shù)據(jù)庫(RDBMS)
2.1.1 關(guān)系數(shù)據(jù)庫的提出
20世紀(jì)70年代初,IBM工程師Codd發(fā)表了一篇論文“A Relational Model of Large Shared DataBanks”,隨之關(guān)系數(shù)據(jù)庫時代宣告到來。關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database ManagementSystem,簡稱RDBMS)就是基于上述的論文而被設(shè)計出來的。在關(guān)系數(shù)據(jù)庫之前的系統(tǒng)主要有基于層次模型的層次數(shù)據(jù)庫、基于網(wǎng)狀模型的網(wǎng)狀數(shù)據(jù)庫等。以上幾種數(shù)據(jù)庫的主要不足是數(shù)據(jù)模型是很難被用戶所理解,并且編寫的軟件與數(shù)據(jù)模式依賴性比較高。Codd提出的關(guān)系數(shù)據(jù)模型是基于表格、行、列、屬性等基本概念,將現(xiàn)實世界中的各類實體及其關(guān)系映射到表格上,并且還為關(guān)系模型建立了關(guān)系代數(shù)運算。
2.1.2 關(guān)系數(shù)據(jù)庫的應(yīng)用
關(guān)系數(shù)據(jù)庫系統(tǒng)最初主要是應(yīng)用于事務(wù)處理領(lǐng)域。隨著數(shù)據(jù)的不斷積累增長,人們需要對數(shù)據(jù)進(jìn)行分析操作,提取出有用的信息以支持決策等等。這些分析操作主要包括簡單匯總、聯(lián)機(jī)分析處理(online analytical processing,簡稱OLAP,主要是多維分析)、統(tǒng)計分析、數(shù)據(jù)挖掘等。有些分析處理需要對數(shù)據(jù)集進(jìn)行多次的掃描,分析查詢執(zhí)行的時間以分鐘或者小時計。與普通行存儲模式不同,一些學(xué)者提出了列存儲模式(columnar storage model)。列存儲模型有行存儲沒有的優(yōu)勢特征,當(dāng)查詢只涉及關(guān)系的某些數(shù)據(jù)列時,不會造成無關(guān)數(shù)據(jù)的提取,減少I/O操作,提高了查詢的效率。圍繞RDBMS,形成了一個完整的生態(tài)體系(廠家、技術(shù)、產(chǎn)品、服務(wù)等),提供了包括數(shù)據(jù)采集、數(shù)據(jù)管理、數(shù)據(jù)查詢與分析、數(shù)據(jù)展現(xiàn)(即可視化)等技術(shù)和產(chǎn)品,創(chuàng)造了巨大的數(shù)據(jù)庫產(chǎn)業(yè),為社會發(fā)展做出了巨大貢獻(xiàn)。
2.1.3 關(guān)系數(shù)據(jù)庫的不足
大數(shù)據(jù)時代的到來,關(guān)系型數(shù)據(jù)庫并未做好全面的準(zhǔn)備,出現(xiàn)了諸多問題,主要問題有以下幾個方面:
(1)關(guān)系模型不容易組織和管理所有類型多樣的數(shù)據(jù),例如在關(guān)系數(shù)據(jù)庫里,管理大規(guī)模的高維時空數(shù)據(jù)、大規(guī)模的圖像數(shù)據(jù)等都顯得力不從心。
(2)如何才能通過大量節(jié)點的并行操作實現(xiàn)大規(guī)模數(shù)據(jù)的高速處理,仍然值得我們?nèi)ヌ剿?。在關(guān)系數(shù)據(jù)庫上進(jìn)行大規(guī)模的事物處理,不但需要解決查詢的性能問題,更需要解決修改操作的性能問題,大量的事物處理,需要高效完成,才能保證數(shù)據(jù)的持久性和可靠性。
(3)在關(guān)系數(shù)據(jù)庫上進(jìn)行數(shù)據(jù)的復(fù)雜分析,能夠使用的是統(tǒng)計分析和數(shù)據(jù)挖掘軟件包;現(xiàn)有的統(tǒng)計分析、數(shù)據(jù)挖掘軟件包能夠處理的數(shù)據(jù)量受限于內(nèi)存開銷,并行化程度不高。從數(shù)據(jù)庫中提取數(shù)據(jù),注入到分析軟件中進(jìn)行分析,在大數(shù)據(jù)時代,這樣的數(shù)據(jù)移動以及不合適了。通過數(shù)據(jù)的劃分和并行計算,實現(xiàn)高性能的數(shù)據(jù)分析成為必然選擇。
從中可以得出,現(xiàn)如今的數(shù)據(jù)管理已經(jīng)不是簡單的關(guān)系型數(shù)據(jù)庫可以解決的,關(guān)系型數(shù)據(jù)庫在一定程度上只能解決初期的大數(shù)據(jù)管理。
2.2 NoSQL數(shù)據(jù)庫管理技術(shù)
隨著時代的發(fā)展,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)無法滿足人們對于更高的并發(fā)讀寫、海量數(shù)據(jù)的高效存儲和訪問以及高擴(kuò)展性和可用性等需求,出現(xiàn)了NoSQL數(shù)據(jù)技術(shù)。
對于NoSQL技術(shù),學(xué)術(shù)界有兩種對其的解釋:(1)“Non-Relational”,也就是非關(guān)系型數(shù)據(jù)庫;(2)“Not Only SQL”,即數(shù)據(jù)庫不僅僅是SQL。當(dāng)前第二種解釋比較流行。NoSQL數(shù)據(jù)庫是指數(shù)據(jù)模型定義不明確的非關(guān)系型數(shù)據(jù)庫。NoSQL數(shù)據(jù)庫具有靈活的數(shù)據(jù)模型、高可擴(kuò)展性和美好的發(fā)展前景。下面主要介紹NoSQL的幾種管理技術(shù)。
NoSQL數(shù)據(jù)庫普遍采用的數(shù)據(jù)管理方式有四種:Key-Value存儲方式、BigTable存儲方式、Document存儲方式以及Graph存儲方式。2010年Rick Cattell對各種典型NoSQL系統(tǒng)從各個方面做了比較系統(tǒng)的分析。
2.2.1 基于Key-Value存儲的NoSQL技術(shù)
Key-Value是NoSQL系統(tǒng)比較常用的數(shù)據(jù)存儲方式,每個Key值對應(yīng)每一個任意類的數(shù)據(jù)值,對應(yīng)的對象可以是結(jié)構(gòu)化數(shù)據(jù),也可以是文檔。Key-Value存儲的思想是將抽取唯一可以確定數(shù)據(jù)的特征屬性,作為key,并將作為value對象?;贙ey-Value模型組織數(shù)據(jù),需要將數(shù)據(jù)按照Key-Value形式存儲,而后可以通過對Key-Value進(jìn)行序列化排序操作繼而存儲、將Key-Value存儲為字符串或者字節(jié)數(shù)據(jù),并且對key建立索引以便進(jìn)行快速查詢。Key-Value存儲方式的NoSQL系統(tǒng)有的采用的DISK方式存儲實現(xiàn)同步數(shù)據(jù)復(fù)制(例如Membase等),有的采用RAM存儲數(shù)據(jù)實現(xiàn)異步數(shù)據(jù)復(fù)制(例如Redis等)。
Jing Han等人基于Key-Value存儲提出了CDSA(Cloud Data Storage Architecture),體系結(jié)構(gòu)可以較好優(yōu)化云計算過程中的數(shù)據(jù)查詢,同時也保證了海量數(shù)據(jù)的存儲。CSDA包括三層:DCL(DataCache Layer)、MDL(Memory Database Layer)、DDL(Disk Database Layer)。
2.2.2 基于BigTable存儲的NoSQL技術(shù)
BigTable管理方式是Google提出來并廣泛采用的存儲方式,而且也被HBase、HyperTabley以及Cassandra等系統(tǒng)借鑒使用。在BigTable存儲中,同樣是通過Key-Value基礎(chǔ)模型對數(shù)據(jù)進(jìn)行建模,不一樣的是Value具有了比較精巧的結(jié)構(gòu),即一個Value包含多個列,這些列還能進(jìn)行分組(column family),表現(xiàn)出了多層嵌套映射的數(shù)據(jù)結(jié)構(gòu)特點。HBase是受BigTable啟發(fā)而開發(fā)的基于Column Family存儲的NoSQL技術(shù)。Hbase提供系統(tǒng)的SQL查詢接口,用戶可以輕松的對數(shù)據(jù)進(jìn)行管理工作。Cassandra技術(shù)也是受到BigTable的啟發(fā),只不過Cassandra做了大幅度的修改。Cassandra在Column Family下加入了超級列(super column)概念層次的映射關(guān)系,方便對數(shù)據(jù)進(jìn)行建模。Cassandra還可以將多個Column Family在磁盤存儲在一起,這樣就可以在同時訪問時提高效率。
2.2.3 基于Document存儲的NoSQL技術(shù)
基于Document(文檔)存儲的技術(shù)以及發(fā)展很久了,例如IBM的Lotus Notes。這里所說的基于Document存儲的NoSQL技術(shù)是基于傳統(tǒng)文檔存儲技術(shù)的新發(fā)展、新技術(shù)?;贒ocument存儲技術(shù)仍是以Key-Value存儲模型為基本模型,此模型可以對文檔的歷史版本進(jìn)行追蹤,單個文檔又是一個Key-Value的列表,形成循環(huán)嵌套的結(jié)構(gòu),對于某些特定的查詢方式來說,Document存儲的效率更高。因為其數(shù)據(jù)的循環(huán)嵌套的結(jié)構(gòu)特點,應(yīng)用程序可能會越來越復(fù)雜并且難以維護(hù)和理解。主要的技術(shù)和產(chǎn)品有CouchDB, MongoDB和Dynamo。
2.2.4 基于Graph存儲的NoSQL技術(shù)
基于Graph存儲的系統(tǒng)包括Ne04J, InfoGrid,Hyper Graph DB等。有些圖數(shù)據(jù)庫是基于面向?qū)ο髷?shù)據(jù)庫創(chuàng)建的,例如Infnite Graph,在節(jié)點的遍歷等圖數(shù)據(jù)的操作中,展現(xiàn)出了高效的性能。Graph存儲方式是將整個數(shù)據(jù)集建模成一個大型的網(wǎng)絡(luò)結(jié)構(gòu),之后再采用一系列圖操作實現(xiàn)對數(shù)據(jù)的操作。由于圖由結(jié)點和邊構(gòu)成,對于海量數(shù)據(jù)不能完全裝入內(nèi)存,因此,Graph存儲方式一般是基于DISK的,NoSQL系統(tǒng)實現(xiàn)圖索引,完成圖的調(diào)入調(diào)出。
從數(shù)據(jù)管理的角度來看,使用非結(jié)構(gòu)化Key-Value存儲管理結(jié)構(gòu)化大數(shù)據(jù)仍然是順應(yīng)應(yīng)用需求的。因為基于Key-Value存儲的Hadoop數(shù)據(jù)倉庫實現(xiàn)技術(shù)尚處于起步階段,需要其他數(shù)據(jù)庫技術(shù)來加速器發(fā)展進(jìn)程。
2.2.5 NoSQL的不足
與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫相比,NoSQL非關(guān)系型數(shù)據(jù)庫在并行處理方面有一定優(yōu)勢,但也是存在一些問題,主要體現(xiàn)在:
( 1) NoSQL很難實現(xiàn)數(shù)據(jù)的完整性
由于NoSQL項目中很難實現(xiàn)數(shù)據(jù)的完整性,而在企業(yè)中數(shù)據(jù)完整性又是必不可少的。因此,在企業(yè)中,NoSQL的應(yīng)用還不是很廣泛。
(2)成熟度不高
大部分的NoSQL數(shù)據(jù)庫都是開源項目,沒有世界級的數(shù)據(jù)庫廠商提供完整的服務(wù),出現(xiàn)問題,都是自己解決,風(fēng)險較大。
(3)關(guān)系數(shù)據(jù)庫比NoSQL在設(shè)計時更能夠體現(xiàn)實際,而NoSQL數(shù)據(jù)庫缺乏這種關(guān)系,難以體現(xiàn)業(yè)務(wù)的實際情況,對于數(shù)據(jù)庫的設(shè)計與維護(hù)都增加了難度。
2.3 關(guān)系數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫的區(qū)別
傳統(tǒng)的關(guān)系數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫在數(shù)據(jù)管理系統(tǒng)發(fā)展不同的時間段里都體現(xiàn)出了自己的可用性和實用性,能夠解決的一定的問題。表格l將兩者進(jìn)行了對比。
3 數(shù)據(jù)管理方式的展望
通過上述研究分析可以看出,關(guān)系數(shù)據(jù)庫已經(jīng)無法滿足現(xiàn)階段即大數(shù)據(jù)時代人們對于數(shù)據(jù)存儲和管理的需求,更高的存儲效率和更快的查詢速度等一系列高要求,促使數(shù)據(jù)管理方式不斷向前發(fā)展。NoSQL技術(shù)在一定程度上解決了大數(shù)據(jù)時代的數(shù)據(jù)管理需求,但仍需采用新技術(shù)提高數(shù)據(jù)庫的一致性和可用性。關(guān)系數(shù)據(jù)庫主要優(yōu)點表現(xiàn)在其屬性值之間可以通過SQL操作進(jìn)行關(guān)聯(lián)操作,體現(xiàn)出了數(shù)據(jù)的完整性,NoSQL數(shù)據(jù)庫將數(shù)據(jù)進(jìn)行分布式存儲,為之后的大數(shù)據(jù)處理作鋪墊。關(guān)系數(shù)據(jù)庫的ACID強(qiáng)調(diào)數(shù)據(jù)一致性通常指的是關(guān)聯(lián)數(shù)據(jù)之間的邏輯關(guān)系是否正確和完整,而對于很多互聯(lián)網(wǎng)應(yīng)用來說,對一致性和隔離性的要求可以降低,而可用性的要求則更為明顯。關(guān)系數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫并不是對立的矛盾體,而是可以相互補(bǔ)充的,可以根據(jù)不同的需求使用不同的技術(shù),各取所需,甚至可以共同存在,互不影響。
目前大數(shù)據(jù)的應(yīng)用領(lǐng)域還是主要以民用為主,以電信通信為例,客戶之間通信傳輸過程中產(chǎn)生海量數(shù)據(jù),將這些海量數(shù)據(jù)進(jìn)行實時存儲,再利用大數(shù)據(jù)方法提取有效信息,形成整套的數(shù)據(jù)管理與分析的流程。在電信.氣象、企業(yè)等領(lǐng)域大數(shù)據(jù)管理與分析已經(jīng)有比較成熟的思路和解決方法。在航天試驗領(lǐng)域,空間飛行器執(zhí)行任務(wù)可以產(chǎn)生海量數(shù)據(jù),包括飛行器自身載荷數(shù)據(jù),以及試驗任務(wù)數(shù)據(jù),這些數(shù)據(jù)的類型多樣、數(shù)據(jù)量大,隨著試驗任務(wù)的頻率和在軌航天器數(shù)量的增大,數(shù)據(jù)管理問題日益凸顯,采用大數(shù)據(jù)管理的思維解決航天試驗任務(wù)中數(shù)據(jù)管理問題,是未來航天試驗任務(wù)數(shù)據(jù)存儲和分析的必然趨勢。
4 結(jié)論
大數(shù)據(jù)時代已經(jīng)向我們走來,數(shù)據(jù)管理技術(shù)已經(jīng)進(jìn)入了新的階段。本文研究分析了數(shù)據(jù)管理技術(shù)的發(fā)展進(jìn)程,分析了關(guān)系數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫,并且進(jìn)行了對比區(qū)分。最后,對大數(shù)據(jù)未來的管理方式作出了展望。關(guān)系數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫系統(tǒng)是隨著人們對于數(shù)據(jù)管理的需求產(chǎn)生和發(fā)展的,在不同的數(shù)據(jù)管理發(fā)展階段,根據(jù)需要對其進(jìn)行分析的數(shù)據(jù)特點,選擇適當(dāng)?shù)臄?shù)據(jù)管理方式,幫助人們解決了一定的問題和需求。