Маппинг типов данных (локальный и глобальный)

Конвертум Мастер поддерживает гибкий маппинг типов данных, позволяя изменять типы столбцов как глобально – для всей базы данных (включая таблицы, переменные и параметры), так и локально — только для выбранных таблиц.

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

Глобальный маппинг типов данных

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

date_type_map_1

Этот подход особенно эффективен, когда необходимо применить изменения типов данных единообразно – для устранения несовместимости типов, исключения неявных преобразований и обеспечения предсказуемого поведения в целевой схеме. Глобальный маппинг упрощает сопровождение, позволяя задать правила преобразования типов данных один раз и применять их последовательно во всём проекте.

Например, в PostgreSQL тип данных smallint (двухбайтовое целое число со знаком) часто требует явного приведения типов при работе с числовыми литералами или при присвоении значений из других целочисленных типов. Это может усложнять код и снижать его читаемость. Замена столбцов типа smallint на integer позволяет избежать таких приведений, сохраняя полную совместимость типов и исключая побочные эффекты.

Другой распространённый сценарий связан с увеличением ёмкости столбцов-счётчиков или идентификаторов. Например, столбец может быть изначально рассчитан на хранение 10-значных значений, но со временем возникает необходимость расширить этот предел до 12 и более знаков. Хотя такое изменение можно выполнить непосредственно в исходной базе данных, это часто затруднительно в системах с большими объёмами данных или в средах, требующих высокой доступности и не допускающих длительных простоев. В таких случаях миграция предоставляет удобную возможность изменить типы данных контролируемым образом и привести их в соответствие с текущими и будущими требованиями.

Кроме того, унификация типов данных может существенно повысить производительность запросов, особенно в сценариях, где таблицы соединяются по столбцам с разными, хотя и совместимыми, типами данных.

Пример:

SELECT ... 
 FROM table1 t1 
 JOIN table2 t2 on t1.numeric_field = t2.bigint_field ...

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

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

Локальный маппинг типов данных

Локальный маппинг типов данных позволяет применять преобразования выборочно – на уровне отдельных таблиц или столбцов. Этот подход обеспечивает более детальный контроль над процессом миграции и хорошо подходит для сценариев, в которых изменения требуются только для определённых объектов базы данных.

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

date_type_map_2

После применения маппинга он сохраняется в файле проекта sqlways.xml, что позволяет использовать эти настройки при последующей конвертации в пакетном режиме (batch mode).

Примечание: Локальный маппинг типов данных имеет приоритет над глобальным маппингом для соответствующего столбца.


Другие материалы по теме:
Руководство пользователя
Советы и рекомендации

Если у вас есть вопросы, пожалуйста, обращайтесь в нашу службу поддержки: support@convertum.ru