MySQL、Redis 和 MongoDB 的優缺點

MySQL前端

MySQL 是一個關係型數據庫。
MySQL在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件之一。
MySQL 是一種關聯數據庫管理系統, 關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。
MySQL 所使用的 SQL 語言是用於訪問數據庫的最經常使用標準化語言。其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。

 

優勢mysql

一、體積小、速度快、整體擁有成本低,開源,提供的接口支持多種語言鏈接操做。
二、支持多種操做系統。
三、MySQL 的核心程序採用徹底的多線程編程。線程是輕量級的進程,它能夠靈活地爲用戶提供服務,而不過多的系統資源。用多線程和C語言實現的MySQL 能很容易充分利用CPU。 
四、 MySQL 有一個很是靈活並且安全的權限和口令系統。當客戶與MySQL 服務器鏈接時,他們之間全部的口令傳送被加密,並且MySQL 支持主機認證。
5.、MySQL 可以提供不少不一樣的使用者界面,包括命令行客戶端操做,網頁瀏覽器,以及各式各樣的程序語言界面,例如 C++,Perl,Java,PHP,以及Python。你可使用事先包裝好的客戶端,或者乾脆本身寫一個合適的應用程序。MySQL可用於 Unix,Windows,以及OS/2等平臺,所以它能夠用在我的電腦或者是服務器上。

 

缺點 sql

一、不支持熱備份。mongodb

二、MySQL不支持自定義數據類型。數據庫

三、MySQL最大的缺點是其安全系統,主要是複雜而非標準,另外只有到調用mysqladmin來重讀用戶權限時才發生改變。編程

四、MySQL對存儲過程和觸發器支持不夠良好。數組

五、儘管 MySQL 理論上還是開源產品,也有人抱怨它誕生以後更新緩慢。然而,應該注意到有一些基於 MySQL 並完整集成的數據庫(如 MariaDB),在標準的 MySQL 基礎上帶來了額外價值。瀏覽器

六、MySQL對XML支持不夠良好。安全

 

 

MongoDB 和 Redis 都是 NoSQL(非關係型的數據庫),採用結構型數據存儲。
兩者在使用場景中,存在必定的區別, 這也主要因爲兩者在內存映射的處理過程,持久化的處理方法不一樣。
MongoDB建議集羣部署,更多的考慮到集羣方案,Redis更偏重於進程順序寫入,雖然支持集羣,也僅限於主從模式。

 

Redis服務器

 

 

Redis是一個開源的使用ANSI C語言編寫、遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。
它一般被稱爲數據結構服務器,由於值(value)能夠是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。
 

 

優勢:

一、讀寫性能優異。
二、支持數據持久化,支持 AOF 和 RDB 兩種持久化方式。
三、支持主從複製,主機會自動將數據同步到從機,能夠進行讀寫分離。
四、數據結構豐富:數據結構豐富:支持 string、hash、set、sortedset、list 等數據結構。
 

缺點:

一、Redis 不具有自動容錯和恢復功能,主機從機的宕機都會致使前端部分讀寫請求失敗,須要等待機器重啓或者手動切換前端的 IP 才能恢復。
二、 主機宕機,宕機前有部分數據未能及時同步到從機,切換 IP 後還會引入數據不一致的問題,下降了系統的可用性。
三、Redis 的主從複製採用全量複製,複製過程當中主機會 fork 出一個子進程對內存作一份快照, 並將子進程的內存快照保存爲文件發送給從機,這一過程須要確保主機有足夠多的空餘內存。若快照文件較大,對集羣的服務能力會產生較大的影響,並且複製過程是在從機新加入 集羣或者從機和主機網絡斷開重連時都會進行,也就是網絡波動都會形成主機和從機間的一 次全量的數據複製,這對實際的系統運營形成了不小的麻煩。
四、 Redis 較難支持在線擴容,在集羣容量達到上限時在線擴容會變得很複雜。爲避免這一問題,運維人員在系統上線時必須確保有足夠的空間,這對資源形成了很大的浪費。

 

 

MongoDB

 

 

MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。
MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。

 

 

優勢:

一、弱一致性(最終一致),更能保證用戶的訪問速度。

二、文檔結構的存儲方式,可以更便捷的獲取數。
三、內置 GridFS,高效存儲二進制大對象 (好比照片和視頻)。

四、內置Sharding。提供基於Range的Auto Sharding機制:一個collection可按照記錄的範圍,分紅若干個段,切分到不一樣的Shard上。

五、第三方支持豐富。(這是與其餘的NoSQL相比,MongoDB也具備的優點)。

六、性能優越:在使用場合下,千萬級別的文檔對象,近10G的數據,對有索引的ID的查詢不會比mysql慢,而對非索引字段的查詢,則是全面勝出。 

 

缺點: 

一、mongodb不支持事務操做。因此事務要求嚴格的系統(若是銀行系統)確定不能用它。
二、mongodb佔用空間過大。 三、MongoDB沒有如MySQL那樣成熟的維護工具,這對於開發和IT運營都是個值得注意的地方。
相關文章
相關標籤/搜索