文章目录

  • 第1章 绪论
    • 1. NoSQL和关系型数据库在设计目标上有何主要区别?
    • 2. 简要总结一下NoSQL数据库的技术特点。
  • 第2章 NoSQL数据库的基本原理
    • 1. 描述分布式数据管理的特点。
    • 2. 什么是CAP原理?CAP原理是否适用于单机环境?
    • 3. 简述BASE理论的具体含义。
    • 4. 在数据一致性问题上,ACID和BASE的差别是什么?
    • 5. 简述NoSQL数据库的4种类型,以及它们的数据模型。
    • 6. 布隆过滤器的优缺点是什么?如何降低布隆过滤器的误报率?
  • 第4章 HBase的基本原理与应用
    • 1. HDFS是否属于NoSQL数据库?请说明用HDFS进行数据管理存在的问题。
    • 2. HBase的特点是什么?(4条以上)
    • 3. HBase采用了什么样的数据结构?
    • 4. HBase的拓扑结构是什么?每个角色起什么作用?
    • 5. 请用拓扑结构图的形式展示HBase的典型架构
  • 第5章 HBase的高级原理
    • 1. HBase中预写日志(WAL)的作用。
    • 2. 如何理解HBase的分区拆分机制,包括哪几种方式?
    • 3. 如何理解HBase的合并,包括哪几种方式?
  • 第7章 MongoDB的原理和使用
    • 1. 描述MongoDB的集群架构(包含的角色和每个角色的作用)。
    • 2. 请用拓扑结构图的形式展示MongoDB的典型架构
    • 3. 描述MongoDB的分片机制,它支持哪几种分片策略?
    • 4. MongoDB集群的数据多副本策略?
  • 第8章 其他NoSQL数据库
    • 1. 什么是Neo4j?并对其数据模型进行详细描述。
    • 2. 描述Redis的数据类型(5种)。
    • 3. Redis数据库支持的几种拓扑架构。

第1章 绪论

1. NoSQL和关系型数据库在设计目标上有何主要区别?

  • 关系数据库

    • 优势:

      • 以完善的关系代数理论作为基础,具有数据模型、完整性约束和事务的强一致性等特点
      • 借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。
    • 劣势:
      • 可扩展性较差,无法较好支持海量数据存储
      • 数据模型过于死板、无法较好支持Web2.0应用
      • 事务机制影响了系统的整体性能等。
  • NoSQL数据库
    • 优势:

      • NoSQL数据库会采用非关系的数据模型,弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制。
      • 可能无法支持,或不能完整的支持SQL语句。实现强大的分布式部署能力——包括分区容错性、伸缩性和访问效率(可用性)等。
      • 可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等。
    • 劣势:
      • 缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性
      • 技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。

2. 简要总结一下NoSQL数据库的技术特点。

  • NoSQL数据库会采用非关系的数据模型,弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制
  • 可能无法支持,或不能完整的支持SQL语句
  • 目的是实现强大的分布式部署能力——包括分区容错性、伸缩性和访问效率(可用性)等
  • NoSQL大多是开源免费的

第2章 NoSQL数据库的基本原理

1. 描述分布式数据管理的特点。

  • 数据分片:使数据均匀分布到多个节点上,可以充分利用各个节点的处理能力、存储能力和吞吐能力。
  • 数据多副本:将数据存储为多个副本,不同的副本存储在不同节点上。
  • 一次写入多次读取:在系统底层只支持新建和追加,此时系统具有更好的顺序存储特性。
  • 分布式系统的可伸缩性:可以移除故障节点,替换新节点,实现数据的再平衡。

2. 什么是CAP原理?CAP原理是否适用于单机环境?

  • CAP是指分布式系统中的Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)。

    • Consistency(一致性):分布式系统中所有节点都能对某个数据达成共识。
    • Availability(可用性):分布式系统的响应速度或响应能力。
    • Partition tolerance(分区容错性):在部分节点故障、以及出现消息丢包的情况下,集群系统(的剩余部分)仍然可以提供服务。
  • CAP理论是指在分布式系统中,CAP三个特性不可兼得,只能同时满足两个。CAP不能兼顾,但并非绝对对立。
  • CAP理论的主要场景是在分布式环境下,在单机环境下,基本可不考虑CAP问题.

3. 简述BASE理论的具体含义。

  • 由于CAP无法兼顾,分布式系统需要根据实际业务要求,对一致性做一定妥协,提供弱一致性保障。具体要求为BASE理论:

    • Basically Available(基本可用):核心部分或其他数据可用。
    • Soft-state(软状态/柔性事务):允许多个副本存在暂时的不一致状态。
    • Eventual Consistency (最终一致性):存在中间状态,但经历一段时间之后,最终会一致。

