NoSQL大数据存储技术思考题及参考答案

思考题及参考答案

第1章 绪论

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

(1)关系数据库

优势:以完善的关系代数理论作为基础,具有数据模型、完整性约束和事务的强一致性等特点,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。

劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等。

(2)NoSQL数据库

优势:NoSQL数据库会采用非关系的数据模型,弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制。可能无法支持,或不能完整的支持SQL语句。目的是实现强大的分布式部署能力——一般包括分区容错性、伸缩性和访问效率(可用性)等。可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等。

劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。

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

(1)NoSQL数据库会采用非关系的数据模型

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

(3)可能无法支持,或不能完整的支持SQL语句

(4)目的是实现强大的分布式部署能力——一般包括分区容错性、伸缩性和访问效率(可用性)等

(5)NoSQL大多是开源免费的

3. 从发展趋势上看,NoSQL是否可以取代关系型数据库?并说明原因。

NoSQL不能取代关系型数据库。事实上,NoSQL数据库和关系型数据库是互补关系,在不限定场景的情况下,无法比较谁更强。

关系型数据库能够更好地保持数据的完整性和事务的一致性,以及支持对数据的复杂操作,在现实中拥有更普遍的适用领域。NoSQL数据库做不到上述,但是可以更好地实现分布式环境下对数据的简单管理和查询,即在大数据业务领域具有更大价值。

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

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

(1)数据分片:使数据均匀分布到多个节点上,可以充分利用各个节点的处理能力、存储能力和吞吐能力。

(2)数据多副本:将数据存储为多个副本,不同的副本存储在不同节点上。

(3)一次写入多次读取:在系统底层只支持新建和追加,此时系统具有更好的顺序存储特性。

(4)分布式系统的可伸缩性:可以移除故障节点,替换新节点,实现数据的再平衡。

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

CAP是指分布式系统中的Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)。Consistency(一致性)是指分布式系统中所有节点都能对某个数据达成共识。Availability(可用性)可以理解为分布式系统的响应速度或响应能力。Partition tolerance(分区容错性)指在部分节点故障、以及出现消息丢包的情况下,集群系统(的剩余部分)仍然可以提供服务。

CAP理论是指在分布式系统中,CAP三个特性不可兼得,只能同时满足两个。CAP不能兼顾,但并非绝对对立。

CAP理论的主要场景是在分布式环境下,在单机环境下,基本可不考虑CAP问题. 

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

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

  1. Basically Available(基本可用):核心部分或其他数据可用。
  2. Soft-state(软状态/柔性事务):允许多个副本存在暂时的不一致状态。

(3)Eventual Consistency (最终一致性):存在中间状态,但经历一段时间之后,最终会一致。

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

(1)ACID是典型的强一致性要求。要求多个节点的数据副本都是一致的,强调数据的一致性。ACID是大多数NoSQL抛弃的机制,因为无法在分布式环境中保证效率。

(2)BASE的最终一致性(在一些应用场景下)也可以看作NoSQL允许多个副本可以存在暂时的不同步(即异步更新)。结合CAP理论,这种设计强调PA,可以提高响应速度。

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

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

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

(2)列存储模式(column-family)

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

(3)文档存储模式(document)

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

(4)图存储模式(graph)

数据模型:将数据存储为点和边的关系。

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

布隆过滤器 的目的是检查某个元素是否存在于集合(例如数据块)中。

优点是空间占用低、检索速度快,缺点则是存储在一定的误报率:当布隆过滤认为某元素存在于集合时,该元素可能并不存在,但如果布隆过滤认为该元素不存在于集合,则肯定不存在。

布隆过滤器的误报率,和哈希算法的个数、二进制向量的大小以及数据总量有关,一般来说二进制向量越大,误报率越低,因此需要在存储空间占用和误报率之间做权衡。降低误报率的方法:(1)采取多个独立的哈希算法同时进行映射。(2)增大二进制向量的大小。

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

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

HDFS不属于NoSQL数据库。

用HDFS进行数据管理存在的问题:

(1)HDFS不支持对数据的随机读写。

(2)HDFS没有数据表的概念,不能提供对数据的表格化存储。

(3)HDFS无法针对行数统计、过滤扫描等常见数据查询功能。

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

(1)采用面向列加键值对的存储模式。

(2)可以实现便捷的横向扩展

(3)可以实现自动的数据分片。

(4)可以实现严格的读写一致性和自动的故障转移。

(5)可以实现对全文的检索与过滤。

(6)支持通过命令行或者Java、Python等语言来进行操作。

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

HBase采用的是一种面向列的键值对存储模式。HBase表中,列族是表结构的一部分,需要在建表时预先定义。

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

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

HBase采用主从式架构,包括一个主节点(Hmaster)和若干个从节点(Hregionserver)。除此之外,还需要Zookeeper来实现节点监控和容错。

(1)Zookeeper是一个分布式协调服务,实现节点监控、活跃主节点选举、配置维护等功能

  1. 维护元数据的总入口,以及记录Master节点的地址
  2. 监控集群,如果Hregionserver出现故障,则通知Master,Master会将其负责的分区移交给其他Hregionserver
  3. 当活跃Master节点故障的情况下,Zookeeper会在备用Master节点中选举一个新的活跃Master节点。

