數(shù)據(jù)庫技術(shù)分析及應(yīng)用
本文關(guān)鍵詞:數(shù)據(jù)庫技術(shù)
更多相關(guān)文章: 大數(shù)據(jù) 數(shù)據(jù)倉庫
傳統(tǒng)數(shù)據(jù)庫的基本架構(gòu)是30年前以事務(wù)處理為主要應(yīng)用設(shè)計的,不能完全滿足對海量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的存儲管理、復(fù)雜分析、關(guān)聯(lián)查詢、實時性處理和控制建設(shè)成本等多方面的需要。因此,“多種架構(gòu)支持多類應(yīng)用”成為數(shù)據(jù)庫行業(yè)應(yīng)對大數(shù)據(jù)的基本思路,數(shù)據(jù)庫行業(yè)出現(xiàn)互為補充的三大陣營,適用于事務(wù)處理應(yīng)用的OldSQL、適用于數(shù)據(jù)分析應(yīng)用的NewSQL和適用于互聯(lián)網(wǎng)應(yīng)用的NoSQL。
一、OldSQL數(shù)據(jù)庫
OldSQL數(shù)據(jù)庫泛指傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,如Oracle、Sybase、SQLServer、DB2、MySQL、PostgreSQL等,以結(jié)構(gòu)化數(shù)據(jù)為處理對象,提供實時的、面向應(yīng)用的事務(wù)處理能力,支持標準SQL或PL/SQL。
圖1 OldSQL數(shù)據(jù)庫SMP架構(gòu)
OldSQL數(shù)據(jù)庫采用SMP(Symmetric Multi-Processing)對稱多處理架構(gòu),匯聚多個服務(wù)器的一組CPU處理器,各CPU之間共享內(nèi)存、總線和存儲?梢酝ㄟ^增加CPU、內(nèi)存來提高性能,進行Scale up的縱向擴展,但由于是共享存儲IO帶寬有限,無法大規(guī)模擴展,適合數(shù)據(jù)量在數(shù)十TB的應(yīng)用場景。
二、NewSQL數(shù)據(jù)庫
NewSQL泛指各種新的可擴展、高性能關(guān)系型數(shù)據(jù)庫,這類數(shù)據(jù)庫不僅具有對海量結(jié)構(gòu)化數(shù)據(jù)的存儲管理能力,還保持了傳統(tǒng)數(shù)據(jù)庫支持ACID和SQL等特性。
圖2 NewSQL數(shù)據(jù)庫Share-nothing架構(gòu)
NewSQL數(shù)據(jù)庫工作在一個分布式集群的節(jié)點上,采用本地存儲(Share-nothing),每個節(jié)點擁有一個數(shù)據(jù)子集。NewSQL有一組節(jié)點用來做事務(wù)處理,這些節(jié)點接到特定的SQL查詢后,會把它所需的數(shù)據(jù)從本地取回來后執(zhí)行SQL查詢,再返回結(jié)果。
與OldSQL數(shù)據(jù)庫共享存儲相比,NewSQL數(shù)據(jù)庫采用本地存儲,無共享存儲I/O限制,可以通過添加節(jié)點來Scale out橫向擴展,節(jié)點數(shù)量可以達到數(shù)百臺,數(shù)據(jù)量可以達到PB級。
NewSQL系統(tǒng)雖然在的內(nèi)部結(jié)構(gòu)變化很大,但是它們有兩個顯著的共同特點:(1)它們都支持關(guān)系數(shù)據(jù)模型;(2) 它們都使用SQL作為其主要的接口。
NewSQL數(shù)據(jù)庫有2種存儲方式,即行存儲和列存儲。
圖3 存儲方式
行存儲和列存儲方式是指數(shù)據(jù)在磁盤中按照行或者列的方式進行組織和物理存儲。行存儲架構(gòu)和列存儲架構(gòu)的數(shù)據(jù)庫分別適用于不同的應(yīng)用場景,具備各自的優(yōu)劣勢。
·行存儲
行存儲數(shù)據(jù)庫適合增加、插入、刪除、修改的事務(wù)處理處理等。以“修改”為例,數(shù)據(jù)庫先把需要修改的指定記錄從硬盤讀取到內(nèi)存,對記錄進行修改,然后再從內(nèi)存保持回到硬盤。由于只需要對指定的記錄讀取到內(nèi)存和寫入硬盤操作,所以I/O最小,效率最高。
但是,行存數(shù)據(jù)庫對列的統(tǒng)計分析卻需要耗費大量的I/O。對指定列進行統(tǒng)計分析時,需要把整張表讀取到內(nèi)存,然后再逐行對列進行讀取分析操作。因此,表結(jié)構(gòu)越大,I/O效率越低。
·列存儲
列存儲數(shù)據(jù)庫對增加、插入、刪除、修改的事務(wù)處理I/O高、效率低,以“修改”為例,列存數(shù)據(jù)庫先把需要修改表的所有列數(shù)據(jù)從硬盤讀取到內(nèi)存組合成完整的表,,然后對指定行記錄進行修改,再按照列的方式保存回到硬盤。因此,表結(jié)構(gòu)越大,I/O效率越低。
但是列存儲非常適合做統(tǒng)計查詢類操作,統(tǒng)計分析一般是針對指定列進行,只需要把指定列讀取到內(nèi)存進行操作,所以I/O最小,效率最高。
列存儲還具備建立索引來優(yōu)化統(tǒng)計查詢性能。每個數(shù)據(jù)包在加載數(shù)據(jù)時自動建立索引,索引是對每個列存數(shù)據(jù)包的描述,包含基本的統(tǒng)計信息,如:最大值、最小值、平均值等,在數(shù)據(jù)查詢時只需要解包就能得到統(tǒng)計值,可進一步降低I/O,對復(fù)雜查詢的優(yōu)化效果明顯。索引本身占空間很少,擴展性很好,建立索引后無膨脹。建立索引的速度快,后續(xù)的數(shù)據(jù)包建立索引的速度不會受到前面數(shù)據(jù)包的影響。
圖4 列存索引
列存儲能夠進行數(shù)據(jù)壓縮來節(jié)省存儲空間,按照數(shù)據(jù)類型和數(shù)據(jù)分布規(guī)律自動選擇最優(yōu)壓縮算法,壓縮比可達1:20,可以節(jié)省50%-90%的存儲空間,大大降低數(shù)據(jù)處理,壓縮態(tài)下對I/O 要求大大降低,數(shù)據(jù)加載和查詢性能明顯提升。
圖5 存儲壓縮
三、NoSQL數(shù)據(jù)庫
隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫對數(shù)據(jù)嚴格定義的特點成為新數(shù)據(jù)業(yè)務(wù)存儲難以克服的問題,如關(guān)系數(shù)據(jù)庫要求實體完整性、參照完整性和用戶定義完整性等,而互聯(lián)網(wǎng)數(shù)據(jù)無法適配嚴格完整性要求。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
NoSQL泛指非關(guān)系型的數(shù)據(jù)庫,可以分為四類,包括:鍵值(Key-Value)存儲數(shù)據(jù)庫,如:Redis;列存儲數(shù)據(jù)庫,如: HBase;文檔型數(shù)據(jù)庫,如:MongoDb;圖形(Graph)數(shù)據(jù)庫,如:InfoGrid。其中,HBase是Hadoop開源框架采用的數(shù)據(jù)庫。
HBase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),可在X86服務(wù)器系統(tǒng)上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase利用Hadoop HDFS作為其文件存儲系統(tǒng),使用Hadoop MapReduce來處理海量數(shù)據(jù),利用Hadoop Zookeeper作為協(xié)同服務(wù)。
圖6 Hadoop生態(tài)圈
上圖描述Hadoop 生態(tài)圈中的各層系統(tǒng)。其中,HBase位于結(jié)構(gòu)化存儲層,Hadoop HDFS為HBase提供了高可靠性的底層存儲支持,Hadoop MapReduce為HBase提供了高性能的計算能力,Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機制。此外,Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進行數(shù)據(jù)統(tǒng)計處理變的非常簡單。
四、數(shù)據(jù)庫技術(shù)對比
圖7 數(shù)據(jù)庫對比
如上圖所示,從十多個方面來綜合對比OldSQL、NewSQL和NoSQL數(shù)據(jù)庫,不同類型的數(shù)據(jù)庫適合不同的應(yīng)用場景,交易型場景必須選擇OldSQL數(shù)據(jù)庫或者NewSQL行存數(shù)據(jù)庫,分析型場景則可以根據(jù)數(shù)據(jù)量大小和數(shù)據(jù)類型等因素選擇NewSQL列存數(shù)據(jù)庫或者NoSQL數(shù)據(jù)庫。
五、數(shù)據(jù)庫混合部署應(yīng)用
不同架構(gòu)數(shù)據(jù)庫混合使用的模式可以概括為:OldSQL + NewSQL、OldSQL + NoSQL、NewSQL + NoSQL三種主要模式。
1、OldSQL + NewSQL在數(shù)據(jù)中心類應(yīng)用中混合部署
圖8 OldSQL + NewSQL混合應(yīng)用
OldSQL數(shù)據(jù)庫能夠滿足交易型應(yīng)用的事務(wù)處理能力需求,OldSQL存儲熱數(shù)據(jù),把歷史數(shù)據(jù)同步備份到NewSQL數(shù)據(jù)庫中,減少OldSQL數(shù)據(jù)的數(shù)據(jù)量,提升事務(wù)處理性能。NewSQL在實時性、復(fù)雜分析、即席查詢等方面具備獨特優(yōu)勢,同時面對海量數(shù)據(jù)具備較強的橫向擴展能力,可隨著數(shù)據(jù)量的增長采用集群方式構(gòu)建存儲容量更大的數(shù)據(jù)中心。
采用OldSQL + NewSQL混合部署,把“熱”數(shù)據(jù)事務(wù)型處理和海量歷史“冷”數(shù)據(jù)分析處理分開在不同數(shù)據(jù)庫系統(tǒng)上進行,OldSQL彌補了NewSQL不適合事務(wù)處理的不足,NewSQL彌補了OldSQL在海量數(shù)據(jù)存儲能力和處理性能方面的缺陷。與傳統(tǒng)單一的OldSQL模式相比,采用OldSQL + NewSQL混合搭建模式,數(shù)據(jù)加載性能、即席查詢和統(tǒng)計分析性能都可以提升幾倍。
2、OldSQL + NoSQL 在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中混合部署
圖9 OldSQL + NoSQL混合應(yīng)用
在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中采用OldSQL + NoSQL混合模式,能夠很好的解決互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用對海量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進行存儲和快速處理的需求。在諸如大型電子商務(wù)平臺互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用場景中,OldSQL在應(yīng)用中負責高價值密度結(jié)構(gòu)化數(shù)據(jù)的存儲和事務(wù)型處理,NoSQL在應(yīng)用中負責存儲和處理海量非結(jié)構(gòu)化的數(shù)據(jù)和低價值密度結(jié)構(gòu)化數(shù)據(jù)。OldSQL + NoSQL模式在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中的互補作用體現(xiàn)在,OldSQL彌補了NoSQL在ACID特性和復(fù)雜關(guān)聯(lián)運算方面的不足,NoSQL彌補了OldSQL在海量數(shù)據(jù)存儲和非結(jié)構(gòu)化數(shù)據(jù)處理方面的缺陷。
3、NewSQL + NoSQL 在行業(yè)大數(shù)據(jù)應(yīng)用中混合部署
圖10 NewSQL + NoSQL混合應(yīng)用
行業(yè)大數(shù)據(jù)與互聯(lián)網(wǎng)大數(shù)據(jù)的區(qū)別在于行業(yè)大數(shù)據(jù)的價值密度更高,并且對結(jié)構(gòu)化數(shù)據(jù)的實時處理、復(fù)雜的多表關(guān)聯(lián)分析、即席查詢、數(shù)據(jù)強一致性等都比互聯(lián)網(wǎng)大數(shù)據(jù)有更高的要求。行業(yè)大數(shù)據(jù)應(yīng)用場景主要是分析類應(yīng)用,如:電信、金融、政務(wù)、能源等行業(yè)的決策輔助、預(yù)測預(yù)警、統(tǒng)計分析、經(jīng)營分析等。
在行業(yè)大數(shù)據(jù)應(yīng)用中采用NewSQL + NoSQL混合模式,充分利用NewSQL在結(jié)構(gòu)化數(shù)據(jù)分析處理方面的優(yōu)勢,以及NoSQL在非結(jié)構(gòu)數(shù)據(jù)處理方面的優(yōu)勢,實現(xiàn)NewSQL與NoSQL的功能互補,解決行業(yè)大數(shù)據(jù)應(yīng)用對高價值結(jié)構(gòu)化數(shù)據(jù)的實時處理、復(fù)雜的多表關(guān)聯(lián)分析、即席查詢、數(shù)據(jù)強一致性等要求,以及對海量非結(jié)構(gòu)化數(shù)據(jù)存儲和精確查詢的要求。在應(yīng)用中,NewSQL承擔高價值密度結(jié)構(gòu)化數(shù)據(jù)的存儲和分析處理工作,NoSQL承擔存儲和處理海量非結(jié)構(gòu)化數(shù)據(jù)和不需要關(guān)聯(lián)分析、Ad-hoc查詢較少的低價值密度結(jié)構(gòu)化數(shù)據(jù)的工作。
六、結(jié)束語
當前信息化應(yīng)用的多樣性、復(fù)雜性,以及三種數(shù)據(jù)庫架構(gòu)各自所具有的優(yōu)勢和局限性,造成任何一種架構(gòu)的數(shù)據(jù)庫都不能完全滿足應(yīng)用需求。因此,不同架構(gòu)數(shù)據(jù)庫混合使用,從而彌補其他架構(gòu)的不足成為必然選擇。根據(jù)應(yīng)用場景采用不同架構(gòu)數(shù)據(jù)庫進行組合搭配,充分發(fā)揮每種架構(gòu)數(shù)據(jù)庫的特點和優(yōu)勢,并且與其他架構(gòu)數(shù)據(jù)庫形成互補,完全涵蓋應(yīng)用需求,保證數(shù)據(jù)資源的最優(yōu)化利用,將成為未來一段時期內(nèi)信息化應(yīng)用主要采用的解決方式。
本文編號:903805
本文鏈接:http://sikaile.net/wenshubaike/dxkc/903805.html