您的位置:首页 > 健康 > 养生 > 网站下载软件入口_中国联通 腾讯_关键词seo优化_广州做seo的公司

网站下载软件入口_中国联通 腾讯_关键词seo优化_广州做seo的公司

2025/3/9 10:22:09 来源:https://blog.csdn.net/weixin_43764974/article/details/146105093  浏览:    关键词:网站下载软件入口_中国联通 腾讯_关键词seo优化_广州做seo的公司
网站下载软件入口_中国联通 腾讯_关键词seo优化_广州做seo的公司

文章目录

  • 一、数据库基础
    • 1.1 数据库基础定义
    • 1.2 数据库分类与典型产品
    • 1.3 数据库模型
    • 1.4 数据库层次结构
    • 1.5 数据库核心机制
    • 1.6 数据表和视图
      • 1.61 数据表(Table)
      • 1.62 视图(View)
    • 1.7 键类型
    • 1.8 MySQL数据类型
    • 1.9 数据库范式化
  • 二、 数据库技术构成
    • 2.1 系统构成
    • 2.2 SQL语言
    • 2.3 数据库访问技术
      • 2.31 ODBC(开放数据库互连)
      • 2.32 ADO(ActiveX Data Objects)
      • 2.33 JDBC(Java数据库连接)
      • 2.34 ORM(对象关系映射)框架
    • 2.4 数据库引擎
      • 2.41 数据库引擎核心组件
      • 2.42 主流数据库引擎对比
      • 2.43 引擎选型策略
  • 三、相关概念中英文表格

前面两篇文章,介绍了MySQL已经其在Windows和Linux上的安装。在学习相关操作之前,应该先明确一些基本的、核心的概念。

历史文章点击👉:SQL

🐈‍⬛github:https://github.com/mysql

💻官网: https://www.mysql.com

🌏维基百科:https://zh.wikipedia.org/wiki/MySQL


一、数据库基础

1.1 数据库基础定义

数据库 (DatabaseDB) 是按照特定的数据模型组织、存储和管理数据的计算机化系统,通常存储在计算机存储设备中。它可以包含多种类型的数据,如文本、数字、图像、视频和文件等。数据库的核心目标是便于有效地存储、检索、修改、删除和管理数据。

数据库管理系统(Database Management System,简称 DBMS)是用于创建、管理、和维护数据库的系统软件,提供了对数据的增、删、查、改操作,支持数据的存储、访问、安全控制、备份等功能。DBMS通常通过数据库模型来组织数据,例如关系型数据库(RDBMS)、文档型数据库(NoSQL)等。

数据库与DBMS的关系:数据库本质上是数据的集合,而数据库管理系统是实现对这些数据进行操作和管理的软件。就像Excel文件(.xls,.xlsx等)和Excel软件的关系一样,数据库是数据存储的容器,而DBMS是对这些数据进行管理和操作的工具。

例如,MySQL数据库是由MySQL DBMS管理的数据库实例,而MySQL本身是一个数据库管理系统。

概念完整定义与扩展说明
数据库 (DB)按特定数据模型组织、存储和管理数据的电子化仓库,核心特性:
1. 数据结构化
2. 高共享性
3. 低冗余度
4. 数据独立性(物理独立性与逻辑独立性)
数据库管理系统(Database Management System,DBMS)数据库管理系统,核心功能:
- 数据定义(DDL)
- 数据操作(DML)
- 事务管理(ACID)
- 并发控制
- 数据安全与恢复

1.2 数据库分类与典型产品

数据库管理系统可以根据不同的特点进行分类,其中最常见的是根据数据库模型(如关系型数据库、NoSQL数据库等)进行分类。

关系型数据库:

  • 关系型数据库(Relational Database )基于关系模型,使用表格(二维数组)来存储数据。每个表由行和列组成,每行代表一条记录,每列代表一个数据字段。关系型数据库的优点包括高一致性、良好的事务支持、以及强大的查询语言(SQL)。它们广泛应用于企业的核心业务系统中,如ERP、CRM等。

非关系型数据库(NoSQL):

  • NoSQL(Not Only SQL)数据库是为了解决关系型数据库在处理大规模、非结构化数据时的局限性而提出的。它们支持多种数据模型,如键值存储、文档型、列族存储和图数据库等。NoSQL数据库通常具有更好的扩展性,尤其适用于大数据场景和实时分析。
