資源描述:
《nosql數(shù)據(jù)庫技術(shù)分析與實(shí)踐》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、NoSQL數(shù)據(jù)庫技術(shù)分析與實(shí)踐摘要:現(xiàn)在是云計(jì)算的時(shí)代,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的缺點(diǎn)會慢慢地都體現(xiàn)出來,尤其是他無法應(yīng)對大數(shù)據(jù)量的處理需求,導(dǎo)致目前關(guān)系型數(shù)據(jù)庫在云計(jì)算的平臺下已經(jīng)成為制約整個(gè)ongoDB這四種NoSQL數(shù)據(jù)庫的使用背景、分析了NoSQL數(shù)據(jù)庫技術(shù)特點(diǎn),并對目前應(yīng)用的幾種典型NoSQL數(shù)據(jù)庫進(jìn)行了分析比較。關(guān)鍵詞:云計(jì)算;數(shù)據(jù)庫;非關(guān)系型數(shù)據(jù)庫; 1概述 大家也許已經(jīng)聽說過“nosql”這個(gè)詞了,但是這個(gè)詞的含義到底是什么?有什么用途?有什么優(yōu)點(diǎn)?有什么缺點(diǎn)等等一系列問題隨之而來。Nosql數(shù)據(jù)庫是為了彌補(bǔ)關(guān)系型數(shù)據(jù)庫的不足而產(chǎn)生的。Nosql數(shù)據(jù)庫是非
2、關(guān)系型數(shù)據(jù)存儲的廣泛定義,它打破了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論大統(tǒng)一的局面。Nosql數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接操作。Nosql數(shù)據(jù)庫不使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫模型,而是使用文檔型的、列存儲、圖形數(shù)據(jù)庫等方式存儲數(shù)據(jù)模型?! ?.1關(guān)系型數(shù)據(jù)庫技術(shù)特征分析及問題 關(guān)系型數(shù)據(jù)庫把所有的數(shù)據(jù)都通過行和列的二元表現(xiàn)形式表示出來,給人更容易理解的直觀感受。關(guān)系型數(shù)據(jù)庫可以使多條數(shù)據(jù)值來進(jìn)行關(guān)聯(lián),這樣就使數(shù)據(jù)可以獨(dú)立存在,使得數(shù)據(jù)結(jié)構(gòu)的變更變得簡單易行?! £P(guān)系型數(shù)據(jù)庫的特征,可以分為優(yōu)點(diǎn)和缺點(diǎn)兩個(gè)方面來考慮。關(guān)系型數(shù)據(jù)庫的優(yōu)點(diǎn)有兩種:一種是通用性及高性能
3、。雖然此篇論文是在介紹NoSQL數(shù)據(jù)庫技術(shù)的特點(diǎn),但是關(guān)系型數(shù)據(jù)庫的性能高的這個(gè)優(yōu)點(diǎn)是不能忽視的,它具有非常好的通用性和非常高的性能,當(dāng)然,這些優(yōu)點(diǎn)也就使得,在很多應(yīng)用的實(shí)例面前,關(guān)系型數(shù)據(jù)庫是一個(gè)很不錯(cuò)的解決方案,甚至是最好、最有效的解決方案;另一種是比較突出的優(yōu)勢。關(guān)系型數(shù)據(jù)庫是一種應(yīng)用相當(dāng)普遍的,相當(dāng)通用的數(shù)據(jù)庫技術(shù),他的比較突出的優(yōu)勢不僅僅是一條,比如:能保持?jǐn)?shù)據(jù)的一致性(事務(wù)處理)這是關(guān)系型數(shù)據(jù)庫技術(shù)最大的優(yōu)勢了,所以說,在需要嚴(yán)格保證數(shù)據(jù)一致性和處理完整性的情況下,用關(guān)系型數(shù)據(jù)庫肯定是最正確的選擇;由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開銷很?。ㄏ嗤淖侄位旧隙贾挥幸惶帲?;
4、存在很多實(shí)際成果和專業(yè)技術(shù)信息(成熟的技術(shù))?! £P(guān)系型數(shù)據(jù)庫的不足是不擅長的處理操作。首先,有大量數(shù)據(jù)的寫入處理。在數(shù)據(jù)讀入方面,由復(fù)制產(chǎn)生的主從模式(數(shù)據(jù)的寫入由數(shù)據(jù)庫負(fù)責(zé),數(shù)據(jù)的讀入由從數(shù)據(jù)庫負(fù)責(zé)),可以比較簡單地通過增加從數(shù)據(jù)庫來實(shí)現(xiàn)規(guī)模化。但是,在數(shù)據(jù)的寫入方面卻完全沒有簡單的方法來解決規(guī)?;瘑栴}。其次,為有數(shù)據(jù)更新的表做索引或表結(jié)構(gòu)(schema)變更。在使用關(guān)系型數(shù)據(jù)庫時(shí),為了加快查詢速度需要?jiǎng)?chuàng)建索引,為了增加必要的字段就一定需要改變表結(jié)構(gòu)。為了進(jìn)行這些處理,需要對表進(jìn)行共享鎖定,這期間數(shù)據(jù)變更(更新、插入、刪除等)是無法進(jìn)行的。如果需要進(jìn)行一些耗時(shí)操作(例如為數(shù)
5、據(jù)量比較大的表創(chuàng)建索引或者變更其表結(jié)構(gòu)),就需要特別注意:長時(shí)間內(nèi)數(shù)據(jù)可能無法進(jìn)行更新。再有,字段不固定時(shí)應(yīng)用。如果字段不固定,利用關(guān)系型數(shù)據(jù)庫也是比較困難的。也許你會想到,在需要的時(shí)候再加一個(gè)字段不就可以了嗎,但是在實(shí)際的操作運(yùn)用中,每次都進(jìn)行反復(fù)的表結(jié)構(gòu)變更是非常痛苦的。你也可以預(yù)先設(shè)定大量的預(yù)備字段,但這樣的話,時(shí)間久了,很容易弄不清楚字段和數(shù)據(jù)的對應(yīng)狀態(tài)(即哪個(gè)字段保存哪些數(shù)據(jù)),所以不推薦使用。最后,對簡單查詢需要快速返回結(jié)果的處理。其實(shí)這個(gè)也不算是缺點(diǎn),只是關(guān)系型數(shù)據(jù)庫并不擅長對簡單的查詢快速返回結(jié)果,因?yàn)殛P(guān)系型數(shù)據(jù)庫是使用專門的SQL語言進(jìn)行數(shù)據(jù)讀取的,他需要對SQ
6、L語言進(jìn)行解析,同時(shí)還有對表的鎖定和解鎖這樣的額外開銷。這里不是說關(guān)系型數(shù)據(jù)庫的速度太慢,而是想告訴大家若希望對簡單查詢進(jìn)行高速處理,則沒有必要非使用關(guān)系型數(shù)據(jù)庫不可。在這種情況下,我推薦大家使用NoSQL數(shù)據(jù)庫?! ?.2NoSQL技術(shù)的背景和發(fā)展過程。 為了彌補(bǔ)關(guān)系型數(shù)據(jù)庫的的不足之處,NoSQL數(shù)據(jù)庫出現(xiàn)了,關(guān)系型數(shù)據(jù)庫應(yīng)用廣泛,能進(jìn)行事務(wù)處理和JOIN等復(fù)雜處理。相對的,NoSQL數(shù)據(jù)庫只應(yīng)用在特定領(lǐng)域,基本上不進(jìn)行復(fù)雜的處理,但他恰恰彌補(bǔ)了之前所列舉的關(guān)系型數(shù)據(jù)庫的不足之處?! ?.2.1NoSql的概念 NoSQL數(shù)據(jù)庫是非關(guān)系型數(shù)據(jù)存儲的廣泛定義,他打破
7、了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論大統(tǒng)一的局面。NoSQL數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在鏈接操作。NoSQL數(shù)據(jù)庫不適用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫模型,而是使用如文檔型的、列存儲、圖形數(shù)據(jù)庫等方式存儲。NoSQL數(shù)據(jù)庫基本上來說是為了“使大數(shù)據(jù)的寫入處理更加容易”而設(shè)計(jì)的。但如果不是對大數(shù)據(jù)量數(shù)據(jù)進(jìn)行操作的話,NoSQL數(shù)據(jù)庫的應(yīng)用就沒有意義了嗎?當(dāng)然,答案是否定的。的確,他能在處理大數(shù)據(jù)量方面有很大的優(yōu)勢,但實(shí)際上NoSQL數(shù)據(jù)庫還有各種各樣的優(yōu)點(diǎn),到目前為止,竟然有122