Накидайте пожалуйста идей для размышления Есть сущность-событие. У неё есть расписание

для повторения в виде типа крон * * * * *
Мне нужно каким-то образом сделать ссылку на конкретное событие в конкретный момент времени
Для примера
В кинотеатре есть фильм. Он повторяется с пн по пт в 14.00. Мне нужно сделать ссылку на сеанс в ср 14.00
И вот я думаю как это лучше сделать.
Генерировать все возможные события при создании расписания ? Бешеная нагрузка на базу при смене времени расписания, но легко ссылаться на каждый сеанс
Создавать сеанс в момент первого обращения к нему за ссылкой ?
Может ещё есть идеи ?
Спасибо

16 ответов

16 просмотров

Сделай из параметров дата и время составной идентификатор. Тогда твое событие становится псевдо-коллекцией, а по идентификатору дата+время ищешь айтем в этой коллекции (проверяешь ложится ли заданный идентификатор на расписание события)

Dmitry- Автор вопроса
Volodymyr Melko
Сделай из параметров дата и время составной иденти...

Т.е ссылаться чисто по таймстемпу + ид самого события. И потом налету создавать сеанс в момент первого обращения? Правильно вас понял ?

если чисто размыслить о предметной области, то на сеанс могут бронировать билеты, могут покупать онлайн, могут покупать бронь в момент сеанса наликом, т.о. ссылка на сеанс уже должна быть сгенерированна, само расписание редко меняется, остается непонятным почему вдруг " Бешеная нагрузка на базу при смене времени расписания" и почему у тебя события генерируются по крону, а не в каком-то мессаджере

𝔏𝔦𝔩𝔦𝔱𝔥
если чисто размыслить о предметной области, то на ...

Я вот тоже думаю что стоит разделить расписание и генерацию событий. Апдейт пары сотен строк по индексу не должно быть особой проблемой. Да и не факт, что будет апдейт. Можно в событии держать ссылку на расписание и время тянуть оттуда. Но зависит конечно от того как меняется расписание

Dmitry- Автор вопроса
𝔏𝔦𝔩𝔦𝔱𝔥
если чисто размыслить о предметной области, то на ...

событие не генериться по крону, а расписание у него в виде крон строки :) бешеная потому что это событие может повторяться как один день, раз в день, так и каждый час и целый год + изменения возможны у меня около 100к юзеров в этой системе, у каждого по 3-7 таких событий. каждое событие минимум на неделю, раз в день по скромным расчетам это уже 2 млн строк в целом да, предген условных сеансов возможен, только с надеждой на редкие изменения

Dmitry- Автор вопроса
Volodymyr Melko
Я вот тоже думаю что стоит разделить расписание и ...

ну вот я и спрашиваю у канала идей. потому как сгенерить каждый сеанс на год вперед а потом если что сделать removeAll->regenerate при смене расписания технически можно...но как-то пока что мне это не очень идея нравится - выше описал почему

Dmitry
ну вот я и спрашиваю у канала идей. потому как сге...

Все зависит от характера изменений. Если событие было каждый день а стало раз в неделю. Что вы делаете с уже проданными билетами?

Dmitry- Автор вопроса
Volodymyr Melko
Все зависит от характера изменений. Если событие б...

сеанс который уже "начался" (проданы билеты или типа того) нельзя изменить

Dmitry
событие не генериться по крону, а расписание у нег...

Не 2 млн строк 365 дней на 24 часа всего 8760 строк. У тебя же не все юзеров одновременно поменяют все расписания всех своих событий

Dmitry- Автор вопроса
Volodymyr Melko
Не 2 млн строк 365 дней на 24 часа всего 8760 стро...

про 2 млн это я имел ввиду будет в таблице если все юзеры создадут сеансы...а они создадут...такой характер системы

Dmitry
сеанс который уже "начался" (проданы билеты или ти...

Значит менять будут только те, что ещё никому не проданы... Не вижу вообще проблем в решение "в лоб". Удалить пустые сеансы и сгенерить новые

Dmitry- Автор вопроса
Volodymyr Melko
Значит менять будут только те, что ещё никому не п...

что лично меня смущает в этой идее в лоб я описал выше, за мнение спасибо. может еще кто что подскажет интересного

Dmitry
про 2 млн это я имел ввиду будет в таблице если вс...

Да, но менять ты будешь малую долю. У тебя есть индексы, чтоб бд не лопатила всю таблицу. А ещё есть партиции, но для 2 млн строк и партиции не нужны

Dmitry- Автор вопроса
Volodymyr Melko
Да, но менять ты будешь малую долю. У тебя есть ин...

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

Dmitry
да я и это понимаю. технически в лоб сделать не пр...

Лучшее враг хорошего. Зачем заниматься преждевременной оптимизацией? Для бд 2млн строк, как собственно и 10млн и даже 100млн это далеко не проблема. А в этой предметной области основная нагрузка будет на чтение, а не запись, значит довольно легко решается масштабированием реплик для чтения и даже банальным кешированием. Чтоб получить элегантное решение достаточно просто заложить возможность смены этого алгоритма без переписывания всего и вся

Dmitry- Автор вопроса
Volodymyr Melko
Лучшее враг хорошего. Зачем заниматься преждевреме...

скажем так, реплики, масштабирование и бла бла бла уже созданного решения то не проблема ни разу я просто ищу более элегантное решение "календарной системы" (ибо как повторяющиеся событие-расписание-конкретное событие) гуглю, интересуюсь опытом присутствующих

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта