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

À medida que o suporte da IBM para a Netezza termina, muitas organizações que utilizam atualmente os sistemas de armazém de dados netezza procuram tirar partido de uma nuvem inovadora, infraestrutura como serviço, e plataforma como uma oferta de serviços 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 a dar o passo de transferir tarefas caras como manutenção de infraestruturas e desenvolvimento de plataformas para um fornecedor 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 o armazenamento de dados da empresa e a análise de big data.Azure Synapse Analytics is a limitless analytics service that brings together enterprise data warehousing and big data analytics. Dá-lhe a liberdade de consultar dados sobre os seus termos em escala, utilizando recursos a pedido ou a provisionados sem servidor.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 planear enquanto migra um sistema netezza legado para Azure Synapse.Learn what to plan for as you migrate a legacy Netezza system to Azure Synapse.

Netezza e Azure Synapse são semelhantes na medida em que cada um é uma base de dados SQL que é projetada para usar técnicas de processamento massivamente paralelas para alcançar um 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-chave:But the two platforms are different in key aspects:

  • Os sistemas Legacy Netezza são instalados no local e utilizam hardware proprietário.Legacy Netezza systems are installed on-premises, and they use proprietary hardware. Azure Synapse é baseada em nuvem e utiliza recursos de computação e armazenamento 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 potencialmente longa da base de dados ou despejo e recarga.Upgrading a Netezza configuration is a major task that involves extra physical hardware and a potentially lengthy database reconfiguration or dump and reload. Em Azure Synapse, os recursos de armazenamento e cálculo são separados.In Azure Synapse, storage and compute resources are separate. Pode utilizar a escalabilidade elástica do Azure para escalar de forma independente para cima ou para baixo.You can use the elastic scalability of Azure to independently scale up or down.
  • Sem um sistema físico para suportar, pode parar ou redimensionar o Azure Synapse conforme necessário para reduzir a utilização de recursos e o custo.Without a physical system to support, you can pause or resize Azure Synapse as needed to reduce resource utilization and cost. Em Azure, você tem acesso a um ambiente de nuvem globalmente disponível, altamente seguro e escalável que inclui Azure Synapse em um ecossistema de ferramentas e capacidades de apoio.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, olhamos para a migração de esquemas, com vista a obter o desempenho equivalente ou aumentado do seu armazém de dados netezza migrado e mercados de dados em 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 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.

A um nível elevado, o processo de migração inclui as etapas listadas no quadro seguinte: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 âmbito: o que queremos migrar?Define scope: what do we want to migrate?
  • Construa um inventário de dados e processos para migrar.Build an inventory of data and processes to migrate.
  • Defina quaisquer alterações de modelos de dados.Define any data model changes.
  • Identifique as melhores ferramentas e funcionalidades de Azure e terceiros para usar.Identify the best Azure and third-party tools and features to use.
  • Equipa de treinação no início da nova plataforma.Train staff early on the new platform.
  • Crie a plataforma alvo do Azure.Set up the Azure target platform.
  • Comece minúsculo e simples.Start small and simple.
  • Automatize sempre que possível.Automate where possible.
  • Utilize ferramentas e funcionalidades incorporadas Azure para reduzir o esforço de migração.Use Azure built-in tools and features to reduce the migration effort.
  • Migrar metadados para tabelas e vistas.Migrate metadata for tables and views.
  • Migrar dados históricos relevantes.Migrate relevant historical data.
  • Migrar ou refactor armazenar procedimentos e processos de negócio.Migrate or refactor stored procedures and business processes.
  • Migrar ou refator ETL ou ELT processos de carga incremental.Migrate or refactor ETL or ELT incremental load processes.
  • Monitorize e documente todas as fases do processo de migração.Monitor and document all stages of the migration process.
  • Use a experiência adquirida para construir um modelo para futuras migrações.Use experience gained to build a template for future migrations.
  • Reengenharia o modelo de dados se necessário utilizando o desempenho e escalabilidade da nova plataforma.Reengineer the data model if necessary by using the new platform's performance and scalability.
  • Teste aplicações e ferramentas de consulta.Test applications and query tools.
  • Benchmark e otimizar o desempenho da consulta.Benchmark and optimize query performance.

