码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
【大数据存储技术】思考题及参考答案
文章目录
第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)
数据模型:
每行数据的结构为:
值可以看作是一个单一的存储区域,可以是任何的类型。
列存储模式(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的合并。
它包括
MajorCompact
和
Minor 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个哈希槽,集群中所有设备平分这些哈希槽,数据则根据其行键的散列计算结果,映射到不同的哈希槽中。
相关阅读:
SingletonKit单例源码阅读学习
渡众机器人自动驾驶小车运行Autoware 实现港口物流运输
30分钟部署一个kubernetes集群【1.17】
SpringMVC框架之Controller方法的返回值
java 编译 引用 jar 包进行编译和执行编译后的class文件
中国服装自主品牌行业市场环境与投资趋势分析报告
win10系统同时安装 vue2和vue3
Zephyr-7B-β :类GPT的高速推理LLM
深入了解Spring循环依赖本质
iOS 16适配屏幕旋转强制转屏切换大总结
原文地址:https://blog.csdn.net/Lenhart001/article/details/127919359
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号