Exigences et format de la zone d’atterrissage pour la mise en miroir ouverte
Cet article détaille les exigences relatives aux opérations de zone d’atterrissage et de table/colonne pour la mise en miroir ouverte dans Microsoft Fabric.
Important
Cette fonctionnalité est en préversion.
Une fois que vous avez créé votre base de données mise en miroir ouverte via le portail Fabric ou l’API publique dans votre espace de travail Fabric, vous obtenez une URL de zone d’atterrissage dans OneLake dans la page d’accueil de votre élément de base de données mis en miroir. Cette zone d’atterrissage est l’emplacement où votre application crée un fichier de métadonnées et des données terrestres au format Parquet (non compressé, Snappy, GZIP, ZSTD).
Zone d'atterrissage
Pour chaque base de données mise en miroir, il existe un emplacement de stockage unique dans OneLake pour les métadonnées et les tables delta. La mise en miroir ouverte fournit un dossier de zone d’atterrissage pour que l’application crée un fichier de métadonnées et envoie des données dans OneLake. La mise en miroir surveille ces fichiers dans la zone d’atterrissage et lit le dossier pour les nouvelles tables et données ajoutées.
Par exemple, si vous avez des tables (Table A
, Table B
, Table C
) à créer dans la zone d’atterrissage, créez des dossiers comme les URL suivantes :
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
Fichier de métadonnées dans la zone d’atterrissage
Chaque dossier de table doit contenir un fichier _metadata.json
.
Ce fichier de métadonnées de table contient un enregistrement JSON pour spécifier uniquement les colonnes clés uniques en tant que keyColumns
.
Par exemple, pour déclarer des colonnes C1
et C2
en tant que clé unique composée pour la table :
{
"keyColumns" : ["C1", "C2"]
}
Si keyColumns
ou _metadata.json
n’est pas spécifié, les mises à jour/suppressions ne sont pas possibles. Ce fichier peut être ajouté à tout moment, mais une fois ajouté keyColumns
ne peut pas être modifié.
Fichier de données et format dans la zone d’atterrissage
La mise en miroir ouverte prend en charge Parquet comme format de fichier de zone d’atterrissage avec ou sans compression. Les formats de compression pris en charge incluent Snappy, GZIP et ZSTD.
Tous les fichiers Parquet écrits dans la zone d’atterrissage ont le format suivant :
<RowMarker><DataColumns>
RowMarker
: le nom de colonne est__rowMarker__
(y compris deux traits de soulignement avant et aprèsrowMarker
).RowMaker
valeurs :0
pour INSERT1
pour UPDATE2
pour DELETE4
pour UPSERT
Ordre de ligne : tous les journaux d’activité du fichier doivent être dans l’ordre naturel comme appliqué dans la transaction. Cela est important pour la même ligne mise à jour plusieurs fois. La mise en miroir ouverte applique les modifications à l’aide de l’ordre dans les fichiers.
Ordre de fichier : les fichiers doivent être ajoutés en nombres monotoniquement croissants.
Nom de fichier : le nom de fichier est de 20 chiffres, comme
00000000000000000001.parquet
pour le premier fichier et00000000000000000002.parquet
pour la seconde. Les noms de fichiers doivent être en nombres continus. Les fichiers seront supprimés automatiquement par le service de mise en miroir, mais le dernier fichier sera laissé afin que le système d’éditeur puisse le référencer pour ajouter le fichier suivant dans la séquence.
Chargement initial
Pour la charge initiale des données dans une base de données mise en miroir ouverte, toutes les lignes doivent avoir INSERT comme marqueur de ligne. Sans RowMarker
données dans un fichier, la mise en miroir traite l’intégralité du fichier en tant qu’INSERT.
Changements incrémentiels
Ouvrez la mise en miroir lit les modifications incrémentielles dans l’ordre et les applique à la table Delta cible. L’ordre est implicite dans le journal des modifications et dans l’ordre des fichiers.
Les lignes mises à jour doivent contenir les données de ligne complètes, avec toutes les colonnes.
Voici quelques exemples de données parquet de l’historique des lignes pour modifier la EmployeeLocation
pour EmployeeID
E0001 de Redmond à Bellevue. Dans ce scénario, la colonne EmployeeID
a été marquée comme colonne clé dans le fichier de métadonnées dans la zone d’atterrissage.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue
Si des colonnes clés sont mises à jour, il doit être présenté par une fonction DELETE sur les colonnes clés précédentes et une ligne INSERT avec de nouvelles clés et des données. Par exemple, l’historique des lignes pour modifier l’identificateur unique RowMarker
pour EmployeeID
E0001 à E0002. Vous n’avez pas besoin de fournir toutes les données de colonne pour une ligne DELETE, uniquement les colonnes clés.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue
Opérations de tables
La mise en miroir ouverte prend en charge les opérations de table telles que l’ajout, la suppression et le renommage des tables.
Ajouter une table
Ouvrez la mise en miroir récupère n’importe quelle table ajoutée à la zone d’atterrissage par l’application. Ouvrez les analyses de mise en miroir pour les nouvelles tables dans chaque itération.
Supprimer une table
La mise en miroir ouverte effectue le suivi du nom du dossier. Si un dossier de table est supprimé, l’ouverture de la mise en miroir supprime la table dans la base de données mise en miroir.
Si un dossier est recréé, l’ouverture de la mise en miroir supprime la table et la recrée avec les nouvelles données du dossier, effectuée en suivant l’ETag pour le dossier.
Lorsque vous tentez de supprimer une table, vous pouvez essayer de supprimer le dossier, mais il est possible que l’ouverture de la mise en miroir utilise toujours les données du dossier, ce qui provoque un échec de suppression pour l’éditeur.
Changement de nom de table
Pour renommer une table, supprimez et recréez le dossier avec des données initiales et incrémentielles. Les données doivent être renseignées à nouveau dans la table renommée.
schéma
Un chemin d’accès de table peut être spécifié dans un dossier de schéma. Une zone d’atterrissage de schéma doit avoir un nom de dossier <schemaname>.schema
. Il peut y avoir plusieurs schémas et il peut y avoir plusieurs tables dans un schéma.
Par exemple, si vous avez des schémas (Schema1
, Schema2
) et des tables (Table A
, Table B
, Table C
) à créer dans la zone d'atterrissage, créez des dossiers comme les chemins suivants dans 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
Colonnes de table et opérations de colonne
Types de colonnes
- Les types parquet simples sont pris en charge dans la zone d’atterrissage.
- Les types complexes doivent être écrits sous forme de chaîne JSON.
- Les types complexes binaires tels que la géographie, les images, etc. peuvent être stockés en tant que type binaire dans la zone d’atterrissage.
Ajouter une colonne
Si de nouvelles colonnes sont ajoutées aux fichiers Parquet, l’ouverture de la mise en miroir ajoute les colonnes aux tables delta.
Supprimer la colonne
Si une colonne est supprimée des nouveaux fichiers journaux, ouvrez les magasins de mise en miroir NULL
pour ces colonnes dans les nouvelles lignes et les anciennes lignes ont les colonnes présentes dans les données. Pour supprimer la colonne, annulez la table et créez à nouveau le dossier de la table dans la zone d’atterrissage, ce qui entraînera la récréation de la table Delta avec de nouveaux schémas et données.
La mise en miroir ouverte conserve toujours toutes les colonnes de la version précédente des données ajoutées. Pour supprimer une colonne, recréez la table/dossier.
Modifier le type de colonne
Pour modifier un type de colonne, supprimez et recréez le dossier avec des données initiales et incrémentielles avec le nouveau type de colonne. La fourniture d’un nouveau type de colonne sans recréer la table génère une erreur et la réplication de cette table s’arrête. Une fois le dossier de table recréé, la réplication reprend avec de nouvelles données et schémas.
Renommer la colonne
Pour renommer une colonne, supprimez le dossier de table et recréez le dossier avec toutes les données et avec le nouveau nom de colonne.