预判老师的预判,复习用

知识点

第一章 绪论
1、Nosql背景
为了改变关系型数据库的不足,适应当前大数据库时代海量的非结构化数据存储的需要,一种新型数据库类型-NoSQL(非关系型数据库 )诞生了。
2、与其他关系型数据库区别
1.存储方式
  关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。
2.存储结构
  关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。
3.存储规范
  关系型数据库的数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦。而Nosql数据存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,这样整块数据更加便于读写
4.存储扩展
  这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限。而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。
横向扩展是已扩展服务器的数量进行高并发的处理(增强处理业务的能力)
根据配置nginx的反向代理,转发服务器(配置的ip)进行轮换处理业务(可加入负载均衡器进行分发请求)
纵向扩展,是增加单机的处理能力,一般增加cpu的处理能力
5.查询方式
  关系型数据库通过结构化查询语言来操作数据库(就是我们通常说的SQL)。SQL支持数据库CURD操作的功能非常强大,是业界的标准用法。而Nosql查询以块为单元操作数据,使用的是非结构化查询语言(UnQl),它是没有标准的。关系型数据库表中主键的概念对应Nosql中存储文档的ID。关系型数据库使用预定义优化方式(比如索引)来加快查询操作,而Nosql更简单更精确的数据访问模式。
3、特性
①灵活的数据模型;
②可伸缩性强;
③自动分片;
④自动复制
4、ACID
原子性(Atomicity,A)、一致性(Consistency,C)、隔离性(Isolation,I)、持久性(Durability,D)
(1)原子性(A):所有的步骤要么全部完成,要么一个也不完成。
(2)一致性(C):数据库事务不能破坏关系数据的完整性以及业务逻辑的一致性。
(3)隔离性(I):并发执行的事务按顺序一个接一个执行。一个未完成的事务不会影响到另外一个未完成的事务。
(4)持久性(D):一旦一个事务被提交,它应该被持久保存,不会因为与其他操作冲突而被取消。
5、BASE
(1)基本可用(Basically Available):系统允许损失部分可用性,即保证核心功能或当前最重要的功能可用。
(2)软状态(Soft-state):允许不同节点的副本之间存在暂时的不一致情况。
(3)最终一致性(Eventually Consistent):系统中的副本最终一致,不需要实时保证数据副本一致。
6、CAP
一致性(Consistency,C)、可用性(Availiability,A)、分区容错性(Partition Tolerance,P)三者不可兼得。最多满足两个。
(1)一致性(C):更新操作后,所有节点在同一时间的数据完全一致。
(2)可用性(A):用户访问数据时,系统是否能在正常响应时间内返回结果。
(3)分区容错性(P):分布式系统在遇到某节点或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。
CA without p:不允许分区则强一致性和可用性可以保证。例如:交易系统。
CP without A:不要求可用性,相当于每个请求都需要在各服务器之间强一致,而分区容错性会导致同步时间无限延长。例如:统计分析。
AP without C:如果要可靠性高并允许分区,则需放弃一致性。例如:web应用。
7、NoSQL数据库分类
分类
举例
典型应用场景
数据模型
优点
缺点
键值数据库
Redis
缓存,主要用于处理大量数据的高访问负载。
Key-Value 键值对,通常用hash table来实现
查找速度快
数据无结构化,通常只被当作字符串或者二进制数据
列族数据库
HBase
海量数据的分布式存储
以列族存储,将同一列族数据存在一起
容量巨大、高可靠性、高可扩展性
功能相对局限
文档型数据库
MongoDB
Web应用的数据存储
Json文档,也可以说是Key-Value键值对
数据结构要求不严格,不需要像关系型数据库一样需要预先定义表结构
查询性能不高,而且缺乏统一的查询语法。
图形数据库
Neo4J
社交网络,推荐系统等。专注于构建关系图谱
图结构
利用图结构相关算法。比如最短路径寻址等
很多时候需要对整个图做计算才能得出需要的信息,
不好做分布式的集群方案。

第二章 认识HBase
1、HBase的特性
(简答题)
2、HBase的组件和功能
(简答题)
第三章 HBase数据模型与使用
1、HBase的基本概念

2、HBase Shell 基本操作
HBase表的操作,具体方法如下表:

3、HBase编程方法
3.1 基于Java的编程方法

3.2 基于Thrift协议的编程方法

第四章 HBase实现原理

1、HBase基本原理

1.1 Region定位

Region的定位
①先从Zookeeper中获取“.META.”表的位置(HRegionServer的位置),缓存该位置信息。
②从HRegionServer中查询用户表对应请求的RowKey所在的HRegionServer,缓存该位置信息。
③从查询到的HRegionServer中读取Row。
备注:定位到Region所对应的RegionServer,是HBase表读写操作的前提;.META.表:存放region与regionserver地址关系。
1.2 数据读取写入
(简答题)
2、HBase Region管理

