[架构之路-173]-《软考-系统分析师》-5-数据库系统-6-分布式数据库系统

news2024/11/19 18:30:38

目录

5 . 6 分布式数据库系统

5.6.1分布式数据库槪述

0. 分布式数据库特点

1 . 分布式数据库的体系结构

2 . 分布式数据库的优点

5.6.2 数据切片

1 . 数据分片方法的分类

2 . 数据分片的原则

3 . 分布透明性

5.6.3分布式数据库查询优化

 2 . 副本的选择与多副本的更新策略


5 . 6 分布式数据库系统

分布式数据库系统是数据库技术网络技术相结合的产物,其基本思想是将传统的集中式数据库中的数据分布在网络上的多台计算机中。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有 D B M S 的一份完整的复制副本(是数据库文件的副本、复制,而不是内存系统的复制),并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库

5.6.1分布式数据库槪述

0. 分布式数据库特点

分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。

分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:

(1) 数据独立性。

在分布式数据库系统中,数据独立性这一特性更加重要,并具有更多的内容。
除了数据的逻辑独立性物理独立性外,还有数据分布独立性(分布透明性)。

被尽快把逻辑上独立的数据分布在不同的机器上!

因此,对数据的逻辑切分很重要!!!

(2) 集中与治共享结合的控制结构。

各局部的 D B M S 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部 D B M S 的工作,执行全局应用。

备注:

这就意味着,要支持分布式数据库,必须有一套完善的管理和控制机制!!!

这就是管理面和控制面的重大意义!!!

只有数据面自己是实现不了高性能的分布式数据库的!!虽然高性能最终体现在数据面上。

(3) 适当增加数据冗余度。

在不同的场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能

(4) 全局的一致性、可串行性和可恢复性

1 . 分布式数据库的体系结构

分布式数据库的体系结构如图5-5所示。

在分布式数据库中,局部 D B M S 中的内模式与概念模式的集中数据库是完全一致的,不同之处在于新增的全局 D B M S ,而整个全局 D B M S , 可以看作是相对于局部概念模式的外模式。

由于外模式部分有一系列的分布模式、分片模式、全局概念模式和全局外模式,以及多级映射使得用户在使用分布式数据库时,可以使用集中式数据库同样的方式。

备注:

程序 = 算法 + 数据结构 = 运算(CPU) + 数据(内存)。

分布式计算和分布式数据库的大部分思想是共通的:

分布式计算关注的重点在运算,分布式数据库关注的重点在数据。

(1) 全局外模式。

全局外模式是全局应用的用户视图,是全局概念模式的子集,该层直接与用户(或应用程序)交互。

 (2) 全局概念模式。

全局概念模式定义分布式数据库中数据的整体逻辑结构,数据就如同根木没有分布一样,可用传统的集中式数据库中所采用的方法进行定义。

全局概念模式中所用的数据模型应该易于向其他层次的模式映射,通常采用关系模型。

(3) 分片模式。

在某些情况下,需要将以个关系模式分解成为几个数据片分片模式正是用于完成此项工作的。

有关数据分片的详细知识,将在5.6.2节中 介绍。

(4) 分布模式。

分布式数据库的本质特性就是数据分布在不同的物理位置

分布模式的主要职责是定义数据片段(即分片模式的处理结果)的存放节点

分布模式的映射类型确定了分布式数据库是冗余的还是非冗余的。若映射是一对多的,即一个片段分配到多个节点上存放,则是冗余的分布式数据库,否则是不冗余的分布式数据库。

根据分布模式提供的信息,一个全局査询可分解为若干子査询,每个子查询要访问的数据属于同一场地的局部数据库。由分布模式到各局部数据库的映射(图 5-5中的映射4 ) 将存储在局部场地的全局关系(或全局关系的片段)映射为各局部概念模式,采用局部场地的 D B M S 所支持的数据模型。

备注:

分布式数据库,有点类似集团化公司的运行模式。

(5) 局部概念模式。

局部概念模式是局部数据库的概念模式。

(6) 局部内模式。

局部内模式是局部数据库的内模式。

虽然从理论上来说,分布式数据库的模式结构有图5-5所示的6 个层次,但实际上,并非所有分布式数据库都具有这种结构。

2 . 分布式数据库的优点

分布式数据库的物理层面分布、逻辑层面统一的特色,让它具有一些集中式数据库所不可及的优势:

备注:与操作系统的虚拟内存管理也有异曲同工之处:逻辑上是统一的连续的地址空间,物理上是离散分布在不同的内存块中,支持共享。

(1) 分布式数据库可以解决企业部门分散数据需要相互联系的问题。例如,就银行系统而言,总行与各分行处于不同的城市或城市中的不同地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式数据库系统

