Apache OpenDAL 简介
Apache OpenDAL 是一个以软件库形式提供的数据访问层。它允许用户通过统一的 API 简单且高效地访问不同存储服务上的数据。你可以把它当作是一个更好的 S3 SDK 实现,也可以通过统一的 OpenDAL API 来简化配置访问不同的数据存储服务的工作(例如 S3 / HDFS / GCS / AliyunOSS 等)。
OpenDAL 以库形式提供,因此使用 OpenDAL 无需部署额外的服务。OpenDAL 的核心代码用 Rust 写成,因此它原生的是一个 Rust 软件库。在项目孵化和成长的过程中,社群也开发出了 Java / Python / Node.js / C 等语言的绑定,以支持在其他语言程序中方便地集成 OpenDAL 的能力。
下图列举了 Apache OpenDAL 多语言实现的线上用户:
real-users
OpenDAL 核心的统一 API 设计,其使用方式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| async fn do_business() -> Result<()> { let mut builder = services::S3::default(); builder.bucket("test");
let op = Operator::new(builder)? .layer(LoggingLayer::default()) .finish();
op.write("hello.txt", "Hello, World!").await?; let bytes = op.read("hello.txt").await?; let meta = op.stat("hello.txt").await?; op.delete("hello.txt").await?;
Ok(()) }
|
可以看到,实际读写数据的 API 是经过精心设计的。用户想要访问存储在不同服务上的数据,只需修改 Operator 的配置构造,所有实际读写操作的代码都不用改动。