redis和mongledb

MongoDB[2]  是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。





它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
*面向集合存儲,易存儲對象類型的數據。


mongodb集羣參考
*模式自由。
*支持動態查詢。
*支持完全索引,包含內部對象。
*支持查詢。
*支持複製和故障恢復。
*使用高效的二進制數據存儲,包括大型對象(如視頻等)。
*自動處理碎片,以支持雲計算層次的擴展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
*文件存儲格式爲BSON(一種JSON的擴展)。
*可通過網絡訪問。


(1)面向集合存儲,容易存儲對象類型的數據。在MongoDB 中數據被分組存儲在集合中,集合類似RDBMS 中的表,一個集合中可以存儲無限多的文檔。
(2)模式自由,採用無模式結構存儲。在MongoDB 中集合中存儲的數據是無模式的文檔,採用無模式存儲數據是集合區別於RDBMS 中的表的一個重要特徵。
(3)支持完全索引,可以在任意屬性上建立索引,包含內部對象。MongoDB的索引和RDBMS 的索引基本一樣,可以在指定屬性、內部對象上創建索引以提高查詢的速度。除此之外,MongoDB 還提供創建基於地理空間的索引的能力。
(4)支持查詢。MongoDB 支持豐富的查詢操作,MongoDB 幾乎支持SQL中的大部分查詢。
(5)強大的聚合工具。MongoDB 除了提供豐富的查詢功能外,還提供強大的聚合工具,如count、group 等,支持使用MapReduce 完成複雜的聚合任務。
(6)支持複製和數據恢復。MongoDB 支持主從複製機制,可以實現數據備份、故障恢復、讀擴展等功能。而基於副本集的複製機制提供了自動故障恢復的功能,確保了集羣數據不會丟失。
(7)使用高效的二進制數據存儲,包括大型對象(如視頻)。使用二進制格式存儲,可以保存任何類型的數據對象。
(8)自動處理分片,以支持雲計算層次的擴展。MongoDB 支持集羣自動切分數據,對數據進行分片可以使集羣存儲更多的數據,實現更大的負載,也能保證存儲的負載均衡。
(9)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++語言的驅動程序,MongoDB 提供了當前所有主流開發語言的數據庫驅動包,開發人員使用任何一種主流開發語言都可以輕鬆編程,實現訪問MongoDB 數據庫。
(10)文件存儲格式爲BSON(JSON 的一種擴展)。BSON 是對二進制格式的JSON 的簡稱,BSON 支持文檔和數組的嵌套。
(11)可以通過網絡訪問。可以通過網絡遠程訪問MongoDB 數據庫。



Redis數據全部存在內存,定期寫入磁盤,當內存不夠時,可以選擇指定的LRU算法刪除數據。


MongoDB數據存在內存,由Linux系統mmap實現,當內存不夠時,只將熱點數據放入內存,其他數據存在磁盤。


redis支持的數據結構豐富,包括hash、set、list等。


MongoDB數據結構比較單一,但是支持豐富的數據表達,索引,最類似關係型數據庫,支持的查詢語言非常豐富。


MongoDB集羣技術比較成熟,Redis從3.0開始支持集羣。


支持多種數據結構,如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數估算)
支持持久化操作,可以進行aof及rdb數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失的手段。
支持通過Replication進行數據複製,通過master-slave機制,可以實時進行數據的同步複製,支持多級複製和增量複製,master-slave機制是Redis進行HA的重要手段。
單線程請求,所有命令串行執行,併發情況下不需要考慮數據一致性問題。
支持pub/sub消息訂閱機制,可以用來進行消息訂閱與通知。
支持簡單的事務需求,但業界使用場景很少,並不成熟。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章