MongoDB 文档数据库入门实践

导读 你用过 MySQL 吗?MySQL 的数据存在一张一张的表里——每行必须对齐相同的列。MongoDB 换了一种思路:数据以"文档"为单位存储,每个文档是一段类 JSON 的结构,字段可以自由增减。这篇教程不讲深奥的理论,而是手把手带你装好 MongoDB、学会最常用的增删改查操作,最后回答一个实际问题——什么时候该用 MongoDB 而不是 MySQL。 全程使用 mongosh(MongoDB 官方命令行工具),命令逐行带注释,复制粘贴即可运行。 一、文档模型 vs 关系表:先搞懂"长什么样" 在动手之前,先看 MongoDB 数据长什么样,跟 MySQL 的区别是什么。 下图直观对比了两种存储方式: MySQL 的思路像 Excel: 所有行必须有相同的列(id、姓名、年龄、邮箱) 想关联用户和地址?得建两张表再用 JOIN 拼起来 结构固定,加个新字段要改表结构(ALTER TABLE) MongoDB 的思路像一个装满文件夹的柜子: 每个文档是独立的 JSON 块,字段可以完全不同 上面第二个例子中,李四多了个 address 嵌套对象(城市、邮编),张三没有——没问题,各自独立 不需要 JOIN:相关数据直接嵌套在同一个文档里 术语解释:JSON(JavaScript Object Notation)是一种轻量级数据格式,用 {} 包起来的键值对,几乎所有编程语言都能直接读写。 这就是 MongoDB 被称为"文档型数据库“的原因——数据的基本单位叫 Document(文档),不是 Row(行)。 二、安装 MongoDB Community 2.1 Linux(Ubuntu / Debian) 以下步骤适用于 Ubuntu 20.04+、Debian 11+、WSL2。 第 1 步:导入 MongoDB 官方 GPG 密钥 ...

2026-08-26 · 14 min · AIGestalt

MySQL 索引与 SQL 优化实战:让查询从分钟级降到毫秒级

导读 你是否遇到过这种场景:一条 SQL 查出来要好几秒,数据量再大一点直接超时?90% 的性能问题都出在索引没用对。 这篇文章从零开始——先装好 MySQL,然后一步步讲清楚怎么建表、怎么加主键和外键、B+ 树为什么快、怎么读懂 EXPLAIN 的执行计划、怎么用慢查询日志找到拖后腿的 SQL,最后讲到事务和隔离级别。每个命令都带注释,复制粘贴就能跑。 预计阅读时间 15 分钟,配合同步操作约 30 分钟即可掌握全流程。文末附 Linux/macOS 和 Windows(WSL)双平台一键脚本,开箱即用。 一、安装 MySQL(Linux / macOS / WSL) 1.1 Debian / Ubuntu 系 # 更新软件包列表(apt 必须先做这一步,否则会报"找不到软件包") sudo apt update # 安装 MySQL 服务器(默认会装最新版,当前最新稳定版为 8.0.x) sudo apt install -y mysql-server # 启动并设置开机自启 sudo systemctl start mysql sudo systemctl enable mysql # 检查运行状态 sudo systemctl status mysql 国内镜像提示:如果 apt update 很慢,可以替换为清华源。编辑 /etc/apt/sources.list,把 deb http://archive.ubuntu.com/ubuntu 改成 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu。修改后重新 sudo apt update。 ...

2026-08-26 · 16 min · AIGestalt

Redis 缓存实战:穿透、击穿与雪崩

导读 如果你在做 Web 应用或者小程序后端,大概率会听到"加一层缓存"的说法。最常见的选择就是 Redis——一个跑在内存里的"超级字典"。本文先带你看清它的五种数据结构(别被名字吓到,都是日常能理解的),然后重点讲缓存系统最容易踩的三个坑:穿透、击穿、雪崩——为什么会出现、怎么解决。最后还会覆盖持久化(RDB vs AOF)、过期策略与内存淘汰,以及用 Python(redis-py)快速上手。全文面向零基础读者,每个术语出现时都会给一句白话解释。 一、Redis 是什么?为什么快? Redis(REmote DIctionary Server)是一个开源的 key-value 内存数据库。你可以把它理解成一个"超大号的字典"——你告诉它一个关键字(key),它就立刻告诉你对应的值(value)。 # 往 Redis 存一条数据:key = name, value = 笑尘主人 127.0.0.1:6379> SET name "笑尘主人" OK # 取出来 127.0.0.1:6379> GET name "笑尘主人" 为什么比传统数据库快? 对比项 MySQL 等传统数据库 Redis 数据存储位置 硬盘(磁盘 I/O 慢) 内存(速度是硬盘的数万倍) 查询方式 SQL 语句(需要解析和执行计划) 直接 key → value 查找 典型延迟 毫秒级 ~ 几十毫秒 微秒级 ~ 1 毫秒 一句话:Redis 把最常被访问的数据放在内存里,请求来了不用去硬盘翻找,所以极快。 二、五种数据结构,对应不同场景 Redis 不只是简单的 SET/GET,它提供了丰富的数据结构,每种都适合不同的使用场景。 2.1 String(字符串)—— 最基础的类型 String 是最常用的类型,可以存文本、数字,甚至图片的二进制数据。 ...

2026-08-26 · 13 min · AIGestalt