Tesis:
Motor Consultas Analíticas Políglota
- Autor: KRANAS, Pavlos
- Título: Motor Consultas Analíticas Políglota
- Fecha: 2021
- Materia: Sin materia definida
- Escuela: E.T.S DE INGENIEROS INFORMÁTICOS
- Departamentos: LENGUAJES Y SISTEMAS INFORMATICOS E INGENIERIA DE SOFTWARE
- Acceso electrónico: https://oa.upm.es/69145/
- Director/a 1º: PATIÑO MARTÍNEZ, Marta
- Director/a 2º: JIMENEZ-PÉRIS, Ricardo
- Resumen: Hoy en día las empresas manejan gran cantidad de datos provenientes de diversas fuentes de datos como por ejemplo la página web de la empresa, las distintas redes sociales o los propios sistemas de información de la empresa. En la actualidad, no hay un sistema de gestión de datos que sea capaz de almacenar y procesar los distintos tipos de datos que estas fuentes generan. Esto hace que, por ejemplo, una entidad bancaria, emplee una base de datos relacional para almacenar los datos de las cuentas de sus clientes con el fin de garantizar transaccionalidad y coherencia de los datos. Esta organización también puede tener la necesidad de usar una base de datos NoSQL para almacenar y procesar la información sobre opiniones u otros hechos relevantes para la empresa que se producen en redes tipo Twitter. Las bases de datos o gestores de datos NoSQL permiten almacenar información con modelos más flexibles que el relacional y además suelen escalar más que las bases de datos relacionales. Estas propiedades se obtienen a costa de sacrificar la transaccionalidad en el acceso a los datos. Desde hace varios años ha habido una explosión de distintos tipos de gestores de datos NoSQL (clave-valor, orientado a documentos, grafos…), los cuales no disponen de un lenguaje de consulta estándar como las bases de datos relacionales, sino que cada gestor tiene su propio lenguaje de consulta. Este hecho, añadido a la gran cantidad de datos que se genera cada día, hace que el procesamiento de datos en las empresas se cada vez más complejo. La persistencia políglota surge como solución a este problema proporcionando un motor de consultas capaz de interaccionar con distintos tipos de gestores de datos, permitiendo incluso combinar los resultados de consultas entre los distintos tipos de gestores de datos, por ejemplo, permitiendo la realización de operaciones tipo join. El lenguaje ofrecido por el motor de consultas políglota debería: (i) preservar la expresividad nativa del lenguaje de consulta de cada gestor de datos con el fin de mantener la expresividad del mismo (ii) Aprovechar el paralelismo inherente a la disponibilidad de varios gestores de datos para realizar el procesamiento en paralelo de las consultas y de esta forma ser capaz de trabajar con grandes cantidades de información. Los objetivos principales de esta tesis se centran en ambos puntos desarrollando un gestor de datos políglota que proporciona el lenguaje de consultas CloudMdsQL para expresar consultas nativas combinando con instrucciones SQL. El gestor políglota se ha implementado en el motor de consultas distribuido de LeanXcale, una base de datos relacional altamente escalable. El gestor políglota paraleliza las consultas teniendo en cuenta que cada gestor de datos puede ser, a su vez, un gestor de datos distribuido. Además, el gestor políglota implementa técnicas de optimización, como por ejemplo el bind join, que puede mejorar el rendimiento de las operaciones de unión (join) selectivas. El rendimiento del motor de consultas poliglota ha sido evaluado emplean do benchmarks industriales (TPC-H) en una variedad de escenarios. Otro de los objetivos de esta tesis ha sido el diseño de una arquitectura novedosa que permita realizar analíticas tanto sobre datos históricos como sobre datos obtenidos en tiempo real sin tener que esperar a realizar procesos tipo ETL. La arquitectura presentada en esta tesis permite procesar consultas federadas en un conjunto de datos actual e histórico manteniendo la coherencia de los datos incluso mientras que se mueven los datos al gestor de datos para el procesamiento analítico. ----------ABSTRACT---------- Modern enterprises today handle a large amount of data coming from various data sources such as the company's website, different social networks or the company's own information systems. Currently, there is no data management system that is capable of storing and processing these different types of data that those sources can generate. This means that, for instance, a finance institution uses a relational database to store the data of its clients' accounts in order to guarantee transactional semantics and consistency of the data. This organization may also have the need to use a NoSQL database to store and process information on opinions or other relevant events for the company that occur on Twitter-like networks. NoSQL data management systems allow this information to be stored with more flexible models than the relational ones and also tend to scale more effectively than relational databases. These properties are obtained at the cost of sacrificing transactional semantics in order to access to data. For several years there has been an explosion of different types of NoSQL data management systems (key-value, document-oriented, graphs etc.), which do not have a standard query language such as relational databases, but each datastore provides its own query language. This fact, added to the large amount of data that is generated every day, makes the data processing in modern enterprises increasingly complex. Polyglot query processing arises as a solution to this problem by providing a query engine capable of interacting with different types of data managers, even allowing the combination of the results of queries between the different types of data managers, as for instance, allowing the performance of join operations. The language offered by the polyglot query engine should: (i) preserve the native expressiveness of the query language of each of the data management systems in order to maintain its expressiveness, (ii) take advantage of the level of parallelism offered by the underlying data management systems in order to perform both parallel data retrieval and query processing and thus be able to work with large amounts of information. The main objectives of this thesis focus on both points by developing a polyglot data manager that provides the CloudMdsQL query language to express native queries combined with SQL statements. The polyglot analytical query engine has been implemented by extending LeanXcale's distributed query engine, which is a highly scalable relational database. The polyglot analytical query engine parallelizes the queries taking into account that each data manager can, in turn, be a distributed data manager. In addition, the polyglot analytical query engine implements optimization techniques, such as the bind join, which can improve the performance of selective join operations. The performance of the polyglot query engine has been evaluated using industry benchmarks (TPC-H) in a variety of scenarios. Another objective of this thesis has been the design of a novel architecture that allows analytics both on historical data and on data obtained in real time without having to wait to carry out ETL-type processes. The architecture presented in this thesis allows federated queries to be processed on a current and historical dataset, while maintaining data consistency, even while the data is being moved to the data warehouse responsible for the analytical processing.