Syllabus
Almacenamiento escalable
PROFESOR/A
Jordi Conesa i Caralt
v6
Presentación de la materia
En un entorno actual, donde la cantidad de datos y de usuarios consumiendo esos datos es
masiva, las bases de datos relacionales, cuyo mayor exponente son las bases de datos
relacionales, pueden no ser la mejor opción a los problemas de almacenaje que encontremos.
En este contexto, es importante considerar otras soluciones que permitan 1) modelos de datos
más cercanos a los reales, y 2) sistemas distribuidos que proporcionen mayor disponibilidad,
tolerancia a fallos y escalabilidad. En esta materia abordaremos el ecosistema de bases de
datos que han aparecido en las dos últimas décadas para dar soporte a estas dos nuevas
realidades: las bases de datos NoSQL, NewSQL y multimodelo.
Para ello, empezaremos estudiando las ventajas e inconvenientes de utilizar bases de datos
distribuidas y veremos cómo podemos distribuir una base de datos para comportarse de forma
eficiente en cada contexto. Posteriormente, estudiaremos las bases de datos NoSQL,
NewSQL y multimodelo y tendremos la oportunidad de trabajar con alguna de ellas para ver
en primera persona su funcionamiento y puntos fuertes y débiles. En particular, trabajaremos
con tres de las bases de datos más populares hoy en día: MongoDB, Neo4j y CockroachDB.
Las bases de datos estudiadas en esta materia son especialmente idóneas para ciertos
dominios de aplicación. Entre estos dominios destacan aquéllos que trabajan con grandes
volúmenes de datos que se encuentran dispersos y replicados, aquellos dominios que tratan
con datos poco estructurados y dominios en los que se establecen múltiples y complejas
interrelaciones entre los datos.
2
v6
Objetivos de Aprendizaje
1. Ser capaz de contextualizar los conceptos fundamentales de bases de datos
distribuidas y ponerlos en valor.
2. Conocer los mecanismos de distribución de datos (fragmentación, distribución y
replicación) y el impacto que tienen en el rendimiento, consistencia y disponibilidad de
datos.
3. Saber describir cómo las bases de datos NoSQL y NewSQL permiten escalar
aplicaciones Big Data, haciendo referencia a la fragmentación a la replicación y al
impacto que tienen estos en el teorema CAP.
4. Conocer los distintos modelos NoSQL, NewSQL y multimodelo, sus características,
cómo organiza los datos cada uno de ellos y conocer sus principios básicos de diseño.
5. Saber insertar, modificar y consultar datos en dos de las bases de datos NoSQL más
populares: MongoDB y Neo4j y en una de las bases de datos NewSQL más popular
CockroachDB.
3
v6
Programa de la materia: estructura y contenidos
• Bases de datos distribuidas
o Fragmentación, distribución y replicación de datos,
o Impacto de la distribución y replicación en la consistencia / disponibilidad, y
o Optimización de consultas distribuidas.
• Introducción a NoSQL y persistencia políglota
• Modelos de datos: Modelos de agregación NoSQL (clave-valor, documentales y por
columnas), modelos en grafo NoSQL, modelos multi-modelo y modelos NewSQL.
• Bases de datos NewSQL: CockroachDB
• Bases de datos NoSQL: MongoDB
• Bases de datos NoSQL: Neo4j
4
v6
Metodología y Actividades
La metodología de aprendizaje se basa en el estudio de los materiales que se proporcionará
a los estudiantes, así como otras fuentes de información complementaria recomendada por el
equipo docente. Asimismo, se requiere el seguimiento y participación activa en los espacios
de comunicación ofrecidos para los estudiantes, así como la realización de las diferentes
actividades de aprendizaje (debates y ejercicios prácticos) que se propondrán en la materia.
Se espera que los estudiantes instalen en sus máquinas Neo4j y un pequeño binario para
utilizar CockroachDB para realizar las actividades prácticas. Se proporcionará una máquina
virtual con el entorno de MongoDB instalado y alternativas online a Neo4j para quien pueda
tener dificultades en su instalación/configuración.
5
v6
Planificación
A continuación, podemos ver la planificación de las dos semanas de curso:
Actividades Miércoles Jueves Viernes Sábado Domingo Lunes Martes
Introducción al
curso y
conceptos Vídeoconferencia
básicos de
bases de datos
distribuidas
Tema 2:
Fragmentación Vídeos
y distribución
Día de Descanso
de datos
Tema 3:
Consistencia y Vídeos
gestión de
réplicas
Tema 4:
Optimización Vídeos
de consultas
Actividad
Ejercicios teórico/prácticos
semana 1
Temas 5 y 6:
Persistencia
Videoconferenci
políglota y a
modelos
NoSQL
Actividades Miércoles Jueves Viernes Sábado Domingo Lunes Martes
Tema 6: Tutorial
CockroachDB
Lectura de la
documentación y
Día de Descanso
Tema 7: visualización de Tutorial
MongoDB los vídeos
asociados
Lectura de la
documentación
Tema 8: Neo4j y visualización Tutorial
de los vídeos
asociados
Temas
Vídeoconferenci
adicionales a de cierre
sobre Neo4j
Actividad Actividad conceptual y práctica con MongoDB, Neo4j y
práctica CockroachDB
6
v6
Vídeoconferencias
Videoconferencia 1: Introducción al curso y conceptos básicos de bases de datos
distribuidas
Cuando: miércoles 11 de diciembre a las 8 pm.
Contenido: introduciremos el curso y hablaremos de las bases de datos distribuidas.
Duración: una hora aproximadamente.
Videoconferencia 2: Persistencia políglota, modelos de datos y bases de datos NoSQL
Cuando: lunes 16 de diciembre a las 8 pm (adelantamos un día por ser el miércoles festivo).
Contenido: introduciremos el concepto de persistencia políglota, los modelos de base de datos
NoSQL más relevantes hoy en día.
Duración: una hora y media aproximadamente.
Videoconferencia 3: Cierre del curso y temas complementarios
Cuando: lunes 23 de diciembre a las 8 pm.
Contenido: Cerraremos el curso, discutiremos nuestras impresiones sobre el mismo,
hablaremos de algunos aspectos complementarios de Neo4j y resolveremos las dudas y/o
cuestiones que se planteen.
Duración: una hora aproximadamente.
7
v6
Actividades de evaluación
Actividad 1: Ejercicios teórico-prácticos de bases de datos distribuidas
Carácter: individual
Herramientas: Se realizarán distintos ejercicios teórico-prácticos de los temas vistos en clase
sobre bases de datos distribuidas: fragmentación, replicación, consistencia y optimización.
Actividad 2: Ejercicios prácticos en CockroachDB, MongoDB y Neo4J
Carácter: individual
Herramientas: Se propone que los estudiantes se instalen Neo4j. Se proporcionará una
máquina virtual con el entorno de MongoDB instalado.
Evaluación de la asignatura
Se proponen dos actividades de evaluación. Ambas de ellas de carácter individual, la primera
de ellas buscará asentar los conceptos fundamentales asociados a las bases de datos
distribuidas, la segunda actividad consistirá en la realización de ejercicios prácticos sobre dos
bases de datos NoSQL, MongoDB (base de datos NoSQL orientada a documentos) y Neo4J
(base de datos NoSQL en grafo) y el planteamiento de algunas preguntas de reflexión sobre
la base de datos de CockroachDB.
La nota final del curso se calculará mediante la siguiente fórmula:
Nota final = 40% nota de la actividad 1 + 60% nota de la actividad 2
8
v6
Bibliografía y materiales docentes
Para profundizar en la materia, se recomiendan las siguientes referencias bibliográficas,
ordenadas de más a menos relevancia (en cada uno de los temas se proporcionará
bibliografía adicional).
• M. Tamer Ozsu & Patrick Valdurie. (2020). Principles of Distributed Database Systems:
Fourth edition, Springer.
• P.J. Sadalage & M. Fowler. (2013). NoSQL Distilled. A brief Guide to the Emerging
World of Polyglot Persistence, Pearson Education.
• E. Redmond, J Wilson (2012). Seven Databases in Seven Weeks: A Guide to Modern
Databases and the NoSQL Movement, The Pragmatic Bookshelf.
• J. Celko (2013). Joe Celko's complete guide to NoSQL: what every SQL professional
needs to know about non-relational databases. Elsevier Science.
• M.T. Özsu & P. Valduriez (2011). Principles of Distributed Systems. 3rd edition.
Springer.
• S. Abiteboul, I. Manolescu, P. Rigaux, M.C. Rousset & P. Senellart (2011). Web Data
Management. New York: Cambridge University Press.
CV del profesor
Jordi Conesa es profesor en los estudios de
Informática, Multimedia y Telecomunicaciones de
la Universitat Oberta de Catalunya, donde ha
ejercido de director académico del máster de
Business Intelligenge (desde 2008 hasta 2013),
del postgrado de Sistemas de Información
Geográfica (desde el 2014 hasta el 2015), y de
coordinador del área de data science del centro de
eHealth de la UOC (del 2017 al 2020). Lleva
colaborando como profesor de bases de datos en
el EOI desde el 2015. Su carrera investigadora se
ha enfocado al modelado conceptual, las
ontologías, la semántica y su aplicación en
distintos ámbitos, como por ejemplo el de e-
learning y el de la salud. Es responsable de
asignaturas de bases de datos (incluyendo no sólo
bases de datos relacionales sino también
heterogéneas y escalables – NoSQL), gestión del
conocimiento y modelado conceptual.
9
v6