Mysql лента пользователей с большим количеством постов - PullRequest
0 голосов
/ 11 июня 2018

У меня есть три таблицы mysql:

enter image description here

  1. пользователей - содержит данные пользователя
  2. сообщений - содержит данные записей
  3. post_user - содержит информацию о том, к какому сообщению должен иметь доступ каждый пользователь (для целей чтения)

Мне действительно нужна сводная таблица, поскольку существует много логики, которая решает, может ли пользователь читать / не читатьсообщение.

Существуют некоторые проблемы с этим решением:

  1. Первая проблема заключается в том, что у меня 200k + активных пользователей, поэтому каждый раз, когда создается новое сообщение, 200k строк вставляются всводная таблица (post_user)
  2. Вторая проблема заключается в получении сообщений для каждого пользователя.это немного медленно, поэтому я попытался использовать Redis для хранения результата запроса для каждого пользователя, поэтому мне не нужно извлекать результат из этой огромной таблицы.
  3. Размер БД растет очень быстро: /

1 Ответ

0 голосов
/ 12 июня 2018

Добавление 200K строк для каждого post - Yikes!Это само по себе является признаком плохого дизайна.

Звучит так, как идентификаторы "иерархических деревьев" могут функционировать как "роли" или "группа".

Независимо от того, как это называется,реализация одинакова: две таблицы отношений:

  • user <-> группа (например, в какой части дерева находится пользователь)
  • group <-> post (котораягруппа (группы) может прочитать конкретный пост)

И то, и другое много: много, и должны быть реализованы с использованием рекомендаций здесь для повышения производительности.Обратите внимание, что id (для таблицы сопоставления) бесполезен и может снизить производительность.

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