Mongodb介绍安装
第1章 NoSQL 介绍
1.1 NoSQL 简介
NoSQL(NoSQL = Not Only SQL )
,意即”不仅仅是SQL”。
在现代的计算系统上每天网络上都会产生庞大的数据量。
这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。1970 年E.F.Codd’s 提出的
关系模型的论文“A relational model of data for large shared data banks”,这使得数据建模和应用程序
编程更加简单。
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化
数据存储在网络和商务应用的主导技术。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009 年趋势越发高涨。NoSQL
的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一
种全新的思维的注入。
1.2 什么是NoSQL
NoSQL
,指的是非关系型的数据库。NoSQL
有时也称作Not Only SQL 的缩写,是对不同于传统的关
系型数据库的数据库管理系统的统称。
对NoSQL
最普遍的解释是”非关联型的”,强调Key-Value Stores 和文档数据库的优点,而不是单
纯的反对RDBMS。
NoSQL 用于超大规模数据的存储。(例如谷歌或Facebook 每天为他们的用户收集万亿比特的数据)。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
1.3 为什么使用NoSQL ?
今天我们可以通过第三方平台(如:Google,Facebook 等)可以很容易的访问和抓取数据。
用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果
要对这些用户数据进行挖掘,那SQL 数据库已经不适合这些应用了, NoSQL 数据库的发展也却能很好
的处理这些大的数据。
第2章 MongoDB 简介
Mongodb
由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。,是专为可扩展性,
高性能和高可用性而设计的数据库, 是非关系型数据库中功能最丰富,最像关系型数据库的,它支
持的数据结构非常散,是类似json 的bjson 格式,因此可以存储比较复杂的数据类型。
MongoDB
的(来自于英文单词“了Humongous”,中文含义为“庞大”)是可以应用于各种规模的
企业,各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB 的
的数据模式可以随着应用程序的发展而灵活地更新。
MongoDB
以一种叫做BSON(二进制JSON)的存储形式将数据作为文档存储。具有相似结构的文
档通常被整理成集合。可以把这些集合看成类似于关系数据库中的表: 文档和行相似, 字段和列相
似。
2.1 MongoDB 数据格式
2.1.1 JSON
JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。JSON
采用完全独立于语言的文本格
式,但是也使用了类似于C 语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python
等)。这些特性使JSON 成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成(一
般用于提升网络传输速率)。JSON 的官方MIME 类型是application/json,文件扩展名是.json。
MongoDB 使用JSON(JavaScript ObjectNotation)文档存储记录。
JSON 简单说就是JavaScript 中的对象和数组,通过对象和数组可以表示各种复杂的结构。
对象:
对象在js 中表示为“{}”括起来的内容,数据结构为{key: value,key: value,…}的键值对的
结构,在面向对象的语言中, key 为对象的属性, value 为对应的属性值,所以很容易理解,取值方
法为对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。
例如: {“FirstName”:”ke”,”LastName”:”me”,”email”:”hikeme@aa”}
取值方式和所有语言中一样,使用key 获取,字段值的类型可以是数字、字符串、数组、对象几种。
2.1.2 BSON
BSON
是一种类JSON 的一种二进制形式的存储格式,简称Binary JSON,它和JSON 一样,支持内
嵌的文档对象和数组对象,但是BSON 有JSON 没有的一些数据类型,如Date 和BinData 类型。
它的优点是灵活性高,但它的缺点是空间利用率不是很理想。BSON
有三个特点:轻量性、可遍历性、高效性。
对JSON 来说,数据存储是无类型的,比如你要修改基本一个值,从9 到10,由于从一个字符变成
了两个,所以可能其后面的所有内容都需要往后移一位才可以。而使用BSON,你可以指定这个列为
数字列,那么无论数字从9 长到10 还是100,我们都只是在存储数字的那一位上进行修改,不会导
致数据总长变大。当然,在MongoDB 中,如果数字从整形增大到长整型,还是会导致数据总长变大
的。
有时BSON 相对JSON 来说也并没有空间上的优势,比如对{“sex”:1},在JSON 的存储上1 只使用了一个字节,而如果用BSON,那就是至少4 个字节
2.2 MongoDB 特点
高性能:
Mongodb
提供高性能的数据持久性,尤其是支持嵌入式数据模型减少数据库系统上的I/O
操作,索引支持能快的查询,并且可以包括来嵌入式文档和数组中的键
丰富的语言查询:
Mongodb
支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间索引
高可用性:
Mongodb
的复制工具,成为副本集,提供自动故障转移和数据冗余,
水平可扩展性:
Mongodb
提供了可扩展性,作为其核心功能的一部分,分片是将数据分,在一组计算机上。
支持多种存储引擎:
WiredTiger 存储引擎和、MMAPv1 存储引擎和InMemory 存储引擎
2.3 MongoDB 包含的程序
MongoDB Drivers
官方MongoDB 客户端库提供C, C ++, C#, Java, Node.JS, Perl, PHP,Python, Ruby 和
Scala 驱动程序的参考指南。
MongoDB Stitch
为开发人员提供了一个API 到MongoDB 和其他后端服务。保持MongoDB 的全部功能和灵性,同时
受益于强大的系统来配置细粒度的数据访问控制。
MongoDB Atlas
MongoDB 在云中部署,操作和扩展的最佳方式。适用于AWS,Azure 和Google Cloud Platform。轻
松将数据迁移到MongoDB Atlas,零停机
MongoDB Cloud Manager
是一个用于管理MongoDB 部署的软件包。Ops Manager 提供Ops Manager 监控和Ops Manager 备份,可帮助用户优化群集并降低操作风险
MongoDB Charts
可以最快速最简单的创建Mongodb 可视化图表
MongoDB Connector for BI
MongoDB 商业智能连接器(BI)允许用户使用SQL 创建查询,并使用现有的关系商业智能工具(如
Tableau, MicroStrategy 和Qlik)对其MongoDB Enterprise 数据进行可视化,图形化和报告。
MongoDB Compass
通过从集合中随机抽样一个文档子集,为用户提供其MongoDB 模式的图形视图。采样文件可最大程
度地降低对数据库的影响,并能快速产生结果。有关抽样的更多信息
MongoDB Spark Connector
使用连接器,您可以访问所有使用MongoDB 数据集的Spark 库:用SQL 进行分析的数据集(受益于
自动模式推理),流式传输,机器学习和图形API。您也可以使用连接器与Spark Shell。
第3章 应用场景
1 | https://www.zhihu.com/question/32071167 |
第4章 安装部署
4.1 官方文档
1 | https://docs.mongodb.com/manual/ |
4.2 安装方式
1 | https://www.mongodb.com/download-center/enterprise |
这里选用tar 包的安装方式
1 | mongodb-linux-x86_64-3.6.13.tgz |
4.3 目录规划
1 | #下载并解压 |
第5章 配置文件
5.1 创建配置文件
1 | cat > /opt/mongo_27017/conf/mongodb.conf << EOF |
5.2 启动关闭mongo
1 | /opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf |
5.3 检查是否启动
1 | ps -ef|grep mongo |
第6章 登录mongo
6.1 写入环境变量
1 | echo 'PATH=$PATH:/opt/mongodb/bin' >> /etc/profile |
6.2 创建hosts 解析
1 | [root@db01 ~]# cat > /etc/hosts <<EOF |
6.3 登录mongo
1 | /opt/mongodb/bin/mongo |
6.4 关闭命令
2 种关闭方式,建议使用mongo 自带的命令
方法1:登陆mongo 使用内置shutdown 命令
1 | [root@db01 ~]# mongo localhost:27017 |
方法2:启动命令添加–shutdown 命令
1 | [mongo@db01 ~]$ mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown |
第7章 警告优化
7.1 内存不足
1 | #报警内容1:内存不足 |
7.2 配置访问控制参数
1 | #报警内容2:配置访问控制参数 |
7.3 普通用户启动
1 | #报警内容3:不是以普通用户启动 |
7.4 never
1 | #报警内容4:We suggest setting it to 'never' |
赋予脚本权限
1 | chmod 755 /etc/init.d/disable-transparent-hugepages |
加入开机自启动
1 | chkconfig --add disable-transparent-hugepages |
7.5 用户访问控制
配置文件增加用户认证的配置参数
1 | security: |
第8章 mongodb 默认存在的库
1 | > show dbs |
操作命令:
1 | show databases/show dbs |