分布式缓存技术Redis
- 1. MongoDB介绍
- 1.1 什么是MongoDB
- 1.2 MongoDB vs 关系型数据库
- 1.3 MongoDB的技术优势
- 1.4 MongoDB的应用场景
- 2. 2.MongoDB快速开始
- 2.1 linux安装MorgoDB
本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。
课程内容:
1.MongoDB优势及其应用场景分析
2.MongoDB安装&文档操作
3.MongoDB数据模型详解
4.MongoDB固定集合实战
5.基于WiredTiger存储引擎读写模型详解
MongoDB4.0之后支持复制集的多文档事务,4.2以后支持分片的事务。
1. MongoDB介绍
1.1 什么是MongoDB
MongoDB是一个文档数据库(以JSON为数据模型),由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
文档来自于“JSON Document”,并非我们一般理解的PDF,WORD文档。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是BSON,一种类似JSON的二进制形式的存储格式,简称Binary JSON,和JSON一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数据类型。Mongo最大的特点
是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,还支持对数据建立索引。原则上 Oracle和MySQL能做的事情,MongoDB 都能做(包括ACID事务)。
MongoDB是一个开源OLTP数据库,它灵活的文档模型(JSON)非常适合敏捷式开发、高可用和水平扩展的大数据应用。
- OLTP: on-line Transaction Processing,联机(在线)事务处理
- OLAP: on-line Analytical Processing,联机(在线)分析处理
MongoDB在数据库总排名第5,仅次于Oracle、MySQL等RDBMS,在NoSQL数据库排名首位。从诞生以来,其项目应用广度、社区活跃指数持续上升。
1.2 MongoDB vs 关系型数据库
1. 概念
MongoDB概念与关系型数据库(RDBMS)非常类似:
-
数据库(database)︰最外层的概念,可以理解为逻辑上的名称空间,一个数据库包含多个不同名称的集合。
-
集合(collection):相当于SQL中的表,一个集合可以存放多个不同的文档。
-
文档(document) :一个文档相当于数据表中的一行,由多个不同的字段组成。
-
字段(field) :文档中的一个属性,等同于列(cotumn)。
-
索引(index) ︰独立的检索式数据结构,与SQL概念一致。
-
_id:每个文档中都拥有一个唯一的_id字段,相当于SQL中的主键(primary key)
-
视图(view):可以看作一种虚拟的(非真实存在的)集合,与SQL中的视图类似
从MongoDB3.4版本开始提供了视图功能,其通过聚合管道技术实现。 -
聚合操作($lookup) : MongoDB用于实现"类似"表连接(tablejoin)的聚合操作符。
尽管这些概念大多与SQL标准定义类似,但MongoDB与传统RDBMS仍然存在不少差异
包括:
- 半结构化,在一个集合中,文档所拥有的字段并不需要是相同的,而且也不需要对所用的字+段进行声明。因此,MongoDB具有很明显的半结构化特点。除了松散的表结构,文档还可以支持多级的嵌套、数组等灵活的数据类型,非常契合面向对象的编程模型。
- 弱关系,MongoDB没有外键的约束,也没有非常强大的表连接能力。类似的功能需要使用聚合管道技术来弥补。
1.3 MongoDB的技术优势
MongoDB基于灵活的JSON文档模型,非常适合敏捷式的快速开发。与此同时,其与生俱来的高可用、高水平扩展能力使得它在处理海量、高并发的数据应用时颇具优势。
- JSON结构和对象模型接近,开发代码量低
- JSON的动态模型意味着更容易响应新的业务需求
- 复制集提供99.999%高可用
- 分片架构支持海量数据和无缝扩容
简单直观:从错综复杂的关系模型到一目了然的对象模型
快速:最简单快速的开发方式
灵活:快速响应业务变化
MongoDB优势:原生的高可用
MongoDB的优势:横向扩展能力
1.4 MongoDB的应用场景
从目前阿里云 MongoDB云数据库上的用户看,MongoDB的应用已经渗透到各个领域:
- 游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新;
- 物流场景,使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来;
- 社交场景,使用MongoDB存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能;
- 物联网场景,使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析;
- 视频直播,使用MongoDB存储用户信息、礼物信息等;
- 大数据应用,使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。l
国内外知名互联网公司都在使用MongoDB:
如何考虑是否选择MongoDB?
没有某个业务场景必须要使用MongoDB才能解决,但使用MongoDB通常能让你以更低的成本解决问题。如果你不清楚当前业务是否适合使用MongoDB,可以通过做几道选择题来辅助决策。
只要有一项需求满足就可以考虑使用MongoDB,匹配越多,选择MongoDB越合适。
2. 2.MongoDB快速开始
2.1 linux安装MorgoDB
环境准备:
- linux系统: centos7
- 安装MongoDB社区版
下载MongoDB Community Server
下载地址: https://www.mongodb.com/try/download/community
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.9.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.9.tgz
cd mongodb-linux-x86_64-rhel70-4.4.9/
bin/mongod --port=27017 --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --fork
--bind_ip=0.0.0.0 --fork
--dbpath :指定数据文件存放目录
--logpath :指定日志文件,注意是指定文件不是目录--logappend :使用追加的方式记录日志
--port:指定端口,默认为27017
--bind_ip:默认只监听localhost网卡--fork:后台启动
--auth:开启认证模式
添加环境变量
修改/etc/profile,添加环境变量,方便执行MongoDB命令