mongo学习整理
mongo做为NOSQL家族中一员,被广泛使用以及应用到生产环境中,有其出色的性能。关系型数据库(RDBMS )在互联网中依然是不可替代的一部分,mongo基于NOSQL的特性,在程序中RDBMS不适用或性能不高,操作不便,以及缺陷的领域发挥重要的作用。
RDBMS基于ACID准则设计:
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
NOSQL基于BASE思想CAP定理设计:
(1)Basically Available:基本可用;
(2)Soft-state:软状态/柔性事务,即状态可以有一段时间的不同步;
(3)Eventual consistency:最终一致性;
CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼
mongo不支持事物操作,需要事物情况需要程序模拟或者用RDBMS型数据库替代。
mongo支持单document基本操作的原子性。批量操作是非原子性的。
mongo基本操作查阅help。
下面讲一下mongo的主从、集群
mongo有master-slave模式 replica-set模式 share分片模式
官网推荐用replica-set模式代替master-slave模式;
1 mongo master-slave模式
主从模式:一个主服务,1-N个从服务 主服务有读写的权限,从服务可依据情况配置做可读或只做数据冗余。该模式下不具备故障转移的功能,当主服务器故障时,从服务器不具备写的功能,服务功能部分失效。
主服务器配置
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=10000
journal=true
dbpath=/data/mongo/master
master=true
从服务器配置
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=10001
journal=true
dbpath=/data/mongo/slave
slave=true
source=127.0.0.1:10000
依次启动服务器即可实现主从配置。若从服务器不可读,可在从服务器执行db.setSlaveOk()
2 replica-set(副本集)模式:该模式由两个以上服务器+arbiter组成。该模式下,会从N个正常服务中选出1个作为主服务,其他为secondary服务器,arbiter仲裁在主服务器故障时辅助选出新的主服务器,实现故障转移。
服务器配置:
# 0
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=10010
journal=true
dbpath=/data/mongo/replica/arbiter
# 1
replSet=rs0
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=10011
journal=true
dbpath=/data/mongo/replica/1
replSet=rs0
# 2
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=10012
journal=true
dbpath=/data/mongo/replica/2
replSet=rs0
配置了三个服务器 依次启动
var replicaSetConfig = {
_id: "rs0",
members: [
{ _id: 0,
host: 'localhost:10012',
},
{ _id: 1,
host: 'localhost:10011'
},
{ _id: 2,
host: 'localhost:10010',
arbiterOnly: true
}
]
}
rs.initiate(replicaSetConfig)配置副本集。
3 分片模式
其实分片是建立在其他模式上。
# config
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=3000
journal=true
dbpath=/data/mongo/config
# share路由
fork=true
logpath=/var/log/mongodb.log
logappend=true
port=3001
configdb=localhost:3000
mongos -f share路由.conf
进入mongos配置分片
sh.addShard( "rs1/mongodb0.example.net:27017" )
sh.addShard( "mongodb0.example.net:27017" )
sh.enableSharding(dbname)
sh.shardCollection("records.people", { "zipcode": 1, "name": 1 } )
sh.shardCollection("people.addresses", { "state": 1, "_id": 1 } )
sh.shardCollection("assets.chairs", { "type": 1, "_id": 1 } )
sh.shardCollection("events.alerts", { "_id": "hashed" } )
写的好乱!
mongo学习整理的更多相关文章
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- TweenMax学习整理--特有属性
TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...
- HttpClient学习整理
HttpClient简介HttpClient 功能介绍 1. 读取网页(HTTP/HTTPS)内容 2.使用POST方式提交数据(httpClient3) 3. 处理页面重定向 ...
- !!对python列表学习整理列表及数组详细介绍
1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...
- Java设计模式(学习整理)---命令模式
设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...
- Wix学习整理(5)——安装时填写注册表
原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...
- Wix学习整理(6)——安装快捷方式
原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...
- Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析
原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows In ...
随机推荐
- 酷派D530刷机指引之民间ROM
为什么要刷民间ROM? 下图左边是官方ROM,右边是民间ROM,单单看"程序内存"这一项,这个问题的答案应该无需多言: 选择民间ROM就跟找对象一样,没有最好的,只有最适合自己的, ...
- 一个linux下socket编程的例子,client连server
关于socket编程,以下文章写得比较好:http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html 1. accept()函 ...
- O - Marriage Match IV - hdu 3416(最短路+最大流)
题目大意:在城市A的男孩想去城市B的女孩,不过他去城市B必须走最短路,并且走过的路不可以再走,问他最多能看这个女孩多少次. 分析:因为这个男孩直走最短路,所以我们必须求出来所有最短路径上的路,怎么 ...
- QE是什么
量化宽松(Quantitative Easing,简称QE),是一种货币政策,主要指各国央行通过公开市场购买政府债券.银行金融资产等做法.量化宽松直接导致市场的货币供应量增加,可视为变相“印钞”.市场 ...
- 在windows下MySQLdb/MySQL-python的安装
学习Python的时候总是遇到各种各样的问题,很多问题我也百度了很久,谷歌了很多,发现很多人也遇到这种问题:但是答案又各种不同,因人而异吧! 问题:windows系统下 安装了mysql数据库 ...
- php命令行
转载(http://blog.jobbole.com/109093/) PHP作为一门web开发语言,通常情况下我们都是在Web Server中运行PHP,使用浏览器访问,因此很少关注其命令行操作以及 ...
- SKEffectNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架 /System/L ...
- Struts2框架具体解释
在Struts2的Model-View-Controller模式实现下面五个核心组件: 动作-Actions 拦截器-Interceptors 值栈/OGNL 结果/结果类型 视图技术 Struts ...
- Android使用GridView实现日历功能(详细代码)
代码有点多,发个图先: 如果懒得往下看的,可以直接下载源码吧(0分的),最近一直有人要,由于时间太久了,懒得找出来整理,今天又看到有人要,正好没事就整理了一下 http://download.csdn ...
- UITableView的编辑(插入、删除、移动)
先说两个方法beginUpdates和endUpdates,几点注意事项: 一般我们把行.块的插入.删除.移动写在由这两个方法组成的函数块中.如果你不是在这两个函数组成的块中调用插入.删除.移动方法, ...