NoSQL
c96c7c4617c104cf64449bc13c8ad751.png
NoSQL 有時也稱作 Not Only SQL 的簡寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。
兩者存在許多顯著的不同點,其中最重要的是 NoSQ L不使用 SQL 作為查詢語言。其數據存儲可以不需要固定的表格模式,也經常會避免使用 SQL 的JOIN操作,一般有水平可擴展性的特徵。NOSQL 的實現具有二個特徵: 使用硬碟, 或者把隨機存儲器作存儲載體。
 
發展歷史
NoSQL 一詞最早出現於 1998 年,是 Carlo Strozzi 開發的一個輕量、開源、不提供SQL功能的關係資料庫。
2009 年, Last.fm 的 Johan Oskarsson 發起了一次關於分布式開源資料庫的討論,來自 Rackspace 的 Eric  Evans再次提出了NoSQL的概念,這時的NoSQL主要指非關係型、分布式、不提供ACID的資料庫設計模式。
2009 年在亞特蘭大舉行的 "no:sql(east)" 討論會是一個里程碑,其口號是 "select fun, profit from real_world where relational=false;" 。因此,對 NoSQL 最普遍的解釋是「非關聯型的」,強調 Key-Value Stores 和文檔資料庫的優點,而不是單純的反對 RDBMS。
 
特點
當代典型的關係型資料庫在一些數據敏感的應用中表現了糟糕的性能,例如為巨量文檔建立索引、高流量網站的網頁服務,以及發送流式媒體 。關係型資料庫的典型實現主要被調整用於執行規模小而讀寫頻繁,或者大批量極少寫訪問的事務。
NoSQL 的結構通常提供弱一致性的保證,如最終一致性,或交易僅限於單個的數據項。不過,有些系統,提供完整的 ACID 保證在某些情況​​下,增加了補充中間件層(例如,CloudTPS)。有兩個成熟的系統有提供快照隔離的列存儲:像是 Google 基於過濾器系統的 BigTable,和滑鐵盧大學發展的 HBase。這些系統,自主開發,使用類似的概念來實現多行(multi-row)分散式 ACID 交易的快照隔離(snapshot isolation)保證為基礎列儲存,無需額外的資料管理開銷,中間件系統部署或維護介紹了中間件層。
少數 NoSQL 系統部署了分布式結構,通常使用分散式雜湊表(DHT)將數據以冗餘方式保存在多台伺服器上。依此,擴充系統時候添加伺服器更容易,並且擴大了對伺服器失效的承受能程度。