MongoDB

学习大纲:

  1、MongoDB简介与其它数据库对比以及数据类型

  2、MongoDB安装

  3、MongoDB简单操作

环境要求:

  Linux


一、MongoDB简介

1 什么是MongoDB

  MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

  MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json和bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还能支持对数据建立索引。

2 什么是NoSQL

  NoSQL(NoSQL=Not Only SQl),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维注入。

3 NoSQL数据库的分类

3.1 键值(key-value)存储数据库

  这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分分值进行查询或更新的时候,key/value就显得低效率了。例如:

Tokyo Cabinet/Tyrant,
Redis, Voldemort, Oracle BDB

3.2列存储数据库

  这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是
指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak

3.3 文档型数据库

  文档型数据库的灵感是来自于 Lotus Notes 办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库 SequoiaDB,已经开源。

3.4图形(Graph)数据库

  图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL 数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多 NoSQL 数据库都有 REST 式的数据接口或者查询 API。如:Neo4J, InfoGrid, Infinite Graph

二、MongoDB与关系型数据库对比

1 与关系型数据库术语对比(我们可以发现还是很像的)

2 存储数据对比

3 RDBMS 与 MongoDB对应的术语

三、MongoDB的数据类型

四、MongoDB的下载与安装

1 下载MongoDB

  下载地址:https://www.mongodb.com/download-center/community

  本博文使用的是:mongodb-linux-x86_64-4.0.9.tgz 版本

2 安装MongoDB

2.1Linux 安装

  在 Linux 平台的 MongoDB 为解压版。我们只要解压 tgz 文件就可以使用。

2.1.1 下载 ForLinux  平台的 的 MongoDB

 

2.1.2 将下载的 tgz  包上传到 Linux

2.1.3解压tgz文件

通过tar命令对tgz文件做解压处理

2.1.4 移动 MongoDB

我们将解压完的 MongoDB 目录移动到/usr/local 目录中并改名为 mongodb。(当然这些都不是固定的)

2.1.5创建数据库目录

  MongoDB 的数据存储在 data 目录的 db 目录下,但是这个目录在安装过程不会自动创建,需要手动创建 data 目录,并在 data 目录中创建 db 目录。data 目录可以创建在任何位置。本套视频中,我们将 data 目录创建键 mongodb 的根目录下。

至此 Linux 平台中的 MongoDB 就已经安装完毕。很简单不是?

3 MongoDB的启动与关闭

3.1 启动 MongoDB

MongoDB 的启动方式分为两种

1)前置启动
2)后置启动

  无论哪种启动方式都需要执行 bin 目录中的 mongod 命令。MongoDB 在启动时默认的查找数据库的路径为/data/db。如果我们数据库路径有变化,需要在该命令中通过--dbpath 参数来指定 db 目录的路径(该路径可以是绝对路径,也可是相对路径)

3.1.1 前置启动

MongoDB 的默认启动方式为前置启动。所谓前置启动就是 MongoDB 启动进程后会占
用当前终端窗口。
进入到 MongoDB 的 bin 目录

执行 bin 目录中的 mongo 命令。

由于我们的 db 目录放在 mongodb 的根下,所以在执行该命令时需要通过 --dbpath 参数
指定 db 路径

启动后会在终端中输出一些启动信息。此时终端窗口已被启动进程所占用。我们通过启
动信息可以看到 MongoDB 默认的监听端口为 27017、

按 Ctrl+C 可结束启动进程关闭 MongoDB


3.1.2 后置启动(关闭后置启动进程可在文章后部分查看)

  所谓后置启动就是以守护进程的方式启动 MongoDB。我们需要在执行 mongod 命令中添加 --fork 参数。需要注意的是,--fork 参数需要配合着--logpath 或者是--syslog 参数使用。--logpath 与--syslog 参数是指定 MongoDB 的日志文件。MongoDB 的日志文件可以在系统中的任意位置,本文章中我们在 mongodb 目录下创建 log 目录,在该目录中创建一个名为mongodb.log 的日志文件。

创建 log 目录

在 log 目录中创建 mongodb.log 日志文件

后置启动 MongoDB

就此我们就已经启动成功了!

3.1.3常见的启动参数

我们初学者先大概了解就好,后续我会详细介绍的。

3.1.4 配置文件方式启动

  如果觉得在启动 MongoDB 时给定的参数项太多,那么我们也可以通过配置文件来配置启动参数,配置文件可以在任意目录中,配置文件的扩展名应为.conf,配置文件中使用key=value 结构。在执行 MongoDB 时通过--config 参数来指定需要加载的配置文件。

  我们在 mongodb 目录下创建一个 etc 目录,在该目录中创建一个名为 mongodb.conf 的配置文件。

创建 mongodb.conf 配置文件

编辑配置文件,在配置文件中添加配置项:
1)指定 db 路径
2)指定日志文件

3)设置所有ip都可以访问
4)配置端口
5)配置后端启动
在配置文件中配置启动参数时需要注意的是,在参数前不在加--符号,直接以参数名作
为 key 就可以

通过加载配置文件启动MongoDB


3.1.5配置环境变量

  为了能够在任何目录中执行 bin 目录中的命令,我们可以将 bin 目录添加到环境变量中。修 改 /etc/profile 文 件 , 添 加 export PATH=/usr/local/mongodb/bin:$PATH 。/usr/local/monogdb/bin 为 MongoDB 的 bin 目录的绝对路径。同学们可根据自己的情况来指

我们在配置文件的最后一行加上如下配置

重新加载/etc/profile 文件(这样只是临时生效,永久生效还需要重新启动linux)

测试结果

3.2 关闭MongoDB

