Defesa de Proposta de Tese de Doutorado de Camila Acácio de Paiva, em 08/04/24, às 09:00h, na sala 310 do Instituto de Computação e por videoconferência

Defesa de Proposta de Tese de Doutorado de Camila Acácio de Paiva, em 08/04/24, às 09:00h, na sala 310 do Instituto de Computação e por videoconferência

Link para defesa: https://meet.google.com/dod-cgnh-wuk

 

How Relevant Java Applications Interact with DBMS in Practice?

 

Resumo:

 

Desenvolvedores frequentemente precisam escolher entre mais de 350 sistemas de gerenciamento de banco de dados (SGBDs) existentes, que seguem diferentes modelos de banco de dados (por exemplo, relacional, documental, gráfico, etc.) e possuem diferentes características de usabilidade e desempenho para atender às necessidades de persistência de dados de suas aplicações. Assim, escolher o SGBD adequado para um determinado projeto não é uma tarefa fácil. Aplicações diferentes têm requisitos diferentes, e a melhor escolha de tecnologia para um caso pode não ser a melhor opção para outro caso.

 

Os estudos existentes concentram-se na inspeção de aspectos relacionados às aplicações do usuário para obter conhecimento sobre como os SGBDs são usados e seu impacto. Normalmente, esses estudos se concentram na análise de como os aplicativos Android usam bancos de dados locais, na descoberta de anti-padrões de desempenho em aplicativos da Web do mundo real que usam mapeamento objeto-relacional (ORM) e na compreensão de como os projetos Java usam estruturas de banco de dados para acessar bancos de dados relacionais, como os bancos de dados o esquema e o código-fonte co-evoluem e como os projetos Java documentam o uso do banco de dados. Porém, eles não consideram como os SGBDs são adotados na prática, como ocorre a interação entre a aplicação e o SGBD e como as vulnerabilidades do SGBD afetam os projetos.

 

Para preencher esta lacuna, neste trabalho, (1) caracterizou-se a adoção de SGBD em um grande corpus de projetos Java de código aberto relevantes, (2) estudou-se a interação desses projetos e o SGBD, e (3) avaliou-se como vulnerabilidades afetam esses SGBD. Em relação à adoção, tem-se as seguintes questões de pesquisa (RQ): Quais são os SGBDs mais comumente usados (RQ 1)? Quais são os SGBDs mais utilizados durante o ciclo de vida dos projetos (RQ 3)? Quais SGBDs são frequentemente usados em conjunto (RQ 4)? Quais SGBDs são frequentemente substituídos por outros (RQ 5)? Em relação à interação, buscou-se responder às seguintes questões: Como as aplicações interagem com o SGBD (RQ 2)? Quais são os ORMs mais utilizados durante o ciclo de vida do projeto (RQ 7)? Em relação às vulnerabilidades, a questão principal é: Como as vulnerabilidades do SGBD afetam os projetos (RQ 6)?

 

Para responder a esses RQs, um corpus de 317 projetos de código aberto Java foi selecionado e seu código-fonte foi analisado através de heurísticas predefinidas. O corpus contém repositórios GitHub ativos, relevantes e populares, evitando projetos pessoais, de cursos, imaturos ou de curto prazo. Nos concentramos em uma única linguagem de programação porque o método para determinar o uso do SGBD de um projeto dependia da busca por construções relacionadas ao banco de dados específicas da linguagem dentro do código-fonte do projeto. Como resultado preliminar, descobriu-se que  o MySQL é o SGBD relacional mais utilizado, seguido pelo PostgreSQL e H2. Quanto aos SGBDs não relacionais, o Redis é o mais utilizado em ambas as análises, mas o segundo lugar na nossa análise de snapshots é ocupado pelo Oracle, enquanto o Cassandra vence na nossa análise histórica. Em suma, os SGBDs relacionais são mais populares, uma vez que aparecem em um maior número de projetos. Descobriu-se que SGBDs Multimodelos são os mais adotados no domínio de Gestão de Infraestrutura. MyBatis é o ORM mais usado. Observou-se que a mediana de arquivos afetados ou modificados na implementação do ORM é de 0,77%.  Dentre os sete ORMs analisados neste trabalho, EclipseLink, Hibernate e Spring são os menos acoplados ao código da aplicação. Descobrimos também que usar SQL diretamente no código fonte dos projetos é mais popular do que usar Builders para consultar os SGBDs. Encontramos combinações de uso concomitante (RQ4) entre 11 SGBDs no início do ciclo de vida dos projetos (por exemplo, PostgreSQL e MySQL). Descobrimos também 20 situações que indicam substituições de SGBDs. Por exemplo, descobrimos que o PostgreSQL foi substituído onze vezes em oito projetos do nosso corpus. Nesses projetos, o PostgreSQL foi substituído por quatro SGBDs distintos. As questões de pesquisa RQ6 e RQ7 ainda não foram respondidas, serão nossos próximos passos.

 

