§ reference

Framework tables

Reference entry point for the framework-managed tables Ekbatan writes or depends on.

Ekbatan applications usually have two kinds of tables:

Use this page as the table map. The individual table pages contain the full DDL for PostgreSQL, MariaDB, and MySQL, plus column-by-column explanations.

TableRequired whenWriterRow representation
eventlog.eventsYou use the default SingleTableJsonEventPersister. This is the normal Ekbatan setup.ActionExecutor through SingleTableJsonEventPersisterEventEntity
eventlog.event_notificationsOptional. Only when you use ekbatan-local-event-handler, either to handle events locally or to publish from a local handler.EventFanoutJob creates rows; EventHandlingJob updates rows.EventNotification
scheduled_tasksOptional. Only when you use ekbatan-distributed-jobs, or any module built on it such as ekbatan-local-event-handler.db-scheduler, through Ekbatan’s JobRegistry facade.No Ekbatan model; db-scheduler owns this table.

On PostgreSQL, eventlog is a schema inside the application database. On MySQL and MariaDB, eventlog is a separate database because those engines treat “schema” and “database” as the same namespace. scheduled_tasks lives in the application database, not under eventlog.

In a sharded application, each physical shard gets its own copy of these tables. FlywayMigrator.migrate(shardingConfig) applies the same migrations to every configured shard.

Do I need each table?

Use caseeventlog.eventseventlog.event_notificationsscheduled_tasks
Default Ekbatan action persistence onlyYesNoNo
Debezium or CDC reading committed eventsYesNoNo
Local event handler fan-out and handlingYesYesYes
Distributed jobs onlyNoNoYes
Custom EventPersister that does not use the default tableDepends on your implementationNo, unless you also use local handlersDepends on whether you use distributed jobs

Table pages

See also