Métodos de migração de pools de SQL dedicados do Azure Synapse Analytics para o Fabric Data Warehouse

Aplica-se a: ✅ Armazém no Microsoft Fabric

Este artigo descreve métodos de migração dos pools de SQL dedicados do Azure Synapse Analytics para o Microsoft Fabric Data Warehouse.

Dica

Para mais informações sobre a estratégia e o planejamento da sua migração, consulte Planejamento da migração: pools de SQL dedicados do Azure Synapse Analytics para o Fabric Data Warehouse.

Uma experiência automatizada para migração de pools de SQL dedicados do Azure Synapse Analytics está disponível usando o Assistente de Migração do Fabric para Data Warehouse. O restante deste artigo contém mais etapas de migração manual.

A tabela a seguir resume métodos para migração do esquema de dados (DDL), código de banco de dados (DML) e dados. A coluna Opção indica detalhes para cada cenário.

Número da opção Opção O que faz Habilidade ou preferência Cenário
1 Fábrica de dados Conversão de esquema (DDL)
Extração de dados
Ingestão de dados
ADF/Pipeline Esquema integrado simplificado (DDL) e migração de dados. Recomendado para tabelas de dimensões.
2 Data Factory com partição Conversão de esquema (DDL)
Extração de dados
Ingestão de dados
ADF/Pipeline Usar opções de particionamento para aumentar o paralelismo de leitura/gravação fornecendo taxa de transferência de dez vezes versus a opção 1, recomendada para tabelas de fatos.
3 Data Factory com código acelerado Conversão de esquema (DDL) ADF/Pipeline Converta e migre primeiro o esquema (DDL). Em seguida, utilize CETAS para extrair e COPY/Data Factory para ingerir dados, garantindo um desempenho geral ideal na ingestão.
4 Código acelerado de procedimentos armazenados Conversão de esquema (DDL)
Extração de dados
Avaliação de códigos
T-SQL Usuário do SQL usando o IDE com controle mais granular sobre em quais tarefas deseja trabalhar. Utilize COPY/Data Factory para consumir dados.
5 Extensão do Projeto do Banco de Dados SQL para Visual Studio Code Conversão de esquema (DDL)
Extração de dados
Avaliação de códigos
Projeto SQL Projeto de banco de dados SQL para implantação com a integração da opção 4. Use COPY ou Data Factory para ingerir dados.
6 CRIAR UMA TABELA EXTERNA COMO SELEÇÃO (CETAS) Extração de dados T-SQL Extração de dados econômica e de alto desempenho no ADLS (Azure Data Lake Storage) Gen2. Utilize COPY/Data Factory para consumir dados.
7 Migrar usando dbt Conversão de esquema (DDL)
conversão de código de banco de dados (DML)
dbt Os usuários de dbt existentes podem usar o adaptador do dbt Fabric para converter seu DDL e DML. Em seguida, você deve migrar dados usando outras opções nesta tabela.

Escolha a carga de trabalho para a migração inicial

Ao decidir por onde começar no projeto de migração do pool de SQL dedicado do Synapse para o Fabric Data Warehouse, escolha uma área de carga de trabalho em que você possa:

  • Comprove a viabilidade da migração para Fabric Data Warehouse entregando rapidamente os benefícios do novo ambiente. Comece pequeno e simples, e prepare-se para múltiplas migrações pequenas.
  • Dê um tempo para que sua equipe técnica interna ganhe experiência relevante com os processos e as ferramentas que eles usarão ao migrar para outras áreas.
  • Crie um modelo específico para o ambiente do Synapse de origem para futuras migrações, bem como as ferramentas e processos em vigor para auxiliar.

Dica

Crie um inventário de objetos para migrar e documente o processo de migração do início ao fim para que você possa repeti-lo em outros pools ou cargas de trabalho SQL dedicadas.

O volume de dados migrados em uma migração inicial deve ser grande o suficiente para demonstrar as capacidades e benefícios do ambiente Fabric Data Warehouse, mas não grande demais para demonstrar valor rapidamente. Um tamanho entre 1 e 10 terabytes é típico.

Migração com o Data Factory do Fabric

Esta seção descreve as opções do Data Factory para usuários familiarizados com os pipelines do Azure Data Factory e Synapse. A interface de arrastar e soltar oferece uma maneira simples de converter DDL e migrar dados.

