目录
一.MongoDB简介
MongoDB是一个基于分布式文件存储的数据库。由c++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB特点:
- 无需要跨文档或跨表的事务及复杂的join查询支持
-
敏捷迭代的业务,需求变动频繁,数据模型无法确定
-
存储的数据格式灵活,不固定,或属于半结构化数据
-
业务并发访问量大
-
TB级以上的海量数据存储,且数据量不断增加
-
要求存储的数据持久化、不丢失
-
99.999%的数据高可用性
-
大量的地理位置查询、文本查询
实际应用:MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。 社交场景,比如朋友圈,附近的人的地点的存储 ;游戏场景,比如用户当前装备,得分等 ;物流场景,比如快递的位置,状态,途径 ;视频场景,比如直播中的点赞数和互动留言等。
MongoDB缺点:
- mongodb不支持事务操作;
- 使用mongodb数据库存储数据占用空间过大;
- mongodb没有如mysql那样成熟的维护工具
- mongodb在集群分片中的数据分布不均匀;
- 在mongodb中持续插入大量数据,其写入性能会有较大波动;
- 使用mongodb数据库时,其单机可靠性比较差。
二.MongoDB和MySQL的区别
概念类别:
MySQL |
MongoDB
|
解释/说明 |
表(table) | 集合(collection) | 数据库表/集合 |
行(row) | 文档(document) | 数据记录行/文档 |
列(column) | 字段(field) | 数据字段/域 |
joins | 表连接,MongoDB不支持 | |
主键(primary key) | 主键(primary key) | MongoDB自动将_id字段设置为主键 |
特性区别:
数据库 | MongoDB | MySQL |
数据库模型 | 非关系型 | 关系型 |
存储方式 | 虚拟内存+持久化 | 不同的引擎有不同的存储方式 |
查询语句 | MongoDB查询方式 | SQL语句 |
数据处理方式 | 基于内存,将热数据存放在物理内存中,从而达到高速读写 | 不同的引擎拥有其自 |