Реализация Twitter в AppEngine.Как показать старые твиты на временной шкале? - PullRequest
0 голосов
/ 20 августа 2011

Этот вопрос связан с одним старым сообщением «Как бы вы спроектировали хранилище данных AppEngine для такого социального сайта, как Twitter?» (/1105749/kak-by-vy-razrabotali-hranilische-dannyh-appengine-dlya-takogo-sotsialnogo-saita-kak-twitter).

Метод, описанный в «Построении масштабируемых, сложных приложений на App Engine (pdf), предоставленных в Google I / O Бреттом Слаткиным», упоминался в посте выше. Насколько я понимаю, эффективно получать новые твиты от подписчиков, за которыми вы только что следили, но вы не можете эффективно проверять их старые твиты.

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

Оба варианта очень дороги и занимают много времени.

В твиттере и Google+, когда вы добавляете новые подписки, старые твиты всех новых подписчиков будут немедленно отображаться в моей временной шкале / ленте. По крайней мере, есть способ выполнить эту функцию.

Надеюсь, это прояснит мой вопрос. Ответы на этот вопрос могут быть полезны.

Опять же, есть ли лучший способ сделать это?

Edit -

Я нашел сообщение в группе движков приложений, которое значительно улучшит вариант 1. Обход объединений / запросов

Используя оператор IN, я могу запустить 30 совпадений за 30 следующих. Если бы я только добавил 900 подписок, мне нужно 30 партий. но db.get_by_key_name () может запускать больше совпадений без ограничения 30.

Мы можем создавать ежедневные сводные сущности с ключевым именем userid_date и списком идентификаторов твитов и временных отметок. Если я хочу проверить старые твиты с прошлой недели, я составлю список имен пользователей user1_Mon-date, user1_Tues-date, user1_Wen-date .... use1_Sun-date ..., user900_Mon-date, user900_Tues-date, user900_Wen-date .... use900_Sun-дата. Я могу получить 900 * 7 макс. суммирует aync и сортирует твиты по дате, а затем использует другую функцию get sync для получения отсортированного контента твитов.

1 Ответ

0 голосов
/ 25 августа 2011

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

  1. Проверьте, находятся ли данные в memcache, и если да, верните эти данные
  2. Проверьте, есть ли данные в хранилище данных, и если да, то:
  3. Сохранить в memcache
  4. Вернуть эти данные

Вы также должны иметь возможность выполнять некоторую фоновую работу, которая определяет, за какими пользователями больше всего следят, и заполняет memcache своими твитами. Это должно постоянно ускорять отслеживание популярных пользователей, но вы также должны помнить о проблемах согласованности кэша (например, когда пользователь публикует новый твит, сохраните его и в версии memcache).

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