Você pode usar a Linguagem de query do MongoDB (MQL) no Atlas Data Federation para query 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 as fases do pipeline de agregação, 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 a IU do Atlas Visual Editor ou JSON Editor, comandos da Atlas Data Federation CLI e pontos de extremidade da Atlas Data Federation API. Para saber mais sobre a configuração de armazenamento da instância do banco de dados federado, consulte Configurar armazenamentos de dados para uma instância do 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:
Uma função personalizada com o privilégio
findpara o namespace no qual você deseja executar queries
Você pode executar até 30 queries simultâneas em sua instância do banco de dados federado em relação a:
Dados no seu bucket S3 ou 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
As seções a seguir contêm informações relativas à execução de consultas nos dados em seu armazenamento de dados.
Consultando dados no S3
Ao implantar sua instância do banco de dados federado, se você especificou um bucket S com permissões de leitura3 e gravação ou permissão AWS S3 3 s:PutObject, também poderá salvar os resultados da query no 3 bucket S3 usando $out 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 query 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 qualquer ordem específica para queries sobre o Atlas Data Federation para 3 armazenamentos de dados S. 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 em sua consulta. Por exemplo, se você executar a $sort mesma findOne() query duas vezes, poderá ver documentos diferentes e, se usar, documentos diferentes $skip $sort poderão ser ignorados se 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 $match query 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.
Consulta de dados no Armazenamento de Blobs do Azure
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.
Executando queries de dados no armazenamento do Google Google Cloud Platform Cloud Platform
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.
Executando queries dos dados em seu Atlas cluster
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 os resultados da consulta no cluster do Atlas usando $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>-<ATLAS_DATA_FEDERATION_INSTANCE_NAME>-<DATABASE_USER_NAME>
Por exemplo, para um usuário de banco de dados configurado no Atlas como "user" : "CN=atlasDataFederation-DataFederation0-test_datafederation0", 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=atlasDataFederation-DataFederation0-test_datafederation0", "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=atlasDataFederation-DataFederation0-test_datafederation0", "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.
Executando queries de dados em seus Online Archives
Para query, 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, pois os dados são otimizados para query pelo primeiro campo, seguido pelo segundo campo e assim por diante. Para fazer uma query no Online arquivo de forma eficaz, use todos os campos de partição definidos na ordem em que foram definidos. As query que usam todos os campos de partição na ordem em que foram definidos visam partições específicas e minimizam a quantidade de dados que elas verificam.
O Atlas Data Federation tem menos desempenho no suporte a consultas em campos que não possuem partições.
Consultar dados em uma URL HTTP ou HTTPS
O Data Federation 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 consultas, o Data Federation processa suas consultas em relação aos dados e retorna os resultados da consulta.
Executando queries federadas
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, não é possível executar consultas federadas em relação aos dados armazenados nos buckets do AWS S3 e nos contêineres do Armazenamento de Blobs do Azure. Independentemente do provedor de nuvem que faz o backup do seu cluster do Atlas, você pode executar consultas federadas em relação aos dados no seu 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 sua instância do banco de dados federado usando a Atlas IU Visual Editor ou o JSON Editor, os comandos CLI do Atlas Data Federation e os pontos de extremidade da API. Para saber mais sobre a configuração de armazenamento da instância do banco de dados federado, consulte Configurar armazenamentos de dados para uma instância do banco de dados federado.
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.
Configurar limites de query
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.
Solução de problemas
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.