Module 01 · Relational Database Concepts
MySQLMySQL 数据库概览
欢迎了解 MySQL!观看本视频后,您将能够:
- 描述 MySQL 及其历史背景。
- 描述使用 MySQL 的关键特性。
- 描述一些 MySQL 存储引擎。
- 识别 MySQL 提供的集群选项。
MySQL 简介与核心优势
MySQL 是一个对象关系型数据库管理系统(Object-Relational Database Management System),在现代 Web 开发中发挥着核心作用。
"MySQL 以其可靠性、可扩展性和易用性而著称。"
凭借多样化的版本和附加组件,MySQL 能够满足不同需求,甚至提供专为有效处理高要求工作负载而设计的集群版本。这种多功能性促成了 MySQL 的广泛采用,使其成为跨各种应用和行业的可适应数据库解决方案。
MySQL 的历史沿革
| 时间线 | 事件 | 备注 |
|---|---|---|
| 最初开发 | 瑞典公司 MySQL AB | 以联合创始人 Monty Widenius 的女儿 My 命名。 |
| 后期发展 | Sun Microsystems 收购 MySQL AB | |
| 最终归属 | Oracle Corporation 收购 Sun Microsystems | |
| 标识 | 🐬 海豚 Sakila | 名称是通过“给海豚命名”竞赛征集选出的。 |
| 流行高峰 | 1990 年代末至 2000 年代初 | 成为 LAMP 堆栈的关键组成部分。 |
LAMP 堆栈
MySQL 在 LAMP 堆栈中扮演了至关重要的角色,该堆栈是当时许多流行网站的构建基础:
- Linux (操作系统)
- Apache (Web 服务器)
- MySQL (数据库)
- PHP (脚本语言)
许可模式与衍生版本
MySQL 采用双重许可模式:
- 开源许可: GNU GPL(通用公共许可证)。
- 商业许可: 适用于将 MySQL 嵌入到自身应用和解决方案中的场景。
GNU GPL 的开源性质促成了各种**衍生版本(Forks)**的出现,其中由一些原始 MySQL 开发人员领导的 MariaDB 是一个突出的例子。
使用 MySQL 的关键特性
兼容性与客户端应用
- 操作系统兼容性: MySQL 兼容多种 Unix 版本、Microsoft Windows 和 Linux。
- 编程语言支持: 可以使用广泛的现代编程语言为 MySQL 编写客户端应用程序。
SQL 语法与数据支持
- 标准 SQL: MySQL 采用标准的 SQL 语法,并引入了扩展功能。
- 例如: 使用
LOAD DATA语句可以快速地将文本文件中的行导入到数据库表中。
- 例如: 使用
- 数据类型: MySQL 主要处理关系型数据,但也支持 JSON 数据格式。
存储引擎(Storage Engines)
与许多其他关系型数据库管理系统(RDBMS)一样,MySQL 支持多重存储引擎。
引用:存储引擎是处理表上 SQL 操作的组件,并定义了该表可以使用的功能。您应根据预期的工作负载和表的要求来选择特定的引擎。
| 存储引擎 | 核心特性 | 适用场景 | 优势/备注 |
|---|---|---|---|
| InnoDB | 事务支持、行级锁定、主键上的聚簇索引、外键约束。 | 默认引擎,需要数据一致性和高并发读写性能。 | 提供了高性能和可靠性的平衡。 |
| MyISAM | 表级锁定。 | 主要为读取操作且更新较少的工作负载(如数据仓库或 Web 应用)。 | 对读操作表现良好,但在读写环境中表级锁定会抑制性能。 |
| NDB Engine | 支持在集群中运行多个 MySQL 服务器实例。 | 需要高可用性和冗余的应用。 |
高可用性与集群选项
MySQL 支持高可用性和可扩展性。
数据复制(Replication)
- 数据副本: 可以使用复制功能在一个或多个副本上创建数据的副本。源数据库中的更改会同时在副本上执行。
- 提高可扩展性: 多个相同数据的副本意味着您可以将某些读取负载分摊到副本集上,从而提高可扩展性。
- 提高可用性: 如果源数据库发生故障,您可以执行故障转移(failover),转而使用其中一个副本。
集群(Clustering)
引用:集群是将多个独立的计算资源连接起来,作为一个统一系统协同工作的实践。
MySQL 提供两种集群选项:
1. InnoDB 存储引擎 + 组复制(Group Replication)
- 架构: 允许使用一个读写主服务器(Primary Server)和多个辅助服务器(Secondary Servers)。
- 负载均衡: 可以使用 MySQL Router 在多个服务器实例之间对客户端应用程序进行负载均衡。
- 故障恢复: 在任何服务器发生计划外停机时,MySQL Router 会将客户端应用程序重新连接到可用的服务器。
2. MySQL Cluster Edition + NDB 存储引擎
- 架构: 使用 NDB 存储引擎提供高可用性和可扩展的解决方案。
- 多个 MySQL 服务器节点访问一组数据节点(通常存储在内存中)。
- 冗余与可用性: 运行多个数据节点提供了冗余,从而在发生故障时提高了可用性。
- 可扩展性: 运行多个服务器节点提供了可扩展性。
总结回顾
在本视频中,您学习到:
- MySQL 是一个可靠、可扩展且被广泛采用的数据库系统。
- MySQL 兼容 UNIX、Windows 和 Linux,并支持各种编程语言。
- MySQL 具有双重许可:开源的 GNU GPL 和用于嵌入式应用的商业许可。
- MySQL 处理关系型和 JSON 数据,并支持多种存储引擎。
- MySQL 提供两种集群选项:
- InnoDB + 组复制。
- MySQL Cluster Edition + NDB 存储引擎。