一. 什么是MongoDB
MongoDB作为NoSQL的一种,以文档式存储,类似于JSON的格式存储,同时也有机会对某些字段建立索引,实现关系数据库的某些功能。MongoDB中每个数据包含一个或多个集合,集合以BSON数据格式组织起来的文档对象集合。集合类似于关系型数据库中的表,文档类似于记录。在数据量达到50GB以上时,访问速度是MySQL的10倍以上,可见MongoDB对于大数据的高效性
二. MongoDB的十个特点
- 面向集合存储:易于存储对象类型的数据
- 模式自由:一个集合中可以存储一个键值对的文档,也可以存储多个键值对的文档,当然还能存储键不一样的文档
- 支持动态查询:查寻语句使用JSON形式作为参数,方便查询内嵌文档和对象数组
- 支持完全索引:包含内部对象,可以对内嵌文档传建索引
- 支持复制和故障恢复:从节点可以复制主节点的数据,主节点发生故障时从节点可以代替主节点
- 使用高效二进制数据存储:包括视频等都用二进制数存储
- 自动处理碎片:支持云计算层次的扩展性,可以水平扩展数据库
- 支持多语言的驱动程序
- 文件存储格式BSON
- 可通过网络访问
三. 数据模型
- 面向集合:集合不需要定义任何模式,例如插入一条数据:>db.test.insert({ "database_type" : "not_relation_database", "database_name" : "mongoDB" })
- 模式自由:在MongoDB中可以有不同结构的数据,例如:
db.test.insert({ "name" : "zhangsan" })
db.test.insert({ "age" : 8 })
db.test.insert({ "name" : "zhangsan" , "age" : 8 })
可以存储在同一集合中,模式自由
- 文档型:文档型存储的数据是键值对的集合,键是字符串,值可以是任意类型,包括数组和文档。把这个数据格式称作BSON
四. 简便管理和适用场合
MongoDB启动服务器外,我们只需要知道如何在集群中添加新的节点,数据库会自动集合和分配新节点。MongoDB的管理理念就是让服务器自动配置
适用场合:网站数据、缓存层数据处理、大尺寸低价格数据、高伸缩性多服务器添加、用于对象和JSON数据的存储