Saltar al contenido

Entornos de trabajo

Ruta A — Sin contenedores

Python 3.11+ y SQLite integrado. Es la ruta inicial y la utilizada por validación continua.

Ruta B — Contenedores locales

Docker Desktop, Docker Engine o alternativa compatible con Compose. Levanta solo el perfil necesario y detén los servicios al terminar:

Perfil Motores
relational PostgreSQL, MySQL
document MongoDB
cache Redis
graph Neo4j
todo los cinco a la vez
docker compose --profile todo up -d --wait
python scripts/verificar_equivalencia.py --con-servicios --verbose
docker compose --profile todo down --volumes

--wait no devuelve el control hasta que los healthcheck dan por sanos a los cinco motores, así que el verificador no arranca antes de tiempo. Y --volumes elimina los datos del laboratorio: nunca lo uses sobre un proyecto real.

Si la máquina ya tiene un PostgreSQL o un MySQL escuchando en el puerto de siempre, los puertos publicados son configurables:

PGPORT=5433 MYSQL_PORT=3307 docker compose --profile relational up -d --wait

El verificador no necesita esos puertos: habla con cada motor a través de docker compose exec, usando el cliente oficial que ya está dentro del contenedor. Los puertos están publicados solo para poder conectarse con un cliente gráfico.

Qué se ejecuta sin contenedores

Los motores de núcleo —SQLite y DuckDB— no necesitan ningún servicio:

python scripts/verificar_equivalencia.py --verbose

Eso cubre las implementaciones de núcleo de las 74 clases. El resto se declara como no ejecutado, y el informe lo dice con esas palabras.

Ruta C — Instalación nativa

Útil para administración profunda. Documenta versión, puerto, ruta de datos y servicio. No mezcles una instalación real con las credenciales de demostración.

Ruta D — Servicio administrado

Solo para módulos donde la administración del proveedor sea parte del objetivo. Define presupuesto, alertas de costo, región, eliminación final y política de datos. Ningún laboratorio básico requiere nube.

Compatibilidad

Los comandos principales se documentan para PowerShell y shell POSIX cuando difieren. Las rutas dentro de scripts Python usan pathlib.

Fuente de esta página: docs/ENVIRONMENTS.md