数据库(一):分布式数据库

news2025/5/21 2:47:00

定义

分布式数据库(Distributed Database) 是指:

数据分布在多个物理位置,但对用户透明,表现为一个统一逻辑数据库的系统。

结构模式(三层模式扩展)

层次作用对应实体
用户层提供统一视图,屏蔽底层节点分布前端应用、中间件
全局模式系统级逻辑结构定义,数据如何分布与复制分布式数据库中间件,如TiDB、OceanBase
局部模式各个子系统或节点的具体逻辑结构定义每个节点的局部数据库
物理模式各节点的实际数据文件和存储方式存储引擎(如RocksDB、InnoDB)

核心技术与模式分类

数据分片(Sharding)

定义:将数据按某种规则划分到不同节点上。

  • 水平分片(Horizontal Partitioning)
    • 按行划分,例如按用户ID区间划分;
    • 常见于用户量大时。
  • 垂直分片(Vertical Partitioning)
    • 按列划分,例如将用户表的基本信息和敏感信息分开放;
    • 常见于字段多、模块职责分离时。
  • 混合分片(Hybrid Partitioning)
    • 同时按行列进行分片。

常考点:“将用户表按地区分布于不同节点,这是哪种分片?” 答:水平分片

数据复制(Replication)

定义:将同一份数据拷贝存储于多个节点。

  • 主从复制(Master-Slave)
    • 一个主节点写,多从节点读;
    • 优点:读性能高;
    • 缺点:写入瓶颈、主节点故障影响大。
  • 多主复制(Multi-Master)
    • 多个节点可以同时读写;
    • 优点:高可用;
    • 缺点:一致性难以维护。
  • 同步复制 / 异步复制
    • 同步:强一致性,牺牲写性能;
    • 异步:高性能,但存在数据丢失风险。

一致性模型(Consistency Models)

  • 强一致性(Strong Consistency)
    • 所有节点读取到的都是最新数据;
    • 通常需要 Paxos、Raft 等共识协议支持。
  • 最终一致性(Eventual Consistency)
    • 系统经过一段时间后达到一致;
    • 常见于高可用系统(如 DNS、Cassandra)。
  • 因果一致性(Causal Consistency)
    • 保证操作的因果关系顺序;
    • 强于最终一致性,弱于强一致性。

CAP 理论(重点)

元素含义
C一致性(Consistency)
A可用性(Availability)
P分区容忍性(Partition Tolerance)

CAP 不可同时满足三者,只能同时满足其中两项:

  • CP:一致性 + 分区容忍(如 HBase)
  • AP:可用性 + 分区容忍(如 Cassandra)
  • CA:理论上只能用于单机数据库

典型架构模式

模式类型描述示例系统
同构集中式所有节点结构相同、集中部署MySQL 主从集群
同构分布式节点结构相同,分布在不同位置OceanBase、TiDB
异构分布式各节点可能使用不同数据库系统中间件统一封装不同数据库
混合云分布式云 + 本地的混合数据库部署模式云数据库 + 本地缓存

查询处理与优化机制

  • 全局查询优化器:分析跨节点的SQL执行计划;
  • 数据定位服务:确定某个数据在哪个分片或节点;
  • 两阶段提交(2PC)/三阶段提交(3PC):保障分布式事务一致性;
  • 分布式事务协调器(如 XA / TCC / SAGA);

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

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

相关文章

《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)

黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖 文章目录 Node.js与Webpack-01.Node.js入门定义和作用什么是前端工程化?(离不开node.js)Node.…

Flink 快速入门

本文涉及到大量的底层原理知识,包括运行机制图解都非常详细,还有一些实战案例,所以导致本篇文章会比较长,内容比较多,由于内容太多,很多目录可能展示不出来,需要去细心的查看,非常适…

阻塞队列:线程安全与生产者消费者模型解析

一、阻塞队列 阻塞队列就是基于普通队列做出扩展 1.线程安全的 如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)之后 如果针对一个已经空了的队列进行出队列&#xff0c…

【入门|Docker】基础知识扫盲:什么是 Docker?

文章目录 基础知识扫盲:什么是 Docker?Docker 是什么?Docker 核心组件Docker 与虚拟机的区别Docker 在现代开发中的核心角色Docker 的局限性 基础知识扫盲:什么是 Docker? 最近打算开始系统性地学习与云计算相关的技术…