Quando migra de um ambiente legado netezza para Azure Synapse, 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

Os ambientes legacy Netezza normalmente evoluem ao longo do tempo para abranger múltiplas áreas temáticas e cargas de trabalho mistas.Legacy Netezza environments typically evolve over time to encompass multiple subject areas and mixed workloads. Quando se decide por onde começar 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:

  • Prova a viabilidade de migrar para Azure Synapse entregando 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 o pessoal técnico interno ganhe experiência com novos processos e ferramentas para que 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 baseado nas ferramentas e processos atuais para usar na migração adicional a partir do ambiente Netezza de origem.Creates a template based on the current tools and processes to use in additional migration from the source Netezza environment.

Um bom candidato para uma migração inicial de um ambiente Netezza que suporta estes objetivos normalmente é aquele que implementa uma carga de trabalho Power BI/analytics 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 pode 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 migra no exercício inicial seja grande o suficiente para demonstrar as capacidades e benefícios do ambiente Azure Synapse com um curto espaço de tempo para demonstrar 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 satisfaz os requisitos está na gama 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 minimize o tempo de risco e de implementação é limitar o âmbito da migração aos mercados 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. Esta abordagem é um bom ponto de partida, pois limita claramente o âmbito da migração e normalmente pode ser alcançada num curto espaço de tempo.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 de data marts apenas não aborda preocupações mais amplas como como migrar ETL e dados históricos.An initial migration of data marts only doesn't address broader concerns like how to migrate ETL and historical data. Você deve abordar estas áreas em fases posteriores e preencher a camada de data mart migrada com os dados e processos que são necessários para construí-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 elevação e mudança vs. abordagem faseadaLift-and-shift approach vs. phased approach

Independentemente dos condutores e âmbito que escolha para a sua migração, 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 elevação e mudança: Nesta abordagem, o modelo de dados existente, como um esquema estelar, é migrado inalterado para a nova plataforma Azure Synapse.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. Neste cenário, a ênfase está em minimizar o risco e o tempo que leva a migrar, reduzindo o trabalho que tem de ser feito para alcançar os benefícios de se deslocar para o ambiente de nuvem azul.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.

    Esta abordagem é um bom ajuste para os ambientes teradata existentes em que um único mercado de dados deve ser migrado, e se os dados já estão em uma estrela bem projetada ou esquema de floco de neve.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. Esta abordagem também é uma boa escolha se tiver tempo e pressões de custos para se mudar 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 faseada que incorpora modificações: Quando um armazém legado evoluiu ao longo do tempo, você pode precisar de reengenhariar o armazém de dados para manter o desempenho necessário ou para suportar novas fontes de dados como fluxos 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 Azure Synapse para os benefícios conhecidos de um ambiente de nuvem escalá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. Este processo pode incluir a alteração do modelo de dados subjacente, como a mudança de um modelo Inmon para Azure Data Vault.This process might include changing the underlying data model, such as moving from an Inmon model to Azure Data Vault.

    A abordagem que recomendamos é, inicialmente, mover o modelo de dados existente para 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 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 utilizando as capacidades do ambiente Azure.It makes sense to automate and orchestrate the migration process by using the capabilities of the Azure environment. Esta abordagem minimiza o efeito no ambiente Netezza existente, que pode já estar a funcionar 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 na cloud.Azure Data Factory is a cloud-based data integration service. Pode utilizar a Data Factory para criar fluxos de trabalho baseados em dados na nuvem para orquestrar e automatizar o movimento 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 oleodutos da Data Factory podem ingerir dados de lojas de dados díspares e, em seguida, processar e transformar os dados utilizando 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. Começa por criar metadados para listar as tabelas de dados que pretende migrar, com as suas localizações, e depois utilizar as capacidades da Data Factory para gerir 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 Azure SynapseDesign differences between Netezza and Azure Synapse

Ao planear a sua migração de um ambiente legado netezza para 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árias bases de dados vs. uma única base de dados e esquemasMultiple databases vs. a single database and schemas

