Programació d'aula
Calendari de sessions
Bloc 1 — Introducció i Fonaments (RA1 / RA2) · 6 hores
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S01 | Presentació del mòdul. Conceptes de SGBD. Arquitectura ANSI/SPARC. Tipus de SGBD (relacional, NoSQL, NewSQL). | Questionari inicial. AC0101 — Investigació de motors al mercat (db-engines.com). | RA1 |
| S02 | Comparativa PostgreSQL, MySQL/MariaDB, SQL Server, Oracle. Llicències, casos d'ús, posicionament al mercat. Rol del DBA. | AC0102 — Taula comparativa dels 4 motors. Anàlisi d'ofertes de treball. | RA1 |
| S03 | Arquitectura física d'un SGBD: buffer pool, WAL, fitxers de dades, logs. Propietats ACID. | AC0103 — Diagrames d'arquitectura. Resolució de casos pràctics ACID. | RA1 |
| S04 | Nivells d'aïllament de transaccions: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE. MVCC i 2PL. | AC0104 — Demostració d'anomalies de concurrència en dues consoles simultànies. | RA1 |
| S05 | Motors d'emmagatzematge: InnoDB vs MyISAM, heap/B-tree (PG), filegroups (SQL Server), tablespaces (Oracle). | AC0105 — Comparativa de motors d'emmagatzematge. Exercici MyISAM → InnoDB. | RA1 |
| S06 | Instal·lació de PostgreSQL 16: nativa (Linux/Windows) i amb Docker. Configuració inicial. postgresql.conf i pg_hba.conf. |
AC0110 — Exploració inicial de contenidors Docker: pull, run, connexió a PostgreSQL i MySQL. | RA1 / RA2 |
Bloc 1 — Instal·lació (continuació) · 3 hores
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S07 | Instal·lació de MySQL 8.0 i MariaDB 11: nativa i amb Docker. Configuració inicial. my.cnf. Diferències MySQL vs MariaDB. |
AC0111 — Configuració inicial del SGBD: ALTER USER, creació de BD amb UTF-8, revisió de max_connections i buffer pool. | RA1 / RA2 |
| S08 | Instal·lació de SQL Server 2022 (Linux/Docker). Configuració inicial. mssql.conf. Eines: sqlcmd, Azure Data Studio. |
AC0106 — Configuració de SQL Server 2022 per a entorn de desenvolupament. | RA1 / RA2 |
| S09 | Oracle Database 21c XE amb Docker. Configuració bàsica. init.ora. Estructura del CDB/PDB (Pluggable Databases). |
AC0107 — Exploració de l'arquitectura CDB/PDB d'Oracle. | RA1 / RA2 |
| S10 | Arxius de configuració dels 4 motors. Paràmetres clau: memòria, connexions, logs, encoding. Variables de sessió vs globals. | AC0108 — Comparativa de paràmetres de configuració. Cas pràctic: tuning bàsic. | RA2 |
| S11 | Eines de gestió: DBeaver (universal), pgAdmin 4 (PostgreSQL), MySQL Workbench, SQL Server Management Studio, Oracle SQL Developer. | AC0109 — Instal·lació i connexió de DBeaver als 4 motors. Exploració del catàleg. | RA1 |
| S12 | Repàs i pràctica integradora del Bloc 1. Resolució de dubtes. | Pràctica avaluable PR01 — Instal·lació i configuració dels 4 motors. Rúbrica RA1. | RA1 / RA2 |
Bloc 2 — Control d'accés (RA3) · 6 hores
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S13 | Introducció al control d'accés. Autenticació vs autorització. Models de control d'accés: DAC, MAC, RBAC. Conceptes: usuari, rol, privilegi, objecte. | AC0301 — Esquema de model de seguretat. Comparativa DAC vs RBAC. | RA3 |
| S14 | Gestió d'usuaris: CREATE USER, ALTER USER, DROP USER. Autenticació: password, certificat, Kerberos. pg_hba.conf (PostgreSQL), mysql.user (MySQL). |
AC0302 — Creació d'usuaris amb restriccions en els 4 motors. | RA3 |
| S15 | Privilegis en PostgreSQL i MySQL: GRANT, REVOKE. Privilegis de sistema vs objecte. Herència de privilegis. | AC0303 — Matriu de permisos per a un escenari multi-departament. | RA3 |
| S16 | Privilegis en SQL Server (logins, users, schemas). Oracle (system privileges, object privileges, GRANT ... WITH ADMIN OPTION). Organització d'esquemes (schemas) a PostgreSQL, SQL Server i Oracle. |
AC0304 — Configuració de seguretat SQL Server i Oracle · AC0308 — Anàlisi i reorganització d'esquemes: propietaris, rols d'accés i separació de dominis. | RA3 |
| S17 | Rols: CREATE ROLE, GRANT ROLE TO USER. Rols predefinits. Rols en SQL Server (fixed server roles, database roles). Rols d'Oracle. | AC0305 — Disseny i implementació d'una jerarquia de rols per a una empresa fictícia. | RA3 |
| S18 | Vistes de seguretat: vistes per ocultar dades sensibles. Row-Level Security (PostgreSQL). Dynamic Data Masking (SQL Server). | AC0306 — Implementació de RLS a PostgreSQL. Màscara de dades a SQL Server. | RA3 |
| S19 | Auditoria de bases de dades: pgaudit (PostgreSQL), audit_log (MySQL), SQL Server Audit, Oracle Unified Auditing. |
AC0307 — Configuració d'auditoria i anàlisi de logs d'accés. | RA3 |
| S20 | Repàs i pràctica integradora del Bloc 2. | Pràctica avaluable PR02 — Implementació de control d'accés complet. Rúbrica RA3. | RA3 |
Bloc 3 — Automatització de tasques (RA4) · 6 hores
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S21 | Introducció a la programació de SGBD. Procediments emmagatzemats: concepte, avantatges, sintaxi bàsica. PL/pgSQL vs T-SQL vs PL/SQL vs SQL/PSM. | AC0401 — Procediment "Hello World" en els 4 motors. Anàlisi de diferències sintàctiques. | RA4 |
| S22 | Estructures de control en PL/pgSQL i T-SQL: IF/ELSIF/ELSE, CASE, LOOP, WHILE, FOR. Gestió d'excepcions. Variables i cursors. | AC0402 — Procediment de càlcul de facturació mensual. Exercici de cursors. | RA4 |
| S23 | Procediments a MySQL (SQL/PSM) i Oracle (PL/SQL). Paràmetres IN, OUT, IN OUT. Overloading (Oracle). Packages (Oracle). | AC0403 — Procediment multi-motor per a gestió d'estoc. | RA4 |
| S24 | Funcions definides per l'usuari (UDF): escalars, de taula (table-valued functions a SQL Server), aggregate functions (PostgreSQL). | AC0404 — Funció de càlcul d'IVA i descomptes. Funció de formatació de NIFs. | RA4 |
| S25 | Disparadors (Triggers): BEFORE/AFTER, INSERT/UPDATE/DELETE, statement vs row level. Casos d'ús: auditoria, validació, desnormalització. | AC0405 — Trigger d'auditoria de canvis. Trigger de validació de dades. | RA4 |
| S26 | Triggers a SQL Server (DML triggers, DDL triggers, INSTEAD OF). Triggers a Oracle (compound triggers). Bones pràctiques i antipatrons. | AC0406 — Trigger DDL per a prevenció de DROP TABLE accidental. | RA4 |
| S27 | Esdeveniments programats (Event Scheduler): CREATE EVENT (MySQL). pg_cron (PostgreSQL). SQL Server Agent. Oracle DBMS_SCHEDULER. |
AC0407 — Tasca de neteja automàtica de logs. Tasca de resum estadístic diari. | RA4 |
| S28 | Repàs i pràctica integradora del Bloc 3. | Pràctica avaluable PR03 — Automatització completa d'un procés de negoci. Rúbrica RA4. | RA4 |
Bloc 4 — Optimització del rendiment (RA5) · 6 hores
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S29 | Introducció a l'optimització. Mètriques de rendiment: temps de resposta, throughput, latència. Identificació de colls d'ampolla. | AC0501 — Benchmark bàsic amb pgbench (PostgreSQL) i sysbench (MySQL). | RA5 |
| S30 | Índexs: estructura B-tree, cost de manteniment, selectivitat. Quan crear un índex i quan no. Índexs compostos, parcials, expressions. | AC0502 — Anàlisi del rendiment amb i sense índex sobre una taula de 1M files. | RA5 |
| S31 | Plans d'execució: EXPLAIN i EXPLAIN ANALYZE (PostgreSQL, MySQL). EXPLAIN i SET STATISTICS IO ON (SQL Server). EXPLAIN PLAN FOR (Oracle). |
AC0503 — Interpretació de plans d'execució. Identificació de Seq Scan vs Index Scan. | RA5 |
| S32 | Optimització de consultes SQL: reescriptura, ús correcte de JOINs, subqueries vs CTE, evitar funcions en clàusules WHERE, LIMIT/FETCH FIRST. |
AC0504 — Optimització de 5 consultes lentes. Comparació de plans abans i després. | RA5 |
| S33 | Monitoratge del SGBD: pg_stat_statements, Performance Schema (MySQL), DMVs (SQL Server), AWR/ASH (Oracle). Eines: Prometheus + Grafana, pgBadger. |
AC0505 — Configuració de monitoratge bàsic. Identificació de consultes lentes al log. | RA5 |
| S34 | Estadístiques del planificador: ANALYZE, VACUUM ANALYZE (PostgreSQL). ANALYZE TABLE (MySQL). UPDATE STATISTICS (SQL Server). DBMS_STATS (Oracle). |
AC0506 — Demostració de plans incorrectes per estadístiques obsoletes. | RA5 |
| S35 | Optimització a nivell de motor: work_mem, effective_cache_size (PostgreSQL). sort_buffer_size, join_buffer_size (MySQL). |
AC0507 — Tuning de memòria i mesura d'impacte. | RA5 |
| S36 | Repàs i pràctica integradora del Bloc 4. | Pràctica avaluable PR04 — Anàlisi i optimització de rendiment. Rúbrica RA5. | RA5 |
Bloc 5 — Alta disponibilitat (RA6) · 6 hores
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S37 | Introducció a l'alta disponibilitat. RTO i RPO. MTTR i MTBF. Causes de fallada. Estratègies: actiu-passiu, actiu-actiu. | AC0601 — Càlcul de RTO/RPO per a escenaris d'empresa. Anàlisi de casos reals de downtime. | RA6 |
| S38 | Còpia de seguretat i recuperació: còpia lògica vs física. pg_dump / pg_restore (PostgreSQL). mysqldump / mysqlpump (MySQL). |
AC0602 — Script de backup automatitzat. Test de restauració. | RA6 |
| S39 | Backup continu i PITR (Point-in-Time Recovery) a PostgreSQL amb pg_basebackup + WAL archiving. Backup incremental a MySQL amb Binary Log. |
AC0603 — Configuració de PITR a PostgreSQL. Restauració a un punt en el temps. | RA6 |
| S40 | Backup a SQL Server: Full, Differential, Transaction Log Backup. Estratègies de backup. SQL Server Agent per a backups automàtics. | AC0604 — Pla de backup complet per a SQL Server. Exercici de restore. | RA6 |
| S41 | Backup a Oracle: RMAN (Recovery Manager). Backup complet, incremental, arxivat. Flashback Database. | AC0605 — Configuració de RMAN. Simulació de fallada i recuperació. | RA6 |
| S42 | Replicació: conceptes bàsics. Replicació lògica vs física. Streaming Replication (PostgreSQL). Mestre-rèplica a MySQL/MariaDB (GTID). | AC0606 — Replicació mestre-rèplica PostgreSQL amb Docker Compose: configuració de streaming replication. | RA6 |
| S43 | Replicació a SQL Server: Always On Availability Groups (bàsic). Replicació a Oracle: Data Guard (conceptes). | AC0607 — Configuració d'Always On AG a SQL Server (entorn Docker). | RA6 |
| S44 | Bases de dades distribuïdes: sharding, particionament horitzontal. Citus (PostgreSQL). Proxies: ProxySQL (MySQL), pgBouncer (PostgreSQL). | AC0608 — Configuració de pgBouncer com a pool de connexions. | RA6 |
| S45 | Clustering: Patroni + etcd (PostgreSQL HA). Galera Cluster (MySQL/MariaDB multi-master). Failover automàtic. | AC0609 — Cluster Patroni de 3 nodes amb Docker Compose: test de failover automatitzat. | RA6 |
| S46 | Repàs general del mòdul. Preparació de l'examen final. | Pràctica avaluable PR05 — Alta disponibilitat i backup/recovery. Rúbrica RA6. | RA6 |
Sessions finals
| Sessió | Continguts | Activitats | RA Treballat |
|---|---|---|---|
| S47 | Revisió general del mòdul. Resolució de pràctiques pendents. Q&A. | Revisió de notes i feedback individualitzat. | Tots |
| S48 | Examen teòric final | Prova escrita individual cobrint tots els blocs. | Tots |
| S49 | Defensa oral de les pràctiques (si escau). Tancament del curs. Autoavaluació. | Presentació de portafolis de pràctiques. Reflexió final. | Tots |