【MYSQL】基本查询,表的增删查改

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 |🗃️ mysql 摘要:本文详细介绍了MySQL中的CRUD操作(创…

Android Studio 日志系统详解

文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…

Feign异步模式丢失上下文问题

Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时,代码中使用了RequestContextHolder去获取上下文的数据,当我们执行原来可以执行的业务时发现报了空指针异常或数据为空,这是为什么呢? 原理解释 …

【AWS入门】Amazon SageMaker简介

【AWS入门】Amazon SageMaker简介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 机器学习(Machine Learning,简称ML) 是当代流行的计算机科学分支技术。通常,人们在本地部署搭建环境,以满足机器学习的要求。 AWS…

MYSQL 故障排查与生产环境优化

目录 一.前置知识点 1. 案例需求 (1)mysql 常见故障解决 (2)mysql 性能优化 2.案例实施思路 (1)单库常见故障分析 (2)主从常见故障分析 (3)从几个不同…

解决使用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss“, timezone = “GMT+8“)时区转换无效的问题

前言 对于一些时间的字段,我们从数据库查询出来通常需要转换后返回给前端展示,前端需要的格式一般为yyyy-MM-dd HH:mm:ss,可以通过JsonFormat注解来作转换和时区转换。 问题场景 原因 LocalDateTime类本身不带时区信息所以转换无效 解决办…

计算机网络概要

⽹络相关基础知识 协议 两设备之间使⽤光电信号传输信息数据 要想传递不同信息 那么⼆者ᳵ就需要约定好的数据格式 层 封装 继承 多态是计算机的性质 它们⽀持了软硬件分层的实现 同层协议可以ᳵ接通信 同层协议ᳵ不直接通信 是各⾃调⽤下层提供的结构能⼒完成通信 分层…

Word压缩解决方案

Word压缩解决方案:基于图片压缩的 .docx 优化实践 📌 背景 在日常科研写作或项目文档整理中,Word 文档(.docx)往往因为插入大量高清图表、扫描图像、公式图等导致文件体积过大,或者毕业学位论文查重要求上…

TDengine 2025年产品路线图

TDengine OSS 之 2025 年年度路线图如下表所示。 季度功能2025Q1 虚拟表查询能力:REGEXP、GREATEST、LEAST、CAST 函数支持判断表达式、单行选择函数的其他列值、INTERP 支持插值时间范围存储能力:支持将查询结果写入超级表、超级表支持 KEEP 参数、STM…

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践 服务器脚本运行方式命令行直接执行nohup后台执行进程 Screen概述安装基本操作命令启动 Screen退出当前会话(不终止进程)查看所有会话重连会话关闭会话 常用快捷键典型使用场景…

计算机网络 - 2.基础协议

1.TCP协议 1.TCP(Transmission Control Protocol):传输控制协议2.TCP协议是一种面向连接的、可靠的、 基于字节流的传输层通信协议 1.面向连接:两个使用TCP协议的应用(通常一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接2.可靠的 1.数据传输之前都要建立…

初识css,css语法怎样学好css以及常见问题与避坑

一、CSS 是什么? CSS(Cascading Style Sheets)是一种用于描述网页文档(HTML 或 XML)呈现样式的语言。它负责控制网页元素的视觉表现,如颜色、字体、布局等,使内容与展示分离。 二、CSS 语法结构…

Axure疑难杂症:垂直菜单展开与收回(4大核心问题与专家级解决方案)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:垂直菜单展开与收回 主要内容:超长菜单实现、展开与收回bug解释、Axure9版本限制等问题解…

vue2.0 组件生命周期

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…

在Linux服务器上部署Jupyter Notebook并实现ssh无密码远程访问

Jupyter notebook版本7.4.2(这个版本AI提示我Jupyter7(底层是 jupyter_server 2.x) 服务器开启服务 安装Jupyter notebook 7.4.2成功后,终端输入 jupyter notebook --generate-config 这将在 ~/.jupyter/ 目录下生成 jupyter_…

GPU 超级节点:AWS Trainium2 UltraServer

目录 文章目录 目录时间线Inferentia1Trainium1Inferentia2Trainium2Trainium2 ServerTrainium2 UltraServerTrainium2 UltraClustersTrainium3AWS GPU 实例矩阵与竞品分析SuperNode RackTrn2 ServerTrn2U Server ScaleUp 网络PCIe Gen5:CPU-Trainium2 ScaleUpNeuro…