数据库理论
想象一下,数据库是你的 AI 代理的房屋地基。在这里,我们将分析如何为神经网络设计“记忆存储”,以便你的系统能够快速找到所需的数据,就像一位身处巨大书籍宇宙中的图书管理员。你将学习如何在 SQL 和 NoSQL 之间进行选择(就像为不同的保险箱选择钥匙一样),优化查询(就像为数据铺设高速公路),并确保事务的可靠性——正是这些技能将你从新手转变为工业 AI 系统的架构师。
Ask AI 指南
指南
由于这些主题不会随时间变化,因此最好与你的私人导师 - ChatGPT 一起学习它们。
学习过程应如下:
- 你为 ChatGPT 编写一个系统提示词(模板),在其中描述你的背景、偏好、解释的详细程度等。
- 从列表中复制主题(三击),并要求 ChatGPT 向你解释该主题
- 如果想深入研究,请提出澄清问题
目前,这是学习基础知识最方便的方法。除了概念之外,你还可以在 Gold、Silver、Extra 部分学习其他材料。
- Gold - 在与 ChatGPT 交流之前一定要学习
- Ask AI - 询问每个不熟悉的主题
- Silver - 次要材料
- Extra - 深入主题
Golden
bytebyte db playlist - https://youtube.com/playlist?list=PLCRMIe5FDPsdnSszazqVIQFh99t1ExH19&si=3tVd_dGWxmtQ2pQo
Fireship
Ask AI
数据库的基本概念
- 数据库架构:基本组件和术语(基础)
- 关系型数据库:从规范化到表之间的关系
- 数据库中的键:设计关系和数据完整性
- CRUD 操作:数据处理模式(实践)
SQL 和数据处理
- SQL:日常任务的语法(备忘单)
- SELECT 查询:高级过滤技术
- JOIN 操作:表之间关系的可视化
- 事务:编写原子操作
NoSQL 和现代数据存储方法
-
SQL vs NoSQL:数据模型比较
SQL vs NoSQL:数据模型比较
-
面向文档的数据库:MongoDB 和 JSON 数据处理
-
ACID 属性:数据库中的事务
ACID 属性:数据库中的事务
优化和实践方面
-
数据库中的索引:工作原理和优化
-
ORM:优点和缺点
-
数据库中的关系:一对一、一对多、多对多
-
分页:offset vs cursor-based 方法
分页:offset vs cursor-based 方法
-
键值存储:Redis 和缓存(概述)
-
图数据库:Neo4j 的基础知识(概念)
Silver
我用 Postgres 替换了我的整个技术栈...
Exercises
练习:优化 PostgreSQL 中的慢查询
情况:
我们在 PostgreSQL 中有一个包含 1000 万条记录的 user_actions
表:
CREATE TABLE user_actions (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
action_type VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
metadata JSONB
);
问题: 以下查询执行时间为 2.8 秒:
SELECT * FROM user_actions
WHERE user_id = 123
AND action_type = 'search'
ORDER BY created_at DESC
LIMIT 100;
任务:
- 解释为什么查询变慢
- 通过索引提出解决方案
- 编写 SQL 来创建索引
- 解释你的解决方案的权衡
答案
- 速度慢的原因: 缺少适用于 WHERE 和 ORDER BY 条件的适当索引
- 解决方案: 创建一个覆盖过滤和排序的复合索引
- SQL:
CREATE INDEX idx_user_actions_composite ON user_actions
(user_id, action_type, created_at DESC);
- 权衡:
- 数据库大小增加约 15-20%
- INSERT/UPDATE 操作略有减慢
- 建议使用 CONCURRENTLY 在生产环境中创建:
CREATE INDEX CONCURRENTLY idx_user_actions_composite ...;