MongoDB的应用场景及实现原理

本文介绍了MongoDB的应用场景及实现原理。MongoDB是基于分布式文件存储的数据库,介于关系与非关系数据库之间。阐述了其与关系型数据库的对比,说明了适用和不适用的场景,还介绍了其角色、命令、分布式架构、读写及修改查询流程,以及分片策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB的应用场景及实现原理

MongoDB定义:

MongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)

关系型数据库与非关系型数据库对比:

在这里插入图片描述

NoSQL最大的特点:

1、默认支持分布式(内置分布式解决方案)
2、高性能、高可用性和可伸缩性
在NoSQL界,MongoDB是最像关系型数据库的非关系型数据库

数据库分类:

在这里插入图片描述

MongoDB的数据结构与关系型数据库结构数据对比:

在这里插入图片描述

MongoDB的数据类型:

在这里插入图片描述

MongoDB应用场景:

使用范围:

1、网站实时数据:例如:日志、Timeline、用户行为(代替方案:用日志)

2、数据缓存:缓存的数据,它一定是临时的(关系型数据有一份已经持久化)

3、存储大尺寸、低价值数据存储:搜索引擎的图片文件、视频文件(结构化)

4、高伸缩性场景:机器可以任意的增减

5、对象或JSON数据存储:完全可以选择用Redis

不适用范围:

1、高度事务性系统:例如:金融系统的核心数据

​ 高机密的用户数据(只能选择传统关系型数据库)

2、传统的商业智能应用:结构化查询要求非常高,经常做关联查询统计

​ (如果都是单表查询,用Java程序来实现关联)

​ Map,List

3、需要复杂SQL查询的问题

MongoDB图解:

在这里插入图片描述
MongoDB包含三类角色:
mongos:路由接入结点(协调中心)
mongod config:配置文件存储结点
mongod:实际数据存储结点

三个重要命令:
mongo
mongos
mongod

副本集可以认为是一台机器或者多台机器组成的一个数据的单元,又可以认为就是一台存储数据的机器(mongo),一个副本集数据一定是一个完整的整体

副本集1和副本集2的作用:解决分布式中的高可用,把一个服务部署多分(一台坏了,另一台可以顶上)

集群、高可用、Master-Slave

MongoDB写数据的流程图:

在这里插入图片描述

MongoDB读数据的流程图:

在这里插入图片描述
mongoDB的分布式架构:
M-S
M-A-S

MongoDB的数据修改流程图:

在这里插入图片描述

MongoDB的数据查询流程图:

在这里插入图片描述

MongoDB的分片:

在这里插入图片描述
数据热点:

数据的平均存储问题(传一个视频,切成四份分别存在四张表里面去)

每张表存储的极限(遇到瓶颈)

mongdb的定位是存储文件或者日志这种数据的,这种数据是没有结构的,结构化程度相对比较弱一些,所以它不能通过数据本身或数据结构区分,怎么去分表,所以想到了这个方案,分片

类似于Map(拆分)Reduce(归并 )(Hadoop里面)

怎么切,那是策略

P2P? 把文件切成很多片,然后通过多线程方式下载,每个线程下一片,原来要1个小时,现在只需要1分钟

关系型数据库里面遇到这种情况分表

微观的维度(你看不到的一个维度)

chunk(块)–> shard(片)–> Replica Set(副本) --> Data(数据库)

宏观的维度(你能看到的)

Field(字段)–> Document(文档)–> Collection(集合)–> DataBase(数据库)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值