• Nenhum resultado encontrado

BENCHMARKING EM SISTEMAS GERENCIADORES DE BANCO DE DADOS

Célia Camila da Silva Morais¹ Edinelson Batista² Resumo

Este trabalho consiste em apresentar um estudo de caso sobre o desempenho dos bancos de dados: Oracle e SQLServer. Foram feitos comparativos de desempenho em consultas, visando apresentar os resultados para auxiliar na avaliação de escolha do melhor SGBD para cada negócio especifico. Quando se avalia desempenho deve-se levar em consideração qual a finalidade no uso do SGBD, é preciso ter isso claro devido à grande variedade de sistemas no mercado e, deve-se levar em conta qual a real necessidade do negócio. São demonstradas as consultas feitas em cada aplicação e apresentado os comparativos como também a melhor resposta com um breve comentário. Assim, o benchmarkingajuda os gestores na tomada de decisão no momento de se escolher um SGBD seja a organização de grande, médio ou pequenoporte.

Palavras Chaves–Banco de Dados, Benchmarking, Oracle,SQLServer.

Abstract

The objective of this article is to present a case study on the performance of databases:

Oracle and SQLServer. It was done made comparative performance in SQL queries aiming to present the results to assist in assessing the choice of the best RDBMS for a specific business.

When evaluating performance it should take into account what is the purpose of the RDBMS in use due to the wide variety of systems on the market and it also must take into consideration what is the real business need. Queries are shown in each application and at the end it is presented the comparative as well as the best response to a brief comment. Thus, benchmarking helps managers in decision making at the moment of choosing a RDBMS for all types of organization

KeywordsDatabase, Benchmarking, Oracle, SQLServer.

1Acadêmica do Curso de Bacharelado em Sistemas de Informação da Faculdade Network, Nova Odessa, SP, Brasil.(celia.camila@yahoo.com.br)

2Prof.Msc.do Curso de Sistemas de Informação da Faculdade Network, Nova Odessa,SP,Brasil.

(edinelsonbatista@yahoo.com.br)

1 Introdução

Com o grande número de Sistemas Gerenciadores de Banco de Dados (SGBD) atualmente, sempre existem dúvidas no momento de fazer a escolha de qual banco de dados utilizar: “Qual usar na minha empresa?” ou “Quais as vantagens desse ou daquele no meu negócio?” e a pergunta sempre será respondida com outra pergunta: “Qual sua principal necessidade?” ou “Como esse sistema será usado no seu negócio?”, essas e outras perguntas- respostas sempre estarão presentes na escolha de um sistema não só de banco de dados como em qualquer outro sistema ou material utilizado pela empresa.

A resposta para essas perguntas não serão exatas nem tampouco poderá satisfazer totalmente o seu autor, entretanto após uma análise cuidadosa dos sistemas disponíveis no mercado e também após uma definição de pontos básicos da empresa, bem como a definição do tipo da ferramenta: gratuito ou pago, de grande porte ou pequeno a médio porte, ajudará no início das análises de desempenho.

Neste artigo será abordado análises de desempenho em sistemas de banco de dados utilizando consultas de uso geral desenvolvidas exclusivamente para medir sua resposta. Os bancos de dados utilizados são Oracle e SQLServer por serem mais utilizados em empresas dos ramos especificamente analisado aqui.

2Benchmarking em banco de dados Oracle X SQLServer

Quando se avalia desempenho, diversos fatores devem ser levados em conta. Dentre eles qual o melhor sistema operacional, ou ainda qual o banco de dados devo utilizar.

Não basta ter o melhor ou o mais caro sistema do mercado, e sim o mais eficiente para sua empresa, para suas rotinas diárias. Muitas vezes o baixo desempenho não se deve as ferramentas em si, mas em como elas estão sendo usadas, e, ou como estão configuradas.Tais avaliações de desempenho são feitas com o uso de benchmarking.

Segundo Collin, (2002) citado por Silva (2007), um benchmarking é um programa utilizado para testar o desempenho de um software, hardware ou um sistema, os quais proporcionam padrões na avaliação de desempenho de sistemas. Sendo assim, um benchmarking de Banco de Dados pode ser visto como um conjunto de instruções utilizadas para medir e comparar o desempenho de dois ou mais sistemas de gestão de base de dados.

Sendo assim não basta avaliar apenas num ambiente ideal o desempenho e sim simular todo um ambiente real de aplicação com todas as suas singularidades e usos do cotidiano.

