全部版块 我的主页
论坛 休闲区 十二区 休闲灌水
98 0
2025-12-03

前言

作为现代信息系统的核心支撑,数据库在各类应用中扮演着不可或缺的角色。无论是社交平台、外卖服务,还是企业财务管理与业务运营系统,其底层都依赖于数据库实现数据的高效存储、管理和访问。掌握数据库的基本概念、演进历程以及不同类型数据库的特点,是构建数据处理能力的第一步。这不仅有助于理解“数据—表—数据库”之间的层次结构,还能为实际开发中选择合适的技术方案提供理论依据——例如判断应使用 MySQL 这类关系型系统,还是 Redis 等非关系型工具。本文将从基础定义出发,梳理数据库的发展阶段,对比主流类型,并建立完整的知识框架,为后续实践与深入学习奠定坚实基础。

一、数据库概述

1. 基本概念解析

1.1 数据

定义:数据是对客观事物的符号化描述(Data),涵盖数字、文本、图像、音频等多种形式。

存储方式:以统一格式按记录进行组织,相同类型的数据集中存放。例如,“学生信息”作为一个独立的数据集合进行管理。

示例说明:在一个班级的学生数据中,每位同学构成一条记录,每条记录包含多个属性字段,如学号、姓名、性别等。

数据库层级结构:MySQL 服务 → 数据库实例 → 数据表 → 行(即记录)+ 列(即字段)。

1.2 表

结构组成:由行(记录)和列(字段)构成,是数据组织的基本单元。

主要特征:记录由若干字段组成;字段内容可为字符或数值;支持多用户并发访问;具备较低的数据冗余度和较高的独立性。

1.3 数据库

数据库是一组按照特定规则组织并相互关联的数据集合,本质上是多个数据表的集合体,用于集中管理相关信息。

1.4 数据库管理系统(DBMS)

定义:用于操作和控制数据库运行的专用软件系统。

核心功能包括:

  • 数据库的创建与日常维护(如建表、备份恢复、性能监控、结构调整);
  • 数据定义功能(设定数据结构、存储模式及安全策略);
  • 数据操作能力(执行查询、统计、增删改等操作);
  • 运行时管理机制(实现并发控制、权限校验、事务管理);
  • 系统通信接口(支持与其他应用程序交互,如 Office 工具套件或 Access)。

工作流程:接收用户请求 → 转换为底层数据库指令 → 执行相应操作 → 获取结果集 → 格式化输出 → 返回给客户端。

1.5 数据库系统(DBS)

组成要素:硬件环境 + 操作系统 + 数据库文件 + DBMS 软件 + 应用程序 + 最终用户。

关键角色 —— DBA(数据库管理员):负责系统的备份与恢复、权限分配、性能调优及用户账户管理。

典型应用软件示例:Navicat 可视化工具、人力资源管理系统、财务核算平台、图书馆借阅系统等。

2. 数据库技术发展简史

2.1 第一阶段:层次型与网状型数据库

早期数据库模型以层次结构或网络拓扑为基础,适用于固定路径访问的场景。

代表系统:IBM 于 1969 年推出的 IMS(Information Management System)。

2.2 第二阶段:关系型数据库兴起

核心理念:所有数据均以二维表格形式存储(行表示记录,列表示字段),利用数学中的集合论与关系代数实现数据的操作(如选择、投影、连接)。该模型直观易懂,便于查询与维护。

里程碑产品:

  • System R:由 IBM 开发,首个验证关系模型可行性的实验性系统;
  • Ingres:源自加州大学伯克利分校,后来演化出 PostgreSQL。

历史意义:推动了 SQL(结构化查询语言)成为行业标准,后续主流数据库如 MySQL、Oracle、SQL Server 均源于此技术路线。

2.3 第三阶段:新型数据库时代

发展趋势:面向对象设计、跨平台兼容性增强,支持 SQL 与 NoSQL 混合架构,适应多样化应用场景。

新兴代表:MariaDB、PostgreSQL、时序数据库 Prometheus 等。