2.1 HFile合并

3、HBase集群管理

第五章 MangoDB基础

1、概述

数据类型:MongoDB中的文档本质上是一种类似JSON的BSON格式的数据。

所谓内嵌文档就是把整个MongoDB文档当做另一个文档中一个键的一个值。
例如,用一个文档表示一个人,同时还要保存他的地址,但是地址包括所属街道、城市等多个属性。
那我们就可以将地址内嵌到“address”文档中,如图中示例。 例子中“address”的值是另一个文档,这个文档有自己的键和值。

2、基本概念

3、数据库与集合基本操作

数据库操作:

一组集合可以组成一个数据库。
一个MongoDB实例可以承载多个数据库。
一个应用,使用一个数据库(一个文件)

集合:
集合就是一组文档,类似于关系数据库的表。
集合没有固定的结构,其中的文档通常具有相关性。

集合基本操作:

4、文档基本操作

下面看一下文档有哪些特点:
(1)文档中的键值对是有序的: 文档是由多个键及其关联的值“有序”地放置在一起,
可以看出(1)中的2个文档虽然键和值完全一致,但由于属性顺序不同,因此是不一样的文档。
(2)值区分字符串和数字:示例中age属性值数据类型不同,是不同的文档 。
(3)键区分大小写:示例中2个文档姓名属性名大小写不同。

文档之间的关系:引用、嵌套。当文档嵌套,导致大量数据重复时,引用方式更适合。
文档操作:

MongoDB查询:

5、索引
(优势、特点、类型、如何创建、操作)

6、聚合

第六章 MangoDB进阶

1、集群架构,运行机制

2、MangoDB分布式集群部署
(分片集如何管理、组件、为什么使用集群)

第七章 其他非关系型数据库

应用场景

选择题

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

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

对比关系型数据库,关于NoSQL说法错误的是(D)。

A.采用非关系的数据模型

B.弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制

C.无法支持,或不能完整的支持SQL语句

D.不能实现强大的分布式部署能力

下面不属于NoSQL数据库的特点的是(B)。

A.开源

B.支持SQL

C.分布式

D.非关系型

下面(D)不属于关系型数据库的特点。

A.实体和实体间的联系都可以通过关系的方式来表示

B.关系模型需要满足实体完整性和参照完整性约束

C.可以通过SQL语句实现数据定义和操作

D.不支持事务和ACID一致性等特性

以下对NoSQL特点描述中,错误的是()。 C

A. 简单易部署,基本都是开源软件

B. 当插入数据时,不需要预先定义其模式

C. 支持SQL,用戸学习使用很方便

D. 数据存储不需要固定的表结构,通常也不存在连接操作

下面不属于数据操作语言的是()。

A.定义

B.增加

C.查询

D.删除

CAP 理论是 NoSql理论的基础,下列性质不属于 CAP 的是( )。B

A.分区容错性

B.原子性

C.可用性

D.一致性

MongoDB是一种NoSQL数据库,具体地说,是( )存储数据库。B

A.键值

B.文档

C.图形

D.XML

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

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

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

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

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

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

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

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

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

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

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

下面对HBase的描述不正确的是(B)?A是一种NoSQL数据库  B.不是开源的  C.是分布式的  D.是面向列的

HBase虚拟分布式模式需要(C)个节点?A.最少3个  B.2  C.1   D.3

HBase分布式模式最好需要(D)个节点?A.最少3个  B.2  C.1  D.3

HBase依靠(C)存储底层数据。A.MapReduce  B.Memory  C.HDFS  D.Hadoop

HBase依赖(C)提供消息通信机制。A.Chubby  B.Socket  C.Zookeeper   D.RPC

HBase来源于哪篇文章?(B )A.BigTable  B.BigTable  C.MapReduce  D.The Google File System.

HBase的逻辑节点不包括(C)。A.Regionmaster  B.Master  C.NameNode  D.Zookeeper

当用户读写HBase数据库时,会首先在()寻找表和行键对应的分区。A.Region  B.ZooKeeper  C.Master  D.RegionServer

当用户进行读写数据时,会根据需要读写的表和行键,通过如下顺序寻找该行键对应的分区:Zookeeper->META->Regionserver>Region

HBase不包括如下(D)分区方式。A.自动分区  B.预分区  C.手动拆分  D.固定分区

HFile数据格式中的Data字段用于(D)。A.存储数据的起点  B.存储数据块的起点  C.指定字段的长度  D.存储实际的KeyValue数据

Rowkey设计的原则,下列哪些选项的描述是不正确的?(A)A.本身是无序的  B.可以使用汉字  C.可以使用字符串  D.尽量保证越短越好


