第 7 卷
数据库提供结构化查询语言(SQL)或专用查询接口(如MongoDB的聚合查询),支持复杂条件查询、排序、分组、统计等操作,且通过索引优化查询性能,可快速从海量数据中定位目标数据。
- 实现数据共享与并发访问
文件存储难以支持多用户同时访问(如多个用户同时修改同一文件,容易导致数据错乱),且无法实现不同应用程序共享数据。
数据库支持多用户、多应用程序并发访问,通过锁机制(如行锁、表锁)避免并发冲突,同时提供数据共享接口,让多个应用程序可安全地访问同一数据库中的数据(如电商系统的订单模块和支付
模块共享用户订单数据)。
- 提升数据安全性
文件存储的安全防护能力弱,数据容易被篡改、删除或泄露(仅能依赖文件系统的权限控制)。
数据库提供完善的安全机制:
- 身份认证:用户需输入账号密码才能访问数据库;
- 权限控制:可细粒度控制用户权限(如某用户仅能查询数据,不能修改数据);
- 数据备份与恢复:支持自动备份数据,可在数据丢失或损坏时快速恢复;
- 数据加密:对敏感数据(如密码、手机号)进行加密存储,防止泄露。
- 便于数据管理与维护
文件存储中,数据的新增、修改、删除需要手动操作文件,难以管理;数据备份、日志记录等维护工作繁琐。
数据库管理系统(DBMS)提供可视化管理工具(如MySQL的Navicat、MongoDB的Compass)
和命令行工具,支持数据批量操作、自动备份、日志监控等功能,降低数据管理和维护的成本。
十、常见的数据库有哪些?什么是关系型数据库和非关系型数据库? 它们有什么区
别?
- 常见的数据库
数据库按数据模型可分为关系型数据库和非关系型数据库,常见类型及代表如下:
- 关系型数据库(RDBMS)
代表:MySQL(开源,应用最广泛)、Oracle(商业,高性能,适用于大型企业)、SQL Server (微软,适用于Windows环境)、PostgreSQL(开源,支持复杂数据类型和SQL标准)、SQLite
(嵌入式,适用于轻量级应用,如移动端APP)。
- 键值型:Redis(内存数据库,适用于缓存、会话存储、实时统计);
- 列族型:HBase(适用于海量数据存储,如大数据分析场景);
- 图数据库:Neo4j(适用于关系网络分析,如社交网络、推荐系统)。
- 关系型数据库和非关系型数据库的定义
- 关系型数据库(Relational Database)
基于关系模型(由二维表组成,表中的行是记录,列是字段)的数据库,数据之间通过主键、外键建立关联关系。核心特征:
- 数据结构化:以表为单位存储数据,表结构固定(需提前定义字段名、数据类型、约束);
- 支持SQL:通过结构化查询语言(SQL)进行数据操作;
- 遵循ACID事务:保证数据的原子性、一致性、隔离性、持久性;
- 数据完整性:通过主键、外键、唯一性约束等保证数据有效。
- 非关系型数据库(Non-Relational Database,简称NoSQL)
不依赖关系模型的数据库,数据存储格式灵活(如文档、键值对、列族、图),核心特征:
- 数据非结构化/半结构化:无需提前定义数据结构,可动态添加字段(如MongoDB的文档可包含
不同字段);
- 不依赖SQL:部分支持类SQL查询(如MongoDB的MongoSQL),但无统一查询标准;
- 事务支持灵活:多数NoSQL数据库不支持完整ACID事务(如Redis仅支持简单事务,MongoDB
4.0+支持多文档事务),更强调最终一致性;
- 高并发、高可扩展性:专为海量数据和高并发访问设计,支持分布式部署。
- 关系型数据库和非关系型数据库的核心区别
| 对比维度 | 关系型数据库 | 非关系型数据库 |
|---|---|---|
| 数据模型 | 二维表结构,数据间有明确关 | 文档、键值对、列族、图等, |
| 联 | 数据间关联弱 | |
| 数据结构 | 固定(需提前定义表结构) | 灵活(动态添加字段,无需预 |
定义)
查询语言支持标准SQL,查询功能强大无统一标准,各数据库有专用查询接口(部分支持类SQL)
事务支持支持完整ACID事务,数据一多数不支持完整ACID,支持致性强最终一致性或部分事务(如
Redis简单事务)
| 数据完整性 | 通过主键、外键、约束等保证 | 依赖应用程序逻辑保证数据完 |
|---|---|---|
| 数据完整性 | 整性,数据库层面约束弱 | |
| 适用场景 | 数据关系复杂、需要强一致性 | 海量数据存储、高并发访问、 |
| 的场景(如电商订单、金融交 | 数据结构不固定的场景(如缓 | |
| 易、用户管理) | 存、日志、社交网络、大数据 |
分析)
- 总结
关系型数据库适合数据结构固定、关系复杂、需要强一致性的场景,核心优势是数据完整性和事务支持;非关系型数据库适合数据量大、并发高、数据结构灵活的场景,核心优势是高可扩展性和高并发
性能。实际开发中,两者常结合使用(如用MySQL存储核心业务数据,Redis做缓存提升访问速度, MongoDB存储日志数据)。
十一、MySQL的存储引擎有哪些?InnoDB与MyISAM的区别是什么?
- MySQL常见的存储引擎
存储引擎是MySQL处理数据的核心组件,负责数据的存储、索引构建、事务管理等底层操作,MySQL 支持多种存储引擎,可通过 SHOW ENGINES; 命令查看支持的引擎及状态。常见存储引擎如下:
- InnoDB:MySQL 5.5及以上版本的默认存储引擎,支持事务、行级锁、外键约束,适用于需要强
一致性的业务场景(如电商订单、金融交易)。
- MyISAM:早期MySQL的默认存储引擎,不支持事务和外键,采用表级锁,查询性能优异,适用于
只读或读写较少的场景(如静态网站数据、日志存储)。
- Memory:数据存储在内存中,读写速度极快,但重启MySQL后数据丢失,适用于临时数据存储、
缓存场景(如临时统计结果)。
- Archive:专为归档设计,支持高压缩比,仅支持插入和查询操作,适用于海量历史数据归档(如
多年前的用户日志)。
- CSV:数据以CSV文件格式存储,可直接用文本编辑器查看,适用于数据导入导出场景(如与其他
系统数据交互)。
- InnoDB与MyISAM的核心区别
对比维度InnoDBMyISAM
全站分卷索引 · 12 卷
- 1第 1 卷
- 2第 2 卷
- 四、Node.js中的非阻塞I/O(Non-blocking I/O)模型
- • 阻塞I/O:主线程发起I/O操作后,暂停执行所有代码,直到I/O操作完成(如传统的PHP文件读
- • 非阻塞I/O:主线程发起I/O操作后,立即返回一个状态(未完成),并继续执行后续代码;I/O操作
- • exports:是 module.exports 的一个引用(快捷方式),默认是一个空对象 {},只能通
- • module.exports:是模块的真正导出对象,Node.js最终导出的是 module.exports 的
- ◦ 若为相对路径( ./、 ../)或绝对路径,直接按路径查找对应
- ◦ 若为第三方模块(如 express),会在当前目录的 node_modules 文件夹中查找,若找不
- 3第 3 卷
- 4第 4 卷
- 5第 5 卷
- 6第 6 卷
- 7第 7 卷
- 8第 8 卷
- 9第 9 卷
- 10第 10 卷
- 11第 11 卷
- 12第 12 卷