Base de datos canónica de prueba para gabysql: validación funcional, regresión y comparación contra otros motores.


🎯 Objetivo

gabybench debe ser la base estándar para:


🧱 Principios del dataset


🗂️ Schema lógico recomendado

customers

products

orders

order_items

events


📏 Escalas recomendadas

Escala customers products orders order_items events
S 1,000 500 10,000 30,000 20,000
M 10,000 5,000 100,000 300,000 200,000
L 100,000 20,000 1,000,000 3,000,000 2,000,000

[!NOTE] L no debe exigirse al comienzo. Para las primeras fases bastan S y M.


🔍 Cargas a medir

OLTP base

Consulta operativa

Integridad y operación


⏱️ Métricas a registrar

Métrica Unidad
latencia por comando ms
throughput batch insert rows/s
tiempo de open/init ms
tiempo de backup/restore s
tamaño de .db MB
tamaño de .wal durante carga MB
memoria del proceso cuando sea medible MB

🧪 Comandos de medición

PowerShell

$time = Measure-Command { cargo run --release --bin gabysql -- exec gabybench.db "SELECT * FROM orders WHERE id = 5000;" }
$time.TotalMilliseconds

Linux / macOS

/usr/bin/time -f "%E real, %M KB" cargo run --release --bin gabysql -- exec gabybench.db "SELECT * FROM orders WHERE id = 5000;"

🥊 Motores de comparación

Comparación mínima obligatoria

Comparación adicional útil


📊 Cómo comparar correctamente

No basta con correr una consulta y mirar el tiempo.

Cada benchmark debe registrar:

Qué no hacer


✅ Uso esperado en el roadmap

gabybench debe aparecer en todas las fases críticas: