返回标签

#数据库

7 篇文章,按发布时间排列。

全栈基础

4.0 数据库是什么

日常交流中,“数据库”常常混指三件事: 应用通常不直接修改磁盘上的数据库文件,而是向 DBMS 发出命令。DBMS 负责查找、修改、并发控制、权限、持久化和故障恢复。

全栈基础

4.1 SQL 与关系模型

关系模型把数据表示为一组关系(relation)。在工程中,关系通常表现为表: enrollments 表表达“用户参加课程”这段关系。它让用户和课程可以各自独立存在,又能建立多对多联系。

全栈基础

4.2 表、主键、外键与数据建模

一张表不是某个页面的字段集合。页面会改版,数据模型应该表达相对稳定的业务事实。 好的模型不仅能保存当前页面需要展示的内容,还应尽量阻止不可能或无效的状态。

全栈基础

4.3 索引为什么能加速查询

假设 orders 表有一亿行: 如果没有可用索引,数据库可能只能从头到尾检查数据页,这叫顺序扫描(sequential scan)或全表扫描。复杂度直觉接近 O(n):数据翻倍,需要检查的内容也大致翻倍。

全栈基础

4.4 事务、并发与隔离级别

如果第一步成功后服务崩溃,钱就凭空少了。事务让这两步组成一个整体: 若中途发现错误,可以 ROLLBACK。不过还要检查第一条更新实际影响了一行,否则余额不足时也可能继续给对方加钱。

全栈基础

4.5 Redis、缓存与数据一致性

Redis 把常用数据放在内存中,并通过网络提供一组针对数据结构的原子操作。它的价值不只是 key - value,还在于服务端理解值的结构: 例如排行榜不必每次把所有分数取回应用排序:

全栈基础

4.6 NoSQL 什么时候有价值

NoSQL 更接近“Not Only SQL”:它泛指不以传统关系模型作为唯一核心的数据系统。这个标签下面的产品差异极大: 因此,真正有意义的问题不是“SQL 还是 NoSQL”,而是: