【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?

这篇具有很好参考价值的文章主要介绍了【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是MongoDB数据库?

MongoDB是一个开源、高性能、支持海里数据存储的文档型数据库。

MongoDB是一个高效的非关系型数据库(不支持表关系:只能操作单表)

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

MongoDB是NoSQL数据库产品中的一种,其存储类型和MySQL比较像,也可以通过某个字段来进行查询;所以也有人说它是最像关系型数据库(MySQL)的非关系型数据库。

MongoDB数据库有什么特点?

数据存储方式:内存+磁盘

高扩展性:借助内置数据分片来实现

特点一:数据存储的方式—内存+磁盘

客户端和MongoDB进行数据交互,MongoDB中又包括两部分,内存和磁盘;

        对于查询来说,客户端首先进行数据操作是对内存进行操作,会先去内存中进行查找,所以查询的速度是很快的;如果内存足够大的话,就直接可以去内存中查询,避免和磁盘进行交互;如果内存不足,还需去磁盘中查找数据。

        对于保存来说,客户端进行数据操作直接保存在内存中,直接操作的是内存所以保存的速度也是比较快的,效率高。

这里就会涉及到一个问题,现在数据在内存中,一旦服务器重启或者中途断电或者宕机了,那内存数据岂不是丢失了?

        对于,借助操作系统的机制,会将内存的数据自动映射到磁盘中,但是会有一个时间规则,每隔60s写入一次。

那这样就可以解决数据丢失的问题了吗?当然不是!

如果说内存中已经写入了数据, 但是还没有同步到磁盘上,这个时候突然断电了,那这60s没有同步的数据就会丢失。

这也解释了为什么MongoDB的效率比较高,因为它直接操作的是内存。同时MongoDB也有丢失数据的风险,因为它涉及到内存和磁盘的数据同步,也就是刷盘的过程。

【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?

为了解决这个问题MongoDB对结构进行优化。

结构优化

        同样将MongoDB分为两个部分,内存和磁盘;但不同的是,又将内存和磁盘各划分为两个部分,一个是日志文件,一个是真正的业务数据。客户端发送请求到内存当中,首先会将操作的语句进行日志记录,然后在写入到业务数据的内存部分。那么内存中的日志会每10ms一次将记数据同步给磁盘的日志;并且内存中业务数据部分也会以每60s同步到磁盘的业务数据部分。

这样做的好处就是,缩小了数据同步时间的范围。

        当内存通过日志记录写入数据后,突然宕机了,虽然内存与磁盘会丢失60s的数据;但是日志间的数据同步设置了更短时间10ms,在服务器重新启动的时候,会将磁盘的日志文件部分和业务数据部分进行比较将找出丢失的数据并进行数据恢复;

        唯一不足的是,虽然同步数据时间缩短了,但还是会丢失10ms的数据。不管如何努力MongoDB都会有一段时间的数据丢失;

【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?

        总的来说,MongoDB的第一个特点,将数据存储到内存+磁盘上;客户端操作的基本上都是内存,背后借助操作系统将内存的数据和磁盘进行数据同步,因此可能会导致数据丢失;由于操作的全部是内存所以读写操作效率是比较高的。

特点二:高扩展性—借助内置数据分片来实现

在我们使用MongoDB的时候往往会出现这种情况:

        MongDB由于自己的硬盘存储容量有限,导致多余的数据可能就存不下去;那这个时候怎么办呢?MongoDB可以借助内置的数据分片,将多个MongoDB服务器串联在一起,每台服务器存储一部分,这样存储数据量就增多了;

【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?

比如说,现在有三台MongoDB服务器A、B、C,每台服务器可以支持500GB,那么三台串联在一起就可以存储 1.5TB数据了;

这样一来,使用MongoDB的内置数据分片可以很轻松的对海量数据进行保存。这也为MongoDB海量数据存储打下了基础。当然MySQL也支持数据分片,但是需要借助第三方服务和组件,实现成本相对较高一些。

 数据存储和高扩展性这两个特点就很好的解释了MongoDB的高性能和海量存储的支持。


MongoDB的适用场景?

1.游戏行业:游戏装备数据、游戏道具数据

        这些数据修改极其频繁,且数据较多。

2.物流行业:地理位置信息,海量数据

        多个地理位置信息串联 出它的运动轨迹在地图上展示出来。物流行业的数据量是极多的,不间断的向数据库保存地址位置坐标信息。同时保存这些坐标信息也有很多应用场景,比如搜索附近的人

3.直播行业:直播数据、粉丝数据、打赏数据

        这些数据修改频率极快,数据量也极多。

4.日志数据

        在项目中一些关键的日志需要将其保存下来,其日志的数据量也是巨大的,且结构多变。

