Мое веб-приложение должно ВСЕГДА запрашивать соединения 2-й степени. Каждый пользователь скажет 200 друзей & у этих друзей есть 200 друзей. Я мог бы использовать некоторую помощь в определении правильной базы данных (и структуры таблицы), чтобы быстро сделать это веб-приложение & отзывчивым.Выбор базы данных: часто запрашиваются подключения 2-й степени
Бизнес-логика: Пользователи ищут их 1-й 2-й & соединения степени, чтобы получить список других пользователей, которые используют конкретную услугу (хранится в одном столбце, как неподписанных Int). Это единственная функциональность этого приложения.
Структура таблицы:
- Таблица Пользователь: User_ID (рк), Facebook_ID (ск), имя, Specific-сервис, расположение
- Отношения Таблица: до сих пор не определились.
Вопрос: Я прочитал много сообщений & искал в Интернете «проектирования баз данных социальных сетей». Однако эти приложения сильно отличаются от моих. У меня будет много пользователей (+10 мил), но небольшая база данных & запускает только один запрос, как описано в бизнес-логике.
Дополнительная информация: Пользователи могут зарегистрироваться (&), только используя свою учетную запись на Facebook. Их друзья будут приглашены (через Facebook), чтобы зарегистрироваться. Стол сообщений будет заполнен после регистрации друзей (только активные/неблокированные/незапланированные друзья). Таким образом, я могу избавиться от колонки "friendship status" от Отношения Таблица.
Да конструкция симметрична и нет других вариантов (например, отслеживаемые, Заблокированные контакты и т.д.). Но мой реальный вопрос: будет ли этот проект эффективным, когда я выполню запрос, чтобы найти друзей второй степени? –
Если все кэшировано, тысяча друзей второй степени должны занять до секунды. Даже если он не полностью кэширован, это может занять лишь секунду. –
Не могли бы вы также прокомментировать свой опыт использования базы данных? Я имею в виду, следует ли мне обращаться к базе данных графов или РСУБД? –