《分布式数据库原理与应用》——作业五·

作业五及答案

快捷查找: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))

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值