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 de dados no armazenamento do Google Google Cloud Platform Cloud Platform
  • Executando queries dos dados em seu Atlas cluster
  • Executando queries de dados em seus Online Archives
  • Executar queries de dados em um URL HTTP ou HTTPS
  • Executando queries federadas
  • Configurar limites de query
  • Solução de problemas

Você pode usar a Linguagem de query do MongoDB (MQL) no Atlas Data Federation para consultar e analisar dados em seu armazenamento de dados. O Atlas Data Federation suporta a maioria, mas não todos os comandos de servidor padrão. Para saber mais sobre os comandos do servidor MongoDB com e sem suporte e os estágios do agregação 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 Atlas Data Federation e os endpoints daAPI do Atlas Data Federation . Para saber mais sobre a configuração de armazenamento de instância do 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. Você pode, opcionalmente, configurar limites na quantidade de dados que o Atlas Data Federation processa para suas queries 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 arquivados em seu Online Archive.

  • 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 implementar sua instância do banco de dados federado, se você especificou um bucket S com permissões de leitura e escrita ou3 Amazon Web Services S3 3s:PutObject permissão, você também pode salvar seus resultados de consulta no seu contêiner 3 $out S3 utilizando 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 coleção 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.

Ao implantar sua instância do banco de dados federado, você pode especificar um bucket de armazenamento do Google Google Cloud Platform Cloud Platform 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 Atlas Online Archive. 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.

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 Atlas cluster, bucket S3 ou contêiner do Azure Blob Storage, URLHTTP e arquivos online. Para consultas federadas, a configuração de armazenamento da instância do banco de dados federado de dados federado deve conter as configurações que definem:

  • Seus armazenamentos S3 ou Azure, Atlas, Online Archive 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 seu bucket S3 ou Azure Blob Storage, Atlas cluster, Online Archive e armazenamentos HTTP .

Você pode criar ou atualizar a configuração de armazenamento da instância do banco de dados federado usando a IU do Atlas Visual Editor ou JSON Editor, os comandos CLI do Atlas Data Federation e os pontos de extremidade da API Para saber mais sobre configuração de armazenamento de instância de banco de dados federado, consulte Definir Armazenamento de Dados para uma Federated Database Instance.

Quando você se conecta à instância do banco de dados federado e executa consultas federadas, o Data Federation combina dados do Atlas cluster, bucketS ou contêiner do3 Azure Blob Storage e URL HTTPs em bancos de dados e coleções virtuais e retorna uma união de dados no 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.

Voltar

Baixar logs de query