主流数据库的类别,初步了解MySQL与postgresql

20250716和20250717

学习内容

1、

  • 目标:了解数据库的主备架构和备份策略。
    • 主备架构的设置和高可用原理。
    • 不同数据库(MySQL/Oracle/PostgreSQL)的备份工具。
  • 学习内容
    • 全球主流数据库 https://blog.youkuaiyun.com/hezuijiudexiaobai/article/details/117887125
    • 数据库技术全景 https://blog.youkuaiyun.com/hezuijiudexiaobai/article/details/148933835
    • 数据库主备高可用机制深入对比研究https://blog.youkuaiyun.com/hezuijiudexiaobai/article/details/148974794

作业:

1、RDS使用手册实操
2、列出常见数据库密码、账号、常见参数等

  • QFusion支持的20+种主流数据库操作语句大全 https://blog.youkuaiyun.com/hezuijiudexiaobai/article/details/149340651

一、数据库类别

1.数据库定义

在这里插入图片描述

2.全球数据库

全球数据库厂商
数据库管理系统(DBMS)类型及其功能的整理表格,涵盖其主要用途、特点和适用场景:

数据库类型主要功能与特点适用场景示例
关系型DBMS基于关系模型,使用SQL进行数据操作,支持ACID事务,结构化数据存储。金融系统、ERP、CRM、传统业务系统
键值存储简单的键-值对存储,高性能读写,适合缓存、会话管理等。缓存系统、分布式会话管理
文档存储存储半结构化文档(如JSON/BSON),支持灵活模式,适合非结构化数据处理。内容管理系统、日志分析、用户配置管理
时间序列DBMS专为时间序列数据设计,优化了按时间排序的查询和聚合操作。物联网监控、金融交易历史、传感器数据
图形DBMS使用图结构存储实体和关系,擅长处理复杂的关系网络。社交网络、推荐系统、欺诈检测
搜索引擎支持全文搜索和复杂查询,通常基于倒排索引技术。日志分析、网站搜索、内容检索
矢量DBMS专门处理向量数据(如机器学习嵌入),支持高效相似性搜索。图像识别、推荐系统、自然语言处理
面向对象的DBMS直接支持面向对象编程范式,数据以对象形式存储,适合复杂数据模型。CAD系统、多媒体应用
RDF存储支持RDF三元组存储,用于语义网和知识图谱,支持SPARQL查询。知识图谱、语义推理
宽列存储列族存储结构,适合大规模数据分布和高扩展性需求。大数据分析、Hadoop生态系统集成
多值DBMS支持字段中存储多个值,适用于需要灵活数据结构的场景。多媒体数据库、产品目录
空间DBMS支持地理空间数据类型和索引,优化空间查询(如距离计算)。地理信息系统(GIS)、地图服务
原生XML DBMS专门存储和查询XML数据,支持XPath/XQuery等标准。文档管理系统、电子出版
事件存储记录系统中的事件流,支持事件溯源模式,强调不可变性和顺序性。审计日志、事件溯源架构
内容存储专注于内容管理,支持版本控制、元数据管理和内容检索。数字资产管理、企业内容管理系统
导航DBMS基于导航模型(如层次或网络模型),数据通过指针访问。早期银行系统、遗留系统
柱状存储按列存储数据,优化分析查询(如聚合操作),适合大数据仓库。数据仓库、商业智能分析
时间序列 + 可观察性结合时间序列数据与可观察性工具(如指标、日志、追踪),用于监控和故障排查。系统监控、微服务可观测性

3.关系型和非关系数据库

					**数据模型的差异**

在这里插入图片描述
在这里插入图片描述

4.(架构)分布式数据库概览表

在单机性能有限条件下,解决数据量快速增长的最佳解决方案

