Retour au classement

apache/opendal

Rustopendal.apache.org

Apache OpenDAL: One Layer, All Storage.

storages3rustazblobgcsredishacktoberfest
Croissance des étoiles
Étoiles
5.2k
Forks
792
Croissance hebdomadaire
Issues
237
2k3k4k5k
janv. 2024nov. 2024sept. 2025juil. 2026
Artefactscrates.iocargo add opendal
README

Apache OpenDAL™: One Layer, All Storage.

GitHub Discussions Discord DeepWiki

Apache OpenDAL™ (/ˈoʊ.pən.dæl/, pronounced "OH-puhn-dal") is an Open Data Access Layer that gives every language a unified way to access object storage, file storage, cloud SaaS, databases, protocols, and key-value services.

Apache OpenDAL™ is guided by its vision of One Layer, All Storage and its core principles: Open Community, Solid Foundation, Fast Access, Object Storage First, and Extensible Architecture. Read the explained vision at OpenDAL Vision.

OpenDAL Architecture

At a Glance

  • Project: Apache OpenDAL™
  • Vision: One Layer, All Storage
  • Core package: Rust crate opendal
  • Main abstraction: Operator
  • Extension points: language bindings, layers, and services
  • Common layers: retry, timeout, logging, tracing, metrics, throttling, and concurrency control
  • Access targets: object storage, file systems, cloud SaaS, databases, protocols, and key-value services

Why OpenDAL

Apache OpenDAL™ turns the vision of One Layer, All Storage into a practical data access layer for applications, libraries, and data systems.

  • Zero-cost core: built in Rust with composable services and layers, so applications only enable the backends and capabilities they use.
  • Production-ready access: add retry, timeout, logging, tracing, metrics, throttling, and concurrency limits through reusable layers.
  • One API, all storage: access object storage, file systems, cloud SaaS, databases, protocols, and key-value services through the same interface.
  • Open and extensible: add new services, layers, and language bindings while keeping the same unified access model.

Choose Your Language

Start with the binding for your application runtime. Each binding provides access to the same OpenDAL service model while following its language ecosystem.

Note: Each binding has its own independent version number, which may differ from the Rust core version. When checking for updates or compatibility, always refer to the specific binding's version rather than the core version.

Rust logo
Rust Core
Package · Docs · Dev Docs
C logo
C Binding
Dev Docs
C++ logo
Cpp Binding
Dev Docs
D logo
D Binding
Dart logo
Dart Binding
.NET logo
Dotnet Binding
Go logo
Go Binding
Package · Docs
Haskell logo
Haskell Binding
Java logo
Java Binding
Package · Docs · Dev Docs
Lua logo
Lua Binding
Node.js logo
Node.js Binding
Package · Dev Docs
OCaml logo
OCaml Binding
PHP logo
PHP Binding
Python logo
Python Binding
Package · Dev Docs
Ruby logo
Ruby Binding
Package · Docs
Swift logo
Swift Binding
Zig logo
Zig Binding

Choose Your Layers

Add layers when your application needs cross-service behavior such as retries, timeouts, observability, or traffic control.

Retry icon
RetryLayer
Retry temporary failures.
Timeout icon
TimeoutLayer
Bound slow or hanging operations.
Logging icon
LoggingLayer
Emit structured operation logs.
Tracing icon
TracingLayer
Trace requests across systems.
Metrics icon
MetricsLayer
Export operation metrics.
Prometheus icon
PrometheusLayer
Expose Prometheus metrics.
OpenTelemetry icon
OtelMetricsLayer
Export OpenTelemetry metrics.
Traffic control icon
Traffic Control
ThrottleLayer · ConcurrentLimitLayer
Content type icon
MimeGuessLayer
Infer Content-Type from paths.
Route icon
RouteLayer
Route operations by path.
Cache icon
FoyerLayer
Add hybrid cache behavior.
Layers icon
All Layers
Explore the full layer list.

Explore all available layers in the layers documentation.

Choose Your Services

Pick the storage services that your application needs. See the full OpenDAL service configuration docs in the services documentation.

