问题域/PD-350

存储抽象层

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)