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.