您好,登錄后才能下訂單哦!
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項全新的數據庫革命性運動。
(1)鍵值(Key-Value)存儲數據庫
這一類數據庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對于IT系統來說的優勢在于簡單、易部署。但是如果DBA只對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
(2)列存儲數據庫
這部分數據庫通常是用來應對分布式存儲的海量數據。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:Cassandra, HBase, Riak.
(3)文檔型數據庫
該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型數據庫可以看作是鍵值數據庫的升級版,允許之間嵌套鍵值。而且文檔型數據庫比鍵值數據庫的查詢效率更高。如:CouchDB, MongoDb. 國內也有文檔型數據庫SequoiaDB,已經開源。
(4)圖形(Graph)數據庫
圖形結構的數據庫同其他行列以及剛性結構的SQL數據庫不同,它是使用靈活的圖形模型,并且能夠擴展到多個服務器上。NoSQL數據庫沒有標準的查詢語言(SQL),因此進行數據庫查詢需要制定數據模型。許多NoSQL數據庫都有REST式的數據接口或者查詢API。[2] 如: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致力于改變這一現狀。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數據庫系統所不完善的,但卻是云系統應具有的典型特點;“強一致性”主要是新應用的需求。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。