跳到正文

对象存储

Object Storage

中级通用

对象存储(Object Storage)是一种把图片、视频、文档等内容作为独立对象保存,并通过标识读取的存储方式。它解决了产品需要集中保存大量文件、让多个服务访问这些文件的问题,例如保存用户上传的头像。

你可能会说:「用户上传的图片越来越多,能不能放在一个地方保存,让网站和后台都能读取?」

读之前建议先了解

动手看看

图片及标识头像上传入口上传头像对象存储接收对象个人资料服务评论服务
1

用户上传一张头像,入口把图片和对象标识 avatar-a 一起交给对象存储,后续就靠这个标识找到它。

要点

  1. 1

    一个对象包含内容和标识

    你上传一张头像,存进去的不只是图片内容,还有用来定位它的标识,通常也能附带内容类型等元数据。应用记录这个标识,之后才知道该读取或删除哪张图。

  2. 2

    应用通过接口读写对象

    对象通常放在存储桶里,应用通过服务接口上传、下载或删除它们。这样网站、后台和处理图片的任务可以访问同一份内容,不必依赖某台应用服务器上的本地目录。

  3. 3

    文件内容与业务记录分开

    做用户资料页时,我们可以把头像内容放进对象存储,在数据库里保存用户编号和头像标识。因为数据库仍负责查找用户、维护资料关系,所以换头像时两边的更新也要一起考虑。

容易混淆的地方

对象存储能保存文件内容,但它不擅长按用户、订单等业务字段查询和关联数据;这些工作通常交给数据库。它也不同于应用服务器的本地文件夹:对象通过服务接口访问,不能把它当成可随意读写内部字节的普通磁盘文件。

什么时候用

适合用

  • 做社交 App 时保存用户上传的头像和动态图片,让网站与后台读取同一份内容。
  • 做 AI 工具时保存用户提交的音频和生成的视频,处理任务再按对象标识取回。
  • 做管理后台时保存导出的报表文件,数据库只记录导出任务和文件标识。

不适合用

  • 要按姓名、状态筛选客户并更新联系方式时,用数据库保存业务记录更合适。
  • 只是保存当前设备上的草稿,且不需要跨设备访问时,用本地文件或浏览器存储即可。
  • 多个进程需要频繁修改同一份文件中的小片段时,更适合评估支持这类读写方式的文件存储。

练一练

你在做一个作品展示网站:用户上传原图,页面要展示图片,还要按作者和发布时间筛选作品。图片内容和作品信息怎么存更合适?

让 AI 帮你做

请为作品上传功能设计对象存储方案:原图作为对象保存,数据库记录作品信息和对象标识。说明上传、读取、删除的流程,以及访问权限如何控制;不要把图片内容直接存进业务记录。

接下来学什么