NoSQL复习题

第一章————————————————————

1. 网络存储方式不包括()。A.DAS  B.NAS  C.ANS  D.SAN

DAS: 直连式存储

NAS: 网络接入式存储

SAN: 存储区域网络

2. 大数据的特征不包括()。A. 大量化  B. 价值化  C. 整体化   D. 快速化

3. 大数据的特征不包括()。A.Volumn  B.Vague   C.Variety  D.Velocity

4. 对比关系型数据库,关于 NoSQL 说法错误的是()。A. 采用非关系的数据模型  B. 弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制  C. 无法支持,或不能完整的支持 SQL 语句  D. 不能实现强大的分布式部署能力

5. 下面不属于 NoSQL 数据库的特点的是()。A. 开源  B. 支持 SQL   C. 分布式  D. 非关系型

6. 下面()不属于关系型数据库的特点。A. 实体和实体间的联系都可以通过关系的方式来表示  B. 关系模型需要满足实体完整性和参照完整性约束  C. 可以通过 SQL 语句实现数据定义和操作  D. 不支持事务和 ACID 一致性等特性 

7. 下面不属于数据操作语言的是()。A. 定义  B. 增加  C. 查询  D. 删除

 

大数据的特征:

○大容量(Volume)

○多样化(Variety)

○有价值(Value)

○高速率(Velocity)

关系型数据库和 NoSQL 在设计上的区别:

    关系型数据库:

高效的存储数据

支持多用户对数据的并发控制

NoSQL:

用来应对数据的爆发式增长,实现横向扩展

    https://www.cnblogs.com/sunzhiqi/p/10869655.html

NoSQL 数据库的技术特点:
    1. 非关系型的存储模式。

    2. 习惯的统称,并非严谨的定义。

    3. 和关系型数据管理系统有不同的侧重点。

    4. 通过牺牲事务、一致性和 SQL 语句等重要机制,来换取更好的分布式部署特性。

NoSQL 在大数据体系当中的作用:

○数据存储工具

○数据管理工具

○数据查询工具

○NoSQL 一般不会提供实时数据采集功能(需要借助其他的工具写入数据库),也无法提供复杂的数据预处理、数据分析等功能,无法提供完整的数据可视化功能。

第二章————————————————————

1.NoSQL 的主要存储模式不包括()。A. 键值对存储模式  B. 列存储模式  C. 文件存储模式   D. 图存储模式

2.BASE 不包括()。A. 基本可用  B. 软状态  C. 强一致性   D. 最终一致性

3.CAP 理论不包括()。A.Consistency(一致性)  B.Atomicity(原子性)  C.Availability(可用性)  D.Partition tolerance(分区容错性)

4.()不属于分布式数据管理的特点。A. 数据分片  B. 数据多副本  C. 一次写入多次读取  D. 读写分离 

    读写分离:1. 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构。2. 一个主从同步集群,通常被称为是一个“分组”。

5. 分布式部署关系型数据库时,读写分离(主从集群)不包括()。A. 所有对数据库的修改都通过主服务器  B. 从服务器分担主服务器读服务器请求  C. 解决了写数据的瓶颈   D. 主从服务器之间可能存在暂时的数据不一致的情况

    读写分离是用来解决数据库的读性能瓶颈的。

6. 预防死锁的主要方法包括:一是(),即在设计阶段规定所有的事务都按相同的顺序来封锁表;一是(),即当一个事物加锁时间过长时就判断出现死锁。A. 顺序法 一次封锁法  B. 超时法 等待图法  C. 顺序法 超时法   D. 超时法 顺序法

7. 关系型数据库事务机制中的 ACID 不包括()。A. 连续性(Continuance)  B. 隔离性(Isolation)  C. 持久性(Durability)

    关系型数据库事务机制中的 ACID:

    事务在英文中是 transaction,和现实世界中的交易很类似,它有如下四个特性:

