当前位置:   article > 正文

NoSQL期末复习

nosql期末复习
简答题
1. 描述 HBase 有哪些特性,解释说明。
    答案:
容量巨大列存储稀疏性扩展性强高可靠性
①容量巨大: 百亿行百万列、可以在 横向纵向两个维度插入数据。
②列存储: 面向列进行存储和权限控制,且支持 基于列的独立索引
③稀疏性:数据以 字符串形式存储, 数据为空的列 不占用存储空间
④扩展性强: 横向扩展:增加服务器到现有集群。纵向扩展:不断优化主服务器的 性能,提高存储空间和性能。
⑤高可靠性: HBase运行在HDFS ,HDFS的 多副本存储可以让它在出现故障时自 动恢复,同时HBase内部也提供WAL(预写日志),和Replication 机制
2. HBase 数据库写入数据的流程。
  答案:
①客户端首先 访问zookeeper,从 meta表得到写入数据对应的 region信息和相应的 region服务器
找到相应的region服务器,把数据分别 写到HLogMemStore上一份。
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 副本集的工作流程及复制的目的。
答案:
工作流程:在 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
社交网络,推荐系统等。专注于构建关系图谱
第一章 绪论
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
海量数据的分布式存储
以列族存储,将同一列族数据存在一起
容量巨大、高可靠性、高可扩展性
功能相对局限
文档型数据库
MongoD B
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定位
  1. 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分布式集群部署
    (分片集如何管理、组件、为什么使用集群)
第七章 其他非关系型数据库
1、应用场景
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/395376
推荐阅读
相关标签
  

闽ICP备14008679号