对象存储服务中对象业务的非标接口

本文中讨论的对象存储服务及接口,主要和AWS S3对标。
AWS S3提供的对象存储业务,与传统的POSIX规范相比,舍弃了很多特性,比如:

  • 文件类型
    • 硬链接
    • 软链接
    • 目录
  • 文件相关的操作
    • 追加写
    • 随机写
    • 截断
    • 修改名称
  • 目录相关的操作
    • 创建目录
    • 修改名称
    • 删除目录
  • 元数据
    • 时间
      • crtime即创建时间,AWS S3 定义了Last-Modified
      • ctime即元数据变更的时间,AWS S3 定义了Last-Modified
      • mtime即数据变更的时间,AWS S3 定义了Last-Modified
      • atime即最近的访问时间,AWS S3完全不支持。
    • xattr
    • UGO
    • ACL

AWS S3 定义了对象的元数据,但不支持修改,使用时稍显不方便。

各对象存储的服务提供商,从支撑客户业务诉求的角度出发,除对标AWS S3提供了必要的对象业务接口,同时提供了一些扩展类的接口,方便传统的IT应用快速从文件存储切换至对象存储,照顾存量IT应用的使用习惯。

实现非标接口时,需要考虑对象特性的兼容性,比如:

  • 普通对象
  • 多段对象
  • ETag的计算策略
  • WORM
  • 加密存储
  • 多版本
  • 生命周期
  • 分级
  • 元数据
  • 并发操作下的一致性
  • 并发操作下的事务

其它方面可参见基于文件语义实现S3接口语义的注意事项

阿里云OSS

文档主页见对象存储 OSS

涉及的对象操作,如下:

华为云OBS

文档主页见对象存储服务 OBS

涉及的对象操作,如下:

火山引擎

文档主页见对象存储TOS

涉及的对象操作,如下:

腾讯云

文档主页见对象存储 COS

涉及的对象操作,如下:

ECS

文档主页见ECS Data Access Guide 3.5.0.2

涉及的对象操作,如下:

  • Updating a byte range within an object
  • Overwriting part of an object
  • Appending data to an object
  • Reading multiple byte ranges within an object

参考资料