NoSQL数据库习题与答案(知识点索引)
(2019-09-12 22:08:04)
标签:
it教育健康旅游房产 |
第六讲 NoSQL数据库习题与答案
1.请比较NoSQL数据库和关系数据库的优缺点。
答:(1)关系数据库
优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。
劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等。
(2)NoSQL数据库
优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等。劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。
关系数据库和NoSQL数据库各有优缺点,彼此无法取代
关系数据库应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性。
NoSQL数据库应用场景:互联网企业、传统企业的非关键业务(比如数据分析)。
2. 试述NoSQL数据库的几大类型。
答:
一般将NoSQL数据库分为四大类:键值(Key-Value)存储数据库、列存储数据库、文档型数据库和图形(Graph)数据库。它们的数据模型、优缺点、典型应用场景如下表所示。
分类 |
数据模型 |
优点 |
缺点 |
典型应用场景 |
键值(Key-Value)存储数据库 |
Key指向Value的键值对,通常用hash表来实现 |
查找速度快 |
数据无结构化(通常只被当作字符串或者二进制数据) |
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等 |
列存储数据库 |
以列簇式存储,将同一列数据存在一起 |
查找速度快,可扩展性强,更容易进行分布式扩展 |
功能相对局限 |
分布式的文件系统 |
文档型数据库 |
Key-Value对应的键值对,Value为结构化数据 |
数据结构要求不严格,表结构可变(不需要像关系型数据库一样需预先定义表结构) |
查询性能不高,而且缺乏统一的查询语法 |
Web应用 |
图形(Graph)数据库 |
图结构 |
利用图结构相关算法(如最短路径寻址,N度关系查找等) |
很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案 |
社交网络,推荐系统等 |
3.试述CAP理论的具体含义。
答:1998年,加州大学的计算机科学家 Eric Brewer 提出了分布式系统的三个指标:
C:Consistency,一致性。在分布式系统中的所有数据备份,在同一时刻具有同样的值,所有节点在同一时刻读取的数据都是最新的数据副本(all nodes see the same data at the same time)。
A:Availability ,可用性,好的响应性能。完全的可用性指的是在任何故障模型下,服务都会在有限的时间内处理完成并进行响应(Reads and writes always succeed)。
P:Partition Tolerance ,分区容错性,即分布式系统在遇到某些节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。分区容错性要求一个分布式系统中有某一个或者几个节点故障时,其他剩下的节点还能够正常运转并对外提供服务,对于用户而言并没有什么体验上的影响。
Eric Brewer 指出任何分布式系统只可同时满足CAP三个指标中的两个,无法三者兼顾,这个结论就叫做 CAP 定理。
原理解读
分布式的服务化系统都需要满足分区容忍性,那么我们必须在一致性(C)和可用性(A)之间进行权衡。在网络分区故障发生时,两个分布式节点之间无法进行通信,那么我们对一个节点进行的修改操作将无法同步到另外一个节点,所以数据的一致性(C)将无法满足,因为两个分布式节点的数据不再保持一致。除非我们牺牲可用性(A),也就是在网络分区故障发生时,暂停分布式系统对外提供修改数据服务,直到网络状况完全恢复正常再继续对外提供修改数据服务。
CP满足的情况下,A不能满足的原因:
若要满足一致性(C)就需要在多个分布式节点之间进行数据同步,在数据同步完成之前整个系统都将不可用。节点数量越多分区容错性(P)越好,同时数据同步所耗费的时间自然也就越长,从而无法在有限的时间内完成请求响应,导致可用性(A)不能满足。
CA满足的情况下,P不能满足的原因:
若要满足一致性(C)就需要在多个分布式节点之间进行数据同步,在数据同步完成之前整个系统都将不可用。需同步的节点数量越多,数据同步所需耗费的时间越长,可用性(A)也越差。若要同时保证可用性(A),那么需同步的节点数量就需要尽量减少,从而导致分区容错性(P)无法满足。
AP满足的情况下,C不能满足的原因:
节点的数量越多,分区容错性(P)越好,节点间数据同步所需耗费的时间越长,若要在有限的时间内完成请求响应即保证可用性(A),那么数据就可能不能及时地同步到其他节点,从而无法保证节点间的数据一致性(C)。
如何抉择
对于现如今大多数的互联网应用场景,都倾向于采用分布式微服务架构,它们通常节点众多、部署相对分散,随着集群规模变得越来越大,节点故障、网络故障已是常态。
在这种情况下,对于那些对数据一致性(C)要求不高的场景,例如电商系统,我们只需要保证分区容错性(P)和可用性(A),对于数据一致性(C)退而求其次仅保证数据的最终一致性即可。这虽然会某些地方影响客户体验,但并不会达到造成用户流失的严重程度。
对于像银行系统这类对数据一致性(C)要求较高的场景,数据一致性(C)必须保证。网络发生故障宁可停止服务(或者只读不写),这是保证分区容错性(P)和数据一致性(C),舍弃可用性(A)。
4.试述BASE的具体含义。
答:
BASE理论的核心思想是即使无法做到强一致性(CAP中的一致性是强一致),也可以采用适合的方式使应用达到最终一致性。BASE是指基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventual Consistency)。
Basically Available
基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用。
电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,这就是损失部分可用性的体现。
Soft State
软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。
Eventual Consistency
最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
5.什么是最终一致性?
答:
最终一致性比较公认的定义是由Werner Vogels发表的:
"the storage system guarantees that if no new updates are made to the object, eventually all accesses will return the last updated value. 存储系统可以保证:对于同一个数据对象,如果没有更多的更新产生,最终所有的访问都会返回最新更新的数据(版本)。”
6.什么是NewSQL?
答:NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
7.NoSQL为啥比sql快?
答:
NoSQL是非关系型数据库,因为不需要满足关系数据库数据一致性等复杂特性所以速度快;
sql是关系型数据库,功能强大,但是效率上有瓶颈。
8.以下对NoSQL特点描述中,错误的是()。
9. CAP 理论是 NoSql理论的基础,下列性质不属于 CAP 的是( )。B
A.分区容错性
B.原子性
C.可用性
D.一致性
10.MongoDB是一种NoSQL数据库,具体地说,是(
A.键值
B.文档
C.图形
D.XML