Module opendal::docs::internals

source ·
Available on docs only.
Expand description

The internal implement details of OpenDAL.

OpenDAL has provides unified abstraction via two-level API sets:

  • Public API like Operator provides user level API.
  • Raw API like Accessor, Layer provides developer level API.

OpenDAL tries it’s best to keep the public API stable. But raw APIs may change between minor releases from time to time. So most users should only use the public API. And only developers need to implement with raw API to implement a new service Accessor or their own Layer.

In this section, we will talk about the following components:

  • Accessor: to connect underlying storage services.
  • Layer: middleware/interceptor between storage services.

The relation between Accessor, Layer and Operator looks like the following:

┌─────────────────────────────────────────────────┬──────────┐
│                                                 │          │
│              ┌──────────┐  ┌────────┐           │          │
│              │          │  │        ▼           │          │
│      s3──┐   │          │  │ Tracing Layer      │          │
│          │   │          │  │        │           │          │
│     gcs──┤   │          │  │        ▼           │          │
│          ├──►│ Accessor ├──┘ Metrics Layer ┌───►│ Operator │
│  azblob──┤   │          │           │      │    │          │
│          │   │          │           ▼      │    │          │
│    hdfs──┘   │          │    Logging Layer │    │          │
│              │          │           │      │    │          │
│              └──────────┘           └──────┘    │          │
│                                                 │          │
└─────────────────────────────────────────────────┴──────────┘

Modules§