(2) 如果企业需要增加新的相对自主的部门来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。

(3) 分布式数据库可以满足均衡负载的需要。

数据的分片使局部应用达到最大,这使得各服务器之间的相互干扰降到最低。负载在各服务器之间分担,可以避免临界瓶颈。

( 4 ) 当企业己存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。

( 5 ) 相等规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此,就整个系统来说,它的可靠性是比较高的。

5.6.2 数据切片

数据分片将数据库整体逻辑结构分解为合适的逻辑单位(片段),然后由分布模式来定义片段及其副本在各场地的物理分布,其主要目的是提高访问的局部性,有利于按照用户的需求,组织数据的分布和控制数据的冗余度。

备注:

数据切片的思想软件架构模块切分的思想是一致的:高内聚、低耦合!!!

1 . 数据分片方法的分类

分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。

(1) 水平分片。

水平分片将一个全局关系中的元组分裂成多个子集,每个子集为一个片段。

分片条件由关系中的属性值表示。对于水平分片,重构全局关系可通过关系的“并”操作实现。

备注:

水平切分:把不同的“行”记录切分成不同的片段。

(2) 垂直分片。

垂直分片将一个全局关系按属性分裂成多个子集,应满足不相交性(关键字除外)。对于垂直分片,重构全局关系可通过连接运算实现。

垂直切分:把不同的“列”属性切分成不同的片段。

(3) 导出分片。

导出分片又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。

(4) 混合分片。

混合分片是在分片中釆用水平分片和垂直分片两种形式的混合。

2 . 数据分片的原则

不管采用哪种分片方式,数据分片都应遵循如下原则:

(1) 完整性。

全局关系的所有数据都必须分配到各个片段中,不允许某些数据属于全局关系但不属于任何片段。

( 2 ) 重构性。

各个片段可以重构原来的全局关系。

(3) 不相交性。

全局关系中的每个元组仅属于一个片段,不能在多个片段中重复出现。

此规则不是必须的,因为在有冗余的分布式数据库系统中数据可有多个副本

但片段中的部分元组重复将会使数据的更新操作变得复杂,为简化操作控制,片段之间一 •般是不相交的。 

3 . 分布透明性

分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。分布透明性包括分片透明性、位置透明性和局部数据模型透明性。

(1) 分片透明性。

分片透明性是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。当分片模式改变时,只要改变全局模式到分片模式的映射(图 5-5中的映射2 ) , 而不影响全局模式和应用程序。全局模式不变,应用程序不必改写。

(2) 位置透明性。

位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。当存储场地改变时,只要改变分片模式到分配模式的映射(图 5-5中的映射3),而不影响应用程序。同时,若片段的重复副本数目改变了,数据的冗余也将改变,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。

(3) 局部数据模型透明性。

局部数据模型透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。模型的转换和语言的转换均由图5-5中的映射4 来完成。

5.6.3分布式数据库查询优化

分布式数据库在结构上与集中式数据库存在一定的差异,所以两者在查询优化方面各有侧重。

集中式数据库优化主要考虑的是 C P U 代价和 I/O 代价,而分布式数据库还需要考虑通信代价

由于相对于 C P U 处理速度与 I/O 处理速度而言, 分布式数据库的通信的效率是最低的,因此,通信代价的降低是分布式数据库査询优化的关键。

在分布式数据库系统中,从查询涉及的数据和査询处理过程中的通信模式来划分,可以分为局部查询、远程查询和全局査询三种类型。

局部查询:是指用户查询所涉及的数据均在本地数据库中。对这类查询,可以使用集中式査询处理技术进行优化;

远程査询:是指用户査询只涉及网络中单个场地的数据。对于这类查询也可以使用集中式的查询
处理技术进行优化。但同时需要注意,数据有可能在网络中的多个位置存在副本,这样就存在副本选择的问题,通常,选择距查询应用场地最近的副本

全局查询:是指用户查询涉及多个场地的数据,因此,査询处理和优化技术要复杂得多。

具体方法有全局查询

 

 2 . 副本的选择与多副本的更新策略

为了提高访问的局部性和系统的可用性,关系和片段常常可设置多个副本,分布于
不同的节点。这样,在査询处理时,就存在副木选择的问题。选择副本的原则如下:

(1) 尽可能提髙访问的局部性,减少远距离访问。

(2) 尽可能减少通信开销,尤其要减少大量数据的传送。

(3) 适当考虑节点负载的平衡。

如果副本较多,副本选择的方案可能就很多,副本选择就成为一个复杂的问题 。 一
般先用启发式规则选择几个优选方案,再通过代价比较,从中选择一种。多副本虽然可
以提高访问的局部性和系统的可靠性,但在更新时,必须维持多副本的一致性。为此,

