Compartilhar via


Abrir os requisitos e o formato da zona de destino de espelhamento

Este artigo detalha os requisitos de operação de tabela/coluna e zona de destino para espelhamento aberto no Microsoft Fabric.

Importante

Esse recurso está na versão prévia.

Depois de criar o seu banco de dados espelhado aberto por meio do portal do Fabric ou da API pública no workspace do Fabric, você obtém uma URL da zona de destino no OneLake na Página Inicial do item de banco de dados espelhado. Esta zona de destino é onde o seu aplicativo criará um arquivo de metadados e colocará os dados no formato Parquet (descompactado, Snappy, GZIP, ZSTD).

Captura de tela do portal do Fabric mostrando a localização da URL da Zona de destino na página inicial do item de banco de dados espelhado.

Zona de destino

Para cada banco de dados espelhado, há um local de armazenamento exclusivo no OneLake para metadados e tabelas delta. O espelhamento aberto fornece uma pasta de zona de destino para o aplicativo criar um arquivo de metadados e enviar dados por push para o OneLake. O espelhamento monitora esses arquivos na zona de destino e lê a pasta para identificar novas tabelas e dados adicionados.

Por exemplo, se você tiver tabelas (Table A, Table B, Table C) a serem criadas na zona de destino, crie pastas como as seguintes URLs:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableC

Arquivo de metadados na zona de destino

Cada pasta de tabela deve conter um arquivo _metadata.json.

Este arquivo de metadados de tabela contém um registro JSON para especificar atualmente apenas as colunas de chave exclusivas como keyColumns.

Por exemplo, para declarar as colunas C1 e C2 como uma chave exclusiva composta para a tabela:

{
   "keyColumns" : ["C1", "C2"]
}

Se keyColumns ou _metadata.json não forem especificados, as atualizações/exclusões não serão possíveis. Este arquivo pode ser adicionado a qualquer momento, mas uma vez adicionado, o keyColumns não pode ser alterado.

Arquivo e formato de dados na zona de destino

O espelhamento aberto dá suporte a Parquet como o formato de arquivo de zona de destino com ou sem compactação. Os formatos de compactação com suporte incluem Snappy, GZIP e ZSTD.

Todos os arquivos Parquet gravados na zona de destino têm o seguinte formato:

<RowMarker><DataColumns>

  • RowMarker: o nome da coluna é __rowMarker__ (incluindo dois sublinhados antes e depois de rowMarker).

    • Valores RowMaker:
      • 0 para INSERIR
      • 1 para ATUALIZAR
      • 2 para EXCLUIR
      • 4 para UPSERT
  • Ordem de linha: todos os logs no arquivo devem estar em ordem natural, conforme aplicado na transação. Isso é importante para uma mesma linha que está sendo atualizada várias vezes. O espelhamento aberto aplica as alterações usando a ordem nos arquivos.

  • Ordem do arquivo: os arquivos devem ser adicionados em números de aumento monotônico.

  • Nome do arquivo: o nome do arquivo tem 20 dígitos, como 00000000000000000001.parquet para o primeiro arquivo e 00000000000000000002.parquet para o segundo. Os nomes de arquivo devem estar em números contínuos. Os arquivos serão excluídos pelo serviço de espelhamento automaticamente, mas o último arquivo será deixado para que o sistema publicador possa referenciá-lo para adicionar o próximo arquivo na sequência.

Carga inicial

Para a carga inicial de dados em um banco de dados espelhado aberto, todas as linhas devem ter INSERT como marcador de linha. Sem dados RowMarker em um arquivo, o espelhamento trata todo o arquivo como um INSERT.

Alterações incrementais

O espelhamento aberto lê as alterações incrementais em ordem e as aplica à tabela Delta de destino. A ordem está implícita no log de alterações e na ordem dos arquivos.

As linhas atualizadas devem conter os dados de linha completos, com todas as colunas.

Aqui estão alguns dados Parquet de exemplo do histórico de linhas para alterar o EmployeeLocation para EmployeeID E0001 de Redmond para Bellevue. Nesse cenário, a coluna EmployeeID foi marcada como uma coluna de chave no arquivo de metadados na zona de destino.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

Se as colunas de chave forem atualizadas, elas deverão ser apresentadas por um DELETE em colunas de chave anteriores e por uma linha INSERT com novas chaves e dados. Por exemplo, o histórico de linhas para alterar o identificador exclusivo RowMarker de EmployeeID E0001 para E0002. Você não precisa fornecer todos os dados de coluna para uma linha DELETE, apenas as colunas de chave.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

Operações de tabela

O espelhamento aberto dá suporte a operações de tabela, como adicionar, soltar e renomear tabelas.

Adicionar tabela

O espelhamento aberto seleciona qualquer tabela adicionada à zona de destino pelo aplicativo. Abra verificações de espelhamento para novas tabelas em cada iteração.

Remover tabela

O espelhamento aberto controla o nome da pasta. Se uma pasta de tabela for excluída, o espelhamento aberto removerá a tabela no banco de dados espelhado.

Se uma pasta for recriada, o espelhamento aberto removerá a tabela e a recriará com os novos dados na pasta, realizados acompanhando a ETag da pasta.

Ao tentar remover uma tabela, você pode tentar excluir a pasta, mas há uma chance de que o espelhamento aberto ainda esteja usando os dados da pasta, causando uma falha de exclusão para o editor.

Renomear tabela

Para renomear uma tabela, solte e recrie a pasta com dados iniciais e incrementais. Os dados precisarão ser repovoados para a tabela renomeada.

Esquema

Um caminho de tabela pode ser especificado em uma pasta de esquema. Uma zona de destino de esquema deve ter um nome de pasta <schemaname>.schema. Pode haver vários esquemas e pode haver várias tabelas em um esquema.

Por exemplo, se você tiver esquemas (Schema1, Schema2) e tabelas (Table A, Table B, Table C) a serem criados na zona de destino, crie pastas como os seguintes caminhos no OneLake:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema2.schema/TableC

Colunas de tabela e operações de coluna

Tipos de coluna

  • Há suporte para tipos Parquet simples na zona de destino.
  • Tipos complexos devem ser gravados como uma cadeia de caracteres JSON.
  • Tipos complexos binários, como geografia, imagens etc. podem ser armazenados como tipo binário na zona de destino.

Adicionar coluna

Se novas colunas forem adicionadas aos arquivos Parquet, o espelhamento aberto adicionará as colunas às tabelas Delta.

Excluir coluna

Se uma coluna for removida dos novos arquivos de log, abra repositórios de espelhamento NULL para essas colunas em novas linhas, e as linhas antigas têm as colunas presentes nos dados. Para excluir a coluna, solte a tabela e crie a pasta de tabela na zona de destino novamente, o que resultará na recriação da tabela Delta com novos esquemas e dados.

Abra o espelhamento sempre unindo todas as colunas da versão anterior dos dados adicionados. Para remover uma coluna, recrie a tabela/pasta.

Alterar tipo de coluna

Para alterar um tipo de coluna, solte e recrie a pasta com dados iniciais e incrementais com o novo tipo de coluna. Fornecer um novo tipo de coluna sem recriar a tabela resulta em um erro e a replicação dessa tabela será interrompida. Depois que a pasta de tabela é recriada, a replicação é retomada com novos dados e esquema.

Renomear coluna

Para renomear uma coluna, exclua a pasta da tabela e recrie a pasta com todos os dados e com o novo nome da coluna.

Próxima etapa