一、關系型數據庫:MySQL
二、非關系型的數據庫:MongoDB 和 Redis
三、Mysql MongoDB Redis 的適用場景
一、MySQL
優點
1、體積小、速度快、總體擁有成本低,開源,提供的接口支持多種語言連接操作。
缺點
1、不支持熱備份。
2、MySQL不支持自定義數據類型。
3、MySQL最大的缺點是其安全系統,主要是復雜而非標准,另外只有到調用mysqladmin來重讀用戶權限時才發生改變。
4、MySQL對存儲過程和觸發器支持不夠良好。
5、盡管 MySQL 理論上仍是開源產品,也有人抱怨它誕生之后更新緩慢。然而,應該注意到有一些基於 MySQL 並完整集成的數據庫(如 MariaDB),在標准的 MySQL 基礎上帶來了額外價值。
6、MySQL對XML支持不夠良好。
二、MongoDB 和 Redis
MongoDB 和 Redis 都是 NoSQL(非關系型的數據庫),采用結構型數據存儲。
1.Redis
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API。優點:
1、讀寫性能優異。2、支持數據持久化,支持 AOF 和 RDB 兩種持久化方式。
4、數據結構豐富:數據結構豐富:支持 string、hash、set、sortedset、list 等數據結構。
缺點:
1、Redis 不具備自動容錯和恢復功能,主機從機的宕機都會導致前端部分讀寫請求失敗,需要等待機器重啟或者手動切換前端的 IP 才能恢復。
2.MongoDB
MongoDB 是由C++語言編寫的,是一個基於分布式文件存儲的開源數據庫系統。
優點:
1、弱一致性(最終一致),更能保證用戶的訪問速度。
2、文檔結構的存儲方式,能夠更便捷的獲取數。
3、內置 GridFS,高效存儲二進制大對象 (比如照片和視頻)。
4、內置Sharding。提供基於Range的Auto Sharding機制:一個collection可按照記錄的范圍,分成若干個段,切分到不同的Shard上。
5、第三方支持豐富。(這是與其他的NoSQL相比,MongoDB也具有的優勢)。
6、性能優越:在使用場合下,千萬級別的文檔對象,近10G的數據,對有索引的ID的查詢不會比mysql慢,而對非索引字段的查詢,則是全面勝出。
缺點:
1、mongodb不支持事務操作。所以事務要求嚴格的系統(如果銀行系統)肯定不能用它。3、MongoDB沒有如MySQL那樣成熟的維護工具,這對於開發和IT運營都是個值得注意的地方。
Mysql 或 postgresql 、 mssql 關系型數據庫,作為最終的數據存儲(穩定)
MongoDB 可以作為一個中間數據緩存層組合出一個必要的數據實體(靈活的 json 結構可以組合出復雜數據類型,又可以復制多台服務器),讀取速度也快,高並發構建主從服務器無壓力。
Redis 用於統計列表排序等環節 (對 redis 理解不深,只知道是內存數據庫讀寫操作速度快)