Artigo do tipo Teórico
Recursos especiais neste artigo:
Contém nota Quickupdate.
Comparação de desempenho entre bancos SQL e NoSQL
A utilização de tecnologias NoSQL como banco de dados ainda é vista com cautela por muitos profissionais. Para diminuir esse receio e auxiliar no processo de tomada de decisão que envolve o uso de tais tecnologias, recomenda-se a realização de um estudo que traça comparações entre o desempenho de bancos de dados SQL e NoSQL, onde diversos testes de inclusão, alteração, exclusão e consulta de dados são realizados em bancos de dados. Deste modo, este artigo apresenta a comparação, o ambiente, os dados, os testes e a análise dos resultados são detalhados visando auxiliar o leitor a identificar qual banco de dados possui melhor desempenho no tempo de execução de operações que manipulam dados e mostra como resultado que, pelo menos no cenário e contexto apresentado, as tecnologias SQL ainda são mais atrativas para inserir, excluir, alterar e consultar grandes quantidades de dados. A comparação também provê indícios de que a plataforma Linux apresenta um desempenho superior à plataforma Windows, de acordo com as operações, dados, e demais detalhes técnicos discutidos na comparação das tecnologias SQL e NoSQL.

Em que situação o tema é útil
A comparação apresentada neste artigo é útil quando é necessário avaliar a utilização de um banco de dados SQL ou NoSQL para a realização de tarefas de inclusão, alteração, exclusão e consulta. Os resultados apresentados neste artigo avaliam apenas o tempo de execução das instruções SQL e comandos NoSQL em um contexto específico.

Recentemente os profissionais que trabalham com bancos de dados foram apresentados a ideias e abordagens diferentes para o armazenamento e a manipulação de dados identificadas apenas pela sigla NoSQL. O emprego de tecnologias associadas a bancos de dados NoSQL ainda é encarado com certa cautela e estranheza por diversos profissionais, especialmente aqueles que já trabalham com bancos de dados SQL há um bom tempo. De fato, a área de banco de dados é uma das mais tradicionais da computação e qualquer sugestão de adoção de alguma nova ideia é, pelo menos a princípio, encarada com ceticismo e resistência.

Uma das maneiras práticas de argumentar a avaliação ou mesmo o emprego da tecnologia NoSQL em sistemas importantes de bancos de dados é a comparação com os bancos SQL, que atualmente representam a tecnologia padrão para a manipulação de dados estruturados nas empresas. Esta comparação deve ser realizada com critérios científicos, valores comparativos, confiança estatística e rigor para que ela possa ser utilizada como base para a tomada de decisão que pode influenciar a adoção ou não de alguma tecnologia que vai manipular um dos bens mais importantes das empresas: os dados.

Apesar de existirem diversos fatores, facetas, detalhes técnicos e critérios de comparação entre bancos de dados, geralmente o primeiro elemento que vem à cabeça é o desempenho e, em particular, o desempenho relacionado ao tempo de execução de operações nos dados. Ou seja, muitas dúvidas surgem em relação ao quão rápido os bancos de dados NoSQL são em relação aos bancos SQL, pois esta velocidade é considerada muitas vezes o fator mais importante a ser avaliado quando o tópico da conversa é tecnologia de bancos de dados.

Com base neste cenário, este artigo apresenta uma comparação de desempenho que mede empiricamente e analisa quantitativamente o tempo de execução de instruções necessárias para inserir, atualizar, modificar, remover e consultar dados armazenados em bancos de dados SQL e NoSQL. Os Sistemas Gerenciados de Bancos de Dados comparados são o PostgreSQL 9.1.5, o MySQL 5.5.25 (ambos SQL) e o MongoDB 2.0.6, um banco NoSQL que trabalha com documentos. Os testes foram realizados em máquinas virtuais simulando ambientes Windows Server 2008 e Red Hat Linux 6 em versões de 64 bits hospedadas no VMware Workstation 8 instalados em um mesmo servidor físico. Apesar da quantidade limitada de dados e de apenas alguns produtos serem considerados nos testes deste artigo, o leitor pode assumir a comparação como um ponto de partida para procurar mais informações enquanto formula sua opinião a respeito de quão eficiente tais bancos de dados SQL e NoSQL são para a realização de tarefas do dia a dia de qualquer DBA.

Abordagem SQL

A tecnologia tradicional e consolidada para a manipulação de dados empregada nos sistemas atende pela sigla SQL, que é uma linguagem padronizada para que o usuário possa rapidamente realizar operações de leitura e gravação nos dados. O mercado atualmente conta com diversos produtos que permitem trabalhar com esta linguagem como, por exemplo, o SQL Server, o Oracle, o MySQL e o PostgreSQL.

Além de estes produtos suportarem a linguagem SQL, eles também possuem características na forma como os dados são organizados. Os bancos de dados relacionais baseiam-se na formatação dos dados em linhas e colunas modeladas na forma de tabelas que geralmente relacionam-se umas com as outras. Internamente existem diversas estruturas de dados que são alocadas na memória para que a instrução SQL possa realizar a manipulação dos dados das tabelas da forma mais rápida possível. Apesar de existirem diferenças mesmo entre os bancos de dados classificados como bancos SQL, todos eles trabalham com o conceito de tabelas, linhas, colunas e objetos adicionais como índices, transações, arquivos para o armazenamento de dados e de log de transações, stored procedures, etc.

Do ponto de vista da execução de instruções, uma vez que a instrução SQL é recebida, seja ela qual for, o banco de dados realiza várias etapas que incluem a verificação por erros na sintaxe da instrução, análise de qual é a melhor maneira de acessar os dados (pelo índice, estrutura da tabela, usando estatísticas) e outros detalhes. Deste modo, o tempo de execução de uma instrução SQL envolve vários fatores que incluem diversos aspectos internos do funcionamento de cada banco de dados.

Na comparação apresentada neste artigo optou-se por utilizar dois bancos de dados amplamente utilizados no mercado e que seguem a filosofia de software livre: o MySQL e o PostgreSQL. Estes produtos contêm diversos recursos, possuem versões pelas principais plataformas de servidor (Windows e Linux) e são capazes de lidar com grandes quantidades de dados mantendo um excelente desempenho. Os bancos de dados comerciais, tais como o Oracle, o SQL Server e o DB2, não foram utilizados na comparação apesar de serem líderes de mercado em diversos segmentos de aplicações. O motivo é simples: estes produtos possuem em seu contrato de uso, o EULA (End-User License Agreement), cláusulas que impedem a sua comparação por terceiros, ou seja, tais comparações só podem ser realizadas com a autorização prévia dos fabricantes e em condições aprovadas pelos mesmos. Esta política é, em minha opinião, prejudicial para o mercado, pois inibe comparações técnicas relevantes para quem está considerando a utilização de um destes produtos.

...
Quer ler esse conteúdo completo? Tenha acesso completo