什么是数据库管理系统(DBMS)?RDBMS和NoSQL又是什么?
文章目录
- 一、数据库管理系统(DBMS)的概念
- 二、DBMS的核心功能
- 1. 数据定义(Data Definition)
- 2. 数据操作(Data Manipulation)
- 3. 数据控制(Data Control)
- 4. 数据库运行管理
- 5. 数据组织与存储
- 三、DBMS的结构与工作模式
- 1. 层次结构
- 2. 功能模块
- 四、DBMS的关键技术点
- 五、DBMS的发展历史
- 六、DBMS的常见分类
- 1. 关系型数据库管理系统(RDBMS)
- 2. 非关系型数据库管理系统(NoSQL)
- (1) 文档型数据库
- (2) 键值型数据库
- (3) 列族型数据库
- (4) 图型数据库
- 3. 面向对象数据库管理系统(OODBMS)
- 4. 分布式数据库管理系统(DDBMS)
- 5. 时序数据库管理系统(TSDB)
- 6. 层次型与网状型数据库
- 七、DBMS常见分类总结
- 总结
什么是DBMS?
什么是RDBMS?
什么是NoSQL?
今天我们一起来了解一下关于数据库方面的小知识。
一、数据库管理系统(DBMS)的概念
数据库管理系统(Database Management System, DBMS),简称 数据库,是用于管理和操作数据库的软件系统,是现代信息系统的核心组成部分 。它通过统一的机制实现数据的存储、查询、更新、维护和安全控制,广泛应用于企业、政府、科研、互联网等领域。
二、DBMS的核心功能
DBMS的核心功能可概括为以下几个方面:
1. 数据定义(Data Definition)
- 数据定义语言(DDL):用于创建、修改和删除数据库对象(如表、视图、索引等)。
- 示例操作:
CREATE TABLE employees (id INT, name VARCHAR(20));
ALTER TABLE employees ADD COLUMN age INT;
DROP TABLE employees;
- 作用:定义数据库的逻辑结构(如字段类型、约束条件、主键/外键等),并存储在数据字典中。
- 示例操作:
2. 数据操作(Data Manipulation)
- 数据操作语言(DML):用于对数据库中的数据进行查询、插入、更新和删除。
- 示例操作:
SELECT * FROM employees WHERE age > 30;
INSERT INTO employees (id, name) VALUES (1, 'Alice');
UPDATE employees SET age = 35 WHERE id = 1;
DELETE FROM employees WHERE id = 1;
- 作用:实现对数据的灵活操作,满足业务需求。
- 示例操作:
3. 数据控制(Data Control)
- 数据控制语言(DCL):通过用户角色和权限分配,控制数据的访问和操作。
- 示例操作:
GRANT SELECT ON employees TO user1;
REVOKE DELETE ON employees FROM user1;
- 示例操作:
- 安全性控制:通过加密、认证(如用户名/密码)等技术保护数据安全。
4. 数据库运行管理
- 并发控制:通过锁机制(共享锁、排他锁)和事务管理(ACID特性)确保多用户同时访问时的数据一致性。
- 故障恢复:通过日志记录和备份机制(如全备份、增量备份)实现数据的自动恢复。
- 完整性约束:通过主键、外键、唯一性约束等规则保证数据的逻辑一致性。
5. 数据组织与存储
- 物理存储优化:通过B树、哈希表等数据结构提高存储效率。
- 索引管理:创建索引加速查询速度(如
CREATE INDEX idx_name ON employees(name);
)。 - 缓冲区管理:通过内存缓存减少磁盘I/O操作。
三、DBMS的结构与工作模式
DBMS的结构通常分为层次结构和功能模块两种视角:
1. 层次结构
-
应用层:
- 提供用户接口(如SQL命令行、图形界面)或应用程序接口(API)。
- 处理用户请求(如查询、事务提交)。
-
语言处理层:
- 解析SQL语句(词法分析、语法分析、语义分析)。
- 生成可执行代码(如查询优化器选择最优执行计划)。
-
数据存取层:
- 将逻辑操作转换为物理操作(如将
SELECT
语句转换为磁盘读取操作)。 - 实现并发控制(如锁管理)和事务日志记录。
- 将逻辑操作转换为物理操作(如将
-
数据存储层:
- 管理数据的物理存储(如文件管理器、缓冲区管理器)。
- 负责数据的页面存储、内外存交换等底层操作。
2. 功能模块
- 数据定义模块:处理DDL语句,定义数据库框架。
- 数据操作模块:执行DML语句,完成数据的增删改查。
- 运行管理模块:控制并发访问、事务管理和故障恢复。
- 数据组织与存储模块:管理数据的存储结构(如索引、文件)和存取路径。
四、DBMS的关键技术点
-
数据结构化:
- 数据以表(二维表)、视图等结构化形式存储,支持复杂的数据关系(如实体-关系模型)。
- 通过数据模型(如关系模型、文档模型)描述数据之间的联系。
-
数据共享与独立性:
- 物理独立性:数据的存储方式(如磁盘布局)变化不影响应用程序。
- 逻辑独立性:数据的逻辑结构(如表结构调整)变化不影响应用程序。
-
高可靠性:
- 事务管理:通过ACID特性(原子性、一致性、隔离性、持久性)确保数据操作的可靠性。
- 备份与恢复:支持定期备份和日志恢复,防止数据丢失。
-
高效性:
- 通过查询优化器(如动态执行计划选择)提高查询效率。
- 使用索引、缓存等技术加速数据访问。
-
安全性:
- 提供细粒度的权限控制(如行级/列级权限)。
- 支持数据加密(如SSL传输加密、字段加密)。
五、DBMS的发展历史
-
文件系统阶段(20世纪50-60年代):
- 数据以文件形式存储,缺乏统一管理和共享能力,导致数据冗余和一致性问题。
-
数据库系统阶段(20世纪60年代后):
- 引入层次模型(如IBM的IMS)、网状模型(CODASYL),实现数据的结构化管理。
-
关系型数据库(20世纪70年代):
- E.F. Codd提出关系模型,SQL成为标准化语言,代表系统包括Oracle、MySQL、PostgreSQL等。
-
现代数据库技术(20世纪90年代至今):
- NoSQL数据库:支持非结构化数据(如文档、键值、图数据),解决大规模分布式存储问题。
- NewSQL数据库:结合关系型数据库的ACID特性和NoSQL的水平扩展能力。
- 云数据库:提供托管服务(如AWS RDS、Google Cloud SQL),降低运维成本。
六、DBMS的常见分类
1. 关系型数据库管理系统(RDBMS)
- 数据模型:基于关系模型,数据以二维表的形式存储,表由行(记录)和列(字段)组成。
- 核心特点:
- 结构化数据:数据通过表定义,字段类型和约束严格。
- SQL支持:使用 结构化查询语言(SQL) 进行数据操作和管理。
- 事务管理:支持ACID特性(原子性、一致性、隔离性、持久性),适合复杂业务场景。
- 数据一致性:通过主键、外键和约束条件保证数据完整性。
- 优点:
- 成熟稳定,理论基础扎实。
- 适合需要强一致性和复杂查询的场景(如金融系统、ERP)。
- 缺点:
- 灵活性较低,难以适应非结构化数据。
- 水平扩展能力有限。
- 典型应用:
- 银行账户管理、库存系统、医疗记录。
- 常见系统:
- Oracle、MySQL、PostgreSQL、SQL Server、MariaDB。
2. 非关系型数据库管理系统(NoSQL)
NoSQL数据库不依赖传统关系模型,支持灵活的数据结构,适合大规模数据和高并发场景。主要分为以下子类:
(1) 文档型数据库
- 数据模型:数据以文档形式存储,通常为JSON/BSON格式。
- 特点:
- 灵活的数据结构,允许不同文档字段不一致。
- 支持嵌套数据,减少多表关联需求。
- 优点:
- 适合半结构化和非结构化数据(如日志、社交媒体数据)。
- 高水平扩展性。
- 缺点:
- 缺乏强一致性(通常采用最终一致性)。
- 典型应用:
- 内容管理系统、电商商品信息存储。
- 常见系统:
- MongoDB、Couchbase、CouchDB。
(2) 键值型数据库
- 数据模型:数据以键值对形式存储,键唯一标识值。
- 特点:
- 极高的读写性能,适合简单查询。
- 数据模型简单,易于水平扩展。
- 优点:
- 适用于缓存、会话存储和实时数据处理。
- 缺点:
- 不支持复杂查询和事务。
- 典型应用:
- 缓存系统(如Redis)、购物车状态管理。
- 常见系统:
- Redis、Amazon DynamoDB、RocksDB。
(3) 列族型数据库
- 数据模型:数据按 列族 存储,同一列族内的列存储在一起。
- 特点:
- 高效处理大规模数据分析(如日志、时间序列数据)。
- 支持稀疏数据存储。
- 优点:
- 适合读写密集型场景(如大数据分析)。
- 高压缩率和快速聚合查询。
- 缺点:
- 复杂查询能力有限。
- 典型应用:
- 分布式日志存储、推荐系统。
- 常见系统:
- Apache Cassandra、HBase、Google Bigtable。
(4) 图型数据库
- 数据模型:数据以节点和边表示,节点代表实体,边代表关系。
- 特点:
- 专注于复杂关系查询(如社交网络、路径分析)。
- 直接遍历关系,无需复杂连接操作。
- 优点:
- 高效处理多跳关系查询(如好友推荐、欺诈检测)。
- 缺点:
- 不适合非关系型数据分析。
- 典型应用:
- 社交网络、知识图谱、物流网络优化。
- 常见系统:
- Neo4j、Amazon Neptune、ArangoDB。
3. 面向对象数据库管理系统(OODBMS)
- 数据模型:结合面向对象编程思想,数据以对象和类的形式存储。
- 特点:
- 支持对象的属性和方法直接存储。
- 避免了对象-关系映射(ORM)的复杂性。
- 优点:
- 适合复杂数据结构(如多媒体、地理信息数据)。
- 支持多态性和继承。
- 缺点:
- 标准化程度低,市场接受度有限。
- 典型应用:
- CAD系统、科学计算、工程设计。
- 常见系统:
- Gemfire、ObjectDB、db4o。
4. 分布式数据库管理系统(DDBMS)
- 数据模型:数据分布在多个物理节点,通过网络集成。
- 特点:
- 支持跨地域数据存储和访问。
- 提高可用性和容错性。
- 优点:
- 适合大规模分布式场景(如跨国企业、物联网)。
- 缺点:
- 数据一致性管理复杂(需权衡CAP定理)。
- 典型应用:
- 云计算平台、全球供应链管理。
- 常见系统:
- OceanBase、Google Spanner、TiDB。
5. 时序数据库管理系统(TSDB)
- 数据模型:专为时间序列数据设计(如传感器数据、监控指标)。
- 特点:
- 高效存储和查询时间戳关联的数据。
- 支持高频写入和范围查询。
- 优点:
- 适合物联网、金融交易日志、系统监控。
- 缺点:
- 不适合通用数据存储。
- 典型应用:
- 服务器性能监控、股票市场分析。
- 常见系统:
- InfluxDB、TimescaleDB、OpenTSDB。
6. 层次型与网状型数据库
- 层次型数据库:
- 数据以树形结构存储(如IBM的IMS)。
- 适合父子关系明确的场景(如文件系统)。
- 网状型数据库:
- 数据以图结构存储(如CODASYL的DBTG系统)。
- 支持多对多关系,但复杂度高。
- 现状:
- 已被关系型数据库取代,仅在特定遗留系统中使用。
七、DBMS常见分类总结
类型 | 适用场景 | 典型系统 |
---|---|---|
关系型(RDBMS) | 金融、ERP、医疗 | MySQL、Oracle、PostgreSQL |
NoSQL(文档型) | 电商、内容管理 | MongoDB、Couchbase |
NoSQL(键值型) | 缓存、会话存储 | Redis、DynamoDB |
NoSQL(列族型) | 大数据分析、日志存储 | HBase、Cassandra |
NoSQL(图型) | 社交网络、推荐系统 | Neo4j、Amazon Neptune |
面向对象(OODBMS) | 科学计算、多媒体数据 | Gemfire、ObjectDB、db4o |
分布式(DDBMS) | 云计算、物联网 | OceanBase、Google Spanner、TiDB |
时序型(TSDB) | 物联网、监控系统 | InfluxDB、TimescaleDB |
总结
关系型数据库(RDBMS)市场占有率很高,一般会配合NoSQL数据库一起使用。随着AI的崛起,国内大搞信创上云、软件国产化操作,国产分布式数据库OceanBase、PolarDB、TiDB、GaussDB、TDSQL、达梦等正在高速占有国内市场,大家快学起来吧。