Мои инстинкты говорят мне создать таблицу для хранения всех этих предметов
Ваши инстинкты правы.
1) избегать преждевременной оптимизации
2) не нарушайте правила нормализации, если у вас нет для этого веской и реальной причины
3) почему вы подозреваете, что многостоловый подход будет быстрее?
это 50 миллионов записей в одной таблице
И что? Даже если у вас есть только индекс для идентификатора пользователя, разница в производительности по сравнению с одной таблицей на пользователя не будет заметно медленнее (на практике с 200 000 пользователей это будет намного, намного быстрее - поскольку СУБД может с удобством держать открытыми дескриптор файла для каждой таблицы!).
Я оцениваю до 100 модификаций в секунду
Должно быть возможно использовать MySQL и довольно простое аппаратное обеспечение, но если бы это был я, и я хотел бы немного сэкономить, я бы выбрал пару зеркальных дисков SATA, таблицы на одном зеркале, индексы на другом.
Единственная проблема, о которой я буду беспокоиться (которая применяется независимо от того, какую из двух моделей вы выберете), - это поддержка 2000 одновременных подключений. Должны ли соединения быть параллельными? Или каждый пользователь может загрузить рабочий набор (возможно, используя оптимистическую стратегию блокировки) и закрыть соединение, а затем отменить изменения в новом соединении? Если нет, то вам, вероятно, понадобится хороший запас памяти и процессора.
Но если оставить в стороне, использовать ли одну большую таблицу или множество маленьких, если это единственное использование для данных, а доступ не параллелен к конкретным элементам данных, тогда зачем вообще беспокоиться о реляционной базе данных? NoSQL или общая файловая система могут работать так же хорошо.