Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > таймер для элементов таблицы


Автор: repmovs 29.7.2017, 16:25
Помогите разобраться, есть объекты хранящиеся в бд, нужна функция срока годности, т.е. через определенное время после создания элемента он становится недействительным, поле locked_at содержит время когда он был признан недействительным.
Вопрос в том, когда будет разумнее проводить эту проверку, кода получаем этот элемент из бд по запросу пользователя или проходится по базе и проверять всех подряд? точность нужна до минуты.

Автор: Akina 29.7.2017, 20:12
Цитата(repmovs @  29.7.2017,  17:25 Найти цитируемый пост)
когда будет разумнее проводить эту проверку, кода получаем этот элемент из бд по запросу пользователя или проходится по базе и проверять всех подряд?

И тогда, и тогда.

Цитата(repmovs @  29.7.2017,  17:25 Найти цитируемый пост)
точность нужна до минуты. 

СУБД нам предлагается угадать?

Автор: repmovs 30.7.2017, 18:54
Цитата(Akina @  29.7.2017,  20:12 Найти цитируемый пост)
СУБД нам предлагается угадать?

да, это сайт на yii2, без понятия какая бд будет на хостинге

не знаю насколько это разумно но решил сделать так:
- интерфейс т.е. view показывает значение оставшегося времени пользуясь тем значением которое было ему передано при загрузке, при отрицательном значении - удаляет элемент из списка
- модель при загрузке элементов из бд, проверяет их на просроченность и регистрирует этот факт в бд, просроченные элементы не передаются интерфейсу.

буду рад услышать коментарии )

Автор: Akina 30.7.2017, 20:45
Цитата(repmovs @  30.7.2017,  19:54 Найти цитируемый пост)
буду рад услышать коментарии

Комментарий один - вся эта хрень никакого отношения к СУБД не имеет. 

Хочешь делать силами клиентской стороны? да ветер в спину! а лицом при этом надо встать к документации на YII Framework (ну и на PHP, само собой).

Автор: Zloxa 31.7.2017, 13:40
Цитата(repmovs @  29.7.2017,  17:25 Найти цитируемый пост)
Вопрос в том, когда будет разумнее проводить эту проверку, кода получаем этот элемент из бд по запросу пользователя или проходится по базе и проверять всех подряд? 

я правильно понимаю, рассматриваются два варианта:
1) Регламентный процесс, удаляющий/архивирующий потерявшие актуальность данные
2) Дополнительный фильтр на актуальность по отбираемым данным

Здесь одно не исключает другого.
а) Логика приложения не должна ломаться в случае, если оказался не соблюден регламент, посему п.2 не отменяется реализацией п.1
б) Реализация п.2 может повлечь за собой сильную деградацию производительности в перспективе, которая может быть нивелирована релазиацей п.1, посему рализация п.1 не отменяется реализацией п.2

Цитата(repmovs @  29.7.2017,  17:25 Найти цитируемый пост)
точность нужна до минуты. 

С этим требованием вам железно нужно реализовать п.2, при этом(не исключая п.2) может оказаться полезной реализация п.1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)