[en] Objectives. Modern technologies and data-intensive applications have motivated the idea of polyglot persistence as the data architecture of the future. This architecture is based on satisfying specific needs by using different database systems. A common approach in these scenarios, were more than one data models are involved, is to establish a "unified global schema", which allows to develop generic, database-independent tools. "U-Schema" is a unified data model able to represent logical schemas for the relational model and the most popular NoSQL paradigms. The goal of this thesis is to build an environment around "U-Schema" that provides basic database utilities in a multi-model scenario: A universal schema definition language, an approach to schema evolution based on the definition of a taxonomy of changes and its implementation in a second language, and a third language able to generate synthetic data. After this a process will be defined to discover hidden inheritance relationships in the schema, and the generation of Object-Document Mappers (ODMs) from these models will be handled. The implementation of each tool and process has been carried out by applying Model-Driven Engineering (MDE) techniques. Methodology. The "Design Science Research" (DSRM) methodology has been followed. The proposed process in DSRM consists of six activities: (1) Problem identification and motivation, (2) Define the objectives of a solution, (3) Design and development, (4) Demonstration, (5) Evaluation, and (6) Conclusions and communication. These six activities compose an iterative sequence where the final solution is built based on the knowledge produced throughout the iterations. To allow this, the fifth and sixth activities provide feedback to previous activities, distributing this produced knowledge for its usage in future iterations. Results. We have implemented "Athena", a generic schema definition language. Then we have defined a taxonomy of schema changes based on U-Schema, which considers changes that did not exist on other taxonomies. "Orion" is a language that implements this taxonomy of changes with an engine able to update schema and data for three NoSQL databases: MongoDB, Cassandra and Neo4j. "Deimos" is a third language that allows to specify data generation rules, able to reuse external data sources, generate realistic values and controlled errors. We have also developed a process to detect outlier variations and hidden inheritance hierarchies between entity types by using temporal properties. Finally, we have developed a solution based on model transformations to generate Mongoose and Morphia code (JavaScript and Java ODMs) for MongoDB applications. Each developed solution has been validated with synthetic datasets (generated with Deimos) as well as with public datasets. Contributions. This is one of the first database engineering environments able to handle NoSQL and relational logical schemas in a unified way, and provide essential functionality for multi-model database engineering. We have defined a language able to define database-independent schemas by using a rich set of abstractions. We have also performed a study of the art of current taxonomies of schema changes and defined our own taxonomy, and a language to define and automate the execution of these changes on the schema and on the data of three of the most widely used NoSQL databases. We have defined a third language able to generate large volumes of synthetic data for testing. Another set of contributions is related to our approach to detect the "polymorphic pattern" in U-Schema models, a problem that has not been addressed on any other NoSQL schema inference approaches. Finally, we have contributed with a forward engineering process which shows how MDE techniques can be applied to automatically generate ODMs from U-Schema models by using model transformations.

[es] Objetivos. Las tecnologías modernas y las aplicaciones de uso intensivo de datos han motivado la idea de que la persistencia políglota será la arquitectura de datos del futuro. Esta arquitectura se basa en cubrir necesidades específicas con diferentes sistemas de bases de datos. Un enfoque habitual para estos escenarios, donde se manejan distintos modelos de datos, es el establecimiento de un "esquema global unificado". "U-Schema" es un metamodelo unificado capaz de representar esquemas lógicos para el modelo relacional y los paradigmas NoSQL más populares. El objetivo de esta tesis es construir un entorno alrededor de U-Schema que provea de herramientas para bases de datos en un escenario multimodelo: Un lenguaje de definición de esquemas, un enfoque para tratar la evolución del esquema basado en una taxonomía de cambios y su implementación en otro lenguaje, y un tercer lenguaje para la generación de datos sintéticos. También se trata el descubrimiento de relaciones de herencia ocultas en el esquema, y la generación de Object-Document Mappers (ODMs). La implementación de estas soluciones se ha realizado aplicando técnicas de Ingeniería del Software Dirigida por Modelos (MDE). Metodología. La metodología de investigación empleada ha sido "Design Science Research" (DSRM), que consta de seis actividades: (1) Identificación del problema y motivación, (2) Definición de los objetivos de la solución, (3) Diseño y desarrollo, (4) Demostración, (5) Evaluación, y (6) Comunicación de resultados. Estas actividades forman una secuencia iterativa donde la solución final se construye a partir del conocimiento adquirido durante el proceso de iteraciones. Para ello, la quinta y sexta actividad retroalimentan a las actividades anteriores, distribuyendo este conocimiento para su uso en futuras iteraciones. Resultados. Se ha implementado "Athena", un lenguaje para la definición de esquemas genéricos. Después se ha definido una taxonomía de cambios sobre esquemas basada en U-Schema, que considera cambios inexistentes en otras taxonomías. "Orion" es un lenguaje que implementa esta taxonomía de cambios con un motor capaz de actualizar el esquema y los datos de tres bases de datos NoSQL: MongoDB, Cassandra y Neo4j. "Deimos" es un tercer lenguaje que permite la especificación de reglas para generar datos, capaz de reutilizar fuentes de datos externas, generar valores realistas y errores de forma controlada. También se ha desarrollado un proceso de detección de variaciones atípicas y jerarquías ocultas de herencia entre tipos de entidad usando propiedades temporales. Finalmente, se ha desarrollado una solución basada en transformaciones de modelos para generar código Mongoose y Morphia (ODMs para JavaScript y Java) para aplicaciones MongoDB. Cada solución desarrollada ha sido validada con conjuntos de datos artificiales (generados con Deimos) y datos reales disponibles públicamente. Contribuciones. Este es uno de los primeros entornos de ingeniería de bases de datos capaz de tratar con esquemas lógicos NoSQL y relacionales de una manera unificada, proporcionando funcionalidad esencial para la ingeniería de bases de datos multimodelo. Hemos definido un lenguaje para expresar esquemas independientes de la base de datos. También hemos efectuado un estudio del estado del arte de las taxonomías de cambios en el esquema actuales, definido nuestra propia taxonomía, y un lenguaje que permite definir y automatizar estos cambios sobre el esquema y los datos de tres bases de datos NoSQL muy utilizadas. Hemos definido un tercer lenguaje capaz de generar datos sintéticos para pruebas. Otra contribución consiste en la detección del "patrón polimorfia" en modelos U-Schema, un problema que no ha sido tratado en ningún otro enfoque de inferencia de esquemas NoSQL. Finalmente, hemos contribuido con un proceso de ingeniería que muestra el empleo de técnicas MDE para generar automáticamente ODMs a partir de modelos U-Schema mediante transformaciones de modelos.