MongoDB简介

  公司项目数据库用的是MySQL和MongoDB这两个数据库。我还记得面试的时候问到MongoDB这个知识点,当时支支吾吾的讲不出太多,这次改bug,因为不熟悉MongoDB数据库遇到了一些小困难,所以抽时间补一补MongoDB。
 
什么是MongoDB?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
1.在高负载的情况下,添加更多的节点,可以保证服务器性能。
2.MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
3.MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
 MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。
 
功能特性
面向集合
    数据被分组到若干集合,这些集合称作聚集(collections). 在数据库里每个聚集有一个唯一的名字,可以包含无限个文档
模式自由
    无需知道存储数据的任何结构定义
文档型
    存储的数据是键-值对的集合,键是字符串,值可以是数据类型集合里的任意类型,包括数组和文档
支持动态查询
支持完全索引,包含内部对象
支持复制和故障恢复
    使用复制可以将数据副本保存到多台服务器上
    基于副本集,即使一台或多台服务器出错,也可以保证应用程序正常运行和数据安全
高效的二进制数据存储,包括大型对象(比如视频)
支持分片
    指将用户拆分,将其分散存放在不同机器上的过程,用于处理更大的负载
    支持自动分片
支持多语言
    Java、Ruby、C++、PHP、Python、JavaScript等

 

优点:

1.更高的写负载
2.处理超大规模的单表
3.不可靠环境保证高可用性
4.使用基于位置的数据查询,查询速度快
5.非结构化数据的爆发增长
    表格大于1GB的情况下,添加1个新的字段不会对表格有任何影响,这个过程会非常快速

 

缺点:

1.不支持事务
2.磁盘空间占用过大
3.删除记录不释放空间

 

MongoDB与MySQL的对比

数据库 MongoDB MySQL
数据库模型 非关系型 关系型
存储方式 以类JSON的文档的格式存储 不同引擎有不同的存储方式
查询语句 MongoDB查询方式(类似JavaScript的函数) SQL语句
数据处理方式 基于内存,将热数据存放在物理内存中,从而达到高速读写 不同引擎有自己的特点
事务性 仅支持单文档事务操作,弱一致性 支持事务操作
占用空间 占用空间大 占用空间小
join操作 MongoDB没有join MySQL支持join 
posted @ 2018-08-02 12:43  TA写Java  阅读(172)  评论(0编辑  收藏  举报