项目描述
定义数据存储在多个物理位置(节点)上的数据库系统,这些节点通过网络连接并协同工作,对外提供统一的数据访问接口。
数据分布方式- 水平分片(按行划分)
- 垂直分片(按列划分)
- 混合分片
关键特性- 数据分布(Data Distribution)
- 数据复制(Replication)
- 透明性(Location, Replication, Query)
- 高可用性与容错
- 并发控制与事务管理
- 可扩展性(横向扩展)
分类描述
同构分布式数据库所有节点使用相同的数据库管理系统(DBMS),结构一致,易于管理。
异构分布式数据库节点使用不同的DBMS(如Oracle + MySQL + MongoDB等),需中间件协调。
联邦数据库系统各个数据库保持高度自治,通过联邦机制实现联合查询,强调“松耦合”。
优势描述
高可用性多副本机制确保即使部分节点故障,服务仍可继续运行。
可扩展性强支持横向扩展(Scale-out),通过添加节点提升性能和容量。
地理分布支持适合跨区域部署,降低延迟,提升本地化服务能力。
容错能力强自动故障转移、数据恢复机制保障系统稳定性。
挑战描述
一致性难题CAP理论限制:难以同时满足一致性、可用性和分区容忍性。
事务管理复杂分布式事务需要两阶段提交(2PC)、三阶段提交(3PC)或基于共识算法(如Raft、Paxos)。
网络依赖性强节点间通信频繁,网络延迟或中断可能影响性能。
成本较高运维复杂度高,硬件/软件/人员成本上升。
适用场景描述
大型互联网应用如电商平台、社交网络、在线支付等,需高并发、低延迟处理。
物联网(IoT)设备数据分散、海量读写,需边缘节点与中心协同。
企业全球化系统跨国业务需多地部署,数据就近访问以提高性能。
实时数据分析平台结合OLAP能力进行大规模实时数据处理。
云原生架构微服务、容器化环境下,支持弹性伸缩和自动负载均衡。
典型代表描述
Google Spanner全球级分布式数据库,支持强一致性与水平扩展。
Amazon Aurora支持自动分片,适用于OLTP场景的云原生数据库。
CockroachDB类似Spanner,开源的分布式SQL数据库。
Apache Cassandra高可用、强扩展性的NoSQL分布式数据库,适合写密集场景。
TiDB开源的HTAP分布式数据库,兼容MySQL协议,支持混合负载。

分布式事务

分布式事务是指在分布式数据库环境中,保证跨多个节点的数据操作的一致性和完整性。实现分布式事务的核心技术主要涉及如何协调各个节点之间的操作以确保原子性、一致性、隔离性和持久性(ACID特性)。以下是几种常见的分布式事务处理机制和技术:

技术名称描述优点缺点
两阶段提交协议 (2PC, Two-Phase Commit)包括准备阶段和提交阶段。协调者首先询问所有参与者是否准备好提交,然后根据回复决定是否进行提交或中止。简单直观,易于理解和实现。性能开销大,尤其是当网络延迟较高时;存在阻塞问题,如果某个参与者失败,则整个事务可能被挂起。
三阶段提交协议 (3PC, Three-Phase Commit)在2PC基础上增加了预提交阶段,旨在减少因协调者故障导致的问题。减少了由于单点故障引起的问题;降低了事务的阻塞时间。复杂度增加,且仍无法完全避免阻塞情况的发生;对网络分区敏感。
Paxos算法一种用于达成共识的算法,可以用来实现分布式事务中的日志复制等任务。提供了高可用性和容错能力;适用于异步网络环境。实现复杂;难以理解;性能依赖于网络条件。
Raft算法Paxos的替代方案,设计目标是更容易理解和实现。它通过选举领导者来管理日志复制过程。更加直观易懂;提供了良好的可视化解释;实现了与Paxos相似的功能。相比Paxos,在某些情况下效率稍低。
Saga模式将长事务分解为一系列短事务序列,每个短事务都可以单独提交或回滚。适用于长时间运行的业务流程。支持长时间运行的事务;减少了锁等待时间;提高了系统的响应速度。需要手动编写补偿逻辑来处理失败情况;不支持严格的ACID特性。
TCC(Try-Confirm-Cancel)模式是一种柔性事务解决方案,包括尝试、确认和取消三个步骤。适合需要强一致性的场景。对资源锁定的时间较短;允许业务自行定义回滚逻辑。实现复杂;需要开发者明确指定每个阶段的行为。

