ESTUDO COMPARATIVO ENTRE A EFICIÊNCIA DE DIFERENTES BANCOS DE DADOS RELACIONAIS (MYSQL E POSTGRESQL) E NÃO RELACIONAIS (MONGODB)

EFFICIENCY COMPARISON AMONG DIFFERENT DATABASES

REGISTRO DOI: 10.69849/revistaft/pa10202410281113


Daniel Alexandre Cocolete1
João Henrique Gião Borges2
Fabiana Florian3


Resumo:

No presente artigo será abordado as diferenças e semelhanças de bancos de dados, comparando sua eficiência, seu desempenho em diferentes cenários, situações, para assim ser possível verificar qual ocasião seu desempenho é bem mais eficiente comparado com os outros, mostrando suas limitações e características específicas, e se atende a necessidade desejada. Os bancos de dados a serem estudados no presente artigo são os relacionais, MySQL e PostgreSQL, e os não relacionais MongoDB.

Palavras-chaves: Banco de dados; dados; desempenho; eficiência.

Abstract:

The present article will address the differences and similarities between databases, comparing their efficiency and performance in different scenarios and situations, in order to verify in which cases their performance is more efficient compared to others, highlighting their limitations and specific characteristics, and whether they meet the desired needs. The databases to be studied in this article are the relational ones, MySQL and PostgreSQL, and the non-relational one, MongoDB.

Keywords: Database; data; performance; efficiency.

1 INTRODUÇÃO

Segundo Team (2022), são encontrados diversos bancos de dados em diferentes empresas, sendo banco de dados relacionais como MySQL (Oracle Corporation), PostgreSQL (PostgreSQL Global Development Group), e o banco de dados não relacionais como MongoDB (MongoDB Inc). cada um deles com seu desempenho, diferentes capacidade de armazenamento que atende as necessidades da empresa.

De acordo com Coradin (2024) e Ostrowska (2023), existem sites, como por exemplo, Horus Solutions e LearnSQL respectivamente, onde criam rankings dos melhores bancos dados mais utilizado, listando comumente a Oracle Database em primeiro lugar, o MySQL em segundo e SQL Server em terceiro lugar. Porém, alguns desses bancos de dados estão em posição diferente nesses rankings avaliativos, como por exemplo, o PostgreSQL que se encontra em segundo lugar (LearnSQL) e em quarto lugar (Horus Solutions). No entanto, esses sites somente descrevem qual posição está no ranking, mas não contém informações explicando o motivo, o desempenho que acarreta, bem como sua competência.

O objetivo deste artigo é realizar a comparação entre os diferentes bancos de dados, sendo ele os relacionais (MySQL e PostgreSQL) e os não relacionais (MongoDB), mostrando as suas características específicas de desempenho em diferentes ocasiões, bem como suas limitações ou sua eficiência que a base de dados dispõe.

Segundo AWARI (2023), a escolha de qual banco de dados será utilizado depende de diversos requisitos, como estrutura do servidor, quantidade de dados, sistema desenvolvido, orçamento disponível e tamanho da empresa. Quando o projeto exige uma relação de tabelas e precisa de um entrelaçamento de banco de dados, a melhor escolha será um banco que seja relacional, pois suas propriedades de tabelas se relacionam entre si. Agora, se não há necessidade do relacionamento destes dados, a melhor escolha seria utilizar um banco de dados que não relacional. Outro fator levado em conta é a segurança, pois existem ferramentas que auxiliam em uma segurança mais desenvolvida.

Existem algumas adversidades ao se comparar um banco de dados de outro, por conta de não depender apenas da escrita de um script, e sim da capacidade dos servidores fornecidos, a quantidade de espaço que cada empresa proveniente do banco de dados disponibiliza para armazenagem de dados, como é a estrutura interna de códigos que a empresa responsável possui, tornando mais complexa comparação entre eles. Muitas empresas estão encontrando certas dificuldades nas grandes quantidades de dados, por este motivo, muitas delas estão migrando suas bases de dados relacionais para bancos de dados não relacionais. Algumas barreiras foram notadas no estudo desta migração, tais como: analisar se a estrutura de um banco de dados não relacional irá suportar uma estrutura de uma base de dados relacional. Portanto, é importante que antes de se implementar um novo banco, é necessário realizar uma comparação entre certos bancos de dados e ser levado em consideração fatores externos como capacidade de servidor e segurança. (MATALLAH, 2021; BELALEM, 2021; BOUAMRANE, 2021).

