template para elaboração de artigos científicos para

Propaganda
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
Download