Магазин событий
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2015 г. ) |
Хранилище событий — это тип базы данных , оптимизированный для хранения событий.
Концептуально, хранилище событий записывает только события, влияющие на объект , досье или политику , а состояние объекта в любой момент его истории может быть восстановлено путем воспроизведения входящих в него событий в последовательном порядке. События (и соответствующие им данные ) — единственные «реальные» факты, которые должны храниться в базе данных. Все остальные объекты могут быть получены из этих событий, то есть при необходимости они создаются в памяти с помощью кода времени выполнения (например, для отображения в пользовательском интерфейсе ). Теоретически любой объект, который объединяет записанные данные о событиях, не сохраняется в базе данных. Вместо этого эти объекты создаются « на лету », просматривая историю событий. Когда экземпляр агрегированного объекта больше не нужен, его можно просто удалить (освободить из памяти).
Пример со страховыми полисами [ править ]
Например, концепция хранилища событий в базе данных может быть применена к страховым полисам или пенсионным досье. В этих политиках или досье может быть получена реализация каждого объекта, составляющего досье или политику ( человек , партнер (ы), занятость и т. д.), и она может быть создана в памяти на основе событий реального мира.
Двойная временная шкала [ править ]
Важнейшей частью базы данных хранилища событий является то, что каждое событие имеет двойную временную шкалу : это позволяет хранилищам событий исправлять ошибки событий, которые были введены в базу данных хранилища событий ранее.
Две даты:
- Дата действия — это дата, когда событие стало действительным.
- Дата транзакции — это дата внесения события в базу данных.
Исправление ошибок [ править ]
Другая важная часть базы данных хранилища событий заключается в том, что сохраненные события не могут быть изменены. После сохранения ошибочные события больше не изменяются. Единственный способ изменить (или, лучше сказать, исправить) эти события — создать экземпляр нового события с новыми значениями и использовать двойную временную шкалу. Корректирующее событие будет иметь новые значения исходного события с данными этого исправленного события, но другую дату транзакции. Этот механизм обеспечивает воспроизводимость в каждый момент времени, даже в период времени, предшествующий проведению коррекции. Также позволяет воспроизводить ситуации на основе ошибочных событий (при необходимости).
Преимущества и недостатки [ править ]
Одним из преимуществ концепции хранилища событий является то, что обработка последствий событий, датированных задним числом (событий, которые вступают в силу до предыдущих событий и которые могут даже сделать их недействительными), значительно упрощается.
Хранилище событий упростит код, поскольку откат ошибочных ситуаций и накатывание новых, правильных ситуаций больше не нужны.
Недостаток может заключаться в том, что коду необходимо повторно создавать экземпляры всех объектов в памяти на основе событий каждый раз, когда поступает вызов службы для определенного досье или политики.
По сравнению с обычными базами данных [ править ]
В обычных базах данных обработка событий, датированных задним числом, для исправления предыдущих ошибочных событий может быть болезненной, поскольку это часто приводит к откату всех предыдущих ошибочных транзакций и объектов и свертыванию новых, правильных транзакций и объектов. В хранилище событий хранятся только новые события (и соответствующие им факты). Затем код переопределит транзакции и объекты на основе новых фактов в памяти.
См. также [ править ]
- Временная база данных — база данных, в которой хранятся данные, относящиеся к моментам времени (например, прошлому, настоящему и будущему), для определения транзакций, действительности или решений.
Внешние ссылки [ править ]
- Рейтинг магазинов мероприятий по популярности от DB-Engines, обновляемый ежемесячно