Skip to content

Event Store

Pau F. Grau edited this page Jan 9, 2021 · 3 revisions

Event Store

The Event Store is the authoritative data source. All events are stored using an append-only operation.

We use a MySQL database for store all events

CREATE TABLE IF NOT EXISTS `event_store` (
  `id` char(36) COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `aggregate_id` varchar(255) COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `version` mediumint(8) UNSIGNED NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `payload` json NOT NULL,
  `priority` tinyint(1) NOT NULL,
  `is_publishable` tinyint(1) NOT NULL,
  `occurred_on` datetime(6) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `event_store_name_idx` (`name`),
  KEY `event_store_name_aggregate_idx` (`aggregate_id`,`name`),
  KEY `event_store_name_occurred_idx` (`name`,`occurred_on`),
  KEY `event_store_occurred_idx` (`occurred_on`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

We use a Doctrine DBAL Store.

Clone this wiki locally