Utiliser Azure Data Share pour partager des données avec Azure Data Explorer

Il existe plusieurs façons de partager des données : partages de fichiers, FTP, e-mail, API, etc. Ces méthodes traditionnelles nécessitent que les deux parties créent et gèrent un pipeline de données qui déplace les données entre les équipes et les organisations. Azure Data Explorer vous permet de partager vos données de manière simple et sécurisée avec des personnes de votre entreprise ou des partenaires externes. Le partage se produit en quasi-temps réel, sans nécessiter la création ou la gestion d’un pipeline de données. Toutes les modifications apportées côté fournisseur à la base de données, notamment celles affectant le schéma et les données, sont instantanément disponibles côté client.

Vidéo Azure Friday.

Azure Data Explorer dissocie le stockage du calcul, ce qui permet aux clients d’exécuter plusieurs instances de calcul (en lecture seule) sur le même stockage sous-jacent. Vous pouvez attacher une base de données en tant que base de données abonnée, c’est-à-dire une base de données en lecture seule sur un cluster distant.

Configurer le partage de données

Utilisez Azure Data Share pour envoyer et gérer des invitations et des partages au sein de l’entreprise ou avec des partenaires et clients externes. Azure Data Share utilise une base de données abonnée pour créer un lien symbolique entre les clusters Azure Data Explorer du fournisseur et du consommateur. Cette option vous permet de voir et de gérer dans un seul volet tous vos partages de données, qu’ils soient stockés dans des clusters Azure Data Explorer ou dans d’autres services de données. Azure Data Share vous permet également de partager des données entre des organisations de différents locataires Microsoft Entra.

Notes

L’administrateur des deux clusters peut configurer directement la base de données follower avec diverses API. Ceci est utile dans les scénarios où vous avez besoin de davantage de calcul pour un scale-out en vue d’une création de rapports.

Vous pouvez configurer le partage de données pour les éléments suivants :

Notes

Quand la relation de partage est établie, Azure Data Share crée un lien symbolique entre le cluster Azure Data Explorer du fournisseur et celui du consommateur. Si le fournisseur de données révoque l’accès, le lien symbolique est supprimé et la ou les bases de données partagées ne sont plus accessibles au consommateur de données.

Partage de données dans Azure Data Explorer.

Le fournisseur de données peut partager les données au niveau de la base de données ou du cluster. Le cluster qui partage la base de données est le cluster leader et celui qui reçoit le partage est le cluster abonné. Un cluster abonné peut suivre une ou plusieurs bases de données d’un cluster leader. Le cluster abonné se synchronise à intervalles réguliers pour vérifier si des modifications ont été apportées. Le décalage entre le leader et l’abonné varie de quelques secondes à quelques minutes en fonction de la taille globale des métadonnées et des données. Les données sont mises en cache sur le cluster consommateur et ne sont disponibles que pour les opérations de lecture ou d’interrogation, à l’exception du remplacement de la stratégie de mise en cache à chaud et des autorisations de base de données. Les requêtes s’exécutant sur le cluster abonné se servent du cache local et n’utilisent pas les ressources du cluster leader.

Prérequis

Flux du partage de données

  1. Le fournisseur utilise sa ressource Azure Data Share pour partager une base de données complète ou une table donnée, et pour spécifier l’adresse e-mail du destinataire.
  2. Azure Data Share envoie une invitation par e-mail au destinataire.
  3. Le destinataire ouvre l’invitation par e-mail et sélectionne sa ressource Azure Data Share.
  4. Le destinataire utilise Azure Data Share pour mapper la base de données ou la table partagée vers le cluster approprié.

Fournisseur de données : partager des données

Le fournisseur de données peut partager une base de données complète ou une table spécifique avec le destinataire.

Partage d’une base de données complète

Suivez les instructions de la vidéo pour créer un compte Azure Data Share, ajouter un jeu de données et envoyer une invitation. Fournisseur de données : partager des données.

Partage de tables

Vous pouvez utiliser un modèle Azure Resource Manager pour partager une ou plusieurs tables via Azure Data Share.

