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:
- A ferramenta Copiar Dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- PowerShell do Azure
- A API REST
- O modelo do Azure Resource Manager
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.
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:
Pesquise por Mongo e selecione o conector MongoDB.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
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 |
Conteúdo relacionado
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.