自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL與MongoDB,該如何做技術(shù)選型?

數(shù)據(jù)庫 MySQL
MySQL是一個(gè)開放源代碼的關(guān)系數(shù)據(jù)庫,這意味著它的數(shù)據(jù)被組織成表格,使您可以將數(shù)據(jù)與數(shù)據(jù)庫的其他部分相關(guān)聯(lián)。MongoDB也是開源的,但是,它是一個(gè)文檔數(shù)據(jù)庫。

引言

一般情況下,會(huì)考慮到MySQL與MongoDB如何做技術(shù)選型的時(shí)候,你一定是遇到了類似于非結(jié)構(gòu)化數(shù)據(jù)JSON的存取難題,否則大家都直接MySQL開始搞起了。

為什么要關(guān)注MongoDB呢?

下圖是DB-Engines 2023年10月數(shù)據(jù)庫的排名統(tǒng)計(jì),可以看到MongoDB總排名在第5,在Nosql數(shù)據(jù)庫中排名第1。

圖片圖片

既然要做技術(shù)選型,那就先要弄明白其中的一些區(qū)別和差異。

一、什么是MySQL?

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。

主要特點(diǎn):

1、強(qiáng)大的體系結(jié)構(gòu)

2、集群架構(gòu)的多樣性

3、完整的復(fù)制體系

4、強(qiáng)大的多行事務(wù)的支持

5、不同的插件式存儲(chǔ)引擎的支持(InnoDB)

6、第三方工具種類豐富,社區(qū)用戶活躍

二、什么是MongoDB?

MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由C++語言編寫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

MongoDB將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB文檔類似于JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。

主要特點(diǎn):

1、文檔模式,無結(jié)構(gòu)化數(shù)據(jù),靈活的數(shù)據(jù)結(jié)構(gòu),適合快速開發(fā),迭代場景

2、功能強(qiáng)大,位置索引、文本索引、TTL索引

3、副本集自動(dòng)切換,保證數(shù)據(jù)的高可靠,服務(wù)的高可用性。

4、自動(dòng)分片,存儲(chǔ)容量、服務(wù)能力橫向能力

5、適應(yīng)于物流,物聯(lián)網(wǎng)等海量數(shù)據(jù)場景

6、aggregation & mapreduce

三、MongoDB與MySQL之間的差異

3.1 相關(guān)概念及術(shù)語的差異

圖片圖片

3.2 存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的差異

MySQL 的存儲(chǔ)結(jié)構(gòu)分為5 級:表空間、段、簇、頁、行。表空間可以看做是InnoDB 存儲(chǔ)引擎邏輯結(jié)構(gòu)的最高層,所有的數(shù)據(jù)都存放在表空間中。

MySQL 不同引擎有不同的存儲(chǔ)方式,而 MongoDB 以類JSON的文檔的格式存儲(chǔ)。

圖片圖片

3.3 增刪改查操作的差異

當(dāng)從數(shù)據(jù)庫表或表組合中請求信息時(shí),MySQL 使用 結(jié)構(gòu)化查詢語言(SQL),SQL是最流行和利用最廣泛的查詢語言,大多數(shù)開發(fā)人員都有這方面的經(jīng)驗(yàn)。

相反,MongoDB 則使用非結(jié)構(gòu)化查詢語言(MQL)。要從JSON文檔數(shù)據(jù)庫請求數(shù)據(jù)或信息,首先必須指定具有結(jié)果應(yīng)匹配的屬性的文檔。

盡管 MQL 和 SQL 有相似之處,但 MQL 通常需要額外花費(fèi)精力進(jìn)行學(xué)習(xí)。

圖片圖片

3.4 事務(wù)支持的差異

當(dāng)應(yīng)用程序類型需要多行事務(wù)時(shí),關(guān)系數(shù)據(jù)庫是最合適的選擇。除了提供安全性,MySQL還實(shí)現(xiàn)了高事務(wù)處理率。而 MongoDB 僅支持單文檔事務(wù)操作,弱一致性。

圖片圖片

3.5 性能測試總結(jié)分析

  • 插入速度總結(jié):MongoDB不指定_id插入 > MySQL不指定主鍵插入 > MySQL指定主鍵插入 > MongoDB指定_id插入。
  • MongoDB在指定_id插入的時(shí)候,插入性能下降非常厲害。
  • MySQL非常穩(wěn)定,無論在指定主鍵還是在不指定主鍵插入的情況下,其效率都差不了。
  • MongoDB會(huì)充分利用內(nèi)存作為緩存。

3.6 其他主要差異

接下來,我們將介紹一些其他主要差異。

