Как спроектировать систему событий в Rails 3.1 - PullRequest
1 голос
/ 31 октября 2011

Я строю что-то вроде стены Facebook внутри Rails.Это будет выглядеть примерно так:

  • Стейси С. Хочет быть друзьями
  • Вы были приглашены на Летний Социальный
  • Пэт ответил наВаше сообщение: Привет !!!
  • В Американском обществе домашних животных появилась новая запись: «Любите свою кошку!»

Есть два способа сделать это.Я мог сделать так, чтобы каждое из этих различных событий записывалось в базу данных событий при их создании, или я мог извлекать данные из таблиц связей, приглашений, входящих сообщений и сообщений и создавать события на лету.

Я склоняюсь кподход базы данных событий, потому что кажется более чистым просто вызывать эту одну таблицу, чем все другие таблицы, а затем сортировать их правильно.Это как ты это сделаешь?

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

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

Другой подход, на который вам следует обратить внимание, - это использовать Chronologic: https://github.com/gowalla/chronologic. Это может сэкономить вам немало усилий.

1 голос
/ 31 октября 2011

Конечно, это избавит вас от множества сложных запросов и сортировки. Перейти на подход таблицы событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...