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:
| Campo | Descrição |
|---|---|
| Versão | 2. A plataforma atualiza o pacote inteiro (protocolo e armazenamento) junto, na janela de manutenção. |
| Tamanho | CPU, memória e disco padrão (doc-s1, doc-s2, doc-m1). |
| Gateways | De 1 a 3 pontos de entrada do protocolo. Mais gateways atendem mais conexões simultâneas. |
| Disco (GiB) | Só aumenta. |
| Janela de manutenção | Quando as atualizações podem ser aplicadas. |
| Agenda e retenção de backup | Horá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ável | Conteúdo |
|---|---|
MONGO_URL, DATABASE_URL | mongodb://app:<senha>@<nó>:27017/app?authMechanism=SCRAM-SHA-256 (segredo) |
HOST, PORT | Nome do nó e 27017 |
DATABASE, USER | app |
PASSWORD | Senha do usuário app (segredo) |
- A autenticação é SCRAM-SHA-256. Drivers que tentam
SCRAM-SHA-1por padrão precisam doauthMechanismda 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:
| Recurso | Situação | Alternativa |
|---|---|---|
Transações multidocumento (startTransaction, commitTransaction, abortTransaction) | Não suportadas | Modele 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 suportada | O usuário app é gerenciado pela plataforma; a senha muda por Rotacionar credencial. |
bulkWrite (comando de servidor do MongoDB 8) | Não suportado | Os 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 suportados | Faça polling por um campo de data ou publique eventos numa fila. |
killOp, setParameter, profile, logRotate, shutdown | Não suportados | Operação e monitoramento ficam com a plataforma; as métricas estão na aba Métricas. |
Converter coleção para capped (convertToCapped) | Não suportado | Limite o tamanho da coleção na aplicação (por exemplo, um job que apaga os documentos mais antigos). |
| Nomes de coleção | Só UTF-8 válido | Renomeie 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 rodamongorestore/mongoimportcontraMONGO_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.