了解常用數據庫MySQL、Oracle、MongoDB


本文由 簡悅 SimpRead 轉碼, 原文地址 blog.csdn.net

注:轉載文章

什么是數據庫

簡單的說,數據庫(英文 Dtabase)就是一個存放數據的倉庫,這個倉庫是按照一定的數據結果(數據結構是指數據的組織形式或數據之間的聯系)來組織、存儲的、我們可以通過數據庫提供的多種方法來管理數據庫里的數據更簡單的形象理解,數據庫和我們生活中存放雜物的倉庫性質一樣,區別只是存放的東西不同。
早期比較流行的數據庫模型有三種,分別為層次式數據庫網絡式數據庫關系型數據庫。而在當今的互聯網中,最常用的數據庫模型主要是兩種,即關系型數據庫非關系型數據庫
常用的數據庫
常用的數據庫有 MySQL、Oracle、Mongodb。那么用戶想要選擇一個數據庫,什么樣的數據庫才是最能滿足用戶自身需求的呢?


MySQL 數據庫

定位:開源、多平台、關系型數據庫。目前使用最廣泛、流行度最高的的開源數據庫。
特點:支持事務,符合關系型數據庫原理,符合 ACID,支持多數 SQL 規范,以二維表方式組織數據,有插件是存儲引擎,支持多種存儲引擎格式
使用:使用標准的 SQL 語句進行數據庫管理,簡單 SQL 語句的並發和性能較好,對視圖、存儲過程、函數、觸發器等支持的不是太好
監控:在命令行界面有一些常用的命令顯示狀態和性能,在圖形界面方面,有比較多的開源監控工具來監控和記錄數據庫的狀態,比如 zabbix,nagios,cacti,lepus 等
備份:邏輯備份 mysqldump/mysqldumper ,物理備份 用 xtrabackup 等工具進行備份;
高可用:MySQL 高可用有多種方案,官方有基礎的 master-slave 主從復制,新版本的 innodb cluster,第三方的有 MHA 等高可用方案;
擴展:MySQL 水平拆分,可以通過水平拆分 proxy 中間進行邏輯映射和拆分,擴大 MySQL 數據庫的並發能力和吞吐量。
適用場景
默認的 innodb 存儲引擎,支持高並發,簡單的絕大部分 OLTP 場景;
Tokudb 存儲引擎,使用高並發 insert 的場景;
Inforbright 存儲引擎,可以進行列壓縮和 OLAP 統計查詢場景;


Oracle 數據庫

定位: 商業、多平台、關系型數據庫;功能最強大、最復雜、市場占比最高的商業數據庫;
功能:支持事務,符合關系型數據庫原理,符合 ACID,支持多數 SQL 規范,以二維表方式組織數據

部署:Oracle 單實例數據庫部署相對容易,但 Oracle RAC 集群環境,部署的步驟和依賴條件都比較多;

使用:通常使用命令行工具,進行各種數據庫的管理,通常也可以用 shell 腳本和 python 腳本提高 Oracle 數據庫管理效率;各種管理功能,都比較強大;

監控:Oracle 官方有比較全面的監控工具,常用的第三方監控平台,如 zabbix,cacti,lepus 等都有對 Oracle 數據庫的各項指標的完善監控;

備份:支持冷備份和熱備份,可以用 exp/imp , expdp/impdp 等進行邏輯備份和恢復,可以使用強大的 RMAN 工具進行專業的物理熱備份和恢復;

高可用:Oracle 數據庫的高可用架構,可以用第三方雙機熱備軟件,結合 Oracle 單實例實現;可以使用 Oracle Dataguard,實現 master 和 standby 的備份;可以使用 Oracle RAC 集群實現實例級別的高可用和負載均衡,使用 ASM 實現存儲級別的高可用;
擴展:由於 Oracle 集群采用共享存儲的方式,一般只能通過垂直硬件升級進行升級;適用場景:絕大多數 OLTP 場景,部分 OLAP
選擇注意:Oracle 從架構到運維,可以說是最難的數據庫,學習和使用難度較高。


Mongodb 數據庫

定位:開源、多平台、文檔型 nosql 數據庫;非常主流的文檔型 nosql 數據庫,“最像關系型數據庫”,定位於 “靈活” 的 nosql 數據庫
功能:數據文件存儲格式為 BSON,模式自由,整體架構與關系型數據庫有對應關系,具有較好的高可用性和伸縮性,有插件式存儲引擎,新版本默認是 writedtiger 存儲引擎;

部署: 部署比較簡答,下載軟件,設置好配置文件即可啟動服務;

使用:不支持 SQL 語句,使用與 SQL 對應的 json 方式管理數據庫;

監控:有比較豐富的監控和性能命令,官方有比較完善的圖形監控系統,但需要購買;

備份:支持冷備份和熱備份,可以使用 mongoexport/mongimport 進行邏輯備份,也可以使用基於 oplog 的 mongodump/mongorestore 物理熱備份;

高可用:MongoDB master-slave 主從復制:在 master 節點上加 --master 參數,從數據庫加 -slave 和 - source 參數,就可以實現同步,這種目前不建議;

ReplicaSets 復制集,在 mongodb 1.6 之后,開發了新的 replicaset,着呢家了故障自動切換和自動修復成員節點,各個 DB 將數據一致,建議使用這種方式;可以測試讀寫分離和故障轉移;

擴展:mongodb 海量數據水平拆分,將數據分別存儲在 sharding 各個節點上,構建出分布式集群。Sharding 架構由 底層多個 mongodb Shared Server,config 水平拆分配置庫 config server,前端路由 route process,三部分構成。Sharding 集群底層可以是 mongodb 單實例,也可以高可用的 replicaSet 復制集。
網站后台數據庫:mongodb 非常適合實話實說插入、更新與查詢,並可以實時復制和高伸縮性,適合更新迭代快、需求變更多、以對象為主的網站應用;
小文件系統:對於 json 文件,二進制數據,適合用 mongodb 進行存儲和查詢;
日志分析系統:對於數據量大的日志文件,IM 會話消息記錄,適合用 mongodb 來保存和查詢;
緩存系統:mongodb 數據庫也會使用大量的內存,合理的設計,也可以作為緩存系統使用;不過目前緩存系統使用更多的方案是 memcached 和 redis。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM