icon
Programmer's Diary

Кодить каждую неделю 8 часов • 2026-08-11 • От SQL-дампов к удобным YAML-файлам: как я выстроил систему истории изменений в базе данных своего проекта.

На прошлой неделе я был в отпуске от моей платной работы, поэтому на программирование в свободное время нашлось больше времени, чем обычно: 20 часов.

Персональный веб-сайт 🌐

🚀 Сделал новую большую фичу: возможность смотреть, что поменялось в базе данных. Я давно это хотел, и наконец-то получил… Но какой ценой? Первоначально я думал сохранять SQL-дамп для каждой таблицы в Git. Но такой подход оказался неудобным, ибо длинные SQL-строки оказались не читаемые. В итоге, сделал сохранение строк из базы данных в YAML-файлы. Каждая таблица получает отдельную папку. YAML поддерживает текст с переносами строк, поэтому мои посты хорошо просматриваются в таком формате.

🔎 Чтобы смотреть историю изменений в браузере, добавил контейнер GitWeb. Тут пришлось пересобрать Docker Image под архитектуру ARM, иначе GitWeb безбожно тормозил, и одна загрузка страницы занимала целую минуту. Репозиторий живёт на моём Orange Pi. Коммит делается автоматически по расписанию: каждое воскресенье в полночь.

⏳ Задачка заняла много времени, ибо много усилий я вложил в первоначальный вариант с SQL-форматом, но позже решил перейти на YAML и отказаться от SQL-версии. Зато теперь я могу смотреть, что менялось в моей базе данных от недели к неделе.

🦫 Во время работы над задачей было ощущение, что я изобретаю маленький ORM-фреймворк в моём проекте. Возможно, было бы полезно использовать готовый ORM-фреймворк? Слышал, есть GORM для Go. Нужно об этом подумать. Прямо сейчас нет нужды переходить на ORM-фреймворк, ибо все нужные фичи на данный момент у меня уже имеются.