?

基于大數據環境的NoSQL技術分析

2016-08-25 05:38呂冬雪
電子設計工程 2016年14期
關鍵詞:關系數據庫數據模型哈希

呂冬雪

(北京工業大學 北京 100124)

基于大數據環境的NoSQL技術分析

呂冬雪

(北京工業大學 北京100124)

傳統關系數據庫滿足不了當前海量數據的高效存儲和管理、高并發訪問、高可用性、高擴展性、高容錯性等特點的大數據環境,同時,NoSQL技術在海量數據存儲方面展現了許多優秀性能,因此,NoSQL技術越來越受到重視。本文總結了大數據環境對數據存儲的挑戰,重點分析了NoSQL的理論基礎、系統架構、數據模型、關鍵技術、安全問題等,并分析了幾種典型的NoSQL數據庫。

大數據;NoSQL;關系數據庫;數據存儲

隨著云計算、物聯網、數據挖掘等新一代技術的發展,在移動計算、社交網絡等業務的推動下,大數據技術產生并迅速地建立起生態體系。然而,大數據在推動技術變革的同時,對海量數據的存儲、并發訪問、擴展等要求越來越高。例如,在Web2.0的社交網站中有龐大的用戶群,每時每刻都有大量的數據量訪問,因而會產生大量的日志和資料等,其數據量已經達到PB級別。對于這些海量的數據,不但包括結構化數據,更多的是包括非結構化數據,傳統關系數據庫不能很好、及時地處理這些數據,其ACID(Atomicity、Consistency、Isolation、Durability)原則、結構規整、表連接操作等特性成為制約海量數據存儲的瓶頸[1]。NoSQL就是為了解決海量數據的存儲而提出的,具有數據模型靈活、并發訪問高、易于擴展和伸縮、開發效率高、開發成本低等優點。

本文先是分析了在大數據環境下對海量數據存儲的挑戰,然后分析了NoSQL技術,主要從理論基礎、系統架構、數據模型、關鍵技術、安全問題等幾個方面進行分析,最后對當前主流的NoSQL數據庫進行總結分析。

1 大數據環境對數據存儲的挑戰

早在2012年,《紐約時報》就已經刊稱“大數據時代”已經來臨,我們現在已經處于大數據時代。大數據對當前數據存儲、訪問和管理帶來了前所未有的挑戰[2]:

1)高并發讀寫需求。對于提供實時性、動態性的社交網站、微博等,往往需要達到每秒上萬次的讀寫請求,這種很高的并發性對數據庫的并發負載相當大,特別是對于傳統關系數據庫的硬盤I/0是個很大的負擔。

2)高效率存儲和訪問需求。每天產生的數據量是巨大的,采用傳統的關系數據庫將海量數據放到具有結構固定的二維表中,不管是查詢還是更新等操作效率都非常低。

3)高擴展性。關系數據庫是很難水平擴展的。當數據量和訪問量多到需要增加硬件和服務器節點來擴大容量和負載量,關系數據庫必須停機維護和數據遷移,這對一個需要24小時不停服務的網站是非常不可取的。

大數據要求數據管理系統既能海量數據存儲,又能高效率的并發讀寫和訪問,同時必須支持擴展性和可伸縮性。NoSQL數據庫作為關系數據庫的補充,彌補了關系數據庫在這些方面的不足,滿足了海量數據的存儲、訪問和管理。

2 NoSQL技術

NoSQL(Not Only SQL)伴隨互聯網web2.0產生,是一種非關系型、分布式、不遵循ACID、不提供SQL的數據庫總稱。它并不是單純地反對關系數據庫,而是在靈活性、擴展性、性能等方面對關系數據庫的補充[3]。NoSQL通過采用簡單數據模型、元數據和應用數據分離、弱一致性等技術能滿足海量數據的存儲要求。伴隨大數據、云計算、物聯網等新一代技術的迅速發展,NoSQL越來越成熟。