分类子类/技术特性代表产品与场景
关系型数据库 (Relational database)- 基于关系模型(表、行、列)
- 支持ACID事务
- 强一致性
- 结构化查询语言(SQL)
OLTP场景:MySQL、PostgreSQL、Oracle
分析型:Amazon Redshift、Snowflake
NoSQL数据库1. 键值存储:高性能读写,弱一致性
2. 文档型:JSON/BSON格式,灵活模式
3. 列族存储:高扩展性,适合海量数据
4. 图数据库:复杂关系网络
Redis(缓存)、MongoDB(文档)、Cassandra(列族)、Neo4j(图数据库)
NewSQL数据库结合NoSQL扩展性与RDBMS的ACID特性,分布式架构Google Spanner、CockroachDB、TiDB
内存数据库数据常驻内存,极低延迟Redis(持久化)、MemSQL、VoltDB
时序数据库高效处理时间序列数据(如监控、IoT)InfluxDB、TimescaleDB、Prometheus
多模型数据库支持多种数据模型(关系+文档+图)ArangoDB、Microsoft Azure Cosmos DB

1.3 数据库模型

数据库模型描述了在数据库中数据的组织、存储及操作方式。不同的数据库模型适用于不同类型的数据处理需求。

  • 层次模型与网状模型:

    • 层次模型和网状模型是早期的数据库模型,通常用于处理较为简单的数据结构。层次模型以树形结构来表示数据的层级关系,而网状模型则使用图结构来表示数据之间的连接。虽然这两种模型在处理复杂数据关系时有局限性,但它们仍然在某些特定场景下发挥作用。
  • 关系模型:

    • 关系模型基于数学集合理论,将数据表示为表格的形式,每个表格通过主键和外键进行关联。关系模型广泛应用于企业管理、金融、政府等领域,适用于高规范化的数据
模型数据结构适用场景优缺点
层次模型树形结构(父子节点)文件系统、组织结构管理✅ 查询效率高
❌ 数据冗余,多对多关系处理困难
网状模型图结构(节点+连接)早期工业系统(如IDMS)✅ 复杂关系支持
❌ 结构复杂,维护成本高
关系模型二维表(行+列)通用业务系统(ERP、CRM等)✅ 结构清晰,标准化高
❌ 大数据处理效率较低
文档模型JSON/BSON嵌套文档内容管理、日志存储✅ 灵活模式
❌ 关联查询效率低
列族模型按列簇存储(BigTable衍生)大数据分析(如HBase)✅ 高压缩率,适合稀疏数据
❌ 随机读写性能差

1.4 数据库层次结构

数据库的层次结构通常分为物理层、逻辑层和用户层。每一层负责不同的功能,从数据存储到用户访问,都由这些层次共同协作。

  1. 物理层:物理层负责数据库数据的存储方式和优化,它包括文件组织(如堆文件、索引文件等)、存储引擎(如InnoDB、RocksDB)以及缓存机制。该层关注数据在硬件中的存储形式,确保数据的有效存取
  2. 逻辑层:逻辑层则定义了数据库的逻辑结构,包括表结构、视图、以及数据完整性约束(如主键、外键等)。这一层不关心数据的具体存储形式,而是定义了如何通过SQL语句来操作数据库
  3. 用户层:用户层为最终用户提供数据访问接口,包括权限控制、虚拟表、以及数据库与应用程序之间的接口协议(如JDBC、ODBC等)。通过该层,用户可以方便地访问数据库进行查询和操作。
层次核心功能关键组件示例
内层(物理层)管理数据的物理存储:
- 文件组织(堆文件、索引文件)
- 存储引擎(InnoDB、RocksDB)
- 缓存机制(Buffer Pool)
存储引擎、磁盘块管理、数据压缩算法
概念层(逻辑层)定义全局的逻辑结构:
- 表结构(Schema)
- 视图(View)
- 完整性约束(主键、外键)
数据字典、查询优化器、事务管理器
外层(用户层)提供用户的数据访问:
- 权限控制(RBAC)
- 虚拟表(View)
- 接口协议(JDBC/ODBC)
应用程序接口、可视化工具(如Navicat)、ORM框架(Hibernate)

1.5 数据库核心机制

数据库管理系统的核心机制包括事务管理、并发控制和数据安全等。这些机制确保了数据库在高并发环境下的数据一致性、完整性和可靠性。

🟢 事务管理

事务(transaction)是指一组数据库操作,要求在执行过程中要么全部成功,要么全部失败。事务管理确保数据库在并发操作中能够维持一致性,避免出现部分操作执行成功、部分操作执行失败的情况。

ACID 是一组用于确保数据库事务可靠性和一致性的原则,全称为 Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。这些特性共同保证了在并发环境下,数据库事务能够正确、安全地执行,即使在系统故障或其他异常情况下也能保持数据的完整性和正确性。

