FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

apache/opendal: Apache OpenDAL: One Layer, All Storage. · GitHub

/ opendal Public

Latest commit

 

History

4,591 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Apache OpenDAL™: One Layer, All Storage.

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.

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 Core
Package · Docs · Dev Docs

C Binding
Dev Docs

Cpp Binding
Dev Docs

D Binding

Dart Binding

Dotnet Binding

Go Binding
Package · Docs

Haskell Binding

Java Binding
Package · Docs · Dev Docs

Lua Binding

Node.js Binding
Package · Dev Docs

OCaml Binding

PHP Binding

Python Binding
Package · Dev Docs

Ruby Binding
Package · Docs

Swift Binding

Zig Binding

Choose Your Layers

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


RetryLayer
Retry temporary failures.

TimeoutLayer
Bound slow or hanging operations.

LoggingLayer
Emit structured operation logs.

TracingLayer
Trace requests across systems.

MetricsLayer
Export operation metrics.

PrometheusLayer
Expose Prometheus metrics.

OtelMetricsLayer
Export OpenTelemetry metrics.

Traffic Control
ThrottleLayer · ConcurrentLimitLayer

MimeGuessLayer
Infer Content-Type from paths.

RouteLayer
Route operations by path.

FoyerLayer
Add hybrid cache behavior.

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
s3 gcs azblob fs hdfs hdfs-native
oss obs cos webhdfs lakefs ipfs
tos b2 swift ipmfs azfile azdls
upyun vercel-blob alluxio goosefs dbfs
gridfs opfs monoiofs
compfs
Cloud SaaS Standard Protocols
gdrive dropbox onedrive http ftp webdav
aliyun-drive hf github sftp
pcloud koofr seafile
yandex-disk
Databases Key-Value & Embedded
sqlite mysql postgresql memory redis etcd
mongodb surrealdb d1 rocksdb memcached cloudflare-kv
tikv foundationdb sled
redb persy dashmap
cacache moka mini-moka
foyer 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.

About

Apache OpenDAL: One Layer, All Storage.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

5.3k stars

Watchers

35 watching

Forks

Releases

Used by

Contributors

Languages


Back | FazBrowse Home | New Git URL