Pour partager des tables, effectuez les étapes suivantes :

  1. Créez un modèle et définissez les paramètres appropriés pour le jeu de données et les restrictions de table, puis spécifiez le destinataire de l’invitation. Utilisez les informations du tableau suivant pour configurer le modèle.

    Paramètre Description Exemple
    accountName Nom du compte Azure Data Share du fournisseur.
    location L’emplacement de toutes les ressources. Le leader et le follower doivent se trouver au même emplacement.
    shareName Nom du partage qui sera créé dans le compte Azure Data Share.
    recipientEmail Adresse e-mail du destinataire Azure Data Share.
    databaseName Nom de la base de données du fournisseur.
    databaseResourceId ID de ressource de la base de données du fournisseur.
    externalTablesToExclude Liste des tables externes à exclure. Pour exclure toutes les tables externes, utilisez [« * »]. ["ExternalTable1ToExclude", "ExternalTable2ToExclude"]
    externalTablesToInclude Liste des tables externes à inclure. Pour inclure toutes les tables externes commençant par « Logs », utilisez [« Logs* »]. ["ExternalTable1ToInclude", "ExternalTable2ToInclude"]
    materializedViewsToExclude Liste des vues matérialisées à exclure. Pour exclure toutes les vues matérialisées, utilisez [« * »]. ["Mv11ToExclude", "Mv22ToExclude"]
    materializedViewsToInclude Liste des vues matérialisées à inclure. Pour inclure toutes les vues matérialisées commençant par « Logs », utilisez [« Logs* »]. ["Mv1ToInclude", "Mv2ToInclude"]
    tablesToExclude Liste des tables à exclure. Pour exclure toutes les tables, utilisez [« * »]. ["table1ToExclude", "table2ToExclude"]
    tablesToInclude Liste des tables à inclure. Pour inclure toutes les tables, utilisez [« * »]. ["table1ToInclude", "table2ToInclude"]
    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "accountName": { "type": "String" },
        "location": { "defaultValue": "[resourceGroup().location]", "type": "String" },
        "shareName": { "type": "String" },
        "recipientEmail": { "type": "String" },
        "databaseName": { "type": "String" },
        "databaseResourceId": { "type": "String" },
        "externalTablesToExclude": { "type": "Array" },
        "externalTablesToInclude": { "type": "Array" },
        "materializedViewsToExclude": { "type": "Array" },
        "materializedViewsToInclude": { "type": "Array" },
        "tablesToExclude": { "type": "Array" },
        "tablesToInclude": { "type": "Array" }
      },
      "variables": {
        "invitationSuffix": "[replace(replace(parameters('recipientEmail'),'@', '_'), '.', '_')]"
      },
      "resources": [
        {
          "type": "Microsoft.DataShare/accounts",
          "apiVersion": "2021-08-01",
          "name": "[parameters('accountName')]",
          "location": "[parameters('location')]",
          "identity": {
            "type": "SystemAssigned"
          },
          "properties": {}
        },
        {
          "type": "Microsoft.DataShare/accounts/shares",
          "apiVersion": "2021-08-01",
          "name": "[concat(parameters('accountName'), '/' , parameters('shareName'))]",
          "dependsOn": [
            "[resourceId('Microsoft.DataShare/accounts', parameters('accountName'))]"
          ],
          "properties": {
            "shareKind": "InPlace"
          }
        },
        {
          "type": "Microsoft.DataShare/accounts/shares/invitations",
          "apiVersion": "2021-08-01",
          "name": "[concat(parameters('accountName'), '/',  parameters('shareName'), '/', concat(parameters('shareName'), variables('invitationSuffix')))]",
          "dependsOn": [
            "[resourceId('Microsoft.DataShare/accounts/shares', parameters('accountName'), parameters('shareName'))]",
            "[resourceId('Microsoft.DataShare/accounts', parameters('accountName'))]"
          ],
          "properties": {
            "targetEmail": "[parameters('recipientEmail')]"
          }
        },
        {
          "type": "Microsoft.DataShare/accounts/shares/dataSets",
          "apiVersion": "2021-08-01",
          "name": "[concat(parameters('accountName'), '/', parameters('shareName'), '/', parameters('databaseName'))]",
          "dependsOn": [
            "[resourceId('Microsoft.DataShare/accounts/shares', parameters('accountName'), parameters('shareName'))]",
            "[resourceId('Microsoft.DataShare/accounts', parameters('accountName'))]"
          ],
          "kind": "KustoTable",
          "properties": {
            "kustoDatabaseResourceId": "[parameters('databaseResourceId')]",
            "tableLevelSharingProperties": {
              "externalTablesToExclude": "[parameters('externalTablesToExclude')]",
              "externalTablesToInclude": "[parameters('externalTablesToInclude')]",
              "materializedViewsToExclude": "[parameters('materializedViewsToExclude')]",
              "materializedViewsToInclude": "[parameters('materializedViewsToInclude')]",
              "tablesToExclude": "[parameters('tablesToExclude')]",
              "tablesToInclude": "[parameters('tablesToInclude')]"
            }
          }
        }
      ]
    }
    
  2. Déployez le modèle Azure Resource Manager à l’aide du portail Azure ou de PowerShell.

    déploiement de modèle.

Consommateur de données : recevoir des données

Suivez les instructions de la vidéo pour accepter l’invitation, créer un compte de partage de données et mapper au cluster consommateur.

Consommateur de données : recevoir des données.

Le consommateur de données peut maintenant accéder à son cluster Azure Data Explorer pour accorder des autorisations utilisateur aux bases de données partagées et accéder aux données. Les données ingérées à l’aide de l’ingestion en file d’attente dans le cluster Azure Data Explorer source s’affichent sur le cluster cible en quelques secondes à quelques minutes.

Limites