MySQL MongoDB Redis 數據庫之間的區別

轉自 https://blog.csdn.net/CatStarXcode/article/details/79513425

MongoDB

它是一個內存數據庫,數據都是放在內存裏面的。
對數據的操作大部分都在內存中,但 MongoDB 並不是單純的內存數據庫。
MongoDB 是由 C++ 語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。
在高負載的情況下,添加更多的節點,可以保證服務器性能。
MongoDB 旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。

MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組

  • 優點
    1.性能優越:快速!在適量級的內存的 MongoDB 的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快,
    2.高擴展:第三方支持豐富(這是與其他的 No SQL 相比,MongoDB 也具有的優勢)
    3.自身的 Failover 機制!
    4.弱一致性(最終一致),更能保證用戶的訪問速度
    5.文檔結構的存儲方式,能夠更便捷的獲取數據: json 的存儲格式
    6.支持大容量的存儲,內置 GridFS
    7.內置 Sharding

  • 缺點
    主要是無事物機制!
    MongoDB 不支持事務操作(最主要的缺點)
    MongoDB 佔用空間過大
    MongoDB 沒有如 MySQL 那樣成熟的維護工具,這對於開發和IT運營都是個值得注意的地方

Redis

它就是一個不折不扣的內存數據庫。
持久化方式:
Redis 所有數據都是放在內存中的,持久化是使用 RDB 方式或者 aof 方式。

MySQL

無論數據還是索引都存放在硬盤中。到要使用的時候才交換到內存中。能夠處理遠超過內存總量的數據。
關係型數據庫。
在不同的引擎上有不同 的存儲方式。
查詢語句是使用傳統的 SQL 語句,擁有較爲成熟的體系,成熟度很高。
開源數據庫的份額在不斷增加,MySQL 的份額頁在持續增長。

缺點就是在海量數據處理的時候效率會顯著變慢。

數據量和性能的比較

當物理內存夠用的時候,Redis > MongoDB > MySQL
當物理內存不夠用的時候,Redis 和 MongoDB 都會使用虛擬內存。
實際上如果Redis要開始虛擬內存,那很明顯要麼加內存條,要麼你就該換個數據庫了。
但是,MongoDB 不一樣,只要,業務上能保證,冷熱數據的讀寫比,使得熱數據在物理內存中,mmap 的交換較少。
MongoDB 還是能夠保證性能。有人使用 MongoDB 存儲了上T的數據。
MySQL,MySQL根本就不需要擔心數據量跟內存下的關係。不過,內存的量跟熱數據的關係會極大地影響性能表現。
當物理內存和虛擬內存都不夠用的時候,估計除了 MySQL 你沒什麼好選擇了。
其實,從數據存儲原理來看,我更傾向於將 MongoDB 歸類爲硬盤數據庫,但是使用了 mmap 作爲加速的手段而已

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