Copiar dados de ou para MongoDB utilizando a Azure Data Factory ou Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo descreve como utilizar a Atividade de Cópia nos oleodutos Azure Data Factory Synapse Analytics para copiar dados de e para uma base de dados mongoDB. Baseia-se no artigo de visão geral da atividade de cópia que apresenta uma visão geral da atividade da cópia.

Importante

O novo conector MongoDB proporciona um melhor suporte nativo do MongoDB. Se estiver a utilizar o conector MongoDB na sua solução, suportado apenas para retrocompatibilidade, consulte o artigo do conector MongoDB (legado).

Capacidades suportadas

Pode copiar dados da base de dados mongoDB para qualquer loja de dados de sumidouro suportado, ou copiar dados de qualquer loja de dados de origem suportada para a base de dados mongoDB. Para obter uma lista de lojas de dados suportadas como fontes/pias pela atividade de cópia, consulte a tabela de lojas de dados suportadas.

Especificamente, este conector MongoDB suporta versões até 4.2.

Pré-requisitos

Se a sua loja de dados estiver localizada dentro de uma rede no local, de uma rede virtual Azure ou da Amazon Virtual Private Cloud, é necessário configurar um tempo de integração auto-hospedado para se ligar a ela.

Se a sua loja de dados for um serviço de dados em nuvem gerido, pode utilizar o Tempo de Execução da Integração Azure. Se o acesso for restrito aos IPs aprovados nas regras de firewall, pode adicionar IPs de Runtime de Integração Azure à lista de permitir.

Também pode utilizar a funcionalidade de execução de integração de rede virtual gerida na Azure Data Factory para aceder à rede de acesso no local sem instalar e configurar um tempo de integração auto-hospedado.

Para obter mais informações sobre os mecanismos e opções de segurança da rede suportados pela Data Factory, consulte as estratégias de acesso aos dados.

Introdução

Para realizar a atividade Copy com um pipeline, pode utilizar uma das seguintes ferramentas ou SDKs:

Criar um serviço ligado ao MongoDB utilizando uI

Utilize os seguintes passos para criar um serviço ligado ao MongoDB no portal Azure UI.

  1. Navegue no separador Gerir na sua Fábrica de Dados Azure ou no espaço de trabalho synapse e selecione Serviços Ligados e, em seguida, clique em Novo:

  2. Procure por MongoDB e selecione o conector MongoDB.

    Selecione o conector MongoDB.

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

    Configure um serviço ligado à MongoDB.

Detalhes da configuração do conector

As secções seguintes fornecem detalhes sobre propriedades que são usadas para definir entidades da Data Factory específicas do conector MongoDB.

Propriedades de serviço ligadas

As seguintes propriedades são suportadas para o serviço ligado a MongoDB:

Propriedade Descrição Obrigatório
tipo A propriedade tipo deve ser definida para: MongoDbV2 Yes
conexãoStragem Especificar a cadeia de ligação MongoDB, por mongodb://[username:password@]host[:port][/[database][?options]] exemplo. Consulte o manual mongoDB sobre a cadeia de ligação para obter mais detalhes.

Também pode colocar uma corda de ligação no Cofre da Chave Azure. Consulte as credenciais da Loja no Cofre de Chaves Azure com mais detalhes.
Yes
base de dados Nome da base de dados a que pretende aceder. Yes
connectVia O tempo de execução de integração a ser utilizado para ligar à loja de dados. Saiba mais na secção Pré-Requisitos. Se não for especificado, utiliza o tempo de execução de integração Azure predefinido. No

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"
        }
    }
}

Dataset properties (Propriedades do conjunto de dados)

Para obter uma lista completa de secções e propriedades disponíveis para definir conjuntos de dados, consulte Datasets e serviços ligados. As seguintes propriedades são suportadas para conjunto de dados MongoDB:

Propriedade Descrição Obrigatório
tipo A propriedade do tipo do conjunto de dados deve ser definida para: MongoDbV2Collection Yes
coleçãoName Nome da coleção na base de dados mongoDB. Yes

Exemplo:

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

Propriedades da atividade Copy