Abstract:

 

Developers frequently have to choose among 350+ existing database management systems (DBMSs), which follow different database models (e.g., relational, document, graph, etc.) and have different usability and performance characteristics to fulfill the data persistence needs of their applications. Thus, choosing the right DBMS for a given project is not an easy task. Different applications have different requirements, and the best technology choice for one case may not be the best fit for another case.

 

Existing studies focus on inspecting aspects related to user applications to gain knowledge regarding how DBMSs are used and their impact. Typically, these studies concentrate on analyzing how Android apps use local databases, finding performance anti-patterns in real-world web applications that use object-relational mappings (ORM), understanding how Java projects use database frameworks to access relational databases, how database schema and source code co-evolve, and how Java projects document database usage. However, they do not consider how DBMSs are adopted in practice, how the interaction between the application and the DBMS occurs, and how DBMS vulnerabilities affect the projects. 

 

To help fill in this gap, in this work, we (1) characterize the adoption of DBMS over a large corpus of relevant open-source Java projects, (2) study the interaction of these projects and the DBMS, and (3) assess how vulnerabilities affect these DBMS. Regarding adoption, we have the following research questions (RQ): What are the most commonly used DBMSs (RQ 1)? What are the most commonly used DBMSs during the projects’ life cycle (RQ 3)? Which DBMSs are often used together (RQ 4)? Which DBMSs are frequently replaced by others (RQ 5)? Regarding interaction, we seek to answer the following main question: How do the applications interact with the DBMS (RQ 2)? What are the most commonly used ORMs during the project’s life cycle (RQ 7)? Regarding vulnerabilities, our main question is: How do DBMS vulnerabilities affect the projects (RQ 6)?

 

To answer these RQs, we have selected a corpus of 317 Java open-source projects and analyzed their source code using pre-defined heuristics. The corpus contains active, relevant, and popular GitHub repositories, avoiding personal, coursework, immature, or short-term projects. We focused on a single programming language because our method for determining a project’s DBMS usage depended on searching for language-specific database-related constructs within the project’s source code. As a preliminary result, we found that MySQL is the most used relational DBMS, followed by PostgreSQL and H2.  As for the non-relational DBMSs, Redis comes ahead in both analyses, but the second place in our snapshot analysis is taken by Oracle, while Cassandra wins in our historical analysis. All in all, Relational DBMSs are more popular, since they appear in a larger number of projects. We also found that Multi-Model DBMSs are the most adopted in the Infrastructure Management domain. We found that MyBatis is the most used ORM. We could observe that the median of files affected or modified when using ORM in a project is 0.77%. Among the seven ORMs analyzed in this work, EclipseLink, Hibernate, and Spring are the least coupled to the application code. We also found that using SQL directly in the project’s source code is more popular than using Builders to query the DBMSs. We found combinations of concomitant use (RQ4) among 11 DBMSs early in the projects’ life cycle (e.g., PostgreSQL and MySQL). We also discovered 20 situations that indicate replacements of DBMSs. For example, we found that PostgreSQL was replaced eleven times in eight projects in our corpus. In those projects, PostgreSQL was replaced by four distinct DBMSs. The RQ6 and RQ7 still need to be answered, and these will be our next steps.

 

Banca  examinadora:

 

Prof. Vanessa Braganholo Murta, UFF – Presidente

Prof. Leonardo Gresta Paulino Murta, UFF

Prof. Alexandre Plastino de Carvalho, UFF

Prof. Marco Antônio Pereira Araújo, UFJF

Related Posts

Leave a Reply