Métodos de migração dos conjuntos 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 para migrar dos pools SQL dedicados do Azure Synapse Analytics para o Microsoft Fabric Data Warehouse.

Tip

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

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

A tabela seguinte resume métodos para migrar o esquema de dados (DDL), o código da base de dados (DML) e os dados. A coluna Opção liga para detalhes de cada cenário.

Número da opção Opção O que faz Habilidade ou preferência Cenário
1 Data Factory Conversão do esquema (DDL)
Extração de dados
Ingestão de dados
ADF/Gasoduto Esquema integrado tudo-em-um simplificado (DDL) e migração de dados. Recomendado para tabelas de dimensões.
2 Data Factory com partição Conversão do esquema (DDL)
Extração de dados
Ingestão de dados
ADF/Gasoduto Usando opções de particionamento para aumentar o paralelismo de leitura/gravação, fornecendo dez vezes a taxa de transferência em comparação com a opção 1, recomendada para tabelas de fatos.
3 Data Factory com código otimizado Conversão do esquema (DDL) ADF/Gasoduto Converta e migre o esquema (DDL) primeiro, depois use o CETAS para extrair e o COPY/Data Factory para ingerir dados para um desempenho de ingestão geral ideal.
4 Procedimentos armazenados com código acelerado Conversão do esquema (DDL)
Extração de dados
Avaliação de código
T-SQL Utilizador SQL a usar uma IDE com um controlo mais detalhado sobre as tarefas em que deseja trabalhar. Utilize o COPY/Data Factory para ingerir dados.
5 Extensão SQL Database Project para Visual Studio Code Conversão do esquema (DDL)
Extração de dados
Avaliação de código
Projeto SQL Projeto de Banco de Dados SQL para implantação com a integração da opção 4. Utilize COPY ou o Data Factory para ingerir dados.
6 CRIAR TABELA EXTERNA COMO SELEÇÃO (CETAS) Extração de dados T-SQL Extração de dados de alto desempenho e custo-efetivo para o Azure Data Lake Storage (ADLS) Gen2. Utilize o COPY/Data Factory para ingerir dados.
7 Migrar usando dbt Conversão do esquema (DDL)
conversão de código de banco de dados (DML)
DBT Os usuários dbt existentes podem usar o adaptador dbt Fabric para converter suas DDL e DML. Em seguida, você deve migrar dados usando outras opções nesta tabela.

Escolha uma 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 onde possa:

  • Prove a viabilidade da migração para Fabric Data Warehouse entregando rapidamente os benefícios do novo ambiente. Começa pequeno e simples, e prepara-te para múltiplas migrações pequenas.
  • Permita que sua equipe técnica interna ganhe experiência relevante com os processos e ferramentas que eles usam quando migram para outras áreas.
  • Crie um modelo para migrações adicionais que seja específico para o ambiente Synapse de origem e as ferramentas e processos em vigor para ajudar.

Tip

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

O volume de dados migrados numa migração inicial deve ser suficientemente grande para demonstrar as capacidades e benefícios do ambiente Fabric Data Warehouse, mas não demasiado grande para demonstrar rapidamente o valor. Um tamanho na faixa de 1-10 terabytes é típico.

Migração com o Fabric Data Factory

Esta secção descreve as opções do Data Factory para utilizadores familiarizados com os pipelines Azure Data Factory e Synapse. A interface de arrastar e largar oferece uma forma simples de converter DDL e migrar dados.

O Fabric Data Factory pode executar as seguintes tarefas:

  • Converta o esquema (DDL) para a sintaxe do Fabric Data Warehouse.
  • Crie o esquema (DDL) no Armazém de Dados do Fabric.
  • Migre os dados para Fabric Data Warehouse.

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

Este método utiliza o assistente de dados Data Factory Copy para se ligar 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 TPC-DS conjunto de dados há 22 tabelas). Gera o ForEach para percorrer a lista de tabelas selecionadas na interface do utilizador e lançar 22 threads de atividade de cópia em paralelo.

  • São geradas e executadas 22 SELECT consultas (uma para cada tabela selecionada) no conjunto de SQL dedicado.
  • Certifique-se de que tem a DWU e a classe de recurso adequadas para permitir a execução das consultas geradas. Para este caso, precisará de, no mínimo, DWU1000 com staticrc10 para permitir um máximo de 32 consultas, a fim de lidar 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 tem duas fases:
    • A primeira fase extrai dados do pool SQL dedicado para ADLS. Esta fase chama-se preparação.
    • A segunda fase ingere os dados em etapas para Fabric Data Warehouse. A maior parte do tempo de ingestão é despendida na fase de preparação, pelo que a fase de preparação tem um efeito significativo no desempenho.

Usar o assistente de cópias para gerar uma atividade ForEach proporciona uma interface simples para converter DDL e ingerir tabelas selecionadas do pool SQL dedicado para Fabric Data Warehouse numa só etapa.

No entanto, esta opção não proporciona um rendimento global ideal. O staging e a necessidade de paralelizar leituras e escritas durante a fase source-tostage são as principais fontes de latência. Use esta opção apenas para tabelas de dimensões.

