您的位置:首页 > 数据库 > Mongodb

【MongoDB】MongoDB基本入门02

2017-11-22 23:07 239 查看

MongoDB的固定集合

固定集合简介:

固定集合指的是事先创建而且大小固定的集合。

固定集合特性:

固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间

应用场景:

固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。

创建命令

db.createCollection(“cap1”,{capped:true,size:1000,max:100});

当我们执行下面命令时,发现加入了53条,因为先前添加的会被覆盖掉

for(var i=1;i<=100;i++) {
db.cap1.insert({name:'liuyang',age:i});
}


MongoDB的数据库安全

更改MongoDB端口:

借助mongod命令,更改服务器端启动端口为2222端口号

mongod –dbpath=D:\mongdbpath –port 2222

连接mongo localhost:2222

安全和认证:

我们要开启服务端的安全检查,但是在开启安全检查之前,需要有一个管理员的账号,admin数据库当中的用户会被视为超级管理员。

第一步:在admin数据库中创建管理员账号;

user admin;

db.addUser(‘root’,’123456’),(超级用户、管理员)

admin数据库中必须有一个管理员、超级用户。

第二步:在itcast数据库中创建普通账号;

user itcast;

db.addUser(‘duxiaowen’,’1234’);//可读可写的用户

db.addUser(‘gaomingzhen’,’1234’,true);//只读用户

第三步:重启数据库服务,并开启安全检查

mongod –dbpath=D:\mongdbpath –port 2222 –auth

第四步:客户端认证连接

use itcast;//使用itcast

再执行
show table
命令时,将会要求认证登录。

db.auth(‘duxiaowen’,’1234’); //登录

MongoDB的主从复制 - 读写分离(集群)

因为单台计算机性能不够,对外的并发有限,我们可以利用多台计算机对外提供服务,因为多台计算机对外提供服务的时候我们能够在处理客户端的响应时候,他这样的并发数能达到比较均衡的需求。

开启主存储

mongod --dbpath=D:\master --port 10000 --master


开启从存储

mongod --dbpath=D:\slave --port 10001 --slave --source localhost:10000


source指向主存储地址

主从赋值:当主存储服务器瘫痪,从节点服务器可以提供查询,但不能执行写入功能。

MongoDB的副本集 - 自动故障恢复功能(集群)

主从集群和副本集最大的区别就是副本集没有固定的“主节点”;整个集群会选出一个“主节点”,当其挂掉后,由剩下的从节点中选出一个节点成为“主节点”,副本集总有一个活跃点(primary)和一个或多个备份节点(secondary)。

只有成为活跃点之后才可以进行增删改查操作。

启动节点一:

mongod --dbpath D:\mongodb\dbs\node1 --logpath D:\mongodb\logs\node1\logs.txt --logappend --port 10001 --replSet itcast/localhost:10002  --master


其中
localhost:10002
是因为副本集必须有两个以上节点,这里是说明当前节点与
localhost:10002
为一组。

启动节点2:

mongod --dbpath D:\mongodb\dbs\node2 --logpath D:\mongodb\logs\node2\logs.txt --logappend --port 10002 --replSet itcast/localhost:10001


启动节点3:

mongod --dbpath D:\mongodb\dbs\node3 --logpath D:\mongodb\logs\node3\logs.txt --logappend --port 10003 --replSet itcast/localhost:10001,localhost:10002


mongodb的分布式部署

将数据分散到不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更多的负载。

MongoDB分片的基本思想就是将集合切分成小块。这些块分散到若干片里面,每个片只负责总数据的一部分。应用程序不必知道哪片对应哪些数据,甚至不需要知道数据已经被拆分了,所以在分片之前要运行一个路由进程,该进程名为mongos。这个路由器知道所有数据的存放位置,所以应用可以连接它来正常发送请求。对应用来说,它仅知道连接一个普通的mongod。路由器知道数据和片的对应关系,能够转发请求到正确的片上。如果请求有了回应,路由器将其收集起来回送给应用。

创建分布式案例:

1、创建分布式节点:

mongod --dbpath=D:\mongodb\node4444 --port 4444


mongod --dbpath=D:\mongodb\node5555 --port 5555


mongod --dbpath=D:\mongodb\node6666 --port 6666


2、启动config:数据与片之间的关系(路由通过这个来找数据)

mongod --dbpath=D:\mongodb\configdb --port 2222


3、启动路由:客户端访问数据是通过请求路由获取,路由通过上面的config(数据与片的关系)来查找分布式节点数据。

mongos --port 3333 --configdb=localhost:2222


configdb:配置数据与片之间的关系。

4、客户端登录路由:

mongo localhost:3333/admin


5、客户端通过mongos来添加分片:

db.runCommand({addshard:’localhost:4444’,allowLocal:true});

db.runCommand({addshard:’localhost:5555’,allowLocal:true});

db.runCommand({addshard:’localhost:6666’,allowLocal:true});

allowLocal:表示localhost:4444节点可以自己连接,不用通过路由来间接访问。

6、开启数据库分片功能:这里开启test数据库

db.runCommand({‘enablesharding’:’test’});

7、制定集合中分片的片键:这里制定为test.person中的age键

db.runCommand({‘shardcollection’:’test.person’,’key’:{age:1}})

8、添加数据

use test; //切换数据库

for(var i=1;i<10000000;i++) {

db.person.insert({name:'zhouxiaoling',age:i})

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb 基础入门