如遇到以上需求,可以将数据保存到MongoDB数据库中。文章来源地址https://www.toymoban.com/news/detail-420558.html


到了这里,关于【MongoDB】什么是MongoDB?MongoDB有什么特点?MongoDB的适用场景?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文带你了解MySQL的前世今生,架构,组成部分,特点,适用场景

    MySQL最初是由瑞典公司MySQL AB的Michael Widenius和David Axmark开发的一款开源关系型数据库管理系统。MySQL AB的初衷是创造一个简单、快速、可靠的关系型数据库系统,以解决当时Web应用程序的需要。他们想要创造一个更简单、更强大的数据库系统,以取代当时主流的商业数据库系统

    2024年02月04日
    浏览(30)
  • STM32 GPIO的八种工作模式各有特点,适用于不同的应用场景

    学了挺久的单片机老是记不住每种模式的运用场景今天用通义千问总结了一下作为鞭策顺便记录一下 STM32 GPIO的八种工作模式各有特点,适用于不同的应用场景。以下是每种模式的简要描述及其对应的应用场景: 1. **GPIO_Mode_AIN** - **模拟输入**    - **应用场景**: 当GPIO引脚作为

    2024年04月11日
    浏览(64)
  • 项目开发中什么场景下Redis适用?

    Redis是一种开源的内存键值存储系统,具有高性能、高可靠、持久化、可扩展等特点,因此在许多场景下都非常适用。 缓存场景 数据库查询缓存:在Web应用中,频繁的数据库查询是一项昂贵的操作,会消耗大量的计算资源和时间。使用Redis作为数据库查询的缓存层,可以将查

    2024年01月21日
    浏览(29)
  • HTTP常见的状态码有哪些?适用场景有什么?

    1、什么是HTTP状态码 HTTP状态码 (英语:HTTP Status Code),用以 表示网页服务器 http 响应状态 的3位数字代码。 HTTP状态码的作用是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运行状态。 2、常见的状态码和适用场景 状态码第一位数字决定了不

    2023年04月24日
    浏览(31)
  • Redis可以用作数据库吗?它的适用场景是什么?

    是的,Redis可以用作数据库。虽然Redis通常被认为是一个内存数据库(in-memory database),但它也可以通过持久化机制将数据保存在磁盘上,以便在重启后恢复数据。 Redis的适用场景包括但不限于以下几个方面: 缓存:Redis的高性能、低延迟和良好的缓存策略使得它非常适合作为

    2024年02月13日
    浏览(31)
  • 什么是裸金属云服务器,适用于哪些场景,又有哪些优势?

    裸金属云服务器(Cloud Bare Metal,CBM)是一种兼具虚拟机弹性及物理机性能的裸金属云服务,与腾讯云全产品(例如网络、存储、数据库等)无缝融合,能为您提供云端独享的高性能、安全隔离的物理服务器集群。 您的业务应用可以直接访问裸金属云服务器的处理器和内存,

    2024年02月02日
    浏览(44)
  • 【AIGC调研系列】智普GLM-3与GLM-4分别适用于什么使用场景

    智普GLM-3与GLM-4分别适用于不同的使用场景。GLM-4是一款性能全面提升的新型大模型,它在总结、信息抽取、复杂推理、代码等应用场景中表现出色[1]。GLM-4支持更长的上下文、更强的多模态支持和更快速的推理[2],能够完成文件处理、数据分析、图表绘制等一系列复杂任务[

    2024年04月10日
    浏览(39)
  • 静态长效代理IP和动态短效代理IP有哪些用途?分别适用场景是什么?

    静态长效代理IP和动态短效代理IP是两种常见的代理IP类型,它们在用途和适用场景上存在一定的差异。了解它们的特性以及使用场景有助于我们更好地利用代理IP,提高网络访问的效率和安全性。 一、静态长效代理IP 1. 用途 静态长效代理IP是指长期保持稳定的代理IP地址,可

    2024年01月16日
    浏览(40)
  • 【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题

    博主: 東方幻想郷 专栏分类: Java | 从入门到入坟 🌟递归是一种在方法通过 调用自身 来解决某些问题的技术,它可以将一些问题,分为更小,更细类似的子问题,逐步解决, 直到问题被简化到某个基本情况 ,最后可以直接拿到答案。 递归是一种函数调用自身的方法 递归

    2024年02月06日
    浏览(40)
  • 为什么说新一代流处理器Flink是第三代流处理器(论点:发展历史、区别、适用场景)

           Flink 被认为是第三代流处理器,这是因为 Flink 在设计时参考了前两代流处理器的经验教训并引入了一些新的技术和思想,从而使得 Flink 具有更高的性能和更广泛的应用场景。下面我带大家了解一下流处理器从第一代到第三代的发展历史。        对于有状态的流

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包