特性定义实现技术
原子性事务内操作全部成功或全部回滚Undo Log(回滚日志)
一致性事务执行后数据库状态符合业务规则约束(主键、外键、Check约束)
隔离性并发事务互不干扰锁机制(行锁、表锁)、MVCC(多版本并发控制)
持久性事务提交后数据永久保存Redo Log(重做日志)、WAL(预写式日志)

🟢索引优化

索引是提高数据访问效率的重要手段,它像书籍的目录,帮助快速定位数据。数据库通过索引结构,如B+树、哈希等,来优化查询性能。

索引类型数据结构适用场景示例
B+树索引平衡多路搜索树范围查询、排序(默认索引类型)MySQL InnoDB
哈希索引键值哈希映射等值查询(如内存表)Redis、Memcached
全文索引倒排索引(分词)文本内容搜索Elasticsearch、MySQL FullText
空间索引R树/GIS索引地理位置查询PostGIS(PostgreSQL扩展)

1.6 数据表和视图

1.61 数据表(Table)

数据表是关系型数据库中存储数据的核心物理结构,由行(记录)和列(字段)组成,用于持久化保存实体或关系的具体数据。

核心特性

  • 物理存储:数据实际存储在磁盘中,占用存储空间。
  • 结构定义:需预先定义列名、数据类型(如 INT, VARCHAR)及约束(主键、外键、唯一性等)。
  • 数据操作:支持增删改查(INSERT, DELETE, UPDATE, SELECT)等操作。
  • 独立性:每个表代表一个独立的数据实体或关系(如 学生表课程表)。

示例

CREATE TABLE 学生表 (学号 INT PRIMARY KEY,  -- 主键约束姓名 VARCHAR(50) NOT NULL,  -- 非空约束年龄 INT CHECK (年龄 >= 10),  -- 检查约束班级ID INT,FOREIGN KEY (班级ID) REFERENCES 班级表(班级ID)  -- 外键约束
);

1.62 视图(View)

视图是基于一个或多个表的查询结果生成的虚拟表,不存储实际数据,而是通过查询动态生成结果集。

核心特性

  • 虚拟性:不占用物理存储空间,数据实时从基表计算。
  • 逻辑抽象:隐藏底层表结构的复杂性,提供简化的数据访问接口。
  • 安全性:通过视图限制用户访问特定列或行(如屏蔽敏感字段)。
  • 更新限制:部分视图支持更新操作,但需满足特定条件(如单表视图、未使用聚合函数)。

视图就是一些特定的SQL语句,每次打开视图,就会执行这些语句。比如,你的表存储了很多信息,而有些信息是不能给客户查看的,现在就可以创建一个视图,只包含表中的特定列,让客户查询这个视图。

这个很像api的概念,简化了操作逻辑,用户只能调用api提供的功能,而无法看到api背后的具体实现。

视图就是一个整合的或者定制化的 “表”,它支持很多表的操作(如查询、对视图创建视图等)。

综上,如果没有相关需求,视图不是数据库的必要内容。


尽管视图支持许多表的操作,但它也有一些限制:

  • 性能开销:视图的查询是动态执行的,可能会带来额外的性能开销。
  • 更新限制:复杂视图(如包含聚合函数、多表连接等)通常不支持直接更新。
  • 依赖性:视图的定义依赖于底层表的结构。如果底层表的结构发生变化,视图可能需要重新定义

示例

-- 创建视图:仅显示学生姓名和班级名称(隐藏学号和班级ID)
CREATE VIEW 学生班级视图 AS
SELECT 学生表.姓名, 班级表.班级名称
FROM 学生表
JOIN 班级表 ON 学生表.班级ID = 班级表.班级ID;

作用与场景

  • 简化复杂查询:将多表关联或复杂计算封装为视图(如统计学生平均成绩)。
  • 数据权限控制:限制用户仅能访问视图中的字段(如隐藏工资列)。
  • 逻辑独立性:基表结构变化时,通过调整视图定义保持应用层不变。

数据表 vs 视图:核心区别

特性数据表(Table)视图(View)
存储方式物理存储数据,占用磁盘空间虚拟表,仅保存查询定义,不存储数据
数据来源直接存储原始数据基于一个或多个表的查询结果动态生成
更新操作支持所有增删改查操作仅部分视图支持更新(需满足特定条件)
性能影响依赖索引和表结构优化复杂视图可能因查询计算影响性能
设计目的持久化存储数据实体简化查询、控制访问、逻辑抽象

1.7 键类型

🗝️ (1)超键(Super Key)

能唯一标识表中某一行(元组)的一个或多个属性的集合,可能存在冗余属性。

  • 冗余性:超键可能包含不必要的属性。
    示例:在 员工表 中,员工ID + 姓名 + 部门 可组成超键,但仅需 员工ID 即可唯一标识记录,其他属性冗余。
  • 用途:主要用于理论分析,为候选键的筛选提供基础。

