新聞中心
2009年在亞特蘭大舉行的”no:sql(east)”討論會是一個里程碑,其口號是”select fun, profit from real_world where relational=false;”。因此,對NoSQL最普遍的解釋是”非關聯(lián)型的”,強調Key-Value存儲和文檔數(shù)據(jù)庫的優(yōu)點,而不是單純的反對RDBMS。

NoSQL的迅速發(fā)展以及由于NoSQL中沒有像傳統(tǒng)數(shù)據(jù)庫那樣定義數(shù)據(jù)的組織方式為關系型的,所以只要內部的數(shù)據(jù)組織采用了非關系型的方式,就可以稱之為NoSQL數(shù)據(jù)庫。所以隨之帶來了開源社區(qū)上百種所謂的NoSQL數(shù)據(jù)庫,讓人眼花繚亂。對于NoSQL并沒有一個明確的范圍和定義,但是他們都普遍存在下面一些共同特征:
不需要預定義模式:不需要事先定義數(shù)據(jù)模式,預定義表結構。數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。當插入數(shù)據(jù)時,并不需要預先定義它們的模式。
彈性可擴展:可以在系統(tǒng)運行的時候,動態(tài)增加或者刪除結點。不需要停機維護,數(shù)據(jù)可以自動遷移。
分布式:相對于將數(shù)據(jù)存放于同一個節(jié)點,NoSQL數(shù)據(jù)庫需要將數(shù)據(jù)進行分區(qū),將記錄分散在多個節(jié)點上面。并且通常分區(qū)的同時還要做復制。這樣既提高了并行性能,又能保證沒有單點失效的問題。
BASE:相對于事務嚴格的ACID特性,NoSQL數(shù)據(jù)庫保證的是BASE特性。BASE是最終一致性和軟事務。
NoSQL優(yōu)勢:避免不必要的復雜性、高吞吐量、高水平擴展能力;比如隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關系數(shù)據(jù)庫在應付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應用難題。
NoSQL劣勢:數(shù)據(jù)模型和查詢語言沒有經(jīng)過數(shù)據(jù)驗證,沒有堅實的理論基礎;不支持ACID特性,當然使用SQL數(shù)據(jù)庫可以解決這個問題;有些NoSQL數(shù)據(jù)庫過于簡單,比如Memcache只是一個內存數(shù)據(jù)庫,適用于某些特性場景;最大的劣勢就是沒有統(tǒng)一的數(shù)據(jù)查詢模型,每種NoSQL產(chǎn)品都有自己的語言使用方式。
由于NoSQL數(shù)據(jù)庫并沒有一個統(tǒng)一的架構,兩種NoSQL數(shù)據(jù)庫之間的不同,甚至遠遠超過兩種關系型數(shù)據(jù)庫的不同??梢哉f,NoSQL各有所長,成功的NoSQL必然特別適用于某些場合或者某些應用,在這些場合中會遠遠勝過關系型數(shù)據(jù)庫和其他的NoSQL。
什么是NewSQL?
通過比較可以發(fā)現(xiàn)NoSQL跟SQL之間的對立性太強了,基于NoSQL跟SQL之間的某種差異,比如NoSQL有的功能SQL沒有,如分布式、簡單數(shù)據(jù)模型;而SQL有的特性NoSQL又沒有,如ACID功能;當然不管哪種數(shù)據(jù)庫,不管其劣勢還是優(yōu)勢都有其適用的場景。而SQL很難實現(xiàn)分布式的原因在于,SQL自身的日志機制、鎖機制以及緩沖區(qū)管理機制。于是就出來了NewSQL數(shù)據(jù)庫的概念,所謂的NewSQL是什么呢?就是想柔和SQL與NoSQL獨有的特性。
目前NewSQL大概有兩類,第一類是擁有關系型數(shù)據(jù)庫產(chǎn)品和服務,并將關系型數(shù)據(jù)庫的好處與優(yōu)勢帶入到分布式架構上,簡單來說就是把ACID引入到分布式中;第二類是提供關系型數(shù)據(jù)庫的性能,達到不用考慮水平擴展的方式,簡單來說就是改變SQL架構使得它不用水平擴展,不用運行在分布式環(huán)境中就能夠帶來性能上的提升。對于第一類把ACID引入到分布式中去的產(chǎn)品有Clustrix、GenieDB、ScaleArc、ScaleBase、NimbusDB以及MySQL Cluster等。
NoSQL的分類?
總的來說,如今的數(shù)據(jù)庫市場真是百花齊放,大概分類為SQL、NoSQL、NewSQL以及緩存數(shù)據(jù)庫系統(tǒng)。而SQL和NewSQL不是本章討論的主題,所以下面來說一說NoSQL數(shù)據(jù)庫。
首先需要明確的一點,NoSQL數(shù)據(jù)庫并不是要取代現(xiàn)在廣泛應用的傳統(tǒng)數(shù)據(jù)庫,而是采用一種非關系型的方式解決數(shù)據(jù)的存儲和計算的問題。目前,可以將眾多的NoSQL數(shù)據(jù)庫按照內部的數(shù)據(jù)組織形式進行如下分類:
鍵值(Key-Value)存儲數(shù)據(jù)庫
這一類數(shù)據(jù)庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。Key-value模型對于IT系統(tǒng)來說的優(yōu)勢在于簡單、易部署。但是如果DBA只對部分值進行查詢或更新的時候,Key-value就顯得效率低下了。
數(shù)據(jù)模型:key-value
優(yōu)點:查找速度快
缺點:數(shù)據(jù)無結構,通常只被當做字符串或二進制數(shù)據(jù)
應用場景:內容緩存
典型產(chǎn)品:Tokyo,Redis(一鍵多值),Dynamo ,Oracle BDB以及Memcache(一鍵一值),但Memcache雖然是Key-avlue存儲但是它是緩存數(shù)據(jù)庫。
列存儲數(shù)據(jù)庫
顧名思義,是按列存儲數(shù)據(jù)的。最大的特點是方便存儲結構化和半結構化數(shù)據(jù),方便做數(shù)據(jù)壓縮,對針對某一列或者某幾列的查詢有非常大的IO優(yōu)勢。
數(shù)據(jù)模型:數(shù)據(jù)按列存儲、將同一列數(shù)據(jù)存在一起
優(yōu)點:查找迅速、可擴展性強、易于實現(xiàn)分布式
缺點:功能相對SQL很有限
應用場景:分布式文件系統(tǒng)或分布式存儲
典型產(chǎn)品:Cassandra, HBase, Bigtable
文檔型數(shù)據(jù)庫
文檔型數(shù)據(jù)庫的靈感是來自于Lotus Notes辦公軟件的,而且它同第一種鍵值存儲相類似。該類型的數(shù)據(jù)模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型數(shù)據(jù)庫可 以看作是鍵值數(shù)據(jù)庫的升級版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫比鍵值數(shù)據(jù)庫的查詢效率更高。
數(shù)據(jù)模型:與鍵值模型類似,但value指向類似一個容器(文檔),容器內有一組信息
優(yōu)點:數(shù)據(jù)格式要求不嚴格,無須提前定義結構,每個文檔字段隨意
缺點:查詢性能不高(比SQL可能稍微好點),缺乏統(tǒng)一查詢語法
應用場景:只要不需要ACID就可以使用
典型產(chǎn)品:CouchDB, MongoDB,國內也有文檔型數(shù)據(jù)庫SequoiaDB,已經(jīng)開源
圖式數(shù)據(jù)庫
圖形結構的數(shù)據(jù)庫同其他行列以及剛性結構的SQL數(shù)據(jù)庫不同,它是使用靈活的圖形模型,并且能夠擴展到多個服務器上。NoSQL數(shù)據(jù)庫沒有標準的查詢語言(SQL),因此進行數(shù)據(jù)庫查詢需要制定數(shù)據(jù)模型。許多NoSQL數(shù)據(jù)庫都有REST式的數(shù)據(jù)接口或者查詢API。
數(shù)據(jù)模型:圖結構模型
優(yōu)點:利用圖結構相關算法提高性能,并滿足特殊場景應用需求
缺點:功能有限,且難以實現(xiàn)分布式
應用場景:社交網(wǎng)絡推薦系統(tǒng),比如好友推薦功能,關系圖譜
典型產(chǎn)品:Neo4J, InfoGrid, Infinite Graph
因此,我們總結NoSQL數(shù)據(jù)庫在以下的這幾種情況下比較適用:
\1. 數(shù)據(jù)模型比較簡單;
\2. 需要靈活性更強的IT系統(tǒng);
\3. 對數(shù)據(jù)庫性能要求較高;
\4. 不需要高度的數(shù)據(jù)一致性;
\5. 對于給定key比較容易映射復雜值的環(huán)境。
文章標題:NoSQL簡介
文章來源:http://m.5511xx.com/article/cdpicsj.html


咨詢
建站咨詢