4. 在数据一致性问题上,ACID和BASE的差别是什么?

  • ACID:

    • ACID是典型的强一致性要求。要求多个节点的数据副本都是一致的,强调数据的一致性
    • ACID是大多数NoSQL抛弃的机制,因为无法在分布式环境中保证效率
  • BASE:
    • BASE的最终一致性(在一些应用场景下)也可以看作NoSQL允许多个副本可以存在暂时的不同步(即异步更新)
    • 结合CAP理论,这种设计强调PA,可以提高响应速度。

5. 简述NoSQL数据库的4种类型,以及它们的数据模型。

  • 键值对存储模式(key-value)

    • 数据模型:

      • 每行数据的结构为:<key, value>
      • 值可以看作是一个单一的存储区域,可以是任何的类型。
  • 列存储模式(column-family)
    • 数据模型:

      • 可以看作是一种纵向切分数据的方式,不同列会放到不同的位置(节点)存储
      • 实际软件一般也会按照行键(key)再进行横向切片和分布式存储。
  • 文档存储模式(document)
    • 数据模型:

      • 可以看作键值对模式的升级,底层存储的每行数据中仍然存在key(或者ID)和value
      • 但值是采用JSON等格式描述的复杂数据类型。
  • 图存储模式(graph)
    • 数据模型:将数据存储为点和边的关系。

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

  • 目的:检查某个元素是否存在于集合(例如数据块)中。
  • 优点:空间占用低、检索速度快
  • 缺点:存储在一定的误报率
    • 当布隆过滤认为某元素存在于集合时,该元素可能并不存在
    • 但如果布隆过滤认为该元素不存在于集合,则肯定不存在
  • 误报率:
    • 布隆过滤器的误报率,和哈希算法的个数、二进制向量的大小以及数据总量有关
    • 一般来说二进制向量越大,误报率越低,因此需要在存储空间占用和误报率之间做权衡。
  • 降低误报率的方法:
    • 采取多个独立的哈希算法同时进行映射。
    • 增大二进制向量的大小。

第4章 HBase的基本原理与应用

1. HDFS是否属于NoSQL数据库?请说明用HDFS进行数据管理存在的问题。

  • HDFS不属于NoSQL数据库。
  • 用HDFS进行数据管理存在的问题:
    • HDFS不支持对数据的随机读写。
    • HDFS没有数据表的概念,不能提供对数据的表格化存储。
    • HDFS无法针对行数统计、过滤扫描等常见数据查询功能。

2. HBase的特点是什么?(4条以上)

  • 采用面向列+键值对的存储模式。
  • 可以实现便捷的横向扩展
  • 可以实现自动的数据分片。
  • 可以实现严格的读写一致性和自动的故障转移。
  • 可以实现对全文的检索与过滤。
  • 支持通过命令行或者Java、Python等语言来进行操作。

3. HBase采用了什么样的数据结构?

  • HBase采用的是一种面向列的键值对存储模式。

    • HBase表中,列族是表结构的一部分,需要在建表时预先定义。
    • 列不属于表结构,HBase不会预先定义列名及其数据类型和值域等内容。
    • 每一个记录中的每个字段必须记录自己的列名(列标识符)以及值和时间戳。

4. HBase的拓扑结构是什么?每个角色起什么作用?

  • HBase采用主从式架构,包括一个主节点(Hmaster)和若干个从节点(Hregionserver)
  • 除此之外,还需要Zookeeper来实现节点监控和容错:
    • Zookeeper是一个分布式协调服务,实现节点监控、活跃主节点选举、配置维护等功能
    • 维护元数据的总入口,以及记录Master节点的地址
    • 监控集群,如果Hregionserver出现故障,则通知Master,Master会将其负责的分区移交给其他Hregionserver
    • 当活跃Master节点故障的情况下,Zookeeper会在备用Master节点中选举一个新的活跃Master节点。
  • HMaster节点是所有Hregionserver的管理者,负责对Hregionserver的管理范围进行分配,但不负责管理用户数据表。
  • Hregionserver是用户数据表的实际管理者,在分布式集群中,数据表会进行水平分区,每个Hregionserver只会对一部分分区进行管理——负责数据的写入、查询、缓存和故障恢复等。用户表最终是以文件形式存储在HDFS上,但如何将写入并维护这些文件,则是由Hregionserver负责的。

