O Atlas Infinite separa a computação do armazenamento em duas camadas independentes. Os nós de computação executam suas queries, transações e agregações. A camada de armazenamento armazena seus dados de forma duradoura, mantendo várias cópias para alta disponibilidade. O MongoDB gerencia a camada de armazenamento independentemente da camada de computação, portanto, as operações de dimensionamento e recuperação são executadas sem mover ou replicar dados.
O diagrama a seguir mostra como o Atlas Infinite se encaixa no Atlas, nas camadas de aplicação, computação e armazenamento, com as interfaces de gerenciamento do Atlas abaixo.
Como a computação e o armazenamento Infinite do Atlas se encaixam no aplicação Atlas e na pilha de gerenciamento
Camada de computação
Os nós de computação são a camada que executa suas queries, transações e agregações. Como os nós de computação são desacoplados do armazenamento, você pode escalar a capacidade de computação independentemente do armazenamento. Você pode adicionar capacidade de computação à medida que a demanda cresce e reduzi-la novamente quando a demanda cai. Se você ativar o auto-scaling, o Atlas ajustará a computação para você.
Na visualização pública, o Atlas distribui seus nós de computação em zonas de disponibilidade separadas dentro da região do seu cluster.
Camada de armazenamento
A camada de armazenamento no Atlas Infinite mantém os dados do seu aplicativo duráveis, mantendo várias cópias para alta disponibilidade. Com o Atlas Infinite, o MongoDB gerencia o armazenamento como uma camada independente, separada dos nós de computação que executam o volume de trabalho do seu aplicativo. A camada de armazenamento lida com a replicação, atende a leituras e fornece backups contínuos, independentemente da camada de computação. Quando você escala a camada do cluster ou quando um nó de computação falha e o Atlas Infinite executa um failover, os dados do seu aplicativo permanecem disponíveis na camada de armazenamento para atender a queries. O MongoDB não o copia para os novos nós de computação.
Segurança
O Atlas Infinite isola cada cluster em camadas de armazenamento. O Atlas autentica mutuamente o tráfego interno com certificados X.509 para comunicação dentro da camada de armazenamento.
Como a camada de armazenamento é compartilhada, os dados de cada cliente são criptografados com chaves exclusivas que nunca são compartilhadas entre os clientes. Para saber como o Atlas criptografa dados do Atlas Infinite, consulte Visão geral do Atlas Encryption at Rest.
Replicação e failover
Um cluster Atlas Infinite tem dois nós de computação elegíveis: um primary, que atende às gravações, e um standby, que é o outro nó elegível e assume quando o primary falha ou é reiniciado. Durante a visualização pública, você pode adicionar até mais cinco nós para isolamento do volume de trabalho, dando a você até sete no total. Os nós adicionados só podem servir para leituras. Você pode adicionar os seguintes tipos de nó:
Os nós read-only atendem a leituras de seu volume de trabalho operacional.
Osnós de analítica isolam as queries analíticas do seu volume de trabalho operacional.
Os nós de pesquisa não são suportados em clusters do Atlas Infinite na visualização pública.
Os nós de computação não votam em um primary. A camada de armazenamento coordena o failover em vez de uma eleição entre os nós do cluster. Quando o primário falha ou é reiniciado, o auxiliar se torna o principal. A camada de armazenamento mantém seus dados recentes disponíveis para cada nó de computação.
A read preference funciona como em um cluster Atlas Core . Você pode usar todos os modos de preferência de leitura e marcações de conjunto de réplicas predefinidas.
O driver da sua aplicação define a preferência de leitura. O padrão do driver é primary, portanto, seu aplicação envia cada leitura para o principal, a menos que você altere a preferência de leitura.
Um Atlas cluster infinito tem um nó de auxiliar. Quando seu aplicação lê de um nó diferente do primary, essas leituras vão para esse nó de standby, a menos que você adicione nós somente leitura ou nós de analítica e defina uma preferência de leitura diferente. Use as seguintes recomendações:
Para atender às leituras operacionais do seu aplicativo a partir de mais de um nó, adicione nós somente leitura. Os nós somente para leitura atendem a leituras em qualquer preferência de leitura, exceto
primary, de modo que cada nó adicionado atende a parte desse tráfego. Para distribuir essas leituras entre os nós de espera e somente leitura, defina uma preferência de leitura desecondaryPreferred. Isso mantém as leituras do seu aplicativo fora do primário e evita sobrecarregar o único nó de auxiliar. Em um Atlas Core cluster, vários secundários distribuem essas leituras sem adicionar nós.Para isolar um volume de trabalho, como análises, das leituras operacionais do seu aplicativo, adicione nós de analítica ou nós somente leitura e use marcações de conjunto de réplicas predefinidas para direcionar as queries a esses nós.
Para dar a cada nó mais capacidade para atender às leituras, dimensione a camada do cluster.
Backup, restauração e recuperação pontual operam na camada de armazenamento. Para saber mais sobre backup e restauração, consulte Restaurar um Atlas Infinite Cluster.
Write Concern em clusters Atlas Infinite
Uma preocupação de gravação descreve o nível de confirmação que você solicita do MongoDB para uma operação de escrita.
Esta seção descreve os padrões de preocupação de gravação em um cluster Atlas Infinite, como o Atlas lida com cada campo de preocupação de gravação e como a preocupação de gravação difere de um cluster Atlas Core.
Em um cluster Atlas Infinite, a camada de armazenamento armazena e replica seus dados, e o Atlas reconhece sua escrita assim que a camada de armazenamento a captura.
Em um cluster Atlas Infinite, a preocupação de gravação padrão é w: "majority". Seu aplicação define a preocupação de gravação na string de conexão ou para uma única operação de escrita. Você não pode alterar o padrão na UI do Atlas .
O Atlas aceita qualquer preocupação de gravação que seu aplicação envie e a modifique, quando necessário, para um valor compatível com um cluster Atlas Infinite, para que as write concerns do seu aplicativo continuem funcionando.
Em um cluster Atlas Infinite, o Atlas lida com os campos de preocupação de gravação da seguinte forma:
Seu aplicação define o nível de confirmação de escrita com
w:Se o seu aplicação não definir
w, o Atlas aplicará o padrão,w: "majority". Em um Atlas Infinite cluster,"majority"refere-se a uma maioria dentro da camada de armazenamento, não a maioria dos nós do seu cluster. O Atlas nunca reverte uma gravaçãow: "majority".Se o seu aplicação definir
wcomo0ou1, o Atlas aplicará o valor que seu aplicação definir.w: 0não solicita confirmação. Uma escritaw: 1retorna mais cedo do que uma escritaw: "majority", mas o Atlas pode revertê-la em raras falhas.Se o seu aplicação definir
wcomo2ou qualquer número maior que2, o Atlas aplicaráw: "majority".
Seu aplicação pode definir um limite de tempo com
wtimeout(wtimeoutMSem uma string de conexão), em milissegundos.wtimeoutse aplica a gravaçõesw: "majority", incluindo gravações que usam o padrão:Se o seu aplicação definir
wtimeout, uma escrita que o Atlas não pode reconhecer retornará um erro de preocupação de gravação quando atingir o limitewtimeout.Se a sua aplicação não definir
wtimeout, a escrita aguardará indefinidamente e bloqueará a sua aplicação.
|serviço| sempre se aplica
j: true. A camada de armazenamento persiste cada gravação fora da memória do nó antes que o Atlas a reconheça. A configuraçãojdo seu aplicativo não tem efeito sobre esse comportamento.
A write concern difere entre os clusters do Atlas Infinite e os clusters do Atlas Core das seguintes maneiras:
Em um Atlas Infinite cluster, você define
wcomo0,1ou"majority". Paraw: 1ew: "majority", a camada de armazenamento garante sua escrita. Paraw: 0, a camada de armazenamento não reconhece sua escrita. Em um Atlas Core cluster, você também pode definirwcomo um número, o que solicita confirmação de muitos nós.Em um cluster do Atlas Infinite, o Atlas sempre aplica
j: truee não é possível desativar a confirmação do diário . Em um cluster do Atlas Core, você pode desativar a confirmação do diário comj: false.
Oplog em clusters Atlas Infinite
Em um Atlas cluster Infinite, a coleção de oplog, local.oplog.rs, não atende à replicação, pois a replicação é tratada na camada de armazenamento. A coleção atende a fluxos de mudança e algumas funções internas que exigem um histórico limitado. A coleta conta para os dados armazenados do seu cluster.
A replicação não usa a coleção de oplog. Em um cluster Atlas Infinite, a replicação acontece na camada de armazenamento, e o Atlas armazena a coleção de oplog,
local.oplog.rs, também lá. Cada nó lê a partir da camada de armazenamento, portanto, um nó que se junta ou se junta novamente ao cluster não pode ficar para trás da oplog window. Para saber mais, consulte Replicação e failover.A collection de oplog atende a change streams e funções internas.
local.oplog.rsatende a change streams e algumas funções internas que exigem um histórico limitado. A janela de retenção determina até que ponto um change stream interrompido pode ser retomado, mas não determina até que ponto você pode restaurar o cluster em si. Para isso, use restaurações point-in-time.Por quanto tempo o Atlas mantém as entradas. O Atlas mantém todas as entradas de oplog durante pelo menos a janela mínima de retenção de oplog. Quando uma entrada é mais antiga do que a janela, o Atlas a exclui. A janela mínima de retenção de oplog padrão é de 24 horas no Atlas Infinite e no Atlas Core. Você pode definir a janela mínima de retenção do oplog em Additional Settings para determinar a quantidade de histórico que o cluster mantém.
Como a collection de oplog afeta o tamanho e o custo dos dados. A coleção de oplog registra cada gravação no cluster. A coleta de oplog conta para os dados armazenados em seu cluster e para seus custos de armazenamento, o mesmo que em um cluster Atlas Core. O histórico que o Atlas mantém para backup contínuo na nuvem faz parte dos custos de backup. Esse histórico não conta para o armazenamento do cluster. Para saber mais, consulte Custos de cluster infinito do MongoDB Atlas .
Experiência operacional
Seu aplicação é executado no Atlas Infinite sem alterações de código. O Atlas Infinite usa o protocolo de conexão do MongoDB , para que seu aplicação se conecte ao cluster do Atlas Infinite usando drivers do MongoDB e outros métodos de conexão. Você também pode acessar e gerenciar o cluster com as ferramentas programáticas do MongoDB .