É bom salientar também que não apenas o desempenho ou preço devem ser considerados em uma escolha de plataforma. Muitas vezes, os recursos do SGBD são decisivos, pois detalhes das implementações de compressão, paralelismo, recuperação, replicação e alta disponibilidade, para citar apenas alguns, são sempre diferentes em cada arquitetura.(Proni,2012).

Isso novamente chama a atenção sobre o que você precisa para sua empresa, consulta de dados, armazenagem? Basta definir cuidadosamente como está trabalhando com os dados e qual tipo de tratamento estes dados precisam, isso pode gerar uma grande economia em investimento de sistemas, quando se escolhe o mais adequado à sua realidade de trabalho. Um bom desempenho em inserção de dados não será útil quando se precisa de consultas de alta complexidade.

Em 1988 foi criada uma instituição sem fins lucrativos, o TPC (Transaction ProcessingCouncil ou “Conselho de Processamento de Transações”) para definir benchmarking em banco de dados, sendo muito utilizado em avaliação de desempenhos de bancos de dados empresariais e com dados publicados em seu site.

Para Vieira, Durães, Madeira (2005), o objetivo do benchmarking de confiabilidade é o de proporcionar formas padronizadas de avaliação tanta da confiabilidade como do desempenho de sistemas e componentes computacionais.Para ser considerado confiável o benchmarking deve seguir algumas regras básicas:

a. Representatividade: o benchmarking tem que representar sistemas reais e é influenciada pelo resultado da workload e faultload;

b. Portabilidade: o benchmarking deve ser aplicável a diferentes sistemas OLTP (Online TransactionProcessingou Processamento de Transações em Tempo Real), considerando diversos sistemas transacionais sendo eles Oracle, PostgreSQL, Sybase e também sistemas operacionais Windows, Linux entre outros;

c. Repetibilidade: o benchmarking deve produzir resultados semelhantes mais que uma vez no mesmo ambiente, sendo testado por diversas equipes para comprovar os mesmos resultados (resultados aceitos dentro de uma taxa de variância pré- estabelecida);

d. Escalabilidade: o benchmarking deverá ser capaz de avaliar sistemas/componentes de diversas dimensões;

e. Não-intrusividade: a execução do benchmarking deve exigir um mínimo de alterações no sistema alvo ou, idealmente, nenhuma alteração;

f. Simplicidade de uso: o benchmarking deve ser fácil de implementar e utilizar, e não dispender muito tempo de testes .

g. Um benchmarking de confiabilidade precisa conter os seguintes parâmetros listados abaixo:

h. Medidas: caracterizam o desempenho e confiabilidade. Podem ser de dois tipos medidas condicionais, que estão diretamente ligadas às condições de execução e seu objetivo é comparar diferentes sistemas e as medidas incondicionais que caracterizam a confiabilidade do sistema como um todo, listando eventos que podem afetar o sistema durante sua utilização como disponibilidade, segurança, integridade entre outros eventos.

i. Workload: mede o trabalho que o sistema realiza durante sua execução.

j. Faultload: representa as falhas e condições excepcionais, sendo responsável por identificar as causa das falhas do sistema.

k. Procedimentos e regras: são as regras para aplicação do benchmarking, para apresentação dos resultados.

l. Ambiente experimental: é a descrição do ambiente para execução do benchmarking, que deve estar o mais próximo possível da realidade a ser avaliada.

Estes são os passos primordiais para se planejar e apresentar os resultados de um benchmarking. A partir destas definições é possível executar um benchmarking confiável para sistemas transacionais. Após definir toda a sua métrica para análise, é preciso escolher a ferramenta que será usada para fazer o benchmarking, ou seja, a escolha do software a ser utilizado. Esses softwares são conhecidos como benchmarking de desempenho, onde é possível simular um ambiente real com acessos e carga de dados. Um exemplo deste tipo de software é o Swingbench, um software livre baseado em plataforma Java.

3Metodologia

O objetivo deste trabalho é analisar o comportamento de desempenho de dois Sistemas de Bancos de Dados presentes no mercado e em uso nas empresas dos mais variados ramos de atuação. Para isto será feito um estudo de caso e depois será discutido os resultados.

Nesta etapa, definiremos através de um estudo de caso, demonstrando o desempenho e o comportamento dos bancos de dados Oracle e SQLServer em pleno funcionamento, com a ajuda da ferramenta de benchmarkingproposta.

Os seguintes passos foram seguidos para o desenvolvimento da proposta:

a. escolha dos sistemas para estudo de caso;

b. elaboração de um Modelo Entidade-Relacionamento para o sistema do estudo de caso;

c. definição do modelo relacional do estudo de caso;