3. 关系型数据库详解

数据建模方式:采用 E-R 模型(实体-联系模型),其中每一行代表一个实体,每一列对应实体的一个属性,表之间可通过一对一、一对多或多对多的关系进行关联。

唯一标识机制:主键(Primary Key)确保每条记录的唯一性和非空性,类似于身份证号或学号。

常见产品:MySQL、Oracle、SQL Server、DB2、PostgreSQL 等。

4. 非关系型数据库(NoSQL)

名称含义:NoSQL 即 “Not Only SQL”,强调不局限于传统表格结构,支持多种数据格式。

存储形式:包括键值对(Key-Value)、文档型、列式存储、图结构等。

典型代表:Redis、Memcached、MongoDB、HBase。

适用场景:高并发读写、缓存加速、大数据实时分析等。

优势特点:

  • 数据格式灵活,支持 JSON、图片、序列化对象等多种类型;
  • 读写速度快,多数基于内存操作;
  • 横向扩展能力强,易于分布式部署;
  • 成本较低,普遍开源且安装配置简便。

局限之处:

  • 不原生支持 SQL 查询语言;
  • 缺乏完整的事务支持(ACID 特性弱);
  • 复杂查询能力有限;
  • 大部分数据驻留在内存中,对硬件资源要求较高。

Redis 与 Memcached 对比

CMakeCache.txt

5. 关系型与非关系型数据库对比

两种数据库类型各有侧重,在实际项目中常根据需求互补使用:

  • 数据结构:关系型强调规范化的表结构,适合强一致性场景;NoSQL 更加灵活,适合半结构或无结构数据。
  • 查询语言:关系型使用 SQL,功能强大且标准化;NoSQL 多依赖 API 或自定义查询方式。
  • 扩展方式:关系型通常垂直扩展(提升单机性能);NoSQL 易于水平扩展(增加节点数量)。
  • 事务支持:关系型支持完整事务(ACID);NoSQL 多数仅提供最终一致性。
  • 性能表现:NoSQL 在高并发、低延迟场景下更具优势,尤其适合作为缓存层。

6. 小结

通过对数据库基本概念、发展历程及主流类型的梳理,可以清晰地看到:关系型数据库凭借其成熟稳定的事务机制和强大的查询能力,仍是企业级系统的首选;而 NoSQL 凭借灵活性与高性能,在互联网高并发场景中占据重要地位。合理选择数据库类型,需结合具体业务需求、数据特征与系统架构综合考量。

二、MySQL 5.7 源码编译安装指南

2.1 环境准备

安装必要依赖工具:确保系统已安装 gcc、cmake、make、bison、libncurses5-dev 等编译所需组件。

创建专用运行用户:新增 mysql 用户用于隔离服务权限,保障安全性。

2.2 源码解压与依赖配置

将下载的 MySQL 源码包解压至指定目录,并检查依赖项是否齐全,避免编译失败。

2.3 CMake 编译配置

进入源码根目录:定位到解压后的 MySQL 源码所在路径。

执行 CMake 配置命令(关键参数设置):

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

开始编译与安装:运行 make && make install 完成编译过程。

存储引擎说明:InnoDB 为默认推荐引擎,支持事务、外键与崩溃恢复。

2.4 配置 MySQL

权限设置:调整安装目录归属权至 mysql 用户,防止权限异常。

修改主配置文件 `/etc/my.cnf`:配置数据目录、日志路径、缓冲区大小等核心参数。

2.5 环境变量设置

将 MySQL 的 bin 目录加入系统 PATH,方便全局调用 mysql、mysqldump 等命令。

2.6 数据库初始化

执行 mysql_install_db 脚本完成初始数据库 schema 的生成,包括 mysql 系统库与权限表。

2.7 服务管理

配置 systemd 或 init 脚本实现开机启动与 service 方式启停数据库服务。

2.8 账号密码管理

设置 root 用户密码:首次登录后立即修改默认空密码,增强安全性。

登录 MySQL:使用 mysql -u root -p 命令进入交互式终端。

