AULA 51
MÓDULO 7
banco de dados
⏱ 55 min
SQL vs NoSQL
SQL vs NoSQL: quando usar cada um. ACID em transações. PostgreSQL com Node.js. Connection pool.
SQLNoSQLACIDPostgreSQLMongoDBRedistransaçãoconnection pool
SQL vs NoSQL
A escolha entre SQL (relacional) e NoSQL é uma das decisões mais importantes de arquitetura. Não existe certo ou errado — existe adequado para o problema.
🏛️
SQL — Relacional
✓ ACID — transações seguras
✓ Joins — relacionamentos complexos
✓ Schema fixo — consistência
✓ Maturidade de 50 anos
Exemplos: PostgreSQL, MySQL, SQLite
✓ Joins — relacionamentos complexos
✓ Schema fixo — consistência
✓ Maturidade de 50 anos
Exemplos: PostgreSQL, MySQL, SQLite
🌊
NoSQL — Não-relacional
✓ Schema flexível
✓ Escala horizontal
✓ Alta performance para leitura
✓ Dados hierárquicos/documentos
Exemplos: MongoDB, Redis, Cassandra
✓ Escala horizontal
✓ Alta performance para leitura
✓ Dados hierárquicos/documentos
Exemplos: MongoDB, Redis, Cassandra
ACID — garantias do SQL
ACID é o conjunto de propriedades que garantem transações confiáveis em bancos relacionais.
Atomicidade
Tudo ou nada. Se parte falha, tudo é revertido.
Consistência
Banco sempre em estado válido. Constraints respeitadas.
Isolamento
Transações simultâneas não se interferem.
Durabilidade
Dados commitados sobrevivem a falhas.
quando usar o quê
Dados financeiros, pedidos, usuários → SQL. Logs, sessões, cache → Redis. Catálogos flexíveis, documentos → MongoDB. Busca por similaridade → vetorial.
javascript
// PostgreSQL + Node.js com pg const { Pool } = require('pg') const pool = new Pool({ connectionString: process.env.DATABASE_URL }) // Transação ACID — transfência bancária async function transfer(fromId, toId, amount) { const client = await pool.connect() try { await client.query('BEGIN') await client.query( 'UPDATE accounts SET balance = balance - $1 WHERE id = $2', [amount, fromId]) await client.query( 'UPDATE accounts SET balance = balance + $1 WHERE id = $2', [amount, toId]) await client.query('COMMIT') // tudo ok } catch (err) { await client.query('ROLLBACK') // desfaz tudo throw err } finally { client.release() } }
quiz · aula 51
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
O que é uma transação ACID?
QUESTÃO 02
Quando usar NoSQL em vez de SQL?
QUESTÃO 03
Por que usar connection pool?
0/3