(2)HMaster节点是所有Hregionserver的管理者,负责对Hregionserver的管理范围进行分配,但不负责管理用户数据表。

(3)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两种合并方式。

4. HBase的Major Compact和Minor Compact两种合并方式有什么区别?

Minor Compact只能对部分文件进行操作。在合并的过程中,会根据TTL和minVersion属性,将过期数据清除,但不做其他清理。

Major Compact将对该Region的store中所有的storefile进行合并,形成一个唯一的storefile,其中所有的无效数据都会被处理。比较而言,Major Compact开销更大且耗时更长。(5分)

第7章 MongoDB的原理和使用

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

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

(1)负责存储实际数据分片的设备称为Mongod(或称为Shard)。

(2)Mongos服务器,作为用户访问集群的入口,负责与客户端的交互,并在内存中缓存分片数据的存储和路由信息。

(3)Config服务器,负责持久化存储各类元数据和配置信息,当Mongos服务器启动时,会通过Config服务器读取相关信息并缓存到内存。

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

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

MongoDB将数据水平切分机制称为分片(Sharding)。MongoDB支持对文档的自动分片,分片的依据是分片键(Shard Keys),分片键可以由文档的一个或多个字段构成。

MongoDB支持三种分片(片键)策略:升序分片、哈希分片和位置分片。

(1)升序分片会将片键进行升序排序,并在当前分片的数据量达到某个阈值时进行分片。

(2)哈希分片会将片键进行哈希运算,使数据的分布更均匀。

(3)位置分片类似于对片键的前缀或子串进行判断。

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

MongoDB支持分片的多副本,多副本采用主从备份形式。MongoDB称这种机制为复制集机制。

主节点(Primary节点)负责数据的写入和更新。主节点在更新数据的同时,会将操作信息写入日志,称为oplog。

从节点(Secondary节点)监听主节点oplog的变化,并根据其内容维护自身的数据更新,使之和主节点保持一致(最终一致性)。

第8章 其他NoSQL数据库

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

Neo4j是一个基于Java语言的开源图数据库系统。Neo4j具有强大的图处理和查询搜索能力,通过专用的Cypher语言完成各类操作。

Neor4j采用将数据存储为节点和边的图存储模式,其中节点表示实体、边表示实体之间的关系。

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

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

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

(1)主从复制:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。

(2)哨兵机制: 哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master 并将所有的 slave 连接到新的 master。

(3)Redis集群:Redis没有使用一致性哈希机制,而是引入了哈希槽的概念。Redis 集群有16384个哈希槽,集群中所有设备平分这些哈希槽,数据则根据其行键的散列计算结果,映射到不同的哈希槽中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/202734.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Clickhouse Join

ClickHouse中的Hash Join, Parallel Hash Join, Grace Hash Join https://www.cnblogs.com/abclife/p/17579883.html 总结 本文描述并比较了ClickHouse中基于内存哈希表的3种连接算法。 哈希连接算法速度快&#xff0c;是最通用的算法&#xff0c;支持所有连接类型和严格性设…

TCP/IP封装

数据如何通过网络发送&#xff1f;为什么 OSI 模型需要这么多层&#xff1f; 下图显示了数据在网络传输时如何封装和解封装。 步骤1&#xff1a;当设备A通过HTTP协议通过网络向设备B发送数据时&#xff0c;首先在应用层添加HTTP头。 步骤2&#xff1a;然后将TCP或UDP标头添加…

Hadoop入门学习笔记

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 这里写目录标题 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.1.1. 修改虚拟机子网IP和网关1.1.2. 安装…

Modbus TCP工业RFID读写器的选型要点

Modbus TCP工业RFID读写器是一种采用Modbus TCP通信协议的RFID读写器。它可以通过TCP/IP网络与计算机或其它设备进行通信&#xff0c;实现远程读取和写入RFID标签数据的目的。 与传统的RFID读写器相比&#xff0c;Modbus TCP工业RFID读写器具有更远的读写距离、更高的读写灵敏度…

uniapp如何与原生应用进行混合开发?

目录 前言 1.集成Uniapp 2.与原生应用进行通信 3.实现原生功能 4.使用原生UI组件 结论: 前言 随着移动应用市场的不断发展&#xff0c;使用原生开发的应用已经不能满足用户的需求&#xff0c;而混合开发成为了越来越流行的选择。其中&#xff0c;Uniapp作为一种跨平台的开…

系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后&#xff0c;都有一整套的架构、测试、监控和安全措施。今天&#xff0c;让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…

开发知识点-Maven包管理工具

Maven包管理工具 SpringBootSpringSecuritydubbo图书电商后台实战-环境设置&#xff08;JDK8, STS, Maven, Spring IO, Springboot&#xff09;点餐小程序Java版本的选择和maven仓库的配置视频管理系统&&使用maven-tomcat7插件运行web工程SpringTool suite——maven项目…