MongoDB采用(C)进行数据存储与编码传输。A.YAML  B.XML  C.BSON  D.JSON

以下哪个不是MongoDB数据库的索引类型?(B)A.全文索引  B.时间索引  C.单键索引  D.地理位置索引

以下哪个不是MongoDB数据库在分片时需要的节点?(D) A.Config Server  B.Mongos  C.Shard  D.Config Router

CouchDB与MongoDB比较,不正确的是(C)。

A.CouchDB支持多主节点间的数据复制,而MongoDB只支持主从复制

B.CouchDB采用通用JSON格式存储和传输数据

C.CouchDB支持动态查询,MongoDB不支持动态查询

D.CouchDB更多地采用通用技术,并考虑和ASF其他模块的配合

MongoDB的分片切分机制不包括(D)。A.哈希分片  B.升序分片  C.位置分片  D.随机分片

MongoDB数据库中基本单元为?(B)A.字段  B.文档  C.表格  D.集合

1.Neo4j采用(D)查询语言。A.Neo4j Query Language  B.Structured Query Language  C.Cassandra Query Language  D.Cypher Query Language

2.Neo4j中CQL语法不支持的有(D)A.Match  B.Delete  C.Create  D.Update

3.(B)数据库不是基于Java实现的。A.Neo4j  B.MongoDB  C.Cassandra  D.Hbase

4.Redis采用的是(C)模式。A.列存储  B.图存储  C.键值对存储  D.文档存储

5.Neo4j中,下面(D)语句可以删除所有的节点和关系。

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)

A.关系连接实体对象(Entity),关系没有方向性

B.标签(Labels)是对实体对象(Entity)做的说明

C.属性(Properties)表示的是实体对象(Entity)中的属性

D.节点代表最终的实体对象

7.Neo4j采用的是(B)模式。A.文档存储  B.图存储  C.列存储  D.键值对存储

8.下列哪些场景不适合使用Neo4j.(A)A.数据检索  B.关系中的路径查找  C.电商里的物品推荐  D.强相关的社交网络

判断题

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

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

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

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

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

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

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

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

1.MongoDB的主节点选举算法是Paxos算法。F

2.MongoDB中的一组文档称为“集合”,可以类比为传统数据库中的“数据库”。F

3.MongoDB支持复杂的数据结构,支持索引(包括二级索引和地理空间索引),支持聚合查询。T

4.MongoDB的集合是动态模式的,同一个集合里面的文档可以是各式各样的。T

5.BSON比JSON相比,检索速度更快,更节省空间。F

6.MongoDB采用副本集提供数据库的扩缩容能力。F

1.Neo4j中CQL语法中 Set的作用是可以更新实体对象(Entity)的属性,也可以新加实体对象(Entity)的属性。  T

2.Neo4j不支持分布式。  F

3.搜索引擎系统常和其他NoSQL数据库或分布式文件系统配合使用。  T

4.Neo4j中CQL语法不支持limit。  F

