Google Cloud Blog на русском
Подписаться
Несколько наборов результатов: как Database Migration Service автоматизирует SQL server в перевод PostgreSQL
Миграция хранимых процедур с множественными результатами из SQL Server в PostgreSQL представляет собой значительную проблему из-за архитектурных различий. SQL Server нативно передает несколько наборов результатов, в то время как PostgreSQL требует явного управления курсорами. Ручное переписывание сотен процедур непрактично, что делает автоматизированные инструменты, такие как служба миграции баз данных (DMS) Google Cloud, незаменимыми. DMS анализирует процедуры, чтобы определить, возвращают ли они один или несколько наборов результатов, с выходным скалярным значением или без него. Для одиночных наборов результатов или скалярных возвратов он генерирует процедуру PostgreSQL с INOUT refcursor. Множественные наборы результатов или их комбинация преобразуются в функцию PostgreSQL, возвращающую SETOF refcursor. Скалярное возвращаемое значение добавляется как отдельный курсор "return_value". Тестирование перенесенного кода требует выполнения в рамках транзакционных блоков и последовательного извлечения данных из каждого курсора. DMS использует сложный механизм предварительной обработки и анализ направленного графа с поиском в глубину для точного определения количества наборов результатов. Этот автоматизированный подход сохраняет основную логику, адаптируя обработку вывода для интеграции с приложениями и контроля качества. Понимание стратегии преобразования DMS является ключом к бесперебойной работе в PostgreSQL после миграции.