Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Переезд в PostgreSQL для молочного комбината: учёт производства с DB2 и лабораторная система с Sybase на одной базе, процедуры на PL/pgSQL

Используемые навыки DB2 PostgreSQL PostgresSQL Sybase Программирование PostgreSQL

Описание

Две базы молочного комбината, учёт производства на IBM DB2 и лабораторная система на Sybase ASE, перенесены в одну базу PostgreSQL вместе с хранимыми процедурами. Переезд провёл Евгений Росляков. С 2016 года он делает сайты и работает с базами данных, а с комбинатом общался удалённо, из Москвы. Он самозанятый, подписывает договор и выдаёт юрлицам закрывающие документы.

Комбинат принимает молоко, ведёт партии, рецептуры и лабораторный контроль. Учёт производства стоял на DB2: его ставили вместе со старой системой ещё в 2000-х. Лабораторные анализы жили отдельно, на Sybase.

Поддержки и лицензий на обе СУБД нет, купить или продлить их сейчас нельзя. Программистов, знающих обе системы, у комбината нет, а единственный человек, помнивший устройство баз, ушёл на пенсию. Любая правка превращалась в риск.

Связь между партией молока и анализом шла вручную: технолог открывал одну программу, выписывал номер партии и искал его в другой. Нужно было перенести всё на открытую СУБД без простоя производства и без потери истории.

Решение

Выбрали PostgreSQL: она бесплатная, живая, документации и специалистов по ней достаточно. В техническом задании комбината её называли «PostgresSQL» — с опечаткой, которая так и прижилась. Я оставил это написание там, где оно уже стояло в документах, чтобы никого не путать, а в самой базе и в коде всё называется как положено.

Сначала перенёс схемы. Типы данных в DB2 и Sybase отличаются от PostgreSQL, поэтому пришлось сопоставить даты и время, десятичные числа, символьные поля. С массой и деньгами особая аккуратность: десятичные значения хранятся как numeric, чтобы граммы не терялись на округлении.

Основное время заняло программирование PostgreSQL: процедуры. В DB2 они написаны на SQL PL, в Sybase на Transact-SQL, и всё переписано на PL/pgSQL: функции, триггеры, транзакции. Строчка в строчку переводить почти нечего, поэтому я сначала выяснял, что процедура делает для технолога, и писал заново. Каждую функцию гоняли на тестовых данных вместе с сотрудниками.

Партии молока и лабораторные анализы теперь лежат в одной базе и связаны ключом. Технолог видит результат анализа прямо в карточке партии.

Данные за десять лет переносил в несколько заходов. После каждого сверял количество записей и контрольные суммы по таблицам, потом сравнивал отчёты за выбранные месяцы со старой системой. Расхождения разбирали вручную.

Месяц обе системы работали параллельно: смена вносила данные в новую, а я сверял итоги со старой. Потом старые серверы выключили. Индексы и настройки подобрал под нагрузку смен, и утром, когда идёт приёмка, база отвечает без задержек.

Результат

Комбинат работает на одной базе вместо двух старых. Партия и её анализы видны вместе, и технологу не нужно переписывать номера между программами.

Зависимости от СУБД, которые никто не поддерживает, больше нет. Новый отчёт или поле может добавить любой программист, знающий PostgreSQL, а не человек, помнящий DB2 или Sybase. Система перестала быть чёрным ящиком, и для комбината это главное.

Месяц параллельной работы дал уверенность. Сотрудники сами убедились, что цифры совпадают, и переход прошёл без остановки смен.

Есть ограничения. Часть мелких отчётов, которые давно никто не открывал, я не переносил, а сохранил в архиве: если понадобятся, их придётся восстановить. Клиентская часть осталась прежней и теперь подключается к PostgreSQL через драйвер, поэтому в программе всё выглядит как раньше. Так сделано намеренно, чтобы никого не переучивать, но когда-нибудь интерфейс тоже стоит обновить.

Следующим шагом планируем автоматические резервные копии с проверкой восстановления и регламент для местных ИТ-специалистов.

Если у вас тоже доживает СУБД без поддержки, свяжитесь со мной на freelance.ru: что стоит, с какого года и сколько в ней процедур. По этим трём ответам прикину объём переезда.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Сайт коттеджного посёлка Татаринцево ИЖС на WordPress: своя тема и дизайн WordPress, генплан с ценами, картография маршрута, PHP
Сайт коттеджного посёлка Татаринцево ИЖС на WordPress: своя тема и дизайн WordPress, генплан с ценами, картография маршрута, PHP
20
Маркетинг и Продвижение Продвижение в интернете для зоомагазина: email-рассылки, маркетинг удержания клиентов, автоцепочки и Messenger Marketing
Продвижение в интернете для зоомагазина: email-рассылки, маркетинг удержания клиентов, автоцепочки и Messenger Marketing
17
Дизайн и Брендинг Разработка логотипа и ребрендинг сети химчисток: 3D-логотип для вывески, векторизация старого знака в Affinity Designer и CorelDRAW
Разработка логотипа и ребрендинг сети химчисток: 3D-логотип для вывески, векторизация старого знака в Affinity Designer и CorelDRAW
27
Веб-разработка и IT Бэкенд под нагрузку для сервиса вызова эвакуаторов: Apache Kafka для потока координат, Golang для сервисов, Rust на горячем участке, Scala осталась
Бэкенд под нагрузку для сервиса вызова эвакуаторов: Apache Kafka для потока координат, Golang для сервисов, Rust на горячем участке, Scala осталась
13