Opção 2. DDL/Migração de dados - Pipeline usando a opção de partição

Para melhorar o rendimento quando carregas tabelas de factos maiores com um pipeline Fabric, usa uma atividade Copy para cada tabela de factos e ativa a particionação. Esta configuração oferece o melhor desempenho do atividade Copy.

Utilize as partições físicas da tabela de origem quando disponíveis. Se a tabela não estiver fisicamente particionada, especifique uma coluna de partição e valores mínimos e máximos para particionamento dinâmico. Na captura de ecrã seguinte, 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, representando a opção para especificar a chave primária ou a data da coluna de partição dinâmica.

O particionamento pode aumentar a taxa de transferência da preparação. 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.
  • Deve escalar até ao mínimo de DWU6000 para permitir que todas as consultas sejam executadas.
  • Por exemplo, para a tabela TPC-DS web_sales , 163 consultas foram enviadas ao pool SQL dedicado. No DWU6000, foram executadas 128 consultas enquanto 35 ficaram em fila.
  • O particionamento dinâmico seleciona automaticamente a partição de intervalo. Nesse caso, um intervalo de 11 dias para cada consulta SELECT enviada ao pool 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 factos, usa o Data Factory com a opção de particionamento para aumentar o rendimento.

No entanto, as leituras paralelas exigem que escales o pool SQL dedicado para uma DWU superior para que possa executar as consultas de extração. A partição melhora a taxa dez vezes em comparação com não usar particionamento. Pode aumentar o DWU para maior rendimento, mas um pool SQL dedicado permite um máximo de 128 consultas ativas.

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

Opção 3. Migração DDL - Assistente de cópia de dados para a atividade de cópia

As duas opções anteriores são adequadas para bases de dados mais pequenas . Se precisar de maior rendimento, use esta alternativa:

  1. Extraia os dados do grupo de SQL dedicado para o ADLS para reduzir a sobrecarga do armazenamento temporário.
  2. Use o Data Factory ou o comando COPY para ingerir os dados no seu armazém.

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

O exemplo de código 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

Pode usar o Fabric Pipelines para migrar facilmente os seus DDL (esquemas) para objetos de tabela de qualquer fonte Base de Dados SQL do Azure ou pool SQL dedicado. Este pipeline migra o esquema (DDL) das tabelas de pool SQL dedicadas de origem para Fabric Data Warehouse.

Captura de ecrã do Fabric Data Factory mostrando um objeto Lookup que leva a um For Each Object. Dentro do For Each Object, há atividades para migrar DDL.

Projeto de tubulação: parâmetros

Este pipeline aceita um parâmetro SchemaName, que se usa para especificar quais os esquemas a 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.

Screenshot da Data Factory mostrando o separador Parâmetros de um Pipeline. No campo Nome, 'SchemaName'. No campo de valor padrão, 'dbo', 'tpch', indicando que estes dois esquemas devem ser migrados.

Design do pipeline: atividade de consulta

Crie uma Atividade de Pesquisa e defina a Conexão para apontar para o banco de dados de origem.

Na guia Configurações:

  • Defina Tipo de armazenamento de dados como Externo.

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

  • A opção Usar consulta está definida como Consulta.

  • Constrói o campo Consulta usando uma expressão dinâmica, para que possas usar o parâmetro SchemaName numa consulta que devolve uma lista de tabelas de origem de destino. 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 para recuperar uma lista de esquemas e tabelas. Refere-se ao SchemaName parâmetro para permitir filtragem em esquemas SQL. A saída desta expressão é um array de esquemas e tabelas SQL que a Atividade ForEach utiliza 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 ecrã do Data Factory a mostrar o separador Definições de um pipeline. O botão Consulta está selecionado e o código foi colado no campo Consulta.

Design de pipeline: "ForEach Loop"

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

  • Desative o Sequencial para permitir que múltiplas iterações corram em simultâneo.
  • 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 Pesquisa. Use o seguinte trecho de código: @activity('Get List of Source Objects').output.value

Captura de ecrã mostrando a guia de configurações da Atividade de Loop ForEach.

Design do pipeline: atividade de cópia dentro do ciclo ForEach

Dentro da Atividade ForEach, adicione uma Atividade de cópia. Este 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 armazém.

Na guia Origem:

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

Captura de ecrã do Data Factory mostrando o separador Origem da atividade de cópia dentro do Loop ForEach.

Na guia Destino:

  • Defina Tipo de armazenamento de dados como Espaço de trabalho.
  • Defina o tipo de armazenamento de dados do Workspace para Data Warehouse e defina o Data Warehouse para o armazém.
  • O esquema da tabela de destino e o nome da tabela são definidos usando conteúdo dinâmico.
    • Schema refere-se ao campo da iteração atual, SchemaName com o excerto: @item().SchemaName
    • Referências da tabela TableName com o fragmento: @item().TableName

Captura de ecrã do Data Factory mostrando o separador Destino da Atividade de Cópia dentro de cada Ciclo ForEach.

Projeto de tubulação: Pia

Para Sink, aponte para o seu armazém e utilize como referência o esquema de origem e o nome da tabela.

