Как правильно организовать структуру таблиц базы данных для нагруженного сервиса?
1. Инсерт 400 записей за день - это не "нагруженный сервис". Даже чуть-чуть.
2. Каждые 2 секунды с сервера тянутся от 100 до 3000 записей.
Если БД не справляется - кэшируй. Надеюсь, про индексы ты знаешь.Целесообразно ли под каждого пользователя заводить по 4 таблицы?
Нет, не целесообразно.
Разделение таблиц по пользователям и в перспективе по базам данных это и есть шардинг базы под высокие нагрузки (есть еще репликация баз данных), но он увеличивает сложность кода сервера. Пока нагрузки не критические судя по цифрам, можно спроектировать архитектуру под высокую нагрузку и сделать прототип для проверки, а как пойдет рост - реализовать это решение в системе