1、什麼是NoSQL
NoSQL = Not only SQL (不僅是SQL),即泛指非關係型數據庫。隨着Web2.0時代誕生!NoSQL在當今大數據的環境下發展十分迅速!
NoSQL 是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一概念無疑是一種全新的思維的注入。
特點:
- NoSQL方便擴展(數據之間沒有關係,很好擴展!)
- 大數據量高性能!(Redis一秒寫8萬次,讀11萬次)
- 數據類型是多樣的!(不需要事先設計數據庫!)
傳統的EDBMS和NoSQL的區別:
傳統的EDBMS:
- 結構化組織;
- SQL;
- 數據和關係都存在單獨的表中;
- 操作操作,數據定義語言;
- 嚴格的一致性;
- 基礎的事務;
- …
NoSQL:
- 不僅僅是數據;
- 沒有固定的查詢語言;
- 鍵值對存儲,列存儲,文檔存儲,圖形數據庫(社交關係);
- 最終一致性;
- CAP定理BASE;
- 高性能、高可用、高可護;
- …
2、NoSQL的四大分類
分類 | 栗子🌰 | 應用場景 | 數據模型 | 優點 | 缺點 |
---|---|---|---|---|---|
鍵值對數據庫 | Redis、Oracle DBD | 內容緩存,主要用於處理大量數據的高訪問負載 | Key-Value | 查找速度快 | 數據無結構化,通常只被當作字符串或者二進制數據 |
文檔型數據庫 | MongoDb、CouthDB | Web應用 | Key-Value,Value爲結構化數據 | 數據結構要求不嚴格,表結構可變,不需要預先定義表結構 | 查詢性能不高,缺乏統一查詢語句 |
列存儲數據庫 | HBase、Cassandra | 分佈式的文件系統 | 列簇存儲 | 查找速度快、可擴展性強、更容易分佈式擴展 | 功能相對侷限 |
圖形數據庫 | Neo4J | 社交網絡、推薦系統 | 圖結構 | 可利用圖結構相關算法 | 很多時候需要對整個圖進行計算,而且不容易實現分佈式集羣 |