經典技術面試題(八股文) Mysql和MongoDB和MySQL的區別是啥? 說說各自的差異和共同點

字號+ 編輯: 种花家 修訂: 听风就是我 來源: 网络转载 2023-09-11 我要說兩句(0)

這個文章值得一讀, 因爲相關的問題經常被各技術公司提起。

前言

MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL语句就不适用于MongoDB了... 毕竟SQL是关系型数据库的标准语言。

一、关系型数据库MySQL

1、在不同的引擎上有不同的存储方式。
2、查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
3、开源数据库的份额在不断增加,mysql的份额页在持续增长。
4、缺点就是在海量数据处理的时候效率会显著变慢。

二、非关系型数据库MongoDB

非关系型数据库(英文被称之为nosql),属于文档型数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。这些数据具备自述性,呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。

1、存储方式:虚拟内存+持久化。
2、查询语句:是独特的MongoDB的查询方式。
3、适合场景:事件的记录,内容管理或者博客平台等等。
4、架构特点:可以通过副本集,以及分片来实现高可用。
5、数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
6、成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

三、MongoDB优势与劣势

优势:

1、在插满了ECC内存条的服务器面前, MongoDB的性能是tmd非常迅速的,它将所谓的“热数据”存储在物理内存中,根据场景优化IO, 可达到非常满意的效果。
2、MongoDB广受高可用和集群架构师青睐(例如AWS那群人)。老外的Java后端公司爱玩。玩好了性能和可用性逆天。因为逻辑写起来不像MySQL那种傻瓜式的扒拉两下就OK的, 笔者建议你用Java/PHP/Go/Nodejs/Python这类脚本配合玩,如果你是用Rust/C++/C结合MongoDB来进行业务开发复杂CURD逻辑~ 结果就是翻车,或者让你的团队顶着恶臭的名声加班debug到天亮。
3、在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。
4、MongoDB的Bson和JSon格式的数据十分适合文档格式的存储与查询。

劣势:

1、 正常意义上来说无法做事务。因为MongoDB的主流NoSQL玩法本身没有自带事务机制,若需要在MongoDB中实现事务机制,需通过一个额外的表,从逻辑上自己实现事务。
2、国内不是特别多公司用到MongoDB, 海外较多。
3、MongoDB占用空间硬盘超大, 不过硬盘倒没有内存值钱, 孰优孰劣自行评估。

对比表格

数据库
MongodbMySQL
数据库模型非关系关系型
存储模式以类JSON的文档的格式存储多种引擎, 主要用innodb
成熟度新兴数据库, 开源商业免费级数据库
广泛度完善且开源,海外公司使用度比国内广泛老少皆宜
事务仅支持单文档事务操作, 弱一致性支持事务操作
占用硬盘空间
join连表支持


閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 古爾曼:蘋果公司正將更多注意力轉向6G研發

  • 大裁員, 巨虧, 知乎“值乎”?

  • 小談互聯網變現掙錢的14個模式

  • a站b站是什麽意思

我要說說
網上賓友點評