Planificaciones 7515 - Base de Datos Docente responsable: BEIRO MARIANO GASTON 1 de 7
OBJETIVOS El objetivo general del curso es introducir a los alumnos en los fundamentos de los sistemas de gestión de bases de datos, a partir de la comprensión de 3 pilares: (a) el formalismo lógico de las bases de datos, desde la perspectiva del modelo ; (b) el modelado de datos en el marco de los procesos de desarrollo de software; y (c) el papel actual de las bases de datos en los sistemas de información como soporte para la inteligencia de negocios y el procesamiento distribuido. Los objetivos particulares son: (a) que los alumnos sean capaces de diseñar modelos de datos eficientes y de fundamentar sólidamente sus decisiones de diseño; (b) que comprendan el funcionamiento de los sistemas de gestión de bases de datos, siendo capaces de evaluarlos y de comparar sus prestaciones; (c) que se familiaricen con las tecnologías actuales en que las bases de datos se encuentran involucradas (como OLAP, el modelo MapReduce, o los sistemas distribuidos) adquiriendo las herramientas necesarias para extrapolar los conocimientos adquiridos en el curso a nuevas tecnologías. CONTENIDOS MÍNIMOS - PROGRAMA SINTÉTICO 1. Sistemas de Gestión de Bases de Datos. 2. Modelado conceptual de datos. El modelo Entidad-Interrelación (ER). 3. El modelo lógico. 4. Normalización de datos. Dependencias funcionales y multivaluadas. 5. Álgebra y cálculo es. 6. El lenguaje SQL. 7. Procesamiento y optimización de consultas. 8. Control de concurrencia en bases de datos. Transacciones. 9. Mecanismos de recuperación. 10. Seguridad en bases de datos. 11. Introducción a las bases de datos distribuidas. Replicación y consistencia. 12. NoSQL. 13. Introducción a Data Warehousing. PROGRAMA ANALÍTICO 1. Sistemas de Gestión de Bases de Datos. Sistema de Gestión de Base de Datos: definición, funciones. Base de datos: definición, tipos. Arquitectura de tres niveles ANSI-SPARC. 2. Modelado conceptual de datos. El modelo Entidad-Interrelación (ER). Herramientas de modelado conceptual. Modelo Entidad-Interrelacion (ER). Entidades, atributos e interrelaciones. Notación de Chen. Atributos monovaluados y multivaluados. Atributos atómicos y compuestos. Atributos derivados. Cardinalidad. Participación. Interrelaciones n-arias. Conjunto de atributos clave. Entidades fuertes y débiles: Discriminante. Modelo Entidad-Interrelación Extendido (EER). Generalización y especialización. Unión. 3. El modelo lógico. Modelo : esquema de relación, atributos, dominios. Restricciones de dominio, de unicidad y de integridad. Clave primaria, clave candidata, superclave. Valores nulos. Esquema de base de datos. Claves foráneas. Pasaje del modelo entidad-interrelación al modelo. 4. Normalización de datos. Dependencias funcionales y multivaluadas. Objetivos del diseño. Dependencia funcional. Primera forma normal (1FN): definición. Dependencia funcional parcial. Segunda forma normal (2FN): definición. Dependencia funcional transitiva. Tercera forma normal (3FN): definición. Forma normal Boyce-Codd (FNBC): definición. Dependencia multivaluada. Cuarta forma normal (4FN): definición. Dependencia de junta. Quinta forma normal (5FN): definición. Teoría de la normalización: Conjunto de dependencias funcionales. Axiomas de Armstrong. Inferencia de dependencias funcionales. Clausura de un conjunto de dependencias funcionales. Clausura de un conjunto de atributos. Equivalencia entre conjuntos de dependencias funcionales. Cubrimiento minimal de un conjunto de dependencias. Algoritmo de búsqueda de un cubrimiento minimal. Algoritmo de descomposición a 3FN. Proyección de un conjunto de dependencias funcionales sobre un conjunto de atributos. Preservación de 2 de 7
dependencias funcionales. Algoritmo de búsqueda de claves candidatas. Algoritmo de descomposición a FNBC. Preservación de información. Algoritmo de Chase. 5. Álgebra y cálculo es. Lenguajes de manipulación de datos (DML): definición, lenguajes procedurales y declarativos. Operaciones del álgebra básica: selección, proyección, redenominación, operaciones de conjuntos, producto cartesiano, junta (junta theta, junta por igual, junta natural), división. Conjuntos completos de operadores. Álgebra extendida: junta externa. Lógica de predicados de primer orden: predicados, operaciones, cuantificadores (existencial y universal), variables ligadas y libres. Cálculo de tuplas: expresiones. Expresión segura. Cálculo de dominio: expresiones. Completitud. Lenguaje mente completo. 6. El lenguaje SQL. Lenguajes de definición de datos (DDL): definición. El lenguaje SQL. Historia. Estructura del estándar. Definición de datos: creación de esquemas, tipos de dato, creación de tablas, definición de restricciones de clave primaria, clave candidata y clave foránea, reglas de integridad en la definición de claves foráneas ('ON UPDATE' y 'ON DELETE'). Comparación entre SQL y el modelo : concepto de 'multiset' o 'bag of tuples'. Manipulación de datos: Esquema básico de consulta: 'SELECT... FROM... WHERE'. Operaciones de junta. Operaciones de conjuntos. Ordenamiento y paginación. Esquema de consulta con agregación: '... GROUP BY... HAVING'. Consultas anidadas. Inserciones, eliminaciones y modificaciones de datos: restricciones de integridad. Eliminación de tablas y esquemas. 7. Procesamiento y optimización de consultas. Esquema básico de procesamiento de una consulta. Información de catálogo. Plan lógico de consulta: definición. Árbol de consulta. Plan físico de ejecución: definición: Índices: primarios, de clustering y secundarios. Creación de índices en SQL. Cálculo de costos de los operadores: selección (file scan e index scan), proyección, junta (por bloques, en único loop con índice, sort-merge, junta hash variante GRACE). Pipelining. Estimación de cardinalidad del resultado de un operador: selección, proyección, junta. Estimación con histograma de la selección y la junta. Reglas de equivalencia algebraica. Heurísticas de optimización algebraica. Cálculo del costo total de un plan de ejecución. 8. Control de concurrencia en bases de datos. Transacciones. Sistemas multiprocesador y multitarea. Concurrencia: definición. Modelo de concurrencia solapada. Transacción: definición. Propiedades ACID. Anomalías de la ejecución concurrente: lectura sucia, actualización perdida, lectura no repetible, escritura sucia, fantasma. Solapamiento de transacciones: definición. Ejecución serial. Serializabilidad de un solapamiento. Ejecución serializable. Equivalencia de solapamientos: equivalencia de resultados, equivalencia por conflictos, equivalencia de vista. Conflicto: definición. Grafo de precedencias: definición, construcción. Algoritmo de ordenamiento topológico. Enfoques del control de concurrencia: optimista y pesimista. Control de concurrencia basado en locks. Tipos de lock: locks génericos, de lectura y de escritura. Protocolo de lock de dos fases (2PL). Deadlock: definición, mecanismos de prevención. Grafo de alocación de recursos. Inanición: definición. Recuperabilidad de un solapamiento. Gestor de recuperación: concepto de log. Rollback de transacciones. Rollbacks en cascada. Protocolo de lock de dos fases estricto (S2PL). Protocolo de lock de dos fases riguroso (R2PL). Niveles de aislamiento: concepto, definición en SQL. 9. Mecanismos de recuperación. Fallas: tipos de fallas, fallas catastróficas. Registros de log. Reglas WAL (Write Ahead Log) y FLC (Force Log at Commit). Algoritmos de recuperación: algoritmo UNDO, algoritmo REDO, algoritmo UNDO/REDO. Puntos de control (checkpoints): definición, checkpointing activo e inactivo. Algoritmo UNDO con checkpointing inactivo. Algoritmos UNDO, REDO y UNDO/REDO con checkpointing activo. 10. Seguridad en bases de datos. Sistemas de control de acceso: DAC, MAC, RBAC. El control de acceso basado el roles (RBAC): esquema. Jerarquías de roles. Principios de seguridad: menor privilegio posible, división de responsabilidades, abstracción de datos. Soporte para RBAC en SQL: creación de roles, concesiones (GRANT) y revocaciones (REVOKE). Ataques de SQL injection. Consultas parametrizadas. 11. Introducción a las bases de datos distribuidas. Replicación y consistencia. Sistema de gestión de bases de datos distribuido. Fragmentación: concepto, fragmentación horizontal y vertical. Replicación: concepto, réplicas primarias y secundarias. Consistencia: concepto. Modelos de consistencia: consistencia secuencial, consistencia causal, consistencia eventual. Tablas de hash distribuidas: concepto. Hashing consistente. 3 de 7
12. NoSQL. Motivación de las bases de datos NoSQL y contexto histórico. Clasificación: bases de datos clave-valor, bases de datos wide column, bases de datos orientadas a documentos, bases de datos basadas en grafos. Desnormalización de datos. Base de datos libre de esquema. Bases de datos clave-valor: concepto, ejemplos. Arquitectura general de DynamoDB. Simulación de una estructura de tabla en una base de datos clave-valor. Bases de datos wide column: concepto, ejemplos. Arquitectura general de Cassandra: key spaces, column families, wide rows. El lenguaje CQL: definición de column families, tipos de dato. Claves primarias en Cassandra: partition key y candidate key. Reglas de consulta con CQL en Cassandra. conceptual en Cassandra: diseño orientado a las consultas, diagramas Chebotko. Bases de datos orientadas a documentos: concepto, ejemplos. Documento: concepto, ejemplos. Documento JSON: estructura básica. Arquitectura general de MongoDB: ObjectIds, documentos anidados y embebidos. Consultas básicas en MongoDB: cursores. Pipeline de agregación de MongoDB. Sharding: definición. Sharding en MongoDB: shard key, shards, replica sets. Esquema de maestro-esclavo con recuperación automática en MongoDB. Bases de datos basadas en grafos: concepto, ejemplos. Arquitectura general de Neo4J. Definición de nodos y arcos. El lenguaje Cypher: esquema básico de consulta. El modelo MapReduce: concepto, motivación. Funciones map y reduce. El Teorema CAP: definición e implicancias. Propiedades BASE. 13. Introducción a Data Warehousing. On-line transaction processing. Reglas OLAP. Esquema general de un data warehouse. Procesos ETL (extracttransform-load). Modelado conceptual de data warehouses: diagramas de estrella y copo de nieve. Dimensiones, hechos y medidas. Modelado lógico de data warehouses: MOLAP, ROLAP, HOLAP. Cubos de datos. Políticas de materialización de vistas. Operaciones OLAP: roll-up, drill-down, pivoting, slicing, dicing. Soporte OLAP en SQL: GROUPING SETS, ROLLAP, CUBE. BIBLIOGRAFÍA Bibliografía obligatoria: R. Elmasri, R., S. Navathe, Fundamentals of Database Systems, 6ta Edición, 2011. Bibliografía sugerida: H. García-Molina, J. Ullman, J. Widom, Database Systems: The Complete Book, 2da Edición, 2009. T. Connolly, C. Begg, Database Systems, a Practical Approach to Design, Implementation and Management, 6ta Edición, 2015. J. Ullman, J. Widom, A First Course in Database Systems, 3ra Edición, 2008. A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 6ta Edición, 2010. R. Ramakrishnan, J. Gehrke, Database Management Systems, 3ra Edición, 2002. S. Tiwari, "Professional NoSQL", 2011. J. Celko, Complete Guide to NoSQL, 2013. D. Sullivan, "NoSQL for Mere Mortals", 2015. K. Chodorow. "MongoDB, The Definitive Guide", 2da Edición, O Reilly, 2013. E. Hewitt, J. Carpenter, "Cassandra, The Definitive Guide", 2da Edición, O Reilly, 2016. I. Robinson, J. Webber, E. Eifrem, "Graph Databases", 2da Edición, O Reilly, 2015. RÉGIMEN DE CURSADA Metodología de enseñanza En las clases teóricas se introducen los conceptos de la asignatura a través de una metodología basada en la interacción con el alumno. Se presentan las definiciones generales y luego se discuten sus implicancias a partir de ejemplos resueltos en clase. En muchos de los temas se muestran también ejemplos en computadora, utilizando PostgreSQL, bases de datos NoSQL (Cassandra, MongoDB, Neo4J) y Pentaho. Se utilizan diapositivas como material didáctico, que luego son puestas a disposición de los alumnos a través del campus. Estas diapositivas tienen como objetivo servir como material de estudio, como registro de los contenidos discutidos en la clase, y como complemento a la lectura de la bibliografía obligatoria del curso. Durante las clases prácticas se realiza una síntesis de los contenidos estudiados en la teoría y se discuten ejemplos avanzados. A lo largo del cuatrimestre se desarrolla también un proyecto grupal de modelado de datos para un caso de estudio. 4 de 7
Al comienzo de cada clase práctica se ofrece un espacio para que los alumnos realicen consultas --en particular sobre las guías de ejercicios-- y para el seguimiento del proyecto grupal. También se realizan en forma periódica evaluaciones diagnósticas de caracter optativo para los alumnos y de alrededor de media hora, cuyo objetivo es brindar a los alumnos una herramienta para autoevaluar su aprendizaje y a los docentes una herramienta para hacer un mejor seguimiento del curso y volver sobre aquellos contenidos que presenten dificultades para los alumnos. La última hora de cada clase práctica está destinada a un trabajo de laboratorio en que los alumnos aplican los conceptos desarrollados a un ejemplo en un sistema de gestión de bases de datos real. Modalidad de Evaluación Parcial Se realiza una evaluación parcial que abarca el modelado conceptual de datos a través del modelo entidadinterrelación, el pasaje del modelo entidad-interrelación al modelo, la realización de consultas en álgebra y en SQL, y la teoría del diseño (formas normales, algoritmos de normalización, preservación de dependencias funcionales y preservación de información). La evaluación parcial y sus dos recuperatorios se realizan en el horario de las clases prácticas. 5 de 7
CALENDARIO DE CLASES Semana <1> 05/03 al 10/03 <2> 12/03 al 17/03 <3> 19/03 al 24/03 <4> 26/03 al 31/03 <5> 02/04 al 07/04 <6> 09/04 al 14/04 <7> 16/04 al 21/04 <8> 23/04 al 28/04 <9> 30/04 al 05/05 <10> 07/05 al 12/05 <11> 14/05 al 19/05 <12> 21/05 al 26/05 <13> 28/05 al 02/06 <14> 04/06 al 09/06 <15> 11/06 al 16/06 <16> 18/06 al 23/06 Temas de teoría Introducción a los SGBD conceptual y modelo entidadinterrelación Modelo Álgebra y cálculo es SQL Procesamient o de consultas Procesamient o de consultas Bases de datos distribuidas NoSQL Resolución de problemas Modelo entidadinterrelación Modelo Pasaje de modelo Álgebra Álgebra SQL: Consultas básicas SQL: agrupamiento, vistas Laboratorio Otro tipo Fecha entrega Informe TP Taller I: create, drop, insert, delete Taller II: constraints, PK, FK Taller III: SELECT básico, ORDER BY, FETCH FIRST, WHERE básico Taller IV: JOINs entre tablas, subconsultas, operadores de conjunto Taller V: agrupamiento Taller VI: Valores nulos - Evaluación Parcial - Primera Oportunidad NoSQL Concurrencia y transacciones Recuperación Seguridad Data Warehousing - NoSQL: MongoDB NoSQL: Cassandra Procesamiento de consultas Transacciones Taller VII: MongoDB Taller VIII: Cassandra Taller IX: Optimización de consultas Evaluación Parcial - Primer Recuperatorio Entrega de enunciado Entrega parcial: DEI Entrega parcial: DEI + MR Entrega final Bibliografía básica 1,2, 7, 8 3 y 9 6 4 y 5 15 y 16 15 y 16 18 y 19 19 25 21 y 22 23 24 29 6 de 7
CALENDARIO DE EVALUACIONES Evaluación Parcial Oportunidad Semana Fecha Hora Aula 1º 10 09/05 19:00 2º 14 06/06 19:00 3º 27/06 19:00 4º Observaciones sobre el Temario de la Evaluación Parcial La evaluación parcial abarca el modelado conceptual de datos a través del modelo entidad-interrelación, el pasaje del modelo entidadinterrelación al modelo, la realización de consultas en álgebra y en SQL, y la teoría del diseño (formas normales, algoritmos de normalización, preservación de dependencias funcionales y preservación de información). 7 de 7