设计原则:

  • 实际设计中需消除冗余属性,转化为候选键。

🗝️ (2)候选键(Candidate Key)

最小的超键(无冗余属性),表中可能有多个候选键。

  • 唯一性:每个候选键都能唯一标识记录。
    示例:在 用户表 中,用户ID身份证号 均为候选键。
  • 不可约简:移除任意属性后,不再满足唯一性。

设计原则:

  • 稳定性:优先选择值不随业务逻辑变化的属性(如自增ID)。
  • 简洁性:选择字段长度短、存储效率高的候选键。

🗝️ (3)主键(Primary Key)

从候选键中选定的唯一标识符,不可为空且不可重复

  • 唯一标识:每个表有且仅有一个主键。
    示例订单表 使用 订单ID 作为主键。
  • 物理存储影响:在InnoDB中,主键是聚簇索引的基准,直接影响数据存储顺序。

设计原则:

  • 代理键 vs 自然键

    类型优点缺点
    代理键(如自增ID)稳定、长度固定无业务含义
    自然键(如身份证号)业务相关可能变更或长度不一
  • 最佳实践

    • 优先使用 BIGINT UNSIGNED 自增主键。
    • 避免使用业务字段(如手机号),防止业务规则变化导致主键修改。

🗝️ (4) 外键(Foreign Key)

引用其他表主键的字段,用于维护表间关系与数据一致性。

  • 参照完整性:确保子表记录对应有效的父表记录。
    示例订单明细表 中的 订单ID 引用 订单表 的主键。

  • 级联操作:需明确定义数据变更时的行为:

    ALTER TABLE 子表
    ADD CONSTRAINT fk_order
    FOREIGN KEY (order_id) REFERENCES 订单表(id)
    ON DELETE CASCADE  -- 父表删除时,子表级联删除
    ON UPDATE NO ACTION; -- 父表主键更新时,禁止操作
    

设计原则:

  • 分布式系统慎用:跨节点外键可能引发性能问题,需在应用层实现一致性。
  • 索引优化:为外键字段建立索引,加速关联查询。

🗝️ (5)联合主键(Composite Primary Key)

由多个字段组合构成的主键。

  • 复合唯一性:多个字段的组合值唯一标识记录。
    示例学生选课表 使用 学生ID + 课程ID 作为联合主键。
  • 查询优化:联合主键的字段顺序影响索引效率(最左前缀原则)。

设计原则:

  • 适用场景
    • 多对多关系表(如 订单_商品 关联表)。
    • 无合适单一字段作为主键时。
  • 字段顺序:区分度高的字段应放在左侧。
    示例国家代码 + 城市代码 优于 城市代码 + 国家代码

🟢键类型对比:

键类型核心作用典型应用场景注意事项
超键理论分析基础数据库设计初期分析需精简冗余属性
候选键提供主键候选方案多唯一标识字段的表选择稳定且高效的候选键
主键唯一标识记录,优化存储所有表的核心标识,必须的避免使用可变业务字段
外键维护跨表数据一致性关联表(如订单与用户)分布式系统慎用,需索引优化
联合主键复合场景下的唯一性保证多对多关系表、时序数据表注意字段顺序与查询模式匹配

1.8 MySQL数据类型

数据库管理系统提供了多种数据类型,用于存储不同类型的值。MySQL支持的常见数据类型包括整数类型、浮点数类型、日期时间类型和字符串类型等。

类别具体类型存储范围使用建议
整数型TINYINTINTBIGINT1字节 ~ 8字节根据数据范围选择最小类型(节省空间)
浮点型FLOATDOUBLEDECIMAL单精度、双精度、精确小数(DECIMAL(10,2))金融计算必须使用DECIMAL避免精度丢失
时间型DATETIMEDATETIMETIMESTAMPTIMESTAMP自动时区转换记录时间戳优先用TIMESTAMP(4字节节省空间)
字符串型CHARVARCHARTEXTBLOBCHAR定长(0-255)、VARCHAR变长(0-65535)短文本用VARCHAR,长文本用TEXT+压缩算法

1.9 数据库范式化

数据库范式化旨在通过分解关系来减少冗余数据,确保数据的一致性和完整性。

范式规则示例
1NF(第一范式)消除重复列,属性原子性拆分“地址”字段为省、市、街道
2NF(第二范式)消除部分函数依赖(非主属性完全依赖主键)订单表中不应存储客户姓名(应通过外键关联)
3NF(第三范式)消除传递函数依赖(非主属性不依赖其他非主属性)员工表中不应包含部门地址(应通过部门ID关联部门表)

二、 数据库技术构成

2.1 系统构成

