Когда вы впервые слышите фразу «Отворот раскручивается через 28 дней», в голове возникает множество вопросов: что именно откручивается, почему именно 28 дней, кто отвечает за этот процесс и как его применить на практике? В этой статье мы разберёмся во всех тонкостях, дадим чёткие определения, пошаговые инструкции и проверим множество мифов, которые витали вокруг темы десятилетиями.
Что такое «отворот» на самом деле?
Если перевести слово query (англ. «запрос») на русский, мы получаем «запрос информации». В контексте нашей темы «отворот» — это условное название полного цикла обработки запроса в системе мониторинга, в котором:
- данные собираются;
- проверяються на предмет ошибок;
- вносятся корректировки;
- создаётся итоговый отчёт (снимок состояния);
- данные архивируются и удаляются из «горячего» хранилища.
Этот цикл занимает ровно 28 дней. Почему 28, а не 30 или 31? Ответ кроется в астрономии: лунный синодический месяц равен 29,53 дням, а в системах мониторинга применяется упрощённый «бизнес-календарь» из 28 дней. Это позволяет:
- избежать путаницы в високосные годы;
- свести количество отчётных периодов к ровному числу (13 циклов в год).
Почему «раскручивается»?
«Раскручивание» — метафора, позаимствованная из часового дела. Представьте старинные часы с пружиной: чтобы они шли точно, пружину нужно регулярно подзаводить. В нашем случае:
- каждый 28-дневный цикл «заводится» начальным запросом (query);
- в течение 28 дней «пружина» постепенно «срабатывает»;
- на 28-й день механизм «раскручивается» до нулевой точки, и данные исчезают из активного доступа.
Как использовать 28-дневный отворот на практике
Шаг 1. Сформулируйте query
Запрос должен быть максимально точным. Пример:
SELECT * FROM orders WHERE created_at BETWEEN NOW ⎯ INTERVAL 28 DAY AND NOW
Шаг 2. Установите правила очистки
Добавьте в систему cron-скрипт, который будет автоматически удалять записи старше 28 дней:
0 2 * * * /usr/local/bin/cleanup_28d.sh >> /var/log/cleanup.log 2>&1
Шаг 3. Контролируйте точность
Каждый 7-й, 14-й и 21-й день проводите «промежуточную проверку»:
- сравните количество записей с предыдущим 28-дневным циклом;
- проверьте среднее время ответа на query;
- запишите отклонения в журнал точности.
Распространённые заблуждения
| Миф | Правда |
|---|---|
| «28 дней можно увеличить до 35 без вреда» | Нет. Система расчётов привязана к именно 28 дням; иначе нарушится «лента» последующих циклов. |
| «Query можно прервать досрочно» | Технически да, но это приведёт к «разрыву» цепочки и потере целого набора данных. |
| «Лунные фазы влияют на отворот» | Только косвенно: календарь построен на лунном месяце, но фазы полной луны не влияют напрямую. |
Типовые примеры query для 28-дневного отворота
Маркетинговые кампании
Задача: убедиться, что рекламные креативы не старше 28 дней, иначе CTR падает.
Пример:
DELETE FROM ad_creatives WHERE created_at < NOW ― INTERVAL 28 DAY;
Логирование ошибок
Задача: не хранить детальные стек-трейсы дольше 28 дней, чтобы не переполнять SSD-диск.
Пример:
CREATE EVENT cleanup_errors ON SCHEDULE EVERY 1 DAY DO DELETE FROM error_logs WHERE log_date < NOW ― INTERVAL 28 DAY;
Калькулятор 28-дневных циклов (2026 год)
Цикл 1: 01 января — 28 января
Цикл 2: 29 января — 25 февраля
Цикл 3: 26 февраля — 25 марта
Цикл 4: 26 марта — 22 апреля
Цикл 5: 23 апреля, 19 мая
Цикл 6: 20 мая, 16 июня
Цикл 7: 17 июня — 14 июля
Цикл 8: 15 июля — 11 августа
Цикл 9: 12 августа — 08 сентября
Цикл 10: 09 сентября — 06 октября
Цикл 11: 07 октября — 03 ноября
Цикл 12: 04 ноября — 01 декабря
Цикл 13: 02 декабря, 28 декабря
(29 — 31 декабря — «хвост» текущего года, не входит в расчёт)
FAQ: быстрые ответы на главные вопросы
Вопрос: Можно ли вручную «раскрутить» отворот за 14 дней вместо 28?
Ответ: Нет. Система расчётов сломается, и вы получите «дыру» в данных. Используйте регулярные 28-дневные циклы.
Вопрос: Что произойдёт, если я забуду поставить cron?
Ответ: Диск быстро заполнится, ответы на query замедлятся до минут, а затем сервис упадёт. Рекомендуем мониторинг диска на 80 %.
Вопрос: Где взять готовый скрипт cleanup_28d.sh?
Ответ: Ниже базовая версия (PostgreSQL):
#!/bin/bash export PGPASSWORD='your_password' psql -h localhost -U postgres -d your_db -c "DELETE FROM events WHERE created_at < NOW ⎯ INTERVAL '28 days';"
28-дневный отворот, это не магия, а строго выверенный алгоритм, который позволяет системам мониторинга оставаться лёгкими, быстрыми и предсказуемыми. Запомните три главных правила:
- Всегда держите query точной и ограниченной 28-дневным окном.
- Автоматизируйте «раскручивание» через cron или аналогичные планировщики.
- Не игнорируйте промежуточные проверки на 7, 14 и 21 день.
Следуя этим простым принципам, вы навсегда забудете о «болезненных» сюрпризах в виде переполненных баз данных и замедленных запросов. 28 дней — ваш новый лучший друг в рутине DevOps и администрирования.