2.1理論基礎

CAP理論。CAP理論[3-4]是NoSQL的基石,分別代表一致性、可用性、分區容錯性3個特性。根據CAP理論,數據共享系統只能滿足這3個特性中的兩個,而不能同時滿足3個條件[3-4]。而由于當前的網絡硬件條件限制肯定會出現延遲丟包等問題,所以分區容錯性是我們必須需要實現的[6]。因此,系統設計者需要在一致性和可用性之間進行權衡和取舍。

BASE理論。由于對可用性及分區容錯性的要求高于強一致性,并且很難滿足事務所要求的ACID特性,因此BASE理論[3,5]被提出。Base理論組成包括:基本可用、軟狀態和最終一致性?;究捎檬侵赶到y能夠保持基本可用的狀態一直為用戶提供服務;軟狀態是指系統不要求強一致狀態,可以異步;最終一致性是指系統在一定時間內保持數據一致[3,5]。Base理論是CAP理論的演化,完全不同于關系數據庫的ACID特性,它通過犧牲強一致性獲得基本一致性和柔性可靠性,達到最終一致性來提高可用性和系統性能。NoSQL遵循Base理論。

2.2系統架構

目前,NoSQL數據庫有許多解決方案,但其系統架構主要分為兩類:Master-Slave架構和P2P(Peer to Peer)環狀架構。Master-Slave架構[6]通常是由一個master節點(管理節點)和多個slave節點(計算節點)組成,master節點負責管理整個系統,并監控所有slave節點的狀態實現負載均衡;而slave節點是數據存儲節點,每個salve節點需要維護一個本地數據的索引表并定期向master節點匯報自己的運行和負載情況。Master-Slave架構系統設計的優點是比較簡單、可控性好、維護簡便,缺點是master節點會成為制約性能的瓶頸[6]。Bigtable和HBase采用Master-Slave架構。在P2P環狀架構[6]中,系統節點通過“一致性哈希算法”連接一個環,每個節點處于平等地位而沒有主次之分,每個節點存儲和管理數據。P2P架構系統設計的優點是負載均衡、協調性好、擴展方便,缺點是系統較為復雜、可控性差。Cassandra和Dynamo采用P2P架構。

2.3數據模型

從數據模型的角度,根據數據的存儲模型和特點,NoSQL數據庫有很多分類,主要有以下四種典型的類型[3]:鍵值存儲數據模型、列式存儲數據模型、文檔存儲數據模型、圖形存儲數據模型。

鍵值存儲數據模型。鍵值存儲數據模型的思想源自于哈希表中的key-value(鍵值對),是NoSQL數據庫經常采用的存儲形式。key-value是一個映射,key是經過計算得到關鍵字,value是存儲的內容。在鍵值存儲數據模型中,數據按照key-value的形式進行組織、存儲和索引。對于海量數據存儲系統來說,鍵值存儲模型弱化了數據結構,易于實現,具有極高的并發讀寫性能。但是,不適合批量數據的查詢、更新操作,也不支持特別復雜邏輯的數據操作[3]。采用此類型存儲的數據庫系統有Redis、Dynamo等。

列式存儲數據模型。列式存儲數據模型也采用類似“表”的傳統數據模型,相對于關系數據庫用“行”來存儲數據,它主要采取了“列”存儲。列式存儲通過將同一列的數據盡可能地存儲在硬盤同一個頁中,同時支持“列族”(多個列并為一個組,即列族)特性,能提高存儲空間利用率和查詢效率,節省大量的I/O操作[3]。由于列式存儲是面向大數據環境下的數據分析和數據倉庫而生,會有寫入效率低、數據完整性稍差等缺點。采用此類型存儲的數據庫系統有 Bigtable、Cassandra、Hbase、HyperTable等。

