Dades relacionals a gran escala
Resultats d'Aprenentatge
RA1: Aplica tècniques d'anàlisi de dades identificant conceptes fonamentals i construint conjunts de dades complexes.
RA3: Gestiona i emmagatzema dades en grans conjunts extraient valor de diverses fonts.
Criteris d'Avaluació (CA)
| CA | Descripció |
|---|---|
| CA1.2 | Extreu informació de grans volums de dades mesurant i optimitzant el rendiment de les consultes. |
| CA1.7 | Determina criteris de cost i qualitat per a solucions Big Data relacionals. |
| CA3.3 | Comprova requisits d'emmagatzematge massiu i dissenya estratègies de particionament. |
| CA3.4 | Desenvolupa sistemes de gestió i processament de grans volums de dades relacionals. |
Continguts del Bloc 2
Les bases de dades relacionals no han desaparegut en l'era del Big Data: continuen sent la columna vertebral de molts sistemes empresarials i, en molts casos, la primera eina a considerar quan el volum de dades és de desenes o centenars de milions de registres. PostgreSQL, amb la seva arquitectura extensible i el seu optimitzador sofisticat, és el motor de referència en aquest bloc, però tots els conceptes es treballen també amb el seu equivalent a MySQL/MariaDB, SQL Server i Oracle, els altres tres motors estudiats al mòdul M0372.
La clau d'aquest bloc és entendre que la diferència entre una consulta que tarda 200 ms i una que tarda 20 minuts sovint no és qüestió de hardware sinó d'estratègia: quin índex crear, com particionar les dades, com reescriure la query perquè l'optimitzador pugui fer la seva feina. Aquest coneixement és transferible a qualsevol motor relacional, encara que cada SGBD l'implementi amb sintaxi i funcionalitats pròpies — i fins i tot a sistemes analítics com Redshift o BigQuery.
Els continguts d'aquest bloc inclouen, amb exemples per a PostgreSQL, MySQL/MariaDB, SQL Server i Oracle:
- Per qué els índexs B-Tree, Hash, GIN i BRIN existeixen i quan usar cadascun, i quins són els seus equivalents a MySQL, SQL Server i Oracle
- Com llegir i interpretar un pla d'execució (EXPLAIN ANALYZE a PostgreSQL/MySQL, execution plans a SQL Server, DBMS_XPLAN a Oracle): la diferència entre Seq Scan, Index Scan i Bitmap Index Scan
- El cost real del manteniment d'índexs en operacions d'escriptura massiva
- Particionament per rang, llista i hash en els quatre motors, i com cadascun elimina particions automàticament (partition pruning / partition elimination)
- Replicació en PostgreSQL (streaming), MySQL (binlog/GTID), SQL Server (Always On) i Oracle (Data Guard): casos d'ús per a read scaling i alta disponibilitat
- Connection pooling amb PgBouncer, ProxySQL i Oracle DRCP: per qué és imprescindible en sistemes amb moltes connexions concurrents
Qüestionari inicial
- Qué és un índex en una base de dades i per qué accelera les consultes?
- Quina diferència hi ha entre un índex B-Tree i un índex Hash? Quan usaries cadascun?
- Qué significa que una base de dades fa un "Seq Scan"? Quan és acceptable i quan no?
- Com funciona l'operador EXPLAIN en PostgreSQL? Qué mostra?
- Qué és el particionament de taules i quin problema resol?
- Si tens una taula de 500 milions de files de logs, com la particionaries?
- Qué és la replicació en una base de dades? Quin avantatge aporta?
- Qué és PgBouncer i per qué és important en aplicacions amb molta concurrència?
- Qué és pg_stat_statements i com ajuda a identificar queries lentes?
- Quina diferència hi ha entre una CTE materialitzada i una CTE inline a PostgreSQL 12+?
Organització dels continguts
-
Índexs avançats
B-Tree, Hash, GIN, BRIN i GiST: estructura interna, casos d'ús, índexs parcials i funcionals. Cost del manteniment en DML massiu.
-
Particionament
Particionament per rang, llista i hash en PostgreSQL. Partition pruning automàtic. Índexs sobre taules particionades. Casos pràctics.
-
Optimització de queries
EXPLAIN ANALYZE: lectura del pla d'execució, nodes i costos. pg_stat_statements. Reescriptura de queries per al rendiment.
-
Replicació bàsica
Replicació streaming en PostgreSQL. Primary i répliques de lectura. Connection pooling amb PgBouncer. Alta disponibilitat.
Durada i avaluació
| Element | Valor |
|---|---|
| Hores | 18 hores (6 sessions de 3h) |
| Pes en la qualificació final | 18% del mòdul |
| Pràctica avaluable | PR507402 — Optimització de BD relacional amb Docker |
| Activitats | AC5074/02/01 fins a AC5074/02/05 |
Enfocament d'aquest bloc
Tot el treball d'aquest bloc es fa sobre contenidors Docker amb datasets reals de milions de registres. Aprendre a llegir un pla EXPLAIN ANALYZE és una habilitat que distingeix un professional sènior d'un júnior, i és perfectament ensenyable amb la pràctica adequada.