作业五及答案
快捷查找:Ctrl+F 在搜索框中输入题目
一. 单选题(共3题)
1. (单选题 )MongoDB被用作分片群集的控制器和查询路由器的组件是()
A. mongod
B. mongos
C. mongo
D. shard
我的答案: B:mongos;正确答案: B:mongos;
2. (单选题 )下列描述中,哪一个不是对创建副本集作用的描述()
A. 加重单台服务器的负载;
B. 故障转移,系统中其中一项设备或服务失效而无法运作时,另一项设备或服务即可自动接手原失效系统所执行的工作。
C. 避免单点,用于灾难时恢复,报表处理,提升数据可用性。
D. 还能提高读取能力,用户的读取服务器和写入服务器在不同的地方。
正确答案: A:加重单台服务器的负载;;
3. (单选题 )关于MongoDB副本集的描述,错误的是()
A. 不能对备份节点执行写操作。备份节点只通过复制功能写入数据,不接受客户端的写 入请求。
B. mongodb各个节点常见的搭配方式为:一主一从、一主多从。
C. mongodb的复制至少需要三个节点,其中一个是主节点。
D. 所有写入操作都在主节点上。
正确答案: C:mongodb的复制至少需要三个节点,其中一个是主节点。;
二、填空题
4. (填空题 )MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有____个Primary节点和____个Secondary节点组成。
正确答案:
(1) 一;1
(2) 多
5. (填空题 )MongoDB的replica set集群之间依靠____日志进行数据同步。
正确答案:
(1) oplog
6. (填空题 )MongoDB的默认的端口号____。
正确答案:
(1) 27017
三. 简答题(共7题)
7. (简答题)MongoDB的分片原理?
正确答案:
MongoDB分片的基本思想如下:
(1)首先将集合切分成小块。这些块分散到若干片里面,每个片只负责总数据的一部分。
(2)集群和分片的元数据信息保存在配置服务器上,包括集合对应哪些分片,这些分片存在那个分片服务器上,以及每个分片的副本信息。
(3)路由服务器启动时就加载配置服务器上的元数据信息到内存中。
(4)客户端请求时,不需要知道分片信息,只与路由服务器交互,由路由服务器与具体分片服务器交互完成数据的读取和写入。
(5)分片服务器返回的分片信息由路由服务器聚合起来再返回给客户端。
8. (简答题)MongoDB的复制原理?(本题查询网络)
正确答案:
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
9. (简答题)查看整体复制集状态命令?查看当前是否是主节点命令?
正确答案:
rs.status(); rs.isMaster();
10. (简答题)MongoDB分片的作用?
正确答案:
增加可用RAM;
增加可用磁盘空间;
减轻单台服务器的负载;
处理单个mongod无法承受的吞吐量。
11. (简答题)分片(sharding)和复制(replication)是怎样工作的?(该题答案有问题,不做考究,做满分处理)
正确答案:
1、分片(sharding):将不同数据存放在不同节点。
2、复制(replication):将同一份数据拷贝到多个节点。
12. (简答题)现有一个MongoDB数据库服务器,IP地址为:192.168.1.1,端口号为27017,在该数据库服务器中中有一个名字为student的数据库,数据库中有一个名字为bigdata的集合,请用python的语言编写代码连接该数据库并在集合中插入一条数据:{‘name’:’Jerry’,’age’:5}。
正确答案:
import pymongo
client=MongoClient(host=’192.168.1.1’,port=27017)
db=client.get_database(‘student’)
col=db.get_collection(‘bigdata’)
stu={
’name’:’zhangsan’,
’age’:18
}
col.insert_one(stu)
评分标准:答案不唯一,根据具体代码业务逻辑给分
13. (简答题)现有一个名字为student的数据库,数据库中包含一个名字为bigdata的集合(使用mongodb shell环境)。
(1)请编写相关语句插入多条数据,数据为:{“name”:” Tom”,”age”:23},{“name”:” Jerry”,”age”:13}
(2)请编写相关语句用游标遍历集合并输出集合中的文档。
正确答案:
(1)use student;
db.bigdata.insert([ {“name”:” Tom”,”age”:23},{“name”:” Jerry”,”age”:13}])
(2)
var cursor=db.bigdata.find()
while(cursor.next()){
print(tojson(cursor.next();)) #或者printjson(cursor.next();))
}
或者:
var cursor=db.bigdata.find()
while(cursor.next()){
var doc=cursor.next();
print(tojson(doc)) #或者printjson(doc))