Redis學習筆記-NoSql

、NoSQL = Not Only SQL:不僅僅是SQL。
泛指非關係型的數據庫、是對不同於傳統的關係型數據庫的數據庫管理系統的統稱。
NoSQL用於超大規模數據的存儲。這些類型的數據存儲不需要固定的模式,無需多餘操作就可以橫向擴展。

、RDBMS(關係型數據庫系統) VS NoSQL

RDBMS
- 高度組織化結構化數據
- 結構化查詢語言(SQL) (SQL)
- 數據和關係都存儲在單獨的表中。
- 數據操縱語言,數據定義語言
- 嚴格的一致性
- 基礎事務

NoSQL
- 代表着不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
-鍵 - 值對存儲,列存儲,文檔存儲,圖形數據庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的數據
- CAP定理
- 高性能,高可用性和可伸縮性

、NoSQL數據庫的適用情況:
1、數據模型比較簡單;
2、需要靈活性更強的IT系統;
3、對數據庫性能要求較高;
4、不需要高度的數據一致性;
5、對於給定key,比較容易映射覆雜值的環境。

、NoSQL特徵:
1、不需要預定義模式:不需要事先定義數據模式,預定義表結構。數據中的每條記錄都可能有不同的屬性和格式。當插入數據時,並不需要預先定義它們的模式。
2、無共享架構:相對於將所有數據存儲的存儲區域網絡中的全共享架構。NoSQL往往將數據劃分後存儲在各個本地服務器上。因爲從本地磁盤讀取數據的性能往往好於通過網絡傳輸讀取數據的性能,從而提高了系統的性能。
3、彈性可擴展:可以在系統運行的時候,動態增加或者刪除結點。不需要停機維護,數據可以自動遷移。
4、分區:相對於將數據存放於同一個節點,NoSQL數據庫需要將數據進行分區,將記錄分散在多個節點上面。並且通常分區的同時還要做複製。這樣既提高了並行性能,又能保證沒有單點失效的問題。
5、異步複製:和RAID存儲系統不同的是,NoSQL中的複製,往往是基於日誌的異步複製。這樣,數據就可以儘快地寫入一個節點,而不會被網絡傳輸引起遲延。缺點是並不總是能保證一致性,這樣的方式在出現故障的時候,可能會丟失少量的數據。
6、BASE:相對於事務嚴格的ACID特性,NoSQL數據庫保證的是BASE特性。BASE是最終一致性和軟事務。

、NoSQL的優點/缺點
優點:
    - 高可擴展性
    - 分佈式計算
    - 低成本
    - 架構的靈活性,半結構化數據
    - 沒有複雜的關係 

缺點:

    - 沒有標準化
    - 有限的查詢功能(到目前爲止)
    - 最終一致是不直觀的程序

、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數據庫的四大分類的比較

nosql