Uma das formas que existem para comparação de bancos de dados é na análise dos gráficos de desempenho em retorno de dados, como: executar um select (Operação utilizada em scripts de bancos de dados para realizar consultas) e analisar graficamente qual banco retornou à consulta mais rapidamente, utilizando diferentes IDES (Nome utilizado para ambientes de desenvolvimento dos bancos de dados), como por exemplo, DBeaver, MongoDB Compass.

Este trabalho se caracteriza por um estudo comparativo de natureza bibliográfica com consultas realizadas através de artigos científicos publicados em revistas disponíveis no portal Google Acadêmico, artigos postados em sites, blogs e fóruns disponíveis na internet. Baseando-se nas palavras-chave banco de dados, dados, desempenho e eficiência. A pesquisa foi feita com base na literatura priorizando as publicações entre 2012 a 2024.

2 REVISÃO BIBLIOGRÁFICA

Esta seção apresenta uma breve explicação sobre banco de dados (2.1), explicações sobre conceitos utilizados em banco de dados e comandos conhecidos em linguagens de banco de dados (2.2), e algumas explicações de assuntos que existem no estudo sobre banco de dados, tais como: a diferença entre um banco de dados SQL e MySQL (2.3), diferença entre um banco de dados relacional e não relacional (2.4).

2.1 Banco de dados

Segundo Oracle (2024), o conceito, “banco de dados”, é o conceito utilizado para quando se necessita guardar dados, informações de forma eletronicamente, onde seu uso seja de forma mais rápida e fácil, como sua atualização e sua inserção, onde são construídos nos sistemas de gerenciamento de banco de dados, conhecidos como DBMS.

O conceito, DBMS, é aplicado para quando há a necessidade de se ter uma interface entre o banco de dados e o seu usuário, possibilitando a manipulação de dados de uma forma mais prática e intuitiva, sendo eles: MySQL, Microsoft Access, Microsoft SQL Server, FileMaker Pro, Oracle Database e dBASE (ORACLE, 2024).

2.2 Comandos em linguagens de bancos de dados

Santos (2016), afirma que os comandos empregados nas linguagens de banco de dados são as seguintes: DDL (Data Definition Language) são aqueles que interagem com as tabelas criadas, tais como: CREATE, ALTER e DROP; DML (Data Manipulation Language) são aqueles que manipulam os dados existentes nas tabelas, como por exemplo: INSERT, DELETE e UPDATE; DQL (Data Query Language) são utilizados quando há uma necessidade de realizar uma consulta dos dados, sendo sua nomenclatura como SELECT; DTL (Data Transaction Language) são aqueles que devem realizar algum controle de transação, ou seja, eles preparam e confirmam uma ação a ser enviado, como o comando BEGIN TRANSACTION (comando utilizado para iniciar uma transação ou operação) e COMMIT, onde é utilizado para confirmar uma operação, como por exemplo deleção e alteração, respectivamente, e o comando ROLLBACK, que é utilizado para se retornar uma ação. E o DCL (Data Control Language) que são comandos utilizados para quando há uma necessidade de se controlar a segurança de um banco de dados, sendo eles: GRANT, REVOKE e DENY.

2.3 Diferença entre um banco SQL e um MySQL

De acordo com Oracle (2024), “SQL é uma linguagem de programação usada por quase todos os bancos de dados relacionais para consultar, manipular e definir dados e fornecer controle de acesso”. Além disso, o sistema MySQL é um gerenciamento de banco de dados relacional de código aberto baseado em SQL.

2.4 Diferença entre um banco de dados relacional e não relacional

Segundo Calanca (2023), banco de dados relacional possui uma estrutura de linhas e colunas, onde diferentes tabelas se relacionam entre si. Já o banco de dados não relacional, conhecido como NoSQL, não segue os modelos utilizados pelos bancos de dados relacionais, ou seja, não possui as relações vistas e sim possui algumas estruturas conhecidas como as seguintes referências: colunar, grafos, chave-valor e orientado a documentos.

2.4.1 Colunar