1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。 比如银行转账,从 A 账户转 100 元至 B 账户,分为两个步骤:1)从 A 账户取 100 元;2)存入 100 元至 B 账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了 100 元。

2、C (Consistency) 一致性 一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。 例如现有完整性约束 a 存款 +b 存款 =2000,如果一个事务改变了 a 存款,那么必须得改变 b 存款,使得事务结束后依然满足 a 存款 +b 存款 =2000,否则事务失败。

3、I (Isolation) 隔离性 所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。 比如现在有个交易是从 A 账户转 100 元至 B 账户,在这个交易还未完成的情况下,如果此时 B 查询自己的账户,是看不到新增加的 100 元的。

即要达到这么一种效果:对于任意两个并发的事务 T1 和 T2,在事务 T1 看来,T2 要么在 T1 开始之前就已经结束,要么在 T1 结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。(串行化)

4、D (Durability) 持久性 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

8. 下面关于 NoSQL 数据库完整性约束不正确的是()。A. 域完整性一般较弱,或不支持  B. 不能存在主键相同的行,或内容相同但时间戳不同的行  C. 一般不提供参照完整性,或者外键  D. 用户定义完整性靠应用程序支持

9. 与关系模型相比,关于 NoSQL 不正确的是()。A.NoSQL 中可能没有明确的结构  B. 列可能是复合型的  C. 列中的内容和类型可能是随意的、无定义的  D. 会为空值留出存储空间 

 

1.CAP 理论中,NoSQL 数据库需要在 C 和 P 之间进行权衡。F

C:Consistency(强一致性)

A:Availability(可用性)

P:Partition tolerance(分区容错性)

我们只能在一致性和可用性之间进行权衡

2.NoSQL 数据库能够满足 CAP 三个特性。F

3. 一次写入多次读取不是分布式数据管理的特点。F

4.ACID 是 NoSQL 数据库的基本要求。F

5.NoSQL 一般不提供参照完整性,或者外键,因此一般也不支持跨表的关联查询。T

6.NoSQL 不会为空值留出存储空间,可能很难直接插入数值。T

7.NoSQL 由明确的表结构。F

 

 BASE 原理:

基本可用(Basically Available):基本可用指分布式系统在出现故障时,系统允许损失部分可用性,即保证核心功能或者当前最重要功能可用。对于用户来说,他们当前最关注的功能或者最常用的功能的可用性将会获得保证,但是其他功能会被削弱。

软状态(Soft-state):软状态允许系统数据存在中间状态,但不会影响系统的整体可用性,即允许不同节点的副本之间存在暂时的不一致情况。

最终一致性(Eventually Consistent):最终一致性要求系统中数据副本最终能够一致,而不需要实时保证数据副本一致。例如,银行系统中的非实时转账操作,允许 24 小时内用户账户的状态在转账前后是不一致的,但 24 小时后账户数据必须正确。

最终一致性是 BASE 原理的核心,也是 NoSQL 数据库的主要特点,通过弱化一致性,提高系统的可伸缩性、可靠性和可用性。而且对于大多数 Web 应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是多数分布式数据库产品的方向。

 

一丶在数据一致性问题上,ACID 和 BASE 差别是什么?分别适合哪种场景

ACID 的一致性:强调(一个或多个)事务前后,数据的状态(约束、完整性)都是有效的。

CAP 的一致性:强调多个副本是状态一致、同步更新的。

BASE 的一致性:和 ACID 的相近,但是强调弱一致性。

二丶什么是 CAP 原理?CAP 原理是否适用于单机环境?

C:Consistency(强一致性)

A:Availability(可用性)

P:Partition tolerance(分区容错性)

CAP 理论是指在分布式系统中,CAP 三个特性不可兼得,只能同时满足两个。

不适用于单机环境

三布隆过滤器的优缺点是什么?如何降低布隆过滤器的误报率?

空间占用低,检索速度快,缺点是存在一定的误报率,当布隆过滤器认为某元素存在于集合时,该元素可能不存在,当布隆过滤器认为该元素不存在与集合时,该元素一定不存在。

