软考笔记--分布式数据库
分布式数据库系统是数据库技术与网络技术相结合的产物,其基本思想是将传统的集中式数据库中的数据分布于网络上的多台计算机中。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有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变量的封装
相机封装: 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 例如在用户注册业务中,用户注册成功后 需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式;2.并行的方式 ; 假设三个业务节点分别使用50ms,串行方式使用时间150ms,并行使用时间10…...
3D Gaussian Splatting-实时辐射场渲染技术
引用自:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_high.pdf 概述: 该论文介绍了一种用于实时辐射场渲染的3D高斯点渲染技术。 其基本原理是: 一:首先从SfM校准的图像及其对应的稀疏点云…...
vue中nextTick()
在 Vue.js 中,nextTick() 是一个非常有用的方法,用于在下一个 DOM 更新循环结束后执行延迟回调。这在你需要读取或写入刚刚更新的 DOM 时非常有用。 下面是一个简单的示例代码,用于解析 nextTick() 的用法: <template> &…...
Redis 布隆过滤器
布隆过滤器 这一篇文章主要是记录布隆过滤器的使用和认识 主要参考了如下的blog https://blog.csdn.net/weixin_42972832/article/details/131211665 他讲的还不错 简单的来说,布隆过滤器,实际上就像是一个集合,拿redis的key来举例来说,布隆过滤器的设置就是去过滤不属于redi…...
技术人的持续学习:保持竞争力的完整指南
技术人的持续学习:保持竞争力的完整指南 引言 在快速发展的技术领域,持续学习是保持竞争力的关键。技术更新的速度越来越快,新的编程语言、框架和工具不断涌现。作为一名技术人,只有不断学习,才能跟上技术发展的步伐&a…...
HarmonyOS 鸿蒙PC平台三方库移植:使用 vcpkg 移植 libzen(ZenLib)
网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…...
UABEA跨平台Unity资源编辑器:安全修改AssetBundle实战指南
1. 这不是又一个AssetBundle查看器,而是Unity资源编辑的“手术刀”你有没有在调试一个Unity游戏时,突然发现某个UI按钮的贴图颜色不对,或者NPC对话框的字体大小被改得离谱,但手头只有打包后的APK或EXE文件?更糟的是&am…...
别再死记硬背了!用Python+MATLAB/Simulink,5步搞定自动控制原理的时域分析(附代码)
从理论到代码:用PythonMATLAB玩转自动控制时域分析 为什么我们需要用代码实现控制理论? 翻开任何一本自动控制原理教材,满眼都是微分方程、传递函数和响应曲线。传统学习方法强调手工计算和记忆公式,但现代工程师更需要的是将抽象…...
初创团队如何利用Taotoken统一管理多项目的AI模型调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Taotoken统一管理多项目的AI模型调用 对于初创团队而言,同时推进多个小项目是常态。每个项目可能都需…...
垂直领域搜索效果提升300%的关键路径,如何用DeepSeek精准捕获代码、论文、API三类技术语义?
更多请点击: https://kaifayun.com 第一章:DeepSeek垂直技术搜索的范式革命 传统通用搜索引擎在处理深度技术查询时,常面临语义漂移、上下文断裂与领域知识缺失三大瓶颈。DeepSeek垂直技术搜索通过融合代码理解、文档结构建模与多粒度技术实…...
让你的电脑拥有AI大脑:UI-TARS桌面助手实战指南
让你的电脑拥有AI大脑:UI-TARS桌面助手实战指南 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop 你是…...
RLHF实战指南:从人类反馈到对齐AI的工程化路径
1. 项目概述:当AI学会“听人话”——人类反馈如何真正撬动强化学习的天花板你有没有试过教一只特别聪明但完全不懂人情世故的助手做事?比如,你想让它帮你写一封得体又不失温度的辞职信,它却交出一份逻辑严密、用词精准、但通篇“根…...
Spacedesk连接iPad后黑屏?别慌,这3个设置检查一下就能点亮
Spacedesk连接iPad后黑屏?三步精准排查指南 当你兴奋地打开Spacedesk准备将iPad变成Windows电脑的扩展屏幕时,却发现连接成功后iPad屏幕一片漆黑——这种"Connected-Display OFF"的尴尬局面让许多用户措手不及。不同于简单的安装问题ÿ…...
终极小说阅读器:Uncle小说如何一站式解决你的数字阅读需求
终极小说阅读器:Uncle小说如何一站式解决你的数字阅读需求 【免费下载链接】uncle-novel 📖 Uncle小说,PC版,一个全网小说下载器及阅读器,目录解析与书源结合,支持有声小说与文本小说,可下载mob…...
