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
🌊
NoSQL — Não-relacional
✓ Schema flexível
✓ 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