降低误报率:

采取多个独立的哈希算法同时进行映射

增大二进制向量的大小

 

第三章——————————————————————

 1.HDFS 的角色不包括()A.Masternode  B.Namenode   C.Datanode  D.Secondary Namenode

 

2.Hadoop 核心组件不包括()。A.HDFS  B.HBase   C.YARN  D.MapReduce

 

1.Hive 不属于 NoSQL 数据库。T

 

2.HDFS 在数据读写时,对客户提供强一致性保障,在副本复制过程中采用最终一致性方式。T

 

3.HDFS Namenode 的 fsimage 文件启动加载后,一直保持只读状态,不能直接在内存或硬盘修改。T

 

4.HDFS 的 Namenode 和 DataNode 不能在一个物理节点上。F

 

5.Hadoop 核心组件包括 Hbase。F

 

6.HDFS 属于 NoSQL 数据库。F

 
HDFS 是否属于 NoSQL 数据库?请分析一下 HDFS 作为数据库的不足之处。
不属于
1. 不擅长低延时的数据访问(hadoop 针对数据吞吐量做了优化,牺牲了获取数据的延迟)。 
2. 不擅长大量小文件存储(存储大量的小文件,会占用 namenode 大量的内存来存储文件、目录和块信息。)
3. 不支持多用户并发写入一个文本(同一时间内,只能有一个用户执行写操作)。
4. 不支持文件的随机修改(多次写入,一次读取)仅支持数据末尾追加。
第四章——————————————————————
1. 下面对 HBase 的描述不正确的是()?A 是一种 NoSQL 数据库  B. 不是开源的   C. 是分布式的  D. 是面向列的
2.HBase 虚拟分布式模式需要()个节点?A. 最少 3 个  B.2  C.1   D.3
3.HBase 分布式模式最好需要()个节点?A. 最少 3 个  B.2  C.1  D.3 
4.HBase 依靠()存储底层数据。A.MapReduce  B.Memory  C.HDFS   D.Hadoop
5.HBase 依赖()提供消息通信机制。A.Chubby  B.Socket  C.Zookeeper   D.RPC
6.HBase 来源于哪篇文章?A.BigTable  B.BigTable   C.MapReduce  D.The Google File System
7.HBase 的逻辑节点不包括()。A.Regionmaster  B.Master  C.NameNode  D.Zookeeper
Hbase 采用主从式的拓扑结构,主要组件:一个主节点(称为 Master 或 Hmaster),若干从节点(称为 Regionserver 或 Hregionserver),Zookeeper 分布式协调服务,均指进程。
可能会部署多个 Master 节点,只有一个为活跃(active),其他为待命(standby)。
1.Hbase 可以实现事务、多表查询等功能。F
2.HBase 创建表时,必须定义列族。F
 
 
一丶 HBase 的特点是什么?
○分布式、主从架构、底层基于 HDFS、基于 java 语言开发
○可伸缩、高可靠性、易于使用
○基于键值对 + 基于列(族)的数据存储模式
○可以基于 shell 进行操作
○原生的 java 语言调用接口,支持远程调用
○支持通过 thrift,实现跨语言、跨平台调用
二丶 HBase 采用了什么样的数据结构 ?
LSM 树:将数据的修改增量保持在内存中,达到指定的大小限制后,这些修改操作批量写入到磁盘中。
LSM 树的原理是把一棵大树拆分成 N 棵小树,它首先写入内存中,随着小树越来越大,内存中的小树会 flush 到磁盘中,磁盘中的树定期做 merge 操作,合并成一颗大树来优化读的性能。
三丶 HBase 的拓扑结构是什么?每个角色起什么作用?
主从结构(主节点和从节点)
底层采用 HDFS:
  可以服用节点共同部署 HDFS 和 HBase
  但节点无必然对应关系,如:DataNode 节点不一定是 Hregionserver 节
  可能会部署多个 Master 节点
