Copie dados do ou para o MongoDB usando o Azure Data Factory ou o Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

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

Note

Esse conector também está disponível no Data Factory no Microsoft Fabric. Para configurações e recursos específicos do Fabric, consulte a documentação do conector do MongoDB para o Fabric.

Importante

O novo conector do MongoDB fornece suporte ao MongoDB nativo aprimorado. Se você está usando o conector MongoDB antigo na sua solução, suportado as-is apenas para compatibilidade retroativa, veja conector MongoDB (legacy). Você pode usar esse conector para copiar dados de e para um Azure DocumentDB (com compatibilidade com MongoDB).

Funcionalidades com suporte

Este conector MongoDB suporta as seguintes capacidades:

Funcionalidades com suporte IR
Atividade Copy (origem/coletor) (1) (2)

① Runtime de integração do Azure ② Runtime de integração auto-hospedado

Para uma lista de repositórios de dados suportados como fontes e sumidouros, veja a tabela de armazenamentos de dados suportados .

Especificamente, este conector do MongoDB dá suporte a versões até 4.2. Se o seu trabalho exige versões mais recentes que a 4.2, considere utilizar o MongoDB Atlas com o conector do MongoDB Atlas, que oferece suporte e recursos mais completos.

Pré-requisitos

Se o armazenamento de dados estiver localizado dentro de uma rede local interna, uma rede virtual do Azure ou uma Amazon Virtual Private Cloud (VPC), você precisará configurar um runtime de integração auto-hospedado 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 a IPs aprovados nas regras de firewall, você poderá adicionar Azure Integration Runtime IPs à lista de permissões.

Você também pode usar o recurso managed virtual network integration runtime 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.

Introdução

Para executar a atividade de cópia com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:

Crie um serviço vinculado ao MongoDB usando a interface

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

  1. Navegue até a aba Gerenciar no seu Azure Data Factory ou no espaço de trabalho Synapse e selecione Serviços Vinculados. Depois, selecione Novo:

  2. Pesquise por MongoDB e selecione o conector MongoDB.

    Selecione o conector MongoDB.

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

    Configure um serviço vinculado ao 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

A tabela a seguir lista as propriedades suportadas para um serviço vinculado ao MongoDB:

Propriedade Descrição Obrigatório
tipo Defina a propriedade de tipo para: MongoDbV2 Sim
connectionString Especifique a cadeia de conexão do MongoDB, como mongodb://[username:password@]host[:port][/[database][?options]]. Para mais detalhes, consulte o manual do MongoDB sobre cadeia de conexão.

Você também pode colocar uma cadeia de conexão no Azure Key Vault. Para mais detalhes, veja Armazenar credenciais no Azure Key Vault. |Sim | | Banco de dados | Nome do banco de dados que você quer acessar. | Sim | | connectVia | O Integration Runtime para usar para conectar ao armazenamento de dados. Para saber mais, confira a seção Pré-requisitos. Se você não especificar essa propriedade, o Azure Integration Runtime padrão é usado. |Não |

Exemplo:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dados

Para uma lista completa de seções e propriedades que você pode usar para definir conjuntos de dados, veja Conjuntos de dados e serviços vinculados. A tabela a seguir lista as propriedades suportadas para um conjunto de dados do MongoDB:

Propriedade Descrição Obrigatório
tipo Defina a propriedade de tipo do conjunto de dados para: MongoDbV2Collection Sim
collectionName Nome da coleção no banco de dados MongoDB. Sim

Exemplo:

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

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 e pelo coletor do MongoDB.

MongoDB como fonte

A seção de código-fonte da atividade de cópia suporta as seguintes propriedades:

Propriedade Descrição Obrigatório
tipo Defina a propriedade de tipo da fonte da atividade de cópia para: MongoDbV2Source Sim
filtro Especifica o filtro de seleção usando operadores de consulta. Para retornar todos os documentos em uma coleção, omita esse parâmetro ou passe um documento vazio ({}). Não
cursorMethods.project Especifica os campos a serem retornados nos documentos para projeção. Para retornar todos os campos nos documentos correspondentes, omita este parâmetro. Não
cursorMethods.sort Especifica a ordem na qual a consulta retorna documentos correspondentes. Consulte cursor.sort(). Não
cursorMethods.limit Especifica o número máximo de documentos que o servidor retorna. Consulte cursor.limit(). Não
cursorMethods.skip Especifica o número de documentos a serem ignorados e de onde o MongoDB começa a retornar resultados. Consulte cursor.skip(). Não
batchSize Especifica o número de documentos a serem retornados em cada lote da resposta da instância do MongoDB. Na maioria dos casos, modificar o tamanho do lote não afeta o usuário nem o aplicativo. O Azure Cosmos DB limita que cada lote não pode exceder 40 MB de tamanho, que é a soma do tamanho do tamanho do lote dos documentos, então diminua esse valor se o tamanho do seu documento for grande. Não
(o padrão é 100)

