1.NoSQL是什麼?web
NoSQL 是 Not Only SQL 的縮寫,意即"不只僅是SQL"的意思,泛指非關係型的數據庫。強調Key-Value Stores和文檔數據庫的優勢,而不是單純的反對RDBMS。算法
NoSQL產品是傳統關係型數據庫的功能閹割版本,經過減小用不到或不多用的功能,來大幅度提升產品性能數據庫
2.NoSQL是怎麼產生的?緩存
隨着web2.0技術的發展,其促使了物聯網和移動互聯網迅猛發展。傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了不少難以克服的問題,而非關係型的數據庫則因爲其自己的特色獲得了很是迅速的發展。安全
NoSQL數據庫的產生就是爲了解決大規模數據集合多重數據種類帶來的挑戰,尤爲是大數據應用難題。服務器
3.NoSQL的特色:網絡
4.NoSQL的基礎理論:數據結構
1. CAP理論:架構
分佈式系統中的三個重要特性:一致性(Consistency),可用性(Availability),分區容錯性(Tolerance of network Partition)併發
CAP原理是指這三個要素最多隻能同時實現兩點,不可能三者兼顧。所以在進行分佈式架構設計時,必須作出取捨。而對於分佈式數據系統,分區容忍性是基本要求,不然就失去了價值。所以設計分佈式數據系統,就是在一致性和可用性之間取一個平衡。對於大多數WEB應用,其實並不須要強一致性,所以犧牲一致性而換取高可用性,是多數分佈式數據庫產品的方向。
這個理論是由美國著名科學家,同時也是著名互聯網企業Inktomi的創始人Eric Brewer在2000年PODC(Symposium on Principles of Distributed Computing)大會上提出的,後來Seth Gilbert 和 Nancy lynch兩人也證實了CAP理論的正確性
2. BASE模型:
Basically Availble ——基本可用
Soft-state ——軟狀態/柔性事務,狀態能夠有一段時間不一樣步
Eventual Consistency ——最終一致性
3. 最終一致性理論:
5.常見NoSQL數據庫對比:
分類 | Examples舉例 | 典型應用場景 | 數據模型 | 優勢 | 缺點 |
---|---|---|---|---|---|
鍵值(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB,Memcache | 內容緩存,主要用於處理大量數據的高訪問負載,也用於一些日誌系統等等。 | Key 指向 Value 的鍵值對,一般用hash table來實現 | 查找速度快 | 數據無結構化,一般只被看成字符串或者二進制數據 |
列存儲數據庫 | Cassandra, HBase, Riak,BigTable | 分佈式的文件系統。按列存儲,針對某一列或者某幾列的查詢有很是大的IO優點 | 以列簇式存儲,將同一列數據存在一塊兒 | 查找速度快,可擴展性強,更容易進行分佈式擴展 | 功能相對侷限 |
文檔型數據庫 | CouchDB, MongoDb | 存儲相似JSON格式的內容,可對某些字段創建索引功能,是最像關係型的數據庫 | Key-Value對應的鍵值對,Value爲結構化數據 | 數據結構要求不嚴格,表結構可變,不須要像關係型數據庫同樣須要預先定義表結構 | 查詢性能不高,並且缺少統一的查詢語法。 |
圖形(Graph)數據庫 | Neo4J, InfoGrid, Infinite Graph | 社交網絡,推薦系統等。專一於構建關係圖譜,善於處理大量複雜、互鏈接、低結構化的數據,數據每每變化迅速,且查詢頻繁 | 圖結構 | 利用圖結構相關算法。好比最短路徑尋址,N度關係查找等 | 不少時候須要對整個圖作計算才能得出須要的信息,並且這種結構不太好作分佈式的集羣方案。 |