Rúbrica PR507403 — MongoDB amb Docker
Aquesta rúbrica s'aplica a la pràctica PR507403 — MongoDB amb Docker del Bloc 3 del mòdul M5074 Sistemes de Big Data.
Nota final de la pràctica = suma ponderada dels quatre criteris (total 100 punts → escala 0-10).
Criteris d'avaluació
Criteri 1 — Instal·lació Docker i disseny de l'esquema (25%)
Avalua el funcionament del desplegament Docker i la qualitat del disseny de les col·leccions productes, clients i comandes (Parts 1 i 2).
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 23-25 pts | El docker-compose.yml aixeca MongoDB i Mongo Express correctament, amb healthcheck funcional i volum persistent. La connexió amb Compass i mongosh està verificada amb captures. L'esquema de les tres col·leccions és coherent amb el cas d'ús: la decisió embedding/referencing per a cada relació (comanda-client, comanda-línies, client-adreces) està justificada amb arguments tècnics precisos (cardinalitat, patró d'accés, risc de creixement). S'identifica correctament un anti-patró real i com s'evita. Les dades carregades (≥20 productes, ≥10 clients, ≥30 comandes) són variades i coherents. |
| Bé | 18-22 pts | El desplegament Docker funciona correctament però falta alguna evidència (captura de Compass o de l'estat dels contenidors). L'esquema és adequat i les tres relacions tenen una decisió embedding/referencing raonable, però la justificació d'alguna és superficial. S'identifica un anti-patró però l'explicació de com evitar-lo és incompleta. Les dades carregades compleixen els mínims però amb poca variabilitat. |
| Suficient | 13-17 pts | El desplegament Docker funciona amb incidències menors (falta el servei Mongo Express o el healthcheck no està configurat). L'esquema és funcional però alguna decisió d'embedding/referencing és incorrecta o no està justificada. No s'identifica cap anti-patró. Les dades carregades no arriben als mínims establerts (productes, clients o comandes). |
| Insuficient | 0-12 pts | El desplegament Docker no funciona o no hi ha evidència que s'hagi executat. L'esquema no diferencia embedding de referencing o el disseny és incoherent amb el cas d'ús (per exemple, tot embedded en un sol document gegant). No hi ha dades carregades o són clarament insuficients. |
Criteri 2 — CRUD i queries amb operadors (20%)
Avalua la correcció i completesa de les 10 operacions CRUD i de consulta de la Part 3.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 18-20 pts | Les 10 operacions estan implementades correctament i cobreixen tots els operadors demanats ($gte/$lte, $in, $and/$or, $elemMatch, $regex, $mul, $addToSet, upsert, delete amb filtre de data). El codi està ben comentat explicant què fa cada query. La taula d'equivalència CRUD↔SQL a l'informe és completa i correcta. Les queries s'han executat realment sobre les dades carregades (no és codi teòric sense provar). |
| Bé | 14-17 pts | La majoria de les 10 operacions estan implementades correctament, amb algun error puntual de sintaxi o d'operador (per exemple, usar $or on tocava $and). El codi té comentaris però no sempre expliquen el propòsit de la query. La taula CRUD↔SQL està present amb algun error. |
| Suficient | 10-13 pts | Falten diverses operacions de les 10 demanades, o diverses contenen errors que impedeixen la seva execució. Els comentaris són escassos. La taula CRUD↔SQL és incompleta. |
| Insuficient | 0-9 pts | La majoria de les operacions no estan implementades, no funcionen, o no usen els operadors específics demanats (es limiten a find() sense filtres). No hi ha taula d'equivalència SQL. |
Criteri 3 — Aggregation Pipeline (30%)
Avalua la correcció, complexitat i utilitat analítica dels 4 pipelines de la Part 4.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 27-30 pts | Els 4 pipelines (vendes per categoria, top 5 clients, resum mensual, $facet) estan implementats correctament i produeixen resultats coherents amb les dades carregades. S'utilitzen correctament $match, $unwind, $group, $lookup i $facet segons correspongui a cada cas. El $match es col·loca al principi del pipeline quan és possible (bona pràctica d'optimització). Cada pipeline té documentada la pregunta de negoci que respon i el resultat obtingut amb captura. Els acumuladors ($sum, $avg) i les expressions de data ($year, $month) s'usen correctament. |
| Bé | 21-26 pts | Els 4 pipelines estan implementats i funcionen, però algun té un error menor (per exemple, un $lookup que no aplana el resultat amb $unwind quan caldria, o un $group amb un acumulador no òptim). La majoria de preguntes de negoci estan documentades. Els resultats estan adjuntats per a la majoria de pipelines. |
| Suficient | 15-20 pts | Només 2 o 3 dels 4 pipelines estan implementats correctament. Hi ha errors conceptuals en l'ús de $group o $lookup (per exemple, agrupar pel camp incorrecte). La documentació de les preguntes de negoci és mínima o absent en algun cas. |
| Insuficient | 0-14 pts | Un o cap pipeline funciona correctament. No s'utilitzen $lookup o $unwind quan són necessaris per a la consulta. No hi ha resultats ni documentació de les preguntes de negoci. |
Criteri 4 — Índexs i anàlisi de rendiment (25%)
Avalua la correcta creació d'índexs i la interpretació de explain() de la Part 5.
| Nivell | Puntuació | Descriptor |
|---|---|---|
| Excel·lent | 23-25 pts | S'executa explain("executionStats") abans i després de crear l'índex compost, amb captures de totes dues. L'índex compost creat respecta la regla ESR i la prefix rule, i la comparació de mètriques (totalDocsExamined, nReturned, executionTimeMillis) demostra comprensió real de la millora (COLLSCAN → IXSCAN). L'índex de text i el multikey sobre tags estan creats i provats correctament amb consultes que els aprofiten. getIndexes() es documenta amb tots els índexs creats. L'informe explica amb criteri propi per què cada índex és adequat. |
| Bé | 18-22 pts | S'executa explain() abans i després, amb captures, però la comparació de mètriques és superficial (no s'interpreten els valors, només es mostren). L'índex compost és funcional però l'ordre dels camps no segueix estrictament ESR. L'índex de text o el multikey estan creats però no es prova explícitament que s'utilitzen. |
| Suficient | 13-17 pts | Només es mostra l'explain() d'abans o de després, no tots dos. L'índex creat no és l'adequat per a la query (per exemple, un índex simple quan calia un compost). No es crea l'índex de text o el multikey. |
| Insuficient | 0-12 pts | No hi ha evidència d'haver executat explain(). No es creen índexs o els índexs creats no tenen relació amb les queries de la pràctica. No hi ha getIndexes() ni cap interpretació dels resultats. |
Taula de conversió de puntuació a nota
| Puntuació (sobre 100) | Nota (sobre 10) | Qualificació |
|---|---|---|
| 90 - 100 | 9,0 - 10 | Excel·lent |
| 80 - 89 | 8,0 - 8,9 | Notable alt |
| 70 - 79 | 7,0 - 7,9 | Notable baix |
| 60 - 69 | 6,0 - 6,9 | Bé |
| 50 - 59 | 5,0 - 5,9 | Suficient |
| 0 - 49 | 0 - 4,9 | Insuficient (no superat) |
La nota mínima per superar la pràctica és 5,0 (50 punts sobre 100).
Criteris de no presentació i plagi
Causes d'avaluació com a no presentat (NP)
Les situacions següents comporten la qualificació de No Presentat (NP) independentment del contingut de la pràctica:
- No lliurar el
.zipdins el termini establert al Campus Virtual sense causa justificada prèvia. - No incloure el
docker-compose.ymlo algun dels quatre scripts (01a04) al lliurament. - No incloure cap captura d'
explain()a l'informe, de manera que sigui impossible verificar la Part 5.
Política de plagi i ús d'IA generativa
La pràctica avalua la capacitat de dissenyar, implementar i raonar sobre un sistema MongoDB real. Per tant:
- Copiar scripts d'altres companys o de fonts externes sense adaptar-los al propi disseny de dades és plagi i comporta una nota de 0 i l'obertura d'un expedient acadèmic.
- Usar IA generativa (ChatGPT, Claude, Gemini, etc.) per generar íntegrament els scripts o l'informe i presentar-los com a elaboració pròpia és equivalent al plagi i té les mateixes conseqüències.
- L'ús d'IA com a eina de consulta (resoldre dubtes puntuals de sintaxi, entendre un missatge d'error) és permès i no cal declarar-lo. La concepció del disseny, les decisions d'embedding/referencing i la interpretació dels resultats han de ser pròpies.
- El professorat pot convocar l'alumne a una defensa oral de qualsevol pràctica entregada per verificar-ne la comprensió, especialment si el codi presenta un nivell tècnic inconsistent amb la resta del curs.
Pes de la pràctica en la qualificació final del mòdul
| Element | Pes |
|---|---|
| PR507403 — MongoDB amb Docker | 15% de la nota final del mòdul M5074 |
| Activitats del Bloc 3 (AC5074/03/01 fins a AC5074/03/05) | Incloses a la nota de participació |
Consulta la programació del mòdul per al pes complet de cada bloc i instrument d'avaluació.
Rúbrica PR507403 | Mòdul M5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs CEIABD 2026-2027