一、NoSQL数据简介

1、NoSQL概念

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

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

2、NoSQL数据库的四大分类

2.1、键值(Key-Value)存储数据库

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

2.2、列存储数据库

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

                2.3、文档型数据库

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

2.4、图形(Graph)数据库

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

3、NoSQL数据库在以下的这几种情况下比较适用:

1、数据模型比较简单;

2、需要灵活性更强的IT系统;

3、对数据库性能要求较高;

4、不需要高度的数据一致性;

5、对于给定key,比较容易映射复杂值的环境。

二、MongoDB简介

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

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

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

使用场景:

1、MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,Mongo 适用于以下场景。

● 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

● 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。

● 大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。

● 用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。

    2、MongoDB 的使用也会有一些限制

● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

● 需要SQL 的问题。

三、安装详解

1、MongoDB官网下载地址

https://www.mongodb.com/download-center?jmp=nav#community

     2、下载MongoDB安装包

                //MongoDB保存安装包的地址
               [root@linux mongodb]# pwd
/root/software/download/mongodb [root@linux mongodb]# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz [root@linux mongodb]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz

     3、解压下载的文件

               //MongoDB保存安装包的地址
               [root@linux mongodb]# pwd
/root/software/download/mongodb
               [root@linux mongodb]# tar -zxvf mongodb-linux-x86_64-3.6..tgz

4、将解压的整个文件夹复制到目标目录。

                 //MongoDB运行的当前目录
[root@linux mongodb]# pwd
/root/application/program/mongodb [root@linux mongodb]# mkdir -p /root/application/program/mongodb
[root@linux mongodb]# cp -R -n /root/software/download/mongodb/mongodb-linux-x86_64-3.6./ ./

这一步可以按着我的操作来做,也可以自定义操作,我为什么要拷贝一下,因为,我下载的文件和运行的文件在不同的目录,我保存下载文件的地址是:/root/software/download/mongodb/,运行程序的目录地址:/root/application/program/mongodb/,因此我需要拷贝一下。

               5、创建保存数据文件和日志文件的目录

               //MongoDB当前运行的目录
[root@linux bin]# pwd
/root/application/program/mongodb/mongodb-linux-x86_64-3.6.3/bin //在 /root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/ 目录中创建一个存放日志的目录:
[root@linux bin]# mkdir -p logs //在 /root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/ 目录中创建一个存放数据文件的目录:
[root@linux bin]# mkdir -p datas

               6、创建Mongodb.conf配置文件,可以根据配置文件启动MongoDB,配置文件的内容如下:

               # 设置数据文件的存放目录
dbpath = /root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/datas # 设置日志文件的存放目录及其日志文件名
logpath =/root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/logs/mongodb.log # 设置端口号(默认的端口号是 )
port = # 设置为以守护进程的方式运行,即在后台运行
fork = true 参数解释:
--dbpath 数据库路径(数据文件) --logpath 日志文件路径 --master 指定为主机器 --slave 指定为从机器 --source 指定主机器的IP地址 --pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。 --logappend 日志文件末尾添加,即使用追加的方式写日志 --journal 启用日志 --port 启用端口号 --fork 在后台运行 --only 指定只复制哪一个数据库 --slavedelay 指从复制检测的时间间隔 --auth 是否需要验证权限登录(用户名和密码) --syncdelay 数据写入硬盘的时间(秒),0是不等待,直接写入 --notablescan 不允许表扫描 --maxConns 最大的并发连接数,默认2000 --pidfilepath 指定进程文件,不指定则不产生进程文件 --bind_ip 绑定IP,绑定后只能绑定的IP访问服务

  7、启动 Mongodb 服务器

MongoDB的启动脚本文件都在这个目录 /root/application/program/mongodb/mongodb-linux-x86_64-3.6.3/bin /下,如果想要执行MongoDB启动等类似的操作,必须进到 bin 目录下边才可以。需要说明一点,需要在执行的命令前增加【./】符号,比如:./mongod ,./mongo ,如果不加 ./ 符号,直接执行 mongod、mongo 命令会有错误,提示:command not found。

  7.1、以自定义的 mongodb 配置文件方式启动:

                    //MongoDB当前运行的目录
[root@linux bin]# pwd
/root/application/program/mongodb/mongodb-linux-x86_64-3.6.3/bin
                    [root@linux bin]# ./mongod --config mongodb.conf

                    [root@linux bin]# ./mongod -f  mongodb.conf

7.2、以修复模式启动 Mongodb:(此功能是修复用的,修复完后需要使用 7.1 方式启动,才可以使用Mongodb服务)

                    //MongoDB当前运行的目录
[root@linux bin]# pwd
/root/application/program/mongodb/mongodb-linux-x86_64-3.6.3/bin
                    [root@linux bin]# ./mongod --repair -f mongodb.conf

7.3、以参数式启动:

                   //MongoDB当前运行的目录
[root@linux bin]# pwd
/root/application/program/mongodb/mongodb-linux-x86_64-3.6.3/bin
                   [root@linux bin]# ./mongod --dbpath= /root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/datas --logpath=/root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/logs/mongodb.log --fork

    8、 查看 mongodb 进程:

                [root@linux bin]# ps -ef |grep mongodb

                [root@linux bin]# ps aux |grep mongodb

                9、关掉MongoDB的服务

                [root@linux bin]# kill - (PID)

    10、检查端口是否已被启动:

                [root@linux bin]# netstat -lanp | grep 

                11、查看 MongoDB 服务的运行日志:

               [root@linux bin]# tail -200f /root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin/logs/mongodb.log

                   12、启动 Mongodb的客户端


                //MongoDB当前运行的目录
