Oven logo

Oven

Published

The set of adapter protocols and base functionality that supports integration with dbt-core

dbt logo

Adapters

There are two major adapter types: base and sql.

base

BaseAdapter defines the base functionality an adapter is required to implement in order to function with dbt-core. There are several methods which have default implementations as well as methods that require the concrete adapter to implement them.

sql

SQLAdapter inherits from BaseAdapter, updates default implementations to work with SQL-based platforms, and defines additional required methods to support those defaults.

Components

An adapter is composed of several components.

  • connections
  • dialect
  • relation caching
  • integration with dbt-core

The first two are platform-specific and require significant implementation in a concrete adapter. The last two are largely implemented in dbt-adapters with minor adjustments in a concrete adapter.

Connections

This component is responsible for creating and managing connections to storage and compute.

Files

  • dbt/adapters/{base|sql}/connections.py

Dialect

This component is responsible for translating a request from dbt-core into a specific set of actions on the platform.

Files

  • dbt/adapters/base/column.py
  • dbt/adapters/base/query_headers.py
  • dbt/adapters/base/relation.py
  • dbt/adapters/relation_configs/*
  • dbt/adapters/clients/jinja.py
  • dbt/include/global_project/*

Relation caching

This component is responsible for managing a local cache of relations, relation metadata, and dependencies between relations.

Files

  • dbt/adapters/cache.py

Integration with dbt-core

This component is responsible for managing the interface between dbt-core and a concrete adapter.

Files

  • dbt/adapters/{base|sql}/impl.py
  • dbt/adapters/base/meta.py
  • dbt/adapters/base/plugin.py
  • dbt/adapters/capability.py
  • dbt/adapters/factory.py
  • dbt/adapters/protocol.py
  • dbt/adapters/contracts/*
  • dbt/adapters/events/*
  • dbt/adapters/exceptions/*