Segundo Barroso (2012), o modelo colunar (Figura 2) é um conceito aplicado para expressar quando cada informação possui sua própria coluna, contendo seus atributos e valores.

Figura 2: modelo colunar

Fonte: Barroso, 2012

2.4.2 Modelo de grafos

O modelo de grafos (Figura 3) utiliza o conceito de estruturas de dados denominados como grafos, onde conecta as informações por arestas, e por ter uma baixa latência para recuperar as informações, acaba tornando sua pesquisa mais rápida e eficiente (LOGAP, 2022).

2.4.3 Chave-valor

Segundo LOGAP (2022), o conceito chave-valor (Figura 3), é bastante empregado pelas empresas, por conta de seu funcionamento ser simples e fácil. Esse tipo de banco de dados, guarda cada valor com uma respectiva chave, tornando sua manipulação e consulta mais rápida.

2.4.4 Orientado a documentos

De acordo com LOGAP (2022), bancos de dados orientados a documentos (Figura 3) possui uma grande flexibilidade, por sua estrutura ser definida a partir da necessidade da aplicação, tornando possível a utilização de qualquer formato de documento.

Figura 3: modelos NoSQL

Fonte: Adaptado de Reily, 2022

2.5 Banco de dados objeto-relacional

Bancos de dados objeto-relacional utilizando a estrutura orientada a objetos, onde diferente das bases de dados relacionais, ele cria blocos onde estão armazenadas as informações, cada um possuindo um identificador próprio, tornando as operações mais rápidas e eficientes, um exemplo de banco de dados que utiliza esta estrutura é o PostgreSQL (CONTENT, 2021).

2.6 Banco de dados por documentos

Bases de dados no qual utilizam a estrutura orientadas a documentos usam o conceito dos documentos inseridos já serem autocontidos e auto descritivos, onde o próprio já se define como deve ser apresentado, contendo informações importantes em apenas um único documento, esta estrutura é muito utilizada por banco de dados não-relacionais, um exemplo é a base de dados MongoDB (HIGOR, 2014).

2.7 Árvore B-tree

Segundo Júnior (2023) Árvores B-tree são estruturadas no qual já são balanceadas, ou seja, tendo todas suas folhas no mesmo nível, porém esta árvore possui uma característica na qual é possível incluir mais de um valor em um mesmo nível, podendo relacionar os nós filhos entre dois nós pais, contidos em um nível mais acima.

3 DESENVOLVIMENTO

Nesta seção foram analisados gráficos de desempenho em consultas, inserções, alterações e exclusões em tabelas criadas em seus respectivos bancos de dados, verificando a diferença de tempo, desempenho e características específicas, utilizando como uma aplicação utilizando a linguagem de programação Python para que seja possível analisar melhor o banco de dados MongoDB, e ferramentas para analisar a eficiência fornecidas pelos SGBDs utilizados no estudo, como: DBeaver.

3.1 Criação das tabelas e Collection

Para o estudo foi necessário a criação de uma tabela para ser utilizada na análise, possuindo seu nome como “tbAluno”, sendo desenvolvido para seu respectivo banco de dados. Para os banco de dados MySQL, foi implementado a seguinte tabela (Figura 4).

Figura 4: Criação tabela “tbAluno” para MySQL

Fonte: Própria, 2024

Para o banco de dados PostgreSQL contém uma diferença em relação a base de dado MySQL, onde o tipo de dado da coluna “idAluno” como um SERIAL, permitindo a cada inclusão, seja criada um valor sequencial automaticamente, sem a necessidade da inserção manual do valor, assim sendo incluída a seguinte tabela (Figura 5):

Figura 5: Criação tabela “tbAluno” para PostgreSQL

Fonte: Própria, 2024

3.1.1 Operações de inserção

O primeiro script de inserção a ser escrito será nos bancos de dados PostgreSQL e MySQL, onde suas sintaxes de inserção são iguais, porém para analisar seu tempo de execução foi necessário realizar algumas mudanças entre eles, sendo preciso criar uma procedure para conseguir executar tanto a inserção quanto o tempo gasto na operação. Modelo utilizado no banco de dados PostgreSQL (Figura 6) e no banco de dados MySQL (Figura 7):

Figura 6: Procedure de inserção no PostgreSQL