2pc图例:
在这里插入图片描述

5、部署模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、 数据处理平台

在这里插入图片描述

二、数据库的主备架构

1.MySQL数据库

MySQL是最流行的开源关系型数据库,其架构设计注重性能、可扩展性和易用性。MySQL采用客户端-服务器架构,由服务器进程、存储引擎和客户端组件组成[]。

存储引擎架构是MySQL的一大特色,支持多种存储引擎,如InnoDB、MyISAM和Memory等,每种引擎针对不同的应用场景进行了优化。

InnoDB是默认的存储引擎,支持事务、行级锁和外键约束,适用于大多数场景111.

1.MySQL主要架构组件:

MySQL的主要架构组件包括:

  1. 连接层:处理客户端连接、认证和权限验证。
  2. 服务层:包含查询解析器、优化器和执行器,负责处理SQL语句的解析、优化和执行。
  3. 存储引擎层:负责数据的存储和检索,与物理存储交互。
  4. 存储层:实际的数据存储,包括数据文件、索引文件和日志文件等。
+-----------------------+
|     客户端应用程序      | 
| (MySQL Client, JDBC等) |
+----------+------------+
           |
           | 连接请求/SQL语句
           ▼
+-----------------------+
|      连接层           |  <-- 管理连接池、身份认证、安全验证
| (Connector/Thread Pool)|
+----------+------------+
           |
           | 验证后的SQL请求
           ▼
+-----------------------+
|      服务层           |  <-- SQL接口、核心处理层
| +-------------------+ |
| |   SQL接口         | |  <-- 接收SQL指令
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  查询解析器        | |  <-- 语法解析、语义检查
| | (Parser)          | |
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  查询优化器        | |  <-- 生成执行计划、索引选择
| | (Optimizer)       | |
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  执行器           | |  <-- 调用存储引擎API
| | (Executor)        | |
| +-------------------+ |
+----------+------------+
           |
           | 优化后的执行计划
           ▼
+-----------------------+
|   存储引擎层          |  <-- 可插拔式引擎(InnoDB, MyISAM等)
| (Storage Engines)     |
| +-------------------+ |
| |   InnoDB引擎      | |  <-- 事务/行锁/崩溃恢复
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |   MyISAM引擎      | |  <-- 表锁/全文索引
| +-------------------+ |
+----------+------------+
           |
           | 读写数据请求
           ▼
+-----------------------+
|      存储层           |  <-- 物理存储管理
| +-------------------+ |
| |  数据文件         | |  <-- .ibd(表数据)、.frm(表结构)
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  日志文件         | |  <-- redo log/undo log/binlog
| +-------------------+ |
+-----------------------+

2.MySQL 最新发展包括:

  1. 增强的JSON支持:提供了JSON数据类型和专用函数,支持高效的JSON数据存储和查询[]。

  2. 窗口函数:支持分析查询中的窗口函数,用于计算移动平均值、排名和累计值等[]。

  3. 公用表表达式(CTE):支持递归CTE,简化复杂查询的编写[]。

  4. InnoDB增强:改进了缓冲池管理、锁机制和死锁检测,提高了并发性能[]。

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                 原文链接:https://blog.youkuaiyun.com/hezuijiudexiaobai/article/details/148933835
    

3.MySQL部署方式

部署方式优点缺点适用场景
仓库安装快速安装,依赖管理自动化版本可能滞后生产/开发环境
二进制安装灵活配置,企业级部署步骤复杂,需手动管理依赖企业生产环境
容器化快速部署,环境隔离数据持久化需额外配置开发测试、微服务
源码安装高度定制化维护成本高调试或特殊需求
云平台自动化运维,节省时间成本较高,灵活性受限无服务器管理需求的团队
集群部署高可用性,负载均衡配置复杂,需监控调优生产环境高可用需求

参考资料

2、PostgreSQL

