什么是MongoDB
什么是MongoDB
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。基于分布式文件存储的数据库,介于非关系型和关系型数据库之间。
MongoDB和MySQL对比
MongoDB | MySQL |
---|---|
Database | Database |
Collection(集合) | Table |
Document(文档) | Row |
Field | Column |
MongoDB有什么特点
(1)面向集合存储数据,数据以json格式存储;
(2)查询功能强大,几乎可以实现所有关系型数据库的单表查询功能;
(3)自带分布式文件系统,方便集群部署;
(4)自带了对map-reduce运算框架的支持。
MongoDB为什么快
(1)没有事务约束;
(2)使用的内存映射技术 ,写入数据时候只要在内存里完成就可以返回给应用程序,写入磁盘是异步操作;热点数据放入内存;数据在磁盘中相对集中,减少随机读写耗费的磁头定位时间;
(3)没有join,不使用关系。没有关系的存在,就表示每个数据都好比是拥有一个单独的存储空间,然后一个聚集索引来指向。
MongoDB适用场景
(1)网站实时数据处理,如PV、UV、统计商品的收藏次数、加入购物车次数、曝光次数等。
(2)服务器日志记录;
(3)大数据量,TB甚至PB级别的数据存储;
(4)数据模型经常变化,需要支持水平扩展
(5)游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
视频直播,使用 MongoDB 存储用户信息、礼物信息等。
MongoDB不适用场景
(1)数据修改需要严格的事物控制;
(2)功能的业务关系复杂、涉及到多表关联;
(3)比较重要的业务数据,如订单、商品、用户等数据。