Fonte: Própria, 2024

Foram inseridos dez registros de dez alunos diferentes, porém um contendo a data como nula para ser analisado se existe alguma diferença entre inserir com algum registro que possua um dado nulo ou não, neste exemplo foi escolhido o último registro para ser testado com a data nula (Figura 7).

Figura 7: Procedure de inserção no MySQL

Fonte: Própria, 2024

3.1.2 Operações de alteração

Os scripts de alteração seguem o mesmo padrão dos scripts de inserção, onde foi criada uma procedure, para que seja possível analisar o tempo de execução, alterando apenas a query que é realizada.

A operação de alteração na base de dados PostgreSQL, o registro que continha o nome como “Maria Oliveira” com seu código do IdAluno como “45”, foi alterado para “Maria Fernandes” (Figura 8).

Figura 8: Procedure de alteração no PostgreSQL

Fonte: Própria, 2024

Para a operação realizada no banco de dados MySQL, o aluno “Pedro Santos” com o código do idAluno como “54”, foi alterado o nome para “Pedro Francisco” (Figura 9).

Figura 9: Procedure de alteração no MySQL

Fonte: Própria, 2024

3.1.3 Operações de remoção

Nas operações de exclusões mantiveram os padrões realizados nas operações de alteração e inserção, mudando apenas a ação que era realizada, deixando de ser UPDATE ou INSERT e passando a ser DELETE.

Para a procedure realizada no banco de dados PostgreSQL, foi escolhido o registro que possuía o IdAluno como “44” para ser removido (Figura 10).

Figura 10: Procedure para exclusão no PostgreSQL

Fonte: Própria, 2024

Utilizando a base de dados MySQL, foi selecionado o cadastro que possuía o IdAluno sendo “54” para ser removido e ser analisado o seu tempo de execução (Figura 11).

Figura 11: Procedure para exclusão no MySQL

Fonte: Própria, 2024

3.2 Operações MongoDB

O banco de dados MongoDB, utilizando a IDE MongoDB Compass, possui algumas ferramentas para análise de eficiência, porém acabam não sendo muito efetivas para este estudo por conta de não serem muito precisas, apresentando valores simplificados, como por exemplo os dados equivalentes ao tempo que a operação precisou para completá-la só era mostrado quando ele era ultrapassado por um valor limite, que era estipulado por padrão pela IDE como 100 microssegundos.

Para a realização deste teste foi necessário criar um código em Python onde realiza a inserção, alteração e remoção de dados na Collection criada com o nome de “tbAluno” na base de dados MongoDB.

3.2.1 Operação de inserção MongoDB

Utilizando a linguagem de programação Python, foi desenvolvido um método para realizar a query de inserção e ao mesmo tempo retornar o tempo que foi utilizado. No método foi aplicado o script “collection.insert_one(dado)”, onde é empregado pela ferramenta MongoDBShell para inserir um documento na Collection criada. Para calcular o tempo gasto na operação, foram criadas duas variáveis, onde a variável “início” armazena o exato tempo foi atribuída antes de realizar a query de inserção, já a variável “fim” armazena o tempo logo após terminar a requisição, realizando logo após uma subtração entre elas para determinar o tempo exato gasto (Figura 12).

Figura 12: Método de inserção no MongoDB

Fonte: Própria, 2024

3.2.2 Operação de alteração MongoDB

A operação de alteração segue o mesmo padrão da operação de inserção, sendo alterado apenas o script necessário para realizar a ação de alteração, no qual é utilizado o comando “collection.update_one({“numeroMatriculaAluno”: 20210002},

{“$set”: {“nomeAluno”: “Maria Francisco”}})”, onde é selecionado o registro que deseja alterar e alterado o valor para seu respectivo(Figura 13).

Figura 13: Método de alteração no MongoDB

Fonte: Própria, 2024

3.2.3 Operação de remoção MongoDB

A operação de remoção no banco de dados MongoDB é realizado pelo script “collection.delete_one({“numeroMatriculaAluno”: 20210003})”, onde é apenas selecionado a chave na qual se deseja filtrar para realizar a ação.

Figura 14: Método de remoção no MongoDB

Fonte: Própria, 2024

4  RESULTADOS

