Google App Engine - Как реализовать поток активности в социальной сети - PullRequest
2 голосов
/ 23 апреля 2010

Я хочу поделиться некоторыми идеями о наилучшей практике для реализации потока действий для социальной сети, встроенной в механизм приложений (PYTHON)

Сначала я хочу вести журнал всех действий каждого пользователя, чтобы у нас была история. то есть кто-то стал другом, добавил фотографию, изменил свой адрес и т. д. Таким образом, у нас есть доступная история пользователей, если она нам понадобится. Также означает, что мы можем удалять дружеские объединения, изменять пользовательские данные, но иметь исторический журнал.

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

Довольно просто разработать журнал истории - то есть: когда, что, где. Сложность заключается в том, как мы уведомляем друзей пользователя об их активности.

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

Каков наилучший подход к моделированию этого.

  1. с использованием таблицы соединений "многие ко многим" и выполнение дорогостоящего запроса -
  2. использование класса фида, который отправил копию действия всем подписчикам - может быть, в mcache? Так как их, возможно, нужно запускать тысячи сообщений, я бы подумал, что нужно использовать работу cron.

Любая помощь, идеи, мысли по этому поводу

Thx

Ответы [ 2 ]

4 голосов
/ 23 апреля 2010

Бретт Слаткин выступил с большой речью под названием Создание масштабируемых, сложных приложений на App Engine из прошлогоднего ввода-вывода Google, в котором пример представляет собой приложение в стиле Twitter, где пользовательские обновления проталкиваютсясвоим последователям.В основном именно то, что вы пытаетесь сделать.

Я очень рекомендую видео всем, кто пишет приложение App Engine, оно действительно полезно.

0 голосов
/ 23 апреля 2010
  1. Не делай объединений. Они слишком дорогие, вы быстро прожигаете квоту.
  2. Вы можете использовать очередь задач , это немного похоже на задание cron (т.е. вещи происходят вне исходного запроса), но вы можете запускать их по желанию. memcache было бы хорошо, если бы вы потеряли некоторую активность, когда кэш очищается ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...