Partager via


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).

Capture d’écran du portail Fabric montrant l’emplacement de l’URL de la zone d’atterrissage dans la page d’accueil de l’élément de base de données en miroir.

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ès rowMarker).

    • RowMaker valeurs :
      • 0 pour INSERT
      • 1 pour UPDATE
      • 2 pour DELETE
      • 4 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 et 00000000000000000002.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.

Étape suivante