Neste item será apresentado os resultados encontrados durante o desenvolvimento deste estudo, apresentando as diferenças de eficiências entre os bancos de dados MySQL, PostgreSQL e MongoDB, detalhando os tempos de execuções retornados de cada operação, apresentando os motivos de existirem diferenças entre as bases de dados estudadas.

4.1 Inserção

Executando cinco testes de inserção para cada banco de dados para conseguir uma média mais concreta entre os tempos obtidos, todos os valores são referentes ao tempo em microssegundos, foram obtidos os seguintes resultado (Figura 15):

Figura 15: Resultados de tempo obtidos nas operações de inserção

Fonte: Própria, 2024

Analisando os dados obtidos, nota-se que apesar da base de dados MongoDB manter uma média de tempo parecida, o PostgreSQL possui uma queda significativa em relação ao primeiro teste, isto ocorre por conta de uma estrutura desenvolvida para o banco de dados que mantém informações relevantes para as próximas operações, otimizando assim sua execução (MIRANDA, 2023).

4.2 Alteração

Investigando os dados retornados nos testes de execução para operações de alteração, verifica-se que o padrão de eficiência do banco de dados PostgreSQL se manteve como nas operações de inserção, porém tendo um tempo menor em relação a primeira execução, já analisando os dados retornados pelo MongoDB, percebe-se que há uma crescente nos valores, já o tempo em relação ao MySQL acabou ocorrendo uma variação intercalada entre os testes realizados (Figura 16).

Figura 16: Resultados de tempo obtidos nas operações de alteração.

Fonte: Própria, 2024

4.3 Remoção

Verificando os valores exibidos, repara-se que a variância nos tempos realizados pelo banco de dados MySQL se manteve em relação a comparação feita na operação de alteração, porém analisando os dados encontrados tanto na base de dados PostgreSQL quanto no MongoDB, nota-se que houve uma eficiência maior em relação ao banco de dados MongoDB (Figura 17), isso ocorre por conta da base de dados em questão utilizar uma estrutura de dados chamada B-tree, no qual o índice armazena o conjunto dos campos, realizando uma ordenação pelos valores analisados , tornando assim a procura pelo índice mais rápida (MONGODB, 2024).

Figura 17: Resultados de tempo obtidos nas operações de remoção.

Fonte: Própria, 2024

5  CONCLUSÃO

A partir do objetivo proposto conclui-se que, apesar de existirem diversos bancos de dados, a maioria deles seguem diferentes tecnologias, estruturas e técnicas. Como foi o exemplo do NoSQL, onde tendem a ser utilizadas estruturas de dados, árvores B-tree, por sua rapidez em buscar informações e realizar operações no menor tempo possível. Já nos bancos de dados relacionais foi possível analisar que tende a utilizar estruturas baseadas em orientação a objetos.

Neste artigo foi possível ser analisado certos bancos de dados onde foram vistas suas características, peculiaridades, complexidades de implementações, tecnologias utilizadas, metodologias, buscando esclarecer alguns pontos quando se tenha necessidade de escolher qual banco utilizar em uma determinada aplicação e mostrar o porquê se utilizar um banco ou não.

Antes de considerar o tempo de execução, tempo de eficácia, primeiramente deve analisar para qual situação se deve utilizar certo banco de dados em comparativo a outro, levando em conta a quantidade de registros, estrutura interna que está sendo utilizada, a facilidade de manutenção, integração, para assim adaptar cada banco de dados para cada situação específica.

6  REFERÊNCIAS BIBLIOGRÁFICAS

AWARI. Como escolher o melhor SGBD para sua empresa? 2023. Disponível em: https://awari.com.br/tudo-sobre-sgbd/?utm_source=blog&utm_campaign=projeto+blo g&utm_medium=Tudo%20o%20que%20você%20precisa%20saber%20sobre%20S GBD#:~:text=É%20importante%20escolher%20um%20SGBD,para%20proteger%20 suas%20informações%20confidenciais. Acesso em: 26 maio 2024.

BARROSO, I. Banco de dados orientado a colunas. 2012. Disponível em: https://isaiasbarroso.wordpress.com/2012/06/20/banco-de-dados-orientado-a-coluna s/. Acesso em: 23 abr.2024.

