這裏介紹一下現在常常使用的NoSQL以及各自的特色。javascript
NoSQL是2009年忽然發展起來的。現在趨於穩定的狀態,市場上也有了一些比較成熟的產品。java
傳統的關係型數據庫爲了保證通用性的設計而帶來了功能複雜、性能開銷大、價格昂貴等問題,在NoSQL中都或多或少的獲得瞭解決。NoSQL避免了一些不需要的複雜性,有更高的吞吐量。具備高併發的特色。也具有在商用硬件上的水平拓展能力。web
不只如此,NoSQL也實現了大表的本身主動切割功能,可以更好的支持分佈式處理,在性能和可靠性之間折中,這是知足現在雲計算中提到的從中心模式到分佈模式的需求的。這也是NoSQL這幾年特別火熱的緣由。redis
如下介紹一下現在流行的NoSQL各自的特色:算法
第一個NoSQL數據庫,其本質是一個存儲鍵值對的hashmap,是一個高性能的分佈式內存緩存server,用於動態web應用以減輕數據庫負載。mongodb
client經過memcached協議與守護進程通訊。但是缺少認證以及安全管制,是一個內存存儲方式的不互相通訊的分佈式數據庫。數據庫
也是一個鍵值對存儲的數據庫,和memcached類型,但是相比memcached而言,redis的數據是也是存儲在內存中的,也有硬盤存儲支持的內存數據庫。也就是說,不會由於server從新啓動而丟失數據。其value數據類型豐富,查詢速度也很是快。而且贊成用戶實現消息機制。api
一款基於關係的圖形數據庫,數據都是節點。數據之間的關係都是依靠邊來表示的。使用HTTP REST協議,可獨立使用或者嵌入到java程序中。使用多種算法支持路徑搜索,使用鍵值和關係進行索引。緩存
其對讀操做進行了優化, 查詢速度比關係型數據庫快多了,很是重要的一點是,它可以經過對java api的使用來支持事務。安全
neo4j的企業版還支持在線備份,具備高級監控和高可靠性。
一款由Facebook開源的使用java語言的混合型非關係數據庫。類似於Google的bigle。
該數據庫的寫操做比讀操做更快。基於column的結構化,具備高拓展性。
該數據庫是Google公司bigle的開源實現。是一款分佈式的。面向列的開源數據庫。利用hadoop hdfs做爲其文件存儲系統,利用hadoop mapreduce來處理海量數據。採用了分佈式架構map reduce。
mongoDB可以說是現在NoSQL的領頭羊。它的社區活躍,文檔豐富,有10gen商業支持。持續性有保障。
mongoDB是由C++編寫的,它很是特別的是保留了一些SQL的友好特性,比方查詢和索引。它支持javascript表達式查詢,可以在server端運行隨意的javascript函數。因此其查詢功能不輸於關係型數據庫。
該數據庫在數據存儲時採用內存到文件映射的方式,對性能的關注超過對功能的需求,而且其內置分片機制,下降了需喲手動分片的繁瑣。
很是多NoSQL都是讀快寫慢,有的是讀慢寫快。而mongoDB讀寫性能很是均衡,都很是快。