Welcome to Apache OpenDAL | Apache OpenDAL

OpenDAL represents Open Data Access Layer. Our imaginative and prescient is to entry knowledge freely.
What OpenDAL does?
Getting began
See the web page for fast begin with a number of languages: Quickstart.
Why OpenDAL?
The imaginative and prescient of OpenDAL is entry knowledge freely, the place “free” refers to 4 important features:
1. Free from providers
OpenDAL should allow customers to entry numerous storage providers starting from s3
to dropbox
through its personal native API. It ought to present a unified API for accessing all these providers.
For instance, we DO
whereas we DO NOT
- Add help for Google Cloud Storage(GCS) through XML API: GCS has native JSON API which extra highly effective
- Add help for structural knowledge in
MySQL/PostgreSQL
: We are able to deal with a database as a easy key-value retailer, however we won’t help unified entry of structural knowledge.
2. Free from implementations
OpenDAL must separate the assorted implementation particulars of providers and allows customers to put in writing equivalent logic for various providers.
For instance, we DO
- Add a brand new functionality to point whether or not
presign
is supported: Customers can now write logic based mostly on thecan_presign
possibility. - Add a
default_storage_class
configuration for the S3 service: Configuration is particular to the S3 service. - Add an possibility for
content_type
within thewrite
operation: It aligns with HTTP requirements.
whereas we DO NOT
- Add a brand new possibility in learn for
storage_class
: As totally different providers might have various values for this parameter.
3. Free to combine
OpenDAL must be built-in with totally different methods.
For instance, we DO
- Add Python binding: Python programmers can use OpenDAL.
- Add object_store integration:
object_store
customers can undertake OpenDAL.
4. Free to zero value
OpenDAL must implement options in zero value manner which suggests:
- Customers want to not pay value for unused options.
- Customers can not write higher implementation for used options.
For instance, we DO
- Add
layer
help: Customers can add logging/metrics/tracing in zero value manner. - Implement
search
for Reader: Customers can not write highersearch
help, all of them must pay the identical value.
we DO NOT
- Add
Arc
for metadata: Customers could solely want to make use of metadata as soon as and by no means clone it. For individuals who do need this characteristic, they will addArc
themselves.