CALANCA, P. Introdução: SQL e NoSQL – trabalhando com bancos relacionais e não relacionais. 2023. Disponível em: https://www.alura.com.br/artigos/sql-nosql-bancos-relacionais-nao-relacionais. Acesso em: 23 abr.2024.

CONTENT, Redator Rock. Entenda a diferença entre banco de dados relacional e orientado a objetos. 2021. Disponível em: https://rockcontent.com/br/blog/diferenca-entre-banco-de-dados-relacional-e-orientad o-a-objetos/. Acesso em: 07 set. 2024.

CORADIN, F. Conheça os principais Bancos de Dados em 2024. 2024. Disponível em: https://horusinfo.com.br/conheca-os-principais-bancos-de-dados-em-2024/. Acesso em: 26 maio 2024.

HIGOR. Introdução ao MongoDB. 2014. Disponível em: https://www.devmedia.com.br/introducao-ao-mongodb/30792. Acesso em: 07 set. 2024.

JÚNIOR, E. B-Tree: O que é? Para que serve? Cenários de Uso? Por que aprender? 2023. Disponível em: https://elemarjr.com/clube-de-estudos/licoes/b-tree/. Acesso em: 07 set. 2024.

LOGAP. Banco de dados NoSQL para iniciantes: o que é, quais os tipos existentes e principais SGBDs para NoSQL. 2022. Disponível em: https://logap.com.br/blog/banco-de-dados-nosql-para-iniciantes/. Acesso em: 02 jun. 2024.

MATALLAH, H; BELALEM, G; BOUAMRANE, K. Comparative Study Between the MySQL Relational Database and the MongoDB NoSQL Database. InternationalJournal Of Software Science And Computational Intelligence, [S.L.], v. 13, n. 3, p.38-63, 1 jul. 2021. IGI Global. http://dx.doi.org/10.4018/ijssci.2021070104. Disponível em: https://www.researchgate.net/publication/352039638_Comparative_Study_Between_ the_MySQL_Relational_Database_and_the_MongoDB_NoSQL_Database. Acesso em: 02 jun. 2024.

MIRANDA, Maurício. PostgreSQL: Performance, Otimização e Melhores Práticas. 2023. Disponível em: https://blog.casadodesenvolvedor.com.br/postgresql-performance/. Acesso em: 07 set. 2024.

MONGODB. Manual do MongoDB: índices. Índices. 2024. Disponível em: https://www.mongodb.com/pt-br/docs/manual/indexes/#:~:text=Os%20índices%20do%20MongoDB%20usam,de%20query%20baseadas%20em%20intervalo. Acesso em: 07 set. 2024.

ORACLE. O que é um banco de dados? 2024. Disponível em: https://www.oracle.com/br/database/what-is-database/. Acesso em: 23 abr.2024.

OSTROWSKA, K. As bases de dados mais populares em 2023. 2023. Disponível em: https://learnsql.com.br/blog/as-bases-de-dados-mais-populares-em-2023/. Acesso em: 26 maio 2024.

REILY, M. Banco de dados NoSQL para iniciantes: o que é, quais os tipos existentes e principais SGBDs para NoSQL. 2022. Disponível em: https://logap.com.br/blog/banco-de-dados-nosql-para-iniciantes/. Acesso em: 23 abr.2024.

SANTOS, L. O que são as siglas DDL, DML, DQL, DTL e DCL? 2016. Disponível em: https://www.devmedia.com.br/forum/o-que-e-dcl/564671. Acesso em: 02 jun. 2024.

TEAM, K. Banco de Dados: O que é e quais são os principais tipos? 2022. Disponível em:https://kondado.com.br/blog/blog/2022/09/13/banco-de-dados-o-que-e-e-quais-sao-o s-principais-tipos/. Acesso em: 02 jun. 2024.


1 Graduando do Curso de Sistemas de informação de Araraquara- UNIARA. Araraquara-SP. E-mail: daniel.cocolete@uniara.edu.br
2 Orientador. Docente Curso de Sistemas de informação da Universidade de Araraquara- UNIARA. Araraquara-SP. E-mail: jhgborges@uniara.edu.br
3 Coorientador. Docente Curso de Sistemas de informação da Universidade de Araraquara- UNIARA. Araraquara-SP. E-mail: fflorian@uniara.edu.br