NoSQL是設計互聯網規模數據庫解決方案的一種新方式.它並不是一個產品或一項技術,而是定義一套數據庫技術的術語,它並不以傳統的RDBMS原則爲基礎.數據庫
RDBMS的概念源自E.F.Codd發表於1970年的標題爲"用於大型共享數據銀行的數據關係模型"的白皮書.
用於查詢RDBMS系統的語言就是SQL(結構化查詢語言).
RDBMS系統很是適合於保存在列和行中的結構化數據,可使用SQL查詢這些數據.
RDBMS系統基於ACID事物的概念.ACID表明原子性(Atomic)、一致性(Consistent)、隔離性(Isolated)、持久性(Durable).其中,服務器
原子性意味着要麼一個事物的全部變動都徹底被應用,要麼全都不被應用.網絡
一致性意味着在應用事物以後數據處於一致性狀態.這意味着在一個事物被提交以後,提取特定數據的查詢將獲得相同的結果.架構
隔離性意味着被應用到相同數據集的事物都是彼此獨立的.所以,一個事物將不會干擾另外一個事物.分佈式
持久性意味着變動在系統中是永久性的,而且即便出現任何故障也不會丟失.大數據
NoSQL是用於指代非關係型數據庫的一個術語.所以它包含了大多數不以常規的RDBMS原則爲基礎的數據存儲,而且被用於處理互聯網規模的大數據集.
NoSQL數據庫是從處理大數據的須要中發展而來的;傳統的RDBMS技術沒法提供合適的解決方案.
適合NoSQL數據庫的大數據使用場景的一些示例:設計
社交網絡圖開發
搜索和檢索產品
Eric Brewer於2000年提出了CAP定理(布魯爾定理).這是一個重要的概念,處理分佈式數據庫的開發人員和架構師須要很好地理解它.
該定理規定,在設計一個分佈式環境中的應用程序時,存在三種基本需求,分別是一致性、可用性以及分區容錯性.基礎
一致性意味着在修改數據的任何操做被執行以後,數據仍舊保持一致,而且全部訪問該應用程序的用戶或客戶端都要獲得相同的更新後的數據.
可用性意味着系統老是保持可用.
分區容錯性意味着,即便系統被劃分紅沒法彼此通訊的幾組服務器,也要持續地正常運行.
CAP定理宣稱,在任什麼時候間點,一個分佈式系統都只能知足上面三個保障中的兩個.
Eric Brewer提出了BASE這個縮略語.BASE可被解釋爲:
基本可用 意味着根據CAP定理,系統將是可用的.
軟狀態代表,即使沒有爲系統提供任何輸入,其狀態也將隨時間變化而變化
最終一致性意味着從長遠來看,系統將會達到一致性.
高拓展性:縱向拓展方法在事物率和快速響應需求增長時會失敗.與此相反,新一代的NoSQL數據庫旨在橫向拓展.
可維護性和管理運營:NoSQL數據庫主要旨在處理自動修復、分佈式數據以及較簡單的數據模型,這會致使低水平的可維護性和管理運營.
低成本:NoSQL數據庫的目的一般在於使用一個廉價服務器的羣集,以便讓用戶能夠花費較低的成原本存儲和處理更多的數據.
靈活的數據模型:能夠處理任何類型的數據.
成熟度
支持度
有限的查詢功能
管理運營
專業知識