天天看點

MySQL、MongoDB、Redis 資料庫之間的差別

MongoDB和Redis都是NoSQL資料庫,采用結構型資料存儲,而MySQL、oracle等則屬于傳統的關系型資料庫。

NoSQL資料庫與關系型資料庫的優缺點

關系型資料庫

優點:以完善的關系代數理論為基礎,有嚴格的标準,支援事務ACID四性,借助索引機制可以實作高效的查詢。

缺點:可擴充性差,無法較好地支援海量資料存儲,資料模型過于死闆,事務機制影響了系統的整體性能,全文搜尋功能較弱。

NoSQL資料庫

優點:資料之間無關系,易擴充。有非常高的讀寫性能,支援大量資料,性能高。有靈活的資料模型,無須事先為要存儲的資料建立字段,随時可以存儲自定義的資料格式。

缺點:複雜查詢性能不高,一般都不能實作事務的強一緻性

MongoDB和Redis的差別

概念

MongoDB 更類似 MySQL,支援字段索引、遊标操作,其優勢在于查詢功能比較強大,擅長查詢 JSON 資料,能存儲海量資料,但是不支援事務。

Redis 是一個開源(BSD許可)的,記憶體中的資料結構存儲系統,支援多種類型的資料結構,可用作資料庫,高速緩存和消息隊列代理。

差別

1、記憶體管理機制

Redis 資料全部存在記憶體,定期寫入磁盤,當記憶體不夠時,可以選擇指定的 LRU 算法删除資料。

MongoDB 資料存在記憶體,由 linux系統 mmap 實作,當記憶體不夠時,隻将熱點資料放入記憶體,其他資料存在磁盤。

2、支援的資料結構

Redis 支援的資料結構豐富,包括hash、set、list等。

MongoDB 資料結構比較單一,但是支援豐富的資料表達,索引,最類似關系型資料庫,支援的查詢語言非常豐富。

3、資料量和性能:

當實體記憶體夠用的時候,redis>mongodb>mysql

當實體記憶體不夠用的時候,redis和mongodb都會使用虛拟記憶體。

實際上如果redis要開始虛拟記憶體,那很明顯要麼加記憶體條,要麼你換個資料庫了。

但是,mongodb不一樣,隻要,業務上能保證,冷熱資料的讀寫比,使得熱資料在實體記憶體中,mmap的交換較少。

mongodb還是能夠保證性能。

4、性能

mongodb依賴記憶體,TPS較高;Redis依賴記憶體,TPS非常高。性能上Redis優于MongoDB。

5、可靠性

mongodb從1.8版本後,采用binlog方式(MySQL同樣采用該方式)支援持久化,增加可靠性;

Redis依賴快照進行持久化;AOF增強可靠性;增強可靠性的同時,影響通路性能。

可靠性上MongoDB優于Redis。

6、資料分析

mongodb内置資料分析功能(mapreduce);而Redis不支援。

7、事務支援情況

Redis 事務支援比較弱,隻能保證事務中的每個操作連續執行;mongodb不支援事務。

8、叢集

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