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).
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 derowMarker
).- Valores
RowMaker
:0
para INSERIR1
para ATUALIZAR2
para EXCLUIR4
para UPSERT
- Valores
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 e00000000000000000002.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.