课程地图 文件、缓存与搜索
场景库 术语表
M2 · Chapter 06

文件、缓存与搜索

理解数据库之外,真实系统还需要哪些数据能力。

7 个小节9 个业务案例7 类业务场景设计师视角
先看哪些场景

文件与 Excel、内容与媒体、数据看板、账号与权限、库存与抢购等场景

它是什么

文件存储、缓存和搜索是三类专用数据系统,分别解决大文件保存、高速访问和复杂检索。

为什么需要

图片、PDF、Excel、热点数据和全文搜索无法只靠普通业务表高效完成。

位于哪一层

位于后端周围,与数据库共同组成数据能力层。

和谁连接

对象存储、上传流程、CDN、浏览器缓存、Redis、搜索引擎和数据库。

项目里怎么出现

头像上传、报告下载、页面加速、登录会话和文档搜索都依赖这些能力。

Learning Outcomes

学完这一章,你应该能

  • 理解文件为什么常放在对象存储
  • 看懂文件上传与下载链路
  • 区分 CDN、浏览器缓存和 Redis
  • 理解全文搜索与数据库查询的差异
06.01

文件为什么通常不直接放在数据库?

数据库擅长结构化记录,对象存储擅长保存大量二进制文件。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

文件与 ExcelCASE 01

一份 200MB 合同压缩包应该存在哪里?

用户正在做什么

用户上传合同、图片和 Excel 附件,并在项目详情中查看。

业务会出什么问题

把大文件直接塞进关系型数据库会增加备份、迁移和查询压力。

技术怎样介入

文件存入 Object Storage 的 Bucket,数据库只保存文件名、大小、类型、权限和地址等 Metadata。

产品与设计怎样落地

设计上传、预览、下载、删除、版本和权限时,要区分文件本体与文件记录。

图片、视频、PDF 和 Excel 体积较大,访问方式也和普通表记录不同。对象存储以 Bucket 和 Object 管理文件,提供高容量、低成本和稳定下载。

数据库通常保存文件名称、URL、大小、类型、上传人、业务归属和状态。这样既能查询业务关系,也能让文件系统独立扩展。

File Binary → Object Storage;Metadata → Database
System View

数据库保存

  • 文件 ID
  • 名称与类型
  • URL 与大小
  • 业务归属与权限

对象存储保存

  • 图片二进制
  • PDF/Excel 文件
  • 视频与音频
  • 版本或分片内容
Designer Lens

文件卡片展示的信息来自数据库,真正下载的内容来自对象存储。

Object StorageBucketMetadata
06.02

文件上传的完整过程

上传涉及客户端、后端、存储和数据库多个环节。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

内容与媒体CASE 01

2GB 视频上传到一半断网,为什么可以继续?

用户正在做什么

创作者上传长视频,移动网络中途断开。

业务会出什么问题

普通单次上传需要从头重传,文件越大失败成本越高。

技术怎样介入

客户端通过 Presigned URL 直传对象存储,Multipart Upload 分片上传,Checksum 验证完整性。

产品与设计怎样落地

需要设计分片进度、暂停继续、失败重试、取消和上传后处理状态。

文件与 ExcelCASE 02

Excel 上传成功,为什么还要显示“解析中”?

用户正在做什么

文件本体已经到达对象存储,系统仍需读取、校验和写入数据。

业务会出什么问题

把上传完成和业务处理完成混为一体,会让用户误以为数据已经可用。

技术怎样介入

上传成功后创建异步导入任务,文件状态与解析任务状态分别保存。

产品与设计怎样落地

进度条要区分“上传”和“处理”,失败后提供错误报告与重试。

客户端先选择文件并检查类型与大小。后端可以接收文件后转存,也可以生成 Presigned URL,让客户端直接上传到对象存储。

上传完成后,系统保存文件元信息并与业务对象关联。大文件还要处理分片、断点续传、进度、取消、重试和病毒扫描。

Client → Upload Credential → Object Storage → Callback / Metadata → Database
System View
选择文件
前端校验
获取上传凭证
直传对象存储
保存元信息
业务关联完成
Designer Lens