3.2.1使用Ctrl+C关闭

  如果我们的启动方式是前置启动,那么直接使用快捷键 Ctrl+C 就可以关闭 MongoDB。这种关闭方式会等待当前进行中的的操作完成,所以依然是安全的关闭方式。

3.2.2使用kill命令关闭

  我们可以通过Linux的kill命令结束MongoDB进程,然后删除data目录中的mongod.lock文件,否则下次无法启动。但是此方法不建议使用,因为会造成数据损坏现象

3.2.3使用MongoDB的函数关闭

在MongoDB中提供了两个关闭数据库的函数:

db.shutdownServer()

db.runCommand("shutdown")

如上两个方法都需要在admin库中执行,并且都是安全的关闭方式

具体方法:

启动bin目录下的 mongo客户端文件(首先mongod是启动的)

./mongo

Ctrl + C退出客户端即可。

3.2.4 使用 mongod  命令关闭 MongoDB

./mongod --shutdown --dbpath<数据库路径>

例如:./mongod --shutdown --dbpath /usr/local/mongodb/data/db

mongod 命令的 shutdown 选项能安全的关闭 MongoDb服务

上边提到了好几次安全关闭,安全关闭到底指的是什么呢?

i比如我们在处理数据的时候,它还有后台进程正在进行工作,但是你直接启动关闭命令了,它会等手头活忙完然后才会关闭,否则会造成数据丢失  等不可预估后果。

就此本章入门的东西就ok了

有任何问题随时留言哦,欢迎指出问题!

MongoDB系列---入门安装操作的更多相关文章

  1. windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  2. elk系列1之入门安装与基本操作【转】

    preface 我们每天都要查看服务器的日志,一方面是为了开发的同事翻找日志,另一方面是巡检服务器查看日志,而随着服务器数量以及越来越多的业务上线,日志越来越多,人肉运维相当痛苦了,此时,参考现在非常 ...

  3. 前端开发必学技能之一———非关系数据库又像关系数据库的MongoDB快速入门第一步下载与安装

    数据库总的来说,分为两个方向:关系数据库和非关系数据库.我们常见的MySQL.Oracle.SQLSerever以及IBMDB2都是属于关系数据库,这里的关系值得是二维表的结构,但是由于随着web的应 ...

  4. Docker入门系列2 安装

    可以从 Docker 社区直接下载可用的模版或镜像. Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多. 其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Do ...

  5. MongoDB 学习笔记之 入门安装和配置

    下载MongoDB: 下载解压即可使用. 为了启动方便和统一管理, 在Mongo根目录下建立/data, /logs, /conf文件夹. 在conf文件夹下建立mongodb.conf 文件,基本配 ...

  6. MongoDB的使用学习之(三)安装MongoDB以及一些基础操作

    原文链接:http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html 此博主的 8天学通MongoDB 系列还是不错的,本 ...

  7. MongoDB入门安装

    一.基础信息 系统环境:Linux MongoDB最新版下载:https://codeload.github.com/mongodb/mongo/zip/r3.2.0 二.安装过程 1.将MongoD ...

  8. MongoDB系列一:CentOS7.2下安装mongoDB3.2.8

    最近在又在倒腾MongoDB,把安装配置的相关命令贴出来 1.下载 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70- ...

  9. Mongodb系列- CRUD操作介绍

    ---恢复内容开始--- 一 Create 操作 在MongoDB中,插入操作的目标是一个集合. MongoDB中的所有写入操作在单个文档的层次上都是原子的. For examples, see In ...

随机推荐

  1. 主动降噪技术(ANC)的前生今世--概念历史

    一 概念 假如使用一句通俗的语言来概述ANC的原理的话,那就是:通过发出与噪声相位相反,频率.振幅相同的声波与噪声干涉实现相位抵消. 使用比较正式的语言来解释就是:动降噪通过降噪系统产生与外界噪音相等 ...

  2. 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本

    小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...

  3. 【linux】【redis】redis安装及开启远程访问

    系统环境:Centos7 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 1.yum安装过程参考:https ...

  4. 数位DP 详解

    序 天堂在左,战士向右 引言 数位DP在竞赛中的出现几率极低,但是如果不会数位DP,一旦考到就只能暴力骗分. 以下是数位DP详解,涉及到的例题有: [HDU2089]不要62 [HDU3652]B-n ...

  5. 【ADO.NET基础-Login】带验证码验证的登录界面(用于简单的基础学习)

    以下代码如果有不对或者不妥之处,还望大神们指点一二 或者有同学者有问题或建议,一定要提出来,共同探讨 小弟在此感谢! 前台代码: <!DOCTYPE html> <html xmln ...

  6. MongoDB的全文索引

    ​ Table of Contents 背景 如何使用 准备工作:插入数据 建立全局索引 查询结果 使用中存在哪些问题? 英文存在停止词 中文无法采用全文索引 前面了解了多种索引方式,比如单键索引,多 ...

  7. .Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架

    之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net. 一.搭建kafka 1.拉取镜像 //下载zookeeper docke ...

  8. layload.js的使用

    网上有人反映说lazyload只是效果好看并没有实现真正的懒加载,在后台仍然是把页面上的所有图片下了一遍,只不过是先把图片隐藏并在窗口向下滚动时再逐一显示出来罢了.lazyloag3经测试这个问题已经 ...

  9. redis查找大key

    redis中查找出比较大的key 下面直接上代码 (请在测试机上测试) #!/usr/bin/env python import sys import redis def check_big_key( ...

  10. 使用golang插入mysql性能提升经验

    前言 golang可以轻易制造高并发,在某些场景很合适,比如爬虫的时候可以爬的更加高效.但是对应某些场景,如文件读写,数据库访问等IO为瓶颈的场合,就没有什么优势了. 前提基础 1.golang数据库 ...