本文中讨论的对象存储服务及接口,主要和AWS S3对标。
AWS S3提供的对象存储业务,与传统的POSIX规范相比,舍弃了很多特性,比如:
- 文件类型
- 硬链接
- 软链接
- 目录
- 文件相关的操作
- 追加写
- 随机写
- 截断
- 修改名称
- 目录相关的操作
- 创建目录
- 修改名称
- 删除目录
- 元数据
- 时间
- crtime即创建时间,AWS S3 定义了
Last-Modified
。 - ctime即元数据变更的时间,AWS S3 定义了
Last-Modified
。 - mtime即数据变更的时间,AWS S3 定义了
Last-Modified
。 - atime即最近的访问时间,AWS S3完全不支持。
- crtime即创建时间,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