если у вас будет нагрузка там, расскажите как решали вопрос оповещения большого количества пользователей конкретно как решили события хранить повторяющиеся и как делать выборку юзеров которых нужно оповестить перед этим событием
дык это понятно, а теперь представьте что у вас 10 млн пользователей у каждого на год вперед минимум по 1 событию в день и оповещать нужно за час и за 15 минут а события повторяющиеся
если вы будете хранить событие одной строкой в таблице типа дата старта и интервал повтора - база умрет под нагрузкой расчета какие события требуют оповещения
нуна денормализация, что тоже приведет к проблемам синхронизации этой самой денормализации
единственное узкое место может быть сама отправка уведомлений, тут придется пакетно отправлять чтобы не возникло так, что первому пришло уведомление вовремя, а последнему из-за очереди спустя пол часа и более
таким образом у вас minute, hour, day, week, month типы, как минимум это уже 5 запросов в базу на 3 млрд записей, это минимум, а то и больше а вы предлагаете запрос без индексов