MongoDB和Redis

1、MongoDB 是一個基於分佈式文件存儲的數據庫(關係型數據庫非)
2、NoSQL用於超大規模數據的存儲

NoSQL 
- 代表着不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
-鍵 - 值對存儲,列存儲,文檔存儲,圖形數據庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的數據
- CAP定理 
- 高性能,高可用性和可伸縮性

MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象

不適合的場景:
  a.高度事物性的系統:例如銀行或會計系統。傳統的關係型數據庫目前還是更適用於需要大量原子性複雜事務的應用程序。
  b.傳統的商業智能應用:針對特定問題的BI數據庫會對產生高度優化的查詢方式。對於此類應用,數據倉庫可能是更合適的選擇。

MongoDB 的適用場景爲:數據不是特別重要(例如通知,推送這些),數據表結構變化較爲頻繁,數據量特別大,數據的併發性特別高,數據結構比較特別(例如地圖的位置座標),這些情況下用 MongoDB , 其他情況就還是用 MySQL ,這樣組合使用就可以達到最大的效率。

MongoDB:特點
MongoDB更類似Mysql,支持字段索引、遊標操作,其優勢在於查詢功能比較強大,擅長查詢JSON數據,能存儲海量數據,但是不支持事務。

MongoDB和Redis區別:
1、內存管理機制
Redis數據全部存在內存,定期寫入磁盤,當內存不夠時,可以選擇指定的LRU算法刪除數據。

MongoDB數據存在內存,由linux系統mmap實現,當內存不夠時,只將熱點數據放入內存,其他數據存在磁盤。
支持的數據結構
Redis支持的數據結構豐富,包括hash、set、list等。
MongoDB數據結構比較單一,但是支持豐富的數據表達,索引,最類似關係型數據庫,支持的查詢語言非常豐富。

2、性能
二者性能都比較高,應該說都不會是瓶頸。

3、可靠性
二者均支持持久化。

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

5、不適用場景
需要使用複雜sql的操作
事務性系統

6、MongoDB海量數據的訪問效率提升
Redis較小數據量的性能和運算

總結:

對於高頻訪問的數據放在了Redis中,有效地降低磁盤I/O,使業務系統響應更爲敏捷,滿足了高併發下應用服務的高呑吐要求。
MongoDB 目前只支持單文檔事務,需要複雜事務支持的場景暫時不適合,海量數據存儲,服務能力水平擴展

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