Soluções e migração do Azure Synapse Analytics para NetezzaAzure Synapse Analytics solutions and migration for Netezza

Como o suporte da IBM para Netezza termina, muitas organizações que atualmente usam o Netezza data warehouse sistemas estão procurando aproveitar as vantagens da nuvem inovadora, da infraestrutura como serviço e das ofertas de plataforma como serviço em ambientes mais recentes, como o Azure.As IBM support for Netezza ends, many organizations that currently use Netezza data warehouse systems are looking to take advantage of innovative cloud, infrastructure as a service, and platform as a service offerings in newer environments like Azure. Muitas organizações estão prontas para realizar a etapa de mudança de tarefas caras, como manutenção de infraestrutura e desenvolvimento de plataforma para um provedor de nuvem.Many organizations are ready to take the step of shifting expensive tasks like infrastructure maintenance and platform development to a cloud provider.

O Azure Synapse Analytics é um serviço de análise ilimitado que reúne conjunto de dados corporativos e análise de Big Data.Azure Synapse Analytics is a limitless analytics service that brings together enterprise data warehousing and big data analytics. Ele oferece a você a liberdade de consultar dados sobre seus termos em escala usando recursos sem servidor sob demanda ou provisionados.It gives you the freedom to query data on your terms at scale by using either serverless on-demand or provisioned resources. Saiba o que planejar ao migrar um sistema Netezza herdado para o Azure Synapse.Learn what to plan for as you migrate a legacy Netezza system to Azure Synapse.

O Netezza e o Azure Synapse são semelhantes, pois cada um é um banco de dados SQL projetado para usar técnicas de processamento maciçomente paralelos para obter alto desempenho de consulta em grandes volumes de dados.Netezza and Azure Synapse are similar in that each is a SQL database that's designed to use massively parallel processing techniques to achieve high query performance on large data volumes. Mas as duas plataformas são diferentes em aspectos principais:But the two platforms are different in key aspects:

  • Os sistemas Netezza herdados são instalados localmente e usam hardware proprietário.Legacy Netezza systems are installed on-premises, and they use proprietary hardware. O Azure Synapse é baseado em nuvem e usa os recursos de computação e armazenamento do Azure.Azure Synapse is cloud-based and uses Azure compute and storage resources.
  • A atualização de uma configuração Netezza é uma tarefa importante que envolve hardware físico extra e uma reconfiguração de banco de dados possivelmente demorada ou despejo e recarregamento.Upgrading a Netezza configuration is a major task that involves extra physical hardware and a potentially lengthy database reconfiguration or dump and reload. No Azure Synapse, os recursos de armazenamento e de computação são separados.In Azure Synapse, storage and compute resources are separate. Você pode usar a escalabilidade elástica do Azure para escalar ou reduzir verticalmente de forma independente.You can use the elastic scalability of Azure to independently scale up or down.
  • Sem um sistema físico para dar suporte, você pode pausar ou redimensionar o Azure Synapse conforme necessário para reduzir a utilização e o custo dos recursos.Without a physical system to support, you can pause or resize Azure Synapse as needed to reduce resource utilization and cost. No Azure, você tem acesso a um ambiente de nuvem disponível globalmente, altamente seguro e escalonável que inclui o Azure Synapse em um ecossistema de ferramentas e recursos de suporte.In Azure, you have access to a globally available, highly secure, and scalable cloud environment that includes Azure Synapse in an ecosystem of supporting tools and capabilities.

Neste artigo, examinamos a migração de esquema, com uma exibição para obter o desempenho equivalente ou maior de seu Netezza migrado data warehouse e data marts no Azure Synapse.In this article, we look at schema migration, with a view to obtaining equivalent or increased performance of your migrated Netezza data warehouse and data marts on Azure Synapse. Consideramos as preocupações que se aplicam especificamente à migração de um ambiente Netezza existente.We consider concerns that apply specifically to migrating from an existing Netezza environment.

Em um alto nível, o processo de migração inclui as etapas listadas na tabela a seguir:At a high level, the migration process includes the steps that are listed in the following table:

