第一章 初识NoSQL
一、填空题
1.大数据时代对数据存储的挑战包括高并发读写需求、高效率存储和访问需求、高扩展性。
2.NoSQL是Not Only SQL的缩写,它的含义为“不仅仅是SQL”。
3.NoSQL是一种非关系型、分布式、不遵循ACID、不提供SQL功能的数据库。
4.NoSQL理论的基础是由CAP原则、BASE理论以及最终一致性奠定的。
5.NoSQL数据库主要有四大类型,即键值对存储数据库、文档存储数据库、列式存储数据库及图形存储数据库。
二、判断题
1.NoSQL是关系型数据库。 ( × ) 非关系型
2.非关系型数据库采用的是动态结构存储数据。 ( √ )
3.CAP原则包括一致性、可用性和分区容错性这三大要素。 ( √ )
4.CAP理论的核心思想是即使无法保证系统的强一致性。 ( × ) BASE理论
5.数据的一致性可根据强度分为强一致性和弱一致性两种。 ( √ )
三、选择题
1.下列数据库中,哪个是最简单的NoSQL数据库?(A )
A.键值对存储数据库
B.文档存储数据库
C.列式存储数据库
D.图形存储数据库
2.下列说法中,关于文档存储数据库说法正确的是?(C)
A.文档存储数据库是文档管理系统
B.文档存储数据库是用于存储和管理文档,其中文档是非结构化的数据
C.文档存储数据库存储的文档可以是不同结构的
D.文档存储数据库主要应用于会话存储和购物车等场景 键值对数据库
3.下列选项中,哪个属于列式存储数据库?(D )
A.MongoDB
B.Redis
C.Neo4j
D.HBase
四、简答题
1.简述CAP原则的选择策略与应用场景。
CA(一致性和可用性)应用场景Oracle、SQLServer以及MySQL等。
CP(一致性和分区容错性)应用场景MongoDB、HBase以及Redis等
AP(可用性和分区容错性)应用场景CouchDB、Cassandra以及DynamoDB等
2.简述NoSQL数据库的四种类型。
键值对存储数据库中的数据是以键值对的形式来存储的。
文档存储数据库是用于存储和管理文档,其中文档是结构化的数据(如JSON格式)。
列式存储数据库是以列为单位存储数据,然后将列值顺序地存入数据库中。
图形存储数据库主要是应用图形理论来存储实体之间的关系信息。
第二章 文档存储数据库MongoDB
一、填空题
1.当前NoSQL数据库产品中最热门的一种数据库是 MongoDB。
2.MongoDB是由C++语言编写的。
3.MongoDB是一个面向集合、模式自由的文档型数据库。
4.MongoDB的设计采用水平扩展,可通过分片将数据分布在集群机器中。
5.MongoDB的逻辑结构是体系结构的一种形式。
二、判断题
1.在MongoDB中,数据库存储着集合和数据表。 ( × ) 文档
2.MongoDB默认提供admin、local、config以及test数据库。 ( √ )
3.集合就是MongoDB的一组文档,分为一般集合和下限集合。 ( × ) 上限
4.文档中不能有重复的键,每个文档都有一个默认的_id键。 ( √ )
5.MongoDB支持3种数字类型(32位整数(Int32)、64位整数(Int64)和64位浮点数(Double))。 ( √ )
三、选择题
1.下列数据库中,哪个数据库不是MongoDB默认提供的?(B )
A.admin数据库
B.user数据库 local数据库
C.config数据库
D.test数据库
2.下列说法中,关于MongoDB文档说法正确的是?(D )
A.MongoDB单个文档大小上限为64MB 16MB
B.文档的值只可以是字符串类型 键
C.文档中可以有重复的键
D.不建议自定义_id键
3.下列选项中,哪个属于MongoDB支持的数据类型?(ABD )
A.String
B.Code
C.Enum
D.Null
四、简答题
简述MongoDB数据库的优势。
答:易用性:MongoDB没有预定义模式(predefined schema),文档的键(Key)和值(Value)无须定义固定的类型和大小,这使得添加或删除字段变得更为容易。
高性能:MongoDB数据库对文档进行了动态填充,对数据文件进行了预分配数据文件,用空间来保证性能的稳定。
高可用性:MongoDB副本所组成的一个集群,称为副本集,它提供了自动故障转移和数据冗余功能,以防止数据丢失,从而提高数据的可用性。
易扩展性:MongoDB的设计采用横向扩展,可通过分片将数据分布在集群机器中,实现负载均衡。
支持多种存储引擎:MongoDB支持多个存储引擎包括WiredTiger存储引擎、内存中存储引擎(In-Memory)和MMAPv1存储引擎。
第三章 MongoDB数据库操作
一、填空题
1.MongoDB是一个开源、跨平台的数据库。
2.mongod.exe程序用于启动MongoDB服务器。
3.MongoDB服务的端口号是27017。
4.聚合管道是使用不同的管道阶段操作器进行不同聚合操作。
5.MongoDB提供Map-Reduce操作来进行聚合操作。
二、判断题
1.针对不同的操作系统平台,MongoDB的部署均相同。 ( × )
2.MongoDB中管道操作符的类型单一。 ( × )
3.Map-Reduce操作有两个阶段,即Map和Reduce阶段。 ( √ )
4.默认情况下,MongoDB服务启动运行时是启用用户访问权限控制的。 ( × )
5.Robo 3T是一个跨平台的MongoDB GUI客户端管理工具。 ( √ )
三、选择题
1.下列命令中,哪个可以用于创建MongoDB数据库?(C )
A.create
B.show
C.use
D.db
2.下列选项中,哪个不属于管道操作符?(D )
A.$group
B.$limit
C.$match
D.$and
3.下列说法中,关于MongoDB索引说法正确的是?(BD )
A.索引存储着集合中全部的文档
B.索引项的排序支持有效的等值匹配和基于范围的查询操作
C.索引分为单字段索引和复合索引两种
D.索引是一种特殊的数据结构,即采用B-Tree数据结构
四、简答题
简述MongoDB的索引六种类型。
答:单字段索引:在文档的单个字段上创建用户定义的升序/降序索引。
复合索引:包含多个字段的索引,一个复合索引最多可以包含31个字段。
多键索引:MongoDB会为数组中的每个元素创建索引。
地理空间索引:对地理空间坐标数据的有效查询,包含平面几何的二维索引和球面几何的二维球面索引。
文本索引:在集合中搜索字符串内容,即进行文本检索查询。
哈希索引:哈希索引是使用哈希函数来计算索引字段的哈希值。
第四章 MongoDB副本集
一、填空题
1.MongoDB副本集的成员包括主节点、副本节点、仲裁节点。
2.MongoDB官网推荐副本集成员个数为奇数个。
3.副本集主要功能包括数据的冗余、自动故障转移、读写分离。
4.开启安全认证时,密钥文件权限一定要等于或小于600。
5.副本集成员配置信息中参数priority表示优先级。
二、判断题
1.推荐使用主/从复制方式实现MongoDB复制。 ( × ) 副本集
2.MongoDB副本集通过同时存在多个主节点,实现故障自动转移。 ( ×) 多个副本节点 仅一个主节点
3.副本节点与主节点同步副本是异步同步。 ( √ )
4.仲裁节点不会同步主节点的数据副本。 ( √ )
5.配置副本集成员需要在主节点进行操作。 ( √ )
三、选择题
1.下列选项中,哪个不属于副本集成员状态?(A )
A.START STARTUP
B.DOWN
C.RECOVERING
D.UNKNOWN
2.下列选项中,哪个不属于副本集的功能?(B )
A.冗余的数据
B.负载均衡
C.读写分离
D.自动故障转移
3.MongoDB副本集中,副本节点是如何获得主节点数据?( A)
A.自动拉取
B.心跳
C.自动推送
D.手动
四、简答题
请描述下MongoDB的副本集时如何同步数据?
答:副本节点定期轮询主节点获取oplog记录的操作内容,然后对自己的数据副本执行这些操作,从而保证副本节点的数据副本与主节点保持一致。
第五章 MongoDB分片
一、填空题
1.MongoDB分片是MongoDB支持的另一种集群形式。
2.分片技术是开发人员用来提高数据存储和数据读写吞吐量常用的技术之一。
3.分片主要是将数据进行划分后,将它们分别存放于不同机器上的过程。
4.MongoDB之所以能够实现自动分片,这是因为其内置了分片策略。
5.MongoDB的分片策略主要包括范围分片和哈希分片两种。
二、判断题
1.分片与副本集主要区别在于分片是每个节点存储数据的不同片段,而副本集是每个节点存储数据的相同副本。 ( √ )
2.块(Chunk)的默认大小为128MB。 ( × ) 64MB P144
3.分片键只能是集合文档中的一个字段。 ( × ) 或多个
4.分片服务器是实际存储数据的组件。 ( √)
5.生产环境中,路由服务器存储了分片集群的元数据。 ( ×) 配置服务器
三、选择题
1.下列服务器中,哪个不是服务器分片集群的组成部分?(D )
A.Shard
B.Mongos
C.Config Server
D.Mongod
2.下列选项中,关于块的说法正确的是?(A )
A.块的默认大小为64MB
B.大块触发的迁移较多
C.块的大小不会影响要迁移块的最大文档数
D.大块可以均匀地分布数据
3.下列说法中,关于分片键说法错误的是?(B )
A.分片键一旦指定,后续则无法改变
B.分片键的长度大小,可超过512个字节
C.用于作分片键的字段必须创建索引
D.不允许在已分片的集合文档上插入没有分片键的文档
四、简答题
简述分片集群的架构。
答:分片集群中主要由三个部分组成,即分片服务器(Shard)、路由服务器(Mongos)以及配置服务器(Config Server)组成。
分片服务器是实际存储数据的组件
路由服务器主要提供客户端应用程序与分片集群交互的接口,所有请求都需要通过路由服务器进行协调工作。
配置服务器存储了分片集群的元数据,并且这些数据是不允许丢失的。
第六章 MongoDB GridFS
一、填空题
1.MongoDB受BSON文件大小的限制,存储的文件大小不可超过16M。
2.GridFS将文件分别存储到集合fs.chunks和fs.files中。
3.MongoDB提供了与GridFS交互的命令行工具mongofiles。
4.数据块中存储二进制数据。
5.GridFS基于MongoDB持久化文件。
二、判断题
1.默认情况下,GridFS使用的块大小为255 KB。 ( √ )
2.集合fs.files存储文件原始数据。 ( × ) fs.chunks files存储文件元数据
3.fs.files中_id的值与 fs.chunks中_id值的相对应。 (× ) fs.files的_id与fs.chunks的files_id相对应
4.可以在副本集的任意节点操作GridFS。 ( × )
三、选择题
1.下列选项中,不属于命令行工具选项的是?( D) options
A.db
B.u
C.local
D.get
2.下列选项中,文件的元数据包括?(ABD )
A.文件块存储位置
B.文件大小
C.文件内容 是文件的实际数据,不属于元数据
D.文件上传时间
四、简答题
简述客户端在GridFS中查询文件的过程。
答:当客户端在GridFS中查询文件时,MongoDB将首先从集合fs.files中获取该文件的元数据信息,然后根据获取的元数据信息在集合fs.chunks查找符合要求的块(即files_id与元数据中_id相同的块),最后将这些块从新组装后返回给客户端。
第七章 键值对存储数据库Redis
一、填空题
1.键值对存储数据库是最简单的NoSQL数据库。
2.Redis数据库是基于ANSI C语言编写开发的。
3.Redis数据库提供了多种数据结构,其中最常见的数据结构有String、List、Set、Hash、Sorted Sets。
4.String字符串是Redis中最基本也是最简单的数据结构。
5.Set集合由不重复且无序的字符串元素组成的。
二、判断题
1.键值对存储数据库中的数据是以列的形式来存储数据的。 ( × ) 键值对
2.Redis是一个开源的、高性能的、基于键值对的缓存与存储数据库。 ( √ )
3.List列表中不允许出现重复的元素。 ( × )
4.Hash散列只能存储一个键值对之间的映射。 ( × ) 多个
5.有序集合可以直接对值进行操作,而散列是通过键来查找值。 ( √ )
三、选择题
1.下列选项中,哪个是Redis服务的端口号?( A )
A.6379
B.6364
C.8080
D.50070
2.下列选项中,哪个不是Redis的特点?( ABD)
A.读写速度慢
B.只支持一种数据结构
C.功能丰富
D.性能低
3.下列数据库中,哪个不是键值对存储数据库?(D )
A.Redis
B.Tokyo
C.Oracle BDB
D.MongoDB 文档存储数据库
四、简答题
简述Redis的应用场景。
答:缓存、构建队列系统、排行榜、实时的反垃圾系统、数据自动过期处理、计数器应用。
第八章 列式存储数据库HBase
一、填空题
1.HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库。
2.HBase是构建在HDFS文件系统之上,并为HBase提供了高可靠的底层存储支持。
3.当MemStore存储的数据达到一个阀值时,MemStore里面的数据就会被flush到StoreFile文件,这个阈值默认是128MB。
二、判断题
1.HBase起源于2006年Google发表的BigTable论文。 ( √ )
2.HBase是基于行进行存储的。 ( × )
3.HBase中,若有多个HMaster节点共存,则所有HMaster都提供服务。( × )
4.StoreFile底层是以HFile文件的格式保存在HDFS上。 ( √ )
三、选择题
1.下列选项中,哪个不属于HBase的特点?(B )
A.面向列
B.容量小
C.多版本
D.扩展性
2.下列选项中,HBase是利用哪个作为其文件存储系统。( C)
A.MySQL
B.GFS
C.HDFS
D.MongoDB
3. HBase官方版本不可以安装在什么操作系统上?( D)
A.CentOS
B.Ubuntu
C.RedHat
D.Windows
四、简答题
简述HBase分布式数据库与传统数据库的区别。
答:(1) 存储模式
传统数据库中是基于行存储的,而HBase是基于列进行存储的。
(2) 表字段
传统数据库中的表字段不能超过30个,而HBase中的表字段不作限制。
(3) 可延伸性
传统数据库中的列是固定的,需要先确定列有多少才会增加数据去存储,而HBase是根据数据存储的大小去动态的增加列,列是不固定的,但是列族是固定的
第九章 图形存储数据库Neo4j
一、填空题
1.图形存储数据库也是NoSQL数据库的一种类型。
2.Neo4j公司从2003年开始研发Neo4j数据库。
3.实体被视为图形的节点,关系被视为图形的“边”。
4.Neo4j数据库使用的查询语言是Cypher。
5.Neo4j数据库可以运行在Windows、Linux、Mac OS等多个平台上。
二、判断题
1.Neo4j不支持ACID事务。 ( × )
2.Neo4j数据库是基于Java语言开发的。 ( √ )
3.社区版的Neo4j支持集群部署。 ( × )
4.Neo4j版本为4.0以上,则需要版本为1.8以上的JDK环境。 ( × ) jdk11以上
5.Neo4j的数据模型是遵循属性图模型来存储和管理数据的。 ( √ )
三、选择题
1.下列数据库中,哪个不是图形存储数据库?(CD )
A.Neo4j
B.FlockDB
C.HBase
D.AllegroGrap
2.下列选项中,哪个属于Neo4j的特点?(D )
A.读写数据慢
B.设计复杂
C.易用性差
D.资源丰富
3.下列选项中,哪个不属于Neo4j应用场景?(B )
A.推荐引擎
B.会话存储
C.交通运输
D.欺诈检测
四、简答题
简述Neo4j的数据模型。
答:Neo4j数据模型是由顶点(Vertex)、边(Edge)、标签(Lable)、关系类型以及属性(Property)组成的有向图。
顶点是使用圆来表示的,顶点也可称为节点(Node),所有的节点都是独立存在的。
边是使用有向箭头表示的,边也可称为关系(Relationship),关系是通过关系类型进行分组,类型相同的关系则属于同一个集合。
标签是使用label表示的,标签类似于节点的类型。
关系类型主要用于标记关系的类型,多个关系可以有相同的关系类型。
属性是使用键值对表示的每个节点或关系可以拥有一个或多个属性。