Dica

Suporte do ADF consumindo o documento BSON em Modo estrito. Certifique-se de que sua consulta de filtro esteja no modo Estrito em vez do modo Shell. Para mais informações, consulte o manual do MongoDB.

Exemplo:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbV2Source",
                "filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
                "cursorMethods": {
                    "project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
                    "sort": "{ age : 1 }",
                    "skip": 3,
                    "limit": 3
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

MongoDB como coletor

A seção Copy Activity sink suporta as seguintes propriedades:

Propriedade Descrição Obrigatório
tipo Defina a propriedade de tipo do atenuador de atividade de cópia para MongoDbV2Sink. Sim
writeBehavior Descreve como gravar dados no MongoDB. Valores permitidos são insert e upsert.

O comportamento de upsert será substituir o documento se um documento com a mesma _id já existir; caso contrário, insira o documento.

Nota: o serviço gera automaticamente uma _id ID para um documento _id se não for especificada uma ID no documento original ou no mapeamento de coluna. Isso significa que, para upsert funcionar conforme esperado, o documento deve ter uma ID.
Não
(o padrão é insert)
writeBatchSize A propriedade writeBatchSize controla o número de documentos a serem escritos em cada lote. Para melhorar o desempenho, tente aumentar o valor. Se o tamanho do seu documento for grande, tente diminuir o valor. Não
(o padrão é 10.000)
writeBatchTimeout O tempo de espera para que a operação de inserção em lote seja concluída antes de atingir o tempo limite. O valor permitido é timespan. Não
(o padrão é 30:00:00 - 30 minutos)

Dica

Para importar documentos JSON as-is, veja a seção Importar ou exportar documentos JSON . Para copiar de dados em formato tabular, veja Mapeamento de esquemas.

Exemplo

"activities":[
    {
        "name": "CopyToMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Document DB output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "MongoDbV2Sink",
                "writeBehavior": "upsert"
            }
        }
    }
]

Importar ou exportar documentos JSON

Use este conector MongoDB para facilitar a:

  • Copiar documentos entre duas coleções do MongoDB no estado em que se encontram.
  • Importe documentos JSON de várias fontes para o MongoDB, incluindo do Azure Cosmos DB, Armazenamento de Blobs do Azure, Azure Data Lake Storage e outros armazenamentos de arquivos suportados.
  • Exportar documentos JSON de uma coleção do MongoDB para vários repositórios baseados em arquivo.

Para efetuar essa cópia independente de esquema, ignore a seção da "estrutura" (também chamada de esquema) no conjunto de dados e mapeamento de esquema na atividade de cópia.

Mapeamento de tipo de dados para o MongoDB

Quando você copia dados do MongoDB, o serviço usa os seguintes mapeamentos dos tipos de dados do MongoDB para os tipos de dados intermediários. Para mais informações sobre como a atividade de cópia mapeia o esquema de origem e o tipo de dado para o sumidor, veja Mapeamentos de esquema e tipos de dados.

Tipo de dados do MongoDB Tipo de dados de serviço provisório
Date Int64
IdentificadorDeObjeto String
Decimal128 String
TimeStamp Os 32 bits mais significativos –> Int64
Os 32 bits menos significativos –> Int64
String String
Double String
Int32 Int64
Int64 Int64
booleano booleano
Nulo Nulo
JavaScript String
Expressão regular String
Chave mínima Int64
Chave máxima Int64
Binary String

Ciclo de vida e atualização do conector do MongoDB

A tabela a seguir mostra o estágio de lançamento e os logs de alteração para versões diferentes do conector do MongoDB:

Versão Fase de liberação Log de alterações
MongoDB (herdado) Removido Não aplicável.
MongoDB Versão GA disponível • Dê suporte apenas às consultas equivalentes do MongoDB.

• O duplo é lido como tipo de dados String.

• Lê Double como tipo de dado String. |

Atualizar o serviço vinculado do MongoDB

Crie um novo serviço vinculado ao MongoDB e configure-o consultando as Propriedades do serviço vinculado.

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.