【数据库系统Trip 第1站】总概
数据库系统。
这是一个非常核心的计算机科学概念,几乎所有的现代软件系统都离不开它。
一、核心概念:什么是数据库系统?
数据库系统 不是一个单一的软件,而是一个完整的生态系统,它由以下四个主要部分组成:
- 数据库: 存储数据的“仓库”。它是一个有组织、可共享、通常被集中管理的大量数据的集合。数据库不仅仅是存储数据,更重要的是它以某种数据模型(如表格)来组织数据,减少冗余。
- 数据库管理系统: 这是数据库系统的核心和大脑。它是一个软件平台,用于创建、使用和维护数据库。用户和应用程序通过DBMS来访问数据库,而不直接操作数据文件。常见的DBMS有:MySQL, Oracle, SQL Server, PostgreSQL, MongoDB 等。
- 应用程序: 使用数据库的软件,例如网站、手机App、桌面程序等。应用程序通过DBMS提供的接口(如SQL)与数据库进行交互。
- 用户: 包括最终用户、应用程序员和数据库管理员(DBA)。数据库管理员是至关重要的角色,负责维护、备份、优化和确保数据库的安全。
简单比喻:
如果把数据库系统比作一个图书馆:
- 数据库 就是存放图书的书库。
- DBMS 就是图书馆的管理规则和工作人员,他们负责图书的采购、编目、上架、借阅和归还。
- 应用程序 就是前来借书或查阅的读者。
- 用户 包括读者(最终用户)、写书的人(应用程序员)和图书馆馆长(DBA)。
二、为什么需要数据库系统?—— 对比文件系统
在数据库系统出现之前,数据通常存储在简单的文件里(如txt、csv)。这种方式存在很多问题:
特性 | 文件系统 | 数据库系统 | 优势 |
---|---|---|---|
数据冗余与一致性 | 数据重复存储,容易不一致 | 数据集中管理,冗余可控,一致性高 | 节省空间,数据准确 |
数据共享 | 困难,文件通常被单个程序独占 | 容易,支持多用户并发访问 | 提升协作效率 |
数据独立性 | 程序与数据结构紧密耦合,一变俱变 | 数据逻辑结构与应用程序分离 | 易于维护和扩展 |
数据完整性 | 需在程序中硬编码规则,难以维护 | 提供约束(如主键、外键)来保证 | 数据更可靠、有效 |
安全性 | 难以精细控制 | 提供用户权限管理,控制到表和列 | 数据更安全 |
并发控制 | 容易产生冲突(如数据覆盖) | 提供事务机制,保证并发操作正确性 | 支持高并发访问 |
故障恢复 | 困难,容易丢失数据 | 提供日志和备份恢复机制 | 数据持久性高 |
三、数据库系统的核心组件与功能(DBMS的角度)
-
数据模型: 定义数据如何组织和操作的框架。
- 关系模型: 目前最主流的形式,使用二维表(行和列)来组织数据。SQL语言就是基于此模型。
- 非关系模型: 包括文档型(如MongoDB)、键值型(如Redis)、图数据库(如Neo4j)等,用于处理特定类型的海量数据。
-
查询语言:
- SQL: 结构化查询语言,是操作关系型数据库的标准语言。用于定义、操纵和控制数据。
- DDL: 数据定义语言(如
CREATE
,ALTER
,DROP
) - DML: 数据操纵语言(如
SELECT
,INSERT
,UPDATE
,DELETE
) - DCL: 数据控制语言(如
GRANT
,REVOKE
)
- DDL: 数据定义语言(如
- SQL: 结构化查询语言,是操作关系型数据库的标准语言。用于定义、操纵和控制数据。
-
事务管理:
- 事务: 一组不可分割的数据库操作序列(例如银行转账:A账户扣款和B账户加款必须同时成功或失败)。
- ACID 特性:
- 原子性: 事务的所有操作要么全部完成,要么全部不完成。
- 一致性: 事务必须使数据库从一个一致性状态变换到另一个一致性状态。
- 隔离性: 并发执行的事务之间互不干扰。
- 持久性: 事务一旦提交,其对数据的改变就是永久性的。
-
存储管理与索引:
- DBMS负责在磁盘上高效地存储数据文件。
- 索引: 类似于书籍的目录,它能极大地加快数据查询的速度。
四、主要类型
-
关系型数据库:
- 特点: 基于表格模型,使用SQL语言,严格遵守ACID特性。
- 适用场景: 需要复杂查询、强一致性的事务处理系统(如银行、财务、ERP系统)。
- 代表: MySQL, Oracle, SQL Server, PostgreSQL, SQLite。
-
非关系型数据库:
- 特点: 为特定需求设计,结构灵活,通常牺牲一些ACID特性来追求高性能、高可用性和可扩展性(横向扩展)。
- 分类与场景:
- 文档型: 存储JSON-like文档,适用于Web应用(如MongoDB)。
- 键值型: 简单高效,适用于缓存、会话存储(如Redis)。
- 列存储: 适合大规模数据分析(如Cassandra, HBase)。
- 图数据库: 存储实体之间的关系,适用于社交网络、推荐系统(如Neo4j)。
- 代表: MongoDB, Redis, Cassandra, Elasticsearch, Neo4j。
五、总结
数据库系统是现代信息社会的基石。它通过数据库管理系统 这个核心软件,为我们提供了高效、安全、可靠、共享的数据管理能力,解决了文件系统存储数据的诸多弊端。
- 如果你需要强一致性和复杂的查询,首选关系型数据库。
- 如果你需要巨大的规模、灵活的结构和极高的吞吐量,非关系型数据库是更好的选择。
如今,许多大型系统会采用混合架构,同时使用多种类型的数据库,让它们各司其职,发挥各自最大的优势。