Size: a a a

2021 October 27

✨Basic_Instinct✨ in symfony
ну я о том и говорю, что дата старта - это та же дата события, на что ты говоришь что это разные даты
источник

✨Basic_Instinct✨ in symfony
created_at - это когда оно было добавлено пользователем, это не является датой события
источник

D

Dmitry in symfony
разный словарь :)
источник

D

Dmitry in symfony
я бы послушал как автор решит проблему с recurring событиями и оповещениями под нагрузкой..
источник

✨Basic_Instinct✨ in symfony
ты создаешь сегодня 27.10.2021 событие на дату 28.11.2021 и повтор каждые 6 часов
но событие у тебя не на сегодня, а на  28.11.2021
источник

✨Basic_Instinct✨ in symfony
да, возможно ))
источник

D

Dmitry in symfony
если у вас будет нагрузка там, расскажите как решали вопрос оповещения большого количества пользователей
конкретно как решили события хранить повторяющиеся и как делать выборку юзеров которых нужно оповестить перед этим событием
источник

✨Basic_Instinct✨ in symfony
оповещение однозначно в очереди на дату события
источник

D

Dmitry in symfony
вопрос не в самих оповещениях, это мелочи
источник

D

Dmitry in symfony
вопрос в выборке кого оповещать на событие и как эти события в таком случае хранить в целом
источник

✨Basic_Instinct✨ in symfony
я бы в календарь еще добавила инфу об оповещение - не оповещать, за 1 час, за 2 часа  и т.д.
источник

D

Dmitry in symfony
дык это понятно, а теперь представьте что у вас 10 млн пользователей
у каждого на год вперед минимум по 1 событию в день
и оповещать нужно за час и за 15 минут
а события повторяющиеся
источник

D

Dmitry in symfony
если вы будете хранить событие одной строкой в таблице типа дата старта и интервал повтора - база умрет под нагрузкой расчета какие события требуют оповещения

нуна денормализация, что тоже приведет к проблемам синхронизации этой самой денормализации
источник

✨Basic_Instinct✨ in symfony
SELECT ....... FROM repeat WHERE date_start <  NOW() AND date_end  > NOW() AND type = 'day'
какие здесь расчеты?
источник

D

Dmitry in symfony
потому что тип повторения меньше дня может быть
источник

✨Basic_Instinct✨ in symfony
ок, давай AND type = 'hour'
источник

✨Basic_Instinct✨ in symfony
получили все события hour, повтор каждые 6 часов - добавлили в очередь отсроченные уведомления на сегодня каждые 6 часов
источник

✨Basic_Instinct✨ in symfony
единственное узкое место может быть сама отправка уведомлений, тут придется пакетно отправлять чтобы не возникло так, что первому пришло уведомление вовремя, а последнему из-за очереди спустя пол часа и более
источник

D

Dmitry in symfony
а потом minute еще забыли
источник

D

Dmitry in symfony
таким образом у вас minute, hour, day, week, month типы, как минимум
это уже 5 запросов в базу на 3 млрд записей, это минимум, а то и больше
а вы предлагаете запрос без индексов
источник