Utilizar o Azure Data Share para partilhar dados com o Azure Data Explorer

Existem muitas formas tradicionais de partilhar dados, como através de partilhas de ficheiros, FTP, e-mail e APIs. Estes métodos exigem que ambas as partes criem e mantenham um pipeline de dados que mova dados entre equipas e organizações. Com o Azure Data Explorer, pode partilhar os seus dados de forma fácil e segura com pessoas na sua empresa ou parceiros externos. A partilha ocorre quase em tempo real, sem necessidade de criar ou manter um pipeline de dados. Todas as alterações à base de dados, incluindo o esquema e os dados, do lado do fornecedor estão imediatamente disponíveis no lado do consumidor.

Vídeo do Azure Friday.

O Azure Data Explorer desassocia o armazenamento e a computação, o que permite aos clientes executar várias instâncias de computação (só de leitura) no mesmo armazenamento subjacente. Pode anexar uma base de dados como uma base de dados de seguidores, que é uma base de dados só de leitura num cluster remoto.

Configurar a partilha de dados

Utilize o Azure Data Share para enviar e gerir convites e partilhas em toda a empresa ou com parceiros e clientes externos. O Azure Data Share utiliza uma base de dados de seguidores para criar uma ligação simbólica entre o fornecedor e o cluster do Azure Data Explorer do consumidor. Esta opção fornece-lhe um único painel para ver e gerir todas as partilhas de dados em clusters do Azure Data Explorer e outros serviços de dados. O Azure Data Share também lhe permite partilhar dados entre organizações em diferentes inquilinos Microsoft Entra.

Nota

Uma Administração em ambos os clusters pode configurar diretamente a base de dados do seguidor com várias APIS. Isto é útil em cenários em que precisa de computação adicional para aumentar horizontalmente para relatórios.

Pode configurar a partilha de dados para o seguinte:

Nota

Quando a relação de partilha é estabelecida, o Azure Data Share cria uma ligação simbólica entre o fornecedor e o cluster do Azure Data Explorer do consumidor. Se o fornecedor de dados revogar o acesso, a ligação simbólica é eliminada e as bases de dados partilhadas deixarão de estar disponíveis para o consumidor de dados.

Partilha de dados do Azure Data Explorer.

O fornecedor de dados pode partilhar os dados ao nível da base de dados ou ao nível do cluster. O cluster que partilha a base de dados é o cluster líder e o cluster que recebe a partilha é o cluster de seguidores. Um cluster de seguidores pode seguir uma ou mais bases de dados de cluster líder. O cluster de seguidores sincroniza periodicamente para verificar se existem alterações. O tempo de desfasamento entre o líder e o seguidor varia de alguns segundos para alguns minutos, dependendo do tamanho geral dos metadados e dos dados. Os dados são colocados em cache no cluster de consumidores e só estão disponíveis para operações de leitura ou consulta, com uma exceção para substituir a política de colocação em cache frequente e as permissões da base de dados. As consultas em execução no cluster de seguidores utilizam a cache local e não utilizam os recursos do cluster principal.

Pré-requisitos

Fluxo de partilha de dados

  1. O fornecedor utiliza o recurso Data Share do Azure para partilhar uma base de dados completa ou uma tabela específica e especificar o endereço de e-mail do recetor.
  2. O Azure Data Share envia um convite por e-mail para o recetor.
  3. O recetor abre o convite por e-mail e seleciona o recurso do Azure Data Share.
  4. O recetor utiliza Data Share do Azure para mapear a base de dados ou tabela partilhada para o cluster adequado.

Fornecedor de dados – partilha dados

O fornecedor de dados pode partilhar uma base de dados completa ou uma tabela específica com o recetor.

Partilhar uma base de dados completa

Siga as instruções no vídeo para criar uma conta do Azure Data Share, adicionar um conjunto de dados e enviar um convite. Fornecedor de dados – partilhar dados.

Partilhar tabelas

Pode utilizar um modelo de Resource Manager do Azure para partilhar uma ou mais tabelas através do Azure Data Share.

Utilize os seguintes passos para partilhar tabelas:

  1. Crie um modelo e defina os parâmetros adequados no conjunto de dados, restrições de tabela e especifique o destinatário do convite. Utilize as informações na tabela seguinte para o ajudar a configurar o modelo.

    Parâmetro Descrição Exemplo
    accountName O nome da conta do Azure Data Share do fornecedor.
    localização A localização de todos os recursos. O coordenador e o seguidor têm de estar na mesma localização.
    shareName O nome da partilha que será criada na conta de partilha de dados.
    destinatárioEmail O e-mail do recetor Data Share do Azure.
    databaseName O nome da base de dados do fornecedor.
    databaseResourceId O ID de recurso da base de dados do fornecedor.
    externalTablesToExclude A lista de tabelas externas a excluir. Para excluir todas as tabelas externas, utilize ["*"]. ["ExternalTable1ToExclude", "ExternalTable2ToExclude"]
    externalTablesToInclude A lista de tabelas externas a incluir. Para incluir todas as tabelas externas a partir de "Registos", utilize ["Registos*"]. ["ExternalTable1ToInclude", "ExternalTable2ToInclude"]
    materializedViewsToExclude A lista de vistas materializadas a excluir. Para excluir todas as vistas materializadas, utilize ["*"]. ["Mv11ToExclude", "Mv22ToExclude"]
    materializedViewsToInclude A lista de vistas materializadas a incluir. Para incluir todas as vistas materializadas a partir de "Registos", utilize ["Registos*"]. ["Mv1ToInclude", "Mv2ToInclude"]
    tablesToExclude A lista de tabelas a excluir. Para excluir todas as tabelas, utilize ["*"]. ["table1ToExclude", "table2ToExclude"]
    tablesToInclude A lista de tabelas a incluir. Para incluir todas as tabelas, utilize ["*"]. ["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. Implemente o modelo de Resource Manager do Azure com o portal do Azure ou o PowerShell.

    implementação de modelos.

Consumidor de dados – receber dados

Siga as instruções no vídeo para aceitar o convite, criar uma conta de partilha de dados e mapear para o cluster de consumidores.

Consumidor de Dados – A Receber Dados.

O consumidor de dados pode agora aceder ao cluster do Azure Data Explorer para conceder permissões de utilizador às bases de dados partilhadas e aceder aos dados. Os dados ingeridos através da ingestão em fila no cluster de Data Explorer do Azure de origem serão apresentados no cluster de destino dentro de alguns segundos a alguns minutos.

Limitações