FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS FELIPE GUSTAVO DE SOUSA ISSA ESTUDO COMPARATIVO ENTRE BANCO DE DADOS RELACIONAIS E BANCO DE DADOS NoSQL NA UTILIZAÇÃO POR APLICAÇÕES DE BUSINESS INTELLIGENCE SÃO JOSÉ DOS CAMPOS 2011 FELIPE GUSTAVO DE SOUSA ISSA ESTUDO COMPARATIVO ENTRE BANCO DE DADOS RELACIONAIS E BANCO DE DADOS NoSQL NA UTILIZAÇÃO POR APLICAÇÕES DE BUSINESS INTELLIGENCE TRABALHO DE GRADUAÇÃO APRESENTADO À FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS, COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO TÍTULO DE TECNÓLOGO EM BANCO DE DADOS. Orientador: Fernando Masanori Ashikaga SÃO JOSÉ DOS CAMPOS 2011 FELIPE GUSTAVO DE SOUSA ISSA ESTUDO COMPARATIVO ENTRE BANCO DE DADOS RELACIONAIS E BANCO DE DADOS NoSQL NA UTILIZAÇÃO POR APLICAÇÕES DE BUSINESS INTELLIGENCE TRABALHO DE GRADUAÇÃO APRESENTADO À FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS, COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO TÍTULO DE TECNÓLOGO EM BANCO DE DADOS. ________________________________________________________________ CARLOS AUGUSTO LOMBARDI GARCIA ________________________________________________________________ JULIANA FORIN PASQUINI MARTINEZ ________________________________________________________________ FERNANDO MASANORI ASHIKAGA ___/___/___ DATA DE APROVAÇÃO ‘O único lugar aonde o êxito chega antes do trabalho é no dicionário’. Vidal Sassoon I AGRADECIMENTOS Agradeço a minha família, que sempre me apoiou nos momentos difíceis, aos professores, sempre dedicados à sua missão de educar, e aos amigos e colegas de curso, que estiveram comigo nos últimos três anos. II RESUMO Bancos de dados são amplamente utilizados em diversas áreas da sociedade. Eles são parte essencial do controle do negócio de diversas empresas, pois elas possuem grandes quantidades de dados financeiros e estratégicos sobre seus clientes e colaboradores, e estes dados precisam ser gravados de alguma forma. Conforme as empresas aderem à informatização, a quantidades de dados armazenados tende a crescer, e com isso o desempenho das aplicações de banco de dados tende a cair. Existem novos modelos de bancos de dados, que foram criados com o intuito de resolver estes problemas, e um desses novos modelos é o NoSQL. Este trabalho tem como objetivo fazer um estudo comparativo entre banco de dados Relacionais e NoSQL, e identificar qual é mais adequado para utilização em uma aplicação de BI (Business Inteligence). Palavras Chave: banco de dados colunar, banco de dados relacional, estudo comparativo, NoSQL. III ABSTRACT Databases are largely used in several areas of the society. They are an essential part of many companies, because they have a large amount of financial and strategic data about their clients and employees, and this data need to be saved somehow. As the companies goes into informatization, the amount of data they store grow up, and the performance of the database applications tends to decrease. There are new model of databases, that were created in order to solve this problems, and one of this models is the NoSQL. This paper has the objective of doing a comparative study between relational and NoSQL databases, and to identify witch on is more suitable for a Business Intelligence Aplication. Keywords: column oriented databases, relational databases, comparative study, NoSQL IV LISTA DE ABREVIATURAS E SIGLAS ACID - Atomicidade, Consistência, Isolamento e Durabilidade API - Application Programming Interface (Interface de Programação de Aplicações) BI - Business Intelligence DW - Data Warehouse GPL - General Public License SGDB - Sistema Gerenciador de Banco de Dados MB - Megabyte Modelo ER - Modelo Entidade Relacionamento SQL - Structured Query Language (Linguagem de Consulta Estruturada) TB - Terabyte TI - Tecnologia da Informação NoSQL – Modelos de dados distintos do modelo relacional V ÍNDICE DE FIGURAS Figura 1 - Alguns dos principais SGDBs em uso ............................................................. 6 Figura 2 - A mesma informação armazenada em diversos arquivos ................................ 7 Figura 3 - Esquema do banco de dados de uma instituição bancária ............................ 12 Figura 4 - Um esquema normalizado ............................................................................. 13 Figura 5 - Tabelas que representam a tabela 3de forma normalizada ............................ 16 Figura 6 - Tabela Key/Value .......................................................................................... 19 Figura 7 - Um documento............................................................................................... 20 Figura 8 - Pentaho .......................................................................................................... 26 Figura 9 - Pentaho .......................................................................................................... 26 Figura 10 - Modelo dimensional do data warehouse...................................................... 31 Figura 11 - Comparativo do desempenho na primeira querie ........................................ 39 Figura 12 - Gráfico comparativo do desempenho da segunda querie ............................ 40 Figura 13 - Gráfico comparativo do desempenho na terceira querie ............................. 41 Figura 14 - Gráfico comparativo do desempenho na quarta querie ............................... 42 Figura 15 - Comparativo do uso de memória na primeira querie................................... 46 Figura 16 - Comparativo do uso de memória na segunda querie ................................... 47 Figura 17 - Gráfico comparativo do uso de memória na terceira querie ........................ 48 Figura 18 - Comparativo do uso de memória na quarta querie ...................................... 49 Figura 19 - Comparativo da alocação dos dados em disco ............................................ 50 Figura 20 - Análise comparativa do desempenho com 1000MB de memória total ....... 52 Figura 21- Quantidade de memória livre durante a execução dos testes com 1000MB de memória total .................................................................................................................. 53 Figura 22 - Análise comparativa do desempenho com 500MB de memória total ........ 54 Figura 23- Quantidade de memória livre durante a execução dos testes com 500BM de memória total .................................................................................................................. 55 VI ÍNDICE DE TABELAS Tabela 1 - Tabela Relacional Alunos ............................................................................. 10 Tabela 2 - Tabela aluno com as linhas desordenadas ..................................................... 11 Tabela 3 - Tabela de livros não normalizada.................................................................. 15 Tabela 4 - Diferença entre sistemas operacionais e analíticos ....................................... 25 Tabela 5 - Análise comparativa do desempenho na primeira querie .............................. 38 Tabela 6 - Análise comparativa do desempenho na segunda querie .............................. 39 Tabela 7 - Análise comparativa do desempenho na terceira querie ............................... 41 Tabela 8 - Análise comparativa do desempenho na quarta querie ................................. 42 Tabela 9 - Análise comparativa do uso de cpu na primeira querie................................. 43 Tabela 10 - Análise comparativa do uso de cpu na segunda querie ............................... 44 Tabela 11 – Análise comparativa do uso de cpu na terceira querie ............................... 44 Tabela 12 - Análise comparativa do uso de cpu na quarta querie .................................. 45 Tabela 13 - Análise comparativa do uso de memória na primeira querie ...................... 46 Tabela 14 - Análise comparativa do uso de memória na segunda querie....................... 46 Tabela 15 – Análise comparativa do uso de memória na terceira querie ....................... 48 Tabela 16 - Análise comparativa do uso de memória na quarta querie .......................... 49 Tabela 17 - Análise comparativa da alocação em disco ................................................. 50 Tabela 18 - Análise comparativa do desempenho com 1000MB de memoria total ....... 51 Tabela 19 – Análise comparativa da memória livra com 500MB de memória total ...... 52 Tabela 20 – Análise comparativa do desempenho com 500MB de memória total ........ 53 Tabela 21 – Análise comparativa da memória livre com 500mb de memória total ....... 54 VII SUMÁRIO 1 Introdução ................................................................................................. 1 1.1 Motivação .......................................................................................................... 1 1.2 Problema ............................................................................................................ 2 1.3 Proposta de solução ........................................................................................... 2 1.4 Organização do Trabalho ................................................................................... 3 2 Revisão de literatura de banco de dados. .................................................. 4 2.1 Definição ............................................................................................................ 4 2.2 Aplicações do sistema gerenciador de banco de dados ..................................... 5 2.3 Finalidade dos sistemas de banco de dados ....................................................... 6 2.4 Modelo de Dados ............................................................................................... 8 2.4.1 Modelo Relacional ...................................................................................... 8 2.4.2 Modelo de entidade / relacionamento ......................................................... 9 2.4.3 Modelo de dados orientado a objetos ......................................................... 9 2.5 Bancos de dados Relacionais ............................................................................. 9 2.5.1 Estrutura básica......................................................................................... 10 2.5.2 Chaves ...................................................................................................... 11 2.5.3 Normalização ............................................................................................ 12 2.5.4 ACID ........................................................................................................ 14 2.6 Banco de Dados Orientados a objetos ............................................................. 14 2.6.1 2.7 Banco de dados NoSQL ................................................................................... 17 2.7.1 Armazenamento Key/Value ..................................................................... 18 2.7.2 Armazenamento de documentos............................................................... 19 2.7.3 Armazenamento de grandes colunas ........................................................ 20 2.7.4 Bancos de dados Orientados a coluna ...................................................... 21 3 Business Intelligence .............................................................................. 22 3.1 Business Intelligence ....................................................................................... 22 3.2 Definição .......................................................................................................... 23 3.2.1 3.3 4 Tipos de dados complexos........................................................................ 15 Objetivos de uma aplicação de BI ............................................................ 24 Pentaho............................................................................................................. 25 Ferramentas Utilizadas............................................................................ 27 VIII 4.1 Mysql ............................................................................................................... 27 4.2 LucidDB........................................................................................................... 28 4.3 Apache JMeter ................................................................................................. 28 4.4 Monitor de Desempenho do Windows ............................................................ 28 4.5 Oracle Virtual Box ........................................................................................... 29 5 Proposta de solução................................................................................. 30 5.1 Sistemas Gerenciadores de Banco de dados utilizados para estudo ................ 30 5.2 Definição da aplicação analisada ..................................................................... 30 5.2.1 Definição do modelo de dados ................................................................. 31 5.3 Definição do ambiente de teste ........................................................................ 32 5.4 Definição dos testes ......................................................................................... 32 5.5 Definição dos critérios analisados ................................................................... 33 5.5.1 Desempenho ............................................................................................. 33 5.5.2 Utilização de CPU .................................................................................... 34 5.5.3 Uso de memória ........................................................................................ 34 5.5.4 Alocação das tabelas em disco ................................................................. 34 5.5.5 Desempenho utilizando menor quantidade memória RAM ..................... 34 5.6 Definição dos softwares utilizados .................................................................. 35 5.6.1 Apache JMeter .......................................................................................... 35 5.6.2 Monitor de desempenho do Windows ...................................................... 35 5.6.3 Oracle Virtual Box.................................................................................... 36 6 Resultados Encontrados .......................................................................... 37 6.1 Resultados Encontrados ................................................................................... 37 6.1.1 Análise comparativa do desempenho ....................................................... 37 6.1.2 Análise comparativa da utilização de CPU .............................................. 43 6.1.3 Análise comparativa da utilização de memória ........................................ 45 6.1.4 Análise comparativa da alocação das tabelas em disco ............................ 50 6.1.5 Desempenho utilizando menos memória RAM........................................ 51 7 Considerações finais ............................................................................... 56 7.1 Contribuições e Conclusões ............................................................................. 56 7.2 Trabalhos Futuros ............................................................................................ 57 8 Referencias Bibliográficas ...................................................................... 58 9 Apêndice ................................................................................................. 61 9.1 Apêndice 1: Tabelas do modelo de dados ....................................................... 61 IX 9.2 Apendice 2: Scrips das buscas efetuadas nos bancos de dados ....................... 62 1 1 Introdução 1.1 Motivação A utilização de sistemas computadorizados aumentou consideravelmente a quantidade de informação que as companhias possuem, dados estes que vão desde informações sobre seus clientes, como histórico de compras, páginas da web acessadas, preferências e dados da empresa, como controle de estoque, controle do sistema de recursos humanos, financeiro e controle da produção (Leavitt, 2010). Grandes empresas da área de tecnologia da informação, como é o caso da Google, precisam lidar com enormes quantidades de dados diariamente. Estima-se que, no ano de 2009, cerca de 20 Petabytes (1024 Terabytes, que podem ser utilizados para armazenar 13.3 anos de conteúdo de vídeo de alta definição) de informação fossem processados diariamente pela Google. Estimativas apontam que seria possível armazenar todo o conhecimento escrito da humanidade (a partir do início da escrita, em todas as línguas) em 50 petabytes, e apenas uma empresa de tecnologia é responsável pelo processamento de 2/5 desta quantidade de dados (HLIP, 2009). O Ebay, empresa americana de comércio eletrônico, possui um Data Warehouse (DW) de 5 petabytes, que é utilizado para armazenar dados sobre seus clientes, produtos e as transações realizadas em sua plataforma (Teradata, 2008). Para armazenar esta grande quantidade de informação, é necessário um banco de dados que além de possuir grande capacidade de armazenamento, consiga desempenhar suas funções sem perda de desempenho. A rede de relacionamentos Twitter, onde os usuários se comunicam com mensagens de até 140 caracteres, recentemente anunciou que irá migrar sua base de dados de Mysql para o banco de dados Cassandra, um banco de dados NoSQL. Um dos motivos que levaram a troca do banco de dados foi a dificuldade de administrar a base de dados, que está em constante crescimento (Mynosql, 2010). Para auxiliar a visualização de todos estes dados, sistemas de Business Intelligence (BI) analisam as informações armazenadas e, utilizando-se de análise computadorizada, fornecem conclusões desse processo de modo a facilitar a compreensão humana, utilizando gráficos e outras ferramentas de resultados interativos. 2 Os bancos de dados relacionais dominaram o mercado de armazenamento de dados por muitos anos. Através das propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade), que será explicada adiante, oferecem um ambiente de armazenamento favorável a pequenas e médias empresas. Com o crescimento da quantidade de dados armazenados no banco, se faz necessário distribuir a base de dados. Os bancos relacionais não estão bem preparados para esta distribuição, e perdem desempenho no tratamento de requisições do usuário. A rede social Facebook, por exemplo, utiliza para o seu datawarehouse um banco que não é relacional. O volume de dados que esta aplicação gera diariamente é de aproximadamente 15 Terabytes (CPMBC, 2009; FHH, 2009). Enquanto bancos de dados relacionais armazenam os dados linha por linha em disco, um banco de dados colunar, por exemplo, armazena os dados por colunas, fazendo com que apenas os dados necessários sejam lidos, e não todos os dados no banco (MT10AADW, 2010). O maior banco comercial existente, da Google, também é colunar, denominado Bigtable. 1.2 Problema Identificar, entre a metodologia relacional e a colunar, qual é mais adequada para utilização por uma aplicação de Business Inteligence (BI). 1.3 Proposta de solução Fazer um estudo comparativo entre banco de dados Relacionais e NoSQL, e identificar qual é mais adequado para utilização em uma aplicação de BI. 3 1.4 Organização do Trabalho Este Trabalho está organizado da seguinte forma: Capítulo 2: Revisão de literatura de banco de dados Capítulo 3: Revisão de literatura de Business Intelligence Capítulo 4: Ferramentas utilizadas Capítulo 5: Proposta de solução Capítulo 6: Resultados e conclusões encontrados Capítulo 7: Considerações finais Capítulo 8: Referências bibliográficas. 4 2 Revisão de literatura de banco de dados. Este capítulo apresentará a definição de banco de dados, seu funcionamento, os modelos de armazenamento de dados, e apresentação dos principais modelos de bancos de dados. Este capítulo está organizado como segue: A seção 2.1 define o conceito de banco de dados, a seção 2.2 apresenta as aplicações de um sistema gerenciador de banco de dados, a seção 2.3 lista as finalidades do sistema de banco de dados, a seção 2.4 apresenta os modelos de dados. A seção 2.5 se destina a explicar os conceitos básicos de bancos de dados Relacionais, a seção 2.6 apresenta os banco de dados Orientados a Objetos, e a seção 2.7 destina-se a introduzir os bancos de dados NoSQL. 2.1 Definição Um banco de dados pode ser definido como uma coleção de dados que possuem um relacionamento entre si. Para que este conjunto de dados seja considerado um banco de dados, é necessário que algumas regras sejam observadas: • Ser um conjunto de dados com um significado no contexto. Uma disposição desordenada de dados não pode ser considerada um banco de dados. • Sua finalidade é o armazenamento de dados para um propósito específico. Deve possuir um conjunto pré definido de usuários e aplicações. • Representa um aspecto do mundo real, também chamado de minimundo, onde qualquer alteração no minimundo irá refletir nos dados armazenados no banco (MACHADO, 2008). Os sistemas de gerenciamento de banco de dados (SGBD) são projetados para lidar com grandes quantidades de informações. Dentre suas funções, se destacam a definição de estruturas de armazenamento de dados, mecanismos de controle de acesso aos dados, manipulação de informações, compartilhamento de dados entre diversos usuários e certificar que os dados se mantenham íntegros (SILBERSCHATZ, 2006). 5 2.2 Aplicações do sistema gerenciador de banco de dados Bancos de dados são amplamente utilizados em diversas áreas da sociedade. Seguem alguns exemplos de empresas e a finalidade para o qual o banco de dados é utilizado: Linhas aéreas: reservas e informações de horários, armazenamento de • informações sobre os vôos, aeronaves, funcionários, clientes e fornecedores. As empresas aéreas foram umas das primeiras a utilizar banco de dados distribuídos entre várias localidades; Finanças: armazenar informações sobre valores imobiliários, vendas e • compras de instrumentos financeiros (ações, títulos, créditos, dívidas, etc). Também para armazenar informações de instituições bancárias, seus clientes e movimentações de suas contas; Indústria: para gerenciamento de cadeia de suprimentos, controle da • produção em suas unidades, estoque de itens em armazéns e lojas, além de controle dos setores de recursos humano e financeiro; Transações de cartão de crédito: registrar e controlar compras com • cartões de crédito e geração de faturas mensais. Como mostra a listagem anterior, os bancos de dados são parte essencial do controle do negócio de diversas empresas, motivo pelo qual as empresas fornecedoras de sistemas de banco de dados estão entre as maiores empresas do mundo, como a Oracle, que possui os bancos de dados Oracle e Mysql, e fazem parte da linha de produtos de empresas mais diversificadas, como a Microsoft e a IBM (SILBERSCHATZ, 2006). A figura 1 mostra os principais sistemas gerenciadores de banco de dados existentes atualmente. 6 FIGURA 1- ALGUNS DOS PRINCIPAIS SGDBS EM USO 2.3 Finalidade dos sistemas de banco de dados Os sistemas de banco de dados surgiram como opção aos métodos antigos de gerenciamento de dados em computadores. Nos sistemas antigos, os dados eram armazenados em arquivos do sistema operacional, que era responsável por criar um ambiente para acesso, manipulação e controle destes arquivos. Para cada interação que fosse efetuada entre o sistema e o arquivo era necessário executar um programa específico do sistema operacional que fornecia aquela função. Conforme funcionalidades eram adicionadas ao banco de dados (novas regras de negócio), a criação de novos programas era necessária para lidar com estas requisições (SILBERSCHATZ, 2006). O armazenamento de informações em um sistema de arquivos apresenta diversas desvantagens, dentre as quais se destacam: • Redundância e inconsistência de dados: como a manutenção do sistema é efetuada por diversos programadores, cada um utiliza uma metodologia e, conseqüentemente, os vários arquivos onde os dados são armazenados possuem estruturas diferentes. Além disso, a mesma informação pode estar armazenada em mais de um arquivo, como mostra a figura 2, onde a informação do produto fica armazenada no arquivo do sistema de produção, no sistema de vendas e no sistema de compras. Essa redundância de dados pode levar a divergência, visto que não há nenhum mecanismo que controle se ambos os registros possuem o mesmo valor, além do custo de armazenamento que esta informação duplicada possui. 7 FIGURA 2 - A MESMA INFORMAÇÃO ARMAZENADA EM DIVERSOS ARQUIVOS • Dificuldade de acesso a dados: ambientes de armazenamento de arquivos não foram criados para executar tarefas de banco de dados, como extração de uma determinada informação de um determinado arquivo. Para cada necessidade de consulta ao sistema de dados é necessário que o programador escreva uma aplicação para efetuar esta busca, o que torna a recuperação de dados uma tarefa difícil. • Problemas de integridade: os valores armazenados no banco de dados devem ser condizentes com a regra de negócio do cliente. Por exemplo, em uma aplicação que controla as vendas de uma loja, a quantidade vendida de um item e o saldo deste item não podem assumir valores negativos. Para que esta condição seja cumprida, é necessário que um código de verificação seja incluído na aplicação. Porém, quando novas regras de negócios são adicionadas, é difícil mudar os programas para implementá-las, principalmente se as novas regras envolvem itens que possuem regras distintas das já existentes (SILBERSCHATZ, 2006). • Anomalias no acesso concorrente: para favorecer o desempenho das aplicações, os sistemas de banco de dados devem oferecer acesso concorrente aos dados armazenados. Porém, com esta funcionalidade, é possível que a interação das ações concorrentes levem os dados a um estado de inconsistência. Considere uma aplicação bancária. Ao checar o saldo, a aplicação verifica que o saldo atual é R$100,00. Quase simultaneamente, duas operações de cobrança são efetuadas nesta conta, sendo a 8 primeira cobrança no valor de R$80,00 e a segunda de R$50,00. Considerando que a operação de cobrança consiste em checar o saldo, diminuir o valor cobrado e salvar o novo saldo da conta, a execução das operações irá deixar o registro com um valor inconsistente (R$20,00 ou R$50,00 de saldo, dependendo de qual terminar sua execução por último). • Problemas de atomicidade: Os sistemas de computadores estão sujeitos a falhas, como qualquer outro dispositivo. Considere um programa bancário que efetue a transferência de R$100,00 de uma conta A para uma conta B. Se ocorrer uma falha durante este procedimento, é possível que o valor transferido fosse retirado da conta A, porém não creditado na conta B. Os sistemas de banco de dados devem ser capazes de oferecer operações atômicas, isto é, deve ocorrer em sua totalidade ou não ocorrer. É difícil garantir a atomicidade de operações em um sistema de arquivos. Estas e outras dificuldades impulsionaram o desenvolvimento de sistemas de banco de dados, para resolver as dificuldades anteriormente citadas e oferecer o ambiente ideal para armazenamento de dados (SILBERSCHATZ, 2006). 2.4 Modelo de Dados O modelo de dados de um Banco de dados é a forma de descrever os dados, seus relacionamentos, sua semântica e restrições de consistência. O modelo de dados descreve o projeto do banco nas formas física, lógica e de view (SILBERSCHATZ, 2006). 2.4.1 Modelo Relacional Este modelo utiliza tabelas para representar os dados e os relacionamentos existentes entre as várias instâncias destas tabelas. Cada tabela possui diversas colunas, que são os atributos desta entidade que serão armazenados. O modelo de dados relacional é o modelo de dados mais utilizado, e a grande maioria dos SGDBs atuais é baseada no modelo relacional (SILBERSCHATZ, 2006). 9 2.4.2 Modelo de entidade / relacionamento Este modelo é baseado na filosofia de que o banco de dados é baseado em uma percepção do mundo real, que é formado por vários objetos básicos, as entidades, e os relacionamentos existentes entre estas entidades (SILBERSCHATZ, 2006). Cada alteração nos atributos deste objeto no mundo real irá ocasionar em uma alteração nos dados armazenados no banco de dados, pois o dado armazenado é a representação, em bits, daquele objeto, e deve sempre possuir os dados mais atualizados (MACHADO, 2008). 2.4.3 Modelo de dados orientado a objetos Este modelo pode ser visto como um modelo ER (Entidade / Relacionamento) mais avançado. Ele adiciona ao modelo ER as funções de encapsulamento, métodos (funções) e identidade de objeto (SILBERSCHATZ, 2006). 2.5 Bancos de dados Relacionais Os bancos de dados relacionais utilizam a metodologia de prover um meio de descrever o dado apenas com sua estrutura natural, isto é, sem impor estruturas adicionais com propósitos de otimização computacional. Outra vantagem desta abordagem é a boa fundamentação em consistência de relacionamentos e redundância de dados (CODD, 1970). 10 2.5.1 Estrutura básica Um banco de dados relacional é formado por várias tabelas, cada uma com um nome único atribuído. Considere a tabela Alunos (tabela 1). Ela possui 4 cabeçalhos de coluna: Matrícula, Nome aluno, Curso e Telefone. Segundo a normatização do modelo relacional, chamaremos estes cabeçalhos de atributos. Para cada atributo, há um conjunto de valores que são permitidos de serem armazenados nesta coluna. Este conjunto é chamado de domínio desse atributo. Para o atributo Nome Aluno, por exemplo, o domínio do atributo é o conjunto de todos os alunos que fazem parte da instituição que registra seus alunos nesta tabela, já para o atributo Matrícula, o domínio do campo é o número de registro deste aluno na instituição, o atributo Curso possui como domínio os nomes dos cursos que a instituição ministra e, para o atributo, Telefone o domínio é o conjunto de valores que representa o telefone da residência dos alunos desta instituição. Qualquer linha desta tabela precisa consistir em um conjunto de 4 elementos (a1, a2, a3 e a4), onde a1 é a Matrícula (e está no domínio D1), a2 é o Nome do aluno (e está no domínio D2), a3 é o nome do curso (domínio d3) e a4 o número do telefone (que está no domínio D4) da entidade representada. Portanto, todo registro de alunos conterá apenas subconjuntos dos conjuntos possíveis para cada atributo da tabela. Portanto, conta é um subconjunto de: D1 x D2 x D3 x D4 Em geral, uma tabela de N atributos é um subconjunto de: D1 x D2 x ... x Dn-1 x Dn Matrícula Nome do Aluno Curso Telefone 312412 João da Silva Letras 3531-1345 312413 Maria de Sousa Física 3412-5312 312414 Rita de Cássio Matemática 1324-1224 312415 José dos Santos Física 6124-8972 312416 Paulo Nascimento Computação 3551-6377 TABELA 1 - TABELA RELACIONAL ALUNOS A disposição das linhas em uma tabela é irrelevante, pois uma tabela é um conjunto de registros. Portanto, quer os registros estejam listados em ordem, como na tabela 1, ou estejam desordenadas, como na tabela 2, ambas as tabelas são idênticas, visto que possuem os mesmos registros. 11 Matrícula Nome do Aluno Curso Telefone 312413 Maria de Sousa Física 3412-5312 312414 Rita de Cássio Matemática 1324-1224 312416 Paulo Nascimento Computação 3551-6377 312415 José dos Santos Física 6124-8972 312412 João da Silva Letras 3531-1345 TABELA 2 - TABELA ALUNO COM AS LINHAS DESORDENADAS É exigido que, para todos os registros da tabela, os domínios dos atributos sejam atômicos. Para que um domínio seja considerado atômico ele deve ser formado apenas por elementos indivisíveis. Por exemplo, o conjunto dos números inteiros é um domínio atômico, porém o conjunto de todos os conjuntos de números inteiros não é atômico, pois o subconjunto é composto por diversos números inteiros. Esta exigência é necessária pois, apesar de Nome do Aluno e Curso serem ambos armazenados como conjunto de caracteres no esquema físico (armazenamento em arquivo), no nível lógico (onde são representadas as tabelas) a lógica do negócio impõe que o Nome do Aluno e o nome do curso sejam de conjuntos distintos (SILBERSCHATZ, 2006). 2.5.2 Chaves É preciso ter um modo de identificar como as linhas dentro de uma tabela são identificadas e distinguidas umas das outras. Essa identificação é feita utilizando seus atributos, ou seja, os valores de um registro precisam ser criados de modo que possam identificar unicamente aquela linha da tabela. Em outras palavras, nenhuma linha em uma tabela pode ter todos os valores para todos seus atributos. O termo chave primária é utilizado para identificar o atributo que foi escolhido pelo projetista do banco de dados para identificar unicamente os registros que são armazenados em uma determinada tabela. Uma chave é propriedade de toda a tabela, e não de um registro em específico. Nenhum registro pode ter o mesmo valor no atributo chave primária de uma determinada tabela do banco de dados. Os atributos chaves devem ser selecionados com cuidado. O nome de uma pessoa nunca deve ser utilizado como atributo chave, pois podem existir mais de uma pessoa que possui aquele nome. Os identificadores únicos devem nunca ou raramente 12 mudar, o que torna o endereço de uma pessoa uma má escolha de atributo chave, diferentemente dos identificadores normalmente gerados pelas empresas para identificar os registros, que dificilmente serão alterados. Um esquema de tabela t1 pode ter entre seus atributos a chave primária de outra tabela, digamos t2. Este atributo é chamado de chave estrangeira de t1, referenciando t2. Por exemplo, no esquema da Figura 3, o atributo nome_agência na tabela conta é uma chave estrangeira desta tabela, que referencia a outra tabela do esquema, a agência. Em qualquer conjunto de registros do banco de dados, para cada linha existente na tabela conta, é necessário que nome_agencia possua uma referência a um registro válido da tabela agência (SILBERSCHATZ, 2006). Na figura 3, é representado um esquema de uma instituição bancária. As chaves primárias de cada entidade são apresentadas antes dos outros atributos, na caixa cinza. FIGURA 3 - ESQUEMA DO BANCO DE DADOS DE UMA INSTITUIÇÃO BANCÁRIA (SILBERSCHATZ,2006) 2.5.3 Normalização Um método que deve ser considerado ao planejar um banco de dados relacional é um processo conhecido como normalização. Ele tem por objetivo gerar um esquema de tabelas que permita armazenar informações sem redundância desnecessária, ao mesmo tempo permitindo recuperar informações facilmente. Para entender a necessidade da utilização deste processo durante a criação do esquema do banco de dados, discutiremos o que pode acontecer de errado no projeto. A 13 propriedade indesejável que um projeto de banco de dados pode ter é a repetição desnecessária de informações. Considere que o Aluno “João da Silva”, da figura 4, se matricule para um novo curso na instituição de ensino e uma nova matrícula seja gerada para registro deste novo aluno no curso. É desejável que não aja repetição de informações no projeto do banco de dados, pois isto aumenta o custo de armazenamento e dificulta a tarefa de atualização dos dados. Suponha que o número do telefone deste aluno seja alterado. Esta alteração deve refletir nas duas linhas, sendo mais custosa nesta tabela do que em uma tabela normalizada. Aplicando a normatização a este projeto, o atributo curso fica independente do registro do aluno, evitando a repetição de informações desnecessárias, conforme mostra a figura 4. Nota-se que os dados representados são os mesmos (com adição do registro do novo curso do aluno 312412), porem sem a duplicação desnecessária de dados (SILBERSCHATZ, 2006). FIGURA 4-UM ESQUEMA NORMALIZADO 14 2.5.4 ACID Uma parte importante dos bancos de dados relacionais é a propriedade ACID, que faz parte de seu núcleo. ACID é um acrônimo derivado da primeira letra das seguintes propriedades: Atomicidade, Consistência, Isolamento e Durabilidade. Atomicidade é a capacidade do banco de dados permitir que as operações sejam efetuadas com sucesso no banco de dados, ou nenhuma delas será efetuadas. Consistência é a propriedade que garante que as transações isoladas (sem qualquer outra transação executando simultaneamente) preserva a consistência do banco de dados. Isolamento é a propriedade que garante que caso duas transações sejam executadas simultaneamente, o sistema deve garantir que cada transação seja executada sem estar ciente das outras transações existentes no sistema. A durabilidade garante que após uma transação ser completada com sucesso, as mudanças que ela efetuou no banco de dados persistem, mesmo em caso de falha no sistema (SILBERSCHATZ, 2006). 2.6 Banco de Dados Orientados a objetos Bancos de dados relacionais se provaram bastante adequados para aplicações empresariais, principalmente no ramo bancário. Entretanto, ele não é adequado para todos os tipos de aplicações. Novas aplicações, que envolvem modelagem complexa de dados (que não se adaptam bem a modelagem em tabelas), agora requerem serviços que normalmente são associados com sistemas de bancos de dados: persistência, transações atômicas, controle de acesso, estabilidade de dados, etc. Para exemplificar, considere uma aplicação utilizada por uma empresa aeronáutica. A aplicação auxilia tanto na especificação quanto na parte de design das aeronaves. Objetos físicos não se adaptam bem a modelos tabulares, ou modelos relacionais. Em particular, uma aeronave requer muitas partes duplicadas, e cada uma necessitaria de um identificador único para ser armazenado em um modelo relacional. Além disso, as relações representando partes diferentes da aeronave que são 15 praticamente similares iriam requerer esquemas independentes e separados. Finalmente, o design completo requer centenas de milhares de partes e acesso direto a cada parte deste design se torna impraticável. Bancos de dados orientados à objetos são uma tentativa de resolver estas dificuldades (assim como outras), e ainda manter as vantagens dos sistemas de banco de dados. Em uma entidade composta de várias partes é possível ter acesso direto a um de seus componentes, ao invés de associar explicitamente um identificador único a cada uma de suas partes e criar uma tabela extra de relacionamento. Além disso, programadores podem manipular entidades do banco de dados em qualquer nível de abstração, através da extensão dos tipos de dados conhecidos pelo banco. Isso é importante pois significa que o programador não necessita transformar o tipo de dado da aplicação para facilitar sua persistência no banco (HOROWITZ, 1991). 2.6.1 Tipos de dados complexos Considere, por exemplo, uma aplicação para biblioteca, onde as seguintes informações são armazenadas para cada um dos livros: • Titulo • Lista de Autores • Editora • Conjunto de palavras-chaves Considerando os atributos acima, alguns possuirão domínios não atômicos. • Autores: Um livro pode ter mais de um autor, que seria representado por um array (uma lista). • Conjunto de palavras-chaves: Quando um conjunto de palavras chaves é armazenado para um livro, é esperado que seja possível recuperar todos os livros que compõem determinado tema (palavra-chave). Título Autor Editora Conjunto Palavras Chaves Compiladores [Smith, Jones] Ática [análise, programação] Redes [Jones, Frick] Globo [internet, web] TABELA 3 - TABELA DE LIVROS NÃO NORMALIZADA 16 A tabela 3 representa a tabela com os dados dos livros desta biblioteca. Para simplificar, consideraremos que o nome do livro é único e capaz de identificar cada registro da tabela, sendo a chave primária da mesma. FIGURA 5- TABELAS QUE REPRESENTAM A TABELA 3DE FORMA NORMALIZADA A figura 5 mostra o modelo do banco de dados normalizado. Embora ele possa ser representado sem a utilização de tabelas alinhadas, o uso dessas relações leva a um modelo mais fácil de entender. O usuário ou o programador de um sistema de recuperação de informações pensam no livro como sendo um objeto que possui conjunto de autores, como o modelo da tabela 3, não como o modelo normalizado da figura 5. O projeto normalizado exige que as consultas usem junções de várias relações, enquanto o projeto não normalizado torna muitos tipos de consultas mais fáceis (SILBERSCHATZ, 2006). 17 2.7 Banco de dados NoSQL O termo NoSQL foi utilizado pela primeira vez no ano de 1998, por Carlo Strozzi, para identificar bancos de dados de código aberto que não possuíam interface SQL (linguagem universal de manipulação de dados, utilizada pelos bancos de dados relacionais). Este novo conceito é totalmente distinto do modelo relacional, e seria mais apropriadamente chamado de NoRelacional, porém o nome NoSQL, adotado, possui um efeito melhor (NVRSDQEF, 2010). Bancos de dados não relacionais, incluindo hierárquicos, gráficos e orientados a objetos estão em uso desde os anos 60. Entretanto, novos tipos de bancos de dados não relacionais estão sendo desenvolvidos, como os bancos colunares. Diferentes bancos de dados NoSQL tem diferentes abordagens, porém o que todos eles possuem em comum é que não são relacionais. A principal vantagem de um tipo de dados não relacional é que, diferente da abordagem tradicional, eles lidam bem com dados desestruturados, tais como emails, dados multimídia e dados provenientes de mídias sociais (Leavitt, 2010). Além disso, a necessidade de melhorar o desempenho dos bancos de dados, e diminuir os custos de armazenamento e processamento de informações impulsionaram o desenvolvimento desta nova metodologia de banco de dados. O NoSQL lida bem com distribuição horizontal, ou seja, consegue ser distribuído entre várias estações para armazenamento de maiores quantidades de dados, e estes novos servidores não precisam ser de alto desempenho (NVRSDQEF, 2010). Esta nova abordagem é principalmente utilizada por empresas da web 2.0, com quantidades gigantescas de dados e infra-estrutura, como a Google e a Amazon. Eles desenvolveram Big Table e Dynamo, ambos bancos de dados NoSQL (Leavitt, 2010). De fato, um dos grandes utilizadores desta metodologia é a Google, que utiliza computadores de pequeno e médio porte para armazenagem e distribuição de dados, com utilização mais eficiente dos recursos e mais econômica. O armazenamento de dados destes bancos evoluiu conforme a necessidade da aplicação, com diferentes modelos de dados e capacidades. Os elementos básicos podem ser considerados “objetos”, “documentos” ou “registros”. Apesar dessas variações, podemos considerar como essência deste sistema: • A não existência de um esquema pré definido. Os dados podem possuir qualquer número de atributo de qualquer tipo. A falta de um esquema global facilita o 18 desenvolvimento de um banco de alta disponibilidade, pois não é necessário desativar o banco para efetuar alterações no esquema. • Estes sistemas possuem uma API (Interface de Programação de Aplicações) de buscas simples, o que, diferente dos bancos relacionais, encoraja buscas simples, sem necessidade de grandes uniões de tabelas. • A escalabilidade proporcionada pelos nós da rede. Diferente dos bancos de dados relacionais, que utilizam as propriedades ACID, bancos NoSQL promovem uma “consistência eventual”, ou garante a consistência dentro de um único objeto (ou documento ou registro). • Esta metodologia também permite alta disponibilidade, que é necessária para fazer com a que a escalabilidade entre diversas máquinas seja utilizável. Isto é alcançado através da identificação de falhas e de recuperação utilizando cópias de nós espelhos. A escalabilidade destes bancos tem seu preço: a aplicação deve poder operar com menores níveis de consistência garantida, sem transações que afetem vários registros. Estes bancos de dados são populares entre aplicações da web 2.0 pois estes programas normalmente operam com baixa (se houver) necessidade de consistência, sendo possível o suporte a decisão com dados mais antigos (Cattel, 2010). Os bancos de dados NoSQL são subdivididos pelo seu núcleo, ou seja, como ele lida com as informações que armazena. Os principais tipos de núcleo são: Key/Value Store, Document Store e Wide Columns Store (NVRSDQEF, 2010). 2.7.1 Armazenamento Key/Value Este modelo de armazenamento de dados é considerado o mais simples, o conceito é de uma chave e um valor que é armazenado por esta chave. Devido a sua simplicidade, é o modelo que possuir maior escalabilidade (NVRSDQEF, 2010). Esta abordagem pode ser considerada um HashTable gigante (um mapa ou dicionário, dependendo da linguagem de programação). As buscas podem ser efetuadas apenas pelo valor da chave (WCS, 2010). 19 O banco de dados SimpleDB, da Amazon, é uma implementação desta metodologia. Ele prove funções de indexação de informações e buscas na web 2.0. Ele possui uma interface simples para persistência de dados e acesso (Leavitt, 2010). FIGURA 6- TABELA KEY/VALUE (TERMEHCHY,2010) Na figura 6 podemos observar um exemplo de tabela Key/Value. Este modelo de banco de dados é bastante utilizado para aplicações para grandes aplicações de Web Service. As chaves (Keys) são únicas, e cada uma aponta para um conjunto de valores (Termehchy, 2010). 2.7.2 Armazenamento de documentos Este modelo armazena e organiza os dados como uma coleção de documentos, ao invés de tabelas estruturadas, com campos e valores predefinidos para cada registro. Com este tipo de banco de dados, o programador é livre para adicionar quantos campos forem necessários de qualquer comprimento ao documento (WCS, 2010). As buscas em modelo de armazenamento de documentos podem ser efetuadas pelo valor de suas chaves ou por qualquer um dos valores contidos dentro de seu documento, como buscas por XPath ou métodos “query by example” (WCS, 2010). O banco de dados CouchDB, da Apache Software Foundation, é um exemplo desta metodologia, escrito em Erlang e open source, que pode ser acessado por qualquer browser (Leavitt, 2010). 20 FIGURA 7- UM DOCUMENTO (SIEERA,2004) A figura 7 demonstra uma rede de metrô e um documento utilizado para buscas de rotas nesta rede. Nota-se que cada atributo possui a tag inicial e final. Todo o documento fica entre a tag inicial <Subway> e a tag final </Subway> (Sieera, 2004) 2.7.3 Armazenamento de grandes colunas Este tipo de armazenamento é baseado no documento “BigTable: A distributed Storage System for Structured data”(Chang, 2006). Vários projetos, além do próprio BigTable, implementam este conceito. Estes bancos de dados suportam um grande número de colunas por linhas, permitindo buscas pelos valores das colunas, colunas que contém lista de valores e/ou sub-colunas e linhas com variáveis de coluna (WCS, 2010). Esta metodologia tem como principal banco o “Big Table”, da Google. Várias aplicações desta companhia utilizam seu banco de dados NoSQL para armazenar seus dados. Dentre estas aplicações, destaca-se o Google Analytics, um programa que tem 21 como finalidade auxiliar webmasters a analisar o acesso a seu website. Através desta ferramenta, o webmaster consegue inferir diversos dados a respeito dos visitantes do website. Duas das principais tabelas utilizadas por esta aplicação utilizam banco de dados NoSQL: A tabela de ‘clicks brutos (raw click table)’ e a tabela de sumário, que juntas possuem aproximadamente 220TB de informações são armazenadas com este modelo de dados criado pelo Google (Chang, 2006). 2.7.4 Bancos de dados Orientados a coluna Em uma arquitetura orientada a colunas, o valor de cada coluna (atributo) é armazenado em seqüência, aumentando a performance da leitura de uma única coluna. Com este modelo de armazenamento, o banco de dados carrega em memória apenas os valores das colunas que serão utilizados, evitando preencher a memória com dados que não serão utilizados. Há duas formas que os bancos de dados colunares podem utilizar CPU para diminuir a utilização do disco rígido. Primeiro, eles podem codificar os dados para uma forma mais compacta (transformar os dados em bytes, ao invés de armazena-los em sua forma nativa). Em segundo lugar,em um armazenamento colunar, é mais simples para comprimir N valores, cada um de um tamanho K bits, em um espaço N * K bits (Stonebraker, 2005). 22 3 Business Intelligence Este capítulo apresentará a definição de Business Intelligence, o objetivo dessa aplicação e irá fazer uma breve introdução à suíte de BI Pentaho. Este capítulo está organizado como segue: A seção 3.1 introduz o conceito de Business Intelligence, a seção 3.2 define uma aplicação de BI e a seção 3.3 apresenta o aplicativo Pentaho. 3.1 Business Intelligence Na ultima década a área de Tecnologia da Informação (TI) ganhou grande importância nas empresas, a ponto de alguns especialistas estimarem que aproximadamente metade do capital aplicado pelas empresas tem como destino o departamento de TI. O crescimento de grandes empresas deste setor, tal como SAP, Oracle, Microsoft, IBM, Cisco e Dell, entre outras, comprova o grande investimento das companhias neste setor. Grande parte deste investimento foi destinado a sistemas que permitam o controle das operações diárias, e a geração de relatórios mais freqüentes e volumosos. Estes sistemas tornam estas empresas ricas em dados, porém pobres em informação. Em outras palavras, apesar de possuírem uma grande base de dados, falta a estas companhias ferramentas para tornar estes dados em informações úteis, necessárias para melhorar a produção e aumentar os lucros da companhia. Business Intelligence (BI) é a resposta a esta necessidade. Quando bem implementado, aplicações de BI tem um enorme potencial para aumentar a renda e melhorar o controle da companhia sobre si mesma, através das informações armazenadas (WILLIAMS, 2007). 23 3.2 Definição Business Intelligence pode ser definido como um conjunto de modelos matemáticos e métodos de análise que através da análise sistemática de dados, resulta em informações e conhecimento útil na tomada de decisão (VERCELLIS, 2009). BI combina produtos, tecnologias e métodos para organizar informações chaves que os gerentes necessitam para melhorar os lucros e o desempenho. Mais amplamente, BI é a inteligência e análise de negócios dentro do contexto dos processos chaves que levam a decisões e ações que resultam em um melhor desempenho para a empresa. Isto envolve informações de mercado e análise que é: • Utilizada em um contexto dos processos empresariais chaves; • Suporta decisão e comportamento; • Levam a melhores desempenhos dos negócios. Para empresas, o foco primário é o aumento de receitas e/ou reduzir custos, através da melhora da performance e aumento do lucro. Para o setor público, o foco primário é servir aos cidadãos, lidar com suas restrições e usar os recursos disponíveis sabiamente para servir aos objetivos do governo (WILLIAMS, 2007). As metodologias de BI são interdisciplinares e amplas, abrangendo diversos domínios de aplicações. Elas se preocupam com a representação e organização do processo de tomada de decisão; com a coleta e armazenamento de dados com o propósito de facilitar o processo de decisão; com modelos matemáticos para otimização e mineração de dados, além de auxiliar operações de busca e de estatísticas; e finalmente, estão ligadas a diversos domínios de aplicação, tal como marketing, logística, finanças, serviços, e administração pública (VERCELLIS, 2009). Estas aplicações tendem a promover uma abordagem racional e científica para o gerenciamento de companhias e organizações complexas. Mesmo o uso de planilhas eletrônicas, tais como o Microsoft Excel, para avaliação dos efeitos resultantes na variação da taxa de desconto, apesar de sua simplicidade, requer na parte de toma de decisão uma representação básica dos fluxos financeiros (VERCELLIS, 2009). Uma aplicação de BI oferece informações de tomada de decisão e conhecimento derivado de processamento de dados, através da aplicação de modelos matemáticos e algoritmos. Em alguns casos, estas aplicações podem consistir apenas de cálculos totais 24 e porcentagens, enquanto análises mais desenvolvidas fazem o uso de modelos avançados de otimização, aprendizagem indutiva e previsão (VERCELLIS, 2009). Os usuários de uma aplicação de BI observam o desenvolver da companhia. Eles contabilizam, através da ferramenta, o número de vendas por semana, comparam estas vendas com as das semanas anteriores, observam as tendências dos consumidores e suas reclamações. Usuários de um DW (Data Warehouse) praticamente não lidam com dados isolados (uma única linha de registro do banco). Na verdade, seus questionamentos normalmente fazem com que centenas de milhares de linhas de uma tabela sejam buscadas e compactadas em um conjunto de respostas. Além disso, os questionamentos que são feitos à ferramenta estão mudando constantemente (KIMBALL, 2002). 3.2.1 Objetivos de uma aplicação de BI Os objetivos que devem ser alcançados com a implantação de uma aplicação de BI na empresa são: • Tornar a informação da organização de fácil acesso. O conteúdo da aplicação de BI deve ser de fácil entendimento, de modo que o usuário consiga compreender os dados que constam na ferramenta, não apenas o desenvolvedor (KIMBALL, 2002). • A informação deve ser apresentada consistentemente. As informações disponibilizadas na aplicação devem vir de várias fontes dentro da mesma organização, ser compactada e disponibilizada aos usuários apenas quando for de utilidade para o mesmo (KIMBALL, 2002). • A aplicação deve ser adaptativa e preparada para mudanças. As necessidades do usuário, do negócio, da companhia estão sujeitas a alteração com o passar do tempo. A aplicação deve ser projetada de modo a estar preparada para estas mudanças necessárias para adaptar a aplicação à necessidade da empresa (KIMBALL, 2002) • As informações devem ser armazenadas em um ambiente seguro. A aplicação deve controlar o acesso a informações confidencias da companhia, e permitir 25 que apenas usuários devidamente autorizados possuam acesso aos dados crucias da empresa (KIMBALL, 2002) Como ilustrado anteriormente, aplicações de auxílio a decisão precisam além de auxiliar na parte estratégica do negócio, gerar informações em um tempo hábil, além de garantir que estas informações apenas estejam disponíveis à aqueles que necessitem utilizá-la. Operacional Analítico Propósito Executar um processo Avaliar um processo Estilo iteração Insert, update, delete, query Query Escopo iteração Transação individual Agregação Padrão query Previsível e estável Imprevisível Foco temporal Atual Atual e histórico Otimização Update concorrente Query Projeto ER na 3FN Star Schema ou Cubo Conhecido como OLTP Data Warehouse TABELA 4 - DIFERENÇA ENTRE SISTEMAS OPERACIONAIS E ANALÍTICOS (ADAMSON, 2010) A tabela 4 mostra que, enquanto sistemas cujo objetivo é o suporte a operação se focam na execução de um processo, baseando-se principalmente em transações individuais, sistemas analíticos tem como propósito avaliar um processo, e esta avaliação é feita principalmente utilizando-se a agregação. Esta mudança de paradigma abre oportunidades para diferentes modelos de dados serem utilizados pelo sistema de BI (Adamson, 2010). 3.3 Pentaho Pentaho é uma poderosa suite de BI que oferece diversas ferramentas: análise de dados, geração de relatórios, mineração de dados entre outras. Esta aplicação de BI é open source, ou seja, seu uso é gratuito e os desenvolvedores são livres para estudar e modificar seu código fonte (Bouman, 2009). 26 FIGURA 8- PENTAHO FIGURA 9- PENTAHO Conforme pode ser observado nas figuras 8 e 9, a utilização de uma aplicação de BI fornece, por meio de ferramentas gráficas, meios da equipe estratégica da empresa compreender os dados armazenados e tomar decisões importantes a respeito do planejamento futuro. 27 4 Ferramentas Utilizadas Este capítulo tem como objetivo apresentar as ferramentas que serão utilizadas durante a execução dos testes comparativos. Este capítulo está organizado como segue: a seção 4.1 apresenta o banco de dados relacional Mysql, a seção 4.2 apresenta o banco de dados colunar LucidDB, a seção 4.3 apresenta o software para medição de desempenho JMeter, a seção 4.4 apresenta o software Medidor de desempenho do Windows e a seção 4.5 apresenta o software de virtualização Oracle Virtual Box. 4.1 Mysql A versão 5.5 do Mysql introduziu uma arquitetura com melhorias de desempenho e de escalabilidade. Estas são algumas das melhorias que foram disponibilizadas a partir desta versão: • Melhoria de desempenho em ambientes Windows • Melhoria do controle de concorrência de threads • Controle da taxa de I/O (Escrita / Leitura) global das threads • Controle do uso de alocação de memória do sistema operacional Grande parte das melhorias que ocorreram na arquitetura do Mysql tem como objetivo uma performance mais transparente e ganhos de escalabilidade em plataformas heterogenias, especificamente em hardwares multi-CPU/core, arquiteturas de processamento paralelo (WNM, 2011). O SGDB relacional Mysql, que é de propriedade de Oracle, foi escolhido por ser um dos bancos de dados mais utilizados no mundo, devido a sua alta performance, confiabilidade e facilidade de uso, além de este banco de dados ser compatível com mais de 20 plataformas de software, incluindo Linux, Windows, Mac Os, Solaris, entre outros (Mysql, 2011). 28 4.2 LucidDB LucidDB é, até o presente momento, o primeiro e único banco de dados de código aberto construído especificamente para ser utilizado por aplicações de Business Intelligence e Data Warehousing. Seus componentes foram construídos com os requerimento de alta performance, flexibilidade, e um sofisticado processo de buscas (LucidDB, 2011). 4.3 Apache JMeter Apache JMeter é uma ferramenta open source disponibilizada pela Apache Foundation, e seu objetivo é efetuar testes de comportamento e performance em aplicações. Ele pode ser utilizado para testes em recursos dinâmicos e estáticos (arquivos, servlets, objetos Java, Bancos de dados, etc) (JMeter, 2011). Este aplicativo será utilizado pois é open source e ser um dos softwares mais utilizados para análise de aplicações. 4.4 Monitor de Desempenho do Windows O Monitor de Desempenho do Windows é um snap-in do Console de Gerenciamento Microsoft (MMC) que fornece ferramentas para analisar o desempenho do sistema. A partir de seu console, pode-se monitorar o desempenho de aplicativo e hardware em tempo real, personalizar que dados deseja coletar nos logs, definir limites para alertas e ações automáticas, gerar relatórios e exibir os dados do desempenho passado de várias maneiras. O Monitor de Desempenho do Windows combina varias funcionalidades, tais como incluir Logs e Alertas de Desempenho, Supervisor de Desempenho de Servidor e Monitor de Sistema. Ele fornece uma interface gráfica para a personalização dos Conjuntos de Coletores de Dados e Sessões de Rastreamento de Eventos (Microsoft, 2011). 29 Este software será utilizado visto que é nativo do Windows, e o mesmo possuir todas as funcionalidades que serão necessárias para análise das aplicações durante o teste. 4.5 Oracle Virtual Box VirtualBox é um produto de virtualização que pode ser utilizado para fins corporativos ou pessoais. Alem de ser uma ferramenta com diversas funcionalidades e um produto de alta performance, é atualmente a única solução profissional que é disponibilizada gratuitamente sobre a licença GPL (General Public License) (VirtualBox, 2011). Este software de virtualização foi escolhido pois o mesmo é gratuito, e possui uma interface simples e prática, principalmente para configuração do ambiente virtual. 30 5 Proposta de solução Este capítulo tem como objetivo definir quais critérios serão considerados na comparação entre os bancos de dados relacionais e NoSQL, e explicá-los. Este capítulo está organizado como segue: A seção 5.1 define os Sistemas Gerenciadores de Banco de dados utilizados para estudo, a seção 5.2 define a aplicação analisada, a seção 5.3 apresenta o ambiente de teste, a seção 5.4 define os testes que serão efetuados, a seção 5.5 apresenta os critérios que serão analisados em cada teste, e a seção 5.6 Definição dos softwares utilizados para execução e coleta de dados durante os testes. 5.1 Sistemas Gerenciadores de Banco de dados utilizados para estudo Para realização do estudo comparativo entre banco de dados relacionais e NoSQL na utilização por aplicações de Business Intelligence, foram selecionados dois SGDB’s: os banco de dados relacional Mysql e o banco colunar LucidDB. Será utilizada a última versão estável de cada um dos bancos de dados, a saber: Mysql versão 5.5.9 e LucidDB versão 0.9.3. 5.2 Definição da aplicação analisada Será utilizada a aplicação WCM (World Class Movies), uma aplicação de licença GPL para execução dos testes comparativos entre os bancos de dados. A aplicação WCM é uma aplicação fictícia criada pela equipe do Pentaho para demonstração do sistema. Por ter uma grande base de dados e que contempla dados de todo o processo de venda de um produto, esta aplicação será utilizada para efetuar o teste comparativo entre os bancos de dados. A WCM é uma empresa de locação e venda de DVDs, cujo mercado é formado pelas mais diversas classes sociais e faixa etárias. O sistema de locação / venda é 31 inovador, pois a transação é considerada uma locação caso o cliente devolva o filme após um período de tempo determinado, porém se ultrapassar este período é considerada como uma venda. A empresa iniciou suas atividades em Abril de 2000, e os dados de transações contemplam dados de todos os portais que fazem parte da aplicação. Além dos dados de vendas, a WCM também possui dados básicos sobre os filmes, como gênero, dados dos atores e diretores dos filmes (Bouman, 2009). 5.2.1 Definição do modelo de dados Será utilizado o modelo de dados do Data Warehouse da própria WCM para execução dos testes comparativos. A Figura 10 mostra o diagrama entidade – relacionamento das tabelas utilizadas. Os atributos das tabelas foram omitidos, visto que algumas tabelas possuem mais de 100 atributos. No Apêndice 1 há uma explicação sobre as tabelas que compõem este modelo de dados. FIGURA 10 - MODELO DIMENSIONAL DO DATA WAREHOUSE 32 5.3 Definição do ambiente de teste Os testes serão efetuados em um Notebook DELL, com as seguintes configurações: • 3Gb de Memória RAM • Processador Pentium Dual Core T4200 – 2.00GHz • 120GB HD • Sistema operacional Windows 7 Professional Para garantir condições idênticas de testes para ambos os bancos de dados, a execução dos testes será efetuada em máquinas virtuais, e cada máquina virtual terá a seguinte configuração: • Sistema operacional Windows XP Service Pack 2 • 10Gb de HD. • 1.5Gb de memória RAM. Em cada máquina virtual serão instalados apenas os softwares básicos necessários para execução dos testes e funcionamento do banco de dados sendo analisado. Será executado o script de inserção de dados da empresa WCM em ambos os bancos de dados. Não haverá nenhuma otimização de dados nas tabelas, ou seja, as tabelas serão criadas apenas com seus atributos comuns, sem adição de nenhum índice. As imagens podem ser disponibilizadas para futuros trabalhos baseados no presente estudo. 5.4 Definição dos testes Serão efetuados 4 queries (buscas) na base de dados, e cada uma destas buscas será repetida 200 vezes, e será utilizado para comparação a média dos resultados. As buscas que serão efetuadas irão simular consultas que podem ser efetuadas por um usuário comum de um sistema de Business Intelligence. 33 Os testes serão efetuados seqüencialmente, ou seja, a segunda busca só iniciará após a busca anterior ter sido executada 200 vezes, e assim sucessivamente até o final do teste. Durante a execução de cada querie serão coletados os dados necessários para posterior análise dos critérios definidos na seção 5.4. Serão efetuadas as seguintes buscas no banco de dados: • Qual gênero de filme gerou mais receitas no ano de 2008? • Como o lucro está evoluindo com o tempo? • Qual horário do dia os consumidores fazem mais locações? • Quão efetivas foram as promoções no ano de 2008? No apêndice 2 pode ser encontrado o script utilizado para execução das buscas acima em ambas as bases de dados. 5.5 Definição dos critérios analisados Durante a busca, serão coletados dados para análise e comparação dos bancos de dados de acordo com os critérios que seguem. 5.5.1 Desempenho Para comparação do desempenho, será considerado o tempo mínimo, máximo e a média do tempo necessário para as aplicações obterem os dados solicitados. Será considerado o banco de dados com melhor performance aquele que possuir o menor tempo médio de resposta. 34 5.5.2 Utilização de CPU Para comparação da utilização de CPU, será considerado a % de utilização do processador durante o processamento da requisição. Será considerado o banco de dados com o melhor uso de CPU aquele que utilizar a menor % de ciclos da CPU para processar a querie. 5.5.3 Uso de memória Para comparação do uso de memória, será considerada a quantidade de memória, em MB, livre durante o processamento da requisição. Será considerado o banco de dados com o melhor uso de memória aquele que a utilizar em menor quantidade durante o processamento da requisição. 5.5.4 Alocação das tabelas em disco Para comparação da alocação em disco, serão executadas queries nos metadados (dados sobre dados dos bancos de dados), a fim de se determinar o espaço em disco utilizado para armazenar os dados. Será considerado o banco de dados com melhor alocação em disco aquele que utilizar a menor quantidade para armazenamento das tabelas. 5.5.5 Desempenho utilizando menor quantidade memória RAM Serão realizados dois testes adicionais para verificação do comportamento dos bancos de dados com diferentes quantidades de memória RAM disponível. No primeiro teste, a quantidade de memória total será de 1000mb, enquanto que no segundo a 35 quantidade total será de 500mb. Neste teste serão efetuadas apenas 100 buscas da primeira querie (“Gênero com maior receita em 2008”), para verificar se houve alguma diferença no desempenho e na quantidade de memória livre (em % do total) em relação ao teste original, onde as máquinas possuíam 1500mb de memória total. 5.6 Definição dos softwares utilizados Durante a execução dos testes, serão utilizados os softwares que seguem para coleta de dados para posterior análise comparativa entre os SGDBs escolhidos. 5.6.1 Apache JMeter Será programado no JMeter para que cada uma das queries sejam executadas 200 vezes simultaneamente via JDBC. O JMeter irá salvar os dados de desempenho de cada querie em um arquivo de log, para análise posterior. 5.6.2 Monitor de desempenho do Windows O Aplicativo monitor de desempenho do Windows será utilizado para salvar os dados referentes à utilização de CPU e memória durante a execução dos testes. O monitor de desempenho será programado para obter a % de utilização da CPU e a quantidade (em megabytes) de memória livre no sistema a cada 15 segundos. Os dados obtidos serão armazenados em um arquivo de log para posterior análise. 36 5.6.3 Oracle Virtual Box Será utilizado o Aplicativo Oracle VirtualBox para criação dos ambientes virtuais onde serão realizados os testes definidos anteriormente. 37 6 Resultados Encontrados Este capítulo tem como objetivo apresentar os resultados encontrados na análise comparativa dos sistemas de banco de dados relacional e NoSQL na utilização por uma aplicação de Business Inteligence. Este capítulo está organizado como segue: A seção 6.1 apresenta os resultados encontrados durante a execução dos testes. 6.1 Resultados Encontrados Após a execução das queries em ambas as bases de dados, foram encontrados os seguintes resultados. 6.1.1 Análise comparativa do desempenho Os itens que seguem mostram os resultados encontrados durante a análise comparativa do o desempenho das aplicações durante a execução dos testes. Neste critério foi analisado o tempo mínimo necessário para o banco de dados fornecer o resultado esperado, o tempo máximo necessário para o banco de dados retornar os dados e o tempo médio necessário para os banco de dados enviarem os dados solicitados. Todos os resultados apresentados estão em Milissegundos. A diferença entre os valores apresentados foi calculada utilizando-se a seguinte fórmula: (Resultado com maior tempo / resultado com menor tempo) -1. 38 6.1.1.1 “Gênero com maior receita em 2008” Na análise comparativa de desempenho da primeira querie, foram obtidos os resultados que podem ser observados na tabela 5. Tempo Tempo Tempo Mínimo Máximo Médio Mysql 23569 33033 25312 LucidDB 3851 4669 4014 Diferença 512,02% 607,50% 530,67% TABELA 5 - ANÁLISE COMPARATIVA DO DESEMPENHO NA PRIMEIRA QUERIE Conforme pode ser observado na tabela 5 e na figura 11, o banco de dados LucidDB possui um desempenho superior que seu adversário, o banco de dados Mysql, em todas as queries efetuadas, em todos os quesitos. No tempo mínimo, ou seja, o melhor desempenho do banco de dados, a diferença entre os softwares analisados chega a ser superior a 500%. Nos campos tempo máximo (o pior desempenho do banco de dados para obtenção do resultado), a superioridade do banco de dados LucidDB para apresentação dos resultados é ainda maior, visto que há uma diferença de 600% entre os bancos de dados. Já no tempo médio, que leva em conta uma média simples (soma-se todos os resultados e divide-se por 200), nota-se que, em média, a diferença entre os sistemas chega a 530%, que é uma quantia considerável, visto que esperar 25 segundos para se obter um relatório é uma quantia de tempo muito grande, enquanto que a espera média de 4 segundos já é aceitável. A figura 11 mostra os resultados da tabela 5 em forma de gráfico, para melhor análise dos resultados apresentados. 39 FIGURA 11 - COMPARATIVO DO DESEMPENHO NA PRIMEIRA QUERIE Conforme pode ser observado na figura 11, a performance do banco de dados LucidDB manteve-se praticamente constante ao longo do tempo, enquanto a performance do Mysql foi bastante instável, havendo picos onde o resultado era apresentado com mais lentidão. 6.1.1.2 “Evolução do lucro” Os dados coletados durante a execução da segunda querie podem ser observados na tabela 6. Tempo Tempo Tempo Mínimo Máximo Médio 24748 27128 25549 LucidDB 2233 2774 2338 Diferença 1008,28% 877,94% 992,72% Mysql TABELA 6 - ANÁLISE COMPARATIVA DO DESEMPENHO NA SEGUNDA QUERIE 40 FIGURA 12 - GRÁFICO COMPARATIVO DO DESEMPENHO DA SEGUNDA QUERIE Analisando os dados que compõem a tabela 6 e da figura 12, podemos observar que o desempenho do banco de dados LucidDB foi novamente superior ao de seu adversário, o Mysql. O menor tempo do sistema NoSQL foi mais de 1000% mais lento que seu adversário, e no maior tempo houve uma diferença de 877% entre as performances. No tempo médio, que contempla o resultado das 200 buscas efetuadas, a performance do LucidDb foi 990% superior ao Mysql, apresentando um tempo médio de 2338 ms, contra um tempo médio de 25549 ms. Novamente observamos que o desempenho do banco de dados LucidDB foi praticamente constante ao longo do tempo, e que o desempenho do Mysql foi mais constante durante esta busca, se comparado com o resultado que este banco obteve no item 6.1.1.1. 6.1.1.3 “Horário com maior número de locações” Seguem, na tabela 7 e na figura 13, os dados referente a análise de performance de ambos os bancos de dados durante execução da terceira querie. 41 Tempo Tempo Tempo Mínimo Máximo Médio 29820 37518 30512 LucidDB 2273 3999 2402 Diferença 1211,92% 838,18% 1170,45% Mysql TABELA 7 - ANÁLISE COMPARATIVA DO DESEMPENHO NA TERCEIRA QUERIE FIGURA 13 - GRÁFICO COMPARATIVO DO DESEMPENHO NA TERCEIRA QUERIE Conforme podemos observar na tabela 7 e na figura 13, o desempenho do banco de dados LucidDB foi novamente superior ao seu adversário, o banco de dados Mysql. Nos três requisitos (Tempo mínimo, Tempo máximo e Tempo médio), a performance do banco de dados NoSQL foi significativamente superior ao banco de dados relacional, obtendo diferenças significativas (1211%, 838% e 1170%, respectivamente). 6.1.1.4 “Efetividade das promoções” Na tabela 8 e na figura 14, podem ser observados os dados de desempenho dos bancos de dados durante a última querie. 42 Tempo Tempo Tempo Mínimo Máximo Médio 16825 19264 17300 LucidDB 2494 5192 2599 Diferença 574,62% 271,03% 565,65% Mysql TABELA 8 - ANÁLISE COMPARATIVA DO DESEMPENHO NA QUARTA QUERIE FIGURA 14 - GRÁFICO COMPARATIVO DO DESEMPENHO NA QUARTA QUERIE Conforme pode ser observado na tabela 8 e na figura 14, apesar de a diferença entre os bancos de dados em ambos os requisitos serem menores nesta querie que nas três buscas anteriores, o banco de dados NoSQL ainda possui uma grande vantagem sobre o banco relacional. Os tempos mínimo e médio de busca do LucidDB ainda são significativamente superiores que o do banco Mysql, porem a diferença entre o tempo máximo, embora ainda seja superior (271% de diferença), a diferença é mais acentuada do que aquela que foi identificada nas queries anteriores (607%, 877% e 838% respectivamente). A análise do gráfico que contempla todos os resultados mostra que apenas as primeiras buscas do LucidDB ficaram fora do padrão de tempo apresentado, enquanto o banco de dados Mysql obteve sua performance mais constante nesta querie do que nas três anteriores, embora tenha um pico entre as queries 64 e 73. 43 6.1.2 Análise comparativa da utilização de CPU Os itens a seguir mostram os resultados encontrados durante a análise comparativa da utilização de CPU pelas duas aplicações durante a execução dos testes. Neste critério foi analisado apenas o uso médio de CPU dos processos. A diferença entre os dados analisados foi calculada utilizando-se a seguinte formula: Maior utilização de CPU – Menor utilização de CPU. 6.1.2.1 “Gênero com maior receita em 2008” A tabela 9 mostra os resultados encontrados referente ao uso de CPU na primeira querie. Média Mysql 99,94% LucidDB 99,98% Diferença 0,04% TABELA 9 - ANÁLISE COMPARATIVA DO USO DE CPU NA PRIMEIRA QUERIE Conforme podemos observar na tabela 9, a utilização de CPU por ambas as aplicações é praticamente idêntica, a diferença (0,04%) é praticamente nula. Analisando este gráfico podemos notar que o processador é o elemento limitante nas buscas em ambos os bancos de dados. 6.1.2.2 “Evolução do lucro” Na tabela 10, podemos observar a utilização média de CPU durante a execução dos testes. 44 Média Mysql 100,00% LucidDB 100,00% Diferença 0,00% TABELA 10 - ANÁLISE COMPARATIVA DO USO DE CPU NA SEGUNDA QUERIE Conforme observamos na tabela 10, a utilização de CPU de ambos os sistemas de banco de dados foi idêntica nesta busca, sem distinção do modelo de dados utilizado. 6.1.2.3 “Horário com maior número de locações” Na tabela 11 podemos observar os dados de uso de CPU durante a execução da terceira querie. Média Mysql 100,00% LucidDB 100,00% Diferença 0,00% TABELA 11 – ANÁLISE COMPARATIVA DO USO DE CPU NA TERCEIRA QUERIE Conforme podemos observar na tabela 11, a utilização de CPU de ambos os sistemas de banco de dados foi idêntica nesta busca, sem distinção do modelo de dados utilizado. 6.1.2.4 “Efetividade das promoções” Na tabela 12, podemos observar as dados referente a utilização de CPU na quarta querie. 45 Média Mysql 99,98% LucidDB 100,00% Diferença 0,02% TABELA 12 - ANÁLISE COMPARATIVA DO USO DE CPU NA QUARTA QUERIE Conforme podemos observar na tabela 12, nesta querie houve uma pequena diferença na utilização de CPU (0,02%) entre os bancos de dados, porem esta diferença é praticamente inexistente, e não podemos concluir nada com base apenas nela. 6.1.3 Análise comparativa da utilização de memória Os itens que seguem mostram os resultados encontrados durante a análise comparativa da utilização de memória pelos bancos de dados NoSQL e relacional durante a execução dos testes. Neste critério foi analisada a quantidade de memória livre. Foram coletados os seguintes dados: quantidade mínima de memória livre, quantidade máxima de memória livre e média da quantidade de memória livre durante a execução dos testes. A diferença entre os dados analisados foi calculada utilizando-se a seguinte fórmula: (resultado com maior utilização de memória / resultado com menor utilização de memória) - 1. 6.1.3.1 “Gênero com maior receita em 2008” A tabela 13 apresenta os dados referente a quantidade livre durante a execução da primeira querie. Menor Maior Média LucidDB 557 707 593,3333 Mysql 860 1013 917,1543 Diferença 54,40% 43,28% 54,58% 46 TABELA 13 - ANÁLISE COMPARATIVA DO USO DE MEMÓRIA NA PRIMEIRA QUERIE FIGURA 15 - COMPARATIVO DO USO DE MEMÓRIA NA PRIMEIRA QUERIE Conforme podemos verificar na tabela 13 e na figura 15, a quantidade de memória livre durante a execução do teste do banco de dados Mysql é maior do que a quantidade de memória livre durante a execução do banco de dado adversário, o LucidDB. Podemos notar que, em média, o banco de dados Mysql possui 54% a mais de memória livre que o banco de dados NoSQL. 6.1.3.2 “Evolução do lucro” A tabela 14 apresenta os dados referentes ao uso de memória durante a segunda querie pelas aplicações. Menor Maior Média LucidDB 574 604 589,7188 Mysql 837 893 873,3578 Diferença 45,82% 47,85% 48,10% TABELA 14 - ANÁLISE COMPARATIVA DO USO DE MEMÓRIA NA SEGUNDA QUERIE 47 FIGURA 16 - COMPARATIVO DO USO DE MEMÓRIA NA SEGUNDA QUERIE Conforme podemos verificar na figura 16 e na tabela 14, a quantidade de memória livre durante a execução do banco de dados relacional é maior que a de seu adversário, o banco de dados NoSQL. Verificamos que, em média, o banco de dados Mysql aloca 48% a menos de memória que o banco LucidDB, deixando esta memória disponível para outros aplicativos. Podemos observar na figura 16 que diferença entre os bancos é constante, tanto no menor uso, quanto no maior e na média. 6.1.3.3 “Horário com maior número de locações” A Tabela 15 apresenta os dados comparativos entre os bancos de dados LucidDB e Mysql durante o teste comparativo. 48 Menor Maior Média LucidDB 556 571 567,3125 Mysql 857 893 874,5577 Diferença 154,14% 156,39% 154,16% TABELA 15 – ANÁLISE COMPARATIVA DO USO DE MEMÓRIA NA TERCEIRA QUERIE FIGURA 17 - GRÁFICO COMPARATIVO DO USO DE MEMÓRIA NA TERCEIRA QUERIE Conforme podemos observar na tabela 15, novamente observamos que o banco de dados relacional possui uma quantidade maior de memória disponível que seu adversário, conforme tendência observada nos itens 6.1.3.1 e 6.1.3.2. A análise da figura 17 mostra que a diferença de memória disponível se mantém constante nos 3 critérios observados (menor, maior e média). 49 6.1.3.4 “Efetividade das promoções” A tabela 16 e a figura 18 mostram os dados referente a quantidade de memória disponível na ultima querie. Menor Maior Média LucidDB 547 560 Mysql 818 893 871,4701 Diferença 49,54% 59,46% 555,2 56,97% TABELA 16 - ANÁLISE COMPARATIVA DO USO DE MEMÓRIA NA QUARTA QUERIE FIGURA 18 - COMPARATIVO DO USO DE MEMÓRIA NA QUARTA QUERIE Conforme podemos observar na Tabela 16, o banco de dados Mysql possui uma maior quantidade de memória disponível durante sua execução, conforme tendência já observada anteriormente. A figura 18 nos mostra que, novamente, a diferença entre a quantidade de memória disponível durante a execução dos testes entre os bancos de dados se manteve praticamente constante nos 3 critérios analisados. 50 6.1.4 Análise comparativa da alocação das tabelas em disco A tabela 17 apresenta os dados referente a análise comparativa da uso de disco para alocação dos dados de ambos os SGDBs. Os dados apresentados encontra-se em MegaBytes (MB). A diferença entre o tamanho das tabelas foi calculada utilizando-se a seguinte formula: (Tabela com maior tamanho / Tabela com menor tamanho) -1. Tamanho Total das tabelas (MB) Mysql 251,74 LucidDb 145,65 Diferença 72,84% TABELA 17 - ANÁLISE COMPARATIVA DA ALOCAÇÃO EM DISCO FIGURA 19 - COMPARATIVO DA ALOCAÇÃO DOS DADOS EM DISCO Conforme podemos observar na tabela 17 e na figura 19, o banco de dados LucidDB utiliza melhor o disco para alocação dos dados, visto que o banco de dados Mysql utiliza 72% a mais de espaço em disco para alocar os mesmos dados. 51 6.1.5 Desempenho utilizando menos memória RAM A diferença entre os tempos foi calculada utilizando-se a mesma formula utilizada anteriormente, na seção 5.1.1 (Resultado com maior tempo / resultado com menor tempo) -1. 6.1.5.1 “Análise comparativa do desempenho dos bancos com 1000mb de memória total” A tabela 18 mostra os dados de desempenho dos bancos de dados quando a memória total do sistema foi reduzida para 1000MB. Máxima Mínima Média LucidDB 16761 3581 4170 Mysql 23466 24602 28840 Diferença 72,07% 555,29% 589,98% TABELA 18 - ANÁLISE COMPARATIVA DO DESEMPENHO COM 1000MB DE MEMORIA TOTAL Conforme podemos observar, ambos os bancos de dados tiveram uma piora em sua performance máxima (4669 e 33033 anteriormente, para os bancos LucidDB e Mysql, respectivamente). A figura 20 mostra a evolução do tempo de resposta ao longo da execução das queries. Podemos notar que após a primeira busca, o tempo de resposta diminui significativamente e é comparável ao resultado obtido utilizando 1500MB de memória RAM. 52 FIGURA 20 - ANÁLISE COMPARATIVA DO DESEMPENHO COM 1000MB DE MEMÓRIA TOTAL 6.1.5.2 Análise comparativa da quantidade de memória livre com 1000mb de memória total A tabela 19 mostra os dados referente a quantidade de memória livre(em MB) obtidos durante a execução do teste. Máxima Mínima Média LucidDB 342 149 189 Mysql 600 504 546 Diferença 75,44% 238,26% 188,86% TABELA 19 – ANÁLISE COMPARATIVA DA MEMÓRIA LIVRA COM 500MB DE MEMÓRIA TOTAL Conforme podemos observar na tabela 19, durante a execução dos testes pelo banco de dados Mysql, a quantidade de memória livre é maior que a quantidade de memória livre durante a execução dos testes no banco LucidDB, conforme tendência já observada no item 6.1.3. A figura 21 nos mostra a diferença entre os bancos de dados graficamente, ilustrando a grande diferença que existe entre os bancos na utilização de memória. 53 FIGURA 21- QUANTIDADE DE MEMÓRIA LIVRE DURANTE A EXECUÇÃO DOS TESTES COM 1000MB DE MEMÓRIA TOTAL 6.1.5.3 Análise comparativa do desempenho dos bancos com 500mb de memória total A tabela 20 apresenta os dados de desempenho dos bancos de dados quando a memória foi diminuída para 500MB. Máxima LucidDB 30479 Mysql 30961 Mínima 3564 Média 4213,15 24104 25366,99 Diferença 101,58% 676,32% 602,09% TABELA 20 – ANÁLISE COMPARATIVA DO DESEMPENHO COM 500MB DE MEMÓRIA TOTAL Conforme podemos observar na tabela 20, o tempo máximo de resposta do banco de dados LucidDB teve um aumento considerável, enquanto o tempo máximo do Mysql sofreu pouca alteração. O tempo mínimo e a média de cada banco de dados não sofreram diferenças significativas. 54 FIGURA 22 - ANÁLISE COMPARATIVA DO DESEMPENHO COM 500MB DE MEMÓRIA TOTAL Conforme podemos observar na figura 22, o tempo inicial do banco LucidDB foi superior ao banco de dados Mysql com esta quantidade de memória disponível ,porem nas outras buscas os resultados apresentados foram semelhantes a aqueles apresentados anteriormente. 6.1.5.4 Análise comparativa da quantidade de memória livre com 1000mb de memória total A tabela 21 mostra os dados referente a quantidade de memória livre (em MB) obtidos durante a execução do teste. Máxima LucidDB Mysql Mínima Média 45 2 20 192 75 118 Diferença 426,67% 3750,00% 602,41% TABELA 21 – ANÁLISE COMPARATIVA DA MEMÓRIA LIVRE COM 500MB DE MEMÓRIA TOTAL 55 Conforme podemos observar na tabela 21, a quantidade de memória livre durante a execução dos testes no banco de dados LucidDB é inferior a quantidade de memória livre durante a execução do banco relacional, em todos os critérios comparados. A figura 23 mostra a diferença encontrada na tabela 21 graficamente. Conforme podemos observar, a diferença do uso de memória entre os bancos é muito grande, conforme já observado anteriormente (itens 6.1.3 e 6.1.5.2) FIGURA 23- QUANTIDADE DE MEMÓRIA LIVRE DURANTE A EXECUÇÃO DOS TESTES COM 500BM DE MEMÓRIA TOTAL 56 7 Considerações finais Este trabalho efetuou a análise comparativa de banco de dados relacionais e NoSQL na utilização por aplicações de Business Intelligence. Este capítulo está dividido como segue: A seção 7.1 apresenta as contribuições e conclusões e a 7.2 apresenta os trabalhos futuros. 7.1 Contribuições e Conclusões As contribuições deste trabalho são: a) Estudo comparativo do desempenho dos bancos de dados LucidDB e Mysql com diferentes quantidades de memória RAM disponíveis, durante consultas utilizadas por aplicações de Business Intelligence. b) Comparação da utilização de CPU pelos bancos de dados LucidDB e Mysql durante consultas utilizadas por aplicações de Business Intelligence. c) Comparação da quantidade de memória utilizada pelos bancos de dados LucidDB e Mysql durante consultas utilizadas por aplicações de Business Intelligence. d) Comparação do espaço em disco utilizado pelos bancos de dados Mysql e LucidDB para alocação dos mesmos dados. A partir destas contribuições, pode-se concluir que: a) O banco de dados LucidDB apresenta um melhor desempenho que o banco de dados Mysql no caso de teste estudado. b) O banco de dados Mysql utiliza uma menor quantidade de memória RAM que o banco de dados LucidDB, e que ambos trabalham bem com pouca memória. c) Ambos os bancos de dados utilizam a capacidade máxima de CPU disponível, não havendo diferença nesse quesito. d) O banco de dados LucidDB armazena os dados em disco de forma mais eficiente, pois possui uma menor alocação de disco para os mesmos dados. 57 As seguintes experiências foram obtidas: a) Criação e configuração de ambiente virtual. b) Instalação, configuração e utilização de um banco de dados sem interface gráfica (LucidDB) c) 7.2 Utilização dos metadados dos bancos de dados Mysql e LucidDb Trabalhos Futuros As contribuições alcançadas com este Trabalho não encerram as pesquisas relacionadas a comparação de bancos de dados Relacionais e NoSQL, mas abrem oportunidades para alguns trabalhos futuros: a) Comparação de outras bases de dados b) Comparação utilizando um hardware mais potente c) Comparação do banco de dados NoSQL na utilização em aplicações que não seja de Business Intelligence. d) Comparação dos bancos em outros sistemas operacionais (Linux, Solaris) 58 8 Referencias Bibliográficas Bouman, R.; Dongen, J. V. Pentaho Solutions. WileyPublishing,Inc, 2009. ISBN 978-0-470-48432-6. 1st. ed. Indianapolis: WCS: Wide-Columns-Sore. 2010. Disponível em: <http://bluesoft.wordpress.com/tag/ wide-columns-store/>. Acesso em: 24 maio. 2011. Cattel, R. Relational Databases, Object Databases, Key-Value Stores, Document Stores, and Extensible Record Stores: A Comparison. ODBMs. 2010. Disponível em <http://www.odbms.org/download/Cattell.Dec10.pdf>. Acesso em: 12 jun. 2011. Chang, F; Dean, J; Ghemawatt, S; Hsieh, W C B;, Deborah A. W. M; Chandra, T; Fikes, A Gruber, R. E. Bigtable: A Distributed Storage System for Structured Data, 2006. - OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7 Codd, E. F. A relational model of data for large shared data Banks. Comunications of the ACM, v.13, e.6, Junho 1970. CPMBC: Cloudera presents the MapReduce bull case. 2009. Disponível em: <http://www.dbms2.com/2009/04/15/cloudera-presents-the-mapreduce-bull-case/>. Acesso em: 24 maio. 2011. FHH: Facebook, Hadoop, and Hive. 2009. Disponível em: <http://www.dbms2.com/2009/05/11/facebook-hadoop-and-hive/>. Acesso em: 24 maio 2011. HLIP: How Large Is a Petabyte. 2009. Disponível <http://gizmodo.com/5309889/what-is-a-petabyte/>. Acesso em: 24 maio. 2011. em: Horowitz, M. L. An Introduction to Object-Oriented Databases and Databases Systems, 1991. Disponível em: <http://reports-archive.adm.cs.cmu.edu/anon/itc/CMU-ITC103.pdf>. Acesso em: 24 maio. 2011. JMeter, 2011. Disponível em: <http://jakarta.apache.org/jmeter/>. Acesso em: 17 jul. 2011. 59 Kimball, R.; Ross, M. The Data WareHouse Toolkit. 2ª Edição. New York: Wiley Computer Publishing, 2002. ISBN 0-471-20024-7. Leavitt, N. Will NoSQL Databases Live Up to Their Promise? 2010. Computer, 12. ISSN: 0018-9162, pg. 12 – 14 LucidDB, 2011. Disponível em <http://www.luciddb.org/>. Acesso em: 24 maio. 2011. Machado, F. N.R. Banco de dados: Projeto e implementação. Brasil: Editora Erica, 2008. ISBN 978-85-365-0019-5. Microsoft, 2011. Disponível em <http://technet.microsoft.com/ptbr/library/cc749154(WS.10).aspx/>. Acesso em: 17 jul. 2011. Mynosql. 2010. Disponível em <http://nosql.mypopescu.com/post/407159447/ cassandra-twitter-an-interview-with-ryan-king/>. Acesso em: 24 maio, 2011. Mysql, 2011. Disponível em; <http://www.mysql.com/why-mysql/white-papers/>. Acesso em: 24 maio. 2011. NVRSDQEF: NoSQL, você realmente sabe do que estamos falando?, 2010. Disponível em <http://imasters.com.br/artigo/17043/ bancodedados/nosql_voce_realmente_sabe_do_que_estamos_falando/>. Acesso em: 24 maio. 2011. Sieera, J. L; Fernándes-Valmayor, A.; Fernándes-Majon, B.; Navarro, A.. ADDS: A Document-Oriented Approach for Application Development. Journal of Universal Computer Science, Volume 10, pages 1302-1324, 2004. Silberschatz, A.; Korth, H.. F., Sudarshan, S. Sistema de banco de dados, Rio de Janeiro: Editora Elsevier, 2006. ISBN: 978-85-352-1107-8. Stonebraker, M.; Abadi, D. J.; Batkin, A.; Chen, X; Cherniack, M.; Ferreira, M.; Lau, E.; Lin, A.; Madden, S.; O’Neil, E.; O’Neil, P.; Rasin, A.; Tran, N.;Zdonik, S. C-Store: A Column-oriented DBMS. 2005 - VLDB '05 Proceedings of the 31st international conference on Very large data bases. ISBN:1-59593-154-6 60 MT10AADW: My Top 10 Assertions About Data Warehouses, 2010. Disponível em <http://cacm.acm.org/blogs/blog-cacm/98136-my-top-10-assertions-about-datawarehouses/fulltext/> Acesso em: 24 maio. 2011. Teradata, 2008. Disponível em: <http://www.teradata.com/t/newsrelease.aspx?id=6375/>. Acesso em: 24 maio. 2011. Termehchy, A.; Winslett, M. Keywords Search Over Key-Value Stores. ACM, 2010. ISBN: 978-1-60558-799-8. Vercellis, C. Bussiness Intelligence: Data mining and Optimization for Decision Making, 1ª Edição. John Wiley & Sons Ltd, 2009. ISBN978-0-470-51138-1 VirtualBox, 2011. Disponível em: <http://www.virtualbox.org/> Acesso em 10 jul. 2011. Williams, Steve. Williams, Nancy. “The profit impacto of Business Intelligence”. Morgan Kaufmann Publishers, 2007. ISBN-13:978-0-12-372499-1 WNM: “What’s New in MySQL 5.5: Performance and Scalability”. Disponível em <http://www.mysql.com/why-mysql/white-papers/mysql-wp-whatsnew-mysql-55.php> Acesso em: 10 jul. 2011. 61 9 9.1 Apêndice Apêndice 1: Tabelas do modelo de dados Tabela dim_time: É a tabela dimensional que possui os registros com todas as horas existentes em um dia. Tabela dim_date: É a tabela dimensional que possui os dados de datas (sem hora), que alem de possuir a data em si, possui dados adicionais, como se é feriado, se é final de semana, o ano fiscal, etc. Tabela dim_customer: É a tabela dimensional onde são armazenados os dados dos consumidores da aplicação. Tabela dim_order_status: É a tabela dimensional que armazena os possíveis estados dos pedidos dos clientes. Tabela dim_promotion: É a tabela dimensional que armazena os dados referentes as promoções criadas pela empresa WCM. Tabela dim_warehouse: É a tabela dimensional onde ficam armazenados os dados sobre os armazéns da WCM. Tabela dim_website: É a tabela dimensional onde ficam armazenados os dados sobre os vários sites que compõem a aplicação WCM. Tabela dim_dvd_release: É a tabela dimensional onde ficam armazenados os dados sobre os DVD’s que são comercializados pela WCM. Tabela dim_demography: É a tabela dimensional que relaciona o grupo demográfico que um determinado cliente faz parte. Exemplo: entre 15 e 20 anos de idade, do sexo masculino e que ganha entre 10.000 e 20.000 doláres por ano (este é um registro da tabela). È utilizada para separar os clientes em grupos. Tabela dim_zipcensus: É a tabela dimensional que armazena os dados dos códigos postais (os ‘ceps’ dos clientes) e os dados de localização destes locais. Tabela fact_orders: É a tabela onde ficam armazenados os dados das locações/compras dos clientes, e o contexto (dimensões) que estas compras ocorreram. 62 9.2 Apendice 2: Scrips das buscas efetuadas nos bancos de dados Seguem abaixo as questões que o bancos de dados deveriam responder e os scripts utilizados para execução das mesmas: Qual gênero de filme gerou mais receitas no ano de 2008? select sum(fo.revenue), ddr.dvd_release_genre, dd.year4 from fact_orders fo, dim_dvd_release ddr, dim_date dd where fo.local_order_date_key=dd.date_key and fo.dvd_release_key=ddr.dvd_release_key and dd.year4='2008' group by dd.year4, ddr.dvd_release_genre; Como o lucro está evoluindo com o tempo? select sum(fc.revenue), dd.year4 from fact_orders fc, dim_date dd where fc.local_order_date_key=dd.date_key group by dd.year4 order by dd.year4; Qual horário do dia os consumidores fazem mais locações? select sum(fc.revenue), dt.time_hour from fact_orders fc, dim_time dt where fc.local_order_time_key=dt.time_key group by dt.time_hour order by dt.time_hour; Quão efetivas foram as promoções no ano de 2008? select sum(fc.revenue), dp.promotion_key from fact_orders fc, dim_promotion dp, dim_date dd where fc.promotion_key=dp.promotion_key and fc.local_order_date_key=dd.date_key and dd.year4='2008' group by dp.promotion_key order by dp.promotion_key;