“NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù)。NoSQL有時(shí)也稱作Not Only SQL的縮寫,是對(duì)不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱。NoSQL用于超大規(guī)模數(shù)據(jù)的存儲(chǔ)。這些類型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無需多余操作就可以橫向擴(kuò)展?!?/p>
創(chuàng)新互聯(lián)建站是一家專業(yè)提供石樓企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為石樓眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
這一類數(shù)據(jù)庫(kù)主要會(huì)使用到一個(gè)哈希表,這個(gè)表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù)。Key/value模型對(duì)于IT系統(tǒng)來說的優(yōu)勢(shì)在于簡(jiǎn)單、易部署。但是如果DBA只對(duì)部分值進(jìn)行查詢或更新的時(shí)候,Key/value就顯得效率低下了。[3] 舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存儲(chǔ)數(shù)據(jù)庫(kù)。
這部分?jǐn)?shù)據(jù)庫(kù)通常是用來應(yīng)對(duì)分布式存儲(chǔ)的海量數(shù)據(jù)。鍵仍然存在,但是它們的特點(diǎn)是指向了多個(gè)列。這些列是由列家族來安排的。如:Cassandra, HBase, Riak.
文檔型數(shù)據(jù)庫(kù)
文檔型數(shù)據(jù)庫(kù)的靈感是來自于Lotus Notes辦公軟件的,而且它同第一種鍵值存儲(chǔ)相類似。該類型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲(chǔ),比如JSON。文檔型數(shù)據(jù)庫(kù)可 以看作是鍵值數(shù)據(jù)庫(kù)的升級(jí)版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫(kù)比鍵值數(shù)據(jù)庫(kù)的查詢效率更高。如:CouchDB, MongoDb. 國(guó)內(nèi)也有文檔型數(shù)據(jù)庫(kù)SequoiaDB,已經(jīng)開源。
圖形(Graph)數(shù)據(jù)庫(kù)
圖形結(jié)構(gòu)的數(shù)據(jù)庫(kù)同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫(kù)不同,它是使用靈活的圖形模型,并且能夠擴(kuò)展到多個(gè)服務(wù)器上。NoSQL數(shù)據(jù)庫(kù)沒有標(biāo)準(zhǔn)的查詢語(yǔ)言(SQL),因此進(jìn)行數(shù)據(jù)庫(kù)查詢需要制定數(shù)據(jù)模型。許多NoSQL數(shù)據(jù)庫(kù)都有REST式的數(shù)據(jù)接口或者查詢API。[2] 如:Neo4J, InfoGrid, Infinite Graph.
因此,我們總結(jié)NoSQL數(shù)據(jù)庫(kù)在以下的這幾種情況下比較適用:1、數(shù)據(jù)模型比較簡(jiǎn)單;2、需要靈活性更強(qiáng)的IT系統(tǒng);3、對(duì)數(shù)據(jù)庫(kù)性能要求較高;4、不需要高度的數(shù)據(jù)一致性;5、對(duì)于給定key,比較容易映射復(fù)雜值的環(huán)境。
DB(Database)數(shù)據(jù)庫(kù),另外,還有常見的DBMS表示數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System)。
數(shù)據(jù)庫(kù)是以某種規(guī)則儲(chǔ)存在一起、能夠與多個(gè)用戶共享、具有盡可能小的冗余度、且與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合,可以視為電子化的文件柜,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、查詢、更新、刪除等操作。
擴(kuò)展資料:
數(shù)據(jù)庫(kù)類型:
1、關(guān)系數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù),存儲(chǔ)的格式可以直觀地反映實(shí)體間的關(guān)系。關(guān)系型數(shù)據(jù)庫(kù)和常見的表格比較相似,關(guān)系型數(shù)據(jù)庫(kù)中表與表之間是有很多復(fù)雜的關(guān)聯(lián)關(guān)系的。
常見的關(guān)系型數(shù)據(jù)庫(kù)有Mysql,SqlServer等。在輕量或者小型的應(yīng)用中,使用不同的關(guān)系型數(shù)據(jù)庫(kù)對(duì)系統(tǒng)的性能影響不大,但是在構(gòu)建大型應(yīng)用時(shí),則需要根據(jù)應(yīng)用的業(yè)務(wù)需求和性能需求,選擇合適的關(guān)系型數(shù)據(jù)庫(kù)。
2、非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)
指的是分布式的、非關(guān)系型的、不保證遵循ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。NoSQL數(shù)據(jù)庫(kù)技術(shù)與CAP理論、一致性哈希算法有密切關(guān)系。
NoSQL數(shù)據(jù)庫(kù)技術(shù)還是具有非常明顯的應(yīng)用優(yōu)勢(shì),如數(shù)據(jù)庫(kù)結(jié)構(gòu)相對(duì)簡(jiǎn)單,在大數(shù)據(jù)量下的讀寫性能好;能滿足隨時(shí)存儲(chǔ)自定義數(shù)據(jù)格式需求,非常適用于大數(shù)據(jù)處理工作。
參考資料來源:百度百科-數(shù)據(jù)庫(kù)
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
雖然NoSQL流行語(yǔ)火起來才短短一年的時(shí)間,但是不可否認(rèn),現(xiàn)在已經(jīng)開始了第二代運(yùn)動(dòng)。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個(gè)嚴(yán)酷的事實(shí):技術(shù)越來越成熟——以至于原來很好的NoSQL數(shù)據(jù)存儲(chǔ)不得不進(jìn)行重寫,也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲(chǔ)庫(kù)。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無疑是一種全新的思維的注入。
對(duì)于NoSQL并沒有一個(gè)明確的范圍和定義,但是他們都普遍存在下面一些共同特征:
不需要預(yù)定義模式:不需要事先定義數(shù)據(jù)模式,預(yù)定義表結(jié)構(gòu)。數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。當(dāng)插入數(shù)據(jù)時(shí),并不需要預(yù)先定義它們的模式。
無共享架構(gòu):相對(duì)于將所有數(shù)據(jù)存儲(chǔ)的存儲(chǔ)區(qū)域網(wǎng)絡(luò)中的全共享架構(gòu)。NoSQL往往將數(shù)據(jù)劃分后存儲(chǔ)在各個(gè)本地服務(wù)器上。因?yàn)閺谋镜卮疟P讀取數(shù)據(jù)的性能往往好于通過網(wǎng)絡(luò)傳輸讀取數(shù)據(jù)的性能,從而提高了系統(tǒng)的性能。
彈性可擴(kuò)展:可以在系統(tǒng)運(yùn)行的時(shí)候,動(dòng)態(tài)增加或者刪除結(jié)點(diǎn)。不需要停機(jī)維護(hù),數(shù)據(jù)可以自動(dòng)遷移。
分區(qū):相對(duì)于將數(shù)據(jù)存放于同一個(gè)節(jié)點(diǎn),NoSQL數(shù)據(jù)庫(kù)需要將數(shù)據(jù)進(jìn)行分區(qū),將記錄分散在多個(gè)節(jié)點(diǎn)上面。并且通常分區(qū)的同時(shí)還要做復(fù)制。這樣既提高了并行性能,又能保證沒有單點(diǎn)失效的問題。
異步復(fù)制:和RAID存儲(chǔ)系統(tǒng)不同的是,NoSQL中的復(fù)制,往往是基于日志的異步復(fù)制。這樣,數(shù)據(jù)就可以盡快地寫入一個(gè)節(jié)點(diǎn),而不會(huì)被網(wǎng)絡(luò)傳輸引起遲延。缺點(diǎn)是并不總是能保證一致性,這樣的方式在出現(xiàn)故障的時(shí)候,可能會(huì)丟失少量的數(shù)據(jù)。
BASE:相對(duì)于事務(wù)嚴(yán)格的ACID特性,NoSQL數(shù)據(jù)庫(kù)保證的是BASE特性。BASE是最終一致性和軟事務(wù)。
NoSQL數(shù)據(jù)庫(kù)并沒有一個(gè)統(tǒng)一的架構(gòu),兩種NoSQL數(shù)據(jù)庫(kù)之間的不同,甚至遠(yuǎn)遠(yuǎn)超過兩種關(guān)系型數(shù)據(jù)庫(kù)的不同??梢哉f,NoSQL各有所長(zhǎng),成功的NoSQL必然特別適用于某些場(chǎng)合或者某些應(yīng)用,在這些場(chǎng)合中會(huì)遠(yuǎn)遠(yuǎn)勝過關(guān)系型數(shù)據(jù)庫(kù)和其他的NoSQL。