5. 请用拓扑结构图的形式展示HBase的典型架构


第5章 HBase的高级原理

1. HBase中预写日志(WAL)的作用。

  • 当数据被写入memstore之前,Regionserver会先将数据写入预写日志(WAL,Writeaheadlog)
  • 预写日志一般被写入HDFS,但键值写入时不会被排序,也不会区分Region。
  • 出现节点宕机、线程重启等问题时,memstore中未持久化的数据会丢失。
  • 当Regionserver恢复后,查看当前WAL中的数据,并将记录进行重放(replay)根据记录的表名和分区名,将数据恢复到指定的store中。
  • 在进行自动或手动的数据持久化操作之后,Regionserver会将不需要的WAL清除掉。

2. 如何理解HBase的分区拆分机制,包括哪几种方式?

  • HBase为了实现分布式大数据管理,设计了表的水平拆分机制,这是HBase实现分布式、负载均衡以及可伸缩性等机制的重要方式。
  • HBase具有三种分区方式:自动分区预分区手动拆分,都是基于行键进行分区。

3. 如何理解HBase的合并,包括哪几种方式?

  • HBase中设计了合并(compact)机制,通过读取多个小文件,处理并写入一个新的大文件的方式,实现storefile的合并。
  • 它包括MajorCompactMinor Compact两种合并方式。

第7章 MongoDB的原理和使用

1. 描述MongoDB的集群架构(包含的角色和每个角色的作用)。

  • MongoDB集群由Mongod、Mongos和Config服务器组成。

    • 负责存储实际数据分片的设备称为Mongod(或称为Shard)。
    • Mongos服务器,作为用户访问集群的入口,负责与客户端的交互,并在内存中缓存分片数据的存储和路由信息。
    • Config服务器,负责持久化存储各类元数据和配置信息,当Mongos服务器启动时,会通过Config服务器读取相关信息并缓存到内存。

2. 请用拓扑结构图的形式展示MongoDB的典型架构

3. 描述MongoDB的分片机制,它支持哪几种分片策略?

  • MongoDB将数据水平切分机制称为分片(Sharding)。
  • MongoDB支持对文档的自动分片,分片的依据是分片键(Shard Keys),分片键可以由文档的一个或多个字段构成。
  • MongoDB支持三种分片(片键)策略:升序分片、哈希分片和位置分片。
    • 升序分片:将片键进行升序排序,并在当前分片的数据量达到某个阈值时进行分片。
    • 哈希分片:将片键进行哈希运算,使数据的分布更均匀。
    • 位置分片:类似于对片键的前缀或子串进行判断。

4. MongoDB集群的数据多副本策略?

  • MongoDB支持分片的多副本,多副本采用主从备份形式,MongoDB称这种机制为复制集机制。
  • 主节点(Primary节点):负责数据的写入和更新。主节点在更新数据的同时,会将操作信息写入日志,称为oplog。
  • 从节点(Secondary节点):监听主节点oplog的变化,并根据其内容维护自身的数据更新,使之和主节点保持一致(最终一致性)。

第8章 其他NoSQL数据库

1. 什么是Neo4j?并对其数据模型进行详细描述。

  • Neo4j是一个基于Java语言的开源图数据库系统。
  • Neo4j具有强大的图处理和查询搜索能力,通过专用的Cypher语言完成各类操作。
  • Neor4j采用将数据存储为节点和边的图存储模式,其中节点表示实体、边表示实体之间的关系。

2. 描述Redis的数据类型(5种)。

  • Redis 支持的数据类型有字符串、散列、列表、集合、有序集合。

3. Redis数据库支持的几种拓扑架构。

  • 主从复制:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。
  • 哨兵机制:
    • 哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控
    • 当出现故障时通过投票机制选择新的 master 并将所有的 slave 连接到新的 master。
  • Redis集群:
    • Redis没有使用一致性哈希机制,而是引入了哈希槽的概念。
    • Redis 集群有16384个哈希槽,集群中所有设备平分这些哈希槽,数据则根据其行键的散列计算结果,映射到不同的哈希槽中。