总结

通过源码方式安装 MySQL 5.7,虽然步骤较复杂,但能更深入理解其内部结构与依赖关系,也为定制化部署提供了可能。整个流程涵盖了环境搭建、编译配置、服务初始化与安全管理等多个环节,是掌握数据库运维技能的重要实践路径。

5. 关系型数据库与非关系型数据库的对比

对比维度 关系型数据库 非关系型数据库
数据结构 采用二维表格形式组织数据 支持多种模型,如键值(KV)、文档、列式存储、图形等
主要优点 结构明确,通用SQL语言,支持复杂的查询操作和事务处理 数据格式灵活,读写速度快,适合高并发场景
存在缺点 表结构固定,扩展性受限,易出现I/O性能瓶颈 缺乏标准SQL支持,事务能力较弱,复杂查询支持不足
典型代表 MySQL、Oracle、PostgreSQL Redis、MongoDB、HBase

缓存系统对比:Redis 与 Memcached

共同点:两者均以内存为运行介质,用于存储热点数据,具备极高的访问速度。

差异点:Redis 支持数据持久化,可将内存中的数据保存到磁盘;而 Memcached 仅为纯内存存储,一旦断电或服务重启,数据将全部丢失。

6. 总结要点

  • 当前主流数据库架构通常结合使用关系型(如 MySQL、Oracle、SQL Server)与非关系型数据库(如 Redis、MongoDB)。
  • 数据库管理系统(DBMS)的核心作用是作为应用程序与数据之间的桥梁,负责接收请求、解析指令、执行操作并返回结果。
  • 选型建议:
    • 若数据结构清晰、关系明确、需支持复杂查询 → 推荐使用关系型数据库;
    • 若面对高并发访问、非结构化数据或大数据分析场景 → 更适合选用非关系型数据库;
    • 实际项目中常采用“SQL + NoSQL”混合模式,例如通过 Redis 做缓存加速,搭配 MySQL 实现数据持久化存储。

二、MySQL 5.7 源码编译安装流程

2.1 环境准备工作

安装必要的依赖工具包:

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

各依赖组件说明:

  • gcc / gcc-c++: C/C++ 编译器,用于源码编译;
  • ncurses / ncurses-devel: 提供字符终端下的用户交互支持;
  • bison: 语法分析生成工具,协助解析SQL语句结构;
  • cmake: 跨平台构建工具,MySQL 编译所依赖。

创建专用于运行 MySQL 服务的系统用户(禁止登录):

useradd -s /sbin/nologin mysql

2.2 源码解压及依赖配置

将 MySQL 源码包解压至目标目录:

tar zxvf mysql-5.7.17.tar.gz -C /opt

同时解压 boost 库至指定路径(MySQL 5.7 编译所需):

tar zxvf boost_1_59_0.tar.gz -C /usr/local/

为方便后续引用,重命名 boost 目录:

mv /usr/local/boost_1_59_0 /usr/local/boost

2.3 使用 CMake 进行编译配置

进入解压后的源码目录:

cd /opt/mysql-5.7.17/

执行 cmake 命令并设置关键参数:

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-SYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
CMakeCache.txt

注意:若 cmake 配置过程中报错,在修复问题后需删除 CMake 生成的缓存文件(如 CMakeCache.txt),然后重新执行配置命令。

关于存储引擎的补充说明:

  • MYISAM、MERGE、MEMORY 和 CSV 引擎默认已静态编入服务器,无需额外启用;
  • 其他引擎(如 INNODB、ARCHIVE 等)若需静态编译,应使用对应选项进行声明。
-DWITH_XXX_STORAGE_ENGINE=1

2.4 开始编译与安装

执行并行编译(推荐使用多核加速):

make -j 4 && make install

2.5 初始化配置与权限设置

设置 MySQL 安装目录的所有权归属:

chown -R mysql:mysql /usr/local/mysql/

确保配置文件权限正确:

