@Lamer1

Как правильно распределить хранение комментариев?

Столкнулся с дилеммой о хранении комментариев к различным объектам БД. Моделирую ситуацию: существуют следующие объекты: игры, посты пользователей, книги, статьи. У каждого из этих объектов существует возможность комментирования. При этом так же есть, например, профиль пользователя, в котором можно посмотреть все его комментарии (ко всем вышеперечисленным объектам). Предполагаю, что в реальных проектах подобные базы могут достигать сумасшедших масштабов, особенно если хранить все комментарии в одной таблице, поэтому возник резонный вопрос: как правильно организовать хранение комментариев в таком случае? Всё хранить в одной таблице, тогда будет удобнее выбирать данные для отображения, но таблица будет расти в 5 раз быстрее или распределить это по таблицам типа: games_comments, books_comments и т.д., а для отображения всех комментариев пользователя просто пробегаться по всем этим таблицам и собирать записи?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 3
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Правильно все однородные данные хранить в одной таблице.
Связи в БД строятся на основании содержимого таблиц, а не на основании их имён.
Иначе потом приходится "бегать по всем этим таблицам и собирать записи".

Так же при проектировании БД следует опираться на требования архитектуры, а не на влажные эротические мечты про "сумасшедшие масштабы". Если когда-нибудь проект достигнет сумасшедших масштабов, то к этому моменту вся архитектура будет переделана не один раз. И проблема комментариев будет решаться в зависимости от реальных проблем с которыми столкнётся проект, а не в соответствии с фантазиями, которые были у кого-то на начальном этапе.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Нужно материализовать ответы. И класть их на быстрое хранилище рядом с кешом типа nginx.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы