文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL与MongoDB,该如何做技术选型?

2024-11-30 06:00

关注

引言

一般情况下,会考虑到MySQL与MongoDB如何做技术选型的时候,你一定是遇到了类似于非结构化数据JSON的存取难题,否则大家都直接MySQL开始搞起了。

为什么要关注MongoDB呢?

下图是DB-Engines 2023年10月数据库的排名统计,可以看到MongoDB总排名在第5,在Nosql数据库中排名第1。

图片

既然要做技术选型,那就先要弄明白其中的一些区别和差异。

一、什么是MySQL?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

主要特点:

1、强大的体系结构

2、集群架构的多样性

3、完整的复制体系

4、强大的多行事务的支持

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

6、第三方工具种类丰富,社区用户活跃

二、什么是MongoDB?

MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点:

1、文档模式,无结构化数据,灵活的数据结构,适合快速开发,迭代场景

2、功能强大,位置索引、文本索引、TTL索引

3、副本集自动切换,保证数据的高可靠,服务的高可用性。

4、自动分片,存储容量、服务能力横向能力

5、适应于物流,物联网等海量数据场景

6、aggregation & mapreduce

三、MongoDB与MySQL之间的差异

3.1 相关概念及术语的差异

图片

3.2 存储数据结构的差异

MySQL 的存储结构分为5 级:表空间、段、簇、页、行。表空间可以看做是InnoDB 存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。

MySQL 不同引擎有不同的存储方式,而 MongoDB 以类JSON的文档的格式存储。

图片

3.3 增删改查操作的差异

当从数据库表或表组合中请求信息时,MySQL 使用 结构化查询语言(SQL),SQL是最流行和利用最广泛的查询语言,大多数开发人员都有这方面的经验。

相反,MongoDB 则使用非结构化查询语言(MQL)。要从JSON文档数据库请求数据或信息,首先必须指定具有结果应匹配的属性的文档。

尽管 MQL 和 SQL 有相似之处,但 MQL 通常需要额外花费精力进行学习。

图片

3.4 事务支持的差异

当应用程序类型需要多行事务时,关系数据库是最合适的选择。除了提供安全性,MySQL还实现了高事务处理率。而 MongoDB 仅支持单文档事务操作,弱一致性。

图片

3.5 性能测试总结分析

3.6 其他主要差异

接下来,我们将介绍一些其他主要差异。

图片

四、应用场景分析

作为文档数据库,由于MongoDB并不限制用户存储数据的体量和类型,因此适合大数据的应用环境。而得益于MongoDB的水平可扩展能力,以及与云服务的敏捷性结合,它不但能够减少开发者的工作量,简化业务与项目的扩展流程,还能够提供高可用性和数据的快速恢复。

不过,MongoDB在数据的可靠性、一致性、以及安全性等方面,不如MySQL。此外,当应用程序需要提供多行事务(如,会计和银行系统)时,以MySQL为首的关系型数据库提供了高事务处理率(high transaction rate)。实际上,与MySQL专注于提供事务的ACID和安全性不同的是,MongoDB更专注于提供高插入率(high insert rate)。

MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等。

图片

总结

综上所述,MySQL是一个开放源代码的关系数据库,这意味着它的数据被组织成表格,使您可以将数据与数据库的其他部分相关联。MongoDB也是开源的,但是,它是一个文档数据库。因此,它不关联记录,并且其数据模式是不固定的,从而允许具有更高插入能力的更具动态性和灵活性的数据库。

图片

在确定最佳数据库系统之前,应明确并确定特定业务或项目的优先级。

总之,MongoDB和MySQL都很优秀,具体如何选择,完全取决于您的具体应用需求和系统特征。

来源:架构精进之路内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