Zookeeper 功能:
  ○维护元数据的总入口,以及记录 Master 节点的地址
  ○监控集群,如果 Hregionserver 出现故障,则通知 Master,Master 会将其负责的分区移交给其他的 Hregionserver
  ○当活跃的 Master 节点故障时,Zookeeper 会在备用的 Master 节点中选举一个新的活跃的 Master 节点。
HMaster 功能:
  ○HMaster 节点是所有 Hregionserver 的管理者,负责对 Hregionserver 的管理范围进行分配,但是不负责管理用户的数据表。
Hregionserver 功能:
  ○用户表的实际管理者,在分布式集群中,数据表会进行水平分区,每个 regionservers 只会对一部分分区进行管理——负责数据的写入、查询、缓存、和故障恢复等。
 
 
 第五章————————————————————
1.HFile 数据格式中的 MetaIndex 字段用于()。A.Meta 块的起始点   B.Meta 块数据内容  C.Meta 块的结束点  D.Meta 块的长度
2. 当用户读写 HBase 数据库时,会首先在()寻找表和行键对应的分区。A.Region  B.ZooKeeper   C.Master  D.RegionServer
当用户进行读写数据时,会根据需要读写的表和行键,通过如下顺序寻找该行键对应的分区:Zookeeper->META->Regionserver>Region
3. 下面与 Zookeeper 类似的框架是?A.Kafka  B.Chubby   C.Java  D.Protobuf
Apache 基金会基于 Chubby 协议创立了 Zookeeper 开源项目软件。
4.HBase 不包括如下()分区方式。A. 自动分区  B. 预分区  C. 手动拆分  D. 固定分区 
表(或分区)的水平拆分的机制,都是基于行键拆分的:自动分区、预分区、手动拆分
5.HFile 数据格式中的 Data 字段用于()。A. 存储数据的起点  B. 存储数据块的起点  C. 指定字段的长度  D. 存储实际的 KeyValue 数据 
6.Rowkey 设计的原则,下列哪些选项的描述是不正确的?()A. 本身是无序的   B. 可以使用汉字  C. 可以使用字符串  D. 尽量保证越短越好
 
一丶预写日志 (WAL) 的作用
○当数据被写入 memstore 之前,Regionserver 会先将数据写入预写日志,预写日志一般被写入 HDFS,但键值写入时不会被排序,也不会区分 region。
○出现节点宕机、线程重启等问题时,memstore 中未持久化的数据会丢失,当 regionserver 恢复后,会查看当前日志当中的数据,并将记录进行重放,根据记录的表名和分区明,将数据恢复到制定的 store 当中。
二丶如何理解 HBase 的合并和分区拆分机制,各包括那几种方式。

○hbase 为了防止小文件过多,以保证查询效率,hbase 需要在必要的时候将这些小的 store file 合并成相对较大的 store file,这个过程就称之为 compaction。

在 hbase 中主要存在两种类型的 compaction 合并:小合并和大合并

https://www.cnblogs.com/bigdatalaoliu/p/14053296.html

    ○表(或分区)的水平拆分的机制,都是基于行键拆分的:自动分区、预分区、手动拆分
第六章————————————————————————
1. 下面不属于 CQL 的集合类型的是()。A.Set  B.Tuple   C.List  D.Map
2.Cassandra 的特点不包括()。A. 节点对称  B. 支持异构设备  C. 强调高一致性   D. 去中心化
3.Dynamo 中 MerkleTree 机制用于解决()问题。A. 数据模型  B. 数据一致性  C. 拓扑分布  D. 副本同步检测机制 
4.Cassandra 的 Key Space 类似关系数据库中的()。A. 列  B. 行  C. 表  D. 库
5.Cassandra 采用()实现分布式环境的拓扑划分。A.CAP 原理  B. 一致性哈希算法  C. 布隆过滤器  D.Paxos 算法
6.Dynamo 依靠()解决数据可能出现分本版本的问题。A. 暗示移交  B. 一致性哈希  C. 矢量时钟机制  D. 负载均衡器
 
 
1.Cassandra 可以通过用户配置来调整可用性和一致性。T
2. 分簇键是 Cassandra 复合主键的一部分。T
3.Cassandra 不支持机架设置。F
4.CQL 创建表时,list、map 和 set 类型的列如果是非 frozen 限定的(序列化),无法作为主键。T
5.Cassandra 的每个物理节点对应着环上的一个 Token。T
6.Cassandra 不支持对数据表建立二级索引。F
 