Num ambiente Netezza, você pode ter várias bases de dados separadas 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, pode ter uma base de dados separada para a ingestão de dados e tabelas de encenação, uma base de dados para as tabelas de armazéns centrais, e outra base de dados para os mercados de dados, por vezes chamada 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 semantic layer. O processamento de bases de dados separadas como gasodutos ETL/ELT em Azure Synapse poderá exigir a implementação de juntas de dados cruzadas e de deslocação de dados entre as bases de dados separadas.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 Azure Synapse tem uma única base de dados.The Azure Synapse environment has a single database. Os esquemas são usados para separar as tabelas em grupos logicamente separados.Schemas are used to separate tables into logically separate groups. Recomendamos que utilize uma série de esquemas no target Azure Synapse para imitar quaisquer bases de dados separadas que migrar de Netezza.We recommend that you use a series of schemas in the target Azure Synapse to mimic any separate databases that you migrate from Netezza. Se utilizar esquemas no ambiente Netezza, poderá ter de usar uma nova convenção de nomeação para mover as tabelas e vistas netezza existentes 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 nomes de tabelas no novo nome de mesa Azure Synapse, e, em seguida, usar nomes de esquema no novo ambiente para manter os nomes originais separados da base de dados.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 vistas SQL sobre as tabelas subjacentes para manter as estruturas lógicas.Another option is to use SQL views over the underlying tables to maintain the logical structures. Existem algumas desvantagens potenciais para a utilização de vistas SQL:There are some potential downsides to using SQL views:

  • As vistas em Azure Synapse são apenas de leitura, pelo que deve fazer quaisquer atualizações aos 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 pontos de vista, adicionar outra camada de pontos de vista pode afetar o desempenho.If layers of views already exist, adding another layer of views might affect performance.

TabelasTables

Quando migramos tabelas entre diferentes tecnologias, movemos fisicamente apenas dados brutos e os metadados que o 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. Não migra elementos de base de dados como índices do sistema de origem porque 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, compreender onde otimizações de desempenho como índices têm sido 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 netezza de origem frequentemente usarem mapas de zona, pode concluir que seria vantajoso criar um índice não aglomerado no ambiente migrado do Azure Synapse, ou que usar outras técnicas de otimização de desempenho nativo, como a replicação de tabelas, poderia ser preferível a criar um índice similar.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 objetos de base de dados netezza não suportadosUnsupported Netezza database object types

