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