3 Introducción


3.1 Contexto y motivación

Cuando comencé mis estudios en Desarrollo de Aplicaciones Web tuve mi primera toma de contacto con las bases de datos y su gestión. Desde el principio fue un tema que me gustó mucho. Cuando estuve haciendo prácticas pude tomar contacto con bases de datos en producción y ver de cerca cómo se gestionan y mantienen y desde entonces no he parado de trabajar con ellas.

A día de hoy me doy cuenta de que he aprendido mucho sobre bases de datos de tipo relacional pero aún no he podido trabajar en profundidad con bases de datos NoSQL. Es por eso que me pareció una buena oportunidad de ampliar mis conocimientos el plantear un sistema que realice la transformación de modelos entidad relación a MongoDB.

3.2 Objetivos

El objetivo principal del Proyecto Fin de Grado que se propone es el de definir un conjunto de reglas de transformación entre esquemas de bases de datos relacionales, en concreto PostgreSQL a esquemas de bases de datos NoSQL, orientadas a documentos, en concreto MongoDB.

Con esto quiero tratar de obtener un sistema de migración de esquemas y datos en PostgreSQL a esquemas en MongoDB, estudiando cada posible relación entre los datos y la equivalencia en un sistema gestor de base de datos orientado a documentos.

Para alcanzar el objetivo principal se proponen los siguientes objetivos específicos:

  • Estudiar las relaciones entre los modelos de datos en una base de datos relacional y su equivalente en una base de datos no relacional.

  • Analizar los puntos fuertes y débiles de cada uno de los dos sistemas elegidos.

Con esto se trata de entender que, si bien puede haber una transformación entre esquemas manteniendo los datos y las consultas con el mismo comportamiento, no siempre es posible realizar una transformación satisfactoria y eficiente.

3.3 Problema y solución

El problema del diseño de modelos de datos en MongoDB es que no hay una forma fija de hacer el modelado. MongoDB da mucha flexibilidad a la hora de crear y definir esquemas, sin imponer demasiadas restricciones. Esto puede ser muy cómodo cuando los requisitos no están muy claros o cuando la estructura va a cambiar con facilidad, pero también puede proporcionar inconsistencias o dificultad para entender el modelo de datos planteado.

La solución que se propone aquí es definir unas reglas de transformación que, partiendo de un modelo de datos relacional normalizado, obtenga su modelo en MongoDB. Estas reglas tratan de obtener un modelo de datos NoSQL lo más cercano y estable posible al modelo de datos inicial, pero como pasa con todo algoritmo, no serán modelos de datos perfectos que puedan funcionar para cualquier situación y probablemente podrán ser mejorables.

Desde mi punto de vista el modelo de datos obtenido puede servir de apoyo para iniciar una migración, pero siempre habrá partes a estudiar y hacer a mano, sobre todo en modelos de datos más grandes y/o avanzados.

3.4 Contenido de la memoria

El primer capítulo comienza con una introducción a las bases de datos, una breve descripción a los modelos de datos a los que se hace referencia en este documento y la descripción del modelo entidad relación con la notación de Chen, explicando los principales componentes sobre los que se va a apoyar este trabajo.

Los siguientes capítulos hacen una introducción a PostgreSQL y a MongoDB, en el que se explica la historia y las principales características.

Con estos capítulos se introduce el contexto para seguir con una comparativa entre las bases de datos relacionales y las no relacionales, y una breve comparativa de las características de PostgreSQL y MongoDB.

Tras este estudio teórico se expone el grueso del trabajo: las reglas de transformación de esquemas relacionales a esquemas no relacionales, recogiendo las principales cardinalidades de las bases de datos relacionales con pequeños ejemplos y las sentencias de creación de los esquemas tanto en PostgreSQL como en MongoDB.

Para apoyar y comprobar la validez de estas reglas de transformación se expone un ejemplo práctico de migración de una base de datos en PostgreSQL hacia una base de datos en MongoDB.

results matching ""

    No results matching ""