Específicos · Bancos de Dados
Relacional: tabelas, esquema rígido, ACID, níveis de isolamento
Metade do tópico é transação e concorrência. Quase todo item errado descreve uma propriedade corretamente e assina com o nome da vizinha — leia a descrição, decida o que é, e só então olhe o nome.
Média41 itens no tópico
A ideia que organiza o assunto
Um banco relacional é um conjunto de relações, e uma relação é um conjunto não ordenado de tuplas. Tudo o que o modelo oferece decorre daí: como não há ordem nem ponteiro, o relacionamento entre duas tabelas existe por valor — uma coluna guarda o valor que aparece em outra — e não por endereço, como no modelo em rede, nem por posição numa árvore, como no hierárquico.
Mas o tópico, medido, não é sobre a estrutura da tabela. Dos 41 itens do corpus, 23 são sobre transação, concorrência e o que o SGBD garante quando duas pessoas escrevem ao mesmo tempo; 8 sobre esquema e estrutura; 4 sobre álgebra relacional. O assunto real é o que acontece quando uma operação pode falhar no meio ou colidir com outra — e as quatro letras de ACID são o vocabulário com que a banca fala disso.
A ideia que torna o resto derivável: cada letra de ACID resolve um problema diferente, e o item errado quase sempre troca uma pela outra. Atomicidade é tudo ou nada; isolamento é como se estivesse sozinha; durabilidade é sobrevive à queda; consistência é o banco continua válido. São promessas distintas, com mecanismos distintos — bloqueio para isolamento, log para atomicidade e durabilidade — e confundi-las é o erro mais cobrado aqui.
Como funciona
A transação. Unidade lógica de trabalho: pode conter várias operações de
leitura e escrita, e o SGBD trata o conjunto como indivisível. O ciclo é
BEGIN TRANSACTION … COMMIT ou ROLLBACK, com SAVEPOINT para desfazer
parcialmente. O ponto de commit é o momento em que a atomicidade está
resolvida e a durabilidade passa a ser responsabilidade do sistema.
Atomicidade, com a ressalva que decide itens. Atomicidade garante que a transação seja inteiramente efetivada ou inteiramente desfeita. Ela não garante que a transação termine com sucesso — uma transação que falha e é revertida cumpriu a atomicidade perfeitamente. Essa distinção aparece em três itens do corpus e é o que separa duas redações quase idênticas.
Isolamento e os níveis. Isolamento é a promessa de que a execução concorrente produza o mesmo resultado que a execução em série. Os níveis relaxam essa promessa em troca de desempenho:
| nível | leitura suja | não repetível | fantasma |
|---|---|---|---|
| read uncommitted | permite | permite | permite |
| read committed | previne | permite | permite |
| repeatable read | previne | previne | permite |
| serializable | previne | previne | previne |
A linha que o corpus efetivamente cobra é a do repeatable read, que previne a leitura não repetível e ainda admite a leitura fantasma — a linha nova que aparece entre duas execuções da mesma consulta.
Bloqueio e deadlock. O bloqueio é o mecanismo do isolamento. O binário tem dois estados e impede qualquer outro acesso, leitura ou escrita; o par compartilhado/exclusivo deixa vários leitores conviverem e dá exclusividade só a quem escreve. Bloqueios recíprocos produzem deadlock, que o SGBD detecta e resolve sozinho, abortando uma das transações — não devolvendo o problema à aplicação. O PostgreSQL faz isso automaticamente.
Log e recuperação. O log registra, por operação, o identificador da transação, o identificador do item de dados, o valor antigo e o valor novo. É com ele que o SGBD desfaz (atomicidade) e refaz (durabilidade). Recuperação e controle de concorrência não são independentes: o que pode ser desfeito depende de quem enxergou o quê.
Esquema × estado. O esquema é a intensão — a descrição da estrutura, que
muda por DDL. O estado, ou instância, é a extensão — os dados, que mudam por
INSERT, UPDATE e DELETE. Um INSERT não altera o esquema. E o esquema é
agrupamento lógico: quem separa fisicamente é o tablespace.
Álgebra relacional. Operações sobre relações que produzem relações — a propriedade de fechamento, que é o que permite encadear consultas. Seleção (σ) escolhe linhas e projeção (π) escolhe colunas: as duas são unárias. União e interseção exigem compatibilidade de união — mesmo grau e domínios compatíveis, e não nomes de coluna iguais.
O que decide os itens
| par que a banca confunde | o que cada um é |
|---|---|
| atomicidade × isolamento | tudo-ou-nada × como-se-estivesse-sozinha |
| atomicidade × “concluir com sucesso” | reverter também cumpre a atomicidade |
| bloqueio × log | isolamento × atomicidade e durabilidade |
| consistência × confidencialidade | o C de ACID não é segurança |
| repeatable read × serializable | fantasma ainda passa no primeiro |
| serializable × read uncommitted | quem lê dado não confirmado é o segundo |
| projeção × junção | projeção é unária, sobre colunas |
| esquema × estado | estrutura × dados |
| esquema × tablespace | lógico × físico |
| relacional × rede × hierárquico | valor × ponteiro × árvore |
Dois fatos que valem por vários itens:
- ACID não é exclusivo do modelo relacional. Vários bancos NoSQL oferecem transações ACID; o item que trata a atomicidade como privativa do relacional é errado.
- Relacional e NoSQL convivem. Persistência poliglota é prática corrente, e não há impedimento técnico a uma aplicação usar os dois.
Como a CEBRASPE derruba você aqui
Medido sobre os 41 itens do tópico: 18 Certo, 22 Errado, 1 sem explicação.
A descrição está certa e o nome está errado — 13 dos 22 itens errados (59%). É, de longe, o movimento dominante, e é o mesmo que a nota de Modelagem mede na outra metade da disciplina. A frase descreve uma propriedade com precisão de manual e assina com o nome da propriedade vizinha:
“Atomicidade é a propriedade que garante que as transações não sejam afetadas pelo funcionamento de outras transações” — a descrição é de isolamento.
“As propriedades ACID de uma transação garantem atomicidade, confidencialidade, isolamento e durabilidade” — o C é consistência.
“Projeção é uma operação binária que realiza a junção de duas tabelas” — a descrição é de junção; projeção é unária.
A defesa é mecânica e vale para o tópico inteiro: leia a descrição até o fim, decida sozinho o que ela define, e só então olhe o substantivo na frente.
A inversão de uma relação de dependência — 4 de 22. O item afirma que duas coisas são independentes quando uma depende da outra, ou o contrário: “O esquema de recuperação do banco de dados independe do esquema de controle de concorrência”; “as estruturas de dados lógicas não são separadas das estruturas de armazenamento físico”.
A propriedade levada ao absoluto — 3 de 22. “A atomicidade é uma característica exclusiva de bancos de dados relacionais”; “as operações de união e interseção são válidas somente [se os nomes das colunas forem iguais]”. Aqui vale a regra geral do corpus: o absoluto que pertence à definição sobrevive, o que o examinador acrescenta não.
Onde o tópico não te derruba. Nenhum item do corpus cobra o nome de um nível de isolamento pela anomalia que ele permite em forma de tabela, e as expressões leitura suja, read committed e phantom em inglês não aparecem uma única vez — o corpus fala em fantasma e descreve o comportamento. Decorar a tabela dos quatro níveis rende dois itens; entender que repeatable read ainda deixa passar o fantasma rende os dois.
Erros clássicos
- Chamar de atomicidade o que é isolamento. A pergunta que separa: a ameaça é a transação parar no meio (atomicidade) ou outra transação interferir (isolamento)?
- Achar que atomicidade promete sucesso. Ela promete um dos dois extremos.
Um
ROLLBACKcompleto é atomicidade funcionando. - Ler o C de ACID como confidencialidade. É consistência: o banco sai da transação num estado válido.
- Dar ao bloqueio o papel do log. Bloqueio serve ao isolamento; a recuperação de atomicidade e durabilidade é do log.
- Esperar que o deadlock volte para a aplicação. O SGBD detecta e aborta uma das transações sozinho.
- Confundir esquema com estado.
INSERTmuda os dados, não a estrutura. - Tratar projeção como binária. Projeção e seleção são unárias; quem junta duas relações é a junção.
- Exigir nomes iguais para a união. O que se exige é mesmo grau e domínios compatíveis.
- Supor que ACID só existe no relacional, ou que NoSQL e relacional não convivem na mesma aplicação.
LidoPraticado