当前位置: 首页 > news >正文

软考笔记--分布式数据库

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

 一.分布式数据库概述

 分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力,即场地自治,它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术上的基础发展而来,有如下特点:

(1)数据独立性。包括逻辑独立性与物理独立性,还有数据分布独立性。

(2)集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能,同时有设有集中控制机制,协调各局部DBMS的工作,执行全局应用。

(3)适当增加数据冗余度。在不同场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。

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

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

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

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

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

(3)分片模式。在某些情况下,需要将一个关系模式分解成几个数据片,分片模式正式用于完成此工作的。

(4)分布模式。分布式数据库的本质特征就是数据分布在不同的物理位置。分布模式的主要职责是定义数据片段的存放节点。

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

(6)局部内模式。局部内模式是局部数据库的内模式。

2.分布式数据库的优点

(1)分布式数据库可以解决企业部门分散而数据需要相互联系的问题。

(2)分布式系统可以在对当前机构影响最小的情况下进行扩充。

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

(4)可靠性高,出现故障的影响小。

二.数据分片

数据分片将数据库整体逻辑结构分解为合适的逻辑单位,然后由分布模式来定义片段及其副本在各场地的物理分布。

1.数据分片的分类

(1)水平分片。水平分片将一个全局关系中的元祖分类成多个子集,每个子集为一个片段。分片条件由关系中的属性表示。

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

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

(4)混合分片。混合分片是在分片中采用水平分片和垂直分片两种形式的混合。

2.数据分片的原则

(1)完整性。全局关系的所有数据都必须分配到各个片段中,不允许某些数据属于全局关系但不属于任务片段。

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

(3)不相交性。全局关系中的每个元祖仅属于一个片段,不能在多个片段中重复出现。

3.分布透明性

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

(1)分片透明。分片透明是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。

(2)位置透明性。位置透明是指用户或应用程序应当了解分片情况,但不必了解片段的存储位置。

(3)局部数据模型透明性。局部数据模型透明性是指用户或者应用程序应当了解分片及各片段的存储场地,但不必了解局部场地上使用的是何种数据模型。

三.分布式数据库查询优化

分布式数据库在结构上与集中式数据库存在一定的差异,所以两者在查询优化方面各有侧重。在分布式数据库系统中,从查询涉及的数据和查询处理过程中的通信模式来划分,可以分为局部查询、远程查询和全局查询三种类型。

全局查询是指用户查询涉及多个场地的数据,因此查询处理和优化技术要比其他两种要复杂的得多。具体方法有:全局查询树的变换,副本的选择与多副本的更新策略,查询数的分解,半直连与直接连接等。

1.全局查询树的变换

为了提高执行效率,可对全局查询树进行如下变换:

(1)用片段替换查询树中的全局关系。

(2)尽可能将选择和投影等一元操作推向查询树的叶端。

(3)合并公共子表达式。

(4)消除空关系和冗余度。

(5)移去无用的垂直叶片。

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

副本选择原则:

(1)尽可能提供访问的局部性,尤其要减少大量数据的传送。

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

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

副本的更新策略:

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

(2)立即更新所有节点的副本。

(3)主副本法,指定一个副本为主副本,执行更新操作时候,事务提交前进更新主副本,所有副本在事务提交后根据主副本广播的内容进行更新。

(4)快照法。快照法是指数据在某一时刻的状态,它不随数据库中数据的更新而即时更新。

3.查询树的分解

查询树分解的一般方法是采用后续遍历法。

4.半连接与直接连接

有时候,在做连接操作时,并不需要将整个关系(或片段)传送到对方,只要传送连接时与对方匹配的元组就够了。半连接操作可以帮助从关系(或片段)筛选出连接时匹配的元组,减少节点之间的数据传输量和运算暈,但也增加了投影操作和选择操作。在实际应用中,是否采用半连接,必须做代价比较。

相关文章:

软考笔记--分布式数据库

分布式数据库系统是数据库技术与网络技术相结合的产物,其基本思想是将传统的集中式数据库中的数据分布于网络上的多台计算机中。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整的复…...

vue项目中路由懒加载的三种方式