Netezza implementa alguns objetos de base de dados que não são suportados diretamente em Azure Synapse.Netezza implements some database objects that aren't directly supported in Azure Synapse. No entanto, a Azure Synapse oferece métodos que pode utilizar para obter a mesma funcionalidade no novo ambiente, como descrito na seguinte lista: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: Em Netezza, os mapas de zona são automaticamente criados e mantidos para alguns tipos de colunas.Zone maps: In Netezza, zone maps are automatically created and maintained for some column types. Os mapas de zona são utilizados na hora da consulta nos seguintes tipos de colunas para restringir a quantidade de dados a digitalizar:Zone maps are used at query time on the following column types to restrict the amount of data to be scanned:

    • INTEGER colunas que são um comprimento de 8 bytes ou menosINTEGER columns that are a length of 8 bytes or less
    • Colunas temporais, DATE TIME incluindo, e TIMESTAMPTemporal columns, including DATE, TIME, and TIMESTAMP
    • CHAR colunas, se fazem parte de uma visã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

    Pode descobrir quais as colunas que têm mapas de zona utilizando o utilitário nz_zonemap.You can find out which columns have zone maps by using the nz_zonemap utility. A utilidade faz parte do Kit de Ferramentas NZ.The utility is part of the NZ Toolkit.

    O Azure Synapse não utiliza mapas de zona, mas pode obter resultados semelhantes utilizando tipos de índices definidos pelo utilizador ou partição.Azure Synapse doesn't use zone maps, but you can achieve similar results by using user-defined index types or partitioning.

  • Tabelas de base agrupadas (CBTs): Em Netezza, o CBT mais comum é a tabela de factos, que tem milhares de milhões de registos.Clustered base tables (CBTs): In Netezza, the most common CBT is the fact table, which has billions of records. A digitalização de uma tabela tão grande requer um longo tempo de processamento, porque pode ser necessária uma varredura completa da mesa para obter registos 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 registos em CBTs restritivos, a Netezza pode agrupar registos nas mesmas extensões ou nas proximidades.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 para digitalizar.The process also creates zone maps that improve performance by reducing the amount of data to scan.

    Em Azure Synapse, pode obter um resultado semelhante através da partição ou utilizando outros tipos de índice.In Azure Synapse, you can achieve a similar result through partitioning or by using other index types.

  • Vistas materializadas: O Netezza recomenda que os utilizadores criem uma ou mais visualizações materializadas sobre grandes tabelas que têm muitas colunas, e nas quais 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. As vistas materializadas são automaticamente mantidas 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 pré-visualização para visualizações materializadas, com a mesma funcionalidade que o Netezza, em Azure Synapse.Currently, Microsoft offers preview support for materialized views, with the same functionality as Netezza, in Azure Synapse.

  • Mapeamento do tipo de dados: A maioria dos tipos de dados netezza tem um equivalente direto em Azure Synapse.Data type mapping: Most Netezza data types have a direct equivalent in Azure Synapse. A tabela seguinte 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 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 a Informatica ou o Talend já for utilizada no ambiente Netezza, pode utilizar a ferramenta para implementar quaisquer transformações de dados que sejam 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 da linguagem de manipulação de dados SQL (DML): Deve estar ciente de algumas diferenças na sintaxe DML SQL 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-chave e como são diferentes:Here are some key functions and how they are different:

    • STRPOS: Em Netezza, a STRPOS função devolve a posição de um sub-cordão dentro de uma corda.STRPOS: In Netezza, the STRPOS function returns the position of a substring within a string. O equivalente em 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 em Azure Synapse:Is replaced with the following code in Azure Synapse:

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

    • AGE: Netezza suporta o AGE operador para dar o intervalo entre dois valores temporais (por exemplo, timetamps 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 ...

      Pode obter o mesmo resultado em Azure Synapse utilizando DATEDIFF (note a sequência de representação da 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(): Netezza usa NOW() para representar CURRENT_TIMESTAMP em Azure Synapse.NOW(): Netezza uses NOW() to represent CURRENT_TIMESTAMP in Azure Synapse.

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

Quando migra um armazém de dados de um ambiente legado maduro como o Netezza, muitas vezes precisa de migrar elementos que não tabelas simples e vistas para o novo ambiente alvo.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 não-tabela em Netezza que pode precisar de migrar para 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, 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 do projeto, definir o método de manuseamento de todos os objetos e alocar os recursos adequados para a sua migração.In the project plan, define the method of handling all objects and allocate the appropriate resources for their migration.

Poderá encontrar serviços no ambiente Azure que substituam 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 as capacidades Azure incorporadas em vez de recoding 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. Exemplos incluem Qlik (anteriormente Attunity) e WhereScape.Examples include Qlik (formerly Attunity) and WhereScape.

Aqui estão algumas informações adicionais sobre funções migratórias, procedimentos armazenados e sequências:Here's some additional information about migrating functions, stored procedures, and sequences:

  • Funções: Tal como a maioria dos produtos de base de dados, o Netezza suporta funções do sistema e funções definidas pelo utilizador numa implementação SQL.Functions: Like most database products, Netezza supports system functions and user-defined functions in a SQL implementation. Quando as funções comuns do sistema são migradas para outra plataforma de base de dados como o Azure Synapse, geralmente estão disponíveis no novo ambiente e podem ser migradas sem alterações.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 sintaxe ligeiramente diferente no novo ambiente, normalmente pode automatizar as alterações necessárias.If system functions have slightly different syntax in the new environment, you usually can automate the required changes.

    Poderá ser necessário recodificar funções e funções do sistema arbitrárias definidas pelo utilizador que não tenham equivalentes 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. As funções definidas pelo utilizador netezza são codificadas utilizando nzLua ou C++.Netezza user-defined functions are coded by using nzLua or C++. Azure Synapse usa a popular linguagem Transact-SQL para implementar funções definidas pelo utilizador.Azure Synapse uses the popular Transact-SQL language to implement user-defined functions.

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

    Netezza fornece a língua NZPLSQL, baseada em PL/pgSQL, para procedimentos armazenados.Netezza provides the NZPLSQL language, based on PL/pgSQL, for stored procedures. A Azure Synapse suporta procedimentos armazenados utilizando T-SQL.Azure Synapse supports stored procedures by using T-SQL. Se migrar os procedimentos armazenados para a Azure Synapse, deve recodificá-los utilizando o T-SQL.If you migrate stored procedures to Azure Synapse, you must recode them by using T-SQL.

  • Sequências: Em Netezza, uma sequência é um objeto de base de dados nomeado que é criado através de uma CREATE SEQUENCE declaraçã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 único através do NEXT() método.Objects can provide the unique value via the NEXT() method. Pode utilizar valores para gerar números únicos como valores-chave de substituição para valores-chave primários.You can use values to generate unique numbers as surrogate key values for primary key values.

    Azure Synapse não CREATE SEQUENCE suporta.Azure Synapse doesn't support CREATE SEQUENCE. Em Azure Synapse, as sequências são manuseadas utilizando colunas de identidade ou código SQL para criar o próximo número de sequência numa 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 quando planeia 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, como 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. Esta tarefa geralmente envolve remover ou modificar quaisquer cláusulas específicas da Netezza, como ORGANIZE ON .This task usually involves removing or modifying any clauses that are specific to Netezza, like ORGANIZE ON.

    Na Netezza, as informações que especificam as definições de tabela e visualização atuais são mantidas nas tabelas de catálogos de sistemas.In Netezza, the information that specifies the current table and view definitions is maintained in system catalog tables. As tabelas de catálogos de sistemas são a melhor fonte da informação porque as tabelas provavelmente estão atualizadas e completas.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 utilizador pode não estar sincronizada com as definições atuais da tabela.User-maintained documentation might not be in sync with current table definitions.

Você pode aceder a tabelas de catálogos de sistemas em 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. Pode utilizar as tabelas para gerar CREATE TABLE declarações DDL, que pode então editar para as tabelas equivalentes em 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. A migração de terceiros e as ferramentas ETL também utilizam as informações do 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: Pode extrair dados brutos para migrar de uma tabela Netezza existente para um ficheiro plano e delimitado utilizando utilitários padrão netezza 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. Comprima os ficheiros utilizando gzip e, em seguida, utilize o AzCopy ou um serviço de transporte de dados Azure como a Azure Data Box para fazer o upload dos ficheiros para o armazenamento do Azure Blob.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 dados o mais eficientemente 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 also is the fastest method. Pode completar vários extratos em paralelo para maximizar a produção para a extração de dados.You can complete multiple extracts in parallel to maximize the throughput for data extraction.

Aqui está um exemplo simples de um extrato de mesa externo: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 tiver largura de banda de rede suficiente, pode extrair dados diretamente de um sistema Netezza no local para as tabelas Azure Synapse ou para o armazenamento de dados Azure utilizando 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 ficheiros de texto delimitados (também chamados valores separados por vírgula), ficheiros colunares de linha otimizados ou ficheiros 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 a partir de um ambiente Netezza, consulte a documentação netezza sobre migração de dados ETL e carga.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 afinação de desempenhoPerformance-tuning recommendations

Quando se muda para Azure Synapse a partir de um ambiente Netezza, muitos dos conceitos de afinação 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, estes conceitos são os mesmos para ambos os ambientes:For example, these concepts are the same for both environments:

  • A distribuição de dados coloca dados a serem associados ao mesmo nó de processamento.Data distribution colocates data to be joined onto the same processing node.
  • A utilização do menor tipo de dados para uma coluna específica salva o espaço de armazenamento e acelera o processamento de consultas.Using the smallest data type for a specific column saves storage space and accelerates query processing.
  • Garantir que os tipos de dados de colunas a aderir são otimizações idênticas juntam-se ao processamento, reduzindo a necessidade de transformar dados para combinar.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 estão 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.

Existem algumas diferenças entre plataformas no que diz respeito à otimização.There are some differences between platforms when it comes to optimization. Na lista seguinte de recomendações de afinação de desempenho, destacam-se as diferenças de implementação de nível inferior entre Netezza e Azure Synapse, bem como alternativas para a sua migração: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: Tanto na Netezza como na Azure Synapse, pode utilizar uma CREATE TABLE declaraçã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. Utilize DISTRIBUTE ON para Netezza e DISTRIBUTION = para Azure Synapse.Use DISTRIBUTE ON for Netezza and DISTRIBUTION = for Azure Synapse.

    Azure Synapse fornece uma forma adicional de alcançar as juntas locais para pequenas juntas de mesa/mesa grande, muitas vezes chamada de mesa/tabela de fatos de dimensão, juntando-se a um modelo de esquema estelar.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ão menor em todos os nós, garantindo assim que qualquer valor da chave de união para a mesa 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 da replicação da tabela de dimensões é 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. Neste caso, é preferível a utilização da abordagem de distribuição de haxixe descrita anteriormente.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 utilizador, mas as opções são diferentes em funcionamento e utilização do que os mapas de zona geridos 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 em Azure Synapse, consulte as tabelas de índices numa piscina Azure Synapse SQL.To learn about the indexing options in Azure Synapse, see Index tables in an Azure Synapse SQL pool.

    Os mapas de zona geridos pelo sistema existentes no ambiente netezza de origem podem fornecer uma indicação útil de como os dados são usados e fornecer uma indicação de colunas de candidatos para indexação no ambiente Azure Synapse.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.

  • Partição de dados: Num armazém de dados da empresa, as tabelas de factos podem conter muitos biliões de filas de dados.Data partitioning: In an enterprise data warehouse, fact tables might contain many billions of rows of data. A partilha é uma forma de otimizar a manutenção e consulta nestas tabelas.Partitioning is a way to optimize maintenance and querying in these tables. Dividir as tabelas em peças separadas reduz a quantidade de dados processados de uma só vez.Splitting the tables into separate parts reduces the amount of data processed at one time. A partilha para uma tabela é definida na CREATE TABLE declaração.Partitioning for a table is defined in the CREATE TABLE statement.

    Apenas um campo por tabela pode ser utilizado para a partilha.Only one field per table can be used for partitioning. O campo que é usado para a partilha frequentemente é um campo de data porque muitas consultas são filtradas por data ou por um intervalo de data.The field that's used for partitioning frequently is a date field because many queries are filtered by date or by a date range. Pode alterar a divisão de uma mesa após a carga inicial.You can change the partitioning of a table after initial load. Para alterar a divisão de uma mesa, recoremos a tabela com uma nova distribuição que utilize a CREATE TABLE AS SELECT declaraçã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 da partição em Azure Synapse, consulte as mesas de partição numa piscina SQL 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: PolyBase é o método mais eficiente para usar para carregar grandes quantidades de dados em um armazém.PolyBase for data loading: PolyBase is the most efficient method to use to load large amounts of data into a warehouse. Pode utilizar o PolyBase para carregar dados em fluxos paralelos.You can use PolyBase to load data in parallel streams.

  • Classes de recursos para gestão da carga de trabalho: A Azure Synapse usa classes de recursos para gerir cargas de trabalho.Resource classes for workload management: Azure Synapse uses resource classes to manage workloads. Em geral, as grandes classes de recursos proporcionam um melhor desempenho individual.In general, large resource classes provide better individual query performance. Classes de recursos mais pequenas dão-lhe níveis mais elevados de concordância.Smaller resource classes give you higher levels of concurrency. Pode utilizar pontos de vista dinâmicos de gestão para monitorizar a utilização para ajudar a garantir que os recursos apropriados são utilizados de forma eficiente.You can use dynamic management views to monitor utilization to help ensure that the appropriate resources are used efficiently.

Próximos passosNext steps

Para obter mais informações sobre a implementação de uma migração Netezza, fale com o representante da sua conta da Microsoft sobre as ofertas de migração no local.For more information about implementing a Netezza migration, talk with your Microsoft account representative about on-premises migration offers.