PreparaçãoPreparation MigraçãoMigration Pós-migraçãoPost-migration
  • Definir escopo: o que queremos migrar?Define scope: What do we want to migrate?
  • Crie um inventário de dados e processos para migrar.Build an inventory of data and processes to migrate.
  • Defina qualquer alteração no modelo de dados.Define any data model changes.
  • Identifique as melhores ferramentas e recursos de terceiros e do Azure a serem usados.Identify the best Azure and third-party tools and features to use.
  • Treine a equipe no início da nova plataforma.Train staff early on the new platform.
  • Configure a plataforma de destino do Azure.Set up the Azure target platform.
  • Comece de pequeno e simples.Start small and simple.
  • Automatizar sempre que possível.Automate where possible.
  • Use ferramentas e recursos internos do Azure para reduzir o esforço de migração.Use Azure built-in tools and features to reduce the migration effort.
  • Migre metadados para tabelas e exibições.Migrate metadata for tables and views.
  • Migre dados históricos relevantes.Migrate relevant historical data.
  • Migre ou refatore procedimentos armazenados e processos de negócios.Migrate or refactor stored procedures and business processes.
  • Migre ou refatore os processos de carga incremental do ETL ou ELT.Migrate or refactor ETL or ELT incremental load processes.
  • Monitorar e documentar todos os estágios do processo de migração.Monitor and document all stages of the migration process.
  • Use a experiência obtida para criar um modelo para migrações futuras.Use experience gained to build a template for future migrations.
  • Remecanismoize o modelo de dados, se necessário, usando o desempenho e a escalabilidade da nova plataforma.Reengineer the data model, if necessary, by using the new platform's performance and scalability.
  • Testar aplicativos e ferramentas de consulta.Test applications and query tools.
  • Benchmark e otimize o desempenho da consulta.Benchmark and optimize query performance.
  • Ao migrar de um ambiente Netezza herdado para o Azure Synapse, você deve considerar alguns fatores específicos, além dos assuntos mais gerais descritos na documentação do Netezza.When you migrate from a legacy Netezza environment to Azure Synapse, you must consider some specific factors, in addition to the more general subjects described in the Netezza documentation.

    Carga de trabalho de migração inicialInitial migration workload

    Ambientes Netezza herdados normalmente evoluem ao longo do tempo para abranger várias áreas de assunto e cargas de trabalho mistas.Legacy Netezza environments typically evolve over time to encompass multiple subject areas and mixed workloads. Quando você está decidindo onde começar em um projeto de migração inicial, faz sentido escolher uma área que:When you are deciding where to start on an initial migration project, it makes sense to choose an area that:

    • Comprova a viabilidade de migrar para o Azure Synapse fornecendo rapidamente os benefícios do novo ambiente.Proves the viability of migrating to Azure Synapse by quickly delivering the benefits of the new environment.
    • Permite que a equipe técnica interna tenha experiência com novos processos e ferramentas para que eles possam usá-los para migrar outras áreas.Allows in-house technical staff to gain experience with new processes and tools so that they can use them to migrate other areas.
    • Cria um modelo com base nas ferramentas e nos processos atuais a serem usados em migrações adicionais do ambiente de Netezza de origem.Creates a template based on the current tools and processes to use in additional migrations from the source Netezza environment.

    Um bom candidato para uma migração inicial de um ambiente Netezza que seria compatível com esses objetivos normalmente é um que implementa uma carga de trabalho de Power BI/análise em vez de uma carga de trabalho OLTP.A good candidate for an initial migration from a Netezza environment that would support these objectives typically is one that implements a Power BI/analytics workload rather than an OLTP workload. A carga de trabalho deve ter um modelo de dados que possa ser migrado com modificações mínimas, como um esquema de estrela ou floco de neve.The workload should have a data model that can be migrated with minimal modifications, such as a star or snowflake schema.

    Para o tamanho, é importante que o volume de dados que você migrar no exercício inicial seja grande o suficiente para demonstrar os recursos e benefícios do ambiente Synapse do Azure com um curto período de demonstração do valor.For size, it's important that the data volume you migrate in the initial exercise is large enough to demonstrate the capabilities and benefits of the Azure Synapse environment with a short time to demonstrate value. O tamanho que normalmente atende aos requisitos está no intervalo de 1 terabyte (TB) a 10 TB.The size that typically meets the requirements is in the range of 1 terabyte (TB) to 10 TB.

    Uma abordagem para o projeto de migração inicial que minimiza o risco e o tempo de implementação é restringir o escopo da migração para os marts de dados.An approach for the initial migration project that minimizes risk and implementation time is to confine the scope of the migration to data marts. Essa abordagem é um bom ponto de partida porque limita claramente o escopo da migração e normalmente pode ser obtida em uma escala de longo prazo.This approach is a good starting point because it clearly limits the scope of the migration and typically can be achieved on a short timescale. Uma migração inicial do marts de dados não trata apenas de preocupações mais amplas, como a migração de dados históricos e ETL.An initial migration of data marts only doesn't address broader concerns like how to migrate ETL and historical data. Você deve abordar essas áreas em fases posteriores e aterrar a camada de data mart migrada com os dados e processos necessários para compilá-los.You must address these areas in later phases and backfill the migrated data mart layer with the data and processes that are required to build them.

    Abordagem de comparação de precisão e mudança em relação à abordagem em fasesLift-and-shift approach vs. phased approach

    Independentemente dos drivers e do escopo que você escolher para a migração, você pode escolher entre dois tipos gerais de migração:Regardless of the drivers and scope that you choose for your migration, you can choose from two general types of migration:

    • Abordagem de comparação de precisão e deslocamento: Nessa abordagem, o modelo de dados existente, como um esquema em estrela, é migrado inalterado para a nova plataforma de Synapse do Azure.Lift-and-shift approach: In this approach, the existing data model, such as a star schema, is migrated unchanged to the new Azure Synapse platform. Nesse cenário, a ênfase é a minimização de riscos e o tempo necessário para a migração, reduzindo o trabalho que precisa ser feito para alcançar os benefícios de migrar para o ambiente de nuvem do Azure.In this scenario, the emphasis is on minimizing risk and the time it takes to migrate by reducing the work that has to be done to achieve the benefits of moving to the Azure cloud environment.

      Essa abordagem é uma boa opção para ambientes Teradata existentes nos quais um único data mart será migrado e se os dados já estiverem em um esquema de estrela ou floco de neve bem projetado.This approach is a good fit for existing Teradata environments in which a single data mart is to be migrated, and if the data is already in a well-designed star or snowflake schema. Essa abordagem é uma boa opção também se você tiver pressões de tempo e custo para migrar para um ambiente de nuvem mais moderno.This approach is a good choice also if you have time and cost pressures to move to a more modern cloud environment.

    • Abordagem em fases que incorpora modificações: Quando um depósito herdado evoluiu ao longo do tempo, talvez seja necessário readministrar o data warehouse para manter o desempenho necessário ou para dar suporte a novas fontes de dados, como os fluxos de IoT.Phased approach that incorporates modifications: When a legacy warehouse has evolved over time, you might need to reengineer the data warehouse to maintain the required performance or to support new data sources like IoT streams. Migrar para o Azure Synapse para conhecer os benefícios bem conhecidos de um ambiente de nuvem escalonável pode ser considerado parte do processo de reengenharia.Migrating to Azure Synapse for the well-known benefits of a scalable cloud environment might be considered part of the reengineering process. Esse processo pode incluir a alteração do modelo de dados subjacente, como a mudança de um modelo Inmon para o cofre de dados do Azure.This process might include changing the underlying data model, such as moving from an Inmon model to Azure Data Vault.

      A abordagem que recomendamos é mover inicialmente o modelo de dados existente no estado em que se encontra no Azure.The approach we recommend is to initially move the existing data model as-is to Azure. Em seguida, aproveite o desempenho e a flexibilidade dos serviços do Azure para aplicar as alterações de reengenharia sem afetar o sistema de origem existente.Then, take advantage of the performance and flexibility of Azure services to apply the reengineering changes without affecting the existing source system.

    Migração de metadadosMetadata migration

    Faz sentido automatizar e orquestrar o processo de migração usando os recursos do ambiente do Azure.It makes sense to automate and orchestrate the migration process by using the capabilities of the Azure environment. Essa abordagem minimiza o efeito no ambiente Netezza existente, que talvez já esteja em execução perto da capacidade total.This approach minimizes the effect on the existing Netezza environment, which might already be running close to full capacity.

    O Azure Data Factory é um serviço de integração de dados baseado em nuvem.Azure Data Factory is a cloud-based data integration service. Você pode usar Data Factory para criar fluxos de trabalho controlados por dados na nuvem para orquestrar e automatizar a movimentação de dados e a transformação de dados.You can use Data Factory to create data-driven workflows in the cloud to orchestrate and automate data movement and data transformation. Os pipelines de Data Factory podem ingerir dados de armazenamentos diferentes e, em seguida, processar e transformar os dados usando serviços de computação como o Azure HDInsight para Apache Hadoop e Apache Spark, Azure Data Lake Analytics e Azure Machine Learning.Data Factory pipelines can ingest data from disparate datastores, and then process and transform the data by using compute services like Azure HDInsight for Apache Hadoop and Apache Spark, Azure Data Lake Analytics, and Azure Machine Learning. Você começa criando metadados para listar as tabelas de dados que deseja migrar, com seus locais e, em seguida, usar Data Factory recursos para gerenciar o processo de migração.You start by creating metadata to list the data tables you want to migrate, with their locations, and then use Data Factory capabilities to manage the migration process.

    Diferenças de design entre Netezza e Synapse do AzureDesign differences between Netezza and Azure Synapse

    Ao planejar a migração de um ambiente Netezza herdado para o Azure Synapse, é importante considerar as diferenças de design entre as duas plataformas.As you plan your migration from a legacy Netezza environment to Azure Synapse, it's important to consider the design differences between the two platforms.

    Vários bancos de dados vs. um único e esquemasMultiple databases vs. a single database and schemas

    Em um ambiente Netezza, você pode ter vários bancos de dados separados para diferentes partes do ambiente geral.In a Netezza environment, you might have multiple, separate databases for different parts of the overall environment. Por exemplo, você pode ter um banco de dados separado para tabelas de preparo e ingestão, um banco de dados para tabelas de depósito de núcleo e outro banco de dado para data marts, às vezes chamado de camada semântica.For example, you might have a separate database for data ingestion and staging tables, a database for core warehouse tables, and another database for data marts, sometimes called a semantic layer. O processamento de bancos de dados separados como pipelines ETL/ELT no Azure Synapse pode exigir a implementação de junções de banco de dados cruzado e a movimentação de dados entre os bancos de dado separados.Processing separate databases as ETL/ELT pipelines in Azure Synapse might require implementing cross-database joins and moving data between the separate databases.

    O ambiente Synapse do Azure tem um único banco de dados.The Azure Synapse environment has a single database. Os esquemas são usados para separar tabelas em grupos separados logicamente.Schemas are used to separate tables into logically separate groups. É recomendável que você use um conjunto de esquemas na Synapse de destino do Azure para imitar quaisquer bancos de dados separados que você migrar do Netezza.We recommend that you use a set of schemas in the target Azure Synapse to mimic any separate databases that you migrate from Netezza. Se você usar esquemas no ambiente Netezza, talvez seja necessário usar uma nova Convenção de nomenclatura para mover as tabelas e exibições existentes do Netezza para o novo ambiente.If you use schemas in the Netezza environment, you might need to use a new naming convention to move the existing Netezza tables and views to the new environment. Por exemplo, você pode concatenar o esquema Netezza existente e os nomes de tabela no novo nome de tabela Synapse do Azure e, em seguida, usar nomes de esquema no novo ambiente para manter os nomes de banco de dados separados originais.For example, you might concatenate the existing Netezza schema and table names into the new Azure Synapse table name, and then use schema names in the new environment to maintain the original separate database names.

    Outra opção é usar exibições SQL nas tabelas subjacentes para manter as estruturas lógicas.Another option is to use SQL views over the underlying tables to maintain the logical structures. Há algumas desvantagens potenciais no uso de exibições SQL:There are some potential downsides to using SQL views:

    • As exibições no Azure Synapse são somente leitura, portanto, você deve fazer quaisquer atualizações nos dados nas tabelas base subjacentes.Views in Azure Synapse are read-only, so you must make any updates to the data on the underlying base tables.
    • Se já existirem camadas de exibições, a adição de outra camada de exibições poderá afetar o desempenho.If layers of views already exist, adding another layer of views might affect performance.

    TabelasTables

    Ao migrar tabelas entre diferentes tecnologias, você move fisicamente apenas os dados brutos e os metadados que os descrevem entre os dois ambientes.When you migrate tables between different technologies, you physically move only raw data and the metadata that describes it between the two environments. Você não migra elementos de banco de dados como índices do sistema de origem, pois eles podem não ser necessários ou podem ser implementados de forma diferente no novo ambiente.You don't migrate database elements like indexes from the source system because they might not be needed or they might be implemented differently in the new environment.

    No entanto, entender onde as otimizações de desempenho, como os índices, foram usadas no ambiente de origem pode ser uma indicação útil de onde você pode otimizar o desempenho no novo ambiente.However, understanding where performance optimizations like indexes have been used in the source environment can be a helpful indication of where you might optimize performance in the new environment. Por exemplo, se as consultas no ambiente de Netezza de origem usarem com frequência mapas de zona, você poderá concluir que seria vantajoso criar um índice não clusterizado no ambiente migrado do Synapse do Azure, ou que usar outras técnicas de otimização de desempenho nativo, como a replicação de tabela, pode ser preferível para criar um índice semelhante.For example, if queries in the source Netezza environment frequently use zone maps, you might conclude that it would be advantageous to create a nonclustered index in the migrated Azure Synapse environment, or that using other native performance optimization techniques like table replication might be preferable to creating a like-for-like index.

    Tipos de objeto de banco de dados Netezza sem suporteUnsupported Netezza database object types

    Netezza implementa alguns objetos de banco de dados que não têm suporte direto no Azure Synapse.Netezza implements some database objects that aren't directly supported in Azure Synapse. No entanto, o Azure Synapse oferece métodos que você pode usar para obter a mesma funcionalidade no novo ambiente, conforme descrito na lista a seguir:However, Azure Synapse offers methods that you can use to achieve the same functionality in the new environment, as described in the following list:

    • Mapas de zona: No Netezza, os mapas de zona são criados e mantidos automaticamente para alguns tipos de coluna.Zone maps: In Netezza, zone maps are automatically created and maintained for some column types. Os mapas de zona são usados no momento da consulta nos seguintes tipos de coluna para restringir a quantidade de dados a serem examinados:Zone maps are used at query time on the following column types to restrict the amount of data to be scanned:

      • INTEGER colunas que têm um comprimento de 8 bytes ou menosINTEGER columns that are a length of 8 bytes or less
      • Colunas temporais, incluindo DATE , TIME e TIMESTAMPTemporal columns, including DATE, TIME, and TIMESTAMP
      • CHAR colunas, se elas forem parte de uma exibição materializada e incluídas na ORDER BY cláusulaCHAR columns, if they are part of a materialized view and included in the ORDER BY clause

      Você pode descobrir quais colunas têm mapas de zona usando o utilitário nz_zonemap.You can find out which columns have zone maps by using the nz_zonemap utility. O utilitário é parte do kit de ferramentas de NZ.The utility is part of the NZ Toolkit.

      O Azure Synapse não usa mapas de zona, mas você pode obter resultados semelhantes usando tipos de índice ou particionamento definidos pelo usuário.Azure Synapse doesn't use zone maps, but you can achieve similar results by using user-defined index types or partitioning.

    • CBTS (tabelas base clusterizadas): No Netezza, o CBT mais comum é a tabela de fatos, que tem bilhões de registros.Clustered base tables (CBTs): In Netezza, the most common CBT is the fact table, which has billions of records. A verificação dessa tabela enorme requer um longo tempo de processamento, pois uma verificação de tabela completa pode ser necessária para obter registros relevantes.Scanning such a huge table requires a long processing time because a full table scan might be needed to get relevant records. Ao organizar os registros em CBTs restritivos, o Netezza pode agrupar registros nas mesmas extensões ou próximas.By organizing records in restrictive CBTs, Netezza can group records in the same or nearby extents. O processo também cria mapas de zona que melhoram o desempenho, reduzindo a quantidade de dados a serem verificados.The process also creates zone maps that improve performance by reducing the amount of data to scan.

      No Azure Synapse, você pode obter um resultado semelhante por meio do particionamento ou usando outros tipos de índice.In Azure Synapse, you can achieve a similar result through partitioning or by using other index types.

    • Exibições materializadas: O Netezza recomenda que os usuários criem uma ou mais exibições materializadas em tabelas grandes que tenham muitas colunas e em que apenas algumas colunas são usadas regularmente em consultas.Materialized views: Netezza recommends that users create one or more materialized view over large tables that have many columns, and in which only a few columns are regularly used in queries. Exibições materializadas são mantidas automaticamente pelo sistema quando os dados na tabela base são atualizados.Materialized views are automatically maintained by the system when data in the base table is updated.

      Atualmente, a Microsoft oferece suporte de visualização para exibições materializadas, com a mesma funcionalidade que Netezza, no Azure Synapse.Currently, Microsoft offers preview support for materialized views, with the same functionality as Netezza, in Azure Synapse.

    • Mapeamento de tipo de dados: A maioria dos tipos de dados Netezza tem um equivalente direto no Azure Synapse.Data type mapping: Most Netezza data types have a direct equivalent in Azure Synapse. A tabela a seguir mostra os tipos de dados e as abordagens recomendadas para mapear os tipos de dados.The following table shows the data types and the recommended approaches for mapping the data types.

      Alguns fornecedores de terceiros oferecem ferramentas e serviços que podem automatizar tarefas de migração, incluindo o mapeamento de tipo de dados.Some third-party vendors offer tools and services that can automate migration tasks, including data type mapping. Se uma ferramenta ETL de terceiros como informatica ou Talend já estiver sendo usada no ambiente Netezza, você poderá usar a ferramenta para implementar todas as transformações de dados necessárias.If a third-party ETL tool like Informatica or Talend is already used in the Netezza environment, you can use the tool to implement any data transformations that are required.

    • Sintaxe DML (linguagem de manipulação de dados) do SQL: Você deve estar ciente de algumas diferenças na sintaxe SQL DML entre Netezza SQL e Azure Synapse.SQL Data Manipulation Language (DML) syntax: You should be aware of a few differences in SQL DML syntax between Netezza SQL and Azure Synapse.

      Aqui estão algumas funções importantes e como elas são diferentes:Here are some key functions and how they are different:

      • STRPOS: Em Netezza, a STRPOS função retorna a posição de uma subcadeia de caracteres dentro de uma cadeia de caracteres.STRPOS: In Netezza, the STRPOS function returns the position of a substring within a string. O equivalente no Azure Synapse é a CHARINDEX função e a ordem dos argumentos é invertida.The equivalent in Azure Synapse is the CHARINDEX function, and the order of the arguments is reversed.

        Em Netezza:In Netezza:

        SELECT STRPOS('abcdef', 'def') ...

        É substituído pelo seguinte código no Azure Synapse:Is replaced with the following code in Azure Synapse:

        SELECT CHARINDEX('def', 'abcdef') ...

      • AGE: Netezza dá suporte ao AGE operador para fornecer o intervalo entre dois valores temporais (por exemplo, carimbos de data/hora e datas).AGE: Netezza supports the AGE operator to give the interval between two temporal values (for example, timestamps and dates). Por exemplo:For example:

        SELECT AGE ('23-03-1956', '01-01-2019') FROM ...

        Você pode obter o mesmo resultado no Azure Synapse usando DATEDIFF (Observe a sequência de representação de data):You can achieve the same result in Azure Synapse by using DATEDIFF (note the date representation sequence):

        SELECT DATEDIFF(day, '1956-03-23', '2019-01-01') FROM ...

      • NOW(): O Netezza usa NOW() para representar CURRENT_TIMESTAMP no Azure Synapse.NOW(): Netezza uses NOW() to represent CURRENT_TIMESTAMP in Azure Synapse.

    Funções, procedimentos armazenados e sequênciasFunctions, stored procedures, and sequences

    Ao migrar um data warehouse de um ambiente herdado maduro como Netezza, você geralmente precisa migrar elementos que não sejam tabelas simples e exibições para o novo ambiente de destino.When you migrate a data warehouse from a mature legacy environment like Netezza, you often need to migrate elements other than simple tables and views to the new target environment. Exemplos de elementos que não são da tabela no Netezza que talvez você precise migrar para o Azure Synapse são funções, procedimentos armazenados e sequências.Examples of non-table elements in Netezza that you might need to migrate to Azure Synapse are functions, stored procedures, and sequences. Durante a fase de preparação da migração, você deve criar um inventário de objetos para migrar.During the preparation phase of the migration, you should create an inventory of objects to migrate. No plano de projeto, defina o método de manipulação de todos os objetos e aloque os recursos apropriados para a migração.In the project plan, define the method of handling all objects and allocate the appropriate resources for their migration.

    Você pode encontrar serviços no ambiente do Azure que substituem a funcionalidade implementada como funções ou procedimentos armazenados no ambiente Netezza.You might find services in the Azure environment that replace the functionality implemented as functions or stored procedures in the Netezza environment. Normalmente, é mais eficiente usar os recursos internos do Azure em vez de recodificar as funções Netezza.Usually, it's more efficient to use the built-in Azure capabilities instead of recoding the Netezza functions.

    Além disso, os fornecedores de terceiros oferecem ferramentas e serviços que podem automatizar a migração de funções, procedimentos armazenados e sequências do Netezza.Also, third-party vendors offer tools and services that can automate the migration of functions, stored procedures, and sequences from Netezza. Os exemplos incluem Qlik Sense (anteriormente Attunity) e WhereScape.Examples include Qlik (formerly Attunity) and WhereScape.

    Veja algumas informações adicionais sobre como migrar funções, procedimentos armazenados e sequências:Here's some additional information about migrating functions, stored procedures, and sequences:

    • Funções: Assim como a maioria dos produtos de banco de dados, o Netezza dá suporte a funções de sistema e funções definidas pelo usuário em uma implementação do SQL.Functions: Like most database products, Netezza supports system functions and user-defined functions in a SQL implementation. Quando funções comuns do sistema são migradas para outra plataforma de banco de dados como o Azure Synapse, elas geralmente estão disponíveis no novo ambiente e podem ser migradas sem alteração.When common system functions are migrated to another database platform like Azure Synapse, they generally are available in the new environment and can be migrated without change. Se as funções do sistema tiverem uma sintaxe ligeiramente diferente no novo ambiente, você geralmente poderá automatizar as alterações necessárias.If system functions have slightly different syntax in the new environment, you usually can automate the required changes.

      Talvez seja necessário recodificar funções arbitrárias definidas pelo usuário e funções do sistema que não têm nenhum equivalente no novo ambiente.You might need to recode arbitrary user-defined functions and system functions that have no equivalent in the new environment. Use os idiomas disponíveis no novo ambiente.Use the languages that are available in the new environment. Netezza funções definidas pelo usuário são codificadas usando nzLua ou C++.Netezza user-defined functions are coded by using nzLua or C++. O Azure Synapse usa a popular linguagem Transact-SQL para implementar funções definidas pelo usuário.Azure Synapse uses the popular Transact-SQL language to implement user-defined functions.

    • Procedimentos armazenados: Na maioria dos produtos de banco de dados modernos, você pode armazenar os procedimentos n do banco de dados.Stored procedures: In most modern database products, you can store procedures n the database. Um procedimento armazenado normalmente contém instruções SQL e alguma lógica de procedimento.A stored procedure typically contains SQL statements and some procedural logic. Ele também pode retornar dados ou um status.It might also return data or a status.

      O Netezza fornece a linguagem NZPLSQL, com base em PL/pgSQL, para procedimentos armazenados.Netezza provides the NZPLSQL language, based on PL/pgSQL, for stored procedures. O Azure Synapse dá suporte a procedimentos armazenados usando o T-SQL.Azure Synapse supports stored procedures by using T-SQL. Se você migrar procedimentos armazenados para o Azure Synapse, deverá recodifique-los usando o T-SQL.If you migrate stored procedures to Azure Synapse, you must recode them by using T-SQL.

    • Sequências: No Netezza, uma sequência é um objeto de banco de dados nomeado que é criado por meio de uma CREATE SEQUENCE instrução.Sequences: In Netezza, a sequence is a named database object that's created via a CREATE SEQUENCE statement. Os objetos podem fornecer o valor exclusivo por meio do NEXT() método.Objects can provide the unique value via the NEXT() method. Você pode usar valores para gerar números exclusivos como valores de chave substituta para valores de chave primária.You can use values to generate unique numbers as surrogate key values for primary key values.

      O Azure Synapse não dá suporte ao CREATE SEQUENCE .Azure Synapse doesn't support CREATE SEQUENCE. No Azure Synapse, as sequências são tratadas usando colunas de identidade ou código SQL para criar o próximo número de sequência em uma série.In Azure Synapse, sequences are handled by using identity columns or SQL code to create the next sequence number in a series.

    Metadados e extração de dadosMetadata and data extraction

    Considere as seguintes informações ao planejar como extrair metadados e dados do ambiente Netezza:Consider the following information when you plan how to extract metadata and data from the Netezza environment:

    • Geração de linguagem de definição de dados (DDL): É possível editar Netezza CREATE TABLE e CREATE VIEW scripts existentes para criar as definições equivalentes, com tipos de dados modificados, se necessário, conforme descrito anteriormente.Data Definition Language (DDL) generation: It's possible to edit existing Netezza CREATE TABLE and CREATE VIEW scripts to create the equivalent definitions, with modified data types if necessary, as described earlier. Essa tarefa geralmente envolve a remoção ou a modificação de qualquer cláusula específica para Netezza, como ORGANIZE ON .This task usually involves removing or modifying any clauses that are specific to Netezza, like ORGANIZE ON.

      No Netezza, as informações que especificam a tabela atual e as definições de exibição são mantidas nas tabelas do catálogo do sistema.In Netezza, the information that specifies the current table and view definitions is maintained in system catalog tables. As tabelas de catálogo do sistema são a melhor fonte das informações, pois as tabelas provavelmente estão atualizadas e concluídas.System catalog tables are the best source of the information because the tables likely are up to date and complete. A documentação mantida pelo usuário pode não estar em sincronia com as definições de tabela atuais.User-maintained documentation might not be in sync with current table definitions.

    Você pode acessar as tabelas do catálogo do sistema no Netezza usando um utilitário como nz_ddl_table.You can access system catalog tables in Netezza by using a utility like nz_ddl_table. Você pode usar as tabelas para gerar CREATE TABLE instruções DDL, que podem ser editadas para as tabelas equivalentes no Azure Synapse.You can use the tables to generate CREATE TABLE DDL statements, which you can then edit for the equivalent tables in Azure Synapse. As ferramentas de ETL e de migração de terceiros também usam as informações de catálogo para obter os mesmos resultados.Third-party migration and ETL tools also use the catalog information to achieve the same results.

    • Extração de dados: Você pode extrair dados brutos para migrar de uma tabela Netezza existente para um arquivo simples e delimitado usando utilitários de Netezza padrão, como nzsql e nzunload, e usando tabelas externas.Data extraction: You can extract raw data to migrate from an existing Netezza table into a flat, delimited file by using standard Netezza utilities like nzsql and nzunload, and by using external tables. Compacte os arquivos usando gzip e, em seguida, use AzCopy ou um serviço de transporte de dados do Azure como Azure Data Box para carregar os arquivos no armazenamento de BLOBs do Azure.Compress the files by using Gzip, and then use AzCopy or an Azure data transport service like Azure Data Box to upload the files to Azure Blob Storage.

      Durante um exercício de migração, é importante extrair os dados com a maior eficiência possível.During a migration exercise, it's important to extract data as efficiently as possible. A abordagem recomendada para Netezza é usar tabelas externas, que também é o método mais rápido.The recommended approach for Netezza is to use external tables, which is also the fastest method. Você pode concluir várias extrações em paralelo para maximizar a taxa de transferência para extração de dados.You can complete multiple extracts in parallel to maximize the throughput for data extraction.

    Veja um exemplo simples de uma extração de tabela externa:Here's a simple example of an external table extract:

    CREATE EXTERNAL TABLE '/tmp/export_tab1.CSV' USING (DELIM ',') AS SELECT * from <TABLE-NAME>;

    Se você tiver largura de banda de rede suficiente, poderá extrair dados diretamente de um sistema de Netezza local para tabelas Synapse do Azure ou para o armazenamento de dados do Azure usando processos de Data Factory ou migração de dados de terceiros ou produtos ETL.If you have sufficient network bandwidth, you can extract data directly from an on-premises Netezza system into Azure Synapse tables or into Azure data storage by using Data Factory processes or third-party data migration or ETL products.

    Os formatos de dados recomendados para dados extraídos são arquivos de texto delimitados (também chamados de valores separados por vírgula), arquivos de coluna de linha otimizados ou arquivos parquet.Recommended data formats for extracted data are delimited text files (also called comma-separated values), optimized row columnar files, or Parquet files.

    Para obter informações mais detalhadas sobre o processo de migração de dados e ETL de um ambiente Netezza, consulte a documentação do Netezza sobre o ETL e a carga de migração de dados.For more detailed information about the process of migrating data and ETL from a Netezza environment, see the Netezza documentation about data migration ETL and load.

    Recomendações de ajuste de desempenhoPerformance-tuning recommendations

    Quando você passa para o Azure Synapse de um ambiente Netezza, muitos dos conceitos de ajuste de desempenho que você usa serão familiares.When you move to Azure Synapse from a Netezza environment, many of the performance-tuning concepts you use will be familiar.

    Por exemplo, esses conceitos são os mesmos para ambos os ambientes:For example, these concepts are the same for both environments:

    • A distribuição de dados aloca os dados a serem ingressados no mesmo nó de processamento.Data distribution colocates data to be joined onto the same processing node.
    • Usar o menor tipo de dados para uma coluna específica economiza espaço de armazenamento e acelera o processamento de consulta.Using the smallest data type for a specific column saves storage space and accelerates query processing.
    • Garantir que os tipos de dados das colunas a serem Unidas são idênticos otimiza o processamento de junção, reduzindo a necessidade de transformar os dados para correspondência.Ensuring that data types of columns to be joined are identical optimizes join processing by reducing the need to transform data for matching.
    • Garantir que as estatísticas estejam atualizadas ajuda o otimizador a produzir o melhor plano de execução.Ensuring that statistics are up to date helps the optimizer produce the best execution plan.

    Há algumas diferenças entre plataformas quando se trata de otimização.There are some differences between platforms when it comes to optimization. Na lista a seguir das recomendações de ajuste de desempenho, as diferenças de implementação de nível inferior entre Netezza e Synapse do Azure e alternativas para sua migração são realçadas:In the following list of performance-tuning recommendations, lower-level implementation differences between Netezza and Azure Synapse, and alternatives for your migration, are highlighted:

    • Opções de distribuição de dados: No Netezza e no Azure Synapse, você pode usar uma CREATE TABLE instrução para especificar uma definição de distribuição.Data distribution options: In both Netezza and Azure Synapse, you can use a CREATE TABLE statement to specify a distribution definition. Use DISTRIBUTE ON para Netezza e DISTRIBUTION = para Synapse do Azure.Use DISTRIBUTE ON for Netezza and DISTRIBUTION = for Azure Synapse.

      O Azure Synapse fornece uma maneira adicional de obter junções locais para grandes junções de tabela/tabela grande, geralmente chamadas de uma associação de tabela de tabela /fatos de dimensão em um modelo de esquema em estrela.Azure Synapse provides an additional way to achieve local joins for small table/large table joins, often called a dimension table/fact table join in a star schema model. A abordagem é replicar a tabela de dimensões menor em todos os nós, garantindo assim que qualquer valor da chave de junção para a tabela maior terá uma linha de dimensão correspondente que está disponível localmente.The approach is to replicate the smaller dimension table across all nodes, thereby ensuring that any value of the join key for the larger table will have a matching dimension row that's locally available. A sobrecarga de replicar a tabela de dimensões será relativamente baixa se as tabelas não forem grandes.The overhead of replicating the dimension table is relatively low if the tables are not large. Nesse caso, usar a abordagem de distribuição de hash descrita anteriormente é preferível.In this case, using the hash distribution approach described earlier is preferable.

    • Indexação de dados: O Azure Synapse fornece várias opções de indexação definíveis pelo usuário, mas as opções são diferentes na operação e no uso de mapas de zona gerenciada pelo sistema em Netezza.Data indexing: Azure Synapse provides various user-definable indexing options, but the options are different in operation and usage than system-managed zone maps in Netezza. Para saber mais sobre as opções de indexação no Azure Synapse, consulte tabelas de índice em um pool SQL do Azure Synapse.To learn about the indexing options in Azure Synapse, see Index tables in an Azure Synapse SQL pool.

      Os mapas de zona gerenciados pelo sistema existentes no ambiente de Netezza de origem podem fornecer uma indicação útil de como os dados são usados e fornecer uma indicação de colunas candidatas para indexação no ambiente Synapse do Azure.Existing system-managed zone maps in the source Netezza environment can provide a useful indication of how data is used and provide an indication of candidate columns for indexing in the Azure Synapse environment.

    • Particionamento de dados: Em um data warehouse empresarial, as tabelas de fatos podem conter muitos bilhões de linhas de dados.Data partitioning: In an enterprise data warehouse, fact tables might contain many billions of rows of data. O particionamento é uma maneira de otimizar a manutenção e a consulta nessas tabelas.Partitioning is a way to optimize maintenance and querying in these tables. Dividir as tabelas em partes separadas reduz a quantidade de dados processados ao mesmo tempo.Splitting the tables into separate parts reduces the amount of data processed at one time. O particionamento de uma tabela é definido na CREATE TABLE instrução.Partitioning for a table is defined in the CREATE TABLE statement.

      Somente um campo por tabela pode ser usado para particionamento.Only one field per table can be used for partitioning. O campo usado para o particionamento com frequência é um campo de data porque muitas consultas são filtradas por data ou por um intervalo de datas.The field that's used for partitioning frequently is a date field because many queries are filtered by date or by a date range. Você pode alterar o particionamento de uma tabela após o carregamento inicial.You can change the partitioning of a table after initial load. Para alterar o particionamento de uma tabela, crie novamente a tabela com uma nova distribuição que usa a CREATE TABLE AS SELECT instrução.To change a table's partitioning, re-create the table with a new distribution that uses the CREATE TABLE AS SELECT statement. Para obter uma descrição detalhada do particionamento no Azure Synapse, consulte Particionar tabelas em um pool SQL do Azure Synapse.For a detailed description of partitioning in Azure Synapse, see Partition tables in an Azure Synapse SQL pool.

    • Polybase para carregamento de dados: O polybase é o método mais eficiente de usar para carregar grandes quantidades de dados em um depósito.PolyBase for data loading: PolyBase is the most efficient method to use to load large amounts of data into a warehouse. Você pode usar o polybase para carregar dados em fluxos paralelos.You can use PolyBase to load data in parallel streams.

    • Classes de recursos para gerenciamento de carga de trabalho: O Azure Synapse usa classes de recursos para gerenciar cargas de trabalho.Resource classes for workload management: Azure Synapse uses resource classes to manage workloads. Em geral, classes de recursos grandes fornecem melhor desempenho de consulta individual.In general, large resource classes provide better individual query performance. Classes de recursos menores oferecem níveis mais altos de simultaneidade.Smaller resource classes give you higher levels of concurrency. Você pode usar exibições de gerenciamento dinâmico para monitorar a utilização para ajudar a garantir que os recursos apropriados sejam usados com eficiência.You can use dynamic management views to monitor utilization to help ensure that the appropriate resources are used efficiently.

    Próximas etapasNext steps

    Para obter mais informações sobre como implementar uma migração de Netezza, converse com seu representante de conta Microsoft sobre ofertas de migração local.For more information about implementing a Netezza migration, talk with your Microsoft account representative about on-premises migration offers.