Limitações do serviço
Nesta página
- Visão geral
- Agregação
- Atlas
- Carregamento em lote
- Instâncias do banco de dados federado
- Instâncias sem servidor
- Clusters fragmentados
- Coleções de Time Series
- Endpoints privados
- Fluxos de alterações
- Comandos de banco de dados
- Device Sync
- Volumes de trabalho simultâneos
- Limite de tamanho de mensagem padrão
- Pausa devido à inatividade
- Requisitos da versão do MongoDB
- Requisitos de versão de HTTP
- Opções de query
- Resultados da query
- Solicitar tráfego
- Pool de conexões
- Hospedagem estática
Visão geral
O Atlas App Services tem várias diretrizes que devem ser levadas em conta ao arquitetar como suas ferramentas e clientes interagem com o MongoDB por meio do App Services. Tenha em mente essa orientação ao decidir como estruturar as queries, selecionar quais operações CRUD e de agregação usar e determinar como lidar com cargas de trabalho simultâneas.
Agregação
O App Services oferece suporte a todos osagregação pipeline stages nas funções do sistema, exceto $currentOp
e $indexStats
.
Por motivos de segurança, somente um subconjunto de aggregation pipeline stages é aceito em funções do usuário.
Para obter uma lista de estágios de pipeline disponíveis e seu contexto de função permitido, consulte Agregação.
Atlas
Carregamento em lote
Quando os dados são carregados em massa/lote no MongoDB Atlas, você pode ver um atraso na exibição de dados nos dispositivos enquanto o App Services processa as alterações.
Instâncias do banco de dados federado
Você pode vincular uma instância do banco de dados federado ao seu aplicativo como uma fonte de dados do MongoDB. No entanto, existem algumas advertências ao usar o Atlas Data Federation:
Fontes de dados federadas não suportam operações de gravação.
Você só pode acessar uma fonte de dados federada a partir de uma função do sistema.
Você não pode se conectar a uma fonte de dados federada por meio do protocolo de cabo.
Não é possível definir roles e permissões para uma fonte de dados federada.
Não é possível definir uma read preference para uma fonte de dados federada.
Não é possível criar um gatilho de banco de dados em uma fonte de dados federada.
Não é possível usar uma fonte de dados federada como cluster do Device Sync do seu aplicativo.
Instâncias sem servidor
Você pode vincular uma instância sem servidor ao seu aplicativo como uma fonte de dados do MongoDB. No entanto, as instâncias sem servidor não aceitam change streams no momento, portanto, as seguintes funcionalidades são limitadas:
Não é possível criar um gatilho de banco de dados em uma instância sem servidor.
Você não pode usar uma instância sem servidor como cluster do Device Sync do seu aplicativo.
Você não pode observar collections para alterações em fontes de dados que são instâncias sem servidor do MongoDB Atlas.
Clusters fragmentados
Atualmente, o Atlas Device Sync não aceita clusters fragmentados do MongoDB Atlas. No entanto, você pode adicionar um cluster fragmentado como fonte de dados e acessá-lo a partir de uma função.
Coleções de Time Series
As coleções de séries temporais ainda não aceitam change streams. Portanto, você não pode definir gatilhos em uma coleção de séries temporais.
Você pode usar coleções de séries temporais com o Atlas Device Sync, mas somente a ingestão de dados é aceita.
Endpoints privados
O App Services suporta endpoints privados para conexão segura a uma nuvem privada virtual da AWS com o AWS PrivateLink. Os aplicativos devem ser implementados localmente em uma região na AWS para usar um endpoint privado. O App Services não oferece suporte a endpoints privados para aplicativos globais ou aplicativos implantados no GCP ou no Azure. Para obter mais informações, consulte Endpoints privados.
Fluxos de alterações
O App Services limita o número total de fluxos de alterações abertos em um determinado cluster em todos os aplicativos com base no tamanho do cluster. A tabela a seguir lista as limitações para cada tamanho de cluster:
Tamanho do cluster | Número máximo de fluxos de mudança |
---|---|
Nível gratuito ( | 5 |
Clusters compartilhados ( | 10 |
Cluster pequenos e dedicados ( | 100 |
Agrupamentos padrão ( | 1000 |
Clusters padrão ( | 1000 |
Clusters de alta potência ( | 1000 |
Observação
O App Services abre um único fluxo de alteração em cada coleção que está associada a uma operação Trigger de banco de dados ou Sincronização de dispositivo.
Importante
Recomendação de uso
Para minimizar o número de fluxos de alterações abertas:
Inicie as operações de sincronização somente quando necessário. Feche todas as colunas de sincronização abertas imediatamente quando elas não forem mais necessárias.
Evite modelos de dados que exigem que você sincronize um número ilimitado de coleções.
Comandos de banco de dados
O App Services não oferece suporte a nenhum comando de banco de dados nos SDKs ou Funções do Cliente. No entanto, você pode chamar um subconjunto limitado de comandos de banco de dados quando conectado a um cluster MongoDB pelo protocolo de conexão. Para obter uma lista dos comandos suportados, consulte Comandos do banco de dados.
Device Sync
Volumes de trabalho simultâneos
Você pode ter até 5,000 conexões de sincronização simultâneas. Consulte Solicitar tráfego.
- Gravação:
- Para melhorar o desempenho, talvez você queira limitar o número de gravações simultâneas em um único documento do MongoDB. O App Services não tem limite rígido para o número de usuários que gravam dados simultaneamente em um documento do MongoDB. No entanto, com mais de 30 gravadores simultâneos, você poderá observar atrasos na sincronização ou na resolução de conflitos.
- Leitura:
- Clientes de frontend que leem de um realm global podem escalar dezenas de milhares de usuários simultâneos.
Dica
Escalabilidade
Se você pretende ter muitos programadores simultâneos, peça para cada programador trabalhar em um documento individual.
Limite de tamanho de mensagem padrão
O Device Sync tem um limite de tamanho de mensagem padrão de 20 MB compactado para quaisquer mensagens enviadas do aplicação cliente . O tamanho da mensagem depende do tamanho compactado das alterações enviadas do dispositivo cliente . Para obter mais informações sobre os conjuntos de alterações e a compactação usada pelo Sync, consulte Conjunto de alterações .
O tamanho compactado de um changeset não é diretamente equivalente ao tamanho de qualquer documento no upload. Na prática, no entanto, o tamanho do changeset geralmente está na mesma ordem de magnitude do tamanho dos documentos no upload.
Esse limite atua como uma contramedida contra conexões que consomem muitos recursos.
Você pode ver esse limite como uma mensagem de erro semelhante a failed to read: read
limited at 20971521 bytes
.
Você pode solicitar um limite maior enviando um ticket de suporte.
Pausa devido à inatividade
Após 30 dias sem atividade, o Device Sync é pausado. Consulte como Reabilitar o Sync para obter informações sobre como reabilitar o Device Sync.
Requisitos da versão do MongoDB
Você pode acessar a maior parte da funcionalidade CRUD e Agregação do MongoDB versão 3.6 com o serviço MongoDB; no entanto, o App Services não oferece suporte a todas as operações e recursos disponíveis em ferramentas e clientes padrão. Para obter uma lista de operações específicas do MongoDB que estão disponíveis quando você se conecta ao MongoDB por meio do App Services, consulte a referência da API de agregação CRUD &.
O Device Sync exige que os clusters do MongoDB Atlas executem versões específicas do MongoDB. O Flexible Sync requer MongoDB 5.0.0 ou superior.
Requisitos de versão de HTTP
A API de dados e os pontos de conexão HTTPS exigem HTTP/1.1 ou superior para fazer solicitações.
Opções de query
O App Services permite todas as opções de query em funções do sistema. O App Services não permite determinadas opções para operações CRUD executadas a partir de funções de usuário. Para obter uma lista de opções específicas disponíveis quando você se conecta ao MongoDB por meio do App Services, consulte Opções de query.
Resultados da query
Queries do MongoDB executadas por meio do App Services podem retornar um máximo de 50.000 documentos. Se precisar retornar mais documentos, recomendamos paginar sua query.
Solicitar tráfego
Os limites do App Services solicitam tráfego nos seguintes padrões:
10,000 solicitações simultâneas. Todas as solicitações feitas além do limite de solicitações simultâneas fora do Sync recebem um código de status de resposta HTTP de 429 - Excesso de solicitações.
5.000 Device Sync connections simultâneas de sincronização de dispositivos.
O App Services pode lidar com solicitações muito superiores aos limites acima. No entanto, esses limites são implementados para garantir que os aplicativos sejam escalados de forma responsável e para evitar ataques de DOS e cobranças não intencionais.
Você pode solicitar um limite maior enviando um ticket de suporte.
Pool de conexões
O App Services usa o pool de conexões para reduzir a sobrecarga de abrir e fechar conexões com frequência entre solicitações e execuções de Trigger. As conexões são abertas conforme necessário. O pool de conexões depende de vários fatores:
Camada do cluster. Quanto maior a camada de cluster, mais conexões disponíveis no pool.
Modo de sistema. Sistemas globais usam diversos servidores em cada região e, portanto, possuem um pool de conexões geral maior.
Serviços. Cada serviço tem um pool de conexões independente, portanto, o número de serviços em seu aplicativo não afeta o número de conexões disponíveis.
Hospedagem estática
O App Services impõe uma restrição de tamanho máximo de arquivo de 25MB na hospedagem estática.
Importante
A hospedagem estática está obsoleta. Saiba mais.