~/VibeHandbook
PDF grátis

Bancos de dados

sqlite.org

SQLite

O que é

Pense em um único arquivo de documento que você abre e edita diretamente, sem nenhum programa separado rodando em segundo plano para gerenciá-lo. O SQLite é assim para um banco de dados: é um banco de dados relacional autocontido e sem servidor que mantém todo o banco em um único arquivo. Não há um processo separado para executar ou gerenciar. Sua aplicação vincula a biblioteca diretamente e lê e escreve no arquivo. É o banco de dados mais amplamente implantado no mundo, embutido em telefones, navegadores e inúmeros aplicativos.

Pontos fortes

  • Zero configuração e nenhum servidor para operar.
  • O banco de dados inteiro é um único arquivo portátil, fácil de copiar ou fazer backup.
  • Rápido para leituras locais e cargas de escrita moderadas.
  • Suporte completo a (Structured Query Language, ou Linguagem de Consulta Estruturada) com transações e chaves estrangeiras.
  • Ótimo para testes, protótipos, ambientes de execução de borda ( runtimes) e uso embarcado.

Contrapartidas

  • Escritas simultâneas limitadas. Como uma única caneta compartilhada por um grupo, apenas uma pessoa pode escrever por vez, embora outras ainda possam ler (um escritor por vez; o WAL — write-ahead logging, um modo que permite que leituras e uma escrita aconteçam juntas — ajuda).
  • Não foi feito para muitos clientes em rede ou alta taxa de transferência de escrita.
  • Menos tipos avançados e nenhum sistema nativo de usuário/permissão.
  • Escalar além de um único host requer um armazenamento diferente ou uma camada como Turso/LiteFS.

Quando usar

Use o SQLite para aplicativos locais, ferramentas de (Command-Line Interface, ou Interface de Linha de Comando), softwares de desktop e mobile, suítes de teste e sites pequenos a médios onde as leituras predominam. Também é cada vez mais viável na borda (edge) via réplicas hospedadas.

Encaixe no vibe coding

Ao dirigir a IA, peça que ela habilite padrões seguros primeiro: ative PRAGMA foreign_keys = ON e o journaling WAL, já que o SQLite deixa as chaves estrangeiras desativadas por padrão. Faça com que ela use instruções parametrizadas e mantenha as migrações de esquema em arquivos .sql versionados. Uma dica útil: diga à IA que as escritas são serializadas, então ela deve agrupar inserções dentro de uma única transação e evitar bloqueios de escrita de longa duração. Como o banco de dados é apenas um arquivo, peça à IA para incluir uma etapa simples de backup (copiar o arquivo ou usar o comando .backup) em suas ferramentas.

PRAGMA journal_mode = WAL;
PRAGMA foreign_keys = ON;

CREATE TABLE notes (
  id         INTEGER PRIMARY KEY AUTOINCREMENT,
  title      TEXT NOT NULL,
  body       TEXT,
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
);

-- Batch many inserts in one transaction for speed
BEGIN;
INSERT INTO notes (title, body) VALUES (?, ?);
INSERT INTO notes (title, body) VALUES (?, ?);
COMMIT;