Ответ 1
Многое зависит от вашего продукта. Мы не знаем:
- Как пользователи взаимодействуют друг с другом?
- Должны ли сохраняться их действия (пропуски), или мы в порядке, если они теряют их выше 99,9 процентиля.
- Являются ли их изменения текста на сообщениях, глобально видимыми или только для них.
- Являются ли пользователи проверяющими сообщения по категориям?
Сказали все эти неизвестные, я возьму на него удар:
- Если ответ на вопрос 4 ДА, то вариант № 2 выглядит более суровым, если судить по вашим ПК.
- Если ответ на вопрос 4 НЕТ, тогда вариант №1 выглядит более суровым, если судить по вашим ПК.
Для размера базы данных, я думаю, вы делаете немного предварительной оптимизации. Вы должны учитывать ширину таблицы. Поскольку ваши таблицы очень узкие (всего несколько столбцов и в основном ints), вы не должны слишком беспокоиться о длине конкретной таблицы.
Когда это становится ограничением (которое вы можете тестировать или ждать, чтобы увидеть дисковое пространство на определенных серверах), вы можете масштабировать базы данных, легко накладывая на пользователя. В основном вы размещаете разных пользователей на разных серверах db.
- Примечание. Вопрос 1 определит, насколько легко это было бы.
Сказав все это, помните о последствиях для работы:
- Списки будут очень длинными.
- Если модификация пользователей влияет на других пользователей, вам нужно будет сделать совсем немного работы по отключению, чтобы опубликовать обновления для определенных очередей.
В этом случае вы можете взглянуть на некоторые распределенные кеши, такие как Memcached, Redis.
- Примечание. В зависимости от ответов на вопросы 2 и 3 вам может даже не понадобиться сохранять очереди.