非关系型数据库简答题

  1. 描述HBase有哪些特性,解释说明。
  • 海量存储:Hbase适合存储PB级别的海量数据,在几十到百毫秒内返回数据。
  • 列式存储:HBase是面向列(族)存储的,并且列(族)拥有独立索引,对数据的权限控制也是从列族层面来实现的。
  • 极易扩展:HBASE为横向扩展,只需要添加服务器台数即可对集群进行扩展
  • 高可靠性:HBASE是基于hdfs分布式文件系统的,hdfs采用副本机制,所以HBASE具有高可靠性
  • 稀疏:在列数据为空的情况下,是不会占用存储空间的。
  1. HBase数据库写入数据的流程。
  • 客户端首先访问zookeeper,从meta表得到写入数据对应的region信息和相应的region服务器。
  • 找到相应的region服务器,把数据分别写到HLog和MemStore上一份。
  • MemStore达到阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以从HLog上恢复)。
  • 当StoreFile文件达到一定的数量后,会触发Compact合并操作,合并为一个StoreFile
  • 当Storefile大小超过一定阈值后,会把当前的Storefile分割为两个(Split分裂)
  1. HBase数据库读取数据的流程。

客户端先访问zookeeper,从meta表读取Region的信息对应的服务器。
客户端向对应Region服务器发送读取数据的请求
Region接收请求后,先从MemStore找数据,如果没有,再到StoreFile上读取
将数据返回给客户端。

  1. HBase集群都有哪些组件?写出各自的功能
    Client客户端
    HBase系统的入口:客户端用来操作HBase数据库
    通信功能:与HMaster进行管理类通信,与Regionserver进行数据读写类通信
    Zookeeper
    主要用来解决分布式应用中经常遇到的数据管理的问题
    在HBase中协调的任务:HMaster选举,系统容错,Region元数据管理,记录HMaster/HRegionServer节点地址,Region状态管理
    HMaster
  2. HMaster是HBase集群中的主服务器,负责监控集群中的所有RegionServer,并且是所有元数据更改的接口。
  3. HMaster主要负责表和region的管理工作
  • 与客户端交互,管理用户对表的增、删、改、查操作
  • 管理RegionServer的负载均衡
  • 处理RegionServer的故障转移
  • 调整Region的分布,Region的分配和移除
    RegionServer
    一般在分布式集群当中,RegionServer运行在DataNode服务器上,实现数据的本地性。每个RegionServer包含多个Region,主要负责响应用户读写请求,从HDFS中读写数据。RegionServer是Hbase集群最核心的模块。
    它负责的功能有:
    处理客户端读写请求。
    处理分配给它的Region。
    刷新缓存到HDFS中。
    处理Region的合并与拆分。
  1. HBase与HDFS的关系,HFile文件过多对集群有什么影响?如何解决?简单描述对应的方法及如何权衡

HDFS:
海量数据储存,适合一次扫描大量数据
适合一次写入,多出读取
不适合频繁修改数据
Hbase
适合一词扫描少量数据
合适多次写入多次读取
支持数据更新
支持删除数据

影响:HFile文件过多会影响集群的性能,增加HMaster的压力,HMaster的存储空间是有限的,HFile文件过多会占用大量的HMaster的内存空间。源数据增多,增大了检索文件目录的时间。
解决办法:进行文件合并
在Hbase中每当有 memstore 数据 flush 到磁盘之后,就形成一个 storefile, 当 storeFile 的数量达到一定程度后,就需要将 storefile 文件来进行compaction 操作。

  1. 写出MongoDB副本集的工作流程及复制的目的。
    工作流程:备份节点定期轮询主节点上的数据操作,然后对自己的数据副本进行这些操作,从而保证跟主节点的数据同步
    复制的目的:
    Failover(故障转移,故障恢复)
    Redundancy(数据冗余)
    避免单点故障,提升数据可用性
    读写分离,分担读压力
    对用户透明的系统维护升级

  2. 写出MongoDB分片集群的组件及搭建分片集群的流程。
    mongod:处理所有的数据请求,管理数据的增删改查操作
    mongos(路由):集群的路由选择
    mongod:为研发人员提供一套交互式js API

启动配置服务器,mongod进程,配置为单成员副本集。
启动mongos,使用配置文件启动一个mongos实例。
启动一个分片服务器,使用单成员的副本集。
对数据库启用分片
对集合进行分片

  1. 简单描述MongoDB的特点及其与关系数据库的区别。
    数据量大
    频繁写入
    价值密度较低,对事务性要求低

存储方式:MongoDB是文档数据库,关系型数据库是按照结构化的方法存储数据
存储规范:关系型数据库避免重复,规范化,充分利用存储空间,MongoDB要求数据冗余备份,价值密度低。
扩展性:关系型数据库难于横向扩展,MongoDB可以横向扩展。
事务性:关系型数据库事务性较强,MongoDB事务性较低

  1. 为什么要使用Memcached或者Redis。
    在内存中缓存关系型数据库的查询结果,减少数据库被访问的次数,从而提高web应用的响应速度,提高web应用的并发性和可扩展性,分担数据库的并发负载。

  2. 非关系数据库都有哪几类?举例并说明使用场景。
    键值数据库:主要用于处理大量数据的高访问负载
    图像数据库:只要用于网络社交媒体
    列族数据库:主要用于海量数据的分布式存储
    文档数据库:主要用于web应用的数据存储

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值