Pular para o conteúdo
Tecnologia

PostgreSQL é o banco relacional mais avançado e open-source. ACID completo, JSON nativo, extensões poderosas. Usado por Instagram, Spotify e Uber.

Conceitos Principais

ACID Transactions

Atomicity, Consistency, Isolation, Durability. BEGIN, COMMIT, ROLLBACK. Garante integridade.

Data Types

Primitivos (INT, VARCHAR), JSON/JSONB, Arrays, ENUM, UUID. Rich type system.

Índices

B-tree (default), Hash, GiST, GIN. Acelera queries. CREATE INDEX ON users(email).

Extensions

PostGIS (geo), pg_stat_statements (monitoring), uuid-ossp. Extensível.

Passo a Passo

  1. Instale PostgreSQL: Mac: brew install postgresql. Linux: apt install postgresql. Docker: docker run -p 5432:5432 postgres:15.
  2. Crie Database: psql: CREATE DATABASE myapp; \c myapp; CREATE TABLE users (id SERIAL PRIMARY KEY, email VARCHAR UNIQUE, created_at TIMESTAMP DEFAULT NOW());
  3. CRUD Básico: INSERT INTO users (email) VALUES ('user@test.com'); SELECT * FROM users WHERE email = '...'; UPDATE users SET email = '...' WHERE id = 1; DELETE FROM users WHERE id = 1;
  4. Transactions: BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT;
  5. Node.js Integration: npm install pg. const { Pool } = require('pg'); const pool = new Pool({ connectionString: 'postgresql://...' }); const result = await pool.query('SELECT * FROM users');

Boas Praticas

Recomendacoes

• Use SERIAL ou UUID para primary keys

• Índices em foreign keys e WHERE clauses

• Parametrized queries (previne SQL injection)

• Connection pooling

• Regular VACUUM e ANALYZE

• Backup automático diário

Erros Comuns

Evite estes erros

• String concatenation em queries (SQL injection)

• Sem índices (queries lentas)

• N+1 queries (use JOINs)

• Não usar transactions

• Default config em produção (tune isso)

Checklist

  • PostgreSQL instalado
  • Database e tabelas criadas
  • CRUD funcionando
  • Transactions testadas
  • Connection pool configurado
  • Backup automático ativo