SQLite
Qué es
Piensa en un único archivo de documento que abres y editas directamente, sin un programa aparte ejecutándose en segundo plano para gestionarlo. SQLite es así para una : es una base de datos relacional autocontenida y sin servidor que guarda toda la base de datos en un solo archivo. No hay un proceso separado que ejecutar o administrar. Tu aplicación enlaza la biblioteca directamente y lee y escribe el archivo. Es la base de datos más utilizada del mundo, integrada en teléfonos, navegadores e innumerables aplicaciones.
Fortalezas
- Configuración cero y ningún servidor que operar.
- Toda la base de datos es un único archivo portátil, fácil de copiar o respaldar.
- Rápida para lecturas locales y cargas de escritura moderadas.
- Soporte completo de (Structured Query Language, lenguaje de consulta estructurado) con transacciones y claves foráneas.
- Excelente para pruebas, prototipos, entornos de ejecución en el borde () y uso embebido.
Compensaciones
- Escrituras concurrentes limitadas. Como un solo bolígrafo compartido por un grupo, solo una persona puede escribir a la vez, aunque otras pueden seguir leyendo (un escritor a la vez; WAL —write-ahead logging, registro de escritura anticipada, un modo que permite que las lecturas y una escritura ocurran a la vez— ayuda).
- No está diseñada para muchos clientes en red ni para un alto rendimiento de escritura.
- Menos tipos avanzados y sin sistema nativo de usuarios/permisos.
- Escalar más allá de un solo host requiere otro almacén de datos o una capa como Turso/LiteFS.
Cuándo usarla
Usa SQLite para aplicaciones locales, herramientas de (Command-Line Interface, interfaz de línea de comandos), software de escritorio y móvil, suites de pruebas y sitios pequeños a medianos donde predominan las lecturas. También es cada vez más viable en el borde (edge) mediante réplicas alojadas.
Encaje con vibe coding
Al dirigir a la IA, pídele que active configuraciones seguras por defecto primero: activar PRAGMA foreign_keys = ON y el journaling WAL, ya que SQLite deja las claves foráneas desactivadas por defecto. Haz que use sentencias parametrizadas y mantenga las migraciones de esquema en archivos .sql versionados. Un consejo útil: dile a la IA que las escrituras se serializan, así que debería agrupar las inserciones dentro de una sola transacción y evitar bloqueos de escritura de larga duración. Como la base de datos es solo un archivo, pídele a la IA que incluya un paso simple de respaldo (copiar el archivo o usar el comando .backup) en tu herramental.
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;