上传界面需要覆盖选择、校验、传输、处理中、成功、失败、取消和重新上传。

真实项目

用户上传 Excel 后,文件先进入对象存储,后台 Worker 再异步解析,页面显示“上传中—解析中—成功/失败”。

Presigned URLMultipart UploadChecksum
06.03

CDN 如何加速静态资源?

CDN 把内容缓存到更靠近用户的边缘节点。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

内容与媒体CASE 01

海外用户打开商品图片,为什么还能很快?

用户正在做什么

图片源站在东京,欧洲用户浏览包含几十张高清图的详情页。

业务会出什么问题

每次都从源站跨洲下载会增加延迟和带宽压力。

技术怎样介入

CDN 把静态资源缓存到附近 Edge Node,并通过 Cache-Control 决定缓存时长。

产品与设计怎样落地

设计图片尺寸、渐进加载、失败占位和版本更新,避免旧资源长期缓存。

用户请求图片或脚本时,CDN 优先从附近节点返回;没有缓存时再回源到对象存储或服务器。这样可以降低延迟和源站压力。

缓存时间、版本文件名和刷新策略决定内容何时更新。资源地址变化或内容版本化可以避免用户拿到旧文件。

Origin Storage → CDN Edge → Nearby User
System View
源站文件
CDN 分发
边缘缓存
用户请求
快速返回
Designer Lens

图片加载速度、缩略图质量和多尺寸裁切会直接影响内容型产品体验。

CDNEdge NodeCache-Control
06.04

缓存存在于很多层

缓存用临时副本减少重复请求和计算。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

数据看板CASE 01

为什么看板显示的是五分钟前的数据?

用户正在做什么

几千名用户反复查看相同的经营指标。

业务会出什么问题

每次实时计算会压垮数据库,但缓存又可能让页面数据过期。

技术怎样介入

浏览器、CDN、后端和 Redis 都可缓存结果,TTL 决定过期时间,业务变更时需要 Cache Invalidation。

产品与设计怎样落地

显示更新时间、刷新入口和数据时效说明;刷新期间可保留旧数据并标注正在更新。

浏览器可以缓存静态资源,CDN 缓存公共内容,后端内存缓存局部结果,Redis 缓存跨实例共享的数据。不同层的命中范围和失效方式不同。

缓存的难点在更新。数据改变后要删除、覆盖或等待过期,否则用户会看到旧数据。缓存适合高频读取、变化相对可控的内容。

Request → Browser Cache → CDN → Application Cache → Database
System View
浏览器缓存
CDN 缓存
反向代理缓存
应用内存缓存
Redis 分布式缓存
数据库原始数据
Designer Lens

看到“刷新后才更新”或不同端数据不一致时,可以怀疑缓存与同步策略。

常见混淆 · 缓存是否等于数据库?

缓存通常保存可重建的临时副本;数据库承担长期事实数据。

CacheTTLCache Invalidation
06.05

Redis 能做什么?

Redis 是高速内存数据服务,常用于缓存和短期协调。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

账号与权限CASE 01

验证码为什么一分钟只能发一次?

用户正在做什么

用户频繁点击发送验证码,攻击脚本也可能批量调用接口。

业务会出什么问题

短信成本上升,接口可能被滥用。

技术怎样介入

Redis 用 Key-Value 保存手机号的发送次数和 TTL,实现快速 Rate Limit。

产品与设计怎样落地

按钮显示倒计时、剩余次数和恢复时间,限制原因要清楚。

库存与抢购CASE 02

最后一张优惠券被很多人同时领取怎么办?

用户正在做什么

高峰期多个服务器同时处理同一张券的领取请求。

业务会出什么问题

多个请求都可能读取到“剩余 1 张”,造成超发。

技术怎样介入

Redis 可参与原子扣减或 Distributed Lock,保证关键更新按规则执行。

产品与设计怎样落地

页面要处理排队、已抢完、结果确认中和重复领取。

Redis 支持字符串、集合、哈希、队列等结构,常用于热点数据、登录 Session、验证码、计数器、排行榜和限流。

它也可以实现简单分布式锁或消息能力,但要评估持久性、一致性和故障恢复。核心业务事实通常仍保存在数据库。

