梁紅穎 遼寧現(xiàn)代服務(wù)職業(yè)技術(shù)學(xué)院
前言:大數(shù)據(jù)時(shí)代的來(lái)臨,對(duì)現(xiàn)代人的生活方式產(chǎn)生了很大的影響。而NoSQL數(shù)據(jù)庫(kù)因其具有高性能、高可用、易擴(kuò)展及數(shù)據(jù)模型靈活等優(yōu)勢(shì)在眾多互聯(lián)網(wǎng)公司應(yīng)用。而且NoSQL作為一種非關(guān)系型的數(shù)據(jù)庫(kù)存數(shù)在使用上已經(jīng)超過(guò)了關(guān)系型的數(shù)據(jù)庫(kù),因此基于NoSQL數(shù)據(jù)庫(kù)的大數(shù)據(jù)查詢(xún)技術(shù)引起了各界的關(guān)注。
NoSQL泛指非關(guān)系型數(shù)據(jù)庫(kù),是“Not Only SQL”的縮寫(xiě)。由于數(shù)據(jù)在數(shù)據(jù)庫(kù)中存儲(chǔ)的方式為非關(guān)系型,和傳統(tǒng)數(shù)據(jù)庫(kù)中所使用的結(jié)構(gòu)化數(shù)據(jù)形式差異明顯。傳統(tǒng)數(shù)據(jù)庫(kù)中表與表間的關(guān)聯(lián)問(wèn)題導(dǎo)致其性能受限,而NoSQL數(shù)據(jù)庫(kù)的不固定鍵值對(duì)結(jié)構(gòu)突破了性能上的局限,有效降低了數(shù)據(jù)庫(kù)的存儲(chǔ)、計(jì)算及查詢(xún)等各項(xiàng)操作在時(shí)空上的開(kāi)銷(xiāo)。因此,NoSQL與傳統(tǒng)數(shù)據(jù)庫(kù)最關(guān)鍵的不同就是,NoSQL以非關(guān)系為核心,而傳統(tǒng)數(shù)據(jù)庫(kù)則以關(guān)系為核心。
CAP是“Consistency Availability Partition tolerance”的縮寫(xiě)。CAP理論簡(jiǎn)單來(lái)說(shuō)就是指分布式系統(tǒng)具有一致性、可用性和分區(qū)容錯(cuò)性三個(gè)特性,但是任何分布式系統(tǒng)只能同時(shí)滿(mǎn)足以上兩點(diǎn),不能兼顧三者。其中的一致性(C)即所有的數(shù)據(jù)變動(dòng)都是同步進(jìn)行的,數(shù)據(jù)一致更新,可用性(A)指分布式系統(tǒng)具有良好的響應(yīng)性能,而分區(qū)容錯(cuò)性(P)也可以稱(chēng)為可靠性,如果分布式系統(tǒng)中有一個(gè)或幾個(gè)機(jī)器出現(xiàn)故障,而其他的機(jī)器還可以正常運(yùn)行,因此具有良好的容錯(cuò)性。
BASE思想主要強(qiáng)調(diào)基本的可用性,與ACID在單機(jī)環(huán)境中數(shù)據(jù)屬性不同,BASE是在分布式情況中數(shù)據(jù)的屬性。如果想要純粹的高性能,則須以一致性或是分區(qū)容錯(cuò)性為犧牲。BASE思想的方案在性能上具有挖掘的潛力,主要實(shí)現(xiàn)有:按功能劃分?jǐn)?shù)據(jù)庫(kù)和共享分片。
該類(lèi)數(shù)據(jù)庫(kù)的數(shù)據(jù)模型為采用列的形式存儲(chǔ),同一列的數(shù)據(jù)將會(huì)被存放在一起。主要應(yīng)用于信息檢索系統(tǒng)和分布式的文件系統(tǒng)中。具有查找速度快、查詢(xún)效率高、可擴(kuò)展性強(qiáng)、易于分布式擴(kuò)展等優(yōu)勢(shì)。不足之處就是在功能上存在一定的局限性,例如沒(méi)有SQL查詢(xún)語(yǔ)言、沒(méi)有二級(jí)索引。
此類(lèi)數(shù)據(jù)庫(kù)所采用的數(shù)據(jù)結(jié)構(gòu)主要是哈希表,哈希表由兩部分組成:指針和鍵值信息。鍵值保存的數(shù)據(jù)庫(kù)其數(shù)據(jù)模型為一系列的Key-Value鍵值對(duì)存儲(chǔ),可以實(shí)現(xiàn)內(nèi)容緩存,適用于混合工作負(fù)載且需要擴(kuò)展的數(shù)據(jù)集,可以進(jìn)行快速查詢(xún)。不足之處在于存儲(chǔ)的數(shù)據(jù)缺少結(jié)構(gòu)化。
圖形數(shù)據(jù)庫(kù)通過(guò)使用靈活的數(shù)據(jù)模型,比較關(guān)注數(shù)據(jù)之間的關(guān)系。主要應(yīng)用于社交網(wǎng)絡(luò)、推薦系統(tǒng)中。圖形數(shù)據(jù)的建模、查詢(xún)都十分簡(jiǎn)單。優(yōu)勢(shì)在于能夠利用圖形結(jié)構(gòu)的相關(guān)算法。不足之處是必須對(duì)整個(gè)圖做計(jì)算才可以得出結(jié)果,不易進(jìn)行分布式的集群。
文檔型數(shù)據(jù)庫(kù)的數(shù)據(jù)模板為形式化的文檔,對(duì)于半結(jié)構(gòu)和非結(jié)構(gòu)文檔則要以具體的形式進(jìn)行保存。數(shù)據(jù)模型為一系列鍵值對(duì),主要應(yīng)用于Web。此類(lèi)數(shù)據(jù)庫(kù)具有豐富的查詢(xún)語(yǔ)言與索引機(jī)制,因此查詢(xún)性能較強(qiáng)。對(duì)于數(shù)據(jù)的結(jié)構(gòu)沒(méi)有嚴(yán)格的要求,不需要定義表結(jié)構(gòu)。不足之處在于此類(lèi)數(shù)據(jù)庫(kù)不支持JOIN查詢(xún)與事物處理。
NoSQL框架的數(shù)據(jù)查詢(xún)技術(shù)與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)查詢(xún)技術(shù)相比,具有其獨(dú)特的特點(diǎn),這是由適用于NoSQL框架的數(shù)據(jù)特點(diǎn)所決定的,主要包括以下幾個(gè)特點(diǎn):(1)分布式的備份特點(diǎn)。NoSQL將高擴(kuò)展性與高可用性作為目標(biāo),如果想要達(dá)成這個(gè)目標(biāo)則需通過(guò)分布式的備份來(lái)實(shí)現(xiàn)。分布式能夠體現(xiàn)高擴(kuò)展性,而備份則實(shí)現(xiàn)了高可用性。因此在整體上顯著提高了系統(tǒng)的容錯(cuò)性能。(2)數(shù)據(jù)的海量性特點(diǎn)。隨著社交網(wǎng)絡(luò)的不斷發(fā)展與擴(kuò)大,推動(dòng)了傳感技術(shù)與移動(dòng)設(shè)備的普及與應(yīng)用,尤其是現(xiàn)代化智能手機(jī)的興起,方便了人與人之間的交流與溝通,有關(guān)娛樂(lè)方面的信息呈現(xiàn)出爆炸式的增長(zhǎng)態(tài)勢(shì),例如微信、微博、手機(jī)游戲等的數(shù)據(jù)量已達(dá)TB、PB,甚至更高水平。(3)數(shù)據(jù)類(lèi)型多元化特點(diǎn)。當(dāng)前多數(shù)的WEB應(yīng)用都需處理半結(jié)構(gòu)化或是非結(jié)構(gòu)化的數(shù)據(jù),例如視頻、圖像、音頻等數(shù)據(jù),而此類(lèi)數(shù)據(jù)不適于存儲(chǔ)在像MySQL這類(lèi)的關(guān)系型數(shù)據(jù)庫(kù)中,但是對(duì)于此類(lèi)數(shù)據(jù)的查詢(xún)與儲(chǔ)量在非關(guān)系數(shù)據(jù)庫(kù)中往往能表現(xiàn)出較好的性能。
在數(shù)據(jù)庫(kù)發(fā)展過(guò)程中,從縱向到橫向的拓展變化推動(dòng)了NoSQL的發(fā)展與應(yīng)用。NoSQL數(shù)據(jù)庫(kù)作為一種分布式橫向擴(kuò)展技術(shù),通過(guò)使用分布式節(jié)點(diǎn)集提供高度彈性拓展功能,用戶(hù)只要添加節(jié)點(diǎn)就可以進(jìn)行對(duì)負(fù)載的動(dòng)態(tài)處理。與縱向擴(kuò)展做法相比,分布式橫向擴(kuò)展的做法更加經(jīng)濟(jì)實(shí)惠。而且NoSQL數(shù)據(jù)庫(kù)多是開(kāi)源技術(shù),根據(jù)運(yùn)行的服務(wù)器集群進(jìn)行收費(fèi),在價(jià)格上更加便宜。
NoSQL數(shù)據(jù)庫(kù)數(shù)據(jù)為非關(guān)系型,不需依賴(lài)表與表之間的關(guān)系,就可以進(jìn)行信息的存儲(chǔ)與組織。如采用文檔型數(shù)據(jù)庫(kù)獲取想要存儲(chǔ)的數(shù)據(jù),以JSON的格式整合到文檔中。每個(gè)JSON文檔都能被應(yīng)用程序視為一個(gè)對(duì)象,而且JSON文檔能夠?qū)崿F(xiàn)提取跨越多個(gè)表的數(shù)據(jù),并將數(shù)據(jù)匯集到一個(gè)文檔中,雖然聚合這些數(shù)據(jù)信息會(huì)存在信息重復(fù)的現(xiàn)象,但由于不用考慮存儲(chǔ)問(wèn)題。因其數(shù)據(jù)模型靈活、發(fā)布產(chǎn)生的文檔簡(jiǎn)便,而且讀取與寫(xiě)入的性能高,所以應(yīng)用廣泛
現(xiàn)階段,通過(guò)第三方,就可以訪(fǎng)問(wèn)和捕捉數(shù)據(jù)。包括用戶(hù)個(gè)人信息、用戶(hù)生產(chǎn)的內(nèi)容、地理位置數(shù)據(jù)、及其記錄數(shù)據(jù)等。企業(yè)通過(guò)大數(shù)據(jù)來(lái)推動(dòng)關(guān)鍵任務(wù)型應(yīng)用程序,因?yàn)镹oSQL數(shù)據(jù)庫(kù)適合現(xiàn)代的新型數(shù)據(jù)類(lèi)型,所以很多企業(yè)正轉(zhuǎn)向該數(shù)據(jù)庫(kù)。大多數(shù)新型數(shù)據(jù)都是半結(jié)構(gòu)化或非結(jié)構(gòu)化,通過(guò)靈活的數(shù)據(jù)庫(kù),很容易適應(yīng)新的數(shù)據(jù)類(lèi)型,即便第三方數(shù)據(jù)供應(yīng)商的內(nèi)容結(jié)構(gòu)發(fā)生變化,也不會(huì)受到影響。
以我國(guó)的鐵路網(wǎng)路售票系統(tǒng)為應(yīng)用對(duì)象,在對(duì)其進(jìn)行系統(tǒng)設(shè)計(jì)和技術(shù)架構(gòu)環(huán)節(jié)時(shí),從數(shù)據(jù)層、服務(wù)層、應(yīng)用層及展現(xiàn)層都可以體現(xiàn)大數(shù)據(jù)的優(yōu)勢(shì)與特點(diǎn)。數(shù)據(jù)層主要體現(xiàn)為當(dāng)購(gòu)票者信息數(shù)據(jù)訪(fǎng)問(wèn)系統(tǒng)時(shí),可以通過(guò)Java的設(shè)計(jì)模式快速調(diào)度其實(shí)名制信息,結(jié)合Kettle對(duì)購(gòu)票者的個(gè)人信息數(shù)據(jù)進(jìn)行快速的調(diào)取與轉(zhuǎn)換,為應(yīng)用層的出票提供了有力的保障。服務(wù)層的重點(diǎn)在于工作流程可以對(duì)所有任何數(shù)據(jù)層快速調(diào)用,從而為應(yīng)用層提供如分析、統(tǒng)計(jì)、查詢(xún)等功能上的支持,為系統(tǒng)對(duì)售票信息的判斷、管理與推送提供便捷。展現(xiàn)層更多的是關(guān)注用戶(hù)的體驗(yàn)。不僅能夠?yàn)橛脩?hù)提供全面、準(zhǔn)確的快速訪(fǎng)問(wèn)導(dǎo)航,還可以滿(mǎn)足系統(tǒng)自身的發(fā)展需要。即使在鐵路售票的高峰期,出現(xiàn)海量的訪(fǎng)問(wèn)需求,也可以為用戶(hù)提供良好的購(gòu)票體驗(yàn),有效避免了網(wǎng)站堵塞或崩潰現(xiàn)象的發(fā)生。與此同時(shí),還實(shí)現(xiàn)了在升級(jí)與改造成本上的控制,通過(guò)充分利用大數(shù)據(jù)查詢(xún)技術(shù)優(yōu)勢(shì)對(duì)系統(tǒng)進(jìn)行升級(jí)與改造,能夠避免過(guò)多使用高成本、高性能設(shè)備,降低了投入成本。
總結(jié):綜上所述,當(dāng)前基于NoSQL數(shù)據(jù)庫(kù)的大數(shù)據(jù)查詢(xún)技術(shù)在眾多領(lǐng)域被廣泛應(yīng)用,為數(shù)據(jù)庫(kù)的發(fā)展和應(yīng)用提供了有力的技術(shù)保障。其在互聯(lián)網(wǎng)數(shù)據(jù)訪(fǎng)問(wèn)需求方面具有明顯的優(yōu)勢(shì),提高了數(shù)據(jù)的擴(kuò)展能力與查詢(xún)速率。