数据库系统由三个核心组成部分构成:

  1. 数据库(Database)
    用于持久化存储数据的物理容器,通常以文件形式存在于存储设备中。

  2. 数据库管理系统(DBMS):管理数据库的软件系统,提供以下功能:

    • 数据定义与结构管理
    • 数据操作与事务控制
    • 安全权限与访问控制
    • 备份恢复与性能优化
  3. 数据库应用程序:用于增强DBMS功能的辅助工具,例如:

    • 数据可视化工具(如Tableau)
    • 数据同步工具(如Debezium)
    • 监控管理工具(如Percona Monitoring)

2.2 SQL语言

SQL(Structured Query Language)是用于与数据库通信的标准语言,具备以下特点:

  1. 跨平台性:主流DBMS(MySQL、Oracle、PostgreSQL等)均支持
  2. 易学性:基于自然英语的关键词(SELECT/INSERT/UPDATE等)
  3. 功能强大:支持从简单查询到复杂事务处理
  4. 扩展性:不同DBMS在标准SQL基础上提供专属扩展

SQL的功能分类:

分类功能描述典型语句
DDL(数据定义语言)管理数据库对象结构CREATE, ALTER, DROP
DML(数据操作语言)操作数据记录INSERT, UPDATE, DELETE
DQL(数据查询语言)数据检索SELECT
DCL(数据控制语言)权限管理GRANT, REVOKE

SQL应用示例:

(1) 表结构定义