Object Storage File Storage
AWS logo s3 Google Cloud logo gcs Azure logo azblob OpenDAL logo fs Apache Hadoop logo hdfs Apache Hadoop logo hdfs-native
Alibaba Cloud logo oss Huawei Cloud logo obs Tencent Cloud logo cos Apache Hadoop logo webhdfs lakeFS logo lakefs IPFS logo ipfs
Volcengine logo tos Backblaze logo b2 OpenStack logo swift IPFS logo ipmfs Azure logo azfile Azure logo azdls
Upyun logo upyun Vercel logo vercel-blob Alluxio logo alluxio Tencent Cloud logo goosefs Databricks logo dbfs
MongoDB logo gridfs MDN Web Docs logo opfs GitHub logo monoiofs
GitHub logo compfs
Cloud SaaS Standard Protocols
Google Drive logo gdrive Dropbox logo dropbox OneDrive logo onedrive HTTP icon http FTP icon ftp WebDAV icon webdav
Aliyun Drive logo aliyun-drive Hugging Face logo hf GitHub logo github SFTP icon sftp
pCloud logo pcloud Koofr logo koofr Seafile logo seafile
Yandex Disk logo yandex-disk
Databases Key-Value & Embedded
SQLite logo sqlite MySQL logo mysql PostgreSQL logo postgresql OpenDAL logo memory Redis logo redis etcd logo etcd
MongoDB logo mongodb SurrealDB logo surrealdb Cloudflare logo d1 RocksDB logo rocksdb Memcached logo memcached cloudflare-kv
TiKV logo tikv FoundationDB logo foundationdb crates.io logo sled
crates.io logo redb crates.io logo persy GitHub logo dashmap
crates.io logo cacache GitHub logo moka GitHub logo mini-moka
GitHub logo foyer GitHub logo ghac vercel-artifacts

Examples

See examples for runnable usage examples.

Documentation

Contribute

OpenDAL is an active open-source project. We are always open to people who want to use it or contribute to it. Here are some ways to go.

Branding

The first and most prominent mentions must use the full form: Apache OpenDAL™ of the name for any individual usage (webpage, handout, slides, etc.) Depending on the context and writing style, you should use the full form of the name sufficiently often to ensure that readers clearly understand the association of both the OpenDAL project and the OpenDAL software product to the ASF as the parent organization.

For more details, see the Apache Product Name Usage Guide.

License and Trademarks

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.

Dépôts similaires
minio/minio

MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

GoGo ModulesGNU Affero General Public License v3.0gostorage
61.4k7.7k
HeyPuter/puter

🌐 The Internet Computer! Free, Open-Source, and Self-Hostable.

TypeScriptnpmGNU Affero General Public License v3.0desktopdesktop-environment
puter.com
42.8k4k
spacedriveapp/spacedrive

Spacedrive is an open source cross-platform file explorer, powered by a virtual distributed filesystem written in Rust.

Rustcrates.ioOtherfile-managerdistributed-systems
spacedrive.com
38.6k1.3k
0voice/interview_internal_reference

2025年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。

PythonPyPInetworkredis
37.2k9.4k
localForage/localForage

💾 Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.

JavaScriptnpmApache License 2.0localforagelocalstorage
localforage.github.io/localForage
25.8k1.3k
typicode/lowdb

Simple and fast JSON database

JavaScriptnpmMIT Licensedatabaselodash
22.6k964
stas00/ml-engineering

Machine Learning Engineering Open Book

PythonPyPICreative Commons Attribution Share Alike 4.0 Internationalpytorchslurm
stasosphere.com/machine-learning/
18.4k1.2k
ceph/ceph

Ceph is a distributed object, block, and file storage platform

C++Otherstoragesoftware-defined-storage
ceph.io
16.8k6.4k
dexie/Dexie.js

A Minimalistic Wrapper for IndexedDB

TypeScriptnpmApache License 2.0javascriptindexeddb
dexie.org
14.5k708
juicedata/juicefs

JuiceFS is a distributed POSIX file system built on top of Redis and S3.

GoGo ModulesApache License 2.0filesystemcloud-native
juicefs.com
14.2k1.3k
thanos-io/thanos

Highly available Prometheus setup with long term storage capabilities. A CNCF Incubating project.

GoGo ModulesApache License 2.0prometheusgoogle-cloud-storage
thanos.io
14.2k2.3k
marcuswestin/store.js

Cross-browser storage for all use cases, used across the web.

JavaScriptnpmMIT Licensejavascriptlocalstorage
14k1.3k