1 . vue异步组件技术 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 . 但是,这种情况下一个组件生成一个js文件 /* vue异步组件技术 */ { path: /home, name: home, component: resolve > require([/components/home],resolve) }, { path…...

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏6(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言生命 食物 水简单绘制UI玩家状态脚本生命值控制饱食度控制水分控制 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中…...

Cache Lab:Part A【模拟出使用LRU策略的高速缓存存储器组织结构】

目录 任务描述 知识回顾 实验内容 测试结果 Cache Lab 对应《CS:APP》6.3节至第六章结束的内容。 任务描述 Your job for Part A is to fill in the csim.c file so that it takes the same command line arguments and produces the identical output as the reference …...

操作系统基础:死锁

🌈个人主页:godspeed_lucip 🔥 系列专栏:OS从基础到进阶 🐦1 死锁的概念🦢1.1 总览🦢1.2 什么是死锁🦢1.3 死锁、饥饿、死循环的区别🐧1.3.1 概念🐧1.3.2 区别…...

Ubuntu server如何使用 Daphne + Nginx + supervisor部署 Django

Django从 3.0版开始加入对ASGI的支持,使Django开始具有异步功能。 截止目前的5.0版,对异步支持逐步也越来越好,相信在未来的版本中异步将会支持的更加完善。 所以说,我们也需要适时的更新我们的技能,学会在asgi异步服务器环境中部署django项目! 在部署之前我们所有的依…...

Android 12.0 应用中监听系统收到的通知

1. 需求 在系统内置应用中或者在第三方应用中,获取Android系统收到的通知的内容. 2. NotificationListenerService 接口 Android 系统预留了专门的API, 即 NotificationListenerService 接口,它的源码路径为: 源码路径 : /frameworks/base/core/java/android/service/notifi…...

SpringBoot+Redis如何实现用户输入错误密码后限制登录(含源码)

点击下载《SpringBootRedis如何实现用户输入错误密码后限制登录(含源码)》 1. 引言 在当今的网络环境中,保障用户账户的安全性是非常重要的。为了防止暴力破解和恶意攻击,我们需要在用户尝试登录失败一定次数后限制其登录。这不…...

kotlin中的初始化问题纪录

1. init 代码块的顺序问题 init代码块和成员变量实质上是按先后顺序执行的。若果init{} 中有成员变量使用。要把成员变量放到代码块之前。 2. init代码块之中的函数问题 下面是一段错误的代码: class mkotlin{val info:Stringinit {getInfoMethod()info "adad…...

Web中的转发与重定向

转发与重定向 一、转发和重定向的概念1.转发2.重定向 二、JavaWeb 中的转发和重定向三、SpringMVC 中的转发和重定向1.转发(1) 默认的方式(2) 完整的方式 2.重定向 四、总结 一、转发和重定向的概念 在 Web 应用中,转发和重定向都是用于将请求从一个页面传递到另一…...

交叉注意力融合时域、频域特征的FFT + CNN-Transformer-CrossAttention轴承故障识别模型

目录 往期精彩内容: 前言 1 快速傅里叶变换FFT原理介绍 第一步,导入部分数据 第二步,故障信号可视化 第三步,故障信号经过FFT可视化 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 3 交叉注意力机制 …...

STM32读取MPU6050数据并通过角度值控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机)

通过STM32F103C8T6读取MPU6050数据控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机) 最终现象一、MPU6050数据读取二、舵机控制原理①什么是PWM?②STM32F103C8T6如何生成PWM?③控制舵机需要什么样的PWM波? 三…...

Unity_Playable工具使用

Unity_Playable工具使用 目录 Unity_Playable工具使用 1. Default Playables(Timeline扩展) 2. PlayableGraph Visualizer&#x...

Flutter canvas 画一条波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形,html 的 Canvas 也画过一次类似的, 今天用 Flutter Canvas 试了下 感觉差不多: html 版本 大致效果如下: 思路和 html 实现的类似: 也就是找出点的位置,使用二阶…...

Java技术栈 —— Spring MVC 与 Spring Boot

参考文章或视频链接[1] Spring vs. Spring Boot vs. Spring MVC[2] Key Differences Between Spring vs Spring Boot vs Spring MVC...

跟着cherno手搓游戏引擎【16】Camera和Uniform变量的封装

相机封装&#xff1a; OrthographicCamera.h: #pragma once #include <glm/glm.hpp> namespace YOTO {class OrthographicCamera{public:OrthographicCamera(float left,float right , float bottom,float top);const glm::vec3& GetPosition()const { return m_Pos…...

微服务中间件 RabbitMq学习

1、为什么需要Mq 例如在用户注册业务中&#xff0c;用户注册成功后 需要发注册邮件和注册短信&#xff0c;传统的做法有两种 1.串行的方式&#xff1b;2.并行的方式 &#xff1b; 假设三个业务节点分别使用50ms&#xff0c;串行方式使用时间150ms&#xff0c;并行使用时间10…...

3D Gaussian Splatting-实时辐射场渲染技术

引用自&#xff1a;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_high.pdf 概述&#xff1a; 该论文介绍了一种用于实时辐射场渲染的3D高斯点渲染技术。 其基本原理是&#xff1a; 一&#xff1a;首先从SfM校准的图像及其对应的稀疏点云…...

vue中nextTick()

在 Vue.js 中&#xff0c;nextTick() 是一个非常有用的方法&#xff0c;用于在下一个 DOM 更新循环结束后执行延迟回调。这在你需要读取或写入刚刚更新的 DOM 时非常有用。 下面是一个简单的示例代码&#xff0c;用于解析 nextTick() 的用法&#xff1a; <template> &…...

Redis 布隆过滤器

布隆过滤器 这一篇文章主要是记录布隆过滤器的使用和认识 主要参考了如下的blog https://blog.csdn.net/weixin_42972832/article/details/131211665 他讲的还不错 简单的来说,布隆过滤器,实际上就像是一个集合,拿redis的key来举例来说,布隆过滤器的设置就是去过滤不属于redi…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

【java】【服务器】线程上下文丢失 是指什么

目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失&#xff1f; 直观示例说明 为什么上下文如此重要&#xff1f; 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程&#xff0c;代码应该如何实现 推荐方案&#xff1a;使用 ManagedE…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...