1.1 MongoDB入门到实践系列—MongoDB概述

1. NoSQL概况

NOSQL:(NoSQL全名:Not Only SQL,意思为“不仅仅是SQL”),NoSQL是对不同于传统关系数据库的数据库管理系统的统称。

从数据库的发展开始就有了NoSQL数据库,在上世纪90年代到2010年之间,世界上最流行的数据库依然是关系型数据库,并且围绕着关系型数据库开发出了大量的程序应用,又随着移动技术(云计算、大数据)的发展,很多公司不愿意去使用大型的厂商数据库 —— Oracle等,因为这些人已经习惯于使用MySQL数据库,这些人发现在大数据以及云计算的环境下,数据存储受到了很大的挑战,后来就开始重新进行了NoSQL数据库的开发,但是经过长期的开发发现NoSQL数据库依然不可能离开传统的关系型数据库。

2. MongoDB 简介

MongoDB 是一个基于分布式文件存储的NoSQL数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

传统的关系型数据库一定存放大量的冗余数据,导致查询效率降低,脏数据较多,不合理;而MongoDB 数据库中,可以直接在业务层中的数据(一般为JSON)交给NoSQL数据库保存,按照指定的结构(人为定义)进行存储。

MongoDB的核心竞争力在于:

  • 基于 JSON 的数据模型最接近开发者的面向对象的设计思维;
  • 灵活动态的模型意味着在需求多变的时候极大简化数据库设计流程;
  • 自动分片、多节点自动同步和跨中心能力支持各种现代化复杂部署需求。

3. MongoDB 发展历史

2007年,MongoDB公司的前身10gen正式成立,2009年2月开源数据库MongoDB 1.0正式面世,以开源的方式进入市场接受考验。时至今日,MongoDB已经从一个在数据库领域籍籍无名的“小透明”,变成了话题度和热度都很高的主流数据库。

  • 2009年2月,MongoDB数据库首次在数据库领域亮相,打破了关系型数据库一统天下的局面;

  • 2014年12月, MongoDB 收购了WiredTiger 存储引擎,大幅提升了MongoDB的写入性能;

  • 2016年, MongoDB推出Atlas,在AWS、 Azure 和GCP上的MongoDB托管服务;

  • 2018年6月, MongoDB推出ACID事务支持,成为第一个支持强事务的NoSQL数据库;

  • 2018年11月,MongoDB将其开源授权修改为SSPL。

4. MongoDB 特点

  1. 面向集合的存储过程,易存储对象类型的数据

“面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。

  1. 模式自由(无模式)

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

  1. 方便的进行数据的存储扩充

  2. 支持索引

  3. 支持短暂数据保留

  4. 具备完整的数据库状态监控

  5. 支持Ruby,Python,Java,C++,PHP等多种语言

  6. 基于BSON 应用(一种JSON的扩展)

BSON(Binary Serialized document Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。

  1. 可通过网络访问

MongoDB 服务端可运行在 Linux、Windows或OS X 平台,支持 32 位和 64 位应用,默认端口为 27017。推荐运行在 64 位平台,因为 MongoDB 在 32 位模式运行时支持的最大文件尺寸为 2GB。

5. MongoDB 与其他类型数据库对比

5.1 NoSQL 之间的对比

NoSQL 数据库根据数据的存储模型和特点分为很多种类:

类型部分代表特点
列存储Hbase、Cassandra、Hypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储MongoDB CouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储Tokyo Cabinet / Tyrant Berkeley DB、MemcacheDB Redis可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储Neo4J、FlockDB、InfoGrid图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储db4o、Versant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库Berkeley DB XML BaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

5.2 MongoDB 与关系型数据库之间的对比

MongoDB 数据库与 MySQL 数据库(关系型数据库代表)有如下的概念定义:

No.MySQLMongoDB
1数据库数据库(类似于MySQL)
2集合
3文档
4成员
5主键Object ID(自动维护)

6. MongoDB 的主要版本

  • 2012年05月23日,MongoDB 2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。

  • 2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。

  • 2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。

  • 2013年08月20日,MongoDB 2.4.6 发布。

  • 2013年11月01日,MongoDB 2.4.8 发布。

  • 2017年03月17日,MongoDB 3.0.1 发布。

  • 2018年08月06日,MongoDB 4.0.2 发布,支持多文档事务。

  • 2019年08月13日,MongoDB 4.2.0 发布 ,引入分布式事务。

7. MongoDB 业务场景

MongoDB 的实际业务场景有很多、比如:日志存储系统、缓存机制数据、数据分析系统等,以下主要为笔者所接触过的实际应用场景:

7.1 web 应用程序

Web 应用的业务特点是读写请求都比较高,数据存储需要适应业务的扩展。传统的关系型数据库表结构是固定的,增加一个业务或者业务变更,横向扩展都会给数据库带来很大的工作量。

MongoDB 支持无固定结果模型,很容易增加或减少字段。同时 MongoDB 支持分片集群,因此很容易实现水平扩展,将数据分散到集群的各个分片中。此外 MongoDB 支持热数据,它会维护一个工作集,通过内存映射数据文件,将最热的数据放在内存中。

7.2 缓存系统

与关系数据库搭配使用,作为关系型数据库的缓存前端。

7.3 日志分析系统

MongoDB 可以写入海量的日志数据,可以通过特有的 sql 语句快速找到某一条日志记录,还可以通过MapReduce 进行数据分析。

8. 课程简介

8.1 课程简介

  • 实现MongoDB的简单环境搭建;
  • 笔者带领各位伙伴完整MongoDB的增删改查操作;
  • 了解MongoDB的索引、聚合等特性;
  • 使用MongoDB官方提供Java客户端连接MongoDB进行操作;
  • 使用Java语言实现业务日志在MongoDB的中存储。

8.2 适应人群

  • 想在实际项目中使用MongoDB的开发人员
  • 课程所需:计算机、大脑、想学习MongoDB的良好心态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值