文檔存儲數據模型。文檔存儲數據模型沒有關系數據庫的存儲模式,存儲格式多樣,其數據通常以JSON或者類似JSON格式(例如XML、BSON等)的文檔進行存儲。它可以通過復雜的查詢條件來獲取數據,在部分應用中,文檔型數據庫比鍵值型數據庫的查詢效率更高,比較容易使用,支持嵌套結構,擴展性強;缺點是存儲的是非結構化數據,不具備關系數據的事務處理和JSON處理能力[3]。采用此類型存儲的數據庫系統有MongoDB、CouchDB等。

圖形存儲數據模型。圖形存儲數據模型[2]以網格結構的圖理論為基礎,由節點、關系和屬性組成,用節點表示實體對象,用邊表示實體對象之間關系。采用圖結構存儲數據應用圖算法進行各種復雜的運算,如最短路徑計算、集中度測量等[3]。采用此類型存儲的數據庫系統有Neo4j、GraphDB等。

2.4關鍵技術

為了適應高并發的讀寫、高效率的存儲和訪問以及高擴展性和可用性等需求的大數據環境,NoSQL數據庫迅速發展,其關鍵技術主要集中在數據的分區、放置、處理、復制、容錯、壓縮、緩存等方面。

數據分區和放置。在不斷地解決數據存儲空間和數據庫性能問題的過程中,為了有效地存儲、處理大量的數據,采用“分而治之”思想的數據分區技術出現。分區能夠減少管理操作的時間,縮小查詢操作的范圍,提高了數據的可用性、系統的性能和維護的效率。根據數據的特點和用戶的需求,分區技術主要有范圍分區、列表分區、哈希分區等。

對于海量數據的放置策略,有許多的研究算法,其中“一致性哈?!彼惴üJ度最高。具體思想是[3,7]:第一步,在一個虛擬的環形哈??臻g,組織方式是順時針,哈希函數H的值空間是0~(232-1),0和232-1在時針零點鐘重合(圖1);第二步,按照服務器的主機名或者IP地址對每臺服務器進行哈希尋址,例如3臺服務器節點ServerA、ServerB、ServerC使用IP尋址后在環上的位置 (圖2),Key值分別是KeyA、KeyB、KeyC;第三步,通過哈希算法得出數據對象在環的空間位置,順時針判斷數據存儲的服務器節點,比如4個數據對象Object1、Object2、Object3、Object4的 Key值分別是 Key1、Key2、Key3、Key4,則Object1存儲在ServerA、Object4存儲在ServerC、Object2和Object3存儲在ServerB(圖3)。

圖1 一般哈??臻g

圖2 有3臺服務器節點分布的哈??臻g

圖3 數據對象分布的哈??臻g

在容錯性方面[3,7],例如ServerC突然停機,根據一致性哈希算法,原來存儲在ServerC的數據對象Object4將順時針存儲在下一個服務器ServerB(圖4)。在擴展性方面[3,7],如果需要新加一個ServerD,首先根據IP進行尋址得出ServerD在空間位置 (例如在ServerD地址空間在數據對象Obejct2和Object3之間),則Object2將存儲在ServerD,其他不變(圖5)。

圖4 減少服務器節點后的哈??臻g(容錯性)

圖5 增加服務器節點后的哈??臻g(擴展性)

在負載均衡方面[3,7],一致性哈希算法引入了“虛擬節點”的概念,即將每臺服務器都在環形哈??臻g上映射多個虛擬節點。在沒有虛擬節點之前,系統中ServerB的訪問和存儲量遠遠小于ServerA的訪問和存儲量,造成負載不均衡(圖6)。引入虛擬節點后,計算出數據的哈??臻g值后按照順時針方向找到服務器節點,這個節點是虛擬的,實際上數據是存儲在這個虛擬節點對應的實際服務器上。例如,ServerA和ServerB都映射了兩個虛擬節點 ServerA#1、ServerA#2和ServerB#1、ServerB#2(圖7),數據可以均勻分布這4個節點上,解決了負載不均衡的問題。

