国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談NoSQL數(shù)據(jù)庫的數(shù)據(jù)存儲(chǔ)

2019-10-21 08:03:50尹妍朱立偉
科學(xué)與信息化 2019年6期
關(guān)鍵詞:數(shù)據(jù)存儲(chǔ)

尹妍 朱立偉

摘 要 本文通過對(duì)NoSQL數(shù)據(jù)庫的概念與特性進(jìn)行簡要的闡述,分析其在數(shù)據(jù)存儲(chǔ)方面的優(yōu)勢與不足,并結(jié)合其發(fā)展歷程與目前的應(yīng)用狀況對(duì)這種新的數(shù)據(jù)庫形式進(jìn)行簡要探討。

關(guān)鍵詞 NoSQL數(shù)據(jù)庫;數(shù)據(jù)存儲(chǔ);非關(guān)系型數(shù)據(jù)庫

1NoSQL數(shù)據(jù)庫的概念與特性

所謂NoSQL數(shù)據(jù)庫,即Not Only SQL(不僅僅是SQL)的縮寫。傳統(tǒng)SQL數(shù)據(jù)庫為關(guān)系型的數(shù)據(jù)存儲(chǔ),需要嚴(yán)格的數(shù)據(jù)模式。而NoSQL數(shù)據(jù)庫提倡非關(guān)系型的數(shù)據(jù)存儲(chǔ),都沒有模式。NoSQL數(shù)據(jù)庫打破了曾經(jīng)占據(jù)主導(dǎo)地位的關(guān)系型數(shù)據(jù)庫壟斷,不需要事先設(shè)計(jì)表結(jié)構(gòu)便能夠輕易實(shí)現(xiàn)數(shù)據(jù)的非結(jié)構(gòu)存儲(chǔ)。

除了非關(guān)系型這一特點(diǎn),NoSQL還具有分布式、API形式簡單、適合大數(shù)據(jù)存儲(chǔ)、無架構(gòu)等其他特點(diǎn)。傳統(tǒng)關(guān)系型數(shù)據(jù)庫經(jīng)過多年發(fā)展,雖已健全成熟,但仍然有受限于固有模式而無法優(yōu)化的缺陷。而NoSQL面對(duì)這些缺點(diǎn),能夠表現(xiàn)出異常優(yōu)秀的性能——這也就是NoSQL自提出后就一直受到廣泛關(guān)注的原因[1]。

2NoSQL的數(shù)據(jù)存儲(chǔ)

2.1 以Hbase為代表的列存儲(chǔ)類型

列存儲(chǔ)類型,顧名思義,是按照列來存儲(chǔ)數(shù)據(jù)的。與之相對(duì)的,傳統(tǒng)關(guān)系型數(shù)據(jù)庫大都使用行存儲(chǔ)方式。圖中顯示兩種數(shù)據(jù)存儲(chǔ)的模式。左為傳統(tǒng)型行存儲(chǔ)模式,右為列存儲(chǔ)模式。

存儲(chǔ)結(jié)果如下(上為行存儲(chǔ)模式,下為列存儲(chǔ)模式)。

顯而易見,在需要讀取同一列數(shù)據(jù)的場合下,列存儲(chǔ)類型能表現(xiàn)出非常優(yōu)異的性能。此外,列式數(shù)據(jù)庫的空間利用率要優(yōu)于行式數(shù)據(jù)庫,原因在于列式存儲(chǔ)更有利于進(jìn)行空間壓縮操作,十分適合稀疏數(shù)據(jù)的存儲(chǔ)。相較于小量數(shù)據(jù),列式存儲(chǔ)更適合TB級(jí)及以上的大數(shù)據(jù)存儲(chǔ)。但它的數(shù)據(jù)由于分布較廣,并不適合大范圍查詢。

Hbase數(shù)據(jù)庫為列存儲(chǔ)類型數(shù)據(jù)庫的代表,除此以外還有Cassandra、Hypertable等。常常被使用在數(shù)據(jù)量較大且還會(huì)持續(xù)增長的場合之中。

2.2 以Neo4J為代表的圖存儲(chǔ)類型

圖是離散數(shù)學(xué)中的概念。在數(shù)據(jù)結(jié)構(gòu)中,圖形結(jié)構(gòu)也是四種基本邏輯結(jié)構(gòu)之一。在關(guān)系型數(shù)據(jù)庫時(shí)代,人們就試圖將圖投入到數(shù)據(jù)庫中使用,卻面臨著設(shè)計(jì)笨拙、性能低下的困境。而基于NoSQL理念,以Neo4J為代表的圖形數(shù)據(jù)庫打破了這一限制,解決了長久以來的問題。

Neo4J中的圖沿用了數(shù)據(jù)結(jié)構(gòu)中的概念,保留了點(diǎn)和邊的基本概念。其中,點(diǎn)代表實(shí)體,邊代表實(shí)體之間的關(guān)系。所有的實(shí)體作為一個(gè)個(gè)點(diǎn),散亂地分布在圖上,存在特定關(guān)系的實(shí)體之間用邊相連。其儲(chǔ)存方式實(shí)現(xiàn)類似鄰接表,每個(gè)節(jié)點(diǎn)通過指針指向相鄰節(jié)點(diǎn),且有單獨(dú)的邊集和點(diǎn)集。這一模式有利于從任何一個(gè)節(jié)點(diǎn)出發(fā)都可以遍歷整個(gè)圖,查找速度非???,且只要沿著關(guān)系邊集就可查找,時(shí)間復(fù)雜度不受總數(shù)據(jù)量的影響。

