NoSQL資料庫簡介

2021-09-05 05:16:45 字數 3116 閱讀 6245

一、簡介

nosql(not only sql),泛指非關係型的資料庫。隨著網際網路web2.0**的興起,傳統的關聯式資料庫在應付web2.0**,特別是超大規模和高併發的sns型別的web2.0純動態**已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。nosql資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。

雖然nosql流行語火起來才短短一年的時間,但是不可否認,現在已經開始了第二代運動。儘管早期的堆疊**只能算是一種實驗,然而現在的系統已經更加的成熟、穩定。不過現在也面臨著乙個嚴酷的事實:技術越來越成熟——以至於原來很好的nosql資料儲存不得不進行重寫,也有少數人認為這就是所謂的2.0版本。這裡列出一些比較知名的工具,可以為大資料建立快速、可擴充套件的儲存庫。

二、nosql資料庫的四大分類

1、鍵值(key-value)儲存資料庫

這一類資料庫主要會使用到乙個雜湊表,這個表中有乙個特定的鍵和乙個指標指向特定的資料。key/value模型對於it系統來說的優勢在於簡單、易部署。但是如果dba只對部分值進行查詢或更新的時候,key/value就顯得效率低下了。例如:tokyo cabinet/tyrant,redis, voldemort, oracle bdb。

2、列儲存資料庫

這部分資料庫通常是用來應對分布式儲存的海量資料。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:cassandra,hbase, riak。

3、文件型資料庫

文件型資料庫的靈感是來自於lotus notes辦公軟體的,而且它同第一種鍵值儲存相類似。該型別的資料模型是版本化的文件,半結構化的文件以特定的格式儲存,比如json。文件型資料庫可 以看作是鍵值資料庫的公升級版,允許之間巢狀鍵值。而且文件型資料庫比鍵值資料庫的查詢效率更高。如:couchdb,mongodb. 國內也有文件型資料庫sequoiadb,已經開源。

4、圖形(graph)資料庫

圖形結構的資料庫同其他行列以及剛性結構的sql資料庫不同,它是使用靈活的圖形模型,並且能夠擴充套件到多個伺服器上。nosql資料庫沒有標準的查詢語言(sql),因此進行資料庫查詢需要制定資料模型。許多nosql資料庫都有rest式的資料介面或者查詢api,如:neo4j, infogrid, infinite graph。

因此,我們總結nosql資料庫在以下的這幾種情況下比較適用:1、資料模型比較簡單;2、需要靈活性更強的it系統;3、對資料庫效能要求較高;4、不需要高度的資料一致性;5、對於給定key,比較容易對映複雜值的環境。

三、共同特徵

對於nosql並沒有乙個明確的範圍和定義,但是他們都普遍存在下面一些共同特徵:

不需要預定義模式:不需要事先定義資料模式,預定義表結構。資料中的每條記錄都可能有不同的屬性和格式。當插入資料時,並不需要預先定義它們的模式。

無共享架構:相對於將所有資料儲存的儲存區域網路中的全共享架構。nosql往往將資料劃分後儲存在各個本地伺服器上。因為從本地磁碟讀取資料的效能往往好於通過網路傳輸讀取資料的效能,從而提高了系統的效能。

彈性可擴充套件:可以在系統執行的時候,動態增加或者刪除結點。不需要停機維護,資料可以自動遷移。

分割槽:相對於將資料存放於同乙個節點,nosql資料庫需要將資料進行分割槽,將記錄分散在多個節點上面。並且通常分割槽的同時還要做複製。這樣既提高了並行效能,又能保證沒有單點失效的問題。

非同步複製:和raid儲存系統不同的是,nosql中的複製,往往是基於日誌的非同步複製。這樣,資料就可以盡快地寫入乙個節點,而不會被網路傳輸引起遲延。缺點是並不總是能保證一致性,這樣的方式在出現故障的時候,可能會丟失少量的資料。

base:相對於事務嚴格的acid特性,nosql資料庫保證的是base特性。base是最終一致性和軟事務。

nosql資料庫並沒有乙個統一的架構,兩種nosql資料庫之間的不同,甚至遠遠超過兩種關係型資料庫的不同。可以說,nosql各有所長,成功的nosql必然特別適用於某些場合或者某些應用,在這些場合中會遠遠勝過關係型資料庫和其他的nosql。

適用場景

nosql資料庫在以下的這幾種情況下比較適用:

1、資料模型比較簡單;

2、需要靈活性更強的it系統;

3、對資料庫效能要求較高;

4、不需要高度的資料一致性;

5、對於給定key,比較容易對映複雜值的環境。

未來與問題

儘管大多數nosql資料儲存系統都已被部署於實際應用中,但歸納其研究現狀,還有許多挑戰性問題。

已有key-value資料庫產品大多是面向特定應用自治構建的,缺乏通用性;

已有產品支援的功能有限(不支援事務特性),導致其應用具有一定的侷限性;

已有一些研究成果和改進的nosql資料儲存系統,但它們都是針對不同應用需求而提出的相應解決方案,如支援組內事務特性、彈性事務等,很少從全域性考慮系統的通用性,也沒有形成系列化的研究成果;

缺乏類似關聯式資料庫所具有的強有力的理論(如armstrong公理系統)、技術(如成熟的基於啟發式的優化策略、兩段封鎖協議等)、標準規範(如sql語言)的支援。

目前,hbase資料庫時安全特性最完善的nosql資料庫產品之一,而其他的nosql資料庫多數沒有提供內建的安全機制,但隨著nosql的發展,越來越多的人開始意識到安全的重要,部分nosql產品逐漸開始提供一些安全方面的支援。

隨著雲計算、網際網路等技術的發展,大資料廣泛存在,同時也呈現出了許多雲環境下的新型應用,如社交網路網、移動服務、協作編輯等。這些新型應用對海量資料管理或稱雲資料管理系統也提出了新的需求,如事務的支援、系統的彈性等。同時雲計算時代海量資料管理系統的設計目標為可擴充套件性、彈性、容錯性、自管理性和「強一致性」。目前,已有系統通過支援可隨意增減節點來滿足可擴充套件性;通過副本策略保證系統的容錯性;基於監測的狀態訊息協調實現系統的自管理性。「彈性」的目標是滿足pay-per-use 模型,以提高系統資源的利用率。該特性是已有典型nosql資料庫系統所不完善的,但卻是雲系統應具有的典型特點;「強一致性」主要是新應用的需求。

1 NoSQL 資料庫簡介

技術的分類 1 解決功能性的問題 j a jsp rdbms tomcat html linux jdbc svn 2 解決擴充套件性的問題 struts spring springmvc hibernate mybatis 3 解決效能的問題 nosql j a執行緒 hadoop nginx m...

NoSql資料庫之redis資料庫簡介及安裝

一 redis資料庫簡介 redis是用c語言開發的乙個開源的高效能鍵值對 key value 資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止redis支援的鍵值資料型別如 下 1 字串型別 string 2 雜湊型別 hash 3 列表型別 list 4 集合型別 set ...

Nosql資料庫概述

nosql資料庫簡稱非關係型資料庫,not only sql 那麼nosql資料庫有什麼特點呢?1.易擴充套件 nosql資料庫種類很多,但是有乙個共同的特點是都去掉了關係型資料庫的關係型特性 資料之間無關係,這樣就很容易擴充套件,也在架構的層面帶來了可擴充套件的能力 2.大資料量高效能 nosql...