Para obter uma lista completa de secções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines. Esta secção fornece uma lista de propriedades suportadas por fonte e pia MongoDB.

MongoDB como fonte

As seguintes propriedades são suportadas na secção fonte de origem da atividade de cópia:

Propriedade Descrição Obrigatório
tipo A propriedade tipo da fonte de atividade de cópia deve ser definida para: MongoDbV2Source Yes
filter Especifica o filtro de seleção utilizando operadores de consulta. Para devolver todos os documentos numa coleção, omita este parâmetro ou passe um documento vazio ( {} ). No
cursorMethods.project Especifica os campos para retornar nos documentos para projeção. Para devolver todos os campos nos documentos correspondentes, omita este parâmetro. No
cursorMethods.sort Especifica a ordem na qual a consulta devolve documentos correspondentes. Consulte cursor.sort(). No
cursorMethods.limite Especifica o número máximo de documentos que o servidor devolve. Consulte cursor.limit(). No
cursorMethods.skip Especifica o número de documentos a saltar e de onde a MongoDB começa a devolver os resultados. Consulte cursor.skip(). No
batchSize Especifica o número de documentos a devolver em cada lote da resposta a partir da instância MongoDB. Na maioria dos casos, a modificação do tamanho do lote não afetará o utilizador nem a aplicação. Cosmos DB limita cada lote não pode exceder 40 MB de tamanho, que é a soma do tamanho do loteSize número de documentos, por isso diminua este valor se o tamanho do seu documento for grande. No
(o padrão é 100)

Dica

O serviço suporta o consumo de documento BSON no modo Strict. Certifique-se de que a sua consulta de filtro está no modo Rígido em vez do modo Shell. Mais descrição pode ser encontrada no 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 pia

As seguintes propriedades são suportadas na secção de lavatório Copy Activity:

Propriedade Descrição Obrigatório
tipo A propriedade do tipo do lavatório Copy Activity deve ser definida para MongoDbV2Sink. Yes
escrever Comportamento Descreve como escrever dados para o MongoDB. Valores permitidos: inserir e aumentar.

O comportamento do upsert é substituir o documento se já existir um documento com o _id mesmo; caso contrário, insira o documento.

Nota: O serviço gera automaticamente _id um documento se um não for especificado no documento original ou por _id mapeamento de colunas. Isto significa que deve garantir que, para que o upsert funcione como esperado, o seu documento tenha uma identificação.
No
(o padrão é inserir)
escreverBatchSize A propriedade writeBatchSize controla o tamanho dos documentos para escrever em cada lote. Pode tentar aumentar o valor para escreverBatchSize para melhorar o desempenho e diminuir o valor se o tamanho do seu documento for grande. No
(o padrão é de 10.000)
escreverBatchTimeout O tempo de espera para o funcionamento do encaixe do lote terminar antes de se esgotar. O valor permitido é o tempo. No
(o padrão é 00:30:00 - 30 minutos)

Dica

Para importar documentos JSON como é, consulte a secção de documentos de importação ou exportação de JSON; para copiar a partir de dados em forma de tabular, consulte o mapeamento de Schema.

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"
            }
        }
    }
]

Importação e exportação de documentos JSON

Pode utilizar este conector MongoDB facilmente:

  • Copie documentos entre duas coleções mongoDB como está.
  • Importar documentos JSON de várias fontes para MongoDB, incluindo de Azure Cosmos DB, armazenamento Azure Blob, Azure Data Lake Store, e outras lojas baseadas em ficheiros suportados.
  • Exporte documentos JSON de uma coleção mongoDB para várias lojas baseadas em arquivos.

Para obter tal cópia esquema-agnóstico, salte a secção "estrutura" (também chamada de esquema) no conjunto de dados e no mapeamento de esquemas na atividade da cópia.

Mapeamento de Schema

Para copiar dados de MongoDB para afundar ou reverter, consulte o mapeamento de esquemas.

Passos seguintes

Para obter uma lista de lojas de dados suportadas como fontes e sumidouros pela atividade de cópia, consulte as lojas de dados suportadas.