MongoDB学习之MongoDB简介

治疗白癜风的知名专家 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/sfxbdf/

MongoDB是目前最流行的NoSQL数据库,是一个基于分布式文件存储的数据库,由C++语言编写,特点是高性能、易部署、易使用、存储数据非常方便,旨在为Web应用提供可扩展有高性能数据存储解决方案。

MongoDB是由10gen团队所开发,于年2月首度推出,MongoDB开源、跨平台、支持Windows、Linux、OSX和Solaris系统。

当前最新版本为6.0.3。

1、NoSQL简介

NoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”。NoSQL,指的是非关系型的数据库。NoSQL有时也称作NotOnlySQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

1)RDBMSvsNoSQL

RDBMS:

高度组织化结构化数据

结构化查询语言(SQL)(SQL)

数据和关系都存储在单独的表中

数据操纵语言,数据定义语言

严格的一致性

基础事务

NoSQL:

代表着不仅仅是SQL

没有声明性查询语言

没有预定义的模式

键-值对存储,列存储,文档存储,图形数据库

最终一致性,而非ACID属性

非结构化和不可预知的数据

CAP定理

高性能,高可用性和可伸缩性

2)NoSQL的优点/缺点

优点:

高可扩展性

分布式计算

低成本

架构的灵活性,半结构化数据

没有复杂的关系

缺点:

没有标准化

有限的查询功能(到目前为止)

最终一致是不直观的程序

2、MongoDB的使用场景

随着互联网业务的发展,在数据操作方面出现越来越多的“三高”业务需求,什么是“三高”需求?即:

Highperformance:对数据库高并发读写的需求;

HugeStorage:对海量数据的高效率存储和访问的需求;

HighScalabilityHighAvailability:对数据库的高可扩展性和高可用性的需求。

传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心,而MongoDB数据库可应对“三高”需求。

具体的应用场景如:

1)社交场景:使用MongoDB存储社交用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能;

2)游戏场景:使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问;

3)物流场景:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来;

4)物联网场景:使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析;

5)视频直播:使用MongoDB存储用户信息、点赞互动信息等。

这些应用场景中,数据操作方面的共同特点是:

数据量大

写入操作频繁(读写都很频繁)

价值较低的数据,对事务性要求不高

对于这样的数据,我们更适合使用MongoDB来实现数据的存储。

那么什么时候选择MongoDB呢?

在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:

1)应用不需要事务及复杂join支持

2)新应用,需求会变,数据模型无法确定,想快速迭代开发

3)应用需要-以上的读写QPS(更高也可以)

4)应用需要TB甚至PB级别数据存储

5)应用发展迅速,需要能快速水平扩展

6)应用要求存储的数据不丢失

7)应用需要99.%高可用

8)应用需要大量的地理位置查询、文本查询

如果上述有1个符合,就可以考虑MongoDB。相对MySQL,可以以更低的成本解决问题(包括学习、开发、运维等成本)。

MongoDB的典型行业案例参考如下:

3、MongoDB简介

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

它支持的数据结构非常松散,是一种类似于JSON的格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。

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




转载请注明:http://www.aierlanlan.com/rzdk/9133.html

  • 上一篇文章:
  •   
  • 下一篇文章: