Evolvere Scientia, V. 1, N. 1, 2014 COMPARATIVO DE DESEMPENHO DE SISTEMAS DE BANCO DE DADOS SQL E NOSQL USANDO NODE.JS Bruno Sampaio Pinho da Silva1*, Brauliro Gonçalves Leal1 1 Universidade Federal do Vale do São Francisco, 48902-300 Juazeiro, BA, Brasil. *Email: [email protected] Recebido em dia/mês/ano; aceito em dia/mês/ano; publicado na web em dia/mês/ano Resumo: Este trabalho tem como objetivo apresentar os resultados de um experimento realizado com dois paradigmas de bancos de dados: SQL e NoSQL, para avaliar os respectivos desempenhos em operações de inserção, atualização e consulta. Primeiramente, definiram-se os sistemas de banco de dados para cada categoria. Em seguida, uma metodologia foi desenvolvida e implementada na linguagem escolhida levando em consideração o tempo medido para cada conjunto de operação. A partir da saída, foi possível analisar os resultados e, por intermédio de planilhas eletrônicas, plotar os dados em gráficos e concluir qual sistema obteve sucesso em realizar as tarefas no menor tempo. Palavras-chave: Comparativo, Banco de Dados, SQL, NoSQL. Abstract: This article has the goal to show results from an experiment realized with two database paradigms: SQL and NoSQL, in order to evaluate respective performance on insert, update and delete operations. First of all, database systems were defined for each category. Next, a methodology was developed and implemented using the chosen language observing measured time for each operation set. As a consequence, it was possible to analyze results and, through spreadsheets, plot charts and conclude which system was successful doing tasks in less time. Keywords: Comparative, Database, SQL, NoSQL 1 Evolvere Science, V. 1, N. 1, 2013 INTRODUÇÃO Por exemplo, quando comparado com o SQL, os bancos de dados NoSQL são mais escaláveis, ou Muito tem se falado sobre os novos paradigmas seja, permitem uma maior adequação ao crescente utilizados na estruturação e armazenamento de volume de dados à medida em que o fluxo aumenta dados em sistemas computacionais modernos, como consideravelmente. o NoSQL. A ampliação do acesso à internet levou modelos de dados endereçam muitas questões que o ao surgimento de grandes quantidades de dados modelo relacional não foi projetado para tal produzidos por usuários diariamente: redes sociais, (MONGODB, 2014), dentre eles: smartphones e aplicativos são exemplos de sistemas • computacionais que lidam com um fluxo da ordem E, mais importante, seus grande volume de dados estruturados, semiestruturados e não estruturados; de milhares de bytes por unidade de horas. • rápida iteração; Sustentada pela teoria de que o SQL convencional • programação orientada a objetos, o que é não seria adequado para essa grandeza e que os flexível; dados muitas vezes não exigem uma estrutura fixa • de tabelas, o conceito NoSQL foi inventado como Outro fator importante são os esquemas solução para armazenamento de dados não relacionais. arquitetura escalável ao invés da monolítica. dinâmicos. O SQL convencional precisa compreender que tipo de dado está sendo inserido Segundo o site Mongodb na seção destinada ao com antecedência. Por outro lado, o NoSQL realiza NoSQL em 2014, essa tecnologia engloba uma algumas análises e identifica quando o esquema é grande variedade de diferentes tecnologias de banco alterado e o faz rapidamente para atender às de dados e foi desenvolvida em resposta ao necessidades do cliente. Por exemplo, um usuário crescimento no volume de dados armazenados, à pode cadastrar seu nome e telefone, caso seja frequência em que tais dados eram acessados e à necessário incluir também o seu endereço, é necessidade de processamento e desempenho. necessário efetuar uma mudança na estrutura da Entretanto, um fator muito importante é discutido e levado em consideração durante a tabela para o modelo relacional compreenda o tipo de dados. escolha de um empreendimento que envolva banco O NoSQL, por outro lado, identifica tal de dados: eficiência. O NoSQL foi projetado para modificação no esquema e inclui sem maiores incluir também as funcionalidades do SQL, porém, esforços. Isso dá-se pelo fato de tais esquemas é preciso avaliar qual a sua vantagem em relação ao dinâmicos permitirem inserção de dados sem um consagrado SQL. esquema pré-definido. 2 Evolvere Science, V. 1, N. 1, 2013 Nas próximas seções, o leitor poderá observar a Em seguida, os servidores de banco de dados metodologia empregada para avaliar o desempenho foram instalados e devidamente configurados. Para de sistemas de banco de dados SQL e NoSQL, representar o SQL foi escolhido o MySQL devido à avaliar os resultados obtidos e, por fim, obter as sua tamanha aceitação e aplicabilidade na web. Para conclusões. o NoSQL, o Mongodb foi escolhido pelo seu crescente uso juntamente com aplicativos e sites que METODOLOGIA utilizam Node.js como infraestrutura nos servidores. O MySQL segue o fluxo padrão de criação de A execução do experimento deu-se incialmente, usuários, permissões e definições de tabelas. Para pela escolha de uma linguagem que desse suporte auxiliar nesse desenvolvimento, foi utilizada a aos dois paradigmas de banco de dados estudados. ferramenta phpMyAdmin, a qual possui uma Outro fator decisivo para essa decisão foi a escolha interface do ambiente web, por ser muito característico pela manipulação dos dados. O limite máximo para o alta escalabilidade e crescimento rápido do volume campo varchar é de 100 caracteres e o valor de dados trafegados diariamente. numérico admite apenas uma casa decimal. O Node.js mostrou-se adequado uma vez que adequa tais quesitos. Decidida a linguagem de programação, pensou- “amigável” e possibilita a rápida Nenhuma definição de tabela ou banco de dados foi criada para o mongodb, toda e qualquer alteração observada pelo servidor é se num modelo de dados para o modelo relacional automaticamente criada e configurada nos arquivos SQL (uma vez que o NoSQL não exige estrutura) e da base de dados. seguiu a mesma estrutura para os dois bancos de O próximo passo foi a definição do método para dados. A figura 1 exibe o esquema de tabela avaliar o desempenho. Para isso pensou-se na utilizado: divisão da execução de um programa que medisse o tempo gasto na execução de blocos de código característicos de sistemas com banco de dados: insert, update e select. Para isso, o fluxo de trabalho do programa foi o seguinte: define-se uma quantidade de operações a serem realizadas para cada comando (insert, update e select), denomina Figura 1 – Tabela utilizada no experimento essa quantidade de bloco e faz a execução de n blocos. Por exemplo, definiu-se o tamanho de bloco 3 Evolvere Science, V. 1, N. 1, 2013 igual a 50, ou seja, cada bloco corresponde a 50 RESULTADOS E DISCUSSÕES comandos inserts, por exemplo. Em seguida, efetuou-se a execução de 150 blocos, resultando em A primeira bateria de execução consta de 7500 inserts, tomando-se o tempo de execução operações insert para os dois tipos de bancos de acumulado de cada bloco. Ao final do experimento, dados. A linha azul caracteriza o tempo do MySQL tem-se o tempo total gasto na operação desejada e a vermelha, do Mongodb. A figura 2 exibe o (em ms). Todo o processo é válido também para as resultado. outras operações de update e select, as quais foram executadas em sequência. Cada etapa foi realizada sequencialmente para cada banco de dados. Após a resposta obtida pelo programa, os dados foram projetados em planilhas eletrônicas o que possibilitou a criação de gráficos comparativos da execução de cada operação nos modelos de bancos de dados. O conjunto de insert consiste na inserção dos seguintes dados: (data_corrente, id, 2014.2, "ADS- Figura 2 – Gráfico dos tempos de execução para o UNIVASF", "mysql"), variando-se apenas a data e o comando insert id. O update é caracterizado pela alteração do campo 'frase' de cada registro no banco de dados Percebe-se que o tempo gasto pelo MySQL foi identificados pelos seus respectivos ids. Por fim, o muito superior ao Mongodb. A execução dos 150 select é feito com base nos ids dos registros. blocos levou aproximadamente 8,5s para o primeiro O computador utilizado no experimento é sistema de banco de dados, já o segundo obteve composto de uma CPU Core 2 Duo de 2.2GHz, menos da metade do tempo de execução, em torno 4GB de memória RAM e sistema operacional de 2,8s. GNU/Linux Debian 7.0 testing version. A próxima seção encarrega-se de uma análise comparativa dos resultados do experimento. 4 A próxima rodada de execução foi feita usandose o comando update e a próxima figura exibe o resultado obtido: Evolvere Science, V. 1, N. 1, 2013 Apesar do aumento no tempo do Mongodb para 3s, o resultado ainda foi favorável uma vez que o MySQL levou quase 8s para efetuar os 150 blocos de comandos select. Ao término deste experimento, foi possível observar que o tempo médio gasto nas operações básicas de bancos de dados foi menor para o modelo NoSQL, devido à ausência de esquemas préestabelecidos como no caso do modelo relacional SQL. Fatores limitantes como checagem de índices Figura 3 – Gráfico dos tempos de execução para o e verificação de campos e tipos de dados podem ter comando update influenciado o baixo desempenho do MySQL. Portanto, para aplicações que possuem grande Mais uma vez o resultado foi favorável ao volume de dados e aceitam modificação no esquema Mongodb. O tempo para executar os 150 blocos de da base de dados, o NoSQL mostrou-se mais comandos update foi muito inferior em comparação eficiente com um ganho de quase 40% no tempo de com o MySQL, em torno de 3s para o Mongodb e execução em comparação com o modelo clássico quase 8s para o MySQL. SQL estabelecidos em sistemas atuais. Por fim, o terceiro gráfico apresenta a rodada final de testes com comandos select: É importante notar que, uma análise de viabilidade do paradigma é essencial para a tomada de decisão na escolha do sistema de banco de dados, uma vez que a utilização de cada um segue um modelo e adequa-se melhor a determinadas situações. REFERÊNCIAS Node.js - <http://nodejs.org/> - Acessado em 16 de Outubro de 2014 Figura 4 – Gráfico dos tempos de execução para o comando select 5 Mongodb - <http://www.mongodb.com/> Acessado em 17 de Outubro de 2014