7.CAL 利用 WHERE 子句可以在 SELECT、UPDATE 或 DELETE 语句中设置限定条件,但只针对主键。T
 
一丶 HBase 和 Cassandra 在架构上有什么不同?各自架构有什么优缺点
Cassandra:
  ○采用了无中心的,对等的换型拓扑结构,不存在主节点单点失效问题。
  ○以主机为单位实现横向扩展,扩展方式较为简单,扩展对集群整体的影响较小。
  ○支持异构设备
Hbase:
  ○主从式结构
  ○具有良好的横向扩展性
  ○实现严格的读写一致性和自动的故障转移
二丶 Cassandra 表中的主键分为哪几种类型?如何区分它们?
主键
复合主键
三丶 Cassandra 如何支持数据一致性?
采用环形结构
用矢量时钟来解决数据可能出现的分支版本问题
Merkle Tree 来解决副本之间的不一致性
Gossip 协议来处理故障节点和新节点
 
 
 
第七章——————————————————————
1.MongoDB 采用()进行数据存储与编码传输。A.YAML  B.XML  C.BSON  D.JSON
 
2. 以下哪个不是 MongoDB 数据库的索引类型?A. 全文索引  B. 时间索引  C. 单键索引  D. 地理位置索引
 
3. 以下哪个不是 MongoDB 数据库在分片时需要的节点?A.Config Server  B.Mongos  C.Shard  D.Config Router
 
4.CouchDB 与 MongoDB 比较,不正确的是()。
A.CouchDB 支持多主节点间的数据复制,而 MongoDB 只支持主从复制
B.CouchDB 采用通用 JSON 格式存储和传输数据
C.CouchDB 支持动态查询,MongoDB 不支持动态查询
D.CouchDB 更多地采用通用技术,并考虑和 ASF 其他模块的配合
 
5.MongoDB 的分片切分机制不包括()。A. 哈希分片  B. 升序分片  C. 位置分片  D. 随机分片
 
6.MongoDB 数据库中基本单元为?A. 字段  B. 文档  C. 表格  D. 集合
 
 
1.MongoDB 的主节点选举算法是 Paxos 算法。F
 
2.MongoDB 中的一组文档称为“集合”,可以类比为传统数据库中的“数据库”。F
 
3.MongoDB 支持复杂的数据结构,支持索引(包括二级索引和地理空间索引),支持聚合查询。T
 
4.MongoDB 的集合是动态模式的,同一个集合里面的文档可以是各式各样的。T
 
5.BSON 比 JSON 相比,检索速度更快,更节省空间。F
 
6.MongoDB 采用副本集提供数据库的扩缩容能力。F
 
 
 
