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

news2024/11/14 20:36:04

什么是MongoDB数据库?

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

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

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

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

MongoDB数据库有什么特点?

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

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

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

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

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

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

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

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

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

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

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

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

结构优化

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

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

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

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

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

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

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

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

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

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

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


MongoDB的适用场景?

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

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

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

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

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

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

4.日志数据

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

如遇到以上需求,可以将数据保存到MongoDB数据库中。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

postman安装

目录 下载、安装 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 Postman原是Chrome浏览器的插件,可以模拟浏览器向后端服务器发起任何形式(如:get、post)的HTTP请求 使用Postman还可以在发起请求时,携带一些请求参数、请求头等信息…

debezium docker订阅oracle 11g

debezium 依赖于kafka,kafka依赖于zookeeper。 zookeeper实现了kafka消息的一致性,debezium 把订阅的数据推送到kafka dockerFile FROM debezium/connect:1.6 ENV KAFKA_CONNECT_JDBC_DIR$KAFKA_CONNECT_PLUGINS_DIR/kafka-connect-jdbc ENV INSTANT_C…

登陆拼多多获取整站实时商品详情数据,商品列表,商品优惠券,包括数据采集,清洗,分析,封装等过程,作为爬虫的课程。

前言 拼多多平台是一个众所周知的一个电商平台,基本上什么都能找到,而且价格比较优惠。 想业余做电商赚点小钱或买点东西,就需要对比平台上各个卖家的商品信息,所谓货比三家,为商品定一个合理的价位或淘一个合理&…

[Python基础] 学生管理系统(存储读取学生信息)

学生管理系统:应该算是语言语法学习过程中一个比较适合测试语法熟练度的代码案例了。 文章目录 思路main(入口函数)menu(菜单)Add(新增学生)Display()(显示学生)Find()&a…

::before和::after伪元素的用法案例

CSS3中伪类采用单冒号写法,伪元素采用双冒号写法。 伪类举例——:hover,:link,:active,:target。 伪元素举例——::before,::after,::first-letter,::first-line,::selection。 一、介绍 今天写网页时遇到一个问题,视口的背景中插入一个小图标的话&a…

Python进阶项目--只因博客(bootstrap+flask+mysql)

前言 1.全民制作人们大家好,我是练习时长两年半的个人练习生只因坤坤,喜欢唱,跳,rap,篮球,music......在今后的节目中,我还准备了很多我自己作词、作曲、编舞的原创作品,期待的话&am…

VirtualBox虚拟机后台运行

前言 在Windows下的VirtualBox运行如Linux的虚拟机时,并不需要图形化的界面,我们不必次次通过VirtualBox的官方界面进入,解决鼠标键盘定位等问题。可以通过Putty等软件使用SSH进行连接控制,但是官方界面并没有在后台运行选项。 需…

Nginx快速上手~

注:本文针对官网的快速入门教程进行一个中文的解释,以帮助英文阅读能力较差的学习者快速上手 参考官网连接Beginners Guide (nginx.org) Centos下的安装 sudo yum install yum-utils # 创建文件 vim /etc/yum.repos.d/nginx.repo # 输入以下内容 ####…

项目1实现登录功能方案设计第四版

需求 优化点:MySQL表常用功能模块实现方案 index页面home页面 需求 实现一个登录功能 实现的功能 注册(邮箱注册) 登录(邮箱密码) 重置密码 查看操作记录(登录, 注册, 重置密码, 登出. 都算操作) 登出 在第3版的基础上进行优化:\ 优化点: 接口设计 1. 发送注册验证码: 路径: PO…

五一将迎2亿人次出行,君子签助力旅行社合规高效签旅游电子合同

近日,为规范旅游市场秩序,促进旅行社高质量发展,文旅部发布了《文化和旅游部办公厅关于进一步规范旅游市场秩序的通知》(下称《通知》),对旅游业提出了新的要求。 《通知》中规范了旅行社经营行为。旅行社要…

flink任务处理下线流水数据,数据遗漏不全(三)

flink任务处理下线流水数据,数据遗漏不全(二) 居然还是重量,做一个判断,如果是NaN 就直接获取原始的数据的重量 测试后面会不会出现这个情况! 发现chunjun的代码运行不到5h以后,如果网络不稳…

EasyCVR平台基于GB28181协议的语音对讲配置操作

EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能…

IT行业里的热门技术

© Ptw-cwl 文章目录 1. 人工智能(AI)和机器学习(ML)2. 大数据3. Web2.04. 移动应用程序开发5. 物联网6. 云计算7. 区块链8. 5G技术9. 虚拟现实(VR)和增强现实(AR) 现在如果问…

如何使用Midjourney辅助建筑设计,常用的提示和使用效果展示(内附Midjourney提示词网站)

文章目录 一.Midjourney建筑设计的提示技巧1. prompt模板12.prompt模板2 二、著名建筑师为例1.Zaha Hadid(扎哈哈迪德)2.Ludwig Mies van der Rohe(路德维希密斯凡德罗)3.Renzo Piano(皮亚诺)4.Stefano Boe…

PEIS源码,体检管理系统源码,C#医院体检系统源码

PEIS体检管理系统源码,医院体检系统源码PEIS源码,商业级源码,有演示。 PEIS医院体检管理系统采用C/S结构,前台开发工具为Vs2012,后台数据库采用oracle大型数据库。核心功能有:体检档案的录入、体检报告的输…

从入门到精通:SEO站外优化全面解析

通过​​第三章​​上下连续两期的干货内容,相信你已经掌握了 SEO 优化的基本方法,但你有没有发现:之前的内容都是针对网站本身进行优化的方法,其实,SEO 还有相当一部分功夫要放在站外优化上。 问题来了:站…

上海震坤行工业超市聚焦量具量仪市场,助力企业实现测量数字化

上海震坤行工业超市聚焦量具量仪市场,助力企业实现测量数字化 近日,量具量仪三大品牌哈量、广陆、英示的三位重磅嘉宾及震坤行磨具量具产线总经理,走进震坤行工业超市直播间。带来了一场“聚焦量具量仪市场,助力企业实现测量数字…

C语言中结构体(struct)的详细分解与使用

目录 第一:结构体的定义 第二:规则 第三:结构体声明 第四:C 语言结构体定义的三种方式 第五:对于结构体变量的初始化 第六:整体与分开 第七:结构体长度 第八:嵌入式开发中&am…

第 三 章 UML 类图

文章目录 前言一、依赖关系(虚线箭头)二、泛化关系:继承(实线空心箭头)三、实现关系(虚线空心箭头)四、关联关系(一对一为实线箭头,一对多为实线)五、聚合关系…

如何实现24小时客户服务

许多企业都有着这样的愿望:在不增加客服人员的同时能实现24小时客户服务。 那么有没有什么方法可以实现这一想法呢?在想解决方案之前我们可以先来谈谈客服的作用。 客服的作用主要为以下2点: 帮助用户更快地了解产品(减轻产品的…