Skip navigation
Please use this identifier to cite or link to this item: https://repositorio.ufpe.br/handle/123456789/14229
Title: Otimizando Sistemas Intensivos em E/S Através de Programação Concorrente
Authors: ARAÚJO, Saulo Medeiros de
Keywords: Engenharia de software;Programação paralela (Computação);Programação orientada a objetos (Computação);Banco de dados relacionados
Issue Date: 6-Apr-2015
Abstract: ORMs (Object-Relational Mappers) são bastante populares porque eles reduzem o esforço de desenvolvimento de camadas de acesso a dados ao permitir, entre outras coisas, que sistemas manipulem objetos transientes e persistentes de maneira similar. Em particular, ORMs permitem que sistemas naveguem por objetos de ambos os tipos exatamente da mesma maneira. Infelizmente, entretanto, navegar por objetos persistentes é muito mais lento do que navegar por objetos transientes. Para atenuar este problema, ORMs pré-carregam objetos executando consultas SQL (Structured Query Language) que, no lugar de carregar os atributos de um único objeto, tal como ocorre quando objetos são carregados sob demanda, carregam os atributos de vários objetos. Em muitos casos, estas consultas podem ser executadas concorrentemente. Entretanto, a maioria dos ORMs executa consultas apenas sequencialmente. Esta pesquisa visa aumentar o desempenho de sistemas baseados em ORMs. Para tanto, ela define uma DSL (Domain-Specific Language) de especificação de navegações por objetos chamada Litoral. Também integra esta pesquisa o projeto e a implementação de um interpretador de especificações Litoral. O interpretador navega por objetos transientes (aqueles que existem apenas na memória primária) e persistentes (aqueles que armazenados em um banco de dados relacional) e pré-carrega os do segundo tipo executando consultas sequencialmente ou concorrentemente. A estratégia desta pesquisa foi avaliada com os benchmarks sintéticos Emeio e OO7, desenvolvidos, respectivamente, no contexto desta pesquisa e por terceiros. No primeiro, pré-carregar objetos executando consultas concorrentemente aumentou a velocidade de execução em até 323,6%. No segundo, o aumento foi de até 245,7%. Os benchmarks também foram implementados com os ORMs Hibernate e EcliseLink JPA, os quais aderem à especificação JPA (Java Persistence Architecture). O primeiro foi escolhido por ser bastante popular. O segundo foi escolhido por ser a implementação de referência desta especificação. As implementações baseadas no Hibernate e EclipseLink JPA foram significativamente otimizadas. Entretanto, em todos os cenários de Emeio e OO7 que oferecem oportunidades para pré-carregar objetos executando consultas concorrentemente, o desempenho delas foi inferior ao da implementação baseada no interpretador de Litoral.
URI: https://repositorio.ufpe.br/handle/123456789/14229
Appears in Collections:Dissertações de Mestrado - Ciência da Computação

Files in This Item:
File Description SizeFormat 
Dissertação de Mestrado.pdf1.63 MBAdobe PDFView/Open


This item is protected by original copyright



This item is licensed under a Creative Commons License Creative Commons