Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/

Executar query de uma instância de banco de dados federado

Nesta página

  • Consultando dados no S3
  • Consulta de dados no Armazenamento de Blobs do Azure
  • Executando queries dos dados em seu Atlas cluster
  • Executando queries de dados em seus Online Archives e conjuntos de dados do Data Lake
  • Executar queries de dados em um URL HTTP ou HTTPS
  • Executando queries federadas
  • Configurar limites de query
  • Solução de problemas

Você pode utilizar a Linguagem de Consulta MongoDB (MQL) no Atlas Data Federation para executar query e analisar dados em seu armazenamento de dados. O Atlas Data Federation suporta a maioria, mas não todos os comandos padrão do servidor. Para saber mais sobre os comandos do servidor MongoDB com e sem suporte e os estágios do aggregation pipeline, consulte Comandos do MongoDB com suporte.

Para executar queries de dados em seu armazenamento de dados, sua configuração de armazenamento de instância do banco de dados federado deve conter configurações que definem:

  • Seu armazenamento de instâncias de banco de dados federado.

  • Bancos de dados virtuais e coleções de Instância do Banco de Dados Federado que são mapeados para seu armazenamento de instâncias de banco de dados federado.

Você pode criar ou atualizar sua instância do banco de dados federado configuração de armazenamento para seu armazenamento de dados utilizando os comandos da UI do Atlas Visual Editor ou JSON Editor, os comandos da CLI do Atlas Data Federation e os endpoints daAPI do Atlas Data Federation . Para saber mais sobre a configuração de armazenamento de instância de banco de dados federado, consulte Definir armazenamentos de dados para uma instância de banco de dados federado.

O Atlas Data Federation cria os bancos de dados virtuais e as coleções que você especificou na configuração da instância do banco de dados federado para os dados em seu armazenamento de dados. Quando você se conecta à instância do banco de dados federado e executa queries, o Atlas Data Federation processa suas queries contra os dados e retorna os resultados da query. Opcionalmente, você pode configurar limites na quantidade de dados que o Atlas Data Federation processa para suas consultas controlarem os custos.

Observação

O Atlas Data Federation usa armazenamento colunar que não preserva a ordem dos campos nos documentos. Portanto, o Atlas Data Federation não oferece suporte a queries sensíveis à ordem dos campos, como uma query de igualdade de documentos incorporada ou a classificação em um campo de documento.

Um usuário de banco de dados deve ter uma das funções a seguir para executar consultas em uma instância de banco de dados federado:

Você pode executar até 30 queries simultâneas em sua instância do banco de dados federado em relação a:

  • Dados no bucket S3 ou no contêiner do Armazenamento de Blobs do Azure.

  • Documentos em seu cluster MongoDB Atlas.

  • Dados extraídos em conjuntos de dados do Atlas Data Lake.

  • Dados em arquivos hospedados em URLpublicamente acessíveis.

Dica

Consulte:

As seções a seguir contêm informações relativas à execução de consultas nos dados em seu armazenamento de dados.

Ao implantar sua instância do banco de dados federado, se você especificou um bucket S com permissões de3 leitura e gravação ou AWS S3 s3:PutObject permissão, você também pode salvar seus resultados de consulta em seu 3 contêiner S3 $out usando para S .

Se você criar ou atualizar com sucesso um objeto em seu armazenamento de dados S3, o Data Federation retornará a versão mais recente desse objeto para quaisquer solicitações de leitura subsequentes e todas as operações de lista dos objetos também refletirão as alterações. Se sua consulta contiver vários estágios, cada estágio receberá os dados mais recentes disponíveis do armazenamento de dados à medida que esse estágio for processado.

Por padrão, o Atlas Data Federation não retorna documentos em nenhuma ordem específica para consultas em Data Federations para armazenamentos de dados S3 . O Atlas Data Federation lê as partições simultaneamente e a ordem de resposta do armazenamento subjacente determina quais documentos o Atlas Data Federation retorna primeiro, a menos que você defina a ordem usando $sort em sua consulta. Por exemplo, se você executar a mesma query findOne() duas vezes, poderá ver documentos diferentes e, se usar $skip, documentos diferentes poderão ser ignorados se $sort não for usado na consulta.

Você incorre em custos de "Dados Processados" pela quantidade de dados que o Atlas Data Federation processa para retornar resultados de suas consultas, além do custo de "Dados Retornados" pela quantidade de dados que a Atlas Data Federation retorna. Por exemplo, para um arquivo de 10 GB, você incorrerá no seguinte custo de "Dados processados", além do custo de "Dados Retornados":

  • Se você não tiver partições, o Atlas Data Federation lerá o arquivo inteiro para retornar resultados da consulta. Portanto, você incorre em 10 GB de custo de “Dados Processados”.

  • Se você tiver 10 partições de 1 GB cada, a Atlas Data Federation atingirá e lerá uma única partição. Portanto, você incorre em 1 GB de custo de "Dados Processados".

