133 个版本 (49 个重大变更)

0.49.1 2024 年 8 月 19 日
0.48.0 2024 年 7 月 29 日
0.45.1 2024 年 3 月 2 日
0.44.0 2023 年 12 月 31 日
0.3.0 2022 年 3 月 25 日

#12文件系统

Download history 13738/week @ 2024-05-03 14830/week @ 2024-05-10 13844/week @ 2024-05-17 12600/week @ 2024-05-24 11456/week @ 2024-05-31 11777/week @ 2024-06-07 13104/week @ 2024-06-14 12832/week @ 2024-06-21 13100/week @ 2024-06-28 12216/week @ 2024-07-05 12768/week @ 2024-07-12 13429/week @ 2024-07-19 14344/week @ 2024-07-26 13622/week @ 2024-08-02 14104/week @ 2024-08-09 13692/week @ 2024-08-16

每月下载量 58,516
61 Crates 中使用 (39 直接使用)

Apache-2.0

3MB
60K SLoC

Apache OpenDAL™: 自由访问数据

Build Status Latest Version Crate Downloads chat

OpenDAL 提供了一个统一的数据访问层,使用户能够无缝且高效地从各种存储服务中检索数据。

OpenDAL Architectural

服务

OpenDAL 支持以下存储 服务

类型 服务
标准存储协议 ftp http sftp webdav
对象存储服务 azblob cos gcs obs oss s3
b2 openstack_swift upyun vercel_blob
文件存储服务 fs alluxio azdls azfile chainsafe compfs
dbfs gridfs hdfs hdfs_native ipfs webhdfs
消费者云存储服务 aliyun_drive gdrive onedrive dropbox icloud koofr
pcloud seafile yandex_disk
键值存储服务 cacache cloudflare_kv dashmap 内存 etcd
foundationdb persy redis rocksdb sled
redb tikv atomicserver
数据库存储服务 d1 mongodb mysql postgresql sqlite surrealdb
缓存存储服务 ghac memcached mini_moka moka vercel_artifacts
基于 Git 的存储服务 huggingface

Layers

OpenDAL 支持以下存储 layers 来扩展行为

名称 依赖 描述
AsyncBacktraceLayer async-backtrace 为底层服务添加高效的异步函数逻辑 '堆栈' 追踪。
AwaitTreeLayer await-tree 为基于 actor 的应用程序向底层服务添加 await-tree。
BlockingLayer tokio 为非阻塞服务添加阻塞 API 支持。
ChaosLayer rand 为稳健性测试向底层服务注入混乱。
ConcurrentLimitLayer tokio 添加并发请求限制。
DtraceLayer probe 在 Linux 上支持用户静态定义的跟踪(简称 USDT)。
LoggingLayer log 为每个操作添加日志。
MetricsLayer metrics 为每个操作添加度量。
MimeGuessLayer mime_guess 根据操作路径中的文件扩展名自动添加 Content-Type
FastraceLayer fastrace 为每个操作添加 fastrace。
OtelTraceLayer opentelemetry::trace 为每个操作添加 opentelemetry::trace。
PrometheusClientLayer prometheus_client 为每个操作添加 Prometheus 度量。
PrometheusLayer prometheus 为每个操作添加 Prometheus 度量。
RetryLayer backon 为暂时失败的操作添加重试。
ThrottleLayer governor 向底层服务添加带宽速率限制器。
TimeoutLayer tokio 为每个操作添加超时,以避免缓慢或意外的挂起操作。
TracingLayer tracing 为每个操作添加跟踪。

快速入门

use opendal::Result;
use opendal::layers::LoggingLayer;
use opendal::services;
use opendal::Operator;

#[tokio::main]
async fn main() -> Result<()> {
    // Pick a builder and configure it.
    let mut builder = services::S3::default();
    builder.bucket("test");

    // Init an operator
    let op = Operator::new(builder)?
        // Init with logging layer enabled.
        .layer(LoggingLayer::default())
        .finish();

    // Write data
    op.write("hello.txt", "Hello, World!").await?;

    // Read data
    let bs = op.read("hello.txt").await?;

    // Fetch metadata
    let meta = op.stat("hello.txt").await?;
    let mode = meta.mode();
    let length = meta.content_length();

    // Delete
    op.delete("hello.txt").await?;

    Ok(())
}

示例

名称 描述
基本 展示如何使用opendal操作存储服务。
并发上传 展示如何并发上传到存储服务。
分片上传 展示如何对存储服务执行分片上传。

贡献

查看CONTRIBUTING指南以获取有关开始贡献此项目的更多详细信息。

品牌

第一个和最突出的提及必须使用全称:任何个人使用(网页、手册、幻灯片等)都必须使用Apache OpenDAL™的全称。根据上下文和写作风格,您应足够频繁地使用全称,以确保读者清楚地了解OpenDAL项目和OpenDAL软件产品与ASF作为母组织之间的关联。

有关更多详细信息,请参阅Apache产品名称使用指南

许可证和商标

基于Apache License,版本2.0:http://www.apache.org/licenses/LICENSE-2.0

Apache OpenDAL、OpenDAL和Apache是Apache软件基金会的注册商标或商标。

依赖项

~9–61MB
~1M SLoC