Event Sourcing

Event Sourcing — это шаблон для хранения данных в виде событий в журнале. Вместе с событием (что важно) сохраняется также его контекст, где имеются все важные данные. Если при CRUD подходе мы бы обновили в БД запись, в которой хранятся данные сущности, то при реализации Event Sourcing мы просто добавляем новую строку в журнал. При получении текущего состояния сущности мы должны с помощью кода воспроизвести по имеющимся событиям текущие значения данных сущности. Модели ( View Models или Query Models), которые делают такое воспроизведение называют Проекциями.

Читать далее

Command and Query Responsibility Segregation

Command and Query Responsibility Segregation (сокращенно – CQRS) – паттерн разделения ответственности в коде (обрабатывающем обращения к серверу) на команды и запросы получения данных. Основан на принципе программирования Command-query Separation (CQS) , который сформулирован Бертандом Майером, создателем языка Eiffel.

Читать далее

Materialized View

Materialized View (материализованное представление) – это объект базы данных (таблица) , содержащий результаты запроса . Такие представления дают возможность ускорить в разы выполнение запросов, обращающихся к большому количеству данных. Добиваются этого за счет использования заранее вычисленных итоговых данных и результатов объединений таблиц. Такие данные как правило имеют очень относительно небольшой объем по сравнению с исходными данными.

Читать далее

Архитектра MVC

MVC – это вариант Многоуровневой архитектуры (Layered Architecture), архитектурный паттерн и парадигма, которая делит приложение на 3 основных слоя.

  • Модель (Model). Этот слой управляет всеми данными, логикой и бизнес правилами не зависимо от представления данных. Это сердце и душа MVC приложения. Слово “Модель” иногда вносит путаницу. В архитектуре MVC слой модели – это не одно и то же что модель Laravel.
  • Вид (View). Предоставляет различные представления слоя модели. Предоставляет способ вызывать изменения в состоянии модели.
  • Контроллер (Controller). Организует взаимодействие между слоями. Выполняет действия над моделью для обновления ее состояния. Отправляет сообщения в слой Вид (View) для изменения конкретного представления модели.
Читать далее

GraphQL

На смену web-приложенями, которые генерировали шаблоны на сервере и отправляли в браузер готовый html, а также базировались на концепции MVC пришли frontend фреймворки и отвоевали уже довольно крупную часть рынка. Чтобы получать данные с сервера они использовуют REST API. При активном использовании последнего начали отчетливее вырисовываться его ограничения.

GraphQL – это новый язык запросов для API, разработанный в Facebook. Является более эффективной, мощной и гибкой альтернативой REST. Но по сути это только спецификация (синтаксис), которая может иметь массу реализаций.

Читать далее