promis.all的异步使用

基础 参考 https://blog.csdn.net/qq_52855464/article/details/125376557 简单来说 Promise.all是处理接口返回方法异步的&#xff0c;能够使得接口的获取顺序得到控制&#xff0c;不会出现数据为空的情况 使用 先执行jianshigetGroups->groupIds-> const promises2 …

RNN-T Training,RNN-T模型训练详解——语音信号处理学习(三)(选修三)

参考文献&#xff1a; Speech Recognition (option) - RNN-T Training哔哩哔哩bilibili 2020 年 3月 新番 李宏毅 人类语言处理 独家笔记 Alignment Train - 8 - 知乎 (zhihu.com) 本次省略所有引用论文 目录 一、如何将 Alignment 概率加和 对齐方式概率如何计算 概率加和计…

什么是PDM图纸管理系统?PDM图纸管理系统主要功能有哪些?

PDM (Product Data Management) 图纸管理系统 是用于管理企业内部图纸和相关文件的软件系统。它提供了一个集中存储、组织和跟踪图纸和文件的平台&#xff0c;以确保团队成员能够轻松访问、共享和更新所需的工程设计和制造数据。 彩虹PDM系统|PDM产品数据管理系统|BOM管理|工艺…

代码浅析DLIO(三)---子图构建

0. 简介 我们刚刚了解过DLIO的整个流程&#xff0c;我们发现相比于Point-LIO而言&#xff0c;这个方法更适合我们去学习理解&#xff0c;同时官方给出的结果来看DLIO的结果明显好于现在的主流方法&#xff0c;当然指的一提的是&#xff0c;这个DLIO是必须需要六轴IMU的&#x…

问题记录-maven依赖升级或替换(简单版)

问题背景 项目被检测到有高危漏洞&#xff0c;需要对部分jar进行升级。以一个jar为例记录一下升级过程。 1 找到高危漏洞的包 如果装了maven helper插件则可以在下面查看当前模块依赖包 2 使用maven命令 执行下面这个命令&#xff0c;会将当前项目的信息打印出来&#xff0c;…

基于MYSQL+Tomcat+Eclipse开发的超市订单管理系统

基于MYSQLTomcatEclipse开发的超市订单管理系统 项目介绍&#x1f481;&#x1f3fb; 该系统运行需要基于JDK7来进行运行 超市订单管理系统是一款针对超市订单进行管理的软件&#xff0c;旨在提高订单处理效率&#xff0c;降低管理成本。该系统包括以下功能模块&#xff1a; 系…

Java后端开发——SpringMVC商品管理程序

Java后端开发——SpringMVC商品管理程序 今日目标 Spring MVC框架介绍掌握SpringMVC的核心类的原理及配置掌握SpringMVC的常用注解掌握SpringMVC的增删改查编程 Spring MVC框架介绍 Spring MVC&#xff08;Model-View-Controller&#xff09;是一个基于Java的开源框架&#x…

记一次:Python的学习笔记一

前言&#xff1a;之前学习的Python笔记&#xff0c;已经过去很多年了&#xff0c;不久前重新翻了出来练习练习。不完善的地方在缝缝补补 一、环境搭建 1.1、Python的win环境安装 0、python-3.12.0软件安装&#xff1a;Win11环境搭建python-3.12.0-amd64 这里小小注意一下&a…

NoSql非关系型数据库

前言&#xff1a;Nosql not only sql&#xff0c;意即“不仅仅是sql”&#xff0c;泛指非关系型数据库。这些类型的数据存储不需要固定的模式&#xff08;当然也有固定的模式&#xff09;&#xff0c;无需多余的操作就可以横向扩展。NoSql数据库中的数据是使用聚合模型来进行处…

基于Java SSM框架实现实现四六级英语报名系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现四六级英语报名系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个高校四六级报名管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作…

U-boot(七):U-boot移植

本文主要探讨基于210官方U-boot源码移植。 移植基础 tar -jxvf android_uboot_smdkv210.tar.bz2cd u-boot-samsung-devrm -rf onenand_ipl onenand_bl1 lib_avr32 lib_blackfin lib_i386 lib_m68k lib_mips lib_microblaze lib_nios lib_nios2 lib_ppc lib_sh lib_sparccd bo…

pycharm怎么同时打开2个项目?

pycharm怎么同时打开2个项目&#xff1f;当使用vue等前端的时候&#xff0c;后台也需要同时用pycharm打开操作&#xff0c;怎么用pycharm同时打开前后端呢&#xff1f; 当我们第一次用pycharm的时候&#xff0c;新建一个项目&#xff0c;习惯选择此窗口&#xff0c;而且勾选不再…

【Linux】OpenSSH 命令注入漏洞(CVE-2020-15778)(iptables屏蔽22端口方式)

背景 漏洞名称&#xff1a;OpenSSH 命令注入漏洞(CVE-2020-15778) 详细描述&#xff1a;OpenSSH&#xff08;OpenBSD Secure Shell&#xff09;是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现&#xff0c;支持对所有的传输进行加密&#…