• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      NoSQL數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫對比

      2021-11-20 03:17:20閔昭浩楊卓凡
      電子技術(shù)與軟件工程 2021年14期
      關(guān)鍵詞:鍵值數(shù)據(jù)量一致性

      閔昭浩 楊卓凡

      (湖北大學(xué)計算機(jī)與信息工程學(xué)院 湖北省武漢市 430062)

      1 序言

      在當(dāng)今人類社會的工作生活中,每時每刻都會產(chǎn)生海量的數(shù)據(jù)信息,信息不僅達(dá)到了一定的數(shù)量級,并且信息種類繁多,這些信息需要及時有效的存儲管理起來,數(shù)據(jù)庫系統(tǒng)也是目前效率較高且較為快捷存儲信息管理工具。當(dāng)前,社會廣泛應(yīng)用的數(shù)據(jù)庫系統(tǒng)分為兩大類:RDBMS(關(guān)系型數(shù)據(jù)庫)與NoSQL(非關(guān)系型數(shù)據(jù)庫)。關(guān)系型數(shù)據(jù)庫自上世紀(jì)80年代初期就被提出并得到應(yīng)用,至今廣泛應(yīng)用于社會多個領(lǐng)域方面,它是基于關(guān)系模型來存儲數(shù)據(jù)的數(shù)據(jù)庫。非關(guān)系型數(shù)據(jù)庫在本世紀(jì)初期就得到提出,基于Web2.0時代的流行,非關(guān)系型數(shù)據(jù)庫則憑借其自身的特點(diǎn)優(yōu)勢得到了非常迅速的發(fā)展,它是基于分布式,不支持ACID的非關(guān)系型數(shù)據(jù)庫設(shè)計模式。

      目前,較為主流的傳統(tǒng)RDBMS有Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access等,它們在處理數(shù)據(jù)量不高,單一類型數(shù)據(jù)的時候是可以正常的進(jìn)行存儲管理,但當(dāng)數(shù)據(jù)量增加到一定數(shù)量級,數(shù)據(jù)類型增多的時候,若未進(jìn)行及時有效的存儲前規(guī)劃,則傳統(tǒng)關(guān)系型數(shù)據(jù)庫在存儲數(shù)據(jù)時就會出現(xiàn)并發(fā)度不高,訪問查詢效率較低以及可擴(kuò)展性不足等一系列問題,所以隨著信息時代的快速變化,數(shù)據(jù)量以及數(shù)據(jù)類型的增加,傳統(tǒng)關(guān)系型數(shù)據(jù)庫在某些領(lǐng)域場景中的應(yīng)用就不再那么高效。

      在Web2.0時代,Web2.0也催生了新的需求,例如,需要支持對海量用戶數(shù)據(jù)的高并發(fā)讀寫與高效存儲訪問,以及支持系統(tǒng)的高可用性與高擴(kuò)展性。NoSQL數(shù)據(jù)庫應(yīng)運(yùn)而生,且發(fā)展迅速,快速地成長為在該些領(lǐng)域應(yīng)用場景中熱門的數(shù)據(jù)庫管理系統(tǒng)。非關(guān)系型數(shù)據(jù)庫針對不同的數(shù)據(jù)類型以及不同的應(yīng)有場景也有不同的數(shù)據(jù)庫存儲模式。因此NoSQL憑借自身優(yōu)點(diǎn)特性在當(dāng)代社會與工作中越來越受歡迎。

      2 數(shù)據(jù)庫概述

      2.1 關(guān)系型數(shù)據(jù)庫

      關(guān)系型數(shù)據(jù)庫中的表結(jié)構(gòu)是一種基于關(guān)系模型的二維表格形式,其模型形式基于行和列來存儲管理數(shù)據(jù)。一個關(guān)系型數(shù)據(jù)庫組成包括多張表以及多表之間的關(guān)系。用戶可以通過SQL語句來進(jìn)行查詢訪問數(shù)據(jù)庫中的數(shù)據(jù)。

      SQL語句稱為結(jié)構(gòu)化查詢語言,自上世紀(jì)70年代初期由Boyce和Chamberlin提出,是一種高級非過程化編程語言。SQL語句主要分為三類:數(shù)據(jù)操縱語言(DML),數(shù)據(jù)定義語言(DDL),數(shù)據(jù)控制語言(DCL)。

      系統(tǒng)只需要用戶事先定義好SQL語句操作的目的,而無需知道系統(tǒng)的具體執(zhí)行過程。比如選擇路徑信息和具體執(zhí)行處理過程靠系統(tǒng)自動操作完成。語言簡練易懂,便于學(xué)習(xí)使用,是一個對于關(guān)系型數(shù)據(jù)庫系統(tǒng)管理的通用簡單易懂的語言。

      關(guān)系型數(shù)據(jù)庫自上世紀(jì)80年代發(fā)展起來,迄今已有數(shù)十年的歷史,在其主流產(chǎn)品Oracle,DB2等中,無論其基礎(chǔ)理論,還是相關(guān)應(yīng)用技術(shù),都非常成熟與完善,每種數(shù)據(jù)庫模式的語法,功能和特性也各具特色。但在Web2.0時代,隨著海量數(shù)據(jù)的涌現(xiàn),不僅數(shù)據(jù)量級得到了提升并且數(shù)據(jù)類型日益復(fù)雜,傳統(tǒng)關(guān)系型數(shù)據(jù)庫依據(jù)其本身的結(jié)構(gòu)難以“應(yīng)付”以上的應(yīng)用場景,而NoSQL數(shù)據(jù)庫相較于關(guān)系型數(shù)據(jù)庫有著更好的應(yīng)用發(fā)展場景。

      2.2 NoSQL數(shù)據(jù)庫

      NoSQL最常見的解釋是“non-relational”可稱作為不具備關(guān)系型的數(shù)據(jù)庫,“not only SQL”也被人們接受,被翻譯為“不僅僅是結(jié)構(gòu)化查詢語言”,由于互聯(lián)網(wǎng)Web2.0時代的流行,傳統(tǒng)關(guān)系型數(shù)據(jù)庫在面臨處理超大規(guī)模和高并發(fā)網(wǎng)站問題時表現(xiàn)出無法有效地解決此類問題,顯露出關(guān)系型數(shù)據(jù)庫不適應(yīng)此類場景的不足。而非關(guān)系型數(shù)據(jù)庫憑借自身的優(yōu)勢特征能較好地“應(yīng)對”超大規(guī)模以及多樣數(shù)據(jù)類型所帶來的問題。因此,NoSQL數(shù)據(jù)庫在此類場景中得到了迅速的發(fā)展與流行。例如在云計算中大數(shù)據(jù)如何應(yīng)用問題。NoSQL數(shù)據(jù)庫是同時支持CAP定理和BASE分布式理論,而傳統(tǒng)的關(guān)系型數(shù)據(jù)庫是基于ACID理論。

      2.2.1 NoSQL數(shù)據(jù)庫特點(diǎn)

      NoSQL數(shù)據(jù)庫有以下幾個特點(diǎn):

      (1)易擴(kuò)展性:NoSQL是非關(guān)系型數(shù)據(jù)庫,其包含多種數(shù)據(jù)存儲的數(shù)據(jù)庫設(shè)計模式,但所有的設(shè)計模式有一個共性特征是摒棄傳統(tǒng)關(guān)系型數(shù)據(jù)庫的關(guān)系特性后,其存儲數(shù)據(jù)間不存在關(guān)系,此特征優(yōu)勢在于提升了在架構(gòu)層面上的可擴(kuò)展性能力。

      (2)海量數(shù)據(jù)處理,高性能并發(fā)讀寫:NoSQL數(shù)據(jù)庫的Cache是具有細(xì)粒度特性,因此從該層面來講NoSQL的性能就要高出很多,由于其無關(guān)系特性,NoSQL數(shù)據(jù)庫在大數(shù)據(jù)處理場景中,其讀寫性能具有非常高的效率。

      (3)具有靈活的數(shù)據(jù)模型:在Web2.0時代中,關(guān)系型數(shù)據(jù)庫需事先定義好數(shù)據(jù)結(jié)構(gòu)(建立好表單以及表的字段類型等),如果表的數(shù)據(jù)量非常大,關(guān)系型數(shù)據(jù)庫對表的增刪改查操作無疑是非常龐大的操作量,并且大概率會出現(xiàn)數(shù)據(jù)錯誤甚至更為嚴(yán)重的后果。

      而NoSQL數(shù)據(jù)庫具有靈活輕便的數(shù)據(jù)模型,無需過早地對數(shù)據(jù)庫中的表定義字段,可以在任意時刻定義數(shù)據(jù)格式。所以非關(guān)系型數(shù)據(jù)庫在此種應(yīng)用場景下很好的解決了處理大數(shù)據(jù)量表的問題。

      (4)高可用性:NoSQL數(shù)據(jù)庫中的某些模型一方面可以在低影響性能的場景下,能快速便捷地實(shí)現(xiàn)高可用性,另一方面能夠采用復(fù)制相應(yīng)模型的方式實(shí)現(xiàn)高可用性。此類模型有Cassandra,Hbase模型。

      2.2.2 CAP定理

      非關(guān)系型數(shù)據(jù)庫是基于CAP定理,CAP定理包含三部分如下:

      (1)一致性(C:Consistency):是指系統(tǒng)執(zhí)行數(shù)據(jù)更新操作完成后并成功將數(shù)據(jù)返回給客戶端且使所有節(jié)點(diǎn)在操作完成后達(dá)到數(shù)據(jù)完全一致。在所有并發(fā)系統(tǒng)中都會面臨數(shù)據(jù)一致性問題,一方面對客戶端來講,一致性指的是在進(jìn)行數(shù)據(jù)并發(fā)訪問時怎樣得到更新操作后的數(shù)據(jù)。另一方面對于服務(wù)端來講,一致性指的是如何將更新操作后的數(shù)據(jù)準(zhǔn)確無誤地進(jìn)行復(fù)制且分布到原系統(tǒng),以此達(dá)到數(shù)據(jù)的最終一致性。

      (2)可用性(A:Availability):指的是NoSQL數(shù)據(jù)庫總是可以以正常的響應(yīng)時間為用戶提供服務(wù)。高效的可用性指的是不會出現(xiàn)用戶訪問操作失敗等用戶體驗(yàn)感不友好的情況。

      (3)分區(qū)容錯性(P:Partition Tolerance):是指分布式數(shù)據(jù)庫系統(tǒng)在面臨某些節(jié)點(diǎn)或網(wǎng)絡(luò)分區(qū)故障問題時,仍能支持提供一致性和可用性的服務(wù)。

      對于數(shù)據(jù)庫系統(tǒng)來講,無論是關(guān)系型數(shù)據(jù)庫還是非關(guān)系型數(shù)據(jù)庫對于CAP定理中三個要素不能同時滿足,只能兼容其中兩者,所以就有三種模式,CA模式,CP模式以及AP模式,NoSQL數(shù)據(jù)庫都屬于AP模式。

      2.2.3 BASE理論

      由于CAP定理只是定義了在分布式存儲數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)操作更新后等問題,并沒有明確給出一個在數(shù)據(jù)一致性和可用性之間進(jìn)行較好權(quán)衡的方法。因此BASE理論彌補(bǔ)了CAP定理上述不足,提出了權(quán)衡A與C的一種可行性方案。

      BASE理論的核心概述為:即便未能達(dá)到強(qiáng)一致性,但每個應(yīng)用都能依靠自身的業(yè)務(wù)特點(diǎn),采取合適的方式來使系統(tǒng)達(dá)到最終一致性。

      BA(Basically Available,基本可用性):分布式數(shù)據(jù)庫系統(tǒng)在遇到無法感知和預(yù)測的故障問題場景下,在保證最重要的核心功能可用情況下,允許損失部分可用性。

      S(Soft state,軟狀態(tài)):也可稱為灰度狀態(tài)、過渡狀態(tài),同時也是一種中間狀態(tài)。且認(rèn)為此中間狀態(tài)不僅不會影響到系統(tǒng)的整體可用性,而且也允許系統(tǒng)主機(jī)之間進(jìn)行數(shù)據(jù)同步的過程中存在一定延時。

      E(Eventual Consistent,最終一致性):要求系統(tǒng)數(shù)據(jù)副本最終能夠一致,而不需要實(shí)時保證數(shù)據(jù)副本一致。

      3 NoSQL數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫對比

      關(guān)系型數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫在使用情景下有著很大的區(qū)別,不同的應(yīng)用場景對應(yīng)著需要不同的數(shù)據(jù)庫模式,只有彼此相互正確對應(yīng)才能更好的發(fā)揮數(shù)據(jù)庫管理的優(yōu)勢。以下列舉出關(guān)系型數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫在各自情景應(yīng)用中的優(yōu)缺點(diǎn)。

      3.1 關(guān)系型數(shù)據(jù)庫具有的優(yōu)點(diǎn)

      (1)便于維護(hù):關(guān)系型數(shù)據(jù)庫中的表結(jié)構(gòu)是二維數(shù)組的形式,格式相同,方便進(jìn)行SQL語句操作。

      (2)SQL語言簡潔易用:對于初學(xué)者來講,SQL語言簡練,易學(xué)易用,可用于復(fù)雜場景下的查詢。

      (3)支持復(fù)雜操作:它可以實(shí)現(xiàn)一個表以及多個表之間的復(fù)雜查詢操作,使初學(xué)者容易上手學(xué)習(xí)SQL語句。

      3.2 關(guān)系型數(shù)據(jù)庫具有的缺點(diǎn)

      (1)在面臨大數(shù)據(jù)量數(shù)據(jù)進(jìn)行高效率處理訪問讀寫時,關(guān)系型數(shù)據(jù)庫的讀寫性能較低。

      (2)由于關(guān)系型數(shù)據(jù)庫中的表結(jié)構(gòu)都是二維表結(jié)構(gòu)且表結(jié)構(gòu)相對固定,其靈活度不高。

      (3)對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說,在進(jìn)行數(shù)據(jù)高并發(fā)讀寫時受限于硬盤的輸入和輸出。

      3.3 NoSQL數(shù)據(jù)庫具有的優(yōu)點(diǎn)

      (1)數(shù)據(jù)存儲結(jié)構(gòu)靈活:傳統(tǒng)關(guān)系型數(shù)據(jù)庫由于表結(jié)構(gòu)相對固定,只能通過數(shù)據(jù)定義語言(DDL語句)進(jìn)行表結(jié)構(gòu)的修改,且可擴(kuò)展性較低。而NoSQL數(shù)據(jù)庫有多樣的存儲機(jī)制,一方面數(shù)據(jù)格式靈活度高無固定表結(jié)構(gòu),另一方面可擴(kuò)展性高。比如文檔存儲模式,Key-Value鍵值對存儲模式,圖存儲模式。

      (2)可擴(kuò)展性高:傳統(tǒng)關(guān)系型數(shù)據(jù)庫由于其自身表結(jié)構(gòu)固定的特點(diǎn)不易于對數(shù)據(jù)進(jìn)行分片,對數(shù)據(jù)的橫向擴(kuò)展很難支持,但NoSQL數(shù)據(jù)庫支持?jǐn)?shù)據(jù)橫向擴(kuò)展,同時也支持對大數(shù)據(jù)量以及多類型數(shù)據(jù)的存儲管理。

      (3)支持?jǐn)?shù)據(jù)的最終一致性:NoSQL數(shù)據(jù)庫是基于CAP模型的,同時也是支持BASE分布式理論,目的是達(dá)到數(shù)據(jù)的最終一致性。

      3.4 NoSQL數(shù)據(jù)庫具有的缺點(diǎn)

      盡管NoSQL數(shù)據(jù)庫能較好的應(yīng)用在更為廣泛復(fù)雜的數(shù)據(jù)場景中,但NoSQL數(shù)據(jù)庫還存在著很多的不足,常見主要有下面這幾個方面:

      (1)不支持SQL結(jié)構(gòu)化查詢語言:如果無法支持SQL這樣的工業(yè)標(biāo)準(zhǔn),將會導(dǎo)致用戶學(xué)習(xí)與場景應(yīng)用的成本增加。

      (2)提供特性支持的豐富度不足:目前較為流行的非關(guān)系型數(shù)據(jù)庫都無法支持事務(wù)處理,且能提供的功能服務(wù)有限,相比較一些關(guān)系型數(shù)據(jù)庫能夠提供一些附加功能,比如Oracle與SQL Server。

      (3)大部分NoSQL數(shù)據(jù)庫尚處于起步階段:相應(yīng)的技術(shù)發(fā)展,維護(hù)文檔等技術(shù)資料還有待加強(qiáng)與完善,無法與關(guān)系數(shù)據(jù)庫幾十年的發(fā)展相比。

      4 NoSQL數(shù)據(jù)庫分類以及應(yīng)用場景

      NoSQL數(shù)據(jù)庫也稱非關(guān)系型數(shù)據(jù)庫,它是含蓋多種存儲方法的集合,主要包含以下幾類存儲方法:

      4.1 文檔存儲

      文檔存儲分為無結(jié)構(gòu)或半結(jié)構(gòu)化存儲,此類數(shù)據(jù)庫是以文檔為存儲數(shù)據(jù)信息的基本單位。半結(jié)構(gòu)化文檔有特定存儲文件的格式,如JOSN。并且數(shù)據(jù)間可以嵌套鍵值,在應(yīng)對處理較為復(fù)雜的網(wǎng)頁數(shù)據(jù)時,文檔存儲數(shù)據(jù)庫的查詢訪問效率較鍵值數(shù)據(jù)庫更高。此類數(shù)據(jù)庫模式有CouchDB,MongoDB等。

      4.2 鍵值(Key-Value)存儲

      鍵值存儲可以根據(jù)簡單的字符串(鍵)返回任意類型的數(shù)據(jù)(值)。具有極高的并行性,鍵值存儲可以存儲任何類型,比如存儲圖片,存儲網(wǎng)頁路徑,存儲文件路徑,存儲MD5哈希值以及存儲SQL語句查詢結(jié)果非常靈活,此類型數(shù)據(jù)庫主要依據(jù)哈希表來存儲數(shù)據(jù),表中由特定的鍵和特定的指針指向特定的數(shù)據(jù)組成。鍵值存儲方式在實(shí)際海量數(shù)據(jù)的應(yīng)用場景中都得到了具體的使用,此類數(shù)據(jù)庫模式有MemcacheDB,Redis,Voldemort等。

      4.3 列存儲

      列存儲屬于分布式的文件系統(tǒng),其存儲方式以列簇式進(jìn)行的,且此種存儲方式查詢訪問效率高。由于具有較高的可擴(kuò)展性,其更易實(shí)現(xiàn)分布式擴(kuò)展,且能對特定列的所屬行數(shù)據(jù)進(jìn)行讀取訪問,同時也能對表中所有行的特定列數(shù)據(jù)進(jìn)行同步更新操作。并支持對海量數(shù)據(jù)的存儲,其特點(diǎn)符合云計算的需求,目前較為流行的列式存儲數(shù)據(jù)庫有Cassandra,Hbase以及Google的Big Table。

      4.4 圖(Graph)存儲

      圖存儲使用圖形模型,其特點(diǎn)不僅較為靈活,并且能支持多個服務(wù)器的擴(kuò)展。圖存儲有三個字段:結(jié)點(diǎn),關(guān)系,屬性。圖數(shù)據(jù)庫的應(yīng)用場景也較為廣泛,比如社交網(wǎng)絡(luò),規(guī)則引擎,數(shù)字地圖等。目前正在使用的圖存儲數(shù)據(jù)庫有Neo4J,InfoGrid,Infinite Graph。

      5 結(jié)論

      隨著Web2.0時代的發(fā)展與流行,人們需要處理的數(shù)據(jù)規(guī)??涨皵U(kuò)大,數(shù)據(jù)類型日益增多,數(shù)據(jù)復(fù)雜度也隨之增加。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫愈發(fā)難以支持更為復(fù)雜的應(yīng)用場景,非關(guān)系數(shù)據(jù)庫應(yīng)運(yùn)而生,并且正在逐漸地成為數(shù)據(jù)庫領(lǐng)域中不可或缺的一部分,在Web2.0時代得到迅速發(fā)展與流行,其主要原因在于非關(guān)系型數(shù)據(jù)庫自身優(yōu)勢特點(diǎn),它具有支持海量數(shù)據(jù),擴(kuò)展性強(qiáng),支持高性能并發(fā)以及有較好的靈活數(shù)據(jù)模型。NoSQL數(shù)據(jù)庫是建立在CAP定理與BASE理論之上的,且支持?jǐn)?shù)據(jù)的最終一致性。也促使其能支持更為廣泛的OLAP場景。但NoSQL數(shù)據(jù)庫也有其缺點(diǎn),不支持結(jié)構(gòu)化查詢語言SQL。這會增加對初學(xué)者的學(xué)習(xí)成本,由于NoSQL數(shù)據(jù)庫無事務(wù)處理,因此不具備數(shù)據(jù)完整約束。由于關(guān)系型數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫使用的場景不同,因此兩者在實(shí)際生活工作中是一種互相補(bǔ)充的關(guān)系。當(dāng)關(guān)系型數(shù)據(jù)庫在某些場景中不能有效的應(yīng)用時,這時就可以依靠關(guān)系型數(shù)據(jù)庫應(yīng)用在此場景中。

      猜你喜歡
      鍵值數(shù)據(jù)量一致性
      關(guān)注減污降碳協(xié)同的一致性和整體性
      公民與法治(2022年5期)2022-07-29 00:47:28
      注重教、學(xué)、評一致性 提高一輪復(fù)習(xí)效率
      IOl-master 700和Pentacam測量Kappa角一致性分析
      基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
      計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
      高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
      非請勿進(jìn) 為注冊表的重要鍵值上把“鎖”
      寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計與研究
      電子制作(2019年13期)2020-01-14 03:15:18
      一鍵直達(dá) Windows 10注冊表編輯高招
      電腦愛好者(2017年9期)2017-06-01 21:38:08
      基于事件觸發(fā)的多智能體輸入飽和一致性控制
      榆社县| 柘荣县| 海盐县| 苍山县| 射洪县| 千阳县| 巫溪县| 德昌县| 济宁市| 敖汉旗| 邻水| 卓资县| 方山县| 波密县| 曲阜市| 三穗县| 江门市| 油尖旺区| 武威市| 嘉定区| 黔东| 葵青区| 淮安市| 黔东| 云安县| 沂水县| 安义县| 济源市| 荔波县| 威远县| 沁源县| 连山| 宁国市| 临猗县| 三原县| 黎川县| 通化县| 康定县| 河池市| 成安县| 布拖县|