存储抽象层
Storage Abstraction Layer
统一文件读写接口,支持本地和云存储透明切换
子问题
1.读写接口统一
2.多存储后端适配
3.编码安全处理
4.多桶S3支持
5.S3客户端懒加载与连接池管理
6.Dummy/空操作后端用于测试与Dry-run
7.S3 Range Read部分读取支持
各项目的解法1 solutions
Signals
横向对比
| 维度 | MinerU |
|---|---|
| 抽象层级 | 双层抽象:IO层(boto3封装) + Data层(业务语义) |
| 后端种类 | 4种:本地文件、单桶S3、多桶S3、Dummy空操作 |
| 路径策略 | parent_dir前缀拼接 + S3 URI自动解析 + Range参数 |
| 客户端管理 | Mixin懒加载客户端池,按桶名缓存boto3 client |
| 配置校验 | Pydantic BaseModel + Mixin三重Fail-fast校验 |
| 编码安全 | write_string模板方法UTF-8→ASCII降级,errors=replace |
最佳实践
1.通过ABC抽象基类定义DataReader/DataWriter统一接口
2.Mixin模式复用多桶配置校验与客户端池逻辑
3.write_string模板方法在基类实现编码降级
4.Pydantic模型校验S3配置完整性(min_length=1)
5.IO层统一配置boto3重试策略(max_attempts=5)