Хороший способ реализации твиттер-подобной системы подписчиков? - PullRequest
1 голос
/ 19 апреля 2010

Я пытаюсь создать твиттер-подобную систему подписчиков (пользователи могут подписываться друг на друга). Меня смущает хороший способ хранить отношения с последователями. Я использую JDO (в Google App Engine).

Первое, что приходит на ум, - это сохранить Набор для последователей и список людей, за которыми вы следуете. Что-то вроде:

class User {

   private String mUsername;

   private Set<String> mFollowers;

   private Set<String> mFollowees;
}

Я беспокоюсь о том, что произойдет, когда в этих наборах будет более 10 000 записей. Просмотр страницы пользователя будет обычной операцией, и я бы не хотел загружать все наборы каждый раз, когда моему API нужно генерировать информацию о пользователе. В любом случае, я покажу только 50 подписчиков, так что нет смысла загружать весь сет.

Альтернативой может быть использование промежуточного класса для хранения отношений, так что они не связаны с объектом User. Пейджинг также должен быть легким (я думаю). Например, всякий раз, когда я хочу следовать за пользователем, я создаю экземпляр этого объекта:

class RelationshipInfo {

    private String mMyUsername;

    private String mUsernameYouAreFollowing;
}

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

Любые мысли были бы великолепны,

Спасибо

1 Ответ

5 голосов
/ 19 апреля 2010

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

Также вы можете попробовать Jaiku , приложение с открытым исходным кодом, похожее на Twitter, созданное на App Engine.

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