圖6 負載不平衡的哈??臻g

圖7 增加虛擬節點后的哈??臻g(負載均衡)

數據處理。并行計算是解決大規模數據處理的方法之一,其計算模型主要分為三大類:MPI技術、Map/Reduce計算、Dryad并行計算模型。MPI是并行計算的編程接口標準;Dryad是微軟為并行處理海量數據而設計的分布式架構。Map/Reduce[8]是Google提出的大規模數據的并行計算模型,數據處理過程主要分成兩個階段:Map階段、Reduce階段。具體過程是:首先Map/Reduce框架將輸入的數據集分成若干個獨立的數據塊,由Map任務以并行的方式執行;其次,Map/ Reduce框架先對Map的輸出進行排序,然后把結果輸入給Reduce任務;同時,整個Map/Reduce框架會負責任務的調度和監控,以及重新執行已經失敗的任務。

數據復制和容錯。在處理數據時候,為了避免因一些差錯和失誤而刪除、改錯某些數據等情況,數據復制(備份)技術隨之產生,通過對數據進行備份,在出錯情況下能夠及時找到或者恢復原來的數據?,F在,NoSQL數據庫種類繁多,出現了很多不同的數據復制策略以及相應的數據故障檢測與處理技術。主要有Dynamo為代表的基于key-value模式的數據庫復制策略、以CouchDB為代表的文檔數據庫代表的復制的策略、以PNUTS為代表的其他數據庫的復制策略[3]。

數據壓縮。由于數據中存在著大量的冗余信息,在不丟失信息的前提下,將重復的數據按照一定算法進行重新組織,以達到最大程度的壓縮提高數據傳輸、存儲和處理的效率,這就是數據壓縮。傳統的數據壓縮方法如霍夫曼編碼、LZ77算法等不能滿足海量數據的對于數量、速度、多樣的壓縮要求,因此出現了針對大數據的數據壓縮方法,主要包括Oracle的混合列壓縮、Google的兩趟壓縮、Hadoop的LZO壓縮算法等[3]。

數據緩存。在多服務器的大數據環境下,數據庫的高訪問量制約數據庫和服務器的性能,因此,數據緩存是NoSQL技術非常重要的部分。分布式緩存技術迅速發展,其經歷從本地緩存、分布式緩存系統、彈性緩存平臺到彈性應用平臺的發展。數據庫將數據直接放入緩存中,應用程序從緩存中獲取所需數據,提高了系統可用性和性能。分布式緩存機制具有高性能、動態可擴展、高可用、易可用等特點。

2.5安全問題

NoSQL數據存儲具有海量存儲、高并發性、高可用性、可擴展性等優勢,但由于NoSQL發展比較新,其數據存儲遵從最終一致性,也面臨一些安全威脅[9-10]:1)模式成熟度不夠。NoSQL無法沿用關系數據庫的模式,沒有嚴格的訪問控制和隱私工具。2)系統成熟度不夠。相比關系數據庫比較成熟的安全機制,NoSQL系統仍然會有各種漏洞。3)客戶端問題。NoSQL需對訪問的客戶端應用程序提供安全措施,例如身份驗證和授權功能、SQL注入問題、代碼漏洞等。4)數據冗余和分散性問題。在分布式環境,數據分在不同位置不同服務器上,對數據的冗余性和分散性需要考慮。同時,也要注意數據查詢、處理、備份、容錯等問題。

3 幾種典型的NoSQL數據庫對比分析

表1 幾種典型的NoSQL數據庫對比分析

Redis是一個鍵值模型的內存數據庫,整個數據庫在內存中加載并進行數據操作,并周期性地把更新的數據寫回硬盤中進行保存。Cassandra借鑒于Google的Bigtable的列族,是Facebook在2008年提出的,同時引入了“超級列”的概念,實現更高層級的數據組織、索引。MongoDB是存儲結構松散、可擴展、高性能、易部署、易使用的文檔存儲數據庫,介于關系數據庫和NoSQL數據庫之間。Neo4j是一個嵌入式、基于磁盤的、支持完整事務的java持久化引擎,它將結構化數據采用圖結構的方式存儲,是面向圖形的數據庫。

