1. 定义
对象存储是一种 以“对象(Object)”为基本单位 的存储架构。
- 对象 = 数据本体(文件内容) + 元数据(描述信息) + 唯一标识(Key/ID)。
- 数据以扁平化的方式存放,不依赖文件目录层级。
- 通过 HTTP/HTTPS API(REST/SDK)访问,而不是文件路径或块地址。
2. 为什么叫“对象存储”
- 存储单位是“对象”,而不是“文件”或“块”。
- 每个对象自带完整的元数据,类似面向对象编程中的“自描述对象”。
- 关注的是数据整体,而不是底层细节。
类比:
- 块存储:给你一堆纸页(block),你要自己装订成书。
- 文件存储:给你书架和目录(路径)。
- 对象存储:给你快递包裹(object),只看条码就能取。
3. 与块存储、文件存储的区别
| 特性 | 块存储 | 文件存储 | 对象存储 |
|---|---|---|---|
| 存储单元 | Block(块) | File(文件) | Object(对象) |
| 命名方式 | 块号(ID) | 路径 | Key/ID |
| 组织方式 | 文件系统组织块 | 目录树组织文件 | 扁平命名空间 + 元数据 |
| 访问方式 | 块地址 | 文件路径 | API(HTTP/HTTPS) |
| 扩展性 | 小到中等 | 中等 | 极强(EB 级) |
| 典型场景 | 数据库、虚拟机磁盘 | 文件共享、协作 | 图片、视频、AI 数据、归档 |
4. 解决的问题
对象存储的核心价值:
- 可扩展性:突破文件系统在 PB/EB 级别的瓶颈。
- 低成本:基于分布式架构和通用硬件。
- 高可靠性:多副本、跨区域冗余,避免数据丢失。
- 易访问:通过 URL/API 直接获取,云原生应用友好。
- 元数据灵活:支持权限、标签、生命周期管理。
5. 发展历史
-
1990s–2000s(研究/企业归档阶段)
- 学术探索:Coda FS、OceanStore、Pond 等。
- 企业产品:EMC Centera(2002)、Hitachi HCP、Caringo CAStor(2005)。
- 主要用于归档,价格高、门槛高。
-
2006(里程碑)
-
Amazon S3 推出:
- 首次将对象存储以“云服务”形式大规模普及。
- REST API 成为事实标准。
- 按需付费,低门槛,面向开发者。
-
-
2010s(云计算普及)
- Google Cloud Storage、Azure Blob Storage、阿里云 OSS 等纷纷推出。
- OpenStack Swift、Ceph、MinIO 等开源对象存储出现。
-
2020s(云原生 & AI 时代)
- 与 CDN、Serverless、边缘计算结合。
- AI 训练数据、模型文件主要依赖对象存储。
- Cloudflare R2 等产品挑战 S3,强调多云兼容和低成本。
6. 与数据库的关系
-
历史上:数据库(BLOB)曾用于存储非结构化数据,但扩展性差。
-
技术上:对象存储类似 Key-Value 数据库(Key = ID,Value = 数据+元数据)。
-
应用上:常与数据库配合使用:
- 数据库存元信息(用户、标签、权限)。
- 对象存储存大文件(图片、视频、模型)。
-
趋势:对象存储具备越来越多数据库能力(如 AWS S3 Select 支持 SQL 查询)。
7. 存储在哪里
-
物理层面:最终还是落在 HDD/SSD 上。
-
逻辑层面:由分布式系统自动分片、副本、冗余,用户只看到“桶(Bucket)+Key”。
-
部署方式:
- 公有云(AWS S3、Cloudflare R2、阿里云 OSS)。
- 私有云/机房(Ceph、MinIO)。
- 混合云/边缘节点。
8. 总结一句话
对象存储的本质: 👉 在分布式集群上,用“对象”这种扁平化、自描述的方式来管理海量非结构化数据,并通过 API 提供可靠、可扩展、低成本的云原生存储服务。