d. criação das tabelas do modelo relacional num SGBD;

e. inserção de grande volume de dados nestas tabelas;

f. testes do desempenho e coleta de dados.

Finalmente é feita a demonstração dos resultados coletados da análise com os comentários das consultas realizadas para estabelecer, de acordo com o uso aplicado do sistema, qual o melhor sistema em desempenho para a aplicação.

4 Sistema para estudo e diagrama entidade relacionamento

O estudo de caso foi baseado em um sistema para um posto de saúde municipal fictício que fornece medicamentos para os pacientes. Este sistema armazena informações do laboratório, medicamentos, receitas e pacientes. Sempre que um paciente vai até o posto solicitar medicamento é necessário registrar quais foram os medicamentos entregues.

A figura 1 a seguir mostra o Diagrama Entidade Relacionamento para este sistema:

Figura 1: Modelo Entidade-Relacionamento do estudo de caso Fonte: Criado pelo autor.

Os scripts para criação das tabelas e inserção dos dados no sistema transacional foram executados em um banco de dados Oracle, e SQLServer 2008utilizando a ferramenta SQL Developer. O sistema operacional utilizado foi o Windows7.

Com a seguinte configuração da máquina: Executado em máquinas virtuais idênticas a mostrada na figura 2:

Figura 2: Configurações do ambiente de pesquisa Fonte: Criado pelo autor.

5 Resultados e Discussões

Esse trabalho foi dividido em etapas para facilitar a demonstração dos resultados, bem como entendimento de todos os processos que é preciso para executar os comparativos, desde a escolha da configuração das máquinas, escolha do melhor sistema operacional, como execução e criação das aplicações em si, dentre isso a criação das tabelas e a inserção de dados nas mesmas.

6 Criação do banco de dados

O sistema que foi criado para a execução dos testes não foi um sistema de alta complexidade e sim um sistema simples defácil compreensão. O banco foi denominado Farmácia e foi criado através da execução de scripts que estão detalhados a seguir na figura 3.

Script de Criação de Tabelas

Figura 3 Criação das tabelas Fonte: Criado pelo autor.

Esse script foi executado em ambos os sistemas com igual exatidão, gerando astabelas utilizadas no banco de dados.

O script a seguir foi utilizado para popular as tabelas de forma automática usando um bloco anônimo em linguagem PL/SQL. Sendo adaptado para cada sistema de acordo com suas particularidades.

Script para popular as tabelas do Oracle (o modelo utilizado para o SQLServer apenas foi adaptado com as exigências do sistema).

Declare

CONT INTEGER := 1;

Begin

WHILE (CONT <5000) LOOP

insert into F_Laboratorios (CodLab, NomeLab,

UF) Values (CONT,

'NomeLab' || to_char(CONT),

CONT);

CONT := CONT +1;

END LOOP;

COMMIT;

END;

Declare

CONT INTEGER := 1;

Begin

WHILE (CONT <5000) LOOP

insert into F_Medicamentos (CodMed, NomeMed,

QtdeEstoque, CodLab) Values (CONT,

'NomeMed' || to_char(CONT), CONT,

CONT);

CONT := CONT +1;

END LOOP;

COMMIT;

END;

Declare

CONT INTEGER := 1;

Begin

WHILE (CONT <5000) LOOP

insert into F_Pacientes (CodPac, NomePac, Sexo, Telefone, UF) Values (CONT,

'NomeMed' || to_char(CONT), 'Sexo',

CONT, CONT);

CONT := CONT +1;

END LOOP;

COMMIT;

END;

Declare

CONT INTEGER := 1;

Begin

WHILE (CONT <5000) LOOP

insert into F_Receitas (CodRec, DataRec,

CodPac, CodLab) Values (CONT, SYSDATE, CONT);

CONT := CONT +1;

END LOOP;

COMMIT;

END;

Declare

CONT INTEGER := 1;

Begin

WHILE (CONT <5000) LOOP

insert into F_ReceitaMedicamento (CodRec, CodMed,

Qtde, valor) Values (CONT, CONT, CONT, CONT);

CONT := CONT +1;

END LOOP;

COMMIT;

END;

7Benchmarking

Os testes foram feitos de forma simples, consultas cotidianas de uma farmácia, como consulta de estoque e de pacientes e medicamentos vendidos aos mesmos, valor das receitas emitidas. Primeiro será listado todas as consultas efetuadas e logo abaixo será apresentado os resultados de forma gráfica bem como sua avaliação de desempenho em comparativo ao seu concorrente.