简答题

  1. 描述HBase有哪些特性,解释说明。
    答案:
    容量巨大、列存储、稀疏性、扩展性强、高可靠性。
    ①容量巨大:百亿行、百万列、可以在横向和纵向两个维度插入数据。
    ②列存储:面向列进行存储和权限控制,且支持基于列的独立索引。
    ③稀疏性:数据以字符串形式存储,数据为空的列不占用存储空间。
    ④扩展性强:横向扩展:增加服务器到现有集群。纵向扩展:不断优化主服务器的 性能,提高存储空间和性能。
    ⑤高可靠性:HBase运行在HDFS上,HDFS的多副本存储可以让它在出现故障时自 动恢复,同时HBase内部也提供WAL(预写日志),和Replication 机制

  2. HBase数据库写入数据的流程。
    答案:
    ①客户端首先访问zookeeper,从meta表得到写入数据对应的region信息和相应 的region服务器。
    ②找到相应的region服务器,把数据分别写到HLog和MemStore上一份。
    ③MemStore达到阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以从HLog上恢复)。
    ④当StoreFile文件达到一定的数量后,会触发Compact合并操作,合并为一个StoreFile
    ⑤当Storefile大小超过一定阈值后,会把当前的Storefile分割为两个(Split分裂)。

  3. HBase数据库读取数据的流程。
    答案:
    ①客户端先访问zookeeper,从meta表读取Region的信息对应的服务器。
    ②客户端向对应Region服务器发送读取数据的请求,Region接收请求后,先从MemStore找数据,如果没有,再到StoreFile上读取,然后将数据返回给客户端。

  4. HBase集群都有哪些组件?写出各自的功能
    答案:
    组件:客户端、zookeeper、HMaster、RegionServer
    功能:客户端:HBase系统的入口:客户端用来操作HBase数据库
    通信功能:与HMaster进行管理类通信,与Regionserver进行数据读写类通信
    多种形式客户端:HBase shell、Java编程、Thrift等,具体使用后面章节详细介绍
    ZooKeeper:主要用来解决分布式应用中经常遇到的数据管理的问题,如数据的发布 /订阅、分布式协调/通知、集群管理、HMaster选举、分布式锁等
    在HBase中协调的任务:HMaster选举、系统容错、Region元数据管理,记录 HMaster/HRegionServer节点地址、Region状态管理
    HMaster:HMaster是HBase集群中的主服务器,负责监控集群中的所有RegionServer, 并且是所有元数据更改的接口。
    HMaster主要负责表和region的管理工作
    (1)与客户端交互,管理用户对表的增、删、改、查操作
    (2)管理RegionServer的负载均衡
    (3)处理RegionServer的故障转移
    (4)调整Region的分布,Region的分配和移除
    RegionServer:一般在分布式集群当中,RegionServer运行在DataNode服务器上, 实现数据的本地性。每个RegionServer包含多个Region,主要负责响应用户读写请求,从HDFS中读写数据。RegionServer是Hbase集群最核心的模块。
    它负责的功能有:
    (1)处理客户端读写请求。
    (2)处理分配给它的Region。
    (3)刷新缓存到HDFS中。
    (4)处理Region的合并与拆分。

  5. HBase与HDFS的关系,HFile文件过多对集群有什么影响?如何解决?简单描述对应的方法及如何权衡
    答案:
    影响:HFile文件越多,I/O操作越慢,读写也会延时,导致慢操作。
    解决方法:HFile合并:①Minor合并:在Store内部,将满足条件的多个小的HFile, 合并成大的HFile。Minor合并是触发式的,达到触发条件才会进行Minor合并
    ②Major合并:将Store中的所有HFile合并成一个大文件;有时也会对整个表的同 一列族的HFile进行合并,这是一个耗时和耗费资源的操作,会很大程度上影响集群性能。

  6. 写出MongoDB副本集的工作流程及复制的目的。
    答案:
    工作流程:当集群中主节点发生故障时,副本集可以自动投票,选举出新的节点, 并引导其余的从节点连接新的主节点。
    复制目的:保证数据在生产部署时的冗余和可靠性,通过在不同的机器上保存副本, 保证数据的不会因为单点故障而丢失。能够随时应对数据丢失、机器损坏带来的风 险。除此以外,还能提高数据的读取能力,用户的读取和写入在不同的服务器,而 且,由不同的服务器为不同的用户提供服务,提高整个系统的负载能力。

  7. 写出MongoDB分片集群的组件及搭建分片集群的流程。
    答案:
    组件:配置服务器(Config Server)、路由服务器(Route Server)、分片服务器(Shard Srever)。
    ① 配置服务器,一个独立的mongod进程,集群启动前进行配置,保存分片的元数据。② 路由服务器,即mongos进程,起到一个路由的功能,本身不存储数据,启动时从配置服务器加载元数据,根据元数据信息,将客户端的请求转发给对应的分片服务器,对分片服务器返回的响应进行聚合并返回给客户端。③ 分片服务器,保存整个数据库的数据分片的服务器,可以是单独的mongod服务器,也可以是一个副本集。通常采用副本集的方式,避免单点故障导致的数据丢失。
    流程:①启动配置服务器,mongod进程,配置为单成员副本集。②启动mongos, 使用配置文件启动一个mongos实例。③启动一个分片服务器,使用单成员的副本 集。④对数据库启用分片。⑤对集合进行分片。

  8. 简单描述MongoDB的特点及其与关系数据库的区别。
    答案:
    特点:C++语言编写、(高性能、高可用、可伸缩、易部署、易使用、存储数据十分方便)、介于关系型数据库和非关系型数据库之间的产品、面向文档的NoSQL数据库、开源软件,无表结构
    区别:
    MySQL
    MongoDB
    解释
    Database
    database
    数据库
    Table
    collection
    数据表/集合
    Row【一条记录,实体】
    document
    行/文档
    Column
    field
    列/字段或属性
    table join
    不支持
    表连接
    Primary key
    primary key
    主键

  9. 为什么要使用Memcached或者Redis。
    答案:
    目的:在内存中缓存关系型数据库的查询结果,减少数据库自身被访问的次数,以提高Web应用的响应速度,提高网站架构的并发能力和可扩展性。

  10. 非关系数据库都有哪几类?举例并说明使用场景。
    答案:
    分类
    举例
    典型应用场景
    键值数据库
    Redis
    缓存,主要用于处理大量数据的高访问负载。
    列族数据库
    HBase
    海量数据的分布式存储
    文档型数据库
    MongoDB
    Web应用的数据存储
    图形数据库
    Neo4J
    社交网络,推荐系统等。专注于构建关系图谱

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