This document describes the classes of backends, how they work, and any details about each backend that are relevant to end users.

For more information on a specific backend, check the next backend pages:

Classes of Backends

There are currently three classes of backends that live in ibis.

  1. String generating backends

  2. Expression generating backends

  3. Direct execution backends

String Generating Backends

The first category of backend translates ibis expressions into strings. Generally speaking these backends also need to handle their own execution. They work by translating each node into a string, and passing the generated string to the database through a driver API.

Expression Generating Backends

The second category of backends translates ibis expressions into other expressions. Currently, all expression generating backends generate SQLAlchemy expressions.

Instead of generating strings at each translation step, these backends build up an expression. These backends tend to execute their expressions directly through the driver APIs provided by SQLAlchemy (or one of its transitive dependencies).

Direct Execution Backends

The only existing backend that directly executes ibis expressions is the pandas backend. A full description of the implementation can be found in the module docstring of the pandas backend located in ibis/pandas/execution/