O primeiro teste executado foi para listar todos os medicamentos com estoque maior que 200. Conforme comando abaixo:

SelectM.NomeMed, M.QtdeEstoque FromF_Medicamentos M

WhereM.QtdeEstoque> 200 order by M.CodMed;

O resultado da consulta em Oracle é apresentado na figura 4:

Figura4 Resposta Oracle Fonte: Criado pelo autor.

Enquanto o SQL Server apresentou a seguinte execução, ficando aparente o melhor desempenho do segundo sistema conforme mostrada na figura 5.

Figura 5 Resposta SQLServer Fonte: Criado pelo autor.

A próxima consulta foi listar todos os pacientes e suas respectivas receitas:

SelectP.NomePac,M.NomeMed

FromF_Medicamentos M ,F_PacientesP,F_Receitas R, F_ReceitaMedicamento A Where P.CodPac = R.CodPac

AndA.CodMed = M.CodMed order by R.CodPac;

O resultado obtido peloOracle está mostrado na figura 6:

Figura 6 Resposta Oracle Fonte: Criado pelo autor.

A mesma consulta executada no SQL Serverapresentou o seguinte resultado, conforme a figura 7:

Figura 7 Resposta SQLServer Fonte: Criado pelo autor.

Esta consulta apresentou uma execução mais rápida pelo SQL Server, entretanto o Oracle listou mais linhas trazendo as receitas em separado por medicamento.

A seguinte consulta foi listar os valores dos medicamentos emitidos em cada receita.

SelectA. Valor, M.NomeMed,M.CodMed

FromF_medicamentos M, F_ReceitaMedicamento A WhereM.CodMed = A.CodMed

order by M.CodMed;

Os resultados apresentados pelo Oracle é mostrado na figura 8:

Figura 8 Resposta Oracle Fonte: Criado pelo autor.

A figura 9 mostra o resultado da consulta no SQLServer

Figura 9 Resposta SQLServer Fonte: Criado pelo autor.

A consulta seguinte teve o propósito de listar todo o estoque disponível.

select SUM(M.QtdeEstoque) FromF_Medicamentos M ;

Os resultados apresentados foram do Oracle e podem ser vistos na figura 10:

Figura 10 Resposta Oracle Fonte: Criado pelo autor

A figura 11 mostra os resultados da mesma consulta obtido usando o SQLServer.

Figura 11 Resposta SQLServer Fonte: Criado pelo autor

Nesta consulta o Oracle teve uma melhor resposta.

Estas consultas foram elaboradas de forma a comparar os dois sistemas de banco de dados.

Todas estas consultas são apresentadas o total de dados inseridos em toda a tabela representando assim o tempo de resposta em relação ao concorrente. Na maioria das consultas o Oracle apresentou um resposta rápida em relação ao SQL Server oque não significa que este ultimo não seja de boa escalabilidade para este seguimento.

Nessas consultas o Oracle teve uma resposta melhor em termos de desempenho, entretanto a diferença para o SQLServer não é considerada exorbitante, sendo assim ambos banco de dados obtiveram bons resultados, sendo que no geral o Oracle teve uma melhor resposta.

8 Considerações Finais

Para fazer comparativos de desempenho benchmarking é preciso utilizar tarefas realizadas no dia a dia da empresa.

E também estar atento aos detalhes dessas respostas. Um sistema pode trazer resultados satisfatórios num teste que não é o mais utilizado pelos usuários, ou uma tarefa que não seja de maior prioridade e este mesmo apresenta baixo desempenho nas tarefas rotineiras da empresa. Este fator traz uma falsa satisfação no momento da escolha das configurações do sistema. É preciso estar atento a esses fatores que são primordiais para o bom desempenho de

todo o processo da empresa. Um sistema de banco de dados é a alma da empresa pode-se representar assim devido a sua importância.

Um sistema de banco de dados depois de escolhido, implantado na empresa dificilmente será trocado, não só devido aos altos custos desta ferramenta, como também pela complexidade em se fazer uma migração, acarretando assim perdas de desempenho em toda a empresa.

9ReferênciaBibliográfica

Collin, P. (2002) Dictionary of Information Technology. Peter Collin Publishing.

Proni, Ricardo P. Oracle Benchmark: Linux x Windows. In Sql Magazine ed. 87, 2012.

Silva, Nádia F.F. Armazenamento de dados xml: técnicas de benchmark para avaliação.

2007.

Vieira, M.; Durães, J.; Madeira, H.Especificação e validação de benchmarks de confiabilidade para sistemas transacionais, IEEE LatinAmericaTransactions, Jun. 2005.