Copiar dados do MongoDB usando o Azure Data Factory ou o Synapse Analytics (legado)

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

Este artigo descreve como usar a atividade de cópia nos pipelines do Azure Data Factory ou do Azure Synapse Analytics para copiar dados de um banco de dados do MongoDB. Ele amplia o artigo Visão geral da atividade de cópia que apresenta uma visão geral da atividade de cópia.

Importante

O serviço lançou um novo conector do MongoDB que fornece melhor MongoDB nativo oferece suporte à comparação para essa implementação baseada em ODBC, consulte o artigo Conector do MongoDB em detalhes.

Funcionalidades com suporte

Você pode copiar dados de um banco de dados MongoDB para qualquer armazenamento de dados de coletor com suporte. Para obter uma lista de armazenamentos de dados com suporte como origens/coletores da atividade de cópia, confira a tabela Armazenamentos de dados com suporte.

Especificamente, este conector do MongoDB dá suporte:

  • MongoDB versões 2.4, 2.6, 3.0, 3.2, 3.4 e 3.6.
  • À cópia de dados usando a autenticação Básica ou Anônima.

Pré-requisitos

Se o armazenamento de dados estiver localizado dentro de uma rede local, em uma rede virtual do Azure ou na Amazon Virtual Private Cloud, você precisará configurar um runtime de integração auto-hospedada para se conectar a ele.

Se o armazenamento de dados for um serviço de dados de nuvem gerenciado, você poderá usar o Azure Integration Runtime. Se o acesso for restrito aos IPs que estão aprovados nas regras de firewall, você poderá adicionar IPs do Azure Integration Runtime à lista de permissões.

Você também pode usar o recurso de runtime de integração da rede virtual gerenciada no Azure Data Factory para acessar a rede local sem instalar e configurar um runtime de integração auto-hospedada.

Para obter mais informações sobre os mecanismos de segurança de rede e as opções compatíveis com o Data Factory, consulte Estratégias de acesso a dados.

O Integration Runtime fornece um driver do MongoDB interno, portanto, não será necessário instalar manualmente nenhum driver ao copiar dados do MongoDB.

Introdução

Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:

Criar um serviço vinculado ao MongoDB usando a interface do usuário

Use as etapas a seguir para criar um serviço vinculado ao MongoDB na interface do usuário portal do Microsoft Azure.

  1. Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou do Synapse e selecione Serviços Vinculados, em seguida, clique em Novo:

  2. Pesquise por Mongo e selecione o conector MongoDB.

    Captura de tela do conector MongoDB.

  3. Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.

    Captura de tela da configuração do serviço vinculado para MongoDB.

Detalhes da configuração do conector

As seções a seguir fornecem detalhes sobre as propriedades usadas para definir entidades do Data Factory específicas ao conector do MongoDB.

Propriedades do serviço vinculado

As propriedades a seguir têm suporte para o serviço vinculado do MongoDB:

Propriedade Descrição Obrigatório
type A propriedade type deve ser definida como: MongoDb Sim
Servidor Endereço IP ou nome do host do servidor MongoDB. Sim
porta A porta TCP usada pelo servidor MongoDB para ouvir conexões de cliente. Não (o padrão é 27017)
databaseName Nome do banco de dados MongoDB que você deseja acessar. Sim
authenticationType Tipo de autenticação usado para se conectar ao banco de dados MongoDB.
Os valores permitidos são: Básica e Anônima.
Sim
Nome de Usuário Conta de usuário para acessar o MongoDB. Sim (se a autenticação básica for usada).
password Senha do usuário. Marque este campo como um SecureString para armazená-lo com segurança ou referencie um segredo armazenado no Azure Key Vault. Sim (se a autenticação básica for usada).
authSource Nome do banco de dados MongoDB que você deseja usar para verificar suas credenciais para autenticação. Não. Para a autenticação Básica, o padrão é usar a conta do administrador e o banco de dados especificado, usando a propriedade databaseName.
enableSsl Especifica se as conexões com o servidor são criptografadas via TLS. O valor padrão é false. Não
allowSelfSignedServerCert Especifica se deve permitir os certificados autoassinados do servidor. O valor padrão é false. Não
connectVia O Integration Runtime a ser usado para se conectar ao armazenamento de dados. Saiba mais na seção Pré-requisitos. Se não for especificado, ele usa o Integration Runtime padrão do Azure. Não

Exemplo:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDb",
        "typeProperties": {
            "server": "<server name>",
            "databaseName": "<database name>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dados

Para obter uma lista completa de seções e propriedades disponíveis para definição de conjuntos de dados, consulte Conjuntos de dados e serviços vinculados. As propriedades a seguir têm suporte para o conjunto de dados do MongoDB:

Propriedade Descrição Obrigatório
type A propriedade type do conjunto de dados deve ser definida como: MongoDbCollection Sim
collectionName Nome da coleção no banco de dados MongoDB. Sim

Exemplo:

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbCollection",
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "collectionName": "<Collection name>"
        }
    }
}

Propriedades da atividade de cópia

Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades com suporte pela fonte MongoDB.

