Я пытаюсь создать твиттер-подобную систему подписчиков (пользователи могут подписываться друг на друга). Меня смущает хороший способ хранить отношения с последователями. Я использую 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 таких записей выше, учитывая идентификатор пользователя. Это имеет какой-то смысл в производительности? Я не уверен, что это лучше, чем первый вариант выше. Для этого потребуется больше поездок в хранилище данных.
Любые мысли были бы великолепны,
Спасибо