Skip to content

OverviewΒΆ

Epsio's internal architecture is designed to integrate natively with the user's database. There are several critical high level components in Epsio:

  • The CDC Forwarder is built in-house in Rust and has native integration with every supported database. It is responsible for receiving a replication stream from the source database and writing it to an internal buffer in a normalized format, which the Execution Engine will consume.

    Learn More

  • The Execution Engine's main responsibility is to both plan and run Epsio views. It reads from the buffer the forwarder created, and gives the appropriate changes to each internal view. The views share a pool of connections which are used to write back to the user's database. Each view works in micro batches of transactions, and consolidates all changes before sending them back to the user's database to prevent any unnecessary stress.

    Learn More

  • The Commander is responsible for receiving commands from the source database (such as epsio.create_view(..) and epsio.list_views(..)) and responding.
    In Postgres, the commands are published via replication messages with the pg_logical_emit_message function. The commander then writes back responses into a response table, which is read by the client and given back to the user.
    MySQL & MSSQL work similarly in that they write to a commands table which the Commander continuously polls. Once the commander executes a command, it writes the response back to a response table.

Internal Architecture