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个从服务 主服务有读写的权限,从服务可依据情况配置做可读或只做数据冗余。该模式下不具备故障转移的功能,当主服务器故障时,从服务器不具备写的功能,服务功能部分失效。

主服务器配置

1 fork=true
2 logpath=/var/log/mongodb.log
3 logappend=true
4 port=10000
5 journal=true
6 dbpath=/data/mongo/master
7 master=true

从服务器配置

1 fork=true
2 logpath=/var/log/mongodb.log
3 logappend=true
4 port=10001
5 journal=true
6 dbpath=/data/mongo/slave
7 slave=true
8 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" } )

写的好乱!
 
时间: 2024-10-25 22:45:57

mongo学习整理的相关文章

ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

崧闱旭 ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

TweenMax学习整理--特有属性

TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number -- 缓动持续时间 vars:Object -- 其它参数(特有属性29个,插件17个,公共属性10个,公共方法20个) TweenMax提供的方法大多都会返回一个TweenMax Object实例 [特有属性(29个)] 这29个参数可以直接传入第三个obje

linux学习 整理(1)

ls目录文件 uname 现实当前系统信息 clear 清理 history 历史记录 ctrl + R 搜索历史记录 ESC按完之后按. 补齐上次参数 切换root用户 su - 使用管理员权限运行命令 sudo 现实当前用户信息 id 修改当前用户密码 passwd 命令 + & 在后台运行进程 jobs查看后台作业 ctrl + Z 暂停某个程序 bg 控制进程继续在后台运行 fg 控制进程在前台运行 ctrl + C 结束当前命令 linux学习 整理(1),布布扣,bubuko.com

锋利jQuery 学习整理之 第六章 jQuery 与Ajax 的应用

1.Ajax 的XMLHttpRequest 对象 XMLHttpRequest 是Ajax 的核心,它是Ajax 实现的关键---发送异步请求.接受响应及执行回调都是通过它来完成的.XMLHttpRequest最早是在Microsoft Internet Explorer  5.0  ActiveX 组件中被引用的. 2.JQuery 中的Ajax jQuery 对Ajax 进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第二层是load().$.load()和$.post(

HttpClient学习整理

HttpClient简介 HttpClient 功能介绍     1. 读取网页(HTTP/HTTPS)内容     2.使用POST方式提交数据(httpClient3)     3. 处理页面重定向     4. 模拟登录开心网     5. 提交XML格式参数     6. 访问启用认证的页面     7. 多线程模式下使用httpclient httpClient完整封装 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Ja