【MongoDB】MongoDB基本入门02
来源:互联网 发布:java配置log4j 编辑:程序博客网 时间:2024/05/29 10:20
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})
}
- use test; //切换数据库
- 1、创建分布式节点:
阅读全文
0 0
- 【MongoDB】MongoDB基本入门02
- 【MongoDB】MongoDB基本入门01
- MongoDB入门基本问题
- mongodb入门之mongodb基本语法
- Java mongodb 基本操作入门
- Java mongoDB 基本操作入门
- MongoDB入门(02)
- [MongoDB]MongoDB Java 入门
- 学习MongoDB--(2-2):MongoDB入门(Shell基本操作)
- 【MongoDB】MongoDB入门(一)基本操作&常用命令
- mongodb入门-3 数据类型--基本数据类型
- MongoDB PHP基本操作,快速入门
- mongodb入门
- MongoDB入门
- MongoDB入门
- mongoDB 入门
- mongoDB 入门
- mongoDB 入门
- 网络工程师成长日记151-面试好好面,别耍怪!
- JSP内置对象application、out、page、config,exception总结(五)
- 隔行换色+删除+批量删除+排序+模糊查询+修改+添加
- xRecyclerView刷新
- 关于gradle 的 执行顺序
- 【MongoDB】MongoDB基本入门02
- 【JQuery学习笔记一】理解JQuery对象含义和JQuery选择器的使用!
- 隔行换色+模糊查询+添加+删除+排序
- 数据库连接池 (DBCP、c3p0、Druid) 配置说明和对比
- 机器学习实战-10k-means聚类
- [Linux]IP地址配置
- ICCV 2017 Tutorial on Instance-level Visual Recohnition(slide1 introduction)
- Qt新建线程的方法(四种办法,很详细,有截图)
- caffe-源码学习——只看一篇就够了