一丶简述 MongDB 的特点。
○易用、分布式架构、易扩展、支持多副本
○支持复杂的数据结构,支持索引(包括二级索引和地理空间索引)、支持聚合查询,以及支持对大文件的存储和管理等。
二丶简述 MongDB 的集群架构(包含的角色和每个角色的作用)。
○Mongod(Shard):负责存储实际数据分片的设备。
○Mongs 服务器:作为用户访问集群的入口,负责与客户端进行交互,并在内存中缓存分片数据的存储和路由信息。
○config 服务器:负责持久化存储各类元数据和配置信息,当 Mongs 服务器启动时,会通过 Config 服务器读取相关信息并缓存到内存。
三丶 MongDB 集群的数据多副本策略和 Cassandra 集群有什么不同?
○MongDB(复制集机制):支持(分片的)多副本,以主从备份的形式实现,CAP 中的 CA 由用户权衡。
○Cassandra:支持数据多副本机制,强调弱一致性和高可用性。,CAP 中 AP 由用户的策略调整。
四丶 MongDB 和 CouchDB 有什么相同点和不同点?
同为文档型数据库,二者宏观设计较为相似。
MongDB CouchDB
○采用 C++ 编写 ○采用 Erlang 语言编写(最初也是 C++)
○自定义了更高效的,基于 TCP|IP 的二进制格式协议 ○更多地采用通用技术,并考虑和 ASF 其他模块的配合(在网络传输上,采用了通用的 HTTP/REST 接口)
○支持动态查询,查询时不需要先建立索引 ○不支持动态查询,必须先为查询模式建立视图
○MongDB 只支持主从复制,其一致性更容易维护 ○支持多主节点间的数据复制(理论上都支持写入操作),并且支持类似 Dynamo 的 MVCC 多版本一致性协调机制  
 
 
 
 
 
 
 
 
 
 
第八章——————————————————————
1.Neo4j 采用()查询语言。A.Neo4j Query Language  B.Structured Query Language  C.Cassandra Query Language  D.Cypher Query Language
 
2.Neo4j 中 CQL 语法不支持的有()A.Match  B.Delete  C.Create  D.Update
 
3.()数据库不是基于 Java 实现的。A.Neo4j  B.MongoDB  C.Cassandra  D.Hbase
 
4.Redis 采用的是()模式。A. 列存储  B. 图存储  C. 键值对存储  D. 文档存储
 
5.Neo4j 中,下面()语句可以删除所有的节点和关系。
A.MATCH (n) MATCH (n)-[r]-(m) DELETE n, r,m
B.MATCH (n) MATCH (n)-[r]-() DELETE n, r
C.MATCH (n) OPTIONAL MATCH (n)-[r]-(m) DELETE n, r,m
D.MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n, r 
 
6. 关于 Neo4j 中节点 (Nodes),关系(Relations),属性(Properties),标签(Labels) 说法不正确的有()
A. 关系连接实体对象 (Entity),关系没有方向性
B. 标签 (Labels) 是对实体对象 (Entity) 做的说明
C. 属性 (Properties) 表示的是实体对象 (Entity) 中的属性
D. 节点代表最终的实体对象
 
7.Neo4j 采用的是()模式。A. 文档存储  B. 图存储  C. 列存储  D. 键值对存储
 
8. 下列哪些场景不适合使用 Neo4j.()A. 数据检索  B. 关系中的路径查找  C. 电商里的物品推荐  D. 强相关的社交网络
 
 
1.Neo4j 中 CQL 语法中 Set 的作用是可以更新实体对象 (Entity) 的属性,也可以新加实体对象 (Entity) 的属性。  T
 
2.Neo4j 不支持分布式。  F
 
3. 搜索引擎系统常和其他 NoSQL 数据库或分布式文件系统配合使用。  T
 
4.Neo4j 中 CQL 语法不支持 limit。  F
 
 
一丶描述图数据库的数据模型,并举例说明。

图数据库是专门描述节点与关系,关系更明确也更自由,不存在外键等约束条件

举例:Neo4j

二丶 Redis 数据库的拓扑架构和多副本策略。

Redis 本质为环形结构的分布式集群部署。支持单机部署和分布式部署,在集群环境支持水平分片机制。使用类似于 dynamo 的环形架构(课本 231 图片),没有使用一致性哈希机制,引入了哈希槽的概念。

数据多副本方面:支持主从复制机制,和 MongoDB 相似,一个主节点可以对应多个从节点,当主节点发生故障时,可以从多个从节点中选举一个新的主节点。