Все эти технические решения (особенно партиционирование и работа с JSON) были заложены предыдущим разработчиком для решения конкретных бизнес-задач:
- Скорость работы с большими данными. Партиционирование позволяло базе не «захлебываться» при работе с миллионами тендеров за несколько лет. Без него выборки по датам могли бы занимать минуты и ронять сервер.
- Гибкость хранения. JSON-поля давали возможность хранить разнородные данные тендеров (у каждого тендера свой набор полей и параметров) без необходимости создавать сотни пустых колонок в таблице или ломать голову над структурой.
- Автономность. Наличие встроенного полнотекстового поиска и обработчиков внутри PostgreSQL снижало зависимость от внешних сервисов и упрощало развертывание проекта.
Однако, когда мы пришли на проект,
никакой документации по этим техническим решениям не существовало. Разработчик, который 10 лет выстраивал эту архитектуру, просто ушёл и забрал понимание работы проекта с собой в голове. Нам пришлось проводить обратный инжиниринг, чтобы разобраться, как именно работают эти механизмы и почему они были выбраны. В процессе мы задокументировали все эти особенности, чтобы клиент не потерял преимущества, заложенные в архитектуру, и понимал, как поддерживать систему дальше.
Этот опыт расширил нашу экспертизу: теперь мы работаем не только с MySQL, но и с проектами на PostgreSQL, используя его продвинутые возможности — партиционирование, внешние таблицы, JSON-запросы и хранимые процедуры.