CREATE TABLE user (id     INT UNSIGNED NOT NULL AUTO_INCREMENT,name   VARCHAR(32)  NOT NULL DEFAULT '' COMMENT '姓名',sex    TINYINT      NOT NULL DEFAULT 0  COMMENT '性别:0-保密,1-男,2-女',mobile VARCHAR(20)  NOT NULL DEFAULT '' COMMENT '手机',PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

(2)数据操作

-- 插入数据(显式指定字段)
INSERT INTO user (name, sex, mobile) 
VALUES ('张三', 1, '13811772277');-- 插入数据(隐式全字段赋值)
INSERT INTO user VALUES (19, '李四', 2, '13900112233');-- 查询数据
SELECT id, name, mobile FROM user WHERE sex = 1;

2.3 数据库访问技术

数据库访问技术是应用程序与数据库之间建立通信的核心桥梁,不同的技术栈和场景下会采用不同的实现方案。以下对主流技术进行深度解析:

2.31 ODBC(开放数据库互连)

ODBC诞生于1992年,由微软联合多家厂商制定,旨在解决不同数据库系统间的互操作性问题。作为首个跨平台数据库访问标准,它通过抽象层屏蔽数据库差异。

架构解析:

  1. 应用程序:调用ODBC API提交SQL请求
  2. 驱动程序管理器:加载/卸载驱动程序,管理连接池
  3. 数据库驱动:厂商提供的具体实现(如MySQL ODBC Driver)
  4. 数据源:通过DSN(Data Source Name)配置连接参数
// C语言使用ODBC示例
#include <sql.h>
#include <sqlext.h>
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
SQLConnect(dbc, "MySQL_DSN", SQL_NTS, "user", SQL_NTS, "pass", SQL_NTS);
SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
SQLExecDirect(stmt, "SELECT * FROM employees", SQL_NTS);
  • 优势
    • 支持异构数据库访问(Oracle到SQL Server无缝切换)
    • 与语言无关(C/C++/Python等均可调用)
  • 局限
    • 配置复杂度高(需手动管理DSN)
    • 性能开销大于原生驱动

2.32 ADO(ActiveX Data Objects)

作为微软COM体系的核心组件,ADO为VB、ASP等语言提供高层数据库访问接口,通过OLE DB底层驱动实现数据操作。

核心对象模型:

  • Connection:管理数据库连接
  • Command:执行SQL语句或存储过程
  • Recordset:封装查询结果集
' VBScript使用ADO示例
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=.;Initial Catalog=Northwind;User ID=sa;"
Set rs = conn.Execute("SELECT * FROM Products WHERE Price > 20")
Do Until rs.EOFWScript.Echo rs("ProductName") & " - " & rs("Price")rs.MoveNext
Loop

演进与替代:

  • ADO.NET:.NET Framework中的现代化替代方案,支持断开式数据集
  • Entity Framework:基于LINQ的ORM框架,进一步简化数据操作

2.33 JDBC(Java数据库连接)

架构分层:

  1. JDBC API:提供java.sqljavax.sql接口
  2. JDBC Driver Manager:加载数据库驱动(如mysql-connector-java
  3. JDBC Driver:实现厂商特定协议(Type 4纯Java驱动为主流)

连接模式演进:

  • 基本连接DriverManager.getConnection()
  • 连接池优化:HikariCP/Druid管理资源复用
  • 分布式事务:通过JTA(Java Transaction API)支持
// Java 8+ 使用Try-with-resources简化JDBC操作
try (Connection conn = DataSource.getConnection();PreparedStatement stmt = conn.prepareStatement("INSERT INTO users(name,email) VALUES(?,?)")) {stmt.setString(1, "李雷");stmt.setString(2, "lilei@example.com");stmt.executeUpdate();
}

2.34 ORM(对象关系映射)框架

通过元数据映射(XML/注解)将数据库表结构转化为面向对象模型,实现以下目标:

  • 消除手动编写CRUD SQL
  • 支持延迟加载(Lazy Loading)关联数据
  • 提供跨数据库方言抽象

实现对比:

框架语言特点适用场景
HibernateJava全自动映射,HQL查询语言复杂领域模型
MyBatisJavaSQL与代码解耦,灵活度高需精细控制SQL
SQLAlchemyPython支持ORM和原生SQL双模式数据分析和Web开发
Entity FrameworkC#LINQ集成,Code First迁移.NET生态应用
# SQLAlchemy ORM示例
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String(50))email = Column(String(120))# 查询操作
session.query(User).filter(User.name.like('%张%')).all()
  • 优点:开发效率提升50%以上,维护成本降低
  • 缺点:复杂查询可能生成低效SQL,需手动优化

2.4 数据库引擎

数据库引擎(Database Engine)是数据库管理系统的核心组件,负责数据的存储、检索、事务处理以及并发控制。它直接决定了数据库的性能特性、可靠性及适用场景。

2.41 数据库引擎核心组件

(1)存储管理

  • 数据组织:定义数据在磁盘上的存储结构(如B+树、LSM树)
  • 页管理:以固定大小(通常4KB~16KB)管理磁盘数据块
  • 缓冲池:通过内存缓存(Buffer Pool)减少磁盘I/O,提升读写效率

(2) 事务处理

  • ACID实现
    • 原子性:依赖Undo Log回滚机制
    • 隔离性:通过MVCC(多版本并发控制)或锁机制实现
    • 持久性:Redo Log确保提交数据持久化
  • 日志系统:WAL(Write-Ahead Logging)协议保障故障恢复

(3) 查询处理

  • 解析器:将SQL转换为抽象语法树(AST)
  • 优化器:基于代价模型生成最优执行计划
  • 执行器:调用存储引擎接口获取数据

(4)索引管理

  • 索引类型:B+树、哈希索引、全文索引、空间索引
  • 自适应优化:动态调整索引结构(如InnoDB的自适应哈希索引)

2.42 主流数据库引擎对比

引擎适用场景核心特性局限性
InnoDBOLTP事务处理- 支持ACID事务
- 行级锁
- 聚簇索引组织表
- 外键约束
高并发写入时Undo Log膨胀风险
MyISAM读密集型分析- 表级锁
- 全文索引
- 压缩存储格式
不支持事务,崩溃后数据易损坏
RocksDB嵌入式/高吞吐写入- LSM树结构
- 高压缩率
- 分层存储优化
范围查询性能较弱
Memory缓存/临时表- 全内存存储
- 哈希索引加速查询
宕机数据丢失,不支持变长字段
ColumnStore实时分析(OLAP)- 列式存储
- 向量化计算
- 数据压缩优化
事务支持有限,延迟较高

引擎切换示例(MySQL):

-- 创建表时指定引擎
CREATE TABLE log_events (id BIGINT PRIMARY KEY,content TEXT
) ENGINE = MyISAM;-- 动态修改引擎
ALTER TABLE log_events ENGINE = InnoDB;

2.43 引擎选型策略

  • 工作负载类型
    • OLTP:InnoDB、SQL Server的Microsoft SQL Engine
    • OLAP:ClickHouse的MergeTree、Amazon Redshift
  • 数据规模
    • 海量数据:LSM树引擎(Cassandra、ScyllaDB)
    • 中等数据:B+树引擎(InnoDB)
  • 一致性要求
    • 强一致:支持ACID的引擎(InnoDB)
    • 最终一致:AP架构引擎(DynamoDB)

OLTP(Online Transaction Processing,联机事务处理)和OLAP(Online Analytical Processing,联机分析处理)是数据库领域的两种不同应用场景,分别用于处理日常事务操作和数据分析。它们在设计目标、数据结构、操作类型和应用场景上有显著区别。

OLTP(联机事务处理)
OLTP 是一种面向事务处理的数据库系统,主要用于实时处理和管理日常业务操作。它的核心目标是支持高并发的事务操作,确保数据的实时性和一致性

特点

  1. 高并发性:支持大量用户同时进行操作,例如银行转账、在线购物等。
  2. 低延迟:操作响应时间非常短,用户体验至关重要。
  3. 事务性:强调 ACID 特性(原子性、一致性、隔离性、持久性),确保数据的正确性和完整性。
  4. 数据更新频繁:主要涉及数据的插入、更新、删除等操作。
  5. 面向行存储:数据存储和操作通常是针对单行或少量行的操作。
  6. 规范化设计:数据通常按照规范化的模式进行存储,减少数据冗余。

应用场景

  • 银行系统:存款、取款、转账等。
  • 电商网站:商品购买、订单处理、用户登录等。
  • 在线订票系统:机票、火车票预订等。
  • 企业资源规划(ERP)系统:订单管理、库存管理等。

常见数据库

  • MySQL:开源关系型数据库,支持事务,适合中小型应用。
  • PostgreSQL:开源关系型数据库,支持复杂事务,适合高可用性需求。
  • Oracle:商业数据库,强大的事务处理能力,广泛用于企业级应用。
  • Microsoft SQL Server:商业数据库,适用于 Windows 环境下的企业应用。

OLAP(联机分析处理)

OLAP 是一种面向数据分析的系统,主要用于从大量数据中提取有价值的信息,支持复杂的查询和数据分析。它的核心目标是帮助决策者快速获取数据洞察,支持业务决策

特点

  1. 数据分析:主要用于数据的汇总、统计、分析和多维度查询。
  2. 数据量大:通常处理的数据量非常大,数据来源可能是多个 OLTP 系统。
  3. 面向列存储:为了优化分析查询,数据通常以列存储的方式组织。
  4. 多维数据模型:支持多维数据模型(如星型模型、雪花模型),便于从不同角度分析数据。
  5. 数据冗余:为了提高查询效率,数据可能经过预处理和冗余存储。
  6. 读多写少:主要操作是读取和分析数据,写入操作较少。

应用场景

  • 数据仓库:存储企业历史数据,支持复杂查询和报表生成。
  • 商业智能(BI):支持数据挖掘、趋势分析、预测等。
  • 市场分析:分析销售数据、客户行为等。
  • 财务分析:生成财务报表、预算分析等。

常见工具

  • 数据仓库系统:如 Amazon Redshift、Google BigQuery、Snowflake。
  • 分析数据库:如 Apache Hive、Presto。
  • BI 工具:如 Tableau、Power BI、QlikView。

三、相关概念中英文表格

(1)数据库基础

中文术语英文术语定义与扩展
关系型数据库Relational Database (RDB)基于关系模型的数据库,使用二维表结构(如MySQL、Oracle)
非关系型数据库NoSQL Database非结构化数据存储(键值、文档、图、时序等类型)
数据库模式Database Schema数据库的全局逻辑结构定义(表、字段、关系约束)
数据字典Data Dictionary存储元数据的系统表(如表结构、索引信息)
数据库实例Database Instance运行中的数据库进程与内存结构的集合
数据库集群Database Cluster多个数据库节点协同工作的集合(如Galera Cluster)
数据库分片Database Sharding水平拆分数据到多个物理节点(如按用户ID哈希分片)
数据库快照Database Snapshot某一时间点的数据静态副本(用于备份或分析)

(2)存储引擎与数据结构

中文术语英文术语定义与扩展
B+树B+ Tree多路平衡搜索树,用于磁盘索引(InnoDB默认结构)
LSM树Log-Structured Merge Tree高写入吞吐数据结构(RocksDB、Cassandra核心)
跳表Skip List多层链表结构,用于内存数据库索引(Redis Sorted Set实现)
列式存储Columnar Storage按列组织数据(ClickHouse、Redshift核心设计)
内存数据库In-Memory Database数据常驻内存(Redis、MemSQL)
分布式文件系统Distributed File System跨节点文件存储(HDFS、Ceph)
段页式存储Segment-Page Storage物理存储管理方式(Oracle ASM、MySQL表空间)
压缩算法Compression AlgorithmZSTD(RocksDB)、LZ4(Kafka)、Snappy(Parquet)

(3)事务与并发控制

中文术语英文术语定义与扩展
ACID属性ACID Properties原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
事务隔离级别Transaction Isolation Levels读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)、串行化(Serializable)
乐观锁Optimistic Locking通过版本号检测冲突(CAS机制)
悲观锁Pessimistic Locking预先加锁(行锁、表锁)
共享锁Shared Lock (S Lock)允许并发读,阻止写操作
排他锁Exclusive Lock (X Lock)独占资源,阻止其他读写
两阶段提交协议Two-Phase Commit (2PC)分布式事务协议(协调者与参与者交互)
CAP定理CAP Theorem一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)三选二

