Я имею в виду проект, в котором я буду использовать базу данных SQL для хранения строк с датой истечения срока в днях. Каждый день я буду чистить базу данных с просроченными строками. Я рассматриваю два решения:
1
Сохраните expiration
как целое число дней в будущем. Тогда каждый день
- Пройдите базу данных и вычтите
1
доexpiration
действия каждой строки. - Удалить строки с
expiration
меньше или равным0
.
2
Сохраните expiration
как время UNIX в будущем. Потом каждый день
- Поиск в базе данных строк,
expiration
действия которых меньше или равен текущему времени UNIX.
Мне кажется, вариант 2 лучше, потому что:
- Это потребует меньше записи в базу данных. Могут быть дни, когда ничего не пишется с опцией 2, но опция 1 всегда будет изменять каждую строку
- Если сценарий обслуживания не будет запущен один день, 1 будет отставать, а 2 могут догнать.
Итак, мои вопросы:
- Я прав? Является ли 2 лучшим вариантом, или я что-то упустил?
- Есть ли третий вариант, который в целом превосходит?