um banco de dados não relacional para taxonomias

Propaganda
Congresso de Inovação, Ciência e Tecnologia do IFSP - 2016
UM BANCO DE DADOS NÃO RELACIONAL PARA TAXONOMIAS
BEATRIZ M.F., SILVA1, BIANCA M., PEDROSA,2
1
2
Estudante do Curso Técnico em Informática, Bolsista PIBIC-EM, IFSP, Câmpus Bragança Paulista, [email protected]
Doutora em Computação Aplicada, Professora EBTT, IFSP, Câmpus Bragança Paulista, [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: Este trabalho descreve a implementação de um banco de dados de taxonomias estruturado
num modelo de dados baseado em árvore, que permite explorar as possibilidades de navegação pelos
objetos. Os bancos de dados selecionados para implementação foram PostgreSQL e MongoDB e os
dados utilizados são do banco de dados Taxonomy, que é um banco de dados relacional, público, que
está disponível no NCBI. Os resultados obtidos permitiram comparar o desempenho, facilidade do uso
e aspectos da modelagem deste banco de dados nas duas formas de implementação relacional e não
relacional.
PALAVRAS-CHAVE: Banco de dados não-relacionais, taxonomias, banco de dados orientado a
documentos
A TAXONOMIC NOSQL DATABASE
ABSTRACT: This work describes the implementation of a taxonomic database based on the tree data
structure and exploring the traversing possibilities for navigating through the objects. We used
PostgreSQL and MongoDB as relational and NoSQL implementations of the Taxonomy database,
which is a free relational database, available at NCBI. The results allowed us to compare the
performance, ease of use and modeling aspects of both databases.
KEYWORDS: Non-relational databases, taxonomies, document-oriented databases.
INTRODUÇÃO
Taxonomias são sistemas de classificação aplicadas às mais variadas áreas do conhecimento.
Em biologia, a taxonomia dos seres vivos tem um papel essencial no desenvolvimento de pesquisas
científicas, pois a partir do nome científico de um organismo, é possível consultar uma ampla rede de
banco de dados para obter informações tais como: genoma, morfologia, filogenia e status de
conservação, entre outras (PAGE, 2015). Dentre os bancos de dados que oferecem estas informações,
o Taxonomy, do NCBI, (NCBI, 2016), destaca-se como um dos mais completos e com boa taxa de
interoperabilidade com a maioria dos sistemas gerenciadores de banco de dados.
Por muito tempo, utilizou-se bancos de dados relacionais para armazenamento de hierarquias, a
despeito das críticas ao uso deste modelo de dados para esta finalidade. Entretanto, o surgimento dos
bancos de dados NoSQL trouxe uma oportunidade de experimentar o armazenamento de taxonomias
em diferentes modelos de dados. Para este trabalho, foi selecionado o MongoDB, um banco de dados
NoSQL orientado a documento, pois oferece várias possibilidades de modelagem em hierarquias. O
trabalho testou a implementação do banco de dados Taxonomy no banco de dados relacional
PostgreSQL, e no banco de dados não relacional MongoDB, com o objetivo de comparar o
armazenamento, as opções de modelagem e o processamento de consultas em ambos.
MATERIAL E MÉTODOS
Como fonte de dados para o trabalho foi selecionado o banco de dados Taxonomy, que possui
os nomes e classificações para todos os organismos que são representados no GenBank, um banco de
dados contendo a sequência de nucleotídeos para mais de 160.000 organismos (NCBI, 2016). No
Taxonomy, cada entrada na base de dados é um grupo taxonômico também referenciado como um
"nó" na base de dados. Cada nó na base de dados pode ser associado a vários nomes, de vários tipos
diferentes. O banco de dados Taxonomy além de armazenar os nomes de organismos, também os
classifica hierarquicamente segundo sua linhagem ou descendência. MongoDB é um banco de dados
não relacional, cujo modelo de dados é baseado em documentos. Um documento uma estrutura de
dados composta por pares de campo e de valor. Documentos MongoDB são semelhantes aos objetos
JSON. Os valores dos campos podem incluir outros documentos, matrizes e matrizes de documentos
(MongoDB, 2016). A figura 1 apresenta um documento em JSON:
Document = {
"_id": 11,
"parent": 1707,
"rank_": "species",
"division_name": "Bacteria",
"division_cde": "BCT",
"gencode_cde": "Archaeal and Plant Plastid"}
Figura 1. Exemplo de um documento em formato JSON
Em MongoDB, é possível modelar hierarquias através de referência aos pais (pattern references),
referência aos filhos (Child references) e por meio de referência aos ancestrais (ancestors references).
A Figura 2 apresenta um exemplo de hierarquia do reino monera, composto por cianobactérias e
bactérias, que são encontrados em todos os ecossistemas da Terra e são de grande importância para a
saúde e meio-ambiente. As bactérias estão divididas em patogênicas e não patogênicas.
Reino Monera
Cianobactérias
Bactérias
Não patogênicas
Patogênicas
Figura 2. Hierarquia taxonômica do reino monera
Uma das possibilidades de modelagem desta hierarquia em MongoDB é através de referências
aos pais (pattern references). Nesta abordagem, cada nó faz referência ao identificador do seu pai.
Desta forma, cada nó deve ter um identificador (_id) e uma referência ao seu pai (parent). A Figura 3,
mostra, de forma simplificada, como seria a entrada de dados para estas categorias em MongoDB.
db.taxonomy.insert( { _id: "Não Patogênicas", parent: " Bactérias" } ) db.
db.taxonomy.insert( { _id: "Patogênicas “, parent: “Bactérias" } ) db.
db.taxonomy.insert( { _id: "Bactérias", parent: “Reino Monera" } )
db.taxonomy.insert( { _id: "Cianobactérias", parent: “Reino Monera" } )
db.taxonomy.insert( { _id: "Reino Monera", parent: null } )
Figura 3. Script para a criação da hierarquia do Reino Monera em MongoDB
A implementação dos bancos de dados teve início com importação dos dados, do NCBI para o
banco de dados PostgreSQL. Nesta etapa algumas operações de limpeza e transformação dos dados,
foram realizadas.
Depois, foi feita a modelagem dos dados para preparar a exportação dos dados para o
MongoDB. Neste ponto, avaliou-se as opções de modelagem de dados em hierarquias disponíveis no
MongoDB e optou-se pela modelagem de referência aos pais, porque os dados já vinham com esta
informação disponível.
Em seguida, foi realizada a “desnormalização” dos dados no Postgres. Nesta etapa foram
usadas ferramentas do PostgreSQL para exportar os dados em JSON, que é o formato mais adequado
para importação no MongoDB.
Para finalizar, foram definidos os cenários de testes. O critério para seleção dos organismos a
serem pesquisados no banco de dados basearam-se nos atuais problemas de saúde pública no Brasil.
Por isto, foram selecionados os vírus ZIKA, Chikungunya e dengue, para explorar o banco de dados
Taxonomy implementados em PostgreSQL e MongoDB. Foi necessário criar algumas stored
procedures, no PostgreSQL e functions, no MongoDB, para realização dos testes.
RESULTADOS E DISCUSSÃO
No modelo relacional, os dados são distribuídos em várias tabelas a fim de evitar repetição de
grupos de dados. O diagrama E-R da figura 4, mostra que neste banco de dados existem as tabelas
Nodes, Names, Division e Gencode. Cada entrada no banco de dados é um nó, armazenado na tabela
Nodes. Um nó pode referenciar vários Names. Gencode faz referência ao código genético de um nó.
Vários nós e, consequentemente, vários Names podem estar associados ao mesmo código genético.
Cada nó da tabela Nodes está associado a uma divisão do Genbank, armazenada na tabela Divison.
Figura 4. Diagrama Entidade-relacionamento do Banco de Dados Taxonomy.
No modelo relacional, os dados de um organismo são organizados em quatro tabelas: Nodes,
Names, Division e Gencode. Para realizar uma busca neste banco de dados e recuperar todos os dados
de um organismo, é necessário realizar várias operações de junção. Operações de junção são operações
para combinar dados relacionados que estão armazenados em tabelas diferentes (ELMASRI, 1990).
No modelo orientado a documentos, o documento é um objeto complexo, que suporta vários
objetos aninhados. Desta forma, a taxonomia de um organismo pode embutir em si todos os atributos
de um organismo, independente da repetição ou do compartilhamento de dados. A modelagem de
dados neste modelo é mais simples, pois todos os dados devem estar numa única tabela, pois não
existe junção em MongoDB.
O PostgreSQL, como a maioria dos bancos de dados relacionais, utiliza a linguagem SQL para
manipulação do banco de dados. Os bancos não relacionais utilizam linguagens próprias, para
manipulação dos dados e esta também é uma das razões pelas quais são atualmente chamados de
NoSQL.
Para análise dos resultados consideramos as seguintes consultas: obter a linhagem do Zika, do
H1N1 e da Dengue. A tabela 1 apresenta o tempo médio de processamento das consultas.
Tabela 1. Comparação do tempo para processamento de consultas
Consulta
PostgreSQL
Número de
Registros
MongoDB
Número de
Documentos
Zika
00:00:00:419 msec.
7
00:00:095 sec.
7
H1N1
00:00:12 sec.
00:00:307 sec.
7
Dengue
00:00:00:340 msec.
00:00:256 sec.
6
7
6
Como mostra a tabela 1, o PostgreSQL apresentou resultados mais rápidos. Uma das razões para isto é
a capacidade deste banco de dados de processar junções entre tabelas com desempenho muito superior
ao dos demais banco de dados, em razão da maturidade tecnológica que os bancos de dados
relacionais atingiram. A razão mais provável para o desempenho inferior do MongoDB é que o banco
foi executado em Windows, num ambiente de processamento centralizado, que não é o ambiente ideal
para testes do MongoDB. Acredita-se que o uso do MongoDB num ambiente adequadamente
configurado para o processamento distribuído pode aumentar consideravelmente o seu desempenho.
CONCLUSÕES
Os testes iniciais mostram que o PostgreSQL apresentou resultados mais rápidos que o
MongoDB. Entretanto, em termos de modelagem, o MongoDB apresentou um modelo de dados mais
simples, uma vez que um organismo traz consigo todas as suas informações. Acredita-se que ao
escalar o banco e distribuir o processamento, o MongoDB poderá explorar melhor seus pontos fortes e
com isto apresentar resultados melhores.
AGRADECIMENTOS
As autoras agradecem ao CNPq pelo apoio financeiro.
REFERÊNCIAS
ELMASRI, R.; NAVATHE, S. B. Sistema de banco de dados. São Paulo: Pearson Addison
Wesley, 2005. 724p.
MONGODB. The MongoDB 3.2 Manual. Disponível em: < https://docs.mongodb.com/manual/ >
Acesso em: 10 jun 2016.
NCBI. The NCBI Handbook. The Taxonomy Project.
<http://www.ncbi.nlm.nih.gov/guide/taxonomy/> Acesso em: 10 jun 2016.
Disponível
em:
PAGE, R. D. M. A Taxonomic Search Engine: federating taxonomic databases using web services.
BMC Bioinformatics, v. 6, p. 48, 2005.
Download