「这是我参与2022首次更文挑战的第3天,活动详情查看: 」。2022首次更文挑战
一、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存储用户信息,朋友圈信息,通过地理位置索引实