mongodb的优缺点及应用场景(mongodb的理解)
itomcoil 2025-06-08 21:51 2 浏览
一、MongoDB是什么
1、维基百科
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
2、简而言之
MongoDB是文档型的NoSQL数据库,数据以文档(对应关系型数据库的记录)的形式在MongoDB中保存,文档实际上就是一个个JSON字符串,使用JSON的好处是非常直观,通过一系列的Key-Value键值对来表示数据,符合我们的阅读习惯。
在Java、Python中对JSON都有很好的支持,数据从MongoDB中读取出来后,可无需转换直接使用;支持丰富的数据结构,Value可以是普通的整型、字符串、数组、嵌套的子文档,使用嵌套的好处是在MongoDB中仅需一次简单的查询就能够获取到你所需的数据。
二、MongoDB 的应用场景
1、MongoDB事务
MongoDB目前只支持单文档事务,MongoDB暂时不适合需要复杂事务的场景。
灵活的文档模型JSON格式存储最接近真实对象模型,对开发者友好,方便快速开发迭代,可用复制集满足数据高可靠、高可用的需求,运维较为简单、故障自动切换可扩展分片集群海量数据存储。
2、多引擎支持各种强大的索引需求
- 支持地理位置索引
- 可用于构建各种O2O应用
- 文本索引解决搜索的需求
- TTL索引解决历史数据过期的需求
- Gridfs解决文件存储的需求
- aggregation & mapreduce解决数据分析场景需求,可以自己写查询语句或脚本,将请求分发到 MongoDB 上完成。
3、具体的应用场景
传统的关系型数据库在解决三高问题上的力不从心。
何为三高?
- High performance - 对数据库高并发读写的需求。
- Huge Storage - 对海量数据的高效率存储和访问的需求。
- High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。MongoDB可以完美解决三高问题。
4、以下是几个实际的应用案例:
(1)游戏场景
使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。
(2)物流场景
使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。
(3)社交场景
使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
(4)物联网场景
使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
(5)视频直播
使用MongoDB存储用户信息、点赞互动信息。
5、选择MongoDB的场景总结:
- 数据量大
- 读写操作频繁
- 数据价值较低,对事务要求不高
三、MongoDB对比MySQL
1、关键字对比
四、数据模型
MongoDB的最小存储单位是文档(document)对象,相当于MySQL中的行,数据以BSON文档的形式存储在磁盘上。
BSON是一种二进制形式的存储格式,简称Binary JSON。
BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
BSON采用了类似于C语言结构体的名称、支持内嵌的文档对象和数组对象,具有轻量级、可遍历性、高效性三大特点,可以有效描述非结构化数据和结构化数据,灵活性高,但空间利用率不是很理想。
BSON中除了基本的String、integer、boolean、double、null、array和object,MongoDB还支持一些特殊的数据类型,date、object id、binary data、regular expression和code。
五、MongoDB的特点
1、高性能
MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。
索引支持更快的查询,并且包含嵌入式文档和数组的键。
- 文本索引解决搜索的需求;
- TTL索引解决历史数据自动过期的需求;
- 地理位置索引可用于构建各种 O2O 应用;
2、高可用性
MongoDB的复制工具称为副本集(reolica set),它包含提供自动故障转移和数据冗余。
3、高可用性
MongoDB提供了水平可扩展性作为其核心功能的一部分。
分片将数据分布在一组集群的机器上。(海量数据存储、服务能力水平扩展)
从3.4起,MongoDB支持基于片键创建数据区域,在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些片。
4、丰富的查询支持
MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等。
5、其他特点
如动态模式、灵活的文档模型。
六、下载安装MongoDB
1、 MongoDB官网下载地址
https://www.mongodb.com/try#community
2、Products – servers
3、MongoDB Community Server
4、选择release版
5、下载zip文件,解压
6、创建data/db目录,命令行启动程序
mongod --dbpath=..\data\db
7、由于找不到vcruntime140_1.dll,无法继续执行代码
七、由于找不到vcruntime140_1.dll,无法继续执行代码
1、下载vcruntime140_1.dll文件
2、将vcruntime140_1.dll文件拷贝到C:\Windows\System32即可
3、再次命令行启动程序
mongod --dbpath=..\data\db
4、MongoDB默认端口号27017
如果想修改端口号,可以通过–port指定端口号。
八、安装compass图形化管理工具
1、下载地址
https://docs.mongodb.com/compass/master/install/
2、compass安装成功、启动
点击MongoDBCompass.exe
3、compass连接MongoDB
mongodb://127.0.0.1:27017
相关推荐
- 蚂蚁金服用什么技术这么厉害?(蚂蚁金服是怎么赚钱的?)
-
阿里妹导读:本文来自蚂蚁金服人工智能部认知计算组的基础算法团队,文章提出一整套创新算法与架构,通过对TensorFlow底层的弹性改造,解决了在线学习的弹性特征伸缩和稳定性问题,并以GroupLass...
- R数据分析:逻辑斯蒂回归与泊松回归
-
今天将逻辑回归和泊松回归放一起给大家写写,因为它两在R中的做法都非常的相似和非常的简单,同时还有两个回归的图形化表达。什么时候用逻辑回归Logisticregression,alsoknown...
- 想学好Python数据分析,一定要掌握的重要模块之Statsmodels
-
Statsmodels是Python中一个功能强大且广泛使用的统计建模和经济计量学库。它允许用户构建各种统计模型,执行假设检验,进行预测,并对模型结果进行详细的诊断和可视化。以下是statsmodel...
- Python实现概率分布,学数据统计的需要收藏
-
作者:Runsen二项分布包含n个相同的试验每次试验只有两个可能的结果:“成功”或“失败”。出现成功的概率p对每一次试验是相同的,失败的概率q也是如此,且p+q=1。试验是互相独立的。试验成功或失败...
- 60行代码实现经典论文:0.7秒搞定泊松盘采样,比Numpy快100倍
-
编辑整理自太极图形量子位|公众号QbitAI由随机均匀的点组成的图案,在动植物身上已经很常见了。像杨梅、草莓、荔枝、红毛丹这样的水果,表面都有颗粒或者毛发状的结构,它们随机、均匀地散布在水果表...
- linux ubuntu 安装mongo教程(实践步骤)
-
最近需要在linux上安装mongdb由于之前没安装过。在网上搜索到很多安装方法,但有的按照步骤操作是不行的。前后共花费了半天时间找到一个可行的步骤,分享给大家,不必走弯路。如果安装过程遇到技术问题...
- MongoDB 分片集群方案及其优缺点分析
-
一、MongoDB分片集群架构核心组件1.Mongos(路由节点)-无状态代理,客户端连接入口-负责查询路由、结果聚合-需部署多个以实现高可用2.ConfigServer(配置服务器)-...
- CentOS7安装Mongodb 4.x.x(CentOS7安装yum源的方法)
-
1、下载安装包curl-Ohttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz2、解压安装包tar-zxvfmon...
- MongoDB+GridFS存储文件方案(mongodb存储在哪里)
-
GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文...
- 如何使用 GridFS 、 Node.js、Mongodb和Multer 管理文件存储?
-
什么是GridFs?GridFs是用于存储音频、视频或图像等大型文件的mongodb规范……它最适用于存储超过mongodb文档大小限制(16MB)的文件。此外,无论文件大小如何,当您想...
- Mongodb 集群搭建方法(mongodb集群状态startup2)
-
#大有学问#MongoDB是一个非关系型数据库(NoSQL),提供高性能、高可用性和自动扩展的特点。在MongoDB中,可以通过搭建集群实现这些特性。MongoDB集群主要有两种类型:副本集(...
- 记一次生产事故:MongoDB数据分布不均的解决方案
-
推荐阅读:我为什么放弃MySQL,选择了MongoDB?看到这个数据你就会明白了事故集合:可以很明显可以看到我们这个集合的数据严重分布不均匀。一共有8个分片,面对这个情况我首先想到的是手动拆分数据块,...
- 百万级高并发mongodb集群性能数十倍提升优化实践
-
背景线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性。该集群采用...
- MongoDB 常见问题处理(二)(mongodb数据处理)
-
MongoDB数据库中,删除请求数超过阈值的处理方案?数据删除发生在文档迁移过程中,MongoDB4.0以上版本均衡阈值很小,容易发生迁移,频繁的迁移数据导致delete数据较大,同时还会导致CPU负...
- 实战:docker搭建FastDFS文件系统并集成SpringBoot
-
实战:docker搭建FastDFS文件系统并集成SpringBoot前言15年的时候,那时候云存储还远远没有现在使用的这么广泛,归根结底就是成本和安全问题,记得那时候我待的公司是做建站开发的,前期用...
- 一周热门
- 最近发表
-
- 蚂蚁金服用什么技术这么厉害?(蚂蚁金服是怎么赚钱的?)
- R数据分析:逻辑斯蒂回归与泊松回归
- 想学好Python数据分析,一定要掌握的重要模块之Statsmodels
- Python实现概率分布,学数据统计的需要收藏
- 60行代码实现经典论文:0.7秒搞定泊松盘采样,比Numpy快100倍
- linux ubuntu 安装mongo教程(实践步骤)
- MongoDB 分片集群方案及其优缺点分析
- CentOS7安装Mongodb 4.x.x(CentOS7安装yum源的方法)
- MongoDB+GridFS存储文件方案(mongodb存储在哪里)
- 如何使用 GridFS 、 Node.js、Mongodb和Multer 管理文件存储?
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)