表1展示的是4種NoSQL數據庫在數據模型、功能特性、使用許可、編寫語言、協議類型、應用案例和場景、缺陷方面等方面的對比[10]。

4 結束語

面對具有海量化、多樣化、快速化、價值化特點的大數據環境,傳統關系數據庫已經不能滿足海量數據的存儲和管理要求。NoSQL數據庫具有簡單和靈活的數據模型、高并發訪問、很好的擴展性和可用性等優點,彌補了關系數據庫的不足。但是,NoSQL數據庫不是對關系數據庫的否定,而是對關系數據的補充,兩者在各種領域各自發揮著重要的作用。作為解決大數據存儲和管理的先進方法,NoSQL技術有著關系數據庫無法比擬的優勢,越來越受到大多人的關注和重視,發展前景廣闊。

[1]呂美英,郭顯娥.NOSQL和可擴展的SQL[J].山西大同大學學報(自然科學版),2012,28(5):15-18.

[2]阮夢黎.大數據挑戰下的NoSQL系統研究 [J].聊城大學學報:自然科學版,2015,28(1):88-93

[3]陸嘉恒.大數據挑戰與NoSQL數據庫技術[M].北京:電子工業出版社,2014.

[4]Julian Browne.Brewer’s CAP Theorem[EB/OL].2009-01-11,http://www.julianbrowne.com/article/viewer/brewers-captheorem.

[5]王珊,薩師煊.數據庫系統概論[M].北京:高等教育出版社,2007.

[6]申德榮,于戈,王習特,等.支持大數據管理的 NoSQL系統研究綜述[J].軟件學報,2013,24(8):1786-1803.

[7]趙飛,蘇忠.一致性哈希算法在數據庫集群上的拓展應用[J].成都信息工程學院學報,2015,30(1):52-58.

[8]萬川梅,謝正蘭.深入云計算:Hadoop應用開發實戰詳解[M].北京:中國鐵道出版社,2014.

[9]張尼,張云勇,胡坤,等.大數據安全技術與應用[M].北京:人民郵電出版社,2014.

[10]張俊,周新,于素華,等.NoSQL數據管理技術[J].科研信息化技術及應用,2013,4(1):3-11.

Analysis of NoSQL technology based on big data environment

LV Dong-xue
(Beijing University of Technology,Beijing 100124,China)

The traditional relational database can not meet the current environment of big data,that contains the features of efficient storage and management,high concurrent access,high availability,high scalability,high fault tolerance.At the same time,NoSQL technology shows a lot of excellent properties in mass data storage.Therefore,many people pay attention to NoSQL technology.This article summarizes the challenges of big data environment for data storage,and focuses on the theoretical basis,system architecture,data model,key technologies,security issues in NoSQL,then analyzes several typical NoSQL databases.

big data;NoSQL;relational databases;data storage

TP311

A

1674-6236(2016)14-0033-04

2015-07-14稿件編號:201507096

呂冬雪(1990—),女,山東煙臺人,碩士研究生。研究方向:軟件工程。

猜你喜歡
關系數據庫數據模型哈希
關系數據庫在高爐數據采集系統中的應用
哈希值處理 功能全面更易用
文件哈希值處理一條龍
關系數據庫技術在計算機網絡設計中的應用
面板數據模型截面相關檢驗方法綜述
基于OpenCV與均值哈希算法的人臉相似識別系統
經濟全球化對我國勞動收入份額影響機制研究——基于面板數據模型
巧用哈希數值傳遞文件
一種基于數據圖劃分的關系數據庫關鍵詞檢索方法
基于數據模型的編程應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合