Salta el contingut

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

  1. Qué és un índex en una base de dades i per qué accelera les consultes?
  2. Quina diferència hi ha entre un índex B-Tree i un índex Hash? Quan usaries cadascun?
  3. Qué significa que una base de dades fa un "Seq Scan"? Quan és acceptable i quan no?
  4. Com funciona l'operador EXPLAIN en PostgreSQL? Qué mostra?
  5. Qué és el particionament de taules i quin problema resol?
  6. Si tens una taula de 500 milions de files de logs, com la particionaries?
  7. Qué és la replicació en una base de dades? Quin avantatge aporta?
  8. Qué és PgBouncer i per qué és important en aplicacions amb molta concurrència?
  9. Qué és pg_stat_statements i com ajuda a identificar queries lentes?
  10. 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.

    Índexs avançats

  • Particionament


    Particionament per rang, llista i hash en PostgreSQL. Partition pruning automàtic. Índexs sobre taules particionades. Casos pràctics.

    Particionament

  • Optimització de queries


    EXPLAIN ANALYZE: lectura del pla d'execució, nodes i costos. pg_stat_statements. Reescriptura de queries per al rendiment.

    Optimització de queries

  • Replicació bàsica


    Replicació streaming en PostgreSQL. Primary i répliques de lectura. Connection pooling amb PgBouncer. Alta disponibilitat.

    Replicació

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.