跳转至

对象存储

在一些服务中,我们需要保存例如用户上传的图片、音乐、文件等,这种类型的存储特点是文件大小不确定,而且范围很广,从几 MB 到几 GB 甚至上 TB 都有。这种时候则适合使用对象存储来存放资源。

对象存储的特点

对象存储和 KV 存储有一定的相似性,都是任意的 Key 到 Value 的映射。但是和 KV 存储不同的是

  • 对象存储往往可以附加一些元信息,例如文件的修改日期、文件类型等
  • 对象存储针对的 Value 更大,也为此做了优化,KV 存储一般只用于存储 KB 级别的 Value
  • 对象存储可以支持下载指定范围的文件内容
  • 对象存储的一致性更差,用户可能需要等待一段时间才能数据同步

而对象存储和文件系统也有一定相似性和不同,例如

  • 文件系统实际上具有层级结构,在打开文件的时候需要按照目录树一层层地查找文件,涉及多次 IO,而对象存储则直接根据 Key 映射到文件本身,可以做到 O(1) 的 IO 次数
  • 文件系统保存的元信息更多,例如文件权限等等,而对象存储则可以有选择的去除不必要的元信息
  • 在文件系统上,可以针对文件的某一部分进行修改,而对象存储只能够按照一整个对象来进行操作,如果需要修改则需要重新上传一份完整的对象

S3 对象存储接口

S3 是 AWS 提供的对象存储服务,由于被广泛使用,S3 API 也几乎成为了所有对象存储系统的标准接口。


最后更新: 2021-08-31 21:25:08
本页作者: Howard Lau