O Data Factory Fabric pode executar as seguintes tarefas:

  • Converta o esquema (DDL) para a sintaxe do Fabric Data Warehouse.
  • Crie o esquema (DDL) em Fabric Data Warehouse.
  • Migre os dados para Fabric Data Warehouse.

Opção 1. Migração de esquemas e dados - Copiar o assistente de dados e a atividade de cópia ForEach

Esse método utiliza o assistente de dados Data Factory Copy para conectar ao pool SQL dedicado de origem, converter a sintaxe DDL do pool SQL dedicado para Fabric e copiar dados para Fabric Data Warehouse. Você pode selecionar uma ou mais tabelas de destino (para o conjunto de dados TPC-DS há 22 tabelas). Ele gera o ForEach para fazer o loop pela lista de tabelas selecionadas na interface do usuário e gerar 22 threads paralelos da atividade de Copy.

  • 22 SELECT consultas (uma para cada tabela selecionada) são geradas e executadas no pool SQL dedicado.
  • Certifique-se de ter a DWU e a classe de recurso apropriadas para permitir a execução das consultas geradas. Para esse caso, você precisa de um mínimo de DWU1000 com staticrc10 a fim de permitir que no máximo 32 consultas lidem com 22 consultas enviadas.
  • Copiar dados diretamente do pool SQL dedicado para Fabric Data Warehouse com o Data Factory requer staging. O processo de ingestão possui duas fases:
    • A primeira fase extrai dados do pool SQL dedicado para ADLS. Essa fase é chamada de preparação.
    • A segunda fase carrega os dados preparados no Fabric Data Warehouse. A maior parte do tempo de ingestão é gasta na fase de preparação, portanto essa fase tem um efeito significativo no desempenho.

Usar o assistente de cópia para gerar uma atividade ForEach oferece uma interface simples para converter DDL e ingerir tabelas selecionadas do pool SQL dedicado em Fabric Data Warehouse em uma única etapa.

No entanto, essa opção não oferece um throughput geral ideal. O staging e a necessidade de paralelizar leituras e gravações durante a fase de origem a etapa são as principais fontes de latência. Use essa opção apenas para tabelas de dimensões.

Opção 2. Migração de DDL/Dados – Pipeline usando a opção de partição

Para melhorar a taxa de transferência ao carregar tabelas de fatos maiores com um pipeline do Fabric, use uma atividade de Cópia para cada tabela de fatos e ative o particionamento. Essa configuração oferece o melhor desempenho do atividade Copy.

Use as partições físicas da tabela de origem quando disponíveis. Se a tabela não for fisicamente particionada, especifique uma coluna de partição e valores mínimos e máximos para particionamento dinâmico. Na captura de tela a seguir, as opções Source do pipeline especificam um intervalo dinâmico de partições com base na ws_sold_date_sk coluna.

Captura de tela de um pipeline, mostrando a opção para especificar a chave primária ou a data da coluna de partição dinâmica.

O particionamento pode aumentar o throughput de staging. Considere as seguintes orientações ao configurá-lo:

  • Dependendo do intervalo de partições, a operação pode gerar mais de 128 consultas e usar todos os espaços de concorrência no pool SQL dedicado.
  • Você deve escalar para no mínimo DWU6000 para permitir que todas as consultas sejam executadas.
  • Por exemplo, para a tabela web_sales do TPC-DS, 163 consultas foram enviadas para o pool de SQL dedicado. Em DWU6000, 128 consultas foram executadas enquanto 35 consultas ficaram em fila.
  • A partição dinâmica seleciona automaticamente a partição por intervalo. Nesse caso, um intervalo de 11 dias para cada consulta SELECT enviada ao pool de SQL dedicado. Por exemplo:
    WHERE [ws_sold_date_sk] > '2451069' AND [ws_sold_date_sk] <= '2451080')
    ...
    WHERE [ws_sold_date_sk] > '2451333' AND [ws_sold_date_sk] <= '2451344')
    

Para tabelas de fatos, use o Data Factory com a opção de particionamento para aumentar a taxa de transferência.

No entanto, leituras paralelas exigem que você escale o pool SQL dedicado para um DWU mais alto para que ele possa executar as consultas de extração. A particionação melhora a taxa dez vezes em comparação com não usar particionamento. Você pode aumentar o DWU para aumentar a taxa de transferência, mas um pool SQL dedicado permite no máximo 128 consultas ativas.

