标签

数据存储

03-MongoDB 关联查询:N+1 慢查询、两次查询法与 $lookup
MongoDB关联查询有嵌入、两次查询法与$lookup三条路。N+1是循环逐条查,往返随数据量增长并可能占满连接池;两次查询法应一次IN批量取、id去重分批、先分页主表再关联、空列表短路并用Map拼装。关联数据只展示时两次查询法足够,若参与过滤、排序、分页或关联表更大,需用$lookup下推数据库。使用$lookup要给关联字段建索引,注意$unwind默认INNER JOIN语义,以及相关子查询和$expr索引限制。选型优先级为嵌入、两次查询法、$lookup,并可用profiler发现N+1。
2026-10-21
|
2
|
0
|
0
02-MongoDB 索引与查询性能:复合索引、覆盖查询与执行计划
MongoDB 系列第 2 篇。没有索引时 MongoDB 只能 COLLSCAN 全表扫。复合索引的字段顺序按 ESR 排才有用,覆盖查询能省掉 FETCH,explain 的 executionStats 里 totalDocsExamined 和 nReturned 的比值才说明问题。附索引类型全集、深分页为什么越翻越慢、唯一索引与部分索引的组合用法,以及 TTL 索引的真实行为。
2026-10-20
|
1
|
0
|
0
01-MongoDB 基础:文档模型、CRUD 与聚合管道
文章梳理MongoDB 9.0的文档模型、BSON与_id、嵌入/引用建模、增删改查和聚合管道。核心结论:BSON强类型导致类型不一致时查询可能静默无结果,投产应加validator防脏数据;嵌入适合随父读取且有上限的数据,引用适合无上限、需独立查询或共享的数据;写关注默认w:"majority",insert/update/remove已废弃,应改用新API;聚合中$match应前置以走索引。Spring Boot 4.x配置前缀改为spring.mongodb.*,照旧文会静默连错库。读者可避开类型、建模、写入语义和版本迁移中的常见坑。
2026-10-20
|
8
|
0
|
0
02-MySQL 事务、锁与索引:ACID、隔离级别与索引失效
文章围绕MySQL事务、锁与索引,强调三者相互关联:事务定边界、锁管并发、索引决定锁粒度,并提供双会话可复现实验。核心结论是:ACID由undo log、redo log及锁与MVCC支撑,提交时只保证redo落盘和内存页变更;默认RR靠版本链与ReadView实现一致性读,RC每次快照读重建ReadView;锁分MDL、表级、意向和行级,next-key lock依赖索引,未走索引的UPDATE可能锁全表;死锁会被检测并回滚;索引为B+树,二级索引需回表,联合索引遵循最左前缀。读者可复现实验并排查长事务、锁等待、死锁与索引失效。
2026-10-20
|
2
|
0
|
0
02-Redis 部署与高可用:容器化、主从复制与哨兵
文章聚焦 Redis 容器化部署与高可用:配置和数据目录都要挂载,并显式指定配置文件,改配置后需重启容器;连接失败应按服务、端口、密码、bind、保护模式、防火墙排查,不能随意关闭保护模式。主从复制用 REPLICAOF,SLAVEOF 在 Redis 7.0 已删除;复制异步,读己之写应读主。哨兵负责自动切换,宜奇数至少三个并设置法定人数,注意共享挂载和启动顺序;客户端需接入哨兵才能感知新主。发布订阅不存消息,不能当可靠消息队列。
2026-10-20
|
2
|
0
|
0
01-Redis 核心:数据结构、持久化与内存治理
本文梳理 Redis 核心机制:它是内存键值服务器,提供 String、List、Set、Hash、ZSet 五种基础类型及 Geo、HyperLogLog、Bitmap 三种特殊类型;命令执行单线程,真正瓶颈是内存和网络带宽,生产应避免 KEYS。持久化含 RDB 快照与 AOF 日志,通常两者都开,AOF 的 everysec 是多数场景正解。配置重点为 maxmemory、淘汰策略、认证及网络暴露面。选型还须注意许可变更和安全风险:8.0.x 止于 8.0.6,仍受 CVE-2026-66373 影响,应升级到 8.2.8 以上;SLAVEOF 已删除,GEORADIUS 已废弃。
2026-10-20
|
2
|
0
|
0
阿里云 OSS 接入:Java SDK 上传、下载与权限配置
本文介绍阿里云 OSS 的 Java 接入流程,强调难点在权限与密钥管理,而非写代码。应按地域选择公网或内网 endpoint;创建 RAM 子账号并配置最小权限策略,禁用主账号 AccessKey,密钥走环境变量或配置中心,OSSClient 全局单例复用。上传用流式 putObject,objectKey 不含桶名且不以斜杠开头;桶保持私有,通过预签名 URL 控制临时访问,避免公共读暴露全部对象。403 重点查权限、桶策略、时钟偏差和地域不一致,404 多因 key 写错,也可能伪装权限问题。读者可据此完成安全接入并快速排查常见错误。
2026-10-20
|
1
|
0
|
0
MinIO 自建对象存储:纠删码原理、部署与项目现状
MinIO 是 S3 兼容对象存储,核心是用纠删码把对象拆成数据片和校验片,而非复制多份;按盘数配置 parity,生产至少 EC:3,单机多盘只容错盘,分布式需 4 节点以上。其社区版 2025 年移除完整控制台并停止分发镜像,2026 年仓库归档、Docker Hub 镜像删除,旧拉取命令已失效。现可换 Chainguard MinIO、Silo 或 RustFS;老 tar 可离线回退,但须核对版本校验和、改默认 minioadmin、勿暴露控制台。迁移先切写入,mc mirror 补漏、diff 验空后再切读。
2026-10-20
|
1
|
0
|
0