(4)查询处理与优化

中文术语英文术语定义与扩展
查询优化器Query Optimizer生成最优执行计划(基于规则/代价模型)
执行计划Execution Plan查询的具体操作步骤(全表扫描、索引扫描、嵌套循环连接等)
索引下推Index Condition Pushdown (ICP)将过滤条件下推到存储引擎处理(减少回表次数)
谓词推导Predicate Derivation通过逻辑规则简化查询条件
物化视图Materialized View预计算并存储查询结果(Oracle、Snowflake支持)
并行查询Parallel Query Execution多线程处理查询(如Greenplum MPP架构)
向量化执行Vectorized Execution批量处理数据单元(ClickHouse每秒亿级数据处理)

(5)高可用与容灾

中文术语英文术语定义与扩展
主从复制Master-Slave Replication异步/半同步数据同步(MySQL Replication)
多主复制Multi-Master Replication多节点可写(Galera Cluster)
故障转移Failover主节点故障时自动切换到备节点
脑裂问题Split-Brain集群网络分区导致数据不一致
数据冗余Data RedundancyRAID、EC(纠删码)技术保障数据可靠性
逻辑备份Logical Backup导出SQL语句(mysqldump)
物理备份Physical Backup复制数据文件(Percona XtraBackup)
时间点恢复Point-in-Time Recovery (PITR)基于WAL日志恢复到指定时间点