Para mais informações sobre o mapeamento entre o Synapse DWU e o Fabric, veja Blog: Mapeamento dos pools de SQL dedicados do Azure Synapse para a computação do Fabric Data Warehouse.

Opção 3. Migração DDL - Assistente para copiar dados ForEach Atividade de cópia

As duas opções anteriores são adequadas para bancos de dados menores . Se você precisa de maior rendimento, use esta alternativa:

  1. Extraia os dados do pool de SQL dedicado para o ADLS para reduzir a sobrecarga de preparo.
  2. Use o Data Factory ou o comando COPY para carregar os dados no seu data warehouse.

Você pode continuar a usar o Data Factory para converter seu esquema (DDL). Usando o assistente Copiar dados, você pode selecionar a tabela específica ou Todas as tabelas. Por design, esse método migra o esquema em uma etapa, extraindo o esquema sem linhas usando a condição falsa, TOP 0 na instrução de consulta.

O código de exemplo a seguir aborda a migração de esquema (DDL) com o Data Factory.

Exemplo de código: migração de esquema (DDL) com o Data Factory

Você pode usar o Fabric Pipelines para migrar facilmente seus DDL (esquemas) para objetos de tabela de qualquer fonte Banco de Dados SQL do Azure ou pool SQL dedicado. Esse pipeline migra o esquema (DDL) das tabelas do pool SQL dedicado de origem para o Fabric Data Warehouse.

Captura de tela do Fabric Data Factory mostrando um objeto Lookup resultando em um objeto For Each. No objeto For Each, há atividades para migrar DDL.

Projeto da tubulação: parâmetros

Esse pipeline aceita um parâmetro SchemaName, que você usa para especificar quais esquemas migrar. O esquema padrão é dbo.

No campo Valor padrão, insira uma lista delimitada por vírgulas do esquema de tabela indicando quais esquemas migrar: 'dbo','tpch' para fornecer dois esquemas dbo e tpch.

Captura de tela do Data Factory mostrando a guia Parâmetros de um Pipeline. No campo Nome, 'SchemaName'. No campo valor padrão, 'dbo', 'tpch', indicando que esses dois esquemas devem ser migrados.

Design do pipeline: atividade de pesquisa

Crie uma atividade de pesquisa e defina a conexão para apontar para o banco de dados de origem.

