返回

Debian平台安装MongoDB

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的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

NoSQL的优点/缺点

优点:

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构的灵活性,半结构化数据
  • 没有复杂的关系 缺点:
  • 没有标准化
  • 有限的查询功能(到目前为止)
  • 最终一致是不直观的程序

谁在使用

现在已经有很多公司使用了 NoSQL:

  • Google
  • Facebook
  • Mozilla
  • Adobe
  • Foursquare
  • LinkedIn
  • Digg
  • McGraw-Hill Education
  • Vermont Public Radio

什么是MongoDB ?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点

  • MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。

安装篇

下载地址:http://www.mongodb.org/downloads 下载完安装包,并解压 tgz。以下用64位的debian为例:

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian81-3.2.10.tgz
# 下载
tar -zxvf mongodb-linux-x86_64-debian81-3.2.10.tgz
# 解压
mv  mongodb-linux-x86_64-debian81-3.2.10 /usr/local/mongodb
# 将解压包拷贝到指定目录

需要注意的是:使用树莓派时。如果使用上面的安装包会发生问题,如会提示:

bash: ./mongo: cannot execute binary file: Exec format error

这是由于32位树莓派系统 运行64位的mongodb导致,所以在选择包时一定要注意! 如不清楚当前系统的版本可以使用

getconf LONG_BIT

获取。

创建数据文件和日志文件

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。 以下实例中我们将data目录创建于根目录下(/usr/local/mongodb/data )。

mkdir /data/mongodb/data
mkdir /data/mongodb/logs

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

export PATH=/usr/local/mongodb/bin:$PATH

命令行中运行 MongoDB 服务

你可以在命令行中执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务。

注意:如果你的数据库目录不是/data/mongodb/data,可以通过 –dbpath 来指定。

./mongod --dbpath=/data/mongodb/data --logpath=/data/mongodb/logs/mongodb.log --logappend --port=27017 --fork --rest

MongoDB后台管理 Shell 如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。 MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。 当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):

cd /usr/local/mongodb/bin
./mongo
MongoDB shell version: 3.0.6
connecting to: test
Welcome to the MongoDB shell.
……

由于它是一个JavaScript shell,您可以运行一些简单的算术运算:

> 2+2
4
> 3+6
9

现在让我们插入一些简单的数据,并对插入的数据进行检索:

> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }
>

第一个命令将数字 10 插入到 runoob 集合的 x 字段中。

MongoDb web 用户界面

MongoDB 提供了简单的 HTTP 用户界面。 如果你想启用该功能,需要在启动的时候指定参数 –rest 。

./mongod --=/data/mongodb/data --rest

MongoDB 的 Web 界面访问端口比服务的端口多1000。 如果你的MongoDB运行端口使用默认的27017,你可以在端口号为28017访问web用户界面,即地址为:http://localhost:28017。

参数解释:

logpath 日志文件路径 –master 指定为主机器 –slave 指定为从机器 –source 指定主机器的IP地址 –pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。 –logappend 日志文件末尾添加 –port 启用端口号 –fork 在后台运行 –only 指定只复制哪一个数据库 –slavedelay 指从复制检测的时间间隔 –auth 是否需要验证权限登录(用户名和密码)

-h [ –help ]             show this usage information –version                 show version information -f [ –config ] arg       configuration file specifying additional options –port arg                specify port number –bind_ip arg             local ip address to bind listener - all local ips                            bound by default -v [ –verbose ]          be more verbose (include multiple times for more                            verbosity e.g. -vvvvv) –dbpath arg (=/data/db/) directory for datafiles    指定数据存放目录 –quiet                   quieter output   静默模式 –logpath arg             file to send all output to instead of stdout   指定日志存放目录 –logappend               appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件 –fork                    fork server process   以创建子进程的方式运行 –cpu                     periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况 –noauth                  run without security 无认证模式运行 –auth                    run with security 认证模式运行 –objcheck                inspect client data for validity on receipt 检查客户端输入数据的有效性检查 –quota                   enable db quota management   开始数据库配额的管理 –quotaFiles arg          number of files allower per db, requires –quota 规定每个数据库允许的文件数 –appsrvpath arg          root directory for the babble app server –nocursors               diagnostic/debugging option 调试诊断选项 –nohints                 ignore query hints 忽略查询命中率 –nohttpinterface         disable http interface 关闭http接口,默认是28017 –noscripting             disable scripting engine 关闭脚本引擎 –noprealloc              disable data file preallocation 关闭数据库文件大小预分配 –smallfiles              use a smaller default file size 使用较小的默认文件大小 –nssize arg (=16)        .ns file size (in MB) for new databases 新数据库ns文件的默认大小 –diaglog arg             0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式 –sysinfo                 print some diagnostic system information 打印系统诊断信息 –upgrade                 upgrade db if needed 如果需要就更新数据库 –repair                  run repair on all dbs 修复所有的数据库 –notablescan             do not allow table scans 不运行表扫描 –syncdelay arg (=60)     seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s

Replication options: –master              master mode 主复制模式 –slave               slave mode 从复制模式 –source arg          when slave: specify master as server:port 当为从时,指定主的地址和端口 –only arg            when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库 –pairwith arg        address of server to pair with –arbiter arg         address of arbiter server 仲裁服务器,在主主中和pair中用到 –autoresync          automatically resync if slave data is stale 自动同步从的数据 –oplogSize arg       size limit (in MB) for op log 指定操作日志的大小 –opIdMem arg         size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小

Sharding options: –configsvr           declare this is a config db of a cluster 指定shard中的配置服务器 –shardsvr            declare this is a shard db of a cluster 指定shard服务器

MongoDB服务停止:

rm -f /usr/local/mongodb/data/mongod.lock

如果使用–fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。 1、普通命令:

mongo
use admin
db.shutdownServer()
db.shutdownServer()

若数据库出现如不能连上,则是一个data目录下的mongod.lock文件的问题,可以用如下的修复的命令

mongod --repair 

Via:菜鸟教程

Licensed under CC BY-NC-SA 4.0
最后更新于 Feb 11, 2017 17:15 UTC