//两种启动方式都可以
[root@linux bin]# pwd
/root/application/program/mongodb/mongodb-linux-x86_64-3.6.3/bin
               [root@linux bin]# ./mongo 192.168.127.130
                //两种启动方式都可以
[root@linux bin]# ./mongo --host 192.168.127.130 --port 27017
         [root@linux bin]# ./mongo --host=192.168.127.130 --port=27017

                     13、关闭Mongodb客户端

               > exit 或者 Ctrl+C

                     14、在局域网内的其它机器使用工具连接测试一下。

有的小伙伴可能会发现无法连接,通常这都是防火墙的端口没有打开造成的

                  //在Linux环境上使用命令打开端口

                  #开启端口
[root@linux bin]# firewall-cmd --zone=public --add-port=/tcp --permanent //查看端口
[root@linux bin]#firewall-cmd --permanent --query-port=/tcp //重启防火墙
firewall-cmd --reload

四、总结

好了,今天就写到这里了。从今天开始,我将开始一个新的系列,那就是MongoDB,当然它也属于Nosql数据库的范畴。今天是第一篇文章,既然是入门,别的没有,先介绍一下如何在Linux环境中安装Mongodb。下一篇文章介绍一下如何在Window环境下安装MongoDb,很简单,然后再在Window是环境下安装一个Mongodb的可视化管理工具。

MongoDb进阶实践之一 如何在Linux(CentOS 7)上安装MongoDB的更多相关文章

  1. MongoDb进阶实践之一 如何在Linux系统上安装和配置MongoDB

    转载来源:https://www.cnblogs.com/PatrickLiu/p/8630151.html 一.NoSQL数据简介 1.NoSQL概念 NoSQL(NoSQL = Not Only ...

  2. Redis进阶实践之二如何在Linux系统上安装安装Redis(转载)(2)

    Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了“如何安装VMware Pro虚拟机”和在虚拟机上安装Linux操作系统.那是第一步,有了Linux操作系统,我 ...

  3. Linux Centos 系统上安装BT客户端 Transmission

    Linux Centos 系统上安装BT客户端 Transmission   Transmission是一种BitTorrent客户端,特点是一个跨平台的后端和其上的简洁的用户界面,以MIT许可证和G ...

  4. Linux CentOS系统上安装Eclipse

    Linux CentOS系统上安装Eclipse 1. 下载Eclipse软件 下载网址:http://www.eclipse.org/downloads/packages/release/Juno/ ...

  5. Redis进阶实践之二如何在Linux系统上安装安装Redis

    一.引言      上一篇文章写了"如何安装VMware Pro虚拟机"和在虚拟机上安装Linux操作系统.那是第一步,有了Linux操作系统,我们才可以在该系统上安装Redis. ...

  6. 在Windows上安装MongoDB

    原文官方文档:https://docs.mongodb.org/v2.6/tutorial/install-mongodb-on-windows/ 基于版本:MongoDB 2.6 概览 通过这个示例 ...

  7. MongoDb进阶实践之六 MongoDB查询命令详述(补充)

    一.引言         上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...

  8. Redis进阶实践之三如何在Windows系统上安装安装Redis(转载)

    Redis进阶实践之三如何在Windows系统上安装安装Redis 一.Redis的简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 ...

  9. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

随机推荐

  1. 多项式A除以B

    这个问题我是在PAT大区赛题里遇见的.题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数 ...

  2. Spark SQL1.2测试

    Spark SQL 1.2 运行原理 case class方式 json文件方式 背景:了解到HDP也能够支持Spark SQL,但官方文档是版本1.2,希望支持传统数据库.hadoop平台.文本格式 ...

  3. 内存映射mmap的几个api及其使用

    内存映射 mmap 内存映射mmap函数的作用是建立一段可以被两个或者多个程度读写的内存段,一个程序对他进行任何修改,对其它程序可见.同样,这个功能可以用在对文件的处理上,mmap函数创建一个指向一个 ...

  4. V4L2驱动的移植与应用(一)

    V4L2(video for linux) 可以支持多种设备,它可以有以下5种接口: 1.视频采集接口(video capture interface):这种应用的设备可以是高频头或者摄像头.V4L2 ...

  5. 实战DeviceIoControl 之一:通过API访问设备驱动程序

    Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数.读写绝对扇区数据.测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数Dev ...

  6. JAVA之编码---->CSV在文本下是正常的,用EXCEL打开是乱码的问题

    JAVA之编码---->CSV在文本下是正常的,用EXCEL打开是乱码的问题 在JAVA下输出文件流,保存成CSV(用UTF-8)文件,怎么处理用EXCEL下是乱码,但是在记事本等其他软件都是正 ...

  7. net.at.json.JSONException

    1.错误描述 严重:Servlet.service() for servlet [clientServlet] in context with path [/User] threw exception ...

  8. HTML5不允许写结束标记的元素

    HTML5不允许写结束标记的元素 1.area 2.base 3.br 4.col 5.command 6.embed 7.img 8.hr 9.keygen 10.link 11.meta 12.p ...

  9. 谈下spring下的 aop日志记录

    在我们开发当中  我们需要对系统用户行为和 系统异常信息有个统一记录  以便后期的 用户行为分析和bug修复   当我们有这个需求时  我们的通常采取方式很多 1.比如我们定义一个规范 开发一个接口 ...

  10. hdu5988 Coding Contest

    首先这是个费用流,用log转乘法为加法,外加模板的修改,需加eps 下面是废话,最好别看 闲来无事(鼓起勇气)写这篇博客 这是个自带影像回访的题目 青岛的炼铜之旅,大学的acm生涯就这样结束了.或许还 ...