山东大学软件学院2020-2021 Nosql 期末考试

注:18级 软工大数据 Nosql考试考试时间:2020/12/30 任课教师:李晖


下面是我以软工方向所学整理的答案


一:4分X3

1:ACID和BASE理论的区别
在这里插入图片描述
2:一致性hash算法

一眼不考

3:关系型数据库、Nosql和NewSQL的区别

SQL:

好处来源于它的统一性和易用性,缺点是面对大量的数据时,他的性能会随着数据库的增大而急剧下降。

NoSQL:

以放宽ACID原则为代价,NoSQL采取的是最终一致性原则,而不是像关系型数据库那样地严格遵守着ACID的原则,这意味着如果在特定时间段内没有特定数据项的更新,则最终对其所有的访问都将返回最后更新的值。 这就是这样的系统通常被描述为提供基本保证的原因(基本可用,软状态,最终一致性) — 而不是ACID。

面向互联网应用,如web2.0,半结构化,非结构化数据的存储

NewSQL:

NewSQL选择汲取了SQL和NewSQL的优点,具有NoSQL对海量数据的存储管理能力,保持了传统数据库支持ACID和SQL等特性,但是目前而言,不适用于所有的场景。

二:将下列RDB关系模式转换成redis,写出每个关系和联系集的Schema,每个关系和实例至少给出五行数据(16分)

img

三:使用一种你认为最合适的Nosql数据库设计微博后台,实现功能包括发布微博(大V发微博如何通知粉丝),评论、点赞,以及微博粉丝管理等功能(16分)

MongoDB

设计一个用户集合,每个用户在集合内维护一个文档,大v也视为用户

用户文档内包括用户ID等必要信息,维护一个粉丝ID数组,一个微博ID数组,一个点赞微博ID数组

设计一个微博集合,每个微博维护一个文档,文档内包括微博ID,发布时间等必要信息,一个评论数组,一个点赞人ID数组

大v发布微博时,在微博集合内生成一个文档,同时将该微博ID和简介推送给大v粉丝ID数组

粉丝评论时,在微博文档内新增数据字段,可以把评论做成嵌入式文档,包含评论内容,评论人等信息

点赞时,在微博文档内更新点赞人ID数组,在用户集合内更新点赞微博ID数组

微博粉丝管理方面,关注时,修改被关注者文档内的粉丝ID数组,修改关注者文档内的关注者数组,取关时做相反操作

PS.当只涉及用户之间的行为时,比如关注取关,往往只有两个用户的文档被修改,这种程度上开销不大,同时保证两个文档的一致性还是可以的。

但当删除微博时,用户的点赞微博ID数组并不会更新,这是因为开销太大了,如果用户访问,返回访问失败即可

四:将下图Neo4j数据库的内容分别转换为Hbase和Mongo存储,写出转换后的所有数据(16分)

img

Mongo把国家设置为一个集合,中国,英国等设置成文档,人口,面积等直接在文档内写成键值对,首都写成内嵌式文档,城市写成数组

HBase把国家设置为表,国家名设置为RowKey,人口等直接写成一个列,首都维护为列簇,城市维护为数组

五:Paxos调度,A能和B、C通信,E能和C、D通信,A决定周三去爬长城,E决定周五去爬长城,请给出paxos调度过程和调度结果(10分)

软工没讲不考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会考试的creeper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值