1.PostgreSQL的架构特点包括:

  • 多进程架构:每个客户端连接对应一个服务器进程,提高了并发性和稳定性。
  • 存储管理器:负责数据的存储、检索和索引,支持多种索引类型,如B-tree、Hash、GiST和GIN等。
  • 事务处理:支持完整的ACID特性、多版本并发控制(MVCC)和保存点,确保数据一致性和隔离性。
  • 查询优化器:基于代价的优化器,考虑多种执行计划并选择最优方案
+-----------------------+
|     客户端应用程序      | 
| (psql, JDBC, pgAdmin等)|
+----------+------------+
           |
           | 连接请求/SQL语句
           ▼
+-----------------------+
|      连接处理层        |  <-- 使用进程模型(非线程)
|   (Postmaster Daemon)  |
| +-------------------+ |
| |   连接分配         | |  <-- 为每个连接fork独立postgres进程
| +-------------------+ |
+----------+------------+
           |
           | 认证后的SQL请求
           ▼
+-----------------------+
|      核心处理层        |  <-- 所有SQL处理的公共层
| +-------------------+ |
| |  解析器(Parser)    | |  <-- 生成解析树
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  重写器(Rewriter) | |  <-- 处理视图/规则展开
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  优化器(Planner)  | |  <-- 基于成本的优化
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |  执行器(Executor) | |  <-- 调用存储方法
| +-------------------+ |
+----------+------------+
           |
           | 执行计划
           ▼
+-----------------------+
|     存储引擎层         |  <-- 统一存储引擎(不可插拔)
| +-------------------+ |
| |   访问方法         | |  <-- Heap/Index/Bitmap等扫描方式
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |   事务管理器        | |  <-- MVCC实现
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |   缓存管理器        | |  <-- Shared Buffer管理
| +-------------------+ |
+----------+------------+
           |
           | 物理读写请求
           ▼
+-----------------------+
|      存储层           |  <-- 物理文件系统
| +-------------------+ |
| |   表数据文件       | |  <-- OID命名的数据文件(如16384)
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |   WAL日志         | |  <-- 事务日志(pg_wal目录)
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |   事务日志         | |  <-- Commit Logs(pg_xact)
| +---------+---------+ |
|           |           |
| +---------v---------+ |
| |   Clog            | |  <-- 事务状态日志
| +-------------------+ |
+-----------------------+

+-----------------------+
|     后台进程          |  <-- 系统级守护进程
| +-------------------+ |
| | 后台写进程(BGWriter)| | 
| +---------+---------+ |
| | 检查点进程(Checkpointer)| |
| +---------+---------+ |
| | WAL写进程(WAL Writer) | |
| +---------+---------+ |
| | 自动清理进程(AutoVacuum)| |
| +-------------------+ |
+-----------------------+

2.PostgreSQL的扩展与优化策略

PostgreSQL 的扩展机制:PostgreSQL 通过扩展(Extensions)实现功能增强,支持自定义数据类型、索引、存储过程等。

垂直扩展(Scale Up)是通过提升单个数据库实例的硬件资源(CPU、内存、磁盘、网络带宽)来增强性能。例如,升级服务器配置、增加内存或使用更高性能的存储设备

水平扩展(Scale Out)是通过增加多个数据库节点,将负载分散到不同实例,实现性能与可用性的提升。常见方式包括:分片(Sharding)、主从复制、读写分离。

  • 读写分离:使用主从复制架构,将读操作分发到多个从服务器,提高读取性能[]。

  • 分片:将数据分散到多个数据库实例中,每个实例处理一部分数据,适用于超大规模数据集[]。

  • 连接池:使用连接池工具(如pgBouncer)管理数据库连接,减少连接开销,提高PostgreSQL处理并发用户的能力[]。

性能优化技术:

  • 查询优化:通过分析查询计划(EXPLAIN ANALYZE)识别性能瓶颈,并添加适当的索引[]。

  • 内存配置:调整共享缓冲区(shared_buffers)和工作内存(work_mem)参数,优化内存使用[]。

  • 索引优化:选择合适的索引类型(B-tree、Hash、GiST等)并创建覆盖索引,减少磁盘I/O[]。

  • 批量操作:使用批量插入和更新操作,减少事务开销和网络往返次数。

老大哥超链接:666

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值