Когда использовать Eventtore - PullRequest
29 голосов
/ 07 февраля 2012

Я не совсем уверен, что понял, что такое Eventtore, я подумал, что это своего рода «Журнал транзакций» для объектов Domain.Каковы преимущества / недостатки этого и каковы хорошие сценарии его использования и когда его не следует использовать?

РЕДАКТИРОВАТЬ:

Поскольку я могу просить слишком много,Я был бы счастлив, если бы существовал «простой» сценарий , когда использовать хранилище событий, а когда нет ?Другими словами: возможно ли описать 2 сценария в нескольких предложениях или мне нужно прочитать 5 книг, чтобы понять это?

Ответы [ 2 ]

51 голосов
/ 09 февраля 2012

Да, источник событий подобен журналу транзакций для объектов вашего домена, а журнал транзакций является официальным источником всех ваших данных.У вас могут быть копии данных в других формах, предназначенных для простого запроса, но это просто копии, которые можно удалить и восстановить в любое время.Журнал транзакций является единственным источником правды.

Я согласен с Крейгом, что сложно ответить на ваш вопрос кратко, потому что он очень зависит от контекста, но вот краткий список причин, по которым вы могли бы рассмотреть возможность использования событияstore:

  • Вы заботитесь о проведении сложного исторического анализа ваших данных.Например, кто-то может прийти к вам в будущем и спросить: «Сколько наших клиентов положили товар в корзину, а затем вынули его, но после того, как мы отправили им купон, вернулись и купили его?»Таких вопросов BI может быть бесконечное количество, и вы не можете заранее предвидеть их все.Если вы фиксируете все события в системе, вы можете восстановить ответ на любой будущий вопрос.
  • Точно так же вы заботитесь об аудите и возможности безошибочно доказать, кто именно изменил какие данные, в какое время и почему.Ваше хранилище событий - это ваш журнал аудита.
  • Вы заботитесь о наличии хорошо масштабируемой системы.Поскольку модель записи в хранилище событий доступна только для добавления, она может хорошо подходить для приложений с большими объемами.Поскольку он не является реляционным по своей природе, его обычно легко разбить на разделы.

С другой стороны, есть несколько веских причин не делать этого:

  • Вы не делаетеУ вас есть какие-либо из перечисленных выше потребностей.
  • Вы не хотите иметь дело с необходимостью создавать инструменты отладки, чтобы иметь возможность легко просматривать и изменять данные в хранилище событий.
  • Вы строите недолговечный проект, который вы не ожидаете долгое время, поэтому вы не хотите вкладывать в него массу архитектурных усилий.
  • Вы не готовыизучать CQRS, DDD и EDA одновременно с источником событий.Эти идеи не требуются строго для источников событий, но они часто переплетаются, и истинная ценность обретается, когда вы полностью меняете свою парадигму и используете их все вместе.Источник событий - это часть пакета техник, которые вместе представляют совершенно другой взгляд на архитектуру программного обеспечения.Это может быть пугающим.
20 голосов
/ 07 февраля 2012

Это много, что нужно спросить в вопросе stackoverflow. В твоем вопросе упущено одно: каковы его недостатки? В любом случае, вместо того, чтобы отвечать здесь, я хотел бы предоставить некоторые ссылки на видео для просмотра. Существует много контекста, который необходимо установить, чтобы ответы на этот вопрос имели смысл.

Грег Янг: Здесь есть ~ 2-х часовое видео здесь , которое дает отличный обзор всего, что вы просите в своем вопросе. Также здесь есть ~ 6-часовой класс здесь .

Уди Дахан: Здесь есть 1-часовое видео здесь , которое дает представление о том, когда использовать эти технологии.

Список рассылки: Здесь есть группа , где вы можете задать все свои вопросы и приятно пообщаться на эту тему.

Надеюсь, это полезно. В вашем вопросе так много загруженного, что я не думаю, что вам или кому-либо еще будет полезно попытаться ответить на него в короткой записке и ввести людей в заблуждение.


Обновление: я не думаю, что вам нужно читать 5 книг или даже просматривать видео ниже. Я думаю, что это стоит вашего времени, но не обязательно. Проблема с вашим вопросом заключается в том, что «простые» сценарии обычно не нуждаются в источнике событий. Большинство приложений будут в основном CRUD и управляемыми данными. Возможно, это ответ на ваш вопрос. Если в вашей системе не так много «поведения», тогда оно вам не нужно. Если у вас много поведения, оно может вам понадобиться.

...