需要注意的是,圖存儲(chǔ)結(jié)構(gòu)受到數(shù)據(jù)關(guān)系特點(diǎn)的影響,在那些關(guān)系復(fù)雜且緊密的數(shù)據(jù)中有著良好的性能,但對(duì)于普通的大數(shù)據(jù)則會(huì)有反效果。除了Neo4J外,常用的還有FlockDB、ArangoDB等數(shù)據(jù)庫。

2.3 以Redis存儲(chǔ)為代表的鍵值存儲(chǔ)類型

鍵值存儲(chǔ)類型即Key-Value存儲(chǔ)類型。在這種模式下,所有的數(shù)據(jù)以鍵值對(duì)的形式存入數(shù)據(jù)庫中,并且以這種形式繼續(xù)支持后續(xù)的操作。

在鍵值存儲(chǔ)類型中,每個(gè)數(shù)據(jù)值(Value)都對(duì)應(yīng)一個(gè)關(guān)鍵字,即Key,用于索引和查找。在操作過程中只能通過鍵來查詢,不能使用值來查詢。每個(gè)數(shù)據(jù)也是相對(duì)獨(dú)立的,兩個(gè)鍵之間沒有關(guān)聯(lián)。

通常,鍵值存儲(chǔ)類型只適用于那些關(guān)系簡單的數(shù)據(jù),適用面較狹窄。但是在其適用范圍內(nèi),表現(xiàn)出極高的IO性能。

Redis、MemcacheDB、LevelDB是此類數(shù)據(jù)庫的代表,常用于用戶信息存儲(chǔ)方面。

2.4 其他類型

除去上述三種類型,還有以MongoDB為代表的文檔存儲(chǔ)類型,其數(shù)據(jù)以.json和.xml格式的文檔存儲(chǔ),可以任意存儲(chǔ)讀取數(shù)據(jù)而不受數(shù)據(jù)關(guān)系和規(guī)模的約束;以db4o為代表的對(duì)象存儲(chǔ)類型,其語法類似c++等面向?qū)ο笳Z言,通過對(duì)象來保存數(shù)據(jù);以ElasticSearch為代表的全文搜索引擎,主要針對(duì)傳統(tǒng)關(guān)系型數(shù)據(jù)全文搜索功能低下而產(chǎn)生的優(yōu)化數(shù)據(jù)庫,等等[2]。

3NoSQL數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)的發(fā)展進(jìn)程與現(xiàn)狀

最早發(fā)現(xiàn)關(guān)系型數(shù)據(jù)庫限制的是谷歌公司,為解決自身發(fā)展面臨的技術(shù)問題,它最早開發(fā)了GFS,順利克服了關(guān)系型數(shù)據(jù)庫技術(shù)的固有矛盾,后來為使得半結(jié)構(gòu)化數(shù)據(jù)能夠更加便捷地進(jìn)行存儲(chǔ),谷歌公司又相繼開發(fā)出BigTable、MapReduce等數(shù)據(jù)庫類型。國內(nèi)NoSQL數(shù)據(jù)庫的領(lǐng)軍者主要是騰訊公司及其他眾多的新型互聯(lián)網(wǎng)公司。

目前為止,市場上共有二十多種NoSQL數(shù)據(jù)庫,盡管都是非關(guān)系型數(shù)據(jù)庫,但是彼此有各自的優(yōu)勢所在,需要使用者了解其不同特性,根據(jù)具體的需求靈活使用。可以說,NoSQL數(shù)據(jù)庫的出現(xiàn)是數(shù)據(jù)庫技術(shù)發(fā)展的必然趨勢,需要人們發(fā)揮自身的才智對(duì)其進(jìn)行不斷完善。

參考文獻(xiàn)

[1] 劉玉程,李港.NoSQL數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫對(duì)比[J].中國新通信,2018,20(07):81.

[2] 雷宇輝,鐘雯,何清,等.Nosql數(shù)據(jù)庫研究文獻(xiàn)綜述[J].電子世界,2017,(04):11-12.

猜你喜歡
數(shù)據(jù)存儲(chǔ)
簡單的數(shù)據(jù)修復(fù)
大數(shù)據(jù)時(shí)代檔案信息建設(shè)的認(rèn)識(shí)和實(shí)踐
淺談電力大數(shù)據(jù)平臺(tái)關(guān)鍵技術(shù)研究與應(yīng)用
開源數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)路徑分析
基于Android開發(fā)的APP數(shù)據(jù)存儲(chǔ)研究
哈希算法在物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)中的應(yīng)用
空難事故跨媒體信息采集與檢索方法的研究
基于STM32的AD采集與SD卡數(shù)據(jù)存儲(chǔ)
淺談信息系統(tǒng)工程和POJO模型組件開發(fā)
基于MongoDB的調(diào)查決策系統(tǒng)數(shù)據(jù)存儲(chǔ)方案設(shè)計(jì)
中阳县| 东至县| 大化| 应城市| 邻水| 逊克县| 丽水市| 太原市| 平凉市| 浠水县| 津南区| 永嘉县| 雷州市| 塘沽区| 玉环县| 辉县市| 哈密市| 洪江市| 荣昌县| 杭锦后旗| 宁都县| 咸丰县| 华容县| 新泰市| 梁山县| 阳新县| 绩溪县| 大关县| 罗田县| 文化| 天峨县| 河津市| 海伦市| 新乡县| 六盘水市| 青田县| 读书| 勃利县| 荣成市| 仙桃市| 虞城县|