Backend Instances ↔ Shared Redis → Database
System View
Cache:热点数据
Session:登录状态
Counter:访问次数
Rate Limit:限流
Lock:短期协调
Queue/Stream:轻量消息
Designer Lens

倒计时、在线状态、排行榜和实时计数可能来自 Redis,而非直接查询主数据库。

RedisKey-ValueDistributed Lock
06.06

搜索引擎与数据库查询

全文检索需要分词、相关性和倒排索引等专门能力。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

搜索与检索CASE 01

用户搜索“黑色轻薄通勤电脑”时,为什么不能只查等号?

用户正在做什么

电商用户输入自然语言,希望命中包含相关词、同义词和不同排序的商品。

业务会出什么问题

关系型数据库适合精确过滤,复杂全文匹配和相关性排序能力有限。

技术怎样介入

Search Engine 通过 Inverted Index 快速查找词项,并按 Relevance 排序。

产品与设计怎样落地

需要设计拼写纠错、筛选、排序、无结果推荐和高亮命中词。

数据库擅长精确条件和结构化关系,搜索引擎擅长关键词、模糊匹配、同义词、权重、高亮和聚合。Elasticsearch 等系统会把业务数据建立成搜索索引。

数据库仍是事实来源,索引通常通过同步任务更新。同步存在延迟时,用户可能刚创建内容却暂时搜索不到。

Database Change → Index Sync → Search Engine → Search API → UI
System View

数据库查询

  • 精确条件
  • 关系与事务
  • 事实数据源
  • 结构化筛选

搜索引擎

  • 全文与模糊匹配
  • 相关性排序
  • 高亮与聚合
  • 索引可能延迟
Designer Lens

搜索体验要设计关键词建议、无结果、纠错、筛选、相关性和索引延迟。

Search EngineInverted IndexRelevance
06.07

如何选择正确的数据能力?

先看数据形态、访问方式、一致性和生命周期。

Business Scenario First

先从真实业务问题进入

先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。

数据模型CASE 01

用户头像、账户余额和搜索日志为什么不能都放一种存储?

用户正在做什么

一个 SaaS 同时保存核心账户、图片文件、短期会话和海量搜索行为。

业务会出什么问题

按“工具流行”选择存储会让一致性、成本和查询方式不匹配。

技术怎样介入

账户数据库作为 Source of Truth;头像放对象存储;会话放 Redis;日志进入分析系统。选择依据是 Access Pattern 和 Data Lifecycle。

产品与设计怎样落地

产品方案中标注数据是否关键、是否允许延迟、保留多久、如何查询和删除。

结构化核心业务放关系型数据库,大文件放对象存储,高频临时结果放缓存,全文检索放搜索引擎。日志、指标和向量也可能使用专门存储。

成熟系统经常同时使用多种数据系统。增加一种技术会增加同步、监控、备份和维护成本,选择要由真实需求推动。

Data Shape + Access Pattern + Consistency + Scale → Storage Choice
System View
业务记录 → PostgreSQL
文件 → S3/OSS
热点临时数据 → Redis
全文检索 → Elasticsearch
分析日志 → 数据仓库
语义检索 → 向量数据库
Designer Lens

听到“都放一个地方最简单”时,先判断当前规模;听到“每种都上”时,也要考虑运维成本。

Source of TruthAccess PatternData Lifecycle
Chapter Recap

本章小结

  • 01
    文件二进制通常放对象存储,业务元信息保存在数据库。
  • 02
    CDN、浏览器缓存和 Redis 位于不同加速层。
  • 03
    Redis适合高频临时状态,搜索引擎适合全文检索。
  • 04
    技术选择要基于数据形态、访问模式和一致性要求。
Practice

把认知变成一张图

为“上传并搜索课程资料”画出数据库、对象存储、Redis、搜索引擎各自保存什么。

Quick Check

随堂检查

QUESTION 01
用户上传的 PDF 文件本体最常放在哪里?
大文件通常放对象存储,数据库保存元信息。
QUESTION 02
全文关键词相关性排序更适合哪类系统?
搜索引擎专门处理全文检索和相关性。