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;