MongoDB como fonte

As propriedades a seguir têm suporte na seção source da atividade de cópia:

Propriedade Descrição Obrigatório
type A propriedade type da fonte da atividade de cópia deve ser definida como: MongoDbSource Sim
Consulta Utiliza a consulta SQL-92 personalizada para ler os dados. Por exemplo: select * from MyTable. Não (se "collectionName" no conjunto de dados for especificada)

Exemplo:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Dica

Ao especificar a consulta SQL, preste atenção ao formato DateTime. Por exemplo: SELECT * FROM Account WHERE LastModifiedDate >= '2018-06-01' AND LastModifiedDate < '2018-06-02' ou usar o parâmetro SELECT * FROM Account WHERE LastModifiedDate >= '@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}' AND LastModifiedDate < '@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'

Esquema do Data Factory

O serviço Azure Data Factory infere o esquema de uma coleção do MongoDB usando os 100 documentos mais recentes na coleção. Se esses 100 documentos não contiverem o esquema completo, algumas colunas poderão ser ignoradas durante a operação de cópia.

Mapeamento de tipo de dados para o MongoDB

Ao copiar dados do MongoDB, os seguintes mapeamentos são usados de tipos de dados do MongoDB para tipos de dados provisórios usados internamente com o serviço. Consulte Mapeamentos de tipo de dados e esquema para saber mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor.

Tipo de dados do MongoDB Tipo de dados provisório do serviço
Binário Byte[]
Booliano Boolean
Data Datetime
NumberDouble Double
NumberInt Int32
NumberLong Int64
ObjectID String
String String
UUID Guid
Objeto Renormalizado para colunas simples com “_" como separador aninhado

Observação

Para saber mais sobre o suporte para matrizes usando tabelas virtuais, consulte a seção Suporte para tipos complexos usando tabelas virtuais.

Atualmente, os seguintes tipos de dados do MongoDB não têm suporte: DBPointer, JavaScript, chave de Máx./Mín., expressão regular, símbolo, carimbo de data/hora e indefinido.

Suporte para tipos complexos usando tabelas virtuais

O serviço usa um driver ODBC interno para se conectar ao banco de dados MongoDB e copiar dados dele. Para tipos complexos, como matrizes ou objetos com tipos diferentes nos documentos, o driver renormaliza os dados em tabelas virtuais correspondentes. Especificamente, se uma tabela contiver tais colunas, o driver vai gerar as seguintes tabelas virtuais:

  • Uma tabela base, que contém os mesmos dados da tabela real, exceto nas colunas de tipo complexo. A tabela base usa o mesmo nome da tabela real que ela representa.
  • Uma tabela virtual para cada coluna de tipo complexo, que expande os dados aninhados. As tabelas virtuais são nomeadas usando o nome da tabela real, um separador “_" e o nome da matriz ou do objeto.

As tabelas virtuais se referem aos dados na tabela real, permitindo que o driver acesse dados desordenados. Você pode acessar o conteúdo das matrizes do MongoDB consultando e unindo as tabelas virtuais.

Exemplo

Por exemplo, ExampleTable aqui é uma tabela MongoDB que possui uma coluna com uma matriz de objetos em cada célula - Faturas e uma coluna com uma matriz de tipos escalares - Classificações.

_id Nome do Cliente Faturas Nível de serviço Classificações
1111 ABC [{invoice_id:"123", item:"torradeira", price:"456", discount:"0,2"}, {invoice_id:"124", item:"forno",price: "1235",discount: "0,2"}] Prata [5,6]
2222 XYZ [{invoice_id:"135", item:"geladeira", price: "12543", discount: "0,0"}] Ouro [1,2]

O driver geraria várias tabelas virtuais para representar essa tabela única. A primeira tabela virtual é a tabela base chamada "ExampleTable", mostrada no exemplo. A tabela base contém todos os dados da tabela original, mas os dados das matrizes foram omitidos e são expandidos nas tabelas virtuais.

_id Nome do Cliente Nível de serviço
1111 ABC Prata
2222 XYZ Ouro

As tabelas a seguir mostram as tabelas virtuais que representam as matrizes originais no exemplo. Essas tabelas contém o seguinte:

  • Uma referência à coluna de chave primária original correspondente para a linha da matriz original (por meio da coluna _id)
  • Uma indica da posição dos dados dentro da matriz original
  • Os dados expandidos para cada elemento da matriz

Tabela “ExampleTable_Invoices":

_id TabelaDeExemplo_Faturas_dim1_idx invoice_id item price Desconto
1111 0 123 torradeira 456 0,2
1111 1 124 forno 1235 0,2
2222 0 135 geladeira 12543 0.0

Tabela “ExampleTable_Ratings":

_id TabelaDeExemplo_Classificações_dim1_idx TabelaDeExemplo_Classificações
1111 0 5
1111 1 6
2222 0 1
2222 1 2

Para obter uma lista de armazenamentos de dados com suporte como coletores e fontes da atividade de cópia, confira os armazenamentos de dados com suporte.