一般可采取下列策略:

(1) 在事务提交前更新全部副本。

使用这一策略时,如有多个副本,只要其中有•一个副本不能更新,事务就要失败。

(2) 立即更新所有有效节点的副本,失效节点的副本留待修复后更新。

这种策略的可用性要高于第一种策略。

(3) 主副本法。

指定一个副本为主副本,执行更新操作时,事务提交前仅更新主副本,所有副本在事务提交后根据主副本广播的内容进行更新。主副本与其他副本之间可能有暂时的不一致。如果读主副本,不会发生问题;如果读其他副本,就吋能读到不一致的数据。为此,可以让每个副本附一个版本号,如果副本的版本号与主副本的版本号一致,就可以读取数据。反之,如果副本的版本号与主副本的版本号不一致,可以改为读主副本或等待副本更新后再读。

(4)快照法。

快照是指数据在某一时刻的状态,它不随数据库中数据的更新而即时更新。在快照法中,数据只有一个副本,但有许多快照分布在有关的节点上。在读数据时,可以读副本也可以读快照,由用户指定。更新数据时,仅更新副本,快照不随之立即更新。快照可以周期性地更新或用更新命令强制更新。从快照读得的数据可能与副木不一致,但这在某些情况是允许的,甚至是要求的。例如,在统计报表时,总是在表上注 明 “截止 x 月 x 日止”,这就说明表的内容是一个快照。只要应用许可使用快照,用快照代替副本,不但可以提高访问的局部性,还可以省去多副本更新的麻烦。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据迁移实践 | MySQL到ClickHouse,HTAP黄金搭档

MySQL是世界上最流行的开源数据库,也是OLTP界的顶流,但是对于OLAP分析型业务场景的能力太弱。ClickHouse是最近几年数仓OLAP分析查询领域的黑马,当红炸子鸡,有意思的是天然兼容MySQL语法。所以很多用户喜欢OLTP放MySQL&#xff0c…

2023年湖北安全员ABC证报考条件都有哪些?甘建二告诉你

一、安全员ABC证是什么? 安全员A、B、C证属于建筑三类人员证书。建筑三类人员:是指建筑施工企业主要负责人、项目负责人和专职安全生产管理人员。 建筑企业的法人代表,必须取得A证才能担任法人代表 建造师必须取得B证才能担任项目负责人 …

FreeRTOS 信号量(一)

文章目录 一、信号量简介二、二值信号量1. 二值信号量简介2. 创建二值信号量①函数 vSemaphoreCreateBinary ()②函数 xSemaphoreCreateBinary()③函数 xSemaphoreCreateBinaryStatic() 3. 二值信号量创建过程分析4. 释放信号量①函数 xSemaphoreGive()②函数 xSemaphoreGiveFr…

UFD203A101 3BHE019361R0101电 工理论、电子技术、信息处理、控制理论、电力系统分析

UFD203A101 3BHE019361R0101电 工理论、电子技术、信息处理、控制理论、电力系统分析 作为电气工程及其自动化专业的大学生都会关心电气工程及其自动化就业方向是什么?电气工程专业就业方向怎样?自动化专业就业方向怎样? 对于很多本专业的在校…

实验06:哈夫曼编码

1.实验目的: 理解贪心算法的思想,掌握哈夫曼编码的技术和图像编解码算法的基本。 2.实验内容: 统计图像像素灰度值的分布特性,利用哈夫曼编码构造码表,实现对图像的编码和解码。 3.实验要求: 首先完成…

《JavaEE》InputStream, OutputStream 的用法

目录 File类 路径 绝对路径 相对路径 InputStream和OutputStream的使用 InputStream基本用法 OutputStream基本用法 功能实现 我们先来尝试着使用一些File类完成一些基本操作 我们查看这个文本是否存在 如果不存在我们创建一个新的文本出来 在当前文件夹中创建一个新…

MATLAB函数封装1:生成QT可以调用的.dll动态链接库

在进行相关算法的开发和设计过程中,MATLAB具有特别的优势,尤其是对于矩阵运算的处理,具有很多现成的方法和函数可以进行调用,同时MATLAB支持把函数封装成不同的语言方便完成算法的集成。 这里记录利用MATLAB封装成C动态链接库&…

git 自学笔记

git 自学笔记 git 是一个开源的分布式版本控制软件,可以敏捷的处理任何大小项目。 git 的工作流程大体如下: 首先克隆一个git资源作为工作目录 在克隆的资源上添加或者修改文件 如果其他人也修改了,就要对资源进行更新 在提交时也要查看有没有…

