MySQL
MySQL 是一個關系型數據庫。
MySQL在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。
MySQL 是一種關聯數據庫管理系統, 關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL 所使用的 SQL 語言是用於訪問數據庫的最常用標准化語言。其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
優點
1、體積小、速度快、總體擁有成本低,開源,提供的接口支持多種語言連接操作。
2、支持多種操作系統。
3、MySQL 的核心程序采用完全的多線程編程。線程是輕量級的進程,它可以靈活地為用戶提供服務,而不過多的系統資源。用多線程和C語言實現的MySQL 能很容易充分利用CPU。
4、 MySQL 有一個非常靈活而且安全的權限和口令系統。當客戶與MySQL 服務器連接時,他們之間所有的口令傳送被加密,而且MySQL 支持主機認證。
5.、MySQL 能夠提供很多不同的使用者界面,包括命令行客戶端操作,網頁瀏覽器,以及各式各樣的程序語言界面,例如 C++,Perl,Java,PHP,以及Python。你可以使用事先包裝好的客戶端,或者干脆自己寫一個合適的應用程序。MySQL可用於 Unix,Windows,以及OS/2等平台,因此它可以用在個人電腦或者是服務器上。
缺點
1、不支持熱備份。
2、MySQL不支持自定義數據類型。
3、MySQL最大的缺點是其安全系統,主要是復雜而非標准,另外只有到調用mysqladmin來重讀用戶權限時才發生改變。
4、MySQL對存儲過程和觸發器支持不夠良好。
5、盡管 MySQL 理論上仍是開源產品,也有人抱怨它誕生之后更新緩慢。然而,應該注意到有一些基於 MySQL 並完整集成的數據庫(如 MariaDB),在標准的 MySQL 基礎上帶來了額外價值。
6、MySQL對XML支持不夠良好。
MongoDB 和 Redis 都是 NoSQL(非關系型的數據庫),采用結構型數據存儲。
二者在使用場景中,存在一定的區別, 這也主要由於二者在內存映射的處理過程,持久化的處理方法不同。
MongoDB建議集群部署,更多的考慮到集群方案,Redis更偏重於進程順序寫入,雖然支持集群,也僅限於主從模式。
Redis
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API。
它通常被稱為數據結構服務器,因為值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。
優點:
1、讀寫性能優異。2、支持數據持久化,支持 AOF 和 RDB 兩種持久化方式。
3、支持主從復制,主機會自動將數據同步到從機,可以進行讀寫分離。
4、數據結構豐富:數據結構豐富:支持 string、hash、set、sortedset、list 等數據結構。
4、數據結構豐富:數據結構豐富:支持 string、hash、set、sortedset、list 等數據結構。
缺點:
1、Redis 不具備自動容錯和恢復功能,主機從機的宕機都會導致前端部分讀寫請求失敗,需要等待機器重啟或者手動切換前端的 IP 才能恢復。
2、 主機宕機,宕機前有部分數據未能及時同步到從機,切換 IP 后還會引入數據不一致的問題,降低了系統的可用性。
3、Redis 的主從復制采用全量復制,復制過程中主機會 fork 出一個子進程對內存做一份快照, 並將子進程的內存快照保存為文件發送給從機,這一過程需要確保主機有足夠多的空余內存。若快照文件較大,對集群的服務能力會產生較大的影響,而且復制過程是在從機新加入 集群或者從機和主機網絡斷開重連時都會進行,也就是網絡波動都會造成主機和從機間的一 次全量的數據復制,這對實際的系統運營造成了不小的麻煩。
4、 Redis 較難支持在線擴容,在集群容量達到上限時在線擴容會變得很復雜。為避免這一問題,運維人員在系統上線時必須確保有足夠的空間,這對資源造成了很大的浪費。
MongoDB
MongoDB 是由C++語言編寫的,是一個基於分布式文件存儲的開源數據庫系統。
在高負載的情況下,添加更多的節點,可以保證服務器性能。
MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。
優點:
1、弱一致性(最終一致),更能保證用戶的訪問速度。
2、文檔結構的存儲方式,能夠更便捷的獲取數。
3、內置 GridFS,高效存儲二進制大對象 (比如照片和視頻)。
4、內置Sharding。提供基於Range的Auto Sharding機制:一個collection可按照記錄的范圍,分成若干個段,切分到不同的Shard上。
5、第三方支持豐富。(這是與其他的NoSQL相比,MongoDB也具有的優勢)。
6、性能優越:在使用場合下,千萬級別的文檔對象,近10G的數據,對有索引的ID的查詢不會比mysql慢,而對非索引字段的查詢,則是全面勝出。
缺點:
1、mongodb不支持事務操作。所以事務要求嚴格的系統(如果銀行系統)肯定不能用它。
2、mongodb占用空間過大。
3、MongoDB沒有如MySQL那樣成熟的維護工具,這對於開發和IT運營都是個值得注意的地方。
3、MongoDB沒有如MySQL那樣成熟的維護工具,這對於開發和IT運營都是個值得注意的地方。