chown mysql:mysql /etc/my.cnf
/etc/my.cnf
[client]
port = 3306  # 客户端连接端口(默认 3306)
socket = /usr/local/mysql/mysql.sock  # 客户端 Unix socket 连接文件
default-character-set = utf8  # 客户端默认字符集

[mysqld]
user = mysql  # 以 mysql 用户身份运行服务
basedir = /usr/local/mysql  # MySQL 安装目录
datadir = /usr/local/mysql/data  # 数据库文件存储目录
port = 3306  # 服务监听端口
character-set-server = utf8  # 服务器默认字符集
pid-file = /usr/local/mysql/mysqld.pid  # 进程 ID 存储文件
socket = /usr/local/mysql/mysql.sock  # 服务器端 Unix socket 文件
bind-address = 0.0.0.0  # 允许所有 IP 连接(监听所有网卡)
skip-name-resolve  # 关闭 DNS 解析(用 IP 验证用户,提升连接速度)
max_connections = 2048  # 最大并发连接数(重点)
default-storage-engine = INNODB  # 默认存储引擎
max_allowed_packet = 16M  # 最大允许传输数据包大小
server-id = 1  # MySQL 唯一 ID(用于主从复制)
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES  # SQL 模式(控制语法和数据校验)

[mysql]
port = 3306  # 客户端工具连接端口
default-character-set = utf8  # 客户端工具默认字符集
socket = /usr/local/mysql/mysql.sock  # Unix socket 连接文件
auto-rehash  # 开启命令行自动补全功能

2.6 环境变量配置

为方便全局调用 MySQL 命令,建议将安装路径加入系统环境变量 PATH 中。

将 MySQL 的二进制命令路径加入系统环境变量,确保全局可调用:

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

随后执行以下命令使配置立即生效:

source /etc/profile

2.6 数据库初始化

进入 MySQL 安装目录下的 bin 路径:

cd /usr/local/mysql/bin/

运行初始化命令,具体参数说明如下:

./mysqld \
--initialize-insecure \  # 采用无密码方式初始化,便于后续手动设置
--user=mysql \           # 指定以 mysql 用户运行
--basedir=/usr/local/mysql \  # 设置安装主目录
--datadir=/usr/local/mysql/data  # 指定数据文件存储路径

2.7 服务管理

将 MySQL 提供的 systemd 服务配置文件复制到系统服务目录中:

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

重新加载 systemd 配置,识别新服务文件:

systemctl daemon-reload

启动 MySQL 服务进程:

systemctl start mysqld.service

设置开机自动启动,提升运维便利性:

systemctl enable mysqld

通过查看端口监听状态验证服务是否正常运行(默认为 3306 端口):

netstat -anpt | grep 3306
CMakeCache.txt

2.8 账号与密码管理

首次使用需为 root 用户设置初始密码,可通过 mysqladmin 工具完成:

mysqladmin -u root -p password "123456"

其中密码 “123456” 可根据实际安全策略自定义。

完成密码设置后,使用以下命令登录 MySQL 数据库:

mysql -u root -p123456

该命令表示以用户名 root 和对应密码进行连接认证。

总结

本文围绕“认知数据库”这一核心目标,系统梳理了数据库学习的三大基础维度。首先,厘清了数据、表、数据库以及 DBMS(数据库管理系统)之间的层级关系,特别强调了 DBMS 作为用户与数据库之间交互桥梁的关键作用;其次,回顾了数据库技术的发展脉络,从早期的层次型与网状型结构,演进至主流的关系型数据库,并突出以 MySQL 为代表的二维表模型和 SQL 语言在当前数据管理中的主导地位;最后,通过对关系型与非关系型数据库在数据结构、性能特点及应用场景上的对比分析,提出了“结构化数据优先选用关系型,高并发非结构化场景倾向非关系型”的选型建议,同时指出在实际工程实践中,“SQL 与 NoSQL 混合部署”已成为常见架构策略。上述内容不仅构建了理解数据库的基础知识体系,也为后续深入掌握数据库的安装部署、日常管理与性能优化提供了必要前提。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群