Coursera 笔记

Module 01 · Relational Database Concepts

MySQLMySQL 数据库概览

Coursera ↗

欢迎了解 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 提供两种集群选项:
    1. InnoDB + 组复制。
    2. MySQL Cluster Edition + NDB 存储引擎。