Requisitos e formato da zona de aterrissagem de espelhamento aberto
Este artigo detalha a zona de aterrissagem e os requisitos de operação de tabela/coluna para espelhamento aberto no Microsoft Fabric.
Importante
Este recurso está em pré-visualização.
Depois de criar seu banco de dados espelhado aberto por meio do portal do Fabric ou da API pública no espaço de trabalho do Fabric, você obtém um URL de zona de aterrissagem no OneLake na página inicial do item de banco de dados espelhado. Esta zona de aterrissagem é onde seu aplicativo para criar um arquivo de metadados e dados terrestres no formato Parquet (descompactado, Snappy, GZIP, ZSTD).
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 aterrissagem para o aplicativo criar um arquivo de metadados e enviar dados por push para o OneLake. O espelhamento monitora esses arquivos na zona de aterrissagem e lê a pasta para obter 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 desembarque
Cada pasta de tabela deve conter um _metadata.json
arquivo.
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 colunas C1
e C2
como uma chave exclusiva composta para a tabela:
{
"keyColumns" : ["C1", "C2"]
}
Se keyColumns
ou _metadata.json
não for especificado, as atualizações/exclusões não são possíveis. Este arquivo pode ser adicionado a qualquer momento, mas uma vez adicionado keyColumns
não pode ser alterado.
Arquivo de dados e formato na zona de desembarque
O espelhamento aberto suporta o Parquet como o formato de arquivo da zona de aterrissagem com ou sem compactação. Os formatos de compressão suportados incluem Snappy, GZIP e ZSTD.
Todos os arquivos Parquet gravados na zona de desembarque têm o seguinte formato:
<RowMarker><DataColumns>
RowMarker
: o nome da coluna é__rowMarker__
(incluindo dois sublinhados antes e depoisrowMarker
).RowMaker
Valores:0
para INSERIR1
para ATUALIZAÇÃO2
para DELETE4
para UPSERT
Ordem de linha: Todos os logs no arquivo devem estar em ordem natural, conforme aplicado na transação. Isso é importante para a mesma linha ser atualizada várias vezes. O espelhamento aberto aplica as alterações usando a ordem nos arquivos.
Ordem dos ficheiros: Os ficheiros devem ser adicionados em números monotonicamente crescentes.
Nome do arquivo: O nome do arquivo tem 20 dígitos, como
00000000000000000001.parquet
para o primeiro arquivo e00000000000000000002.parquet
para o segundo. Os nomes dos ficheiros 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 do editor possa fazer referência a ele para adicionar o próximo arquivo em sequência.
Carga inicial
Para o carregamento inicial de dados em um banco de dados espelhado aberto, todas as linhas devem ter INSERT como marcador de linha. Sem RowMarker
dados em um arquivo, o espelhamento trata o arquivo inteiro 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 completos da linha, com todas as colunas.
Aqui estão alguns dados de parquet de exemplo do histórico da linha para alterar o EmployeeLocation
E0001 EmployeeID
de Redmond para Bellevue. Nesse cenário, a EmployeeID
coluna foi marcada como uma coluna chave no arquivo de metadados na zona de aterrissagem.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue
Se as colunas de chave forem atualizadas, ela deve ser apresentada por um DELETE nas colunas de chave anteriores e por uma linha INSERT com nova chave e dados. Por exemplo, o histórico de linhas para alterar o RowMarker
identificador exclusivo 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 suporta operações de tabela, como adicionar, soltar e renomear tabelas.
Adicionar tabela
O espelhamento aberto seleciona qualquer tabela adicionada à zona de aterrissagem pelo aplicativo. Abra varreduras de espelhamento para novas tabelas em cada iteração.
Mesa suspensa
O espelhamento aberto controla o nome da pasta. Se uma pasta de tabela for excluída, o espelhamento aberto descartará a tabela no banco de dados espelhado.
Se uma pasta for recriada, o espelhamento aberto soltará a tabela e a recriará com os novos dados na pasta, realizada rastreando o ETag da pasta.
Ao tentar soltar 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 preenchidos novamente para a tabela renomeada.
Esquema
Um caminho de tabela pode ser especificado dentro de uma pasta de esquema. Uma zona de aterrissagem de esquema deve ter um nome de <schemaname>.schema
pasta. Pode haver vários esquemas e 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 aterrissagem, 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
- Tipos de parquet simples são suportados na zona de pouso.
- Tipos complexos devem ser escritos como uma cadeia de caracteres JSON.
- Tipos complexos binários como geografia, imagens, etc. podem ser armazenados como tipo binário na zona de pouso.
Adicionar coluna
Se novas colunas forem adicionadas aos arquivos de parquet, o espelhamento aberto adicionará as colunas às tabelas delta.
Eliminar coluna
Se uma coluna for descartada dos novos arquivos de log, abra os repositórios NULL
de espelhamento para essas colunas em novas linhas, e as linhas antigas terão as colunas presentes nos dados. Para excluir a coluna, solte a tabela e crie a pasta da tabela na zona de aterrissagem novamente, o que resultará na recriação da tabela Delta com novo esquema e dados.
O espelhamento aberto sempre une todas as colunas da versão anterior dos dados adicionados. Para remover uma coluna, recrie a tabela/pasta.
Alterar o 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 para essa tabela será interrompida. Depois que a pasta da 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 nome da nova coluna.