Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья является частью пяти из семи частей серии, которая содержит рекомендации по миграции из Netezza в Azure Synapse Analytics. Эта статья посвящена рекомендациям по минимизации проблем с SQL.
Обзор
Характеристики сред Netezza
Подсказка
Netezza впервые создал концепцию "устройства хранилища данных" в начале 2000-х годов.
В 2003 году Netezza первоначально выпустила свой продукт устройства хранилища данных. Она сократила затраты на ввод и улучшила простоту использования методов массовой параллельной обработки (MPP), чтобы обеспечить более эффективное масштабирование обработки данных, чем существующие мейнфреймы или другие технологии MPP, доступные в то время. С тех пор продукт развивался и имеет множество установок среди крупных финансовых учреждений, телекоммуникаций и розничных компаний. Исходная реализация использовала проприетарное оборудование, включая программируемые пользователем вентильные матрицы (FPGA), и была доступна через сетевые подключения ODBC или JDBC по TCP/IP.
Большинство существующих установок Netezza являются локальными, поэтому многие пользователи рассматривают перенос некоторых или всех данных Netezza в Azure Synapse Analytics, чтобы получить преимущества перехода в современную облачную среду.
Подсказка
Многие существующие установки Netezza — это хранилища данных с помощью модели мерных данных.
Технология Netezza часто используется для реализации хранилища данных, поддерживая сложные аналитические запросы на большие тома данных с помощью SQL. Модели мерных данных — схемы star или snowflake — являются общими, как и реализация киосков данных для отдельных отделов.
Эта комбинация моделей данных SQL и мерных данных упрощает миграцию в Azure Synapse, так как основные понятия и навыки SQL можно перенести. Рекомендуется перенести существующую модель данных as-is, чтобы снизить риск и время. Даже если в конечном итоге нужно внести изменения в модель данных (например, переход в модель хранилища данных), выполнить начальную as-is миграцию, а затем внести изменения в облачную среду Azure, используя производительность, эластичную масштабируемость и преимущества затрат.
Хотя язык SQL стандартизирован, отдельные поставщики в некоторых случаях реализовали собственные расширения. В этом документе рассматриваются потенциальные различия SQL, которые могут возникнуть при миграции из устаревшей среды Netezza, а также обходные пути.
Использование Фабрики данных Azure для реализации миграции на основе метаданных
Подсказка
Автоматизируйте процесс миграции с помощью возможностей Фабрики данных Azure.
Автоматизация и оркестрация процесса миграции путем использования возможностей в среде Azure. Этот подход также сводит к минимуму влияние миграции на существующую среду Netezza, которая уже может работать почти на полную мощность.
Фабрика данных Azure — это облачная служба интеграции данных, которая позволяет создавать управляемые данными рабочие процессы в облаке для оркестрации и автоматизации перемещения данных и преобразования данных. С помощью фабрики данных можно создавать и планировать рабочие процессы, управляемые данными, называемые конвейерами, которые могут получать данные из разрозненных хранилищ данных. Он может обрабатывать и преобразовывать данные с помощью таких служб вычислений, как Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics и Машинное обучение Azure.
Создав метаданные для перечисления таблиц данных для переноса и их расположения, можно использовать средства фабрики данных для управления и автоматизации частей процесса миграции. Вы также можете использовать Azure Synapse Pipelines.
Различия DDL SQL между Netezza и Azure Synapse
Язык определения данных SQL (DDL)
Подсказка
Команды SQL DDL CREATE TABLE и CREATE VIEW содержат стандартные основные элементы, но также используются для определения вариантов, связанных с конкретной реализацией.
Стандарт ANSI SQL определяет базовый синтаксис для команд DDL, таких как CREATE TABLE и CREATE VIEW. Эти команды используются как в Netezza, так и в Azure Synapse, но они также были расширены, чтобы разрешить определение конкретных функций реализации, таких как индексирование, распределение таблиц и параметры секционирования.
В следующих разделах рассматриваются варианты, связанные с Netezza, которые следует учитывать во время миграции в Azure Synapse.
Вопросы, касающиеся таблицы
Подсказка
Используйте существующие индексы, чтобы указать кандидатов на индексирование в перенесенном хранилище.
При переносе таблиц между разными технологиями только необработанные данные и его описательные метаданные физически перемещаются между двумя средами. Другие элементы базы данных из исходной системы, такие как индексы и файлы журналов, не переносятся напрямую, так как они могут быть не нужны или могут быть реализованы по-другому в новой целевой среде. Например, параметр TEMPORARY в синтаксисе Netezza CREATE TABLE эквивалентен префиксу имени таблицы с символом #в Azure Synapse.
Важно понимать, где в исходной среде использовались оптимизации производительности, такие как индексы. Это указывает, где можно добавить оптимизацию производительности в новой целевой среде. Например, если карты зон были созданы в исходной среде Netezza, это может указывать на то, что некластикционный индекс должен быть создан в перенесенной базе данных Azure Synapse. Другие собственные методы оптимизации производительности, такие как репликация таблиц, могут быть более применимыми, чем прямое создание индекса like-for-like.
Неподдерживаемые типы объектов базы данных Netezza
Подсказка
Функции Netezza можно заменить функциями Azure Synapse.
Netezza реализует некоторые объекты базы данных, которые не поддерживаются напрямую в Azure Synapse, но существуют методы для достижения той же функциональности в новой среде:
Карты зон: в Netezza карты зон автоматически создаются и поддерживаются для некоторых типов столбцов и используются во время запроса, чтобы ограничить объем данных для сканирования. Карты зон создаются в следующих типах столбцов:
- Столбцы длиной 8 байтов или менее
INTEGER. - Темпоральные столбцы. Например, ,
DATEиTIMETIMESTAMP. -
CHARстолбцы, если они являются частью материализованного представления и упоминаются в предложенииORDER BY.
Вы можете узнать, в каких столбцах есть зонные карты, с помощью служебной программы
nz_zonemap, которая входит в набор средств NZ. В Azure Synapse карты зон не используются, но вы можете добиться аналогичных результатов с помощью определяемых пользователем типов индексов и/или секционирования.- Столбцы длиной 8 байтов или менее
Кластеризованные базовые таблицы (CBT): в Netezza cbts обычно используются для таблиц фактов, которые могут содержать миллиарды записей. Для сканирования такой огромной таблицы требуется много времени обработки, так как для получения соответствующих записей может потребоваться полная проверка таблицы. Организация записей на ограничивающих CBT позволяет Netezza группировать записи в тех же или соседних экстентах. Этот процесс также создает карты зон, которые повышают производительность, уменьшая объем сканируемых данных.
В Azure Synapse можно добиться аналогичного эффекта, используя секционирование и (или) использование других индексов.
Материализованные представления: Netezza поддерживает материализованные представления и рекомендует создавать одну или несколько из этих таблиц с большим количеством столбцов, где в запросах регулярно используются только несколько этих столбцов. Система автоматически сохраняет материализованные представления при обновлении данных в базовой таблице.
Azure Synapse поддерживает материализованные представления с той же функциональностью, что и Netezza.
Сопоставление типов данных Netezza
Подсказка
Оцените влияние неподдерживаемых типов данных в рамках этапа подготовки.
Большинство типов данных Netezza имеют прямой эквивалент в Azure Synapse. В следующей таблице показаны эти типы данных, а также рекомендуемый подход для их сопоставления.
| Тип данных Netezza | Тип данных Azure Synapse |
|---|---|
| БИГИНТ | BIGINT |
| ДВОИЧНОЕ ИЗМЕНЯЕМОЕ(n) | VARBINARY(n) |
| Булевый | BIT |
| BYTEINT | TINYINT |
| строка переменной длины(n) | VARCHAR(n) |
| СИМВОЛ(n) | CHAR(n) |
| Дата | ДАТА(date) |
| DECIMAL(p,s) | DECIMAL(p,s) |
| двойная точность | ФЛОАТ |
| FLOAT(n) | FLOAT(n) |
| ЦЕЛОЕ ЧИСЛО | INT |
| ИНТЕРВАЛ | Типы данных INTERVAL в настоящее время не поддерживаются непосредственно в Azure Synapse, но можно вычислять с помощью темпоральных функций, таких как DATEDIFF. |
| ДЕНЬГИ | ДЕНЬГИ |
| НАЦИОНАЛЬНЫЙ ТЕКСТОВЫЙ ТИП ВАРЬИРУЕМЫЙ(n) | NVARCHAR(n) |
| НАЦИОНАЛЬНЫЙ ХАРАКТЕР(n) | NCHAR(n) |
| NUMERIC(p,s) | NUMERIC(p,s) |
| РЕАЛЬНЫЙ | РЕАЛЬНЫЙ |
| SMALLINT | SMALLINT |
| ST_GEOMETRY(n) | Azure Synapse сейчас не поддерживает пространственные типы данных, такие как ST_GEOMETRY, но данные могут храниться как VARCHAR или VARBINARY. |
| ВРЕМЯ | ВРЕМЯ |
| ВРЕМЯ С ЧАСОВЫМ ПОЯСОМ | DATETIMEOFFSET |
| TIMESTAMP | Дата и время |
Создание языка описания данных (DDL)
Подсказка
Используйте существующие метаданные Netezza для автоматизации создания CREATE TABLE и CREATE VIEW DDL для Azure Synapse.
Измените существующие скрипты Netezza CREATE TABLE и CREATE VIEW, чтобы создать эквивалентные определения с измененными типами данных, если это необходимо, как описано ранее. Как правило, это включает удаление или изменение любых дополнительных специфических для Netezza конструкций, таких как ORGANIZE ON.
Однако все сведения, указывающие текущие определения таблиц и представлений в существующей среде Netezza, сохраняются в таблицах системного каталога. Это лучший источник этой информации, так как она гарантированно будет актуальной и полной. Помните, что документация, поддерживаемая пользователем, может не синхронизирована с текущими определениями таблиц.
Доступ к этой информации с помощью таких служебных программ, как nz_ddl_table и создание CREATE TABLE инструкций DDL. Измените эти запросы для эквивалентных таблиц в Azure Synapse.
Подсказка
Сторонние средства и службы могут автоматизировать задачи сопоставления данных.
Существуют партнеры Майкрософт , которые предлагают инструменты и службы для автоматизации миграции, включая сопоставление типов данных. Кроме того, если сторонний инструмент ETL, например Informatica или Talend, уже используется в среде Netezza, это средство может реализовать любые необходимые преобразования данных.
Различия между Netezza и Azure Synapse в SQL DML
Язык обработки данных SQL (DML)
Подсказка
Команды SQL DML SELECT, INSERT и UPDATE имеют стандартные основные элементы, но также могут реализовывать различные варианты синтаксиса.
Стандарт ANSI SQL определяет базовый синтаксис для команд DML, таких как SELECT, INSERTи UPDATEDELETE. В Netezza и Azure Synapse используются эти команды, но в некоторых случаях существуют различия в реализации.
В следующих разделах рассматриваются команды DML для netezza, которые следует учитывать во время миграции в Azure Synapse.
Различия в синтаксисе SQL DML
Учитывайте эти различия в синтаксисе языка обработки данных SQL (DML) между Netezza SQL и Azure Synapse при миграции:
STRPOS. В Netezza функцияSTRPOSвозвращает положение подстроки в строке. Эквивалентная функция в Azure Synapse — этоCHARINDEX, причем порядок аргументов обратный. Например,SELECT STRPOS('abcdef','def')...в Netezza эквивалентноSELECT CHARINDEX('def','abcdef')...в Azure Synapse.AGE: Netezza поддерживаетAGEоператор для предоставления интервала между двумя темпоральными значениями, такими как метки времени или даты. Например,SELECT AGE('23-03-1956','01-01-2019') FROM.... В Azure SynapseDATEDIFFпредоставляет интервал. Например,SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM.... Обратите внимание на последовательность представления даты.NOW(): Netezza используетNOW()для представленияCURRENT_TIMESTAMPв Azure Synapse.
Функции, хранимые процедуры и последовательности
Подсказка
В рамках этапа подготовки оцените количество и тип переносируемых объектов, не являющихся данными.
При миграции из устаревшей среды хранилища данных, например Netezza, часто существуют элементы, отличные от простых таблиц и представлений, которые необходимо перенести в новую целевую среду. Примерами этого являются функции, хранимые процедуры и последовательности.
В рамках этапа подготовки создайте инвентаризацию объектов, которые необходимо перенести, и определите методы их обработки. Затем назначьте соответствующее выделение ресурсов в плане проекта.
В среде Azure могут быть средства, которые заменяют функциональные возможности, реализованные как функции или хранимые процедуры в среде Netezza. В этом случае чаще всего эффективнее использовать встроенные средства Azure, а не перекодировать функции Netezza.
Подсказка
Сторонние продукты и службы могут автоматизировать миграцию элементов, отличных от данных.
Партнеры Майкрософт предлагают средства и службы, которые могут автоматизировать миграцию, включая сопоставление типов данных. Кроме того, сторонние средства ETL, такие как Informatica или Talend, которые уже используются в среде IBM Netezza, могут реализовать любые необходимые преобразования данных.
Дополнительные сведения о каждом из этих элементов см. в следующих разделах.
Функции
Как и в большинстве продуктов базы данных, Netezza поддерживает системные функции и определяемые пользователем функции в реализации SQL. При миграции на другую платформу баз данных, например Azure Synapse, общие системные функции доступны и могут быть перенесены без изменений. Некоторые системные функции могут иметь немного другой синтаксис, но необходимые изменения могут быть автоматизированы. Системные функции, в которых нет эквивалента, например произвольных пользовательских функций, может потребоваться перекодировать с помощью языков, доступных в целевой среде. Azure Synapse использует популярный язык Transact-SQL для реализации определяемых пользователем функций. В Netezza определяемые пользователем функции программируются на языках nzLua или C++.
Хранимые процедуры
Большинство современных продуктов базы данных позволяют хранить процедуры в базе данных. Netezza предоставляет язык NZPLSQL, основанный на Postgres PL/pgSQL. Хранимая процедура обычно содержит инструкции SQL и некоторую процедурную логику, а также может возвращать данные или состояние.
Azure Synapse Analytics также поддерживает хранимые процедуры с помощью T-SQL, поэтому, если необходимо перенести хранимые процедуры, перекодируйте их соответствующим образом.
Последовательности
В Netezza последовательность — это именованный объект базы данных, созданный через CREATE SEQUENCE, который может предоставлять уникальные значения с помощью метода NEXT VALUE FOR. Используйте их для создания уникальных чисел для использования в качестве суррогатных значений ключей для значений первичного ключа.
В Azure Synapse нет CREATE SEQUENCE. Последовательности обрабатываются с помощью IDENTITY для создания суррогатных ключей или управляемого удостоверения, используя код SQL для генерации следующего номера в последовательности.
Использование EXPLAIN для проверки прежних версий SQL
Подсказка
Найдите потенциальные проблемы миграции с помощью реальных запросов из существующих журналов системных запросов.
Захватите некоторые репрезентативные инструкции SQL из журналов истории запросов для оценки Netezza SQL на совместимость с Azure Synapse. Затем префиксируйте эти запросы с помощью EXPLAIN, и, при условии, что модель данных перенесена в Azure Synapse с теми же именами таблиц и столбцов, выполните эти EXPLAIN операции в Azure Synapse. Любой несовместимый SQL вернет ошибку. Используйте эти сведения для определения масштаба задачи перекодирования. Этот подход не требует загрузки данных в среду Azure, только чтобы соответствующие таблицы и представления были созданы.
Сопоставление IBM Netezza с T-SQL
Сопоставление типов данных IBM Netezza в T-SQL, совместимое с Azure Synapse SQL, находится в этой таблице.
| Тип данных IBM Netezza | Тип данных SQL Azure Synapse |
|---|---|
| массив | Не поддерживаются |
| bigint | bigint |
| двоичный большой объект [(n[K|M|G])] | nvarchar [(n|max)] |
| BLOB-объект [(n[K|M|G])] | nvarchar [(n|max)] |
| байт [(n)] | binary [(n)]|varbinary(max) |
| байтинт | СмаллИнт |
| char переменной длины [(n)] | varchar [(n|max)] |
| символы, изменяющиеся [(n)] | varchar [(n|max)] |
| char [(n)] | char [(n)]|varchar(max) |
| символ [(n)] | char [(n)]|varchar(max) |
| крупный объект символов [(n[K|M|G])] | varchar [(n|max) |
| clob [(n[K|M|G])] | varchar [(n|max) |
| набор данных | Не поддерживаются |
| дата | дата |
| dec [(p[,s])] | десятичное число [(p[,s])] |
| десятичное число [(p[,s])] | десятичная [(p[,s])] |
| двойная точность | float(53) |
| float [(n)] | float [(n)] |
| графика [(n)] | nchar [(n)]| varchar(max) |
| интервал | Не поддерживаются |
| json [(n)] | nvarchar [(n|max)] |
| long varchar | nvarchar(max) |
| длинный vargraphic | nvarchar(max) |
| mbb | Не поддерживаются |
| mbr | Не поддерживаются |
| number [(p|*)[,s]] | числовой [(p[,s])] |
| числовой [(p [,s])] | числовой [(p[,s])] |
| период | Не поддерживаются |
| реальный | реальный |
| smallint | smallint |
| st_geometry | Не поддерживаются |
| Время | Время |
| время с часовыми поясами | datetimeoffset (смещение даты и времени) |
| метка времени | datetime2 |
| метка времени с часовым поясом | datetimeoffset |
| varbyte | varbinary [(n|max)] |
| varchar [(n)] | varchar [(n)] |
| vargraphic [(n)] | nvarchar [(n|max)] |
| varray | Не поддерживаются |
| xml | Не поддерживаются |
| xmltype | Не поддерживаются |
Сводка
Типичные устаревшие установки Netezza реализованы таким образом, чтобы упростить миграцию в Azure Synapse. Они используют SQL для аналитических запросов на больших томах данных и находятся в какой-то форме трехмерной модели данных. Эти факторы делают их хорошими кандидатами на миграцию в Azure Synapse.
Чтобы свести к минимуму задачу переноса фактического кода SQL, выполните следующие рекомендации:
Начальная миграция хранилища данных должна быть проведена в режиме as-is для минимизации рисков и затрат времени, даже если в конечной среде будет использоваться другая модель данных, например, data vault.
Общие сведения о различиях между реализацией Netezza SQL и Azure Synapse.
Используйте метаданные и журналы запросов из существующей реализации Netezza для оценки влияния различий и планирования подхода к устранению рисков.
Автоматизируйте процесс везде, где это возможно, чтобы свести к минимуму ошибки, риски и время миграции.
Рассмотрите возможность использования специализированных партнеров и служб Майкрософт для оптимизации миграции.
Дальнейшие действия
Дополнительные сведения о средствах Майкрософт и сторонних разработчиков см. в следующей статье: Средства для миграции хранилища данных Netezza в Azure Synapse Analytics.