Na guia Configurações:

  • Defina o tipo de armazenamento de dados como externo.

  • Connection é seu pool de SQL dedicado do Azure Synapse. O tipo de conexão é Azure Synapse Analytics.

  • Usar consulta é definido como Consulta.

  • Construa o campo Consulta usando uma expressão dinâmica, assim você pode usar o parâmetro SchemaName em uma consulta que retorna uma lista de tabelas de origem alvo. Selecione Consultar e depois selecione Adicionar conteúdo dinâmico.

    Essa expressão dentro da atividade de pesquisa gera uma instrução SQL para consultar as exibições do sistema a fim de recuperar uma lista de esquemas e tabelas. Ele faz referência ao SchemaName parâmetro para permitir filtragem em esquemas SQL. A saída dessa expressão é um array de esquemas e tabelas SQL que a Atividade ForEach usa como entrada.

    Use o código a seguir para retornar uma lista de todas as tabelas de usuário com seu nome de esquema.

    @concat('
    SELECT s.name AS SchemaName,
    t.name  AS TableName
    FROM sys.tables AS t
    INNER JOIN sys.schemas AS s
    ON t.type = ''U''
    AND s.schema_id = t.schema_id
    AND s.name in (',coalesce(pipeline().parameters.SchemaName, 'dbo'),')
    ')
    

Captura de tela da Data Factory mostrando a aba Configurações de um Pipeline. O botão Consulta é selecionado e o código é colado no campo Consulta.

Design do pipeline: loop ForEach

Para o loop ForEach, configure as seguintes opções na guia Configurações:

  • Desative o Sequencial para permitir que múltiplas iterações sejam executadas simultaneamente.
  • Defina Contagem de lotes como 50, limitando o número máximo de iterações simultâneas.
  • Use conteúdo dinâmico no campo Itens para referenciar a saída da Atividade de Busca. Use o seguinte snippet de código: @activity('Get List of Source Objects').output.value

Captura de tela mostrando a guia de configurações da atividade Loop do ForEach.

Design do pipeline: atividade de Copy no loop ForEach

Dentro da atividade ForEach, adicione uma atividade Copy. Esse método utiliza a Linguagem de Expressões Dinâmicas dentro dos pipelines para construir uma SELECT TOP 0 * FROM <TABLE> instrução que migra apenas o esquema sem dados para um warehouse.

Na guia Origem:

  • Defina o tipo de armazenamento de dados como externo.
  • Connection é seu pool de SQL dedicado do Azure Synapse. O tipo de conexão é Azure Synapse Analytics.
  • Defina Usar Consulta como Consulta.
  • No campo Consulta , cole a consulta dinâmica de conteúdo e use esta expressão que retorna zero linhas, mas inclui o esquema da tabela: @concat('SELECT TOP 0 * FROM ',item().SchemaName,'.',item().TableName)

Captura de tela do Data Factory mostrando a guia Origem da Atividade Copy dentro do Loop ForEach.

Na guia Destino:

  • Defina o tipo de armazenamento de dados como espaço de trabalho.
  • Defina o tipo de armazenamento de dados do workspace como Data Warehouse e defina o Data Warehouse como o warehouse.
  • O esquema e o nome da tabela de destino são definidos usando conteúdo dinâmico.
    • Schema refere-se ao campo da iteração atual, SchemaName com o trecho: @item().SchemaName
    • Referências de tabela TableName com o trecho: @item().TableName

Captura de tela do Data Factory mostrando a guia Destino da Atividade Copy dentro de cada Loop ForEach.

Design do pipeline: coletor

Para coletor, aponte para o Warehouse e faça referência ao nome de tabela e esquema de origem.

Quando você executa esse pipeline, você verá seu data warehouse populado com cada tabela da sua origem, com o esquema correto.

Migração usando procedimentos armazenados em pool SQL dedicado Synapse

Essa opção utiliza procedimentos armazenados para realizar a migração para Fabric Data Warehouse.

Você pode obter os exemplos de código em microsoft/fabric-migration em GitHub.com. Esse código é compartilhado como software livre. Portanto, fique à vontade para contribuir para colaborar e ajudar a comunidade.

O que os procedimentos armazenados do Fabric Migration podem fazer:

  • Converta o esquema (DDL) para a sintaxe do Fabric Data Warehouse.
  • Crie o esquema (DDL) em Fabric Data Warehouse.
  • Extrair dados do pool de SQL dedicado do Synapse para o ADLS.
  • Sinalize a sintaxe Fabric não suportada para códigos T-SQL (procedimentos armazenados, funções, views).

Essa opção é ótima para você se você:

  • Está familiarizado com o T-SQL.
  • Quero usar um ambiente de desenvolvimento integrado para desenvolvimento em T-SQL.
  • Quero ter um controle mais detalhado sobre quais tarefas você realiza.

Você pode executar o procedimento armazenado específico para a conversão de esquema (DDL), extração de dados ou avaliação de código T-SQL.

Para a migração de dados, use COPY INTO ou o Fabric Data Factory para carregar os dados no warehouse.

Migração usando o projeto de banco de dados SQL

Fabric Data Warehouse suporta a extensão SQL Database Projects disponível dentro de Visual Studio Code.

Essa extensão está disponível no Visual Studio Code. Esse recurso permite recursos para controle do código-fonte, testes de bancos de dados e validação de esquema.

Para mais informações sobre controle de versão, veja Visão Geral de Desenvolvimento e Implantação.

Use essa opção se preferir usar o SQL Database Project para sua implantação. Essa opção integra os procedimentos armazenados Fabric Migration ao projeto de banco de dados SQL para proporcionar uma experiência de migração fluida.

Um projeto de banco de dados SQL pode:

  • Converta o esquema (DDL) para a sintaxe do Fabric Data Warehouse.
  • Crie o esquema (DDL) em Fabric Data Warehouse.
  • Extrair dados do pool de SQL dedicado do Synapse para o ADLS.
  • Sinalizar sintaxe sem suporte para códigos T-SQL (procedimentos armazenados, funções, exibições).

Para a migração de dados, use COPY INTO ou o Data Factory para carregar os dados no seu data warehouse.

A equipe Microsoft Fabric CAT fornece scripts PowerShell para extrair, criar e implantar código de esquema (DDL) e banco de dados (DML) por meio de um projeto de banco de dados SQL. Para um passo a passo, consulte microsoft/fabric-migration no GitHub.

Para obter mais informações sobre projetos do Banco de Dados SQL, consulte Introdução à extensão Projetos do Banco de Dados SQL e crie um projeto de banco de dados a partir da linha de comando.

Migração de dados com o CETAS

O comando T-SQL CREATE EXTERNAL TABLE AS SELECT (CETAS) oferece o método mais econômico e ótimo para extrair dados de pools SQL dedicados do Azure Synapse para o Azure Data Lake Storage (ADLS) Gen2.

O que o CETAS pode fazer:

  • Extrair dados para o ADLS.
    • Essa opção exige que você crie o esquema (DDL) no seu warehouse antes de fazer a ingestão dos dados. Considere as opções neste artigo para migrar o esquema (DDL).

As vantagens dessa opção são:

  • A migração envia apenas uma consulta por tabela no pool SQL dedicado da Synapse de origem. Essa consulta não consome todos os slots de concorrência, e não bloqueia ETL ou consultas de produção de clientes concorrentes.
  • Você não precisa escalar para DWU6000, pois apenas um slot de concorrência é usado para cada mesa, então você pode usar DWUs mais baixos.
  • A extração roda em paralelo em todos os nós de computação, e esse recurso melhora o desempenho.

Use o CETAS para extrair os dados para o ADLS como arquivos Parquet. Arquivos Parquet oferecem a vantagem de um armazenamento de dados eficiente com compressão colunar que consome menos largura de banda para ser transferida pela rede. Como o Fabric armazena os dados no formato Parquet Delta, a ingestão de dados é 2,5 vezes mais rápida em comparação com o formato de arquivo de texto, já que não há a sobrecarga da conversão para o formato Delta durante a ingestão.

Para aumentar a capacidade de processamento do CETAS:

  • Adicione operações CETAS paralelas, aumentando o uso de slots de simultaneidade, mas permitindo mais taxa de transferência.
  • Escale o DWU no pool de SQL dedicado do Synapse.

Migração via dbt

Esta seção descreve a opção dbt para clientes que já usam dbt em seu ambiente dedicado de pool SQL Synapse.

O que o dbt pode fazer:

  • Converta o esquema (DDL) para a sintaxe do Fabric Data Warehouse.
  • Crie o esquema (DDL) em Fabric Data Warehouse.
  • Converter código de banco de dados (DML) na sintaxe do Fabric.

A estrutura dbt gera DDL e DML (scripts SQL) em tempo real com cada execução. Ao usar arquivos de modelo expressos em instruções SELECT, o dbt traduz instantaneamente o DDL/DML para qualquer plataforma de destino, bastando alterar o perfil (string de conexão) e o tipo de adaptador.

O framework dbt utiliza uma abordagem que prioriza o código. Migre os dados usando as opções listadas neste documento, como CETAS ou COPY/Data Factory.

Ao usar o adaptador do dbt para o Microsoft Fabric Data Warehouse, você pode migrar projetos dbt existentes voltados para diferentes plataformas, como pools de SQL dedicados do Azure Synapse, Snowflake, Databricks, Google BigQuery ou Amazon Redshift, para um data warehouse com uma simples mudança de configuração.

Para começar com um projeto de dbt que mira Fabric Data Warehouse, veja Tutorial: Configurar dbt para Fabric Data Warehouse. Este documento também lista uma opção para se mover entre diferentes armazéns e plataformas.

Ingestão de dados em Fabric Data Warehouse

Para ingestão no Fabric Data Warehouse, use COPY INTO ou Fabric Data Factory, dependendo da sua preferência. Ambos os métodos são as opções recomendadas e de melhor desempenho, pois possuem rendimento equivalente, dado o pré-requisito de que os arquivos já estejam extraídos para o Azure Data Lake Storage (ADLS) Gen2.

Projete seu processo para o máximo desempenho considerando os seguintes fatores:

  • Com Fabric, não há contenção de recursos ao carregar múltiplas tabelas do ADLS para Fabric Data Warehouse simultaneamente. Como resultado, não há degradação de desempenho ao carregar threads paralelos. A vazão máxima de ingestão é limitada apenas pela capacidade de processamento da sua capacidade do Fabric.
  • O gerenciamento de carga de trabalho do Fabric fornece a separação de recursos alocados para carga e consulta. Não há contenção de recursos enquanto consultas e carregamento de dados são executados ao mesmo tempo.