业务应用场景
传统的关系型数据库(mysql),在数据操作上的"三高"需求,以及对Web2.0的网站要求前面,显得力不从心。解释三高需求:
1. High performance 对数据库高并发的读写需求,
2.Huge海量数据高效存储和访问的需求。
3.High Scalebility&& High Availability -对数据库的高可扩展性和高可用性需求。
而MongoDB可应对”三高“需求。
***具体的应用场景
1)社交场景。使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能。
2)游戏场景。使用MongoDB存储用户游戏信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问。
3)物流场景。使用MongoDB存储订单信息,订单状态在运行过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单的所有变更读取出来
4)物联网场景。使用MongoDB存储所有接入的 智能设备信息,以及设备汇报的日志信息,并对这些数据进行多维度的分析。
5)视频直播。使用MongoDB存储用户信息,点赞互动信息等。
这些应用场景,数据操作方面的共同特点是:
(1)数据量大
(2)写入操作频繁(读写都很频繁)
(3)价值低的数据,对事务性要求不高。
什么时候选择使用MongoDB?
在架构的选择上,除了上述的三个特点外,如果你还犹豫是否选择它?可以考虑以下的一些问题:
应用不需要事务,及复杂join支持。
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需求2000~3000以上读写的QPS(更高也可以)
应用需要TB甚至PB级别数据存储
应用要求存储的数据不丢失
应用需要99.999%高可用
应用需要大量地理位置查询,文本查询
如果上述有以下一个符合,可以考虑MongoDB ,2个以上的符合,选择 MongoDB绝不后悔。
思考,如果用MySql呢?
相对Mysql,可以以更低的成本解决问题(包括学习,开发,运维等成本)
MongoDB简介
MongoDB是一个开源,高性能,无模式的文档型数据库 ,当初的设计就是用来简化开发和方便扩展,是NoSQL数据库数据库产品中的一种,是最像关系型数据库(MYSQL)的非关系型数据库。
它支持的数据结构非常松散,是类似JSON的BSON格式,所以它既可以存储比较复杂的数据类型,有相当的灵活。
MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。Mongo文档类似于JSON对象,即可以一个文档认为就是一个对象,字段的数据类型是字符型,字段的值除了使用基本的一些类型外,还可以包括其他文档,普通数组和文档数组。