通过使用生成对抗市场模型改进基于强化学习的交易的泛化

Improving Generalization in Reinforcement Learning–Based Trading by Using a Generative Adversarial Market Model | IEEE Journals & Magazine | IEEE Xplore Improving Generalization in Reinforcement Learning–Based Trading by Using a Generative Adversaria…

ASEMI代理ADG736BRMZ-REEL7原装ADI车规级ADG736BRMZ-REEL7

编辑:ll ASEMI代理ADG736BRMZ-REEL7原装ADI车规级ADG736BRMZ-REEL7 型号:ADG736BRMZ-REEL7 品牌:ADI /亚德诺 封装:MSOP-10 批号:2023 安装类型:表面贴装型 引脚数量:10 类型&#xff1…

c/c++:指针p+p-p*p/,数组a+1,指针减指针,指针实现strlen函数,指针的比较运算,指针数组,多级指针

c: 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所知道的周边的会c的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg 提…

IMX6ULLPRO单独编译kernel+dtb内核模块以及uboot

目录 为什么编译驱动程序之前要先编译内核? 驱动程序要用到内核文件: 编译内核 编译安装内核模块 编译内核模块 安装内核模块到 Ubuntu 某个目录下备用 安装内核和模块到开发板上 Bootloader 介绍 编译 u-boot 镜像 为什么编译驱动程序之前要先编…

4.4 使用分组聚合进行组内计算

4.4 使用分组聚合进行组内计算 4.4.1 使用groupby方法拆分数据groupby方法的参数及其说明:groupby对象常用的描述性统计方法如下: 4.4.2 使用agg方法聚合数据agg函数和aggregate函数的参数说明1、使用agg求出当前数据对应的统计量2、使用agg分别求字段的…

X509证书中的Subject Public Key Info

SubjectPublicKeyInfo在TBSCertificate的第七项: 对于ECC id-ecPublicKey OBJECT IDENTIFIER :: { iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } id-ecPublicKey 是必须的 ECParameters :: CHOICE {namedCurve OBJECT IDENTIFIER -- implicitCurve NULL -…

java day10

第10章 创建Swing界面 10.1 Swing的特性10.1.1 标准对话框1. 确认对话框2. 输入对话框3.消息对话框4. 选项对话框 10.1.2 使用对话框10.1.3 滑块10.1.4 滚动窗格10.1.5 工具栏10.1.6 进度条10.1.7 菜单10.1.8 选项卡式窗格 10.1 Swing的特性 10.1.1 标准对话框 JOptionPane类…

HTML5 <rt> 标签、HTML5 <ruby> 标签

HTML5 <rt> 标签 实例 HTML5 <rt>标签用于表示为<ruby>标签中的注释内容。 一个 ruby 注释&#xff1a; <ruby> 漢 <rt> ㄏㄢˋ </rt> </ruby> 尝试一下 浏览器支持 IE 9、Firefox、Opera、Chrome 和 Safari 支持 <rt> 标…

增广拍卖——二跳页下的拍卖机制探索

1. 引言 本文提出的方案已被WSDM 2023接收&#xff0c;论文&#xff1a;Boosting Advertising Space: Designing Ad Auctions for Augment Advertising&#xff0c; 下载&#xff1a;https://dl.acm.org/doi/abs/10.1145/3539597.3570381 信息流产品为了保障用户体验通常会严格…

关于python爬虫解析的问题

在进行Python爬虫解析时&#xff0c;需要注意以下事项&#xff1a; 1、良好的网站使用协议&#xff1a;需要遵守网站的robots.txt文件&#xff0c;以确保你的爬虫程序不会将网站拦截下来。 2、编码问题&#xff1a;需要正确设置HTTP头和解析器的编码&#xff0c;以确保爬虫程…

低代码开发重要工具:jvs-logic(逻辑引擎)可视化设计要素

逻辑引擎可视化的交互 可视化的服务编排是逻辑引擎的核心功能&#xff0c;逻辑引擎的界面可视化设计是为了方便用户使用和操作逻辑引擎而设计的。一个好的界面设计能够提高用户的工作效率和使用体验&#xff0c;同时也能增加软件的可靠性和可维护性。 以下是逻辑引擎界面可视化…

python数据分析综合案列--星巴克门店数据分析及可视化

本实训针对一组关于全球星巴克门店的统计数据&#xff0c;分析了在不同国家和地区以及中国不同城市的星巴克门店数量。 获取数据&#xff0c;数据放在directory.csv 这个案例主要分为以下几个部分&#xff1a; 数据清洗和预处理&#xff1a;使用 Pandas 进行数据清洗和预处理&…