análise de desempenho de banco de dados de código aberto

Propaganda
ANÁLISE DE DESEMPENHO DE BANCO DE DADOS DE CÓDIGO ABERTO JUNTO A
TECNOLOGIA JAVA PARA ARMAZENAMENTO E RECUPERAÇÃO DE IMAGENS
MÉDICAS
Gil Mendes Carelli​1​, Lucas Venezian Povoa​2​, Luciana Brasil Rebelo dos Santos​3
1 Graduando em Tecnologia em Análise e Desenvolvimento de Sistemas, Bolsista PIBIFSP, IFSP, Câmpus Caraguatatuba,
[email protected].
2 Mestre em Ciência da Computação, Orientador, Professor, IFSP, Câmpus Caraguatatuba, [email protected].
3 Doutora em Computação Aplicada, Professora, IFSP, Câmpus Caraguatatuba, [email protected].
Área de conhecimento (Tabela CNPq): Banco de Dados – 1.03.03.03-0
Apresentado no
7° Congresso de Iniciação Científica e Tecnológica do IFSP
29 de novembro a 02 de dezembro de 2016 - Matão-SP, Brasil
RESUMO: Sistemas de Informação da Saúde demandam alto volume de armazenamento e grande
poder de processamento para lidar com imagens médicas, como por exemplo, tomografias mamárias e
radiografias. Este artigo apresenta a comparação de desempenho entre sistemas de banco de dados
Relacional e Chave-Valor juntos a tecnologia Java para armazenamento e recuperação de imagens
médicas, em especial tomografias mamárias.
PALAVRAS-CHAVE​: SQL; NoSQL; orientação a objetos; saúde, tomografia.
PERFORMANCE ANALYSIS OF OPEN SOURCE DATABASES WITH JAVA FOR
MEDICAL IMAGE PERSISTENCE AND RETRIEVAL
ABSTRACT: Health information systems require high-volume storage and high processing power to
handle medical images, This paper presents the parcial results of a research developed in order to
analyse and compare open source database management systems and programming language to store
and retrive medical images.
KEYWORDS​: SQL; NoSQL; object oriented ; healthcare, tomography.
INTRODUÇÃO
Picture Archiving and Communication Systems (PACS) [1] é um tipo de sistema de
informação proveniente do domínio da Saúde, o qual possui a finalidade de captar, armazenar,
transmitir e apresentar imagens digitais (e.g., tomografia mamária, radiografia) e informações
relacionadas (e.g., dados demográficos, relatórios de diagnostico, histórico clínico).
PACSs lidam diretamente com tipos de dados que exigem alto poder de processamento e
grande capacidade de armazenamento. i.e., imagens médicas como tomografias e radiografias.
Desenvolver sistemas que lidam com esse tipo de dado atendendo o requisito não funcional de rápido
tempo de resposta é um desafio intrínseco e está diretamente relacionado às tecnologias adotadas [2].
Nos últimos anos, diversos tipos de modelos de banco de dados, e naturalmente sistemas
gerenciadores baseados nesses, surgiram com propostas completamente diferentes do modelo
relacional e da SQL. Dessa forma, foram estabelecidos três principais grupos de banco de dados
denominados SQL, NoSQL e NewSQL, os quais buscam prover, principalmente, funcionalidades
com a maior efciência possível.
O objetivo deste resumo é apresentar a análise de desempenho entre os sistemas de banco de
dados de código aberto PostgreSQL e MongoDB junto a tecnologia Java para o armazenamento de
tomografias mamárias. O restante deste artigo está assim organizado. A Seção 2 descreve os
métodos e ferramentas empregados para as análises. A Secão 3 apresenta os resultados obtidos e a
comparação entre o desempenho dos banco de dados. Finalmente, a Seção 4 expõe as considerações
finais e aponta alguns trabalhos futuros.
MÉTODOS E FERRAMENTAS
Para o desenvolvimento deste resumo foi utilizada a tecnologia Java 8 [3]. Os sistemas
gerenciados de banco de dados analisados foram PostgreSQL 9.3.13 [4] e Mongodb 2.4.9 [5]. Foi
utilizada a versão ​stable de cada banco de dados adequada para o sistema operacional utilizado nos
testes.
O ambiente para a realização dos testes foi composto por uma máquina virtual com o sistema
operacional Ubuntu Desktop 14.04 LTS com 2 GB de memória RAM, 20 GB de HD e 2 núcleos de
processamento operando a 2.83 GHz. O computador hospedeiro da máquina virtual também utiliza
Ubuntu Desktop 14.04 LTS com 6 GB de memoria RAM, HD SATA de 500GB e um processsador de
4 núcleos operando a 2.83 GHz.
Para a realização dos testes foi desenvolvido um ​framework [6] com a tecnologia Java capaz
de persistir imagens médicas. A Figura 1 ilustra o diagrama de classes UML que representa a
arquitetura do​ ​framework desenvolvido utilizando o padrão ​Model, View, Control (MVC) [7].
Figura 1: Diagrama de classes UML do framework desenvolvido e utilizado para as análises de desempenho.
As classes pertencentes à camada ​database foram desenvolvidas utilizando o driver versão
9.4.1208 [8] para a conexão com o banco de dados PostgreSQL e a versão 3.2.2 [9] para o banco de
dados Mongodb. Essas classes são responsáveis pela interação com os sistemas de banco de dados.
Na camada ​model foi criada a classe para representar as imagens médicas, utilizando um
número de identificador único, o nome da imagem e um ​Array de ​bytes contendo a informação binária
da imagem.
A camada ​dao para a persistência das imagens foi desenvolvida utilizando o padrão ​Data
Access Object (DAO) [10]. As classes dessa camada recebem o objeto da camada ​model, preparam as
instruções de persistência e as passam para a camada ​database executar.
Na camada ​control foi criada a classe que recebe os parâmetros de configuração no momento
da execução do programa. Essa classe é responsável por verificar os argumentos inseridos, validando
os mesmos e passando para a camada ​service o comando que deve ser executado pelo programa.
A camada ​service conta com uma classe responsável por receber o comando a ser executado,
requisita uma conexão com o banco de dados escolhido e passada para a camada ​dao os objetos
necessários para a persistência de uma ou mais imagens.
Nos testes de persistência foram realizadas inserções sequenciais com uma, duas, quatro e oito
imagens em uma mesma transação. Cada teste foi executado cem vezes, sendo que entre cada
execução foi realizada a limpeza do cache da memória RAM e da área de swap do sistema
operacional. A métrica de desempenho adotada foi o tempo de execução medido em milissegundos, o
qual foi coletado com a ferramenta time [11].
As seguintes etapas foram completadas na realização de cada teste: definição do sistema de
Banco de Dados a ser testado, definição e validação dos dados que serão utilizados, execução e
finalização do teste. Para cada teste excutado o sistema de Banco de Dados é reiniciado, é feita a
marcação do tempo de execução da operação de persistência e seu resultado salvo em um arquivo
externo e o teste finalizado. O teste é interrompido e finalizado caso os dados escolhidos não sejam
válidos.
RESULTADOS E DISCUSSÕES
Os testes foram realizados com dois sistemas gerenciadores de banco de dados, PostgreSQL
(pgsql) e MongoDB (mongo). Cada sistema gerenciador foi testado em quatro baterias diferentes,
sendo que cada bateria foi composta por cem execuções. Cada bateria utilizou em suas execuções uma,
duas, quatro e oito imagens, respectivamente.
O Figura 2 apresenta os histogramas das quatro diferentes baterias em conjunto de cada
sistema gerenciador utilizado. Os resultados mostram que a maioria dos tempos de execução do pgsql
foram inferiores aos tempos de execução do mongo. Além disso, grande parte dos resultados se
concentrou no intervalo entre 0,35 e 0,45 segundos para o pgsql e entre 0,50 e 0,75 segundos para o
mongo.
Figura 2: Histogramas contemplando os tempos de execução em segundos das quatro diferentes baterias de cada
sistema gerenciador de banco de dados.
A Tabela 1 apresenta as medidas de centralidade e dispersão das amostras coletadas de cada
sistemas gerenciador. De forma geral é possível notar o menor tempo de execução obtido pelo pgsql
com média de 0,45 segundos ao passo que o mongo teve tempo médio de 0,76 segundos. Além da
superioridade no tempo médio, o pgsql também apresenta maior estabilidade nas operações de
inclusão de dados, com desvio-padrão de 0,09 contra 0,15 do mongo. Também é possível notar que
pior tempo de execução do pgsql é igual ao melhor tempo de execução mongo.
Tabela 1: Medidas de centralidade e dispersão das amostras dos tempos de execução das baterias realizadas para
cada sistema gerenciador de banco de dados empregado.
Banco de Dados
Média
Desvio-Padrão
Máximo
Mínimo
PostgreSQL
0.45
0.09
0.60
0.34
MongoDB
0.76
0.15
1.52
0.60
Para gerar maiores evidências das diferenças no tempo de execução dos dois sistemas de
banco de dados foi realizado um teste de hipótese t-Student utilizando um nível de confiância de 5%
para confrontar estatisticamente as duas amostras. O teste resultou no valor p igual a 1, o que define a
aceitação da hipótese nula definida como a média do pgsql menor ou igual a média do mongo.
CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS
Este resumo apresenta a análise de desempenho de dois sistemas de banco de dados de código
aberto, PostgreSQL e MongoDB, para o armazenamento de imagens médicas. O PostgreSQL
apresentou média de tempo de execução inferior a média do MongoDB, além de um desvio-padrão
inferior. Esses dados evidenciam que o primeiro sistema gerenciador possui melhor desempenho na
inserção de imagens médicas com melhor estabilidade, i.e., menor variação nos tempos de execução.
Como trabalhos futuros serão adicionados mais sistemas gerenciadores de banco de dados
com diferentes abordagens, como por exemplo, orientado a grafo, chave-valor e BigTable. Além disso,
serão realizado testes com diferentes linguagens de programação junto as implementações de
referência do seu ambiente de execução.
AGRADECIMENTOS
Os autores agradecem o suporte financeiro parcial dado pelo Instituto Federal de Educação,
Ciẽncia e Tecnologia de São Paulo (IFSP) por meio de bolsa de Inciação Científica Institucional.
REFERÊNCIAS
[1] H. OOSTERWIJK,PACS fundamentals, OTech, 2004.
[2] S. R. Delfino, L. V. Povoa, and A. C. R. Pinto, Análise de persistência de imagens médicas:
uma comparação entre os sistemas de bancos de dados mysql, postgresql e derby, Retec-Revista
de Tecnologias, vol. 5, no. 1, pp. 7-13, 2012.
[3] Oracle
Corporation
and
its
Aliates,
Openjdk,
<http://goo.gl/H2dGJ5>. Acessado em: 10 de julho de 2016.
[4]
The PostgreSQL Global Development Group,
Postgresql,
<https://goo.gl/JoXYQ2>. Acessado em: 10 de julho de 2016.
2016.
Disponível em:
2016. Disponível em:
[5] MongoDB, Inc., Mongodb, 2016. Disponível em: <https://goo.gl/Ou875h>. Acessado em: 10 de
julho de 2016.
[6] G. M. Carelli and L. V. Povoa, Medical Database Analysis Framework, 2016. [Online].
Available: ​https://goo.gl/e0FpJz
[7] G. Moreira, N. Steppat, F. King, G. Silveira, S. Lopes, P. Silveira. Introdução a Arquitetura e
Design de Software, Campus, 2012.
[8] The PostgreSQL Global Development Group, PostgreSQL JDBC Driver, 2016. Disponível em:
<https://goo.gl/j4K4t5>. Acessado em: 10 de julho de 2016.
[9] MongoDB,
Inc., Mongodb Java Driver, 2016. Disponível em: <https://goo.gl/yIfO1X>.
Acessado em: 10 de julho de 2016.
[10] J. JENKOV, DAO, 2016. Disponível em: <http://goo.gl/Mc5Bte>. Acessado em: 10 de julho de
2016.
[11] GNU. time, 2016. Disponível em: <http://goo.gl/UkRHYZ>. Acessado em: 10 de julho de 2016.
Download