对象存储
Object Storage
中级通用对象存储(Object Storage)是一种把图片、视频、文档等内容作为独立对象保存,并通过标识读取的存储方式。它解决了产品需要集中保存大量文件、让多个服务访问这些文件的问题,例如保存用户上传的头像。
你可能会说:「用户上传的图片越来越多,能不能放在一个地方保存,让网站和后台都能读取?」
动手看看上传头像后,资料和评论共用
1
用户上传一张头像,入口把图片和对象标识 avatar-a 一起交给对象存储,后续就靠这个标识找到它。
要点对象存储是怎样保存文件的?
- 1
一个对象包含内容和标识
你上传一张头像,存进去的不只是图片内容,还有用来定位它的标识,通常也能附带内容类型等元数据。应用记录这个标识,之后才知道该读取或删除哪张图。
- 2
应用通过接口读写对象
对象通常放在存储桶里,应用通过服务接口上传、下载或删除它们。这样网站、后台和处理图片的任务可以访问同一份内容,不必依赖某台应用服务器上的本地目录。
- 3
文件内容与业务记录分开
做用户资料页时,我们可以把头像内容放进对象存储,在数据库里保存用户编号和头像标识。因为数据库仍负责查找用户、维护资料关系,所以换头像时两边的更新也要一起考虑。
容易混淆的地方
对象存储能保存文件内容,但它不擅长按用户、订单等业务字段查询和关联数据;这些工作通常交给数据库。它也不同于应用服务器的本地文件夹:对象通过服务接口访问,不能把它当成可随意读写内部字节的普通磁盘文件。
什么时候用
适合用
- 做社交 App 时保存用户上传的头像和动态图片,让网站与后台读取同一份内容。
- 做 AI 工具时保存用户提交的音频和生成的视频,处理任务再按对象标识取回。
- 做管理后台时保存导出的报表文件,数据库只记录导出任务和文件标识。
不适合用
- 要按姓名、状态筛选客户并更新联系方式时,用数据库保存业务记录更合适。
- 只是保存当前设备上的草稿,且不需要跨设备访问时,用本地文件或浏览器存储即可。
- 多个进程需要频繁修改同一份文件中的小片段时,更适合评估支持这类读写方式的文件存储。
练一练选一个答案,看看解释
你在做一个作品展示网站:用户上传原图,页面要展示图片,还要按作者和发布时间筛选作品。图片内容和作品信息怎么存更合适?
让 AI 帮你做复制给 AI Agent 直接用
请为作品上传功能设计对象存储方案:原图作为对象保存,数据库记录作品信息和对象标识。说明上传、读取、删除的流程,以及访问权限如何控制;不要把图片内容直接存进业务记录。