(6)分布式数据库

中文术语英文术语定义与扩展
一致性哈希Consistent Hashing分布式数据分片算法(Cassandra、DynamoDB使用)
分片键Shard Key数据分片依据字段(如用户ID)
数据局部性Data Locality计算靠近存储(Hadoop HDFS数据本地化)
最终一致性Eventual Consistency数据副本经过一段时间后达成一致(Cassandra默认模式)
分布式事务Distributed Transaction跨节点事务(Google Spanner TrueTime API)
共识算法Consensus AlgorithmPaxos、Raft(Etcd)、ZAB(ZooKeeper)
联邦查询Federated Query跨多个数据源联合查询(Presto、Trino)

(7)数据模型

中文术语英文术语定义与扩展
层次模型Hierarchical Model树形结构(早期IBM IMS)
网状模型Network Model图结构(CODASYL标准)
文档模型Document ModelJSON/BSON格式(MongoDB)
键值模型Key-Value Model简单键值对(Redis、DynamoDB)
图模型Graph Model节点与边(Neo4j、TigerGraph)
时序模型Time-Series Model时间戳索引(InfluxDB、TimescaleDB)
宽列模型Wide-Column Model列族存储(Cassandra、HBase)

(8)安全与合规

中文术语英文术语定义与扩展
角色访问控制Role-Based Access Control (RBAC)按角色分配权限(DBA、ReadOnly User)
透明数据加密Transparent Data Encryption (TDE)数据库文件级加密(Oracle、SQL Server支持)
数据脱敏Data Masking敏感信息替换(如手机号中间四位****)
SQL注入防护SQL Injection Prevention参数化查询(Prepared Statement)
GDPR合规General Data Protection Regulation欧盟数据保护法规(要求数据可删除、可审计)
审计日志Audit Log记录所有数据操作(如MySQL Enterprise Audit)
数据血缘Data Lineage追踪数据来源与变换过程(Apache Atlas)

(9)云与新兴技术

中文术语英文术语定义与扩展
数据库即服务Database as a Service (DBaaS)云托管数据库(AWS RDS、Azure Database)
无服务器数据库Serverless Database按需自动扩缩容(PlanetScale、Aurora Serverless)
HTAP数据库Hybrid Transactional/Analytical Processing同时支持事务与分析(TiDB、Google F1)
边缘数据库Edge Database靠近数据源的轻量级数据库(SQLite Edge、Redis Edge)
量子数据库Quantum Database基于量子计算的数据库原型(学术界研究阶段)
区块链数据库Blockchain Database不可篡改的分布式账本(BigchainDB)
向量数据库Vector Database存储与检索高维向量(Milvus、Pinecone)

(10)工具与生态系统

中文术语英文术语定义与扩展
ETL工具Extract-Transform-Load数据集成工具(Informatica、Talend)
BI工具Business Intelligence Tool数据分析可视化(Tableau、Power BI)
CDC工具Change Data Capture数据变更捕获(Debezium、Maxwell)
数据库监控Database MonitoringPrometheus + Grafana、Percona Monitoring
数据目录Data Catalog元数据管理系统(Alation、Apache Atlas)
数据湖Data Lake原始数据存储仓库(AWS S3 + Apache Iceberg)
数据网格Data Mesh去中心化数据架构(强调领域自治与产品化)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com