CQRS в среде Rails? - PullRequest
       18

CQRS в среде Rails?

3 голосов
/ 30 июля 2011

Я пытаюсь обернуть голову вокруг CQRS (Разделение ответов на запросы команд), согласно недавнему сообщению Мартина Фаулера по адресу:

http://martinfowler.com/bliki/CQRS.html

Данный проект:

Main Database (Postgres):
  Product has many Sales
  User has many Sales

Reporting Database (NoSQL - Mongodb)
  Transaction (A Product and a Sale and a User)

И требование составления графика транзакций долларов в день за данный месяц.

  • Какие контроллеры мне понадобятся для отчетов?
    • Контроллер отчетов для представлений и частичных данных
    • Контроллер графиков для извлечения конкретной информации для графика из БД отчетов?
  • Какого черта будет DTO (объект передачи данных) в этом случае?
  • Это действительно CQRS?
    • Полагаю, так как отчеты / графики, созданные из отчетной БД, не изменят состояние, а только просмотр основной БД?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Если вы все еще заинтересованы в исследовании CQRS с Rails, взгляните на rcqrs Ruby CQRS с библиотекой Event Sourcing, которую я создал.

Существует также плагин Rails 3 для интеграции с приложением Rails, которое поставляется с генераторами для упрощения общих задач по созданию команд, событий и контроллеров с использованием шаблона CQRS.

Наконец, есть очень простой пример блогового приложения Rails, в котором вы можете посмотреть, как вы можете использовать CQRS с Rails (для получения более подробной информации обратитесь к моей учетной записи GitHub).

2 голосов
/ 30 июля 2011

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

Предлагаю начать чтение с Грега Юонга Информация о cqrs и любых статей о cqrs от Уди Дахана и Мартина Фаулера. И после этого взглянем на существующие реализации cqrs.

С cqrs у вас обычно будет две базы данных: Read и Write. Запись базы данных обычно нормализуется в хранилище. Read database - база данных, которая будет содержать данные в денормализованной форме, чтобы минимизировать количество объединений, необходимых для получения заданного набора данных.

...