nosql,泛指非關係型的資料庫。隨著網際網路web2.0**的興起,傳統的關聯式資料庫在應付web2.0**,特別是超大規模和高併發的sns型別的web2.0純動態**已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。nosql資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。
雖然nosql的流行與火起來才短短一年的時間,但是不可否認,現在已經開始了第二代運動。儘管早期的堆疊**只能算是一種實驗,然而現在的系統已經更加的成熟、穩定。不過現在也面臨著乙個嚴酷的事實:技術越來越成熟——以至於原來很好的nosql資料儲存不得不進行重寫,也有少數人認為這就是所謂的2.0版本。該工具可以為大資料建立快速、可擴充套件的儲存庫。
nosql(nosql = not only sql ),意即「不僅僅是sql」,是一項全新的資料庫革命性運動,早期就有人提出,發展至2023年趨勢越發高漲。nosql的擁護者們提倡運用非關係型的資料儲存,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是一種全新的思維的注入。
鍵值(key-value
)儲存資料庫
這一類資料庫主要會使用到乙個雜湊表,這個表中有乙個特定的鍵和乙個指標指向特定的資料。key/value模型對於it系統來說的優勢在於簡單、易部署。但是如果dba只對部分值進行查詢或更新的時候,key/value就顯得效率低下了。舉例如:tokyo cabinet/tyrant, redis, voldemort, oracle bdb.
列儲存資料庫。
這部分資料庫通常是用來應對分布式儲存的海量資料。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:cassandra, hbase, riak.
文件型資料庫
文件型資料庫的靈感是來自於lotus notes辦公軟體的,而且它同第一種鍵值儲存相類似。該型別的資料模型是版本化的文件,半結構化的文件以特定的格式儲存,比如json。文件型資料庫可 以看作是鍵值資料庫的公升級版,允許之間巢狀鍵值。而且文件型資料庫比鍵值資料庫的查詢效率更高。如:couchdb, mongodb. 國內也有文件型資料庫sequoiadb,已經開源。
圖形(graph)資料庫
圖形結構的資料庫同其他行列以及剛性結構的sql資料庫不同,它是使用靈活的圖形模型,並且能夠擴充套件到多個伺服器上。nosql資料庫沒有標準的查詢語言(sql),因此進行資料庫查詢需要制定資料模型。許多nosql資料庫都有rest式的資料介面或者查詢api。如:neo4j, infogrid, infinite graph.
因此,我們總結nosql資料庫在以下的這幾種情況下比較適用:1、資料模型比較簡單;2、需要靈活性更強的it系統;3、對資料庫效能要求較高;4、不需要高度的資料一致性;5、對於給定key,比較容易對映複雜值的環境。
分類examples舉例典型應用場景
資料模型
優點缺點
鍵值(key-value)tokyo cabinet/tyrant, redis, voldemort, oracle bdb
內容快取,主要用於處理大量資料的高訪問負載,也用於一些日誌系統等等。
key 指向 value 的鍵值對,通常用hash table來實現
查詢速度快
資料無結構化,通常只被當作字串或者二進位制資料
列儲存資料庫cassandra, hbase, riak
分布式的檔案系統
以列簇式儲存,將同一列資料存在一起
查詢速度快,可擴充套件性強,更容易進行分布式擴充套件
功能相對侷限
文件型資料庫couchdb, mongodb
web應用(與key-value類似,value是結構化的,不同的是資料庫能夠了解value的內容)
key-value對應的鍵值對,value為結構化資料
資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構
查詢效能不高,而且缺乏統一的查詢語法。
圖形(graph)資料庫neo4j, infogrid, infinite graph
社交網路,推薦系統等。專注於構建關係圖譜
圖結構利用圖結構相關演算法。比如最短路徑定址,n度關係查詢等
很多時候需要對整個圖做計算才能得出需要的資訊,而且這種結構不太好做分布式的集群方案。
對於nosql並沒有乙個明確的範圍和定義,但是他們都普遍存在下面一些共同特徵:
不需要預定義模式:不需要事先定義資料模式,預定義表結構。資料中的每條記錄都可能有不同的屬性和格式。當插入資料時,並不需要預先定義它們的模式。
無共享架構:相對於將所有資料儲存的儲存區域網路中的全共享架構。nosql往往將資料劃分後儲存在各個本地伺服器上。因為從本地磁碟讀取資料的效能往往好於通過網路傳輸讀取資料的效能,從而提高了系統的效能。
彈性可擴充套件:可以在系統執行的時候,動態增加或者刪除結點。不需要停機維護,資料可以自動遷移。
分割槽:相對於將資料存放於同乙個節點,nosql資料庫需要將資料進行分割槽,將記錄分散在多個節點上面。並且通常分割槽的同時還要做複製。這樣既提高了並行效能,又能保證沒有單點失效的問題。
非同步複製:和raid儲存系統不同的是,nosql中的複製,往往是基於日誌的非同步複製。這樣,資料就可以盡快地寫入乙個節點,而不會被網路傳輸引起遲延。缺點是並不總是能保證一致性,這樣的方式在出現故障的時候,可能會丟失少量的資料。
base:相對於事務嚴格的acid特性,nosql資料庫保證的是base特性。base是最終一致性和軟事務。
nosql資料庫並沒有乙個統一的架構,兩種nosql資料庫之間的不同,甚至遠遠超過兩種關係型資料庫的不同。可以說,nosql各有所長,成功的nosql必然特別適用於某些場合或者某些應用,在這些場合中會遠遠勝過關係型資料庫和其他的nosql。
nosql資料庫在以下的這幾種情況下比較適用:
1、資料模型比較簡單;
2、需要靈活性更強的it系統;
3、對資料庫效能要求較高;
4、不需要高度的資料一致性;
5、對於給定key,比較容易對映複雜值的環境。
計算機體系結構在資料儲存方面要求具備龐大的水平擴充套件性,而nosql致力於改變這一現狀。google的 bigtable 和amazon 的dynamo使用的就是nosql型資料庫。
nosql專案的名字上看不出什麼相同之處,但是,它們通常在某些方面相同:它們可以處理超大量的資料。
這場革命仍然需要等待。的確,nosql對大型企業來說還不是主流,但是,一兩年之後很可能就會變個樣子。在nosql運動的最新一次聚會中,來自世界各地的150人擠滿了cbs interactive的一間會議室。分享他們如何推翻緩慢而昂貴的關聯式資料庫的**的經驗,怎樣使用更有效和更便宜的方法來管理資料。
「關係型資料庫給你強加了太多東西。它們要你強行修改物件資料,以滿足rdbms (relational database management system,關係型資料庫管理系統)的需要,」在nosql擁護者們看來,基於nosql的替代方案「只是給你所需要的」。
水平擴充套件性(horizontal scalability)指能夠連線多個軟硬體的特性,這樣可以將多個伺服器從邏輯上看成乙個實體。
儘管大多數nosql資料儲存系統都已被部署於實際應用中,但歸納其研究現狀,還有許多挑戰性問題。
已有key-value資料庫產品大多是面向特定應用自治構建的,缺乏通用性;
已有產品支援的功能有限(不支援事務特性),導致其應用具有一定的侷限性;
已有一些研究成果和改進的nosql資料儲存系統,但它們都是針對不同應用需求而提出的相應解決方案,如支援組內事務特性、彈性事務等,很少從全域性考慮系統的通用性,也沒有形成系列化的研究成果;
缺乏類似關聯式資料庫所具有的強有力的理論(如armstrong公理系統)、技術(如成熟的基於啟發式的優化策略、兩段封鎖協議等)、標準規範(如sql語言)的支援。
目前,hbase資料庫是安全特性最完善的nosql資料庫產品之一,而其他的nosql資料庫多數沒有提供內建的安全機制,但隨著nosql的發展,越來越多的人開始意識到安全的重要,部分nosql產品逐漸開始提供一些安全方面的支援。
隨著雲計算、網際網路等技術的發展,大資料廣泛存在,同時也呈現出了許多雲環境下的新型應用,如社交網路網、移動服務、協作編輯等。這些新型應用對海量資料管理或稱雲資料管理系統也提出了新的需求,如事務的支援、系統的彈性等。同時雲計算時代海量資料管理系統的設計目標為可擴充套件性、彈性、容錯性、自管理性和「強一致性」。目前,已有系統通過支援可隨意增減節點來滿足可擴充套件性;通過副本策略保證系統的容錯性;基於監測的狀態訊息協調實現系統的自管理性。「彈性」的目標是滿足pay-per-use 模型,以提高系統資源的利用率。該特性是已有典型nosql資料庫系統所不完善的,但卻是雲系統應具有的典型特點;「強一致性」主要是新應用的需求。
關係型資料庫 非關係型資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...
關係型資料庫 非關係型資料庫
2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...
關係型資料庫與非關係型資料庫
關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...