為什麼出現NoSQL?
随着網際網路的發展,當我們把一台伺服器一台伺服器變成兩台伺服器,當我們開始建立資料備份,當我們需要加一個緩沖層,來調整所有的查詢,投入更多的硬體。
最後,需要将資料切分多個叢集上,并重構大量的應用邏輯以适應這種切分。不久之後,你就會發現被自己數月前的設計資料結構限制住了。
随着web2.0的興起,關系型資料庫本身無法克服的缺陷越來越明顯,主要表現為如下幾點。
1、對資料高并發讀寫的需求
2、對海量資料的高效率存儲和通路的需求。
3、對資料庫的高可擴充性和高可用性的需求。
4、資料庫事務一緻性需求。
5、資料庫寫實性和讀寫時性需求。
6、對複雜SQL的查詢,特别是對關聯查詢的需求。
NoSQL是Notonly SQL的縮寫,NoSQL不使用SQL作為查詢語言。其資料存儲可以不需要固定的表格模式,也經常避免使用SQL的join操作,一般有水準可擴充性的特征。
NoSQL曆史?
1、NoSQL一詞最早出現在1998年,是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關系資料庫。
2、2009年,Last.fm的Johan Oskarsson發起了一次關于分布式開源資料庫的讨論,來自Rackspace的Eric Evans再次提出了NoSQL概念,這時的NoSQL主要是指非關系型、分布式、不提供資料庫設計模式。
3、2009年趨勢高漲,被定為“非關系型的”資料存儲,相對于關系型資料庫運用,這一概念無疑是一種全新思維的注入。
SQL和NoSql的差別?
NoSQL具有如下幾點
優點:
1、高并發讀寫
2、海量資料存儲
3、高可擴充性
4、高可用性
缺點:
5、缺乏事務一緻性
6、缺乏讀寫實時性
7、不支援複雜查詢
NoSQL資料庫類型
Key-value:key指Value的鍵值對,通常用hash table來實作
列式資料庫:同一列資料存在一起
文檔型資料庫:Key-Value對應的鍵值對,Value為結構化資料産品:MongoDB
圖結構資料庫:以“圖”為基本存儲模型,産品:Neo4j,InfoGrid,InfiniteGraph
NoSQL資料庫開源軟體
1、Membase軟體
2、Hypertable
3、ApacheCassandra
4、MongoDB
在這裡我們用的是MongoDB,下篇MongoDB簡介,以及執行個體操作。