Quando executas este pipeline, vês o teu armazém preenchido com cada tabela do teu código-fonte, usando o esquema correto.

Migração através de procedimentos armazenados no pool SQL dedicado Synapse

Esta 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 no GitHub.com. Este código é compartilhado como código aberto, então sinta-se à 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) no Armazém de Dados do Fabric.
  • Extraia dados do pool SQL dedicado do Synapse para o ADLS.
  • Sinalize a sintaxe Fabric não suportada para códigos T-SQL (procedimentos armazenados, funções, vistas).

Esta opção é ótima para si se:

  • Estão familiarizados com T-SQL.
  • Quero usar um ambiente de desenvolvimento integrado para desenvolvimento T-SQL.
  • Quero um controlo mais detalhado sobre as tarefas em que trabalhas.

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, utilize COPY INTO ou o Fabric Data Factory para carregar os dados para o seu armazém de dados.

Migrar usando projetos de banco de dados SQL

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

Esta extensão está disponível dentro do Visual Studio Code. Esse recurso permite recursos para controle do código-fonte, teste de banco de dados e validação de esquema.

Para mais informações sobre controlo de versão, consulte Visão Geral de Desenvolvimento e Implementação.

Use esta opção se preferir usar o SQL Database Project para a sua implementação. Esta opção integra os procedimentos armazenados Fabric Migration no projeto de base 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) no Armazém de Dados do Fabric.
  • Extraia dados do pool 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, utilize COPY INTO ou o Data Factory para carregar os dados para o seu armazém de dados.

A equipa Microsoft Fabric CAT fornece scripts PowerShell para extrair, criar e implementar o esquema (DDL) e o código de base de dados (DML) através de um projeto de base de dados SQL. Para um guia passo a passo, consulte microsoft/fabric-migration no GitHub.

Para mais informações sobre Projetos de Bases de Dados SQL, consulte Começar com a extensão Projetos de Base de Dados SQL e Construir um projeto de base de dados a partir da linha de comandos.

Migração de dados com o CETAS

O comando T-SQL CREATE EXTERNAL TABLE AS SELECT (CETAS) fornece 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:

  • Extraia dados para ADLS.
    • Esta opção exige que crie o esquema (DDL) no seu armazém antes de ingerir os dados. Considere as opções neste artigo para migrar o esquema de base de dados (DDL).

As vantagens desta opção são:

  • A migração submete apenas uma consulta por tabela contra o pool SQL dedicado da Synapse de origem. Esta consulta não utiliza todos os slots de concorrência e não bloqueia os processos ETL nem as consultas de produção dos clientes em execução simultânea.
  • Não precisas de escalar para DWU6000, pois só se usa um único slot de concorrência para cada mesa, por isso podes usar DWUs mais baixos.
  • A extração corre em paralelo em todos os nós de computação, e esta funcionalidade melhora o desempenho.

Utilize o CETAS para extrair dados para o ADLS como ficheiros Parquet. Os ficheiros Parquet têm a vantagem de proporcionar um armazenamento eficiente de dados com compressão por colunas, que consome menos largura de banda ao serem transferidos através da rede. Como o Fabric armazena os dados no formato Parquet Delta, a ingestão de dados é 2,5 vezes mais rápida do que com o formato de ficheiro de texto, uma vez que não existe a sobrecarga da conversão para o formato Delta durante a ingestão.

Para aumentar o rendimento do CETAS:

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

Migração via dbt

Esta secção descreve a opção dbt para clientes que já utilizam dbt no 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) no Armazém de Dados do Fabric.
  • Converta o código do banco de dados (DML) em sintaxe de malha.

O framework dbt gera DDL e DML (scripts SQL) em tempo real a cada execução. Ao usar ficheiros de modelo expressos em instruções SELECT, o dbt traduz instantaneamente o DDL/DML para qualquer plataforma de destino, bastando alterar o perfil (cadeia de ligação) e o tipo de adaptador.

O framework dbt usa uma abordagem centrada no código. Migre os dados utilizando as opções listadas neste documento, como CETAS ou COPY/Data Factory.

Ao utilizar o adaptador dbt para o Microsoft Fabric Data Warehouse, pode migrar projetos dbt existentes destinados a diferentes plataformas, como Azure Synapse Dedicated SQL Pools, Snowflake, Databricks, Google BigQuery ou Amazon Redshift, para um data warehouse com uma simples alteração na configuração.

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

Ingestão de dados em Fabric Data Warehouse

Para ingestão em 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 têm um rendimento de desempenho equivalente, dado o pré-requisito de que os ficheiros já sejam extraídos para o Azure Data Lake Storage (ADLS) Gen2.

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

  • Com Fabric, não há contenção de recursos ao carregar várias tabelas de ADLS para Fabric Data Warehouse simultaneamente. Como resultado, não há degradação de desempenho ao carregar threads paralelos. A taxa máxima de ingestão é limitada apenas pela capacidade de computação da sua capacidade do Fabric.
  • A gestão de carga de trabalho têxtil fornece separação de recursos alocados para carga e consulta. Não há contenda de recursos enquanto as consultas e o carregamento de dados são executados ao mesmo tempo.