【MongoDB】相关概念

1.业务应用场景

1.1 面对三高需求

传统的关系型数据库(如Mysql),在数据操作的三高需求以及对Web2.0的网站需求面前,显得力不从心."三高"需求,
High performance:对数据库高并发读写的需求
Huge Storage:对海量数据的高效存储和访问的需求
High Scalability && High Availablity:对数据库的高可用性的需求.

1.2 MongoDb的具体的应用场景

(1)社交场景,使用MongoDb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能;
(2)游戏场景,使用MongoDb存储游戏用户信息,用户的装备,积分等直接以嵌入文档的形式存储,方便查询,高效率存储和访问;
(3)物流场景,使用MongoDb存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌
数据的形式来存储,一次查询就能订单所有的变量读取出来;
(4)物联网场景,使用MongoDB存储所有接入的智能设备信息,以及和设备回报的日志信息,对这些信息进行多维度的分析;
(5)视频直播,使用MongoDB存储用户信息,点赞互动信息等.

这些应用场景中,数据操作方面的共同特点是:
(1)数据量大
(2)写入操作频繁(读写都很频繁)
(3)价值较低的数据,对事物性要求不高.
对于这样的数据,我们更适合使用MongoDB来实现数据的存储.

1.3 什么时候选择MongoDB?

在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它,可以考虑一下的一些问题:
应用不需要事务及复杂join支持;
新应用,需求汇编,数据模型无法确定,想快速迭代开发;
应用需要2000-3000以上的读写QPS(更高也可以) ;
应用需要TB甚至PB级别数据存储;
应用发展迅速,需要能快速水平拓展;
应用要求存储的数据不丢失;
应用需要99.99%高可用;
应用需要大量的地理位置查询,文本查询;
如果上述有一个符合,可以考虑MongoDB,两个及以上的符合,选择MongoDB绝不后悔.


思考:如果用MySQL呢?
答:相对于MySQL,可以以更低的成本解决问题(包括学习,开发,运维等成本).

2.MongoDB简介 

MongoDB是一个开源的,高性能,无模式的文档型的文档型数据库,当初的设计就是用于简化开发和方便扩展,是
NoSQL数据库产品的一种,是最像关系型数据库(MySQL)非关系型数据库,

它支持的数据结构非常松散,是类似JSON的BSON格式,所以它既可以是比较复杂的数据类型,又相当地灵活.


MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的 数据结构,MongoDB文档类似于
jSON对象,即一个文档认为就是一个对象,字段的数据类型是字符串,字段的值除了使用基本的额一些类型外,
还可以包括其他文档,普通数组和文档数组.

3.体系结构

3.1 MongoDB与Mysql对比

3.2 数据类型

MongoDB的最小存储单位就是文档(document)对象,文档对象对应于关系型数据库的行,数据在MongoDB
中以BSON(Binary-JSON)文档的格式存储在磁盘上.

BSON(Binary Serialized Document Format)是一种类json的二进制形式的存储格式,简称Binary 
JSON,BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如
Date和BinDate类型.

BSON采用了类似于C语言结构体的名称的表示方式方法,支持内嵌的文档对象和数组对象,具有轻量性,
可遍历性,高效性三个特点,可以有效描述非结构化数据和结构化数据, 这种格式的优点就是灵活性高,
但是它的缺点就是空间利用率不是很理想.

BSON中,除了基本的JSON类型,string,interger,boolean,double,null,array和object,
MongoDB还使用了特殊的数据类型,这些类型包括date,object id,binary data,regular 
expression和code,每一个驱动都是以特定语言的方式实现了这些类型,查看你的驱动的文档来获取
详细信息.

BSON数据类型参考列表:

提示:
shell默认使用64位浮点型数值,{"x":3.14}或{"x":3}.对于整型值,可以用NumberInt(4字节符号整数)
或NumberLong(8字节符号整数),{"x":NumberInt("3")}{"x":NumberLong("3")}.

4.MongoDB的特点

4.1 高性能

MongoDB提供高性能的数据持久性,特别是:
对于嵌入式数据模型的支持减少了数据库系统上的I/O活动;
索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键(文本索引解决搜索的需求,TTL索引
解决历史数据自动过期的需求,地理位置索引可用于构建各种O2O应用);
mmapv1,wiredtiger,mongorockes(rocksdb),in-memory等多引擎支持满足各种场景需求;
Gridfs解决文件存储的需求.

4.2 高可用性

MongoDB的复制工具称为副本集,它可以提供自动故障转移和数据冗余.

4.3 搞扩展性

MongoDB提供了水平可扩展性作为其核心功能的一部分;

分片将数据分布在一组集群的机器上(海量数据存储,服务能力水平拓展);

从3.4开始,MongoDB支持基于片键穿件数据区域;

在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该群与的那些片.

4.4 丰富的查询支持

MongoDB支持丰富的查询语句,支持渡河写操作,比如数据聚合,文本搜索和地理空间查询等.

4.5 其他

无模式(不定列), 灵活的文档模型.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值