圖片圖片

四、應(yīng)用場景分析

作為文檔數(shù)據(jù)庫,由于MongoDB并不限制用戶存儲(chǔ)數(shù)據(jù)的體量和類型,因此適合大數(shù)據(jù)的應(yīng)用環(huán)境。而得益于MongoDB的水平可擴(kuò)展能力,以及與云服務(wù)的敏捷性結(jié)合,它不但能夠減少開發(fā)者的工作量,簡化業(yè)務(wù)與項(xiàng)目的擴(kuò)展流程,還能夠提供高可用性和數(shù)據(jù)的快速恢復(fù)。

不過,MongoDB在數(shù)據(jù)的可靠性、一致性、以及安全性等方面,不如MySQL。此外,當(dāng)應(yīng)用程序需要提供多行事務(wù)(如,會(huì)計(jì)和銀行系統(tǒng))時(shí),以MySQL為首的關(guān)系型數(shù)據(jù)庫提供了高事務(wù)處理率(high transaction rate)。實(shí)際上,與MySQL專注于提供事務(wù)的ACID和安全性不同的是,MongoDB更專注于提供高插入率(high insert rate)。

MongoDB 的應(yīng)用已經(jīng)滲透到各個(gè)領(lǐng)域,比如游戲、物流、電商、內(nèi)容管理、社交、物聯(lián)網(wǎng)、視頻直播等。

圖片圖片

總結(jié)

綜上所述,MySQL是一個(gè)開放源代碼的關(guān)系數(shù)據(jù)庫,這意味著它的數(shù)據(jù)被組織成表格,使您可以將數(shù)據(jù)與數(shù)據(jù)庫的其他部分相關(guān)聯(lián)。MongoDB也是開源的,但是,它是一個(gè)文檔數(shù)據(jù)庫。因此,它不關(guān)聯(lián)記錄,并且其數(shù)據(jù)模式是不固定的,從而允許具有更高插入能力的更具動(dòng)態(tài)性和靈活性的數(shù)據(jù)庫。

圖片圖片

在確定最佳數(shù)據(jù)庫系統(tǒng)之前,應(yīng)明確并確定特定業(yè)務(wù)或項(xiàng)目的優(yōu)先級。

  • MongoDB比MySQL更能處理大量數(shù)據(jù)
  • 因此,對于基于云的服務(wù),易于增長和更改的應(yīng)用程序以及數(shù)據(jù)量大的環(huán)境,它是最合適的選擇。
  • 相反,MySQL的固定和結(jié)構(gòu)化數(shù)據(jù)模式提供了比大多數(shù)數(shù)據(jù)庫更高的一致性和可靠性。
  • 使用MySQL的另一個(gè)巨大好處是,由于符合ACID的事務(wù)而具有卓越的數(shù)據(jù)安全性,是重視此功能的應(yīng)用程序的最合適選擇。

總之,MongoDB和MySQL都很優(yōu)秀,具體如何選擇,完全取決于您的具體應(yīng)用需求和系統(tǒng)特征。

責(zé)任編輯:武曉燕 來源: 架構(gòu)精進(jìn)之路
相關(guān)推薦

2017-11-02 08:54:13

數(shù)據(jù)存儲(chǔ)架構(gòu)

2024-07-25 08:52:13

2022-02-17 13:18:58

定價(jià)模型營銷AHP

2013-09-04 14:55:01

Web AppNative App技術(shù)

2019-11-06 09:39:42

云成本企業(yè)云計(jì)算

2022-03-03 12:53:40

云遷移云計(jì)算云平臺

2023-09-15 14:37:55

2015-09-17 10:24:37

IaaS應(yīng)用開發(fā)云服務(wù)

2019-09-16 17:16:29

Hadoop數(shù)據(jù)湖數(shù)據(jù)結(jié)構(gòu)

2021-08-31 10:02:20

架構(gòu)運(yùn)維技術(shù)

2014-04-15 13:16:00

Code Review

2013-11-29 10:15:48

國產(chǎn)虛擬化

2021-02-24 14:01:13

微服務(wù)開發(fā)框架

2021-04-14 09:00:00

MySQL數(shù)據(jù)庫MongoDB

2022-02-16 18:24:38

互聯(lián)網(wǎng)產(chǎn)品分析

2022-10-19 10:08:29

技術(shù)匯報(bào)研發(fā)管理

2019-10-15 14:53:23

MongoDBMySQL數(shù)據(jù)庫

2022-08-03 09:11:31

React性能優(yōu)化

2022-08-29 08:08:58

SQLOracleCPU
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號