Bancos NoSQL e bancos vetoriais
Do zero
O banco relacional é uma planilha muito bem organizada: tabelas com colunas fixas, ligadas por chaves. Funciona para quase tudo, mas há casos em que outro formato serve melhor. NoSQL (“não só SQL”) é o nome dos bancos que guardam dados de outros jeitos:
- Documento: cada registro é uma ficha completa, em formato parecido com JSON, e fichas da mesma pasta podem ter campos diferentes. Exemplo: MongoDB.
- Chave-valor: um armário de escaninhos numerados: você guarda e pega pelo número (a chave), muito rápido. Exemplo: Redis, que trabalha com os dados na memória (por isso é tão rápido) e pode gravar cópias em disco para não perdê-los num reinício.
- Família de colunas (wide-column): tabelas gigantes, espalhadas por muitos servidores, em que cada linha pode ter colunas diferentes. Exemplo: Cassandra.
- Grafo: um mapa de pessoas e ligações: nós (empresas, sócios) e arestas (é sócio de, contratou). Exemplo: Neo4j.
E o banco vetorial é o arquivo da IA: guarda embeddings, listas de números que representam o significado de um texto (textos de sentido parecido viram listas parecidas), e encontra os mais parecidos com uma pergunta. É a peça de busca do RAG (geração aumentada por recuperação): o assistente primeiro busca os trechos relevantes e depois responde com base neles.
Frase para guardar: documento para fichas flexíveis, chave-valor para velocidade, colunas para volume distribuído, grafo para relações, vetorial para busca por significado.
Em 1 minuto
- NoSQL costuma trocar parte das garantias do relacional (esquema rígido, JOINs, ACID completo) por flexibilidade e escala horizontal (mais servidores, dados divididos em shards).
- Teorema CAP: num sistema distribuído, quando há partição de rede, é preciso escolher entre consistência (todos veem o mesmo dado) e disponibilidade (todos recebem resposta). A tolerância a partição é obrigatória. Em prova, costuma-se classificar o Cassandra como AP (prioriza disponibilidade) e o HBase e o MongoDB como CP (priorizam consistência).
- BASE (basicamente disponível, estado flexível, consistência eventual) é o contraponto ao ACID: os dados ficam consistentes com o tempo.
- Redis: dados na memória, com persistência opcional em disco (instantâneos RDB e log AOF) e expiração por chave (TTL). O valor pode ser texto ou uma estrutura (lista, conjunto, conjunto ordenado, hash, stream); por isso serve para cache, sessões, filas (listas) e rankings (conjuntos ordenados).
- Banco vetorial: busca por similaridade (cosseno, distância euclidiana), com índices aproximados (como o HNSW, um grafo de atalhos que acha vizinhos próximos sem comparar a pergunta com todos os vetores) para ser rápido em milhões de vetores. Exemplos: pgvector (extensão do PostgreSQL), Milvus, Qdrant, Weaviate, Pinecone.
Exemplo concreto: o mesmo assunto em quatro modelos
Documento (MongoDB): uma prestação de contas com tudo dentro, inclusive anexos variáveis.
{
"_id": "pc-2026-123",
"municipio": "Anápolis",
"exercicio": 2026,
"responsaveis": [{ "nome": "Ana Souza", "cargo": "Prefeita" }],
"anexos": [{ "tipo": "balanco", "url": "…" }, { "tipo": "folha", "url": "…" }]
}
Chave-valor (Redis): a sessão do usuário, que expira em 30 minutos.
SET sessao:8f3a "matricula=1234;perfil=auditor" EX 1800
GET sessao:8f3a
Grafo (Neo4j): quem é sócio de quem, para achar empresas ligadas disputando a mesma licitação.
MATCH (a:Empresa)<-[:SOCIO_DE*1..3]-(p:Pessoa)-[:SOCIO_DE*1..3]->(b:Empresa),
(a)-[:PARTICIPOU]->(l:Licitacao)<-[:PARTICIPOU]-(b)
WHERE a.cnpj < b.cnpj
RETURN a.nome, b.nome, p.nome, l.numero
O trecho *1..3 segue de um a três níveis de participação (a pessoa é sócia de uma empresa que é sócia de outra), e o WHERE evita listar o mesmo par duas vezes, como (a, b) e (b, a). No relacional, essa pergunta exigiria vários JOINs encadeados, um por nível; no grafo, as ligações são o próprio dado.
Vetorial: os pareceres do Tribunal viram embeddings; a pergunta “contratação emergencial de TI sem pesquisa de preços” encontra os pareceres de sentido parecido, mesmo que usem outras palavras.
Comparação: os modelos e quando usar
| Modelo | Exemplo | Unidade | Bom para | Cuidado |
|---|---|---|---|---|
| Relacional | PostgreSQL, Oracle | Linha em tabela | Dados estruturados, transações, relatórios | Esquema rígido |
| Documento | MongoDB | Documento JSON (BSON) | Dados com estrutura variável, catálogos | JOINs limitados; duplicação |
| Chave-valor | Redis | Par chave → valor | Cache, sessões, contadores | Consulta só pela chave |
| Família de colunas | Cassandra, HBase | Linha com colunas variáveis, em famílias | Escrita massiva distribuída (logs, sensores) | Modelagem guiada pelas consultas |
| Grafo | Neo4j | Nós e arestas | Relações (fraude, redes, recomendações) | Pouco indicado para agregações em massa |
| Vetorial | pgvector, Milvus, Qdrant | Vetor (embedding) | Busca por similaridade, RAG | Resultado aproximado; depende do modelo de embedding |
| ACID | BASE | |
|---|---|---|
| Leitura logo após a gravação | Vê o dado novo (consistência forte) | Pode ver o dado antigo por um tempo (consistência eventual) |
| Prioridade | Correção de cada transação | Disponibilidade e escala |
| Típico de | Bancos relacionais | Muitos NoSQL distribuídos |
Como a FCC cobra
Associar o modelo NoSQL ao exemplo (MongoDB é documento; Redis, chave-valor; Cassandra, família de colunas; Neo4j, grafo) e ao caso de uso. Teorema CAP e consistência eventual vêm logo depois.
- Características e casos de uso de cada modelo.
- Teorema CAP e BASE × ACID.
- Escalabilidade horizontal e sharding.
- Banco vetorial, embeddings e busca por similaridade em RAG.
Pegadinhas
- “NoSQL significa que o banco não aceita nenhuma linguagem de consulta.” Falso: “não só SQL”; muitos têm linguagens próprias e até SQL.
- “O Redis é um banco orientado a grafos.” Falso: é chave-valor, em memória.
- “Pelo teorema CAP, um sistema distribuído garante sempre as três propriedades.” Falso: havendo partição, escolhe-se entre consistência e disponibilidade.
- “Banco vetorial busca palavras idênticas às da pergunta.” Falso: busca vetores próximos, ou seja, significado parecido.
- “Bancos de documentos exigem esquema fixo para todos os documentos.” Falso: o esquema é flexível.
- “O Redis não oferece persistência: tudo se perde num reinício.” Falso: os dados ficam na memória, mas ele pode gravá-los em disco (RDB e AOF).
- “O MongoDB não oferece transações ACID.” Falso: a gravação de um documento é sempre atômica, e desde a versão 4.0 há transações ACID com vários documentos (o custo é desempenho).
- “O C do teorema CAP é o mesmo C do ACID.” Falso: no ACID, consistência é respeitar as regras do banco (como saldo não negativo); no CAP, é todas as réplicas devolverem o dado mais recente.
Explique com suas palavras
Explique a um auditor por que um banco de grafos ajuda a achar empresas ligadas por sócios em comum numa licitação, e o que um banco vetorial acrescenta a um assistente de IA.
- Escreva sem olhar a lição, com frases curtas e um exemplo seu.
- Onde travar ou precisar de jargão, há uma lacuna: releia só essa parte.
- Compare com a explicação-modelo e reescreva o que faltou.
Fica salva neste navegador.
Comparar com uma explicação-modelo
No banco de grafos, empresas e pessoas são pontos, e “é sócio de” e “participou da licitação” são linhas entre eles. Perguntar “há duas empresas na mesma licitação com um sócio em comum?” é seguir as linhas do mapa, o que o grafo faz de forma direta e rápida. Num banco de tabelas, seria preciso juntar várias tabelas, uma consulta pesada e difícil de escrever.
O banco vetorial guarda o significado dos textos como listas de números. Quando alguém pergunta algo ao assistente, a pergunta vira números também, e o banco devolve os pareceres de sentido mais parecido, mesmo com outras palavras. O assistente responde com base neles.
Teste-se
Banco de Dados · NoSQL e vetoriais · Inédita, estilo FCC
Questão 1 de 3
Um sistema precisa guardar prestações de contas em que cada registro reúne, num único objeto semelhante a JSON, os dados do município, a lista de responsáveis e uma quantidade variável de anexos, sem exigir que todos os registros tenham os mesmos campos. O modelo NoSQL e o produto mais adequados são, respectivamente,
A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.
Toque longo numa alternativa para riscá-la.
Banco de Dados · NoSQL e vetoriais · Inédita, estilo FCC
Questão 2 de 3
Para armazenar as sessões dos usuários de um portal, com acesso muito rápido pela chave da sessão e expiração automática após 30 minutos, a solução mais indicada é um banco
A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.
Toque longo numa alternativa para riscá-la.
Banco de Dados · NoSQL e vetoriais · Inédita, estilo FCC
Questão 3 de 3
Uma equipe de auditoria quer descobrir empresas que disputaram a mesma licitação e que têm um sócio em comum, inclusive por cadeias de participação societária com vários níveis. O modelo de banco de dados que representa essas ligações de forma mais direta é o
A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.
Toque longo numa alternativa para riscá-la.
Mais duas questões deste tópico estão em Questões.
Flashcards gerados
| Frente | Verso |
|---|---|
| O que significa NoSQL? | “Não só SQL”: bancos que guardam dados em outros modelos (documento, chave-valor, família de colunas, grafo), em geral com esquema flexível e escala horizontal. |
| Os quatro modelos NoSQL e um exemplo de cada | Documento (MongoDB), chave-valor (Redis), família de colunas (Cassandra, HBase) e grafo (Neo4j). |
| O que é BASE? | Basicamente disponível, estado flexível e consistência eventual; o contraponto ao ACID, comum em NoSQL distribuídos. Exemplo: Uma curtida aparece para alguns usuários segundos antes que para outros. |
| Sharding (escala horizontal) | Dividir os dados entre vários servidores, cada um com uma parte (shard), para crescer acrescentando máquinas. |
| Banco de família de colunas (wide-column) | Linhas com colunas variáveis, agrupadas em famílias, espalhadas por muitos servidores; bom para escrita massiva, como logs e sensores. Exemplo: Cassandra. |
Ligação com o estudo de caso
Num caso de análise de fraudes em licitações, proponha um banco de grafos para as relações societárias; num caso de assistente de IA sobre as normas do Tribunal, um banco vetorial (por exemplo, pgvector no PostgreSQL já usado) para o RAG; e mantenha os dados transacionais (contratos, pagamentos) no relacional, que garante ACID.
Fontes da lição
- Edital nº 01/2026, Anexo II, Banco de Dados (fontes/edital-01-2026.txt).
- Pramod Sadalage e Martin Fowler, NoSQL Distilled (modelos NoSQL, consistência eventual).
- Eric Brewer, “Towards Robust Distributed Systems” (2000), origem do teorema CAP.
- pgvector, extensão de vetores do PostgreSQL
Claude explica
Tire dúvidas sobre este tema no Claude: o site copia o pedido com a lição e abre uma conversa nova, na sua conta. Confira na fonte qualquer fato de lei ou de norma.
Pratique fora do site
Faça questões da FCC sobre este tópico no QConcursos ou no Gran e registre aqui quantas fez: elas contam na meta da semana e no status do tópico.