POSTGRESQL X MONGODB: COMPARAÇÃO DOS RECURSOS PARA MANIPULAÇÃO DE DADOS GEOGRÁFICOS Angelo Augusto Frozza1; Eduarda Montibeller Schuch2; Gabriela Ohana Borba Catarina3. 1 Introdução Em boa parte da história dos Sistemas de Gerenciamento de Banco de Dados (SGBDs), a linguagem de consulta SQL e seus descendentes sempre estiveram presentes. Apesar de várias abordagens de arquitetura de SGBDs terem sido propostas (orientado a objetos, objeto-relacionais, XML etc.), os SGBDs relacionais acabaram se tornando um padrão de fato para uso na indústria, atendendo completamente as necessidades da maior parte das aplicações. Com o avanço das aplicações web no início do século XXI, em especial o advento das redes sociais e grandes portais de informação, e a própria natureza dos novos sistemas rodando na web, a arquitetura relacional começou a apresentar algumas limitações/problemas, especialmente associadas à escalabilidade e performance. A escalabilidade está ligada à capacidade de um sistema computacional poder crescer de forma rápida, para atender a uma demanda cada vez maior de usuários. A performance, por sua vez, está ligada à velocidade com que o usuário recebe uma resposta das requisições efetuadas a um sistema. Assim sendo, essas novas aplicações fizeram com que a indústria de software apresentasse novas propostas para estes dois problemas existentes devido às limitações dos sistemas de armazenamento relacional. As novas aplicações on-line exploram conteúdo em massa na Web 2.0 e, diante dos problemas encontrados, foram desenvolvidas soluções proprietárias (CUNHA, 2011) que diferem do paradigma relacional, as quais foram reunidas sob o termo NoSQL (Not Only SQL). O paradigma dos bancos de dados NoSQL têm vários objetivos. Alguns, por exemplo, tem a proposta de oferecer uma nova linguagem de consulta, que seja capaz de atender a determinadas consultas de forma mais eficiente que o SQL. Já outros, são propostas de uma nova maneira de se trabalhar com os SGBDs, enfatizando as limitações do SQL e as vantagens da sua linguagem. No entanto, ainda existe uma carência de estudos que comprovem a real eficácia do modelo NoSQL perante o paradigma relacional. Enquanto Rob, Coronel e Crockett (2008) encaram o padrão relacional como o maior avanço para o usuário frente ao modelo anteriormente tradicional de armazenamento, Tiwari (2011) cita o modelo NoSQL como uma tendência que tende a superar o homólogo modelo relacional no que se refere a escalabilidade horizontal e disponibilidade. Outro fato é que, atualmente, bancos de dados NoSQL têm sido amplamente usados em implementações de redes sociais e grandes portais, os quais se caracterizam pela necessidade de grandes volumes de consulta a dados e, por consequência, escalabilidade e performance. Porém, há outro segmento que pode tomar proveito das características de bancos de dados NoSQL em relação ao tradicional padrão relacional, que é o segmento envolvido com o tratamento de dados geográficos. Aplicações que usam dados geográficos como, por exemplo, os Sistemas de Informações Geográficas (SIG), caracterizam-se por terem baixo volume de inclusão de novos dados, porém, alto volume de requisições de consulta. 1 Professor orientador do Instituto Federal Catarinense – Campus Camboriú Aluno do curso Técnico em Informática do Instituto Federal Catarinense – Campus Camboriú 3 Aluno do curso Técnico em Informática do Instituto Federal Catarinense – Campus Camboriú 2 O crescimento da Sociedade da Informação impulsionou o uso de Sistemas de Informações Geográficas nas organizações e, em especial, o uso de dados georeferenciados em aplicações web. A produção de dados georeferenciados tem um custo muito alto, gerando a necessidade das organizações compartilharem e trocarem seus dados geográficos, o que é facilitado pelas redes de computadores e pela Internet (FROZZA, 2007). Sistemas de Informações Geográficas (SIGs) são sistemas que realizam o tratamento computacional de dados geográficos. Diferente dos sistemas de informações convencionais, os SIGs têm como principal característica a capacidade de armazenar tanto os atributos descritivos como as geometrias dos diversos tipos de dados geográficos (CÂMARA, 2005). 2 Objetivos Este trabalho constitui em um estudo de caso que tem como objetivo realizar um comparativo entre o novo paradigma de armazenagem de dados NoSQL e um banco de dados relacional, visando o armazenamento e consulta de dados geográficos. Porém, diferente de outros trabalhos que buscam avaliar a performance de bancos NoSQL, o foco deste trabalho está no estudo sobre os recursos disponíveis para manipular dados geográficos e seu uso. Para tanto, definiu-se que seria utilizado o banco de dados NoSQL MongoDB, devido à sua característica de ser orientado a documentos e por ser um dos primeiros a disponibilizar recursos para trabalhar com dados geográficos. Em contrapartida, os recursos do MongoDB serão analisados em relação aos recursos disponibilizados pelo SGBD PostgreSQL/PostGIS que, atualmente, pode ser considerado um padrão de fato em relação a SGBD livre para manipulação de dados geográficos. Para a realização desse estudo serão relacionados os recursos para manipulação de dados geográficos presentes no PostgreSQL/PostGIS e verificado a existência de recursos semelhantes no MongoDB. De forma complementar, serão realizados testes práticos nos dois modelos para o levantamento de dados para análise do comportamento de armazenagem e recuperação de dados. Através dos dados levantados nesse trabalho será possível analisar as principais características desse novo modelo e comparar com o modelo relacional que é amplamente utilizado. Com essas informações será possível analisar diante dos requisitos de um SIG se é viável utilizar um banco de dados NoSQL na camada de acesso e manipulação de dados geográficos. Este estudo de caso também servirá de parâmetro para verificar se o MongoDB pode ser empregado na construção da rede social prevista na Plataforma UrbanMob (FROZZA, 2012). 3 Material e Métodos Essa pesquisa é de caráter bibliográfico e exploratório. Baseada no conceito de Malheiros (2010), uma pesquisa bibliográfica levanta o conhecimento disponível na área, possibilitando que o pesquisador conheça as teorias produzidas, analisando-as e avaliando sua contribuição para compreender ou explicar o seu problema objeto de investigação. E no conceito de Gil (2008), uma pesquisa exploratória tem como objetivo familiarizar-se com um assunto ainda pouco conhecido, pouco explorado. Ao final de uma pesquisa exploratória, você conhecerá mais sobre aquele assunto e estará apto a construir hipóteses. Como qualquer exploração, a pesquisa exploratória depende da intuição do pesquisador. Por ser um tipo de pesquisa muito específica, quase sempre ela assume a forma de um estudo de caso. Para o desenvolvimento deste projeto, faremos uma comparação dos recursos para armazenamento e manipulação de dados geográficos existentes em um banco de dados NoSQL (MongoDB) em relação a um banco de dados relacional (PostgreSQL/PostGIS). Para tanto, será necessário inicialmente identificar e classificar os recursos (tipos de dados e funções pré-definidas) presentes no PostgreSQL/PostGIS. Para complementar o levantamento teórico dessa etapa, serão implementados alguns exemplos demonstrando o uso dos recursos. Na sequência, será feita uma apresentação dos bancos de dados NoSQL e o levantamento de quais propostas de banco NoSQL já permitem o uso de dados geográficos. Nesta etapa, será estudado mais detalhadamente o banco de dados NoSQL MongoDB. Esta etapa é importante para caracterizar os diferentes tipos de bancos de dados NoSQL e descrever essa nova tecnologia. Na sequência, será feito o estudo dos recursos para armazenamento e manipulação de dados geográficos presentes no banco de dados NoSQL MongoDB. Como feito anteriormente com o PostgreSQL/PostGIS, a explicação dos recursos serão complementadas com exemplos práticos demonstrando o uso dos mesmos. Ao final, uma tabela comparativa será gerada, a qual servirá como ferramenta para análise da aplicação do banco de dados MongoDB no projeto UrbanMob. 4 Resultados e Discussão Para darmos início a coleta de dados, começamos estudando e aprofundando o conhecimento sobre o banco de dados relacional PostgreSQL e sua extensão PostGIS. O PostGIS é, basicamente, uma extensão do PostgreSQL (Sistema de Gerenciamento de Banco de Dados Objeto-Relacional – SGBDOR) que adiciona suporte à manipulação e ao armazenamento de dados geográficos no PostgreSQL. Com o PostGIS é possível realizar operações abrangendo pontos, linhas, áreas e volumes que se localizam no espaço geográfico. Esta extensão inclui suporte para índices espaciais do tipo GiST (Generalized Search Tree) e R-Tree (Tree Data Structures), funções, tipos de dados e também suporta a realização de consultas espaciais. Os Quadros de 1 a 5 apresentam os recursos para manipulação de dados geográficos identificados no PostgreSQL/PostGIS. Esses quadros serão complementados com a inclusão dos dados referentes ao MongoDB. QUADRO 1 – Mapeamento dos tipos de dados TIPOS DE DADOS POSTGRESQL Geography Geometry TIPOS DE DADOS MONGODB QUADRO 2 – Mapeamento dos tipos de objetos espaciais básicos OBJETOS ESPACIAIS BÁSICOS POSTGRESQL Point Polygon Linestring OBJETOS ESPACIAIS BÁSICOS MONGODB QUADRO 3 – Mapeamento dos tipos de objetos espaciais complexos OBJETOS ESPACIAIS ARRAYS POSTGRESQL Multipoint Multipolygon Multilinestring Geometrycolletion OBJETOS ESPACIAIS ARRAYS MONGODB QUADRO 4 – Mapeamento das funções de processamento geométrico FUNÇÕES DE PROCESSAMENTO GEOMÉTRICO POSTGRESQL ST_Centroid(geometry) ST_Area(geometry) ST_Length(geometry) ST_Perimeter(geometry) PointOnSurface(geometry) ST_Boundary(geometry) ST_Buffer(geometry, distance double, [integer]) ST_Intersection(geometryA, geometryB) ST_Difference(geometryA, geometryB) ST_GeomUnion(geometryA, geometryB) FUNÇÕES DE PROCESSAMENTO GEOMÉTRICO MONGODB QUADRO 5 – Mapeamento das funções de relacionamento espacial FUNÇÕES DE RELACIONAMENTO ESPACIAL POSTGRESQL ST_Distance(geometryA, geometryB) ST_Equals(geometryA, geometryB) ST_Equals(geometryA, geometryB) ST_Intersects(geometryA, geometryB) ST_Touches(geometryA, geometryB) ST_Crosses(geometryA, geometryB) ST_Within(geometryA, geometryB) ST_Overlaps(geometryA, geometryB) ST_Contains(geometryA, geometryB) FUNÇÕES DE RELACIONAMENTO ESPACIAL MONGODB Na sequência desse trabalho, o MongoDB será estudado de forma mais aprofundada, a fim de verificar se oferece recursos semelhantes para trabalhar com dados geográficos e, no caso de oferecer, como estes podem ser utilizados. O MongoDB é um SGBD NoSQL criado pela empresa 10gen. É orientado a documentos e se define como um SGBD escalável e de alta performance, que também oferece suporte para manipulação de dados geográficos. Os bancos de dados orientados a documentos são bastante diferentes dos tradicionais bancos de dados relacionais. Em vez de armazenar dados em estruturas rígidas, como tabelas, eles os armazenam em documentos vagamente definidos (CUNHA, 2011). Com base nos recursos apresentados nos quadros acima, exemplos práticos de uso serão desenvolvidos, como forma de demonstrar cada recurso e permitir realizar um comparativo dos mesmos para manipulação de dados geográficos entre ambos os bancos de dados citados a cima. 5 Conclusão Com o objetivo de comparar e analisar os recursos para a manipulação de dados geográficos no banco de dados relacional PostgreSQL/PostGIS e no banco de dados NoSQL MongoDB, já obtivemos alguns resultados como a identificação dos tipos de dados, dos objetos espaciais e as funções espaciais presentes no PostgreSQL. Pode-se afirmar que ambos SGBDs dão suporte a manipulação e armazenamento de dados geográficos e satisfazem as necessidades para estes fins. 6 Agradecimentos Agradecemos ao Instituto Federal Catarinense - Câmpus Camboriú, que incentivou os pesquisadores desta pesquisa, com o financiamento parcial do projeto por meio de uma bolsa de Iniciação Científica do Edital 037/GDG/IFC-CAM/2012. 7 Referências bibliográficas CÂMARA, G. Representação computacional de dados geográficos. In: CASANOVA, M. A. et al. (org.) Bancos de dados geográficos. Curitiba: MundoGEO, 2005. p. 11-52. CUNHA, T. M. de A. Escalabilidade de Sistemas com Banco de Dados NoSQL: um Estudo de Caso Comparativo com MongoDB e MySQL. 2011. 85 f. Trabalho de Conclusão de Curso (Ciência da Computação) – Centro Universitário da Bahia – Estácio, Salvador. FROZZA, A. A. Plataforma UrbanMob: Infraestrutura para armazenamento de trajetórias urbanas de objetos móveis. Projeto de IC submetido ao edital IFC 037/GDG/IFC-CAM/2012. Camboriú, 2012. GIL, A. C. Como elaborar projetos de pesquisa. 5. ed. São Paulo: Atlas, 2008. MALHEIROS, R. T. L. Pesquisa Bibliográfica: Transcrevendo conceitos e citando autores nos trabalhos acadêmicos. Disponível em: <http://silvanosulzarty.blogspot.com.br/ 2010/04/pesquisa-bibliografica-transcrevendo.html>. Acessado em: 22 ago. 2012. ROB, P.; CORONEL, C.; CROCKETT, K. Database systems: design, implementation & management. [S.l.; s.n.].Cengage Learning, 2008. TIWARI, S. Professional NoSQL. [S.l.]John Wiley & Sons. 2011.