存储桶与对象模型:对象存储的基本概念


文档摘要

存储桶与对象模型:对象存储的基本概念 要使用 Storage,先要理解对象存储(Object Storage)的思维方式,它与传统文件系统、与数据库表都不相同。本节讲清存储桶、对象、路径组织等基本概念。 什么是对象存储 对象存储是一种专门为「海量文件」设计的存储模型。它不关心文件内部的层次结构,而是把每个文件(称为「对象」)连同其元信息,统一存放在扁平的命名空间里。它的特点是: 面向海量数据:适合存储数量极多、体积各异的文件。 通过 HTTP 访问:每个对象都有唯一的访问地址,天然适合 Web 与移动端。 高可用与可扩展:存储层自动冗余、弹性扩展,无需运维。 Supabase Storage 提供的对象存储兼容业界 S3 标准,这意味着你积累的经验可迁移到其他兼容对象存储的场景。

存储桶与对象模型:对象存储的基本概念

要使用 Storage,先要理解对象存储(Object Storage)的思维方式,它与传统文件系统、与数据库表都不相同。本节讲清存储桶、对象、路径组织等基本概念。

什么是对象存储

对象存储是一种专门为「海量文件」设计的存储模型。它不关心文件内部的层次结构,而是把每个文件(称为「对象」)连同其元信息,统一存放在扁平的命名空间里。它的特点是:

  • 面向海量数据:适合存储数量极多、体积各异的文件。
  • 通过 HTTP 访问:每个对象都有唯一的访问地址,天然适合 Web 与移动端。
  • 高可用与可扩展:存储层自动冗余、弹性扩展,无需运维。

Supabase Storage 提供的对象存储兼容业界 S3 标准,这意味着你积累的经验可迁移到其他兼容对象存储的场景。

存储桶(Bucket):文件的顶层容器

存储桶是对象的顶层容器,可类比为「一个大文件夹」或「一个独立的存储空间」。一个项目下可以创建多个存储桶,每个桶有自己的:

  • 名称:全局唯一的标识。
  • 访问级别:公开(public)或私有(private)。
  • 文件大小上限、允许的文件类型等约束。

典型用桶方式:按用途或权限边界划分。例如:

  • 一个公开桶 public-assets:存放头像、封面等任何人可访问的文件。
  • 一个私有桶 user-uploads:存放用户私人文档,需授权才能访问。

公开桶 vs 私有桶

这是桶最重要的属性,决定了访问控制的基本模式:

  • 公开桶:其中的对象可通过固定的公开 URL 直接访问,无需授权。适合真正公开的内容,如网站图片、公开封面。
  • 私有桶:默认任何对象都不能匿名访问,必须通过签名 URL(临时授权链接)才能获取。适合需要权限控制的内容,如用户私人文件、付费内容。

选择原则:默认用私有桶,只在「确实希望任何人都能访问」时才用公开桶。误把私有内容放进公开桶,是常见的安全事故。

对象(Object):被存储的文件

对象是存储的基本单元,对应一个具体的文件(如一张图片)。每个对象包含:

  • 数据:文件本身的二进制内容。
  • 键(key)/ 路径:对象在桶内的标识,通常用类似路径的字符串表示,如 users/uuid/avatar.png
  • 元信息(metadata):内容类型、大小、创建时间、自定义元数据等。

注意:对象存储本质上是扁平的,没有真正的「文件夹」概念。路径中的斜杠只是键名的一部分,所谓的「文件夹」是客户端为了组织方便而模拟出来的视觉层级。

路径组织建议

虽然没有真正的文件夹,但通过合理的路径命名,可以清晰地组织文件并支持按前缀查询。常见模式:

  • 按用户隔离users/{用户id}/avatar.pngusers/{用户id}/documents/...。把用户 id 作为路径前缀,天然与权限模型对应。
  • 按类型或日期images/2026/07/xxx.pnginvoices/2026/xxx.pdf,便于归档与批量处理。
  • 唯一文件名:用 UUID 等作为文件名,避免同名冲突。

把「归属」信息编码进路径,是与第 5 章 RLS 配合、实现「用户只能访问自己文件」的关键(见第 4 节)。

对象元信息与数据库的关系

对象自带的元信息(大小、类型、路径)是基本的,而业务往往需要更多属性(如「这张图片是哪个业务的」「审核状态如何」)。常见做法:

  • 对象本身只存文件内容,路径中编码归属。
  • 业务属性记录在数据库的普通表中(如一张 files 表,含路径、所有者、用途、审核状态等)。
  • 通过数据库表查询、筛选,再用路径去 Storage 取文件。

这样把「文件存储」与「业务元数据」分离,既享受对象存储的扩展性,又拥有关系型数据库的查询能力。

文件大小与类型约束

为防止滥用,桶可配置:

  • 单文件大小上限:如头像不超过 2MB。
  • 允许的 MIME 类型:如只允许图片类型。
  • 总配额:项目级的存储总量与带宽配额。

这些约束是存储安全与成本控制的第一道防线。

小结

对象存储以「桶 + 对象 + 路径」组织文件:桶分公开与私有,对象是文件本身,路径用于组织与归属编码。理解这套模型,下一节我们就能进入文件上传、下载与管理的实操。


发布者: 作者: 灏天文库 转发
评论区 (0)
U