Saltar al contenido

Evidencia reproducible

Laboratorios que se ejecutan, no que se leen

7 de los 8 laboratorios corren sin instalar nada y sin levantar ningún servidor, y se comprueban en cada cambio sobre Python 3.11, 3.12 y 3.13. Ninguno afirma nada en milisegundos: un tiempo depende de la máquina, así que lo que se afirma son invariantes, planes de ejecución, accesos y bytes.

Cómo ejecutarlos Guía y método Entornos con contenedores
ejecutable en CI

01 — Fundamentos de SQL sobre el dominio educativo

90 minutos · guía del laboratorio

Carga el esquema y los datos canónicos en SQLite en memoria, ejecuta reuniones y agregaciones, y comprueba invariantes sobre el resultado.

python labs/01-sql-foundations/run_lab.py

Qué mide

  • filas devueltas por cada consulta frente a las esperadas
  • integridad referencial del conjunto de datos

Marca de éxito: LAB_OK

Clases que lo usan: 001 002 003 004 005 006 007 008 009 011 012 013 014 015 016 017 018 020 021 022 023 024 025 026 027 028 029 033 061

De dónde sale el criterio

de diseño

02 — Modelado políglota del mismo dominio

120 minutos · guía del laboratorio

Traduce el mismo dominio a tres modelos —relacional, documental y de grafo— y obliga a declarar qué gana y qué se pierde en cada uno.

Se entrega escrito: modelo, decisión y justificación, sin ejecución automática.

Qué mide

  • consultas que cada modelo resuelve sin trabajo adicional
  • duplicación y riesgo de divergencia que introduce cada modelo

Marca de éxito:

Clases que lo usan: 010 019 034 038 063 072 073 074

De dónde sale el criterio

ejecutable en CI

03 — Actualización perdida y sus tres correcciones

90 minutos · guía del laboratorio

Dos hilos reales compiten por la última plaza de un curso. El laboratorio reproduce la actualización perdida y la corrige con actualización atómica, control optimista por versión y bloqueo pesimista.

python labs/03-transactions/run_transactions_lab.py

Qué mide

  • reservas aceptadas frente a plazas existentes
  • conflictos detectados por el control optimista

Marca de éxito: TRANSACTIONS_LAB_OK

Clases que lo usan: 030 031 032 043 044 045 046 047 057 059 060

De dónde sale el criterio

ejecutable en CI

04 — Planes de ejecución y costo real de un índice

90 minutos · guía del laboratorio

Veinte mil filas deterministas, tres consultas y dos índices. Las aserciones son sobre el plan y sobre el trabajo —instrucciones de la máquina virtual—, nunca sobre el tiempo.

python labs/04-indexing/run_indexing_lab.py

Qué mide

  • forma del plan antes y después de cada índice
  • trabajo de la consulta y costo en páginas de la escritura

Marca de éxito: INDEXING_LAB_OK

Clases que lo usan: 040 042 048 049 050 051 052 062 064 065

De dónde sale el criterio

ejecutable en CI

05 — Elección por carga de trabajo en almacenes no relacionales

90 minutos · guía del laboratorio

Cuenta accesos, bytes y tamaño de partición para decidir entre incrustar y referenciar, y para mostrar que un TTL no es coherencia ni una clave de partición cualquiera reparte la carga.

python labs/05-nosql-workloads/run_nosql_lab.py

Qué mide

  • lecturas obsoletas con y sin invalidación en la escritura
  • accesos y bytes reescritos de cada modelo bajo la misma carga
  • tamaño de la partición mayor según la clave elegida

Marca de éxito: NOSQL_LAB_OK

Clases que lo usan: 035 036 037 039 054 055 066 067

De dónde sale el criterio

ejecutable en CI

06 — Recuperación vectorial explicable

60 minutos · guía del laboratorio

Similitud coseno y recall@k sobre vectores deterministas, antes de introducir cualquier modelo de embeddings externo.

python labs/06-vector-search/run_vector_lab.py

Qué mide

  • orden del ranking frente al esperado
  • recall@k sobre el conjunto relevante declarado

Marca de éxito: VECTOR_LAB_OK

Clases que lo usan: 041 068 069 070 071

De dónde sale el criterio

ejecutable en CI

07 — Réplica, retraso y garantías de sesión

90 minutos · guía del laboratorio

Un líder y dos seguidores con retraso declarado. Cuenta las lecturas obsoletas y las que rompen garantías que la aplicación daba por hechas, y aplica las tres correcciones: leer del líder, esperar la posición propia o exigir quórum.

python labs/07-replication/run_replication_lab.py

Qué mide

  • lecturas que no ven la escritura propia del cliente
  • lecturas no monótonas al repartir entre réplicas con distinto retraso
  • espera que cuesta cada garantía y cola pendiente del seguidor más lento

Marca de éxito: REPLICATION_LAB_OK

Clases que lo usan: 053 056

De dónde sale el criterio

ejecutable en CI

08 — Respaldo, restauración y punto en el tiempo

90 minutos · guía del laboratorio

Respalda una base real con la API del motor, sigue escribiendo mientras archiva cada transacción, provoca un borrado sin filtro y reconstruye la base a un instante anterior al desastre. Un respaldo que no se restaura no es un respaldo.

python labs/08-recovery/run_recovery_lab.py

Qué mide

  • transacciones perdidas (RPO) con cada estrategia de recuperación
  • trabajo de recuperación en operaciones reproducidas
  • igualdad exacta entre la base restaurada y el estado bueno

Marca de éxito: RECOVERY_LAB_OK

Clases que lo usan: 058

De dónde sale el criterio