Você pode configurar limites de consultas por instância do banco de dados federado e para todas as instâncias do banco de dados federado em seu projeto para limitar a quantidade de dados processados. Para saber mais, consulte Gerencie limites de consulta do Atlas Data Federation.

Observação

O particionamento de dados não garante um custo reduzido de processamento de dados. Por exemplo, se você executar uma query $match em branco, que faz query de todos os dados, o Atlas Data Federation precisará ler a collection inteira para gerar os resultados da consulta, independente do número de partições.

Ao implantar sua instância de banco de dados federado, você pode especificar um contêiner do Armazenamento de Blobs do Azure com permissões de leitura e gravação.

Você incorre em custos de "Dados Processados" pela quantidade de dados que o Atlas Data Federation processa para retornar resultados de suas consultas, além do custo de "Dados Retornados" pela quantidade de dados que a Atlas Data Federation retorna. Por exemplo, para um arquivo de 10 GB, você incorrerá no seguinte custo de "Dados processados", além do custo de "Dados Retornados":

  • Se você não tiver partições, o Atlas Data Federation lerá o arquivo inteiro para retornar resultados da consulta. Portanto, você incorre em 10 GB de custo de “Dados Processados”.

  • Se você tiver 10 partições de 1 GB cada, a Atlas Data Federation atingirá e lerá uma única partição. Portanto, você incorre em 1 GB de custo de "Dados Processados".

Você pode configurar limites de consultas por instância do banco de dados federado e para todas as instâncias do banco de dados federado em seu projeto para limitar a quantidade de dados processados. Para saber mais, consulte Gerencie limites de consulta do Atlas Data Federation.

Quando você executa queries no Atlas cluster por meio de sua instância de banco de dados federado, o Atlas Data Federation define o appName, ao executar query de seu cluster, com base no appName que você usou para se conectar à sua instância de banco de dados federado. Por exemplo, se você conectar à sua instância do banco de dados federado com appName configurado para myApp (ou seja, appName = "myApp"), o Atlas Data Federation define o appName ao conectar ao seu cluster para o seguinte:

atlas-data-federation|myApp

Se você consultar uma coleção no Atlas Data Federation que está mapeada para somente uma coleção do Atlas, o Atlas Data Federation atuará como um proxy e encaminhará sua consulta para o Atlas. Ao atuar como um proxy, o Atlas Data Federation não examina os dados em sua coleção virtual para processar a consulta, melhorando assim o desempenho e reduzindo os custos. Esta otimização não está disponível para consultas sobre coleções do Atlas Data Federation que são mapeadas para múltiplas coleções do Atlas.

Exemplo

Considere a seguinte configuração de armazenamento da instância do banco de dados federado:

{
"stores" : [
{
"name" : "atlas-store",
"provider": "atlas",
"clusterName": "myCluster",
"projectId": "5e2211c17a3e5a48f5497de3"
}
],
"databases" : [
{
"name" : "atlas-db",
"collections" : [
{
"name" : "foo",
"dataSources" : [
{
"storeName" : "atlas-store",
"database" : "myFooData",
"collection" : "foo"
}
]
},
{
"name" : "barbaz",
"dataSources" : [
{
"storeName" : "atlas-store",
"database" : "myBarData",
"collection" : "bar"
},
{
"storeName" : "atlas-store",
"database" : "myBazData",
"collection" : "baz"
}
]
}
]
}
]
}

Para a configuração de armazenamento acima, o Atlas Data Federation atua como um proxy para queries na coleção foo e encaminha as queries para o Atlas. Esta otimização de desempenho e custo não está disponível para queries na coleção barbaz porque o barbaz está mapeado para múltiplas coleções do Atlas.

Você também pode salvar seus resultados de query no seu Atlas cluster utilizando o $out no Atlas.

Se você criar ou atualizar com êxito um documento em sua coleção no cluster Atlas, o Data Federation retornará a versão mais recente desse documento para quaisquer solicitações de leitura subsequentes e todas as operações de lista da coleção também refletirão as alterações. Se sua consulta contiver vários estágios, cada estágio receberá os dados mais recentes disponíveis do armazenamento de dados à medida que esse estágio for processado.

O Atlas registra suas queries nos dados do cluster nos logs de auditoria do Atlas cluster. A entrada de log de um usuário do banco de dados está no seguinte formato:

<SERVICE_NAME>-<CUSTOMER_DATA_LAKE_NAME>-<DATABASE_USER_NAME>

Por exemplo, para um usuário de banco de dados configurado no Atlas como "user" : "CN=atlasDataLake-DataLake0-test_datalake0", uma entrada de registro no registro de auditoria do Atlas cluster é semelhante a esta:

{
"atype" : "authenticate",
"ts" : { "$date" : "2022-04-29T13:17:54.020+00:00" },
"local" : { "ip" : "XXXX", "port" : 27017 },
"remote" : { "ip" : "XXXXX", "port" : 10844 },
"users" : [ { "user" : "CN=atlasDataLake-DataLake0-test_datalake0", "db" : "$external" } ],
"roles" : [ { "role" : "backup", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" }, { "role" : "clusterMonitor", "db" : "admin" }, { "role" : "enableSharding", "db" : "admin" }, { "role" : "atlasAdmin", "db" : "admin" }, { "role" : "dbAdminAnyDatabase", "db" : "admin" } ],
"param" : { "user" : "CN=atlasDataLake-DataLake0-test_datalake0", "db" : "$external", "mechanism" : "MONGODB-X509" },
"result" : 0
}

Observação

O mecanismo de conexão está sempre MONGODB-X509 nos registros de auditoria do Atlas cluster.

Para queries, o Atlas Data Federation utiliza as partições que você criou em campos durante a criação do Arquivo do Atlas Online ou do pipeline do Lago de Dados do Atlas. A ordem dos campos nas partições é importante da mesma forma que é para Índices compostos. Os dados são otimizados para queries pelo primeiro campo, seguidos pelo segundo campo e assim por diante. O Atlas Data Federation analisa as partições em ordem; se uma query omitir uma partição específica, o Atlas Data Federation será menos eficiente ao utilizar quaisquer partições que seguem a partição omitida.

O Atlas Data Federation tem menos desempenho no suporte a consultas em campos que não possuem partições. O Atlas Data Federation não dá suporte a consultas em campos que foram explicitamente excluídos durante a criação do pipeline do Atlas Data Lake.

Observação

VISUALIZAR

O suporte para armazenamentos de dados HTTP está disponível como um recurso de visualização. O recurso e a documentação correspondente podem mudar a qualquer momento durante a fase de Pré-visualização.

A Federação de Dados também cria uma partição para cada URL na sua coleção. Quando você conecta à instância do seu banco de dados federado e executa queries, a Federação de Dados processa suas queries em relação aos dados e retorna os resultados da query.

Você pode usar o Atlas Data Federation para consultar e analisar uma visão unificada dos dados em seu cluster do Atlas, bucket S3 ou contêiner do Armazenamento de Blobs do Azure, URL HTTP e conjuntos de dados do Data Lake. Para consultas federadas, a configuração de armazenamento da instância do banco de dados federado deve conter as configurações que definem:

  • Seus armazenamentos S3 ou Azure, Atlas, Atlas Data Lake e HTTP.

    Observação

    O Atlas Data Federation não oferece suporte a consultas federadas entre provedores de nuvem. Portanto, você não pode executar consultas federadas em dados armazenados em buckets do AWS S3 e contêineres do Armazenamento de Blobs do Azure. Independentemente do provedor de nuvem que oferece suporte ao cluster do Atlas, você pode executar consultas federadas em dados no cluster do Atlas e no bucket do AWS S3 ou no contêiner do Armazenamento de Blobs do Azure simultaneamente.

  • Instâncias de banco de dados federadas com coleções virtuais que mapeiam para seus armazenamentos S3 ou Azure, Atlas, Atlas Data Lake e HTTP.

Você pode criar ou atualizar a configuração de armazenamento da instância do banco de dados federado usando a interface do usuário do Atlas Visual Editor ou JSON Editor, os comandos CLI do Atlas Data Federation e os endpoints da API Para saber mais sobre a configuração de armazenamento de instância de banco de dados federado, consulte Definir armazenamentos de dados para uma instância de banco de dados federado.

Quando você se conecta à instância de banco de dados federado e executa consultas federadas, o Data Federation combina dados do cluster do Atlas, bucket S3 ou contêiner do Armazenamento de Blobs do Azure, conjunto de dados do Data Lake e URLs HTTP em bancos de dados e coleções virtuais e retorna uma união de dados nos resultados.

Você pode limitar a quantidade de dados que o Atlas Data Federation processa para suas queries controlarem os custos. Para limitar a quantidade de dados que o Atlas Data Federation processa para suas queries, você pode configurar limites de query por instância do banco de dados federado ou para todas as instâncias de banco de dados federado em seu projeto. Quando a quantidade de dados processados atingir qualquer limite configurado aplicável, o Atlas Data Federation não executará nenhuma nova query e retornará um erro ao aplicativo cliente informando que o limite foi atingido. Para mais informações, consulte Gerenciar Limites de Query do Atlas Data Federation.

Erro: No momento, estamos enfrentando um aumento nos tempos de espera de processamento de queries para o Atlas Data Federation. Nossa equipe de Engenharia está investigando. O serviço normal será retomado em breve. Tente novamente.

O Atlas Data Federation retorna esse erro somente quando Atlas Data Federation não consegue executar queries devido à contenção de recursos. Recomendamos que você execute suas queries novamente.

← Baixar logs de query