架构师日记——MongoDB简介和安装使用

MongoDB是什么

MongoDB是一个使用C++编写的、开源的、面向文档的NoSQL(Not Only SQL)数据库,也是当前最热门的NoSql数据库之一。
关系型数据库是面向记录的,在关系型数据库中一个item是一条记录,在非关系型数据库中一个item是一个文档,举个例子

uuidnameage
1u1zhangsan

在NoSQL中是

  • {“uuid”:1,”userId”:”u1”,”name”:zhangsan}

NoSQL简介

NoSQL的意思是“不仅仅是SQL”,是目前流行的“非关系型数据库”的统称。
常见的NoSQL数据库如:Redis、CouchDB、MongoDB、HBase、Cassandra等

为什么需要NoSQL?

简单的说,就是为了解决在web2.0时代,出现的三高要求:
1:对数据库高并发读写的需求
2:对海量数据的高效率存储和访问的需求
3:对数据库的高可扩展性和高可用性的需求
而RDB里面的一些特性,在web2.0里面往往变得不那么重要,比如:
1:数据库事务一致性
2:数据库的实时读写
3:复杂的SQL查询,特别是多表关联查询

CAP定理, 又被称作布鲁尔定理(Eric Brewer)

它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
1:强一致性(Consistency):系统在执行过某项操作后仍然处于一致的,在分布式系统中,更新操作执行成功后所有的用户都应该读取到最新的值,这样的系统被认为具有强一致性
2:可用性(Availability):每一个操作总是能够在一定的时间内返回结果
3:分区容错性(Partition tolerance):系统在存在网络分区的情况下仍然可以接受请求并处理,这里网络分区是指由于某种原因网络被分成若干个孤立区域,而区域之间互不相通

根据CAP原理将数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:

1:CA:单点集群,满足一致性,可用性,通常在可扩展性上不太强大,比如RDB
2:CP:满足一致性和分区容错性,通常性能不是特别高,如分布式数据库
3:AP:满足可用性和分区容错性,通常可能对一致性要求低一些,如大多数的NoSQL

BASE(Basically Available,Soft-state,Eventual consistency )

1:基本可用(Basically Available):系统能够基本运行、一直提供服务。
2:软状态(Soft-state):系统不要求一直保持强一致状态。
3:最终一致性(Eventual consistency):系统需要在某一时刻后达到一致性要求

NoSQL的优点

  1. 扩展简单方便,尤其是水平横向扩展(纵向扩展是指用更强的机器;横向扩展是指把数据分散到多个机器)
  2. 读写快速高效,多数都会映射到内存操作
  3. 成本低廉,用普通机器,分布式集群即可
  4. 数据模型灵活,没有固定的数据模型

NoSQL的缺点

  1. 不提供对SQL的支持
  2. 现有产品还不够成熟稳定,功能也还有待加强

MongoDB特点

  1. 高性能、易于使用、易于扩展、功能丰富
  2. 面向集合存储,模式自由
  3. 支持动态查询,支持javascript表达式查询
  4. 支持索引
  5. 支持副本集复制和自动故障恢复
  6. 自动处理分片
  7. 支持二进制和大型对象数据
  8. 文件存储格式为BSON(JSON的一种扩展)

安装MongoDB

Ubuntu

sudo apt-get install mongodb

CentOS

sudo yum install mongodb

启动MongoDB-Server

mongod

启动MongoDB-Client

mongo

关闭MongoDB

pkill mongod

或启动MongoDB-Client,输入

use admin
db.shutdownServer()

启动参数配置
启动MongoDB-Server时mongod后可以加很多参数,如下

  • –quiet # 安静输出
  • –port arg # 指定服务端口号,默认端口27017
  • –bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
  • –logpath arg # 指定MongoDB日志文件,注意是指定文件不是目录
  • –logappend # 使用追加的方式写日志
  • –pidfilepath arg # PID File 的完整路径,如果没有设置,则没有PID文件
  • –keyFile arg # 集群的私钥的完整路径,只对于Replica Set 架构有效
  • –unixSocketPrefix arg # UNIX域套接字替代目录,(默认为 /tmp)
  • –fork # 以守护进程的方式运行MongoDB,创建服务器进程
  • –auth # 启用验证
  • –cpu # 定期显示CPU的CPU利用率和iowait
  • –dbpath arg # 指定数据库路径
  • –diaglog arg # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
  • –directoryperdb # 设置每个数据库将被保存在一个单独的目录
  • –journal # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
  • –journalOptions arg # 启用日志诊断选项
  • –ipv6 # 启用IPv6选项
  • –jsonp # 允许JSONP形式通过HTTP访问(有安全影响)
  • –maxConns arg # 最大同时连接数 默认2000
  • –noauth # 不启用验证
  • –nohttpinterface # 关闭http接口,默认关闭27018端口访问
  • –noprealloc # 禁用数据文件预分配(往往影响性能)
  • –noscripting # 禁用脚本引擎
  • –notablescan # 不允许表扫描
  • –nounixsocket # 禁用Unix套接字监听
  • –nssize arg (=16) # 设置信数据库.ns文件大小(MB)
  • –objcheck # 在收到客户数据,检查的有效性,
  • –profile arg # 档案参数 0=off 1=slow, 2=all
  • –quota # 限制每个数据库的文件数,设置默认为8
  • –quotaFiles arg # number of files allower per db, requires –quota
  • –rest # 开启简单的rest API
  • –repair # 修复所有数据库run repair on all dbs
  • –repairpath arg # 修复库生成的文件的目录,默认为目录名称dbpath
  • –slowms arg (=100) # 配置文件和控制台日志的慢速值
  • –smallfiles # 使用较小的默认文件
  • –syncdelay arg (=60) # 数据写入磁盘的时间秒数(0=never,不推荐)
  • –sysinfo # 打印一些诊断系统信息
  • –upgrade # 如果需要升级数据库
    Replicaton 参数
  • –fastsync # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步
  • –autoresync # 如果从库与主库同步数据差得多,自动重新同步,
  • –oplogSize arg # 设置oplog的大小(MB)
    主/从参数
  • –master # 主库模式
  • –slave # 从库模式
  • –source arg # 从库 端口号
  • –only arg # 指定单一的数据库复制
  • –slavedelay arg # 设置从库同步主库的延迟时间
    Replica set(副本集)选项:
  • –replSet arg # 设置副本集名称
    Sharding(分片)选项
  • –configsvr # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb
  • –shardsvr # 声明这是一个集群的分片,默认端口27018
  • –noMoveParanoia # 关闭偏执为moveChunk数据保存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值