Pular para o conteúdo principal

Banco de documentos

O banco de documentos gerenciado fala o protocolo MongoDB: seus drivers e ferramentas MongoDB conectam nele sem mudança de código na maior parte dos casos. Por baixo, os documentos ficam num PostgreSQL gerenciado pela plataforma (FerretDB com a extensão DocumentDB), com os mesmos backups, recuperação a um instante e clone dos bancos gerenciados.

Ele é um nó do grafo do ambiente: você o adiciona no canvas (ou no coda.yaml), liga as aplicações a ele e usa as variáveis que ele publica. Antes de migrar uma aplicação existente, confira a matriz de compatibilidade.

Criar o banco​

No canvas do ambiente, adicione um Banco de documentos e escolha:

CampoDescrição
Versão2. A plataforma atualiza o pacote inteiro (protocolo e armazenamento) junto, na janela de manutenção.
TamanhoCPU, memória e disco padrão (doc-s1, doc-s2, doc-m1).
GatewaysDe 1 a 3 pontos de entrada do protocolo. Mais gateways atendem mais conexões simultâneas.
Disco (GiB)Só aumenta.
Janela de manutençãoQuando as atualizações podem ser aplicadas.
Agenda e retenção de backupHorário do backup diário e por quantos dias guardá-lo (o teto depende do plano).

O mesmo banco no coda.yaml:

services:
docs:
kind: document
config:
engineMajor: "2"
size: doc-s1
gateways: 2
api:
type: web
port: 8080
connects:
- docs
variables:
MONGO_URL: ${{ docs.MONGO_URL }}

O painel do nó mostra a pegada: o tamanho do banco e, separados, os gateways e os componentes da plataforma. A pegada é o que conta nas quotas de serviços de dados do plano; veja Planos, recursos e limites.

Conectar a aplicação​

Ligue a aplicação ao banco com uma aresta de rede (porta 27017) e use as variáveis do nó. O banco só é alcançável pelas aplicações ligadas a ele, dentro do ambiente.

VariávelConteúdo
MONGO_URL, DATABASE_URLmongodb://app:<senha>@<nó>:27017/app?authMechanism=SCRAM-SHA-256 (segredo)
HOST, PORTNome do nó e 27017
DATABASE, USERapp
PASSWORDSenha do usuário app (segredo)
  • A autenticação é SCRAM-SHA-256. Drivers que tentam SCRAM-SHA-1 por padrão precisam do authMechanism da URL (já incluído).
  • O tráfego entre a aplicação e o banco não sai do ambiente e só é aceito das aplicações ligadas por aresta.
  • A senha é gerada pela plataforma e guardada no cofre da organização. Para trocá-la, use Rotacionar credencial no painel do nó: a rotação entra no rascunho, e as aplicações que usam as variáveis são reiniciadas ao aplicar.

Compatibilidade​

O banco implementa as operações de uso comum do MongoDB: CRUD, consultas com filtros e projeções, agregações, índices e cursores. O que não é suportado:

RecursoSituaçãoAlternativa
Transações multidocumento (startTransaction, commitTransaction, abortTransaction)Não suportadasModele a operação num único documento (as escritas num documento são atômicas) ou use um padrão de compensação.
Gestão de usuários e papéis pelo protocolo (createUser, dropUser, updateUser, createRole, grantRolesToUser, revokeRolesFromUser…)Não suportadaO usuário app é gerenciado pela plataforma; a senha muda por Rotacionar credencial.
bulkWrite (comando de servidor do MongoDB 8)Não suportadoOs métodos bulkWrite/insertMany dos drivers que enviam insert/update/delete em lote funcionam; desligue o modo de bulk write de cliente, se o driver tiver.
Change streams (watch)Não suportadosFaça polling por um campo de data ou publique eventos numa fila.
killOp, setParameter, profile, logRotate, shutdownNão suportadosOperação e monitoramento ficam com a plataforma; as métricas estão na aba Métricas.
Converter coleção para capped (convertToCapped)Não suportadoLimite o tamanho da coleção na aplicação (por exemplo, um job que apaga os documentos mais antigos).
Nomes de coleçãoSó UTF-8 válidoRenomeie coleções com bytes inválidos antes de importar.
  • Mensagens de erro podem diferir das do MongoDB, mesmo quando o código de erro é o mesmo. Trate erros pelo código, nunca pelo texto.
  • A matriz é conferida a cada versão nova do banco; recursos que passarem a ser suportados aparecem aqui.

Backups, PITR e clone​

  • Backup diário automático na agenda do nó, guardado fora do cluster, no armazenamento da sua organização (nenhuma outra organização o alcança), pelo número de dias do nó. Você também pode pedir um backup sob demanda na aba Backups.
  • PITR: você pode restaurar o banco a qualquer instante dentro da janela de recuperação mostrada na aba Backups.
  • Restaurar (de um backup ou de um instante) e clonar sempre criam um nó novo ao lado do original, pelo rascunho do ambiente; o original nunca é sobrescrito. O nó novo recebe credenciais novas.
  • O clone copia os documentos como estão: o mascaramento de dados não está disponível no banco de documentos.
  • Remover o banco exige o papel Admin e confirmação. A plataforma faz um backup final antes de apagar e o guarda pelo prazo do plano.

A plataforma também restaura uma cópia dos backups toda semana, num ambiente isolado, para verificar que eles funcionam.

O que ainda não está disponível​

  • Importar um dump (mongodump/mongoexport) pelo portal chega com a fase 65 do roadmap. Até lá, importe pela própria aplicação ou por um job que roda mongorestore/mongoimport contra MONGO_URL, respeitando a matriz de compatibilidade.
  • Alta disponibilidade do armazenamento (hoje uma instância; os gateways escalam de 1 a 3), acesso de fora do ambiente e console de dados no portal.