Nosql興起的背景:
1)web2.0興起(高交互性),傳統的關係型數據庫爲了保證“通用性”的設計而帶來 了功能複雜,性能開銷大,和價格昂貴的問題。
2)避免不必要的複雜性
3)更高的吞吐量和高併發
4)在商用硬件上的水平擴展能力
5)Nosql實現大表自動切割,更有利於支持分佈式處理
6)在性能和安全方面做了折中(有時不需要sql的很高的安全性)
7)雲計算的需求(從中心模式轉到分佈模式)
各種主流Nosql數據庫:
1)memcached數據庫:memcached數據庫的成功,帶動了Nosql運動的熱潮
特點:
1)它是一個存儲鍵值對兒的hashmap
2)高性能的分佈式內存緩存服務器,常駐內存,用於動態web應用,以減輕
數據庫負載
3)客戶端通過memcached協議與守護進程(daemon)通信
4)缺乏認證與安全控制(所以應該部署於防火牆的內部)
5 )基於libevent的事件處理機制(http://baike.haosou.com/doc/1037929- 1097798.html)
6 )不互相通信的分佈式(服務器之間不互相通信)
2)redis數據庫:是一個key-value存儲系統,和memcached類似
1 )運行速度異常快
2)數據都緩存在內存中,它是有硬盤支持的內存數據庫
3)支持Master-slave複製(主從複製)
4)支持多種數據類型 如string(字符串),list(鏈表),set(集合),zset(有序 集合)
5)支持pop/push機制,允許用戶實現消息機制
3)neo4j數據庫:它是基於關係的圖型數據庫
1)訪問協議:http/rest
2)可獨立使用,或嵌入到java程序中使用
3)圖型的節點和邊都可以帶有元數據
4)使用多種方法支持路徑搜索
5)使用鍵值和關係進行索引
6)爲讀操作進行優化
7)支持事務,企業版還支持在線備份和安全性及監控
4)Cassandra數據庫:非關係型的混合型的數據庫,類似於google的
bigtable( 基於列的)數據庫
1)由java語言開發
2 )寫操作比讀操作更快
3)分佈式,基於column的結構
4)用戶:facebook
5)Hbase數據庫:Hadoop database 是google的bigtable數據庫的開源實現
1)是分佈式的,列式的數據庫
2)Hbase利用Hadoop的HDFS作爲文件系統,利用Hadoop Mapreduce
來處理Hbase中的海量數據
3)採用分佈式架構Map/reduce
4)協議:http/rest,同時支持thirft
5)適用於大數據
6)Mongodb數據庫:
1)社區非常活躍,文檔豐富,由10gen公司商業支持,持續性有保障
2)所用語言:c++
3)保存了sql的某些優良特性(索引,查尋……)
4)協議:Custom,binary(Bson)
5)支持Master/slave複製(支持自動錯誤回覆,使用sets複製)
7)內建分片機制
8)支持javascript表達式查詢,在服務器端可以執行任意js函數
9)數據存儲採用內存到文件的映射
10)在32位操作系統上,數據庫大小限制在2.5G以內,64位系統無限制
11)空數據庫大約佔192M
12) 採用GridFS存儲大數據和元數據