作为现代信息系统的核心支撑,数据库在各类应用中扮演着不可或缺的角色。无论是社交平台、外卖服务,还是企业财务管理与业务运营系统,其底层都依赖于数据库实现数据的高效存储、管理和访问。掌握数据库的基本概念、演进历程以及不同类型数据库的特点,是构建数据处理能力的第一步。这不仅有助于理解“数据—表—数据库”之间的层次结构,还能为实际开发中选择合适的技术方案提供理论依据——例如判断应使用 MySQL 这类关系型系统,还是 Redis 等非关系型工具。本文将从基础定义出发,梳理数据库的发展阶段,对比主流类型,并建立完整的知识框架,为后续实践与深入学习奠定坚实基础。
定义:数据是对客观事物的符号化描述(Data),涵盖数字、文本、图像、音频等多种形式。
存储方式:以统一格式按记录进行组织,相同类型的数据集中存放。例如,“学生信息”作为一个独立的数据集合进行管理。
示例说明:在一个班级的学生数据中,每位同学构成一条记录,每条记录包含多个属性字段,如学号、姓名、性别等。
数据库层级结构:MySQL 服务 → 数据库实例 → 数据表 → 行(即记录)+ 列(即字段)。
结构组成:由行(记录)和列(字段)构成,是数据组织的基本单元。
主要特征:记录由若干字段组成;字段内容可为字符或数值;支持多用户并发访问;具备较低的数据冗余度和较高的独立性。
数据库是一组按照特定规则组织并相互关联的数据集合,本质上是多个数据表的集合体,用于集中管理相关信息。
定义:用于操作和控制数据库运行的专用软件系统。
核心功能包括:
工作流程:接收用户请求 → 转换为底层数据库指令 → 执行相应操作 → 获取结果集 → 格式化输出 → 返回给客户端。
组成要素:硬件环境 + 操作系统 + 数据库文件 + DBMS 软件 + 应用程序 + 最终用户。
关键角色 —— DBA(数据库管理员):负责系统的备份与恢复、权限分配、性能调优及用户账户管理。
典型应用软件示例:Navicat 可视化工具、人力资源管理系统、财务核算平台、图书馆借阅系统等。
早期数据库模型以层次结构或网络拓扑为基础,适用于固定路径访问的场景。
代表系统:IBM 于 1969 年推出的 IMS(Information Management System)。
核心理念:所有数据均以二维表格形式存储(行表示记录,列表示字段),利用数学中的集合论与关系代数实现数据的操作(如选择、投影、连接)。该模型直观易懂,便于查询与维护。
里程碑产品:
历史意义:推动了 SQL(结构化查询语言)成为行业标准,后续主流数据库如 MySQL、Oracle、SQL Server 均源于此技术路线。
发展趋势:面向对象设计、跨平台兼容性增强,支持 SQL 与 NoSQL 混合架构,适应多样化应用场景。
新兴代表:MariaDB、PostgreSQL、时序数据库 Prometheus 等。
数据建模方式:采用 E-R 模型(实体-联系模型),其中每一行代表一个实体,每一列对应实体的一个属性,表之间可通过一对一、一对多或多对多的关系进行关联。
唯一标识机制:主键(Primary Key)确保每条记录的唯一性和非空性,类似于身份证号或学号。
常见产品:MySQL、Oracle、SQL Server、DB2、PostgreSQL 等。
名称含义:NoSQL 即 “Not Only SQL”,强调不局限于传统表格结构,支持多种数据格式。
存储形式:包括键值对(Key-Value)、文档型、列式存储、图结构等。
典型代表:Redis、Memcached、MongoDB、HBase。
适用场景:高并发读写、缓存加速、大数据实时分析等。
优势特点:
局限之处:
CMakeCache.txt
两种数据库类型各有侧重,在实际项目中常根据需求互补使用:
通过对数据库基本概念、发展历程及主流类型的梳理,可以清晰地看到:关系型数据库凭借其成熟稳定的事务机制和强大的查询能力,仍是企业级系统的首选;而 NoSQL 凭借灵活性与高性能,在互联网高并发场景中占据重要地位。合理选择数据库类型,需结合具体业务需求、数据特征与系统架构综合考量。
安装必要依赖工具:确保系统已安装 gcc、cmake、make、bison、libncurses5-dev 等编译所需组件。
创建专用运行用户:新增 mysql 用户用于隔离服务权限,保障安全性。
将下载的 MySQL 源码包解压至指定目录,并检查依赖项是否齐全,避免编译失败。
进入源码根目录:定位到解压后的 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 为默认推荐引擎,支持事务、外键与崩溃恢复。
权限设置:调整安装目录归属权至 mysql 用户,防止权限异常。
修改主配置文件 `/etc/my.cnf`:配置数据目录、日志路径、缓冲区大小等核心参数。
将 MySQL 的 bin 目录加入系统 PATH,方便全局调用 mysql、mysqldump 等命令。
执行 mysql_install_db 脚本完成初始数据库 schema 的生成,包括 mysql 系统库与权限表。
配置 systemd 或 init 脚本实现开机启动与 service 方式启停数据库服务。
设置 root 用户密码:首次登录后立即修改默认空密码,增强安全性。
登录 MySQL:使用 mysql -u root -p 命令进入交互式终端。
通过源码方式安装 MySQL 5.7,虽然步骤较复杂,但能更深入理解其内部结构与依赖关系,也为定制化部署提供了可能。整个流程涵盖了环境搭建、编译配置、服务初始化与安全管理等多个环节,是掌握数据库运维技能的重要实践路径。
| 对比维度 | 关系型数据库 | 非关系型数据库 |
|---|---|---|
| 数据结构 | 采用二维表格形式组织数据 | 支持多种模型,如键值(KV)、文档、列式存储、图形等 |
| 主要优点 | 结构明确,通用SQL语言,支持复杂的查询操作和事务处理 | 数据格式灵活,读写速度快,适合高并发场景 |
| 存在缺点 | 表结构固定,扩展性受限,易出现I/O性能瓶颈 | 缺乏标准SQL支持,事务能力较弱,复杂查询支持不足 |
| 典型代表 | MySQL、Oracle、PostgreSQL | Redis、MongoDB、HBase |
共同点:两者均以内存为运行介质,用于存储热点数据,具备极高的访问速度。
差异点:Redis 支持数据持久化,可将内存中的数据保存到磁盘;而 Memcached 仅为纯内存存储,一旦断电或服务重启,数据将全部丢失。
安装必要的依赖工具包:
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
各依赖组件说明:
创建专用于运行 MySQL 服务的系统用户(禁止登录):
useradd -s /sbin/nologin mysql
将 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
进入解压后的源码目录:
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),然后重新执行配置命令。
关于存储引擎的补充说明:
-DWITH_XXX_STORAGE_ENGINE=1
执行并行编译(推荐使用多核加速):
make -j 4 && make install
设置 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 # 开启命令行自动补全功能
为方便全局调用 MySQL 命令,建议将安装路径加入系统环境变量 PATH 中。
将 MySQL 的二进制命令路径加入系统环境变量,确保全局可调用:
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
随后执行以下命令使配置立即生效:
source /etc/profile
进入 MySQL 安装目录下的 bin 路径:
cd /usr/local/mysql/bin/
运行初始化命令,具体参数说明如下:
./mysqld \
--initialize-insecure \ # 采用无密码方式初始化,便于后续手动设置
--user=mysql \ # 指定以 mysql 用户运行
--basedir=/usr/local/mysql \ # 设置安装主目录
--datadir=/usr/local/mysql/data # 指定数据文件存储路径
将 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
首次使用需为 root 用户设置初始密码,可通过 mysqladmin 工具完成:
mysqladmin -u root -p password "123456"
其中密码 “123456” 可根据实际安全策略自定义。
完成密码设置后,使用以下命令登录 MySQL 数据库:
mysql -u root -p123456
该命令表示以用户名 root 和对应密码进行连接认证。
本文围绕“认知数据库”这一核心目标,系统梳理了数据库学习的三大基础维度。首先,厘清了数据、表、数据库以及 DBMS(数据库管理系统)之间的层级关系,特别强调了 DBMS 作为用户与数据库之间交互桥梁的关键作用;其次,回顾了数据库技术的发展脉络,从早期的层次型与网状型结构,演进至主流的关系型数据库,并突出以 MySQL 为代表的二维表模型和 SQL 语言在当前数据管理中的主导地位;最后,通过对关系型与非关系型数据库在数据结构、性能特点及应用场景上的对比分析,提出了“结构化数据优先选用关系型,高并发非结构化场景倾向非关系型”的选型建议,同时指出在实际工程实践中,“SQL 与 NoSQL 混合部署”已成为常见架构策略。上述内容不仅构建了理解数据库的基础知识体系,也为后续深入掌握数据库的安装部署、日常管理与性能优化提供了必要前提。
扫码加好友,拉您进群



收藏