【大数据存储技术】思考题及参考答案相关推荐

  1. 【大数据存储技术】第8章 其他NoSQL数据库

    文章目录 第8章 其他NoSQL数据库 8.1 图数据库简介 8.2 Neo4j 8.2.1 Neo4j 简介 8.2.2 Neo4j 的安装与实践 8.3 Redis和内存数据库 8.3.1 内存数 ...

  2. 2.3大数据存储技术

    大数据存储技术面向的是海量.异构数据,因此,它需要提供高性能.高可靠的存储和访问能力.本节将介绍大数据存储技术的概率和原理,包括Hadoop分布式文件系统(HDFS).列式数据库(HBase)和其他数 ...

  3. 三种最典型的大数据存储技术路线

    三种最典型的大数据存储技术路线 近期由中关村大数据产业联盟举办的"大数据100分"线上研讨会中,南大通用的CTO.资深业界专家武新博士同众多网友分享了底层数据处理技术的发展趋势和正 ...

  4. 大数据存储技术方案介绍

    2019独角兽企业重金招聘Python工程师标准>>> 大数据存储方案 Cap思想 分布式领域CAP理论, Consistency(一致性), 数据一致更新,所有数据变动都是同步的 ...

  5. 大数据存储技术之KUDU学习总结/快速入门

    KUDU学习总结 1 基础概念 官方:https://kudu.apache.org/ 在 KUDU 之前,大数据主要以两种方式存储: • 静态数据:以 HDFS 引擎作为存储引擎,适用于高吞吐量的离 ...

  6. 大数据存储技术期末复习(自用)

    一.题型 1. 判断题(20*2) 2. 简答题(3个*10) 3. 设计题(2个*15) 二.往年题目 三.知识点 (1)CAP理论 1.定义 一致性C:所有数据备份在同一时刻的值相同.读写请求是原 ...

  7. 大数据存储技术期末复习

    单选题 1.以下关于云计算.大数据和物联网之间的关系,论述错误的是: A.物联网可以借助于云计算实现海量数据的存储 B.物联网可以借助于大数据实现海量数据的分析 C.云计算.大数据和物联网三者紧密相关 ...

  8. 【大数据存储技术】实验2:MongoDB数据库的部署和操作

    目录 1.实现MongoDB单实例的部署 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) 1.1.1 查看Ubuntu版本 1.1.2 使用Ubuntu命令安装 1.2 启动Mon ...

  9. mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化...

    关系数据库的时代 关系数据库的设计理念 假设你有一台车,你需要给它存起来,给它找个停车位.传统数据库的存储方式就相当于,把这个车的所有零件拆下来,放在存放对应零件的盒子里,需要用的时候,再把他们取出来 ...

最新文章

  1. ES和JS的区别,以及JavaScript的基本组成
  2. java的初始化顺序
  3. php不能加载oci8,无法加载动态库'oci8.so'(PHP 7.2)
  4. Oracle 原理: 视图,对视图进行增删改操作
  5. 使用jieba和wordcloud进行中文分词并生成《悲伤逆流成河》词云
  6. vc++深入详解学习-NO.3
  7. 基础编程题之二进制插入(位运算)
  8. python使用函数的头文件_Python3.6下在Python中调用C函数
  9. 计算机网络信息安全定义,计算机网络与信息安全.pdf
  10. 扫地机自动回充揭秘 之开启篇
  11. 大学计算机网络实训目的,计算机专业大学生毕业实习目的
  12. Gson解析json数据
  13. android 图片画圆,在Android中画圆形图片的几种办法
  14. 为什么从此电脑访问不了ftp_ftp无法访问此文件夹怎么解决_ftp文件夹错误无法访问此文件夹如何处理-win7之家...
  15. 什么是编程?什么是编程语言?
  16. UVA - 10041 Vito's Family
  17. 努力前端【LeetCode-10】448. 找到所有数组中消失的数字 442. 数组中重复的数据(中等) 41. 缺失的第一个正数(困难) [鸽笼原理,数组,Map,类似No.645]
  18. python-基本的图像操作和处理
  19. SG3525matlab,基于SG3525芯片的大功率恒压/恒流LED电源研制 - 全文
  20. 实战:“小打卡”小程序从创意到上线完整开发过程解析

热门文章

  1. Facebook MySQL工程师吐槽MemSQL:MySQL比你们快无数倍
  2. ue4 android log,UE4+Log日志
  3. 计算机房疏散门宽度,13.2 防火与疏散 - 数据中心设计规范 GB50174-2017 - 消防规范大全 - 消防资源网!...
  4. MongoDb的ConnectionString链接字符串解析
  5. cygwin和mingw的比较
  6. 使用蛮力法解数字迷(枚举的范围尽可能地小)(C++)(蛮力法)
  7. 浅谈Xen和半虚拟化技术
  8. HTML 语法规范及其基本结构标签
  9. java虚拟机系列:java虚拟机内存模型
  10. Dwr概述与入门讲解