ANA KARINA DE OLIVEIRA ROCHA ELMANO RAMALHO CAVALCANTI SÉRGIO CAVALCANTI DE PAIVA Banco de Dados Gerenciais Monografia submetida ao Professor Dr. Ulrich Schiel da disciplina de Modelos de Dados do Curso de Pós-Graduação em Informática da Universidade Federal de Campina Grande. Área de concentração: Ciência da Computação Linha de Pesquisa: Banco de Dados Campina Grande – PB Maio de 2007 1 SUMÁRIO 1. INTRODUÇÃO ............................................................................................... 8 2. MOTIVAÇÃO.................................................................................................. 9 3. FUNDAMENTAÇÃO TEÓRICA.................................................................... 11 3.1 Conceitos................................................................................................ 11 3.1.1 Dado x Informação ........................................................................... 11 3.1.2 Sistemas de Informações................................................................. 11 3.1.3 Data Warehouse .............................................................................. 12 3.1.4 Data Mart ......................................................................................... 13 3.1.5 Arquitetura do Data Warehouse ....................................................... 14 3.1.6 Sistemas de Suporte à Decisão ....................................................... 18 3.1.7 Business Intelligence........................................................................ 19 3.1.8. Modelagem de Dados ..................................................................... 20 3.1.9 Banco de Dados Relacional ............................................................. 22 3.1.10 Banco de Dados Multidimensional ................................................. 22 3.1.11 Análise Multidimensional................................................................ 23 3.1.12 OLTP.............................................................................................. 24 3.1.13 OLAP.............................................................................................. 24 3.1.14 Operações OLAP ........................................................................... 28 3.1.15 Modelagem Dimensional dos Dados.............................................. 29 3.1.16 Metadados ..................................................................................... 35 3.1.17 Ferramentas CASE (Computer Aided Software Engineering) ....... 36 3.1.18 SQL ................................................................................................ 37 3.1.19 Indexação....................................................................................... 39 3.1.20 XML................................................................................................ 39 3.1.21 XMLA ............................................................................................. 40 3.2 Aspectos na construção de um Data Warehouse................................... 41 2 3.2.1. Planejamento .................................................................................. 41 3.2.2 Necessidades das Empresas ........................................................... 42 3.2.3 Tipos de Sistemas de Informações na Empresa .............................. 45 3.2.4 Motivação da Empresa no Mercado................................................. 46 3.2.5 Necessidades e Benefícios para o Usuário...................................... 47 3.2.6 Perfil do Usuário na Empresa que Utiliza o Data Warehouse .......... 47 3.2.7 Análise do Ambiente Legado ........................................................... 50 3.2.8 Equipe de Desenvolvedores ............................................................ 52 3.2.9 Aspectos da Implementação Física (ROLAP/MOLAP)..................... 54 3.2.10 Performance................................................................................... 55 4. APLICAÇÃO................................................................................................. 57 4.1.1 Informação ....................................................................................... 60 4.1.2 Modelo ............................................................................................. 61 4.1.3 Meta-Modelo .................................................................................... 63 4.1.4 Meta-meta Modelo ........................................................................... 66 4.2 Modelagem Interna ................................................................................. 67 4.2.1 Diagrama Entidade Relacionamento................................................ 67 4.2.2 Relacionamento entre Entidades ..................................................... 68 4.2.3 Tabela do Banco de Dados Relacional ............................................ 69 4.2.4 Tabelas (ou relações, ou entidades) ................................................ 69 4.3 Modelagem Externa................................................................................ 70 4.3.1 Esquema estrela .............................................................................. 70 4.3.2 Cubo................................................................................................. 73 4.3.3 Recuperação da informação ............................................................ 75 5. CONCLUSÃO............................................................................................... 81 REFERÊNCIAS................................................................................................ 82 Apêndice A ....................................................................................................... 88 A.1 Estrutura................................................................................................. 88 A.2 Consultas MDX ...................................................................................... 89 3 LISTA DE FIGURAS Figura 1: Arquitetura do sistema de DW .......................................................... 14 Figura 2: Arquitetura em camadas ................................................................... 16 Figura 3: Granularidade em camadas .............................................................. 18 Figura 4: Exemplo de Drill-down e Roll-up ....................................................... 29 Figura 5: Exemplo de Slice............................................................................... 29 Figura 6: Exemplo de um Cubo Dimensional ................................................... 32 Figura 7: Exemplo de uma Estrutura Star Schema .......................................... 33 Figura 8: Exemplo de uma Estrutura Snow-Flake ............................................ 34 Figura 9: Tipos de Sistemas de Informação (Laudon e Laudon 1998)............. 45 Figura 10: Arquitetura do servidor OLAP utilizada. .......................................... 59 Figura 11: Diagrama de Objeto ........................................................................ 61 Figura 12: Diagrama de Classe........................................................................ 62 Figura 13: Modelo Entidade Relacionamento................................................... 68 Figura 14: Relacionamento entre Entidades .................................................... 69 Figura 15: Tabela no Banco de Dados Relacional ........................................... 70 Figura 16: Esboço do esquema estrela............................................................ 71 Figura 17: Esquema estrela da BD dimensional .............................................. 72 Figura 18: Povoamento do banco de dados..................................................... 75 Figura 19: Recuperação da informação ........................................................... 77 Figura 20: Avaliação dos Projetos por Departamento ...................................... 78 4 LISTA DE TABELAS Tabela 1: Comparação do Modelo OLTP com OLAP....................................... 25 Tabela 2: Relatório dos projetos por área temática e tempo ............................ 78 Tabela 3: Arquitetura ANSI/SPARQ ................................................................. 79 5 LISTA DE SIGLAS E ABREVIATURAS DSS Decision Support Systems EIS Executive Information System IDC International Data Corporation DW Data warehouse OLAP Online Analytical Processing SGBD Sistema Gerenciador de Banco de Dados MER Modelo Entidade-Relacionamento DER Diagrama Entidade-Relacionamento SGBDR Sistema Gerenciador de Banco de Dados Relacional SQL Structured Query Language OLTP Online Transaction Processing ROLAP Relacional OLAP HOLAP Híbrido OLAP MOLAP Multidimensional OLAP WOLAP Web OLAP DM Dimensional Modeling RDBMS Relational Data Base Management System CASE Computer Aided Software Engineering DDL Data Definition Language DML Data Manipulation Language DCL DIGITAL Command Language ISO International Organization for Standardization ANSI American National Standards Institute NIST National Institute of Standards and Technology 6 FIPS Federal Information Processing Standards RPC Remote Procedure Call IMS Information Management System VSAM Virtual Storage Access Method W3C World Wide Web Consortium SGML Standard Generalized Markup Language HTML HyperText Markup Language DTDs Document Type Definitions XML eXtensible Markup Language XMLA XML for Analysis MDX Multidimensional Expressions 7 1. INTRODUÇÃO A disseminação e o aperfeiçoamento dos produtos e metodologias para suporte dos bancos de dados gerenciais têm ocupado uma posição de destaque no cenário internacional, devido às pressões dos tempos modernos, as sucessivas reestruturações das organizações, e a necessidade cada vez maior de informações. Estes fatores tornam crítica a capacidade de gestão dos negócios, pois os métodos tradicionais de acesso e de análise dos dados, baseados na tecnologia de bancos de dados relacionais, embora consigam pesquisar e manipular grandes volumes de dados, ainda não permite analisar e entender, em tempo hábil, um imenso volume de dados [30]. Diante disto, surge o problema de supersaturação do mundo dos negócios, quando a obtenção de informações úteis sobre um grande volume de dados ultrapassa a capacidade de analisá-los. Assim, uma nova geração de técnicas, produtos e serviços que permitam a extração e manipulação automatizada de dados e descoberta de conhecimento, faz-se necessária. Neste contexto, vamos estudar um ambiente com informações consistentes e precisas, obtidas das mais variadas fontes de dados, representando uma nova maneira de visualizar a organização em âmbito estratégico e estrutural para suporte a decisão e compartilhamento de informações que é conhecido como Data warehouse. Na seção 4 realizaremos a modelagem de um sistema gerencial de acompanhamento de projetos acadêmicos, usando os conceitos de data warehouse. Em seguida, criaremos uma base de dados de teste e utilizaremos ferramentas OLAP para a verificação do sistema. 8 2. MOTIVAÇÃO O Data warehouse nasceu a partir do reconhecimento da importância do valor da informação nas organizações. Ele é um ambiente expansível e planejado para a análise de dados não voláteis. Estes dados são logicamente e fisicamente transformados, provenientes de múltiplas aplicações, atualizados e mantidos por um longo período de tempo, expressos em termos do negócio e resumidos para uma análise eficiente. Assim, um data warehouse é uma plataforma com dados integrados e qualidade melhorada para apoiar vários DSS (Sistema de Apoio de Decisão), aplicações de EIS (Sistema de Informação Executiva) e processos empresariais [15]. Em termos tecnológicos, um data warehouse é uma combinação de várias tecnologias, tendo como primeiro objetivo à integração efetiva de bases de dados operacionais em um ambiente que habilita o uso estratégico dos dados. Estas tecnologias incluem sistemas gerenciadores de banco de dados relacional e multidimensional, arquitetura cliente/servidor, modelagem de metadados e repositórios, interfaces gráficas para usuário, etc. Pode-se explicar a motivação para a construção de um data warehouse através de alguns pontos importantes citados pela IDC (International Data Corporation), que são [15]: • A habilidade em focalizar processos empresariais e efetuar uma análise financeira completa destes processos, assim como permitir as organizações tomarem decisões baseadas na compreensão do sistema como um todo ao invés de fazer estimativas duvidosas fundadas sobre dados incompletos. • A habilidade em racionalizar e automatizar o processo de construção de um repositório de informações integradas para uma empresa ao invés de desenvolver inúmeros sistemas de apoio à decisão e sua infraestrutura correspondente. • O preço do hardware e do software, bem como os custos de armazenamentos relacionados ao desenvolvimento, organização (deployment), 9 e manutenção de grandes repositórios de dados estão continuamente diminuindo. • Os benefícios de um data warehouse podem ser facilmente estendidos à tomada de decisões estratégicas, que podem trazer grandes e tangíveis benefícios. • A habilidade em entender e administrar simultaneamente macro e micro perspectivas de uma organização, que pode economizar incontáveis horas de trabalho manual das organizações e pode ajudar a evitar cometer enganos dispendiosos, que podem ser o resultado de suposições feitas sobre dados incompletos ou incorretos. 10 3. FUNDAMENTAÇÃO TEÓRICA 3.1 Conceitos 3.1.1 Dado x Informação Dado é um registro de fatos, conceitos ou instruções para a comunicação, recuperação e processamento por meios automáticos e apresentação na forma de informação compreensível para os seres humanos. Informações são dados que os seres humanos assimilam e validam para resolver problemas ou tomar decisões [13]. Dados são os componentes básicos, a partir dos quais a informação é criada. Informações são dados inseridos em um contexto. Contexto é a situação que está sendo analisada. A partir da informação vem o conhecimento, que permite tomar decisões adequadas, trazendo vantagem competitiva [18]. 3.1.2 Sistemas de Informações Segundo Mallack (2000), sistema de informações é um sistema que tem como propósito armazenar, processar e compartilhar informações. Lesca (1996) define sistema de informações como o conjunto interdependente das pessoas, da estrutura organizacional, das tecnologias de informação, dos procedimentos e métodos, que disponibilizam em tempo hábil, as organizações as informações necessárias para o seu funcionamento atual e para sua evolução. Já Laudon e Laudon (1998), definem sistema de informações como um conjunto de componentes inter-relacionados que coleta (ou recupera), processa, armazena e distribui informações para suporte ao controle e tomada de decisões nas organizações. Analisando-se as definições acima, conclui-se que o sistema de informações, na sua forma final, aborda todos os componentes da organização. 11 Neste sentido, busca-se um ambiente que forneça informações internas, informações externas, informações sobre as percepções do consumidor/cliente, que permite análises e simulações, enfim, um ambiente integrador das informações disponíveis e relevantes para o sucesso da empresa. [29]. Assim, o SI é um sistema a serviço da organização e de seus objetivos, devendo ser coerente e coordenado com todos os aspectos da organização. 3.1.3 Data Warehouse Data warehouse (armazém de dados) é um ambiente com informações consistentes e precisas, obtidas das mais variadas fontes de dados, representando uma nova maneira de visualizar a organização em âmbito estratégico e estrutural para suporte a decisão e compartilhamento de informações [2]. Ele apresenta as seguintes características básicas: • Orientado por temas: Refere-se ao fato do DW armazenar informações sobre temas específicos importantes para o negocio da empresa. Exemplos típicos de temas são produtos, atividades contas, clientes, etc. Em contrapartida, o ambiente operacional é organizado por aplicações funcionais. Por exemplo, em uma organização bancária, estas aplicações incluem empréstimos, investimentos e seguros. [13]. • Integrado: A integração mostra-se em muitas diferentes maneiras: na consistência e padronização de nomes, das unidades das variáveis, etc., no sentido de que os dados foram transformados até um estado uniforme. Por exemplo, considere-se sexo como um elemento de dado. Uma aplicação pode codificar sexo como M/F, outra como 1/0 e uma terceira como H/M. Conforme os dados são trazidos para o DW, eles são convertidos para um estado uniforme, ou seja, sexo é codificado apenas de uma forma. [13] • Não Volátil: Atualizações (inclusão exclusão e alteração) são feitas regularmente no ambiente operacional de um registro básico. Mas a manipulação de dados básicos que ocorre no data warehouse é mais simples. Tem somente três espécies de operações que ocorrem no data warehouse: a carga inicial do dado, o acesso ao dado e atualização temporal (semanal, mensal) conforme necessidades do negócio [13]. 12 • Histórico: Todo dado no data warehouse é exato em algum momento do tempo e em conseqüência desta informação, o dado criado no warehouse é dito ser "histórico". Os valores históricos dos dados no data warehouse são mostrados em várias maneiras. O modo mais simples é que o dado no data warehouse representa os dados sobre um horizonte de tempo distante - de 5 até 10 anos [13]. Uma coleção de bancos de dados integrados e orientados a assuntos projetados para apoiar as funções de um Sistema de Apoio de Decisão (Decision Support Systems); onde cada unidade de dados é importante em um momento no tempo. O data warehouse contém dados atômicos e muitas vezes sumarizados [13]. Data warehouse é uma arquitetura de banco de dados com informações de caráter gerencial voltado para: suporte à decisão, planejamento estratégico, análise do comportamento de clientes e análise da performance de vendas. Funciona como um provedor de informações de uma empresa ou instituição, pois concentra todas as informações estratégicas e históricas, extraídas dos sistemas transacionais relativos aos clientes e produtos. A proposta principal do data warehouse é a democratização das informações para a área de negócios, através do fácil acesso aos dados para análise [1]. 3.1.4 Data Mart Um data mart (mercado de dados) não é uma evolução de um data warehouse, mas sim parte das estratégias deste. Um data mart é um subconjunto de dados de um data warehouse, desenhado para suportar uma necessidade de negócio ou uma unidade organizacional específica. A estratégia correta é fazer o data mart incorporar-se à arquitetura de data warehouse, sem perder a visão de conjunto. Essa visão de conjunto é decorrência de um bom projeto de data warehouse [25]. O data mart é similar ao data warehouse com algumas exceções: • O data mart opera um conjunto menor de dados. • O data mart visualiza o dados com um enfoque departamental enquanto o data warehouse visualiza os dados com um enfoque corporativo. 13 • O data mart visualiza os dados em uma base muito mais previsível enquanto o data warehouse freqüentemente faz exploração na base de dados. Características comuns ao data warehouse e data mart são: informação estrutural, fonte de informação e outras informações encontradas ao longo do ambiente [13]. Obedece aos mesmos conceitos do data warehouse, diferenciando-se somente no conteúdo, ou seja, os dados são organizados por assunto, permitindo maior independência, agilidade e ganhos de performance [26]. 3.1.5 Arquitetura do Data Warehouse Podemos definir duas formas de apresentação da arquitetura de DWs, uma conceitual e outra física do modelo relacional que representa o sistema. 3.1.5.1. Visão Conceitual Figura 1: Arquitetura do sistema de DW Além do DW podem existir vários Data Marts (DMs), que separam os dados por setor dentro da organização. 14 Os dados contidos no DW e nos DMs são gerenciados por um ou mais servidores de warehouse, os quais apresenta visões multidimensionais dos dados para uma variedade de ferramentas front end. A visão multidimensional em forma de cubo de dados indica que as informações são visualizadas em linhas e colunas como o formato tradicional das planilhas, porém existem mais dimensões, sendo que o cubo teria apenas mais uma dimensão. Esta característica organiza e facilita a consulta aos dados de maneira que se pode ter, por exemplo, numa dimensão do cubo os meses do ano, na segunda dimensão estariam as cidades de origem dos clientes e na terceira dimensão o médico que encaminhou o cliente para o hospital [42]. 3.1.5.2 Visão em Camadas Camada de Bancos de Dados Operacionais e Fontes Externas: contém as bases de dados operacionais e também pode ser composta de informações de fontes externas, estes dados recebem um tratamento especial para poderem ser incorporados ao DW [42]. 15 Figura 2: Arquitetura em camadas Camada de Acesso aos Dados: compõe o elo de ligação entre as ferramentas de acesso à informação e os bancos de dados operacionais, comunicando-se com diversos Sistemas de Gerenciamento de Banco de Dados (SGBDs) e sistemas de arquivos, sendo que a este conjunto de características dá-se o nome de acesso universal de dados [42]. Camada de Transporte ou Middleware: tem a função de gerenciar a transmissão das informações pelo ambiente de rede que serve de suporte para o sistema como um todo, separando as aplicações operacionais do formato real dos dados, realiza ainda a coleta de mensagens e transações e se encarrega de entregá-las nos locais e nos tempos determinados [42]. Camada do Data Warehouse: constitui-se do armazenamento físico dos dados oriundos dos sistemas operacionais da empresa e externos, permitindo um acesso mais rápido e seguro aos dados do DW, além de prover maior flexibilidade de tratamento e facilidade manipulação [42]. Camada de Acesso à Informação: proporciona a interação com os usuários finais através de ferramentas visuais tradicionais, tais como sistemas de planilhas de cálculo, browsers, entre outras [42]. 16 Camada de Metadados (Dicionário de Dados): os metadados descrevem os dados e a organização do sistema, podem ser ainda fórmulas utilizadas para cálculo, descrições das tabelas disponíveis aos usuários, descrições dos campos das tabelas, permissões de acesso, informações sobre os administradores do sistema, entre outras [42]. Camada de Gerenciamento de Processos: faz o controle destas tarefas que mantêm o sistema atualizado e consistente, gerenciando as diversas tarefas que são realizadas durante a construção e a manutenção dos componentes de um sistema de DW [42]. Camada de Gerenciamento de Replicação: serve para selecionar, editar, resumir, combinar e carregar no DW as informações a partir das bases operacionais e das fontes externas, envolvendo programação bastante complexa, sendo que existem ferramentas poderosas que permitem processos sejam gerenciados de forma mais amigável, além do controle da qualidade dos dados que serão carregados [42]. 3.1.5.3 Estrutura Física dos Dados do DW A respeito da disposição física dos dados, o DW pode ter uma estrutura centralizada em um único local ou então ser implementado de forma distribuída. Se optarmos pelo primeiro modelo, o centralizado, teremos um warehouse consolidado e o Banco de Dados (BD) formará um DW integrado. Definindo o projeto desta forma pode-se maximizar o poder de processamento e acelerar os processos de busca por informações analíticas. Definindo-se uma arquitetura federativa, pode-se distribuir a informação por função, separando os dados do setor financeiro em um servidor, os dados de marketing em outro local, e dados de manufatura em um terceiro lugar. Existe ainda uma terceira metodologia, na qual considera-se uma arquitetura de DW separada por camadas, armazenando os dados mais resumidos em um servidor, dispondo os dados um pouco mais detalhados, em nível de detalhe intermediário, em um segundo servidor, e por fim colocamos os dados mais detalhados (atômicos) em um terceiro servidor. A figura 3 exemplifica esta metodologia [42]. 17 Figura 3: Granularidade em camadas O primeiro servidor geralmente atende à maior parte das consultas, sendo que teremos um menor número de pedidos de acesso solicitados para a camada 2 e camada 3. O dimensionamento dos servidores é o seguinte: na primeira camada podemos ter uma configuração para suportar um grande número de usuários que farão diversas consultas, as quais trabalharão com um volume relativamente pequeno de dados. Já os servidores das outras duas camadas devem ser configurados para permitir processar grandes volumes de dados, porém não é necessária uma preocupação em configurar o sistema para suportar o acesso de um número maior de usuários. Isto se explica pelo fato de que a maioria dos usuários terá suas perguntas respondidas pelas consultas iniciais da camada 1. Se algum usuário não se satisfizer com o nível de detalhe das respostas da camada 1, pode buscar maiores informações na camada 2 e até mesmo na camada 3. Concluímos então que poucos usuários farão acessos regulares à última camada, sendo que alguns nunca o farão além do nível inicial [42]. 3.1.6 Sistemas de Suporte à Decisão Um sistema utilizado para gerenciar decisões. Usualmente envolve a análise de muitos dados. Como regra, não envolve a atualização dos dados, 18 somente efetua consultas. Sistemas projetados para os executivos que se caracterizam pela análise de tendências. Enquanto o resultado de um data warehouse é a possibilidade de auxiliar no suporte a decisões, um DSS pode existir independentemente da arquitetura de data warehouse. Além disso, um DSS é uma solução isolada e que não inclui necessariamente uma arquitetura, uma infra-estrutura e nem mesmo ferramentas de administração ou auditoria, ao contrário de um data warehouse, que deve incluir todos esses componentes [25]. Contudo Mallack (2000) afirma que quando necessária uma arquitetura para sistemas de suporte a decisão, ou qualquer outro tipo de sistema de informação, esta deve contemplar: • interoperabilidade dos sistemas, de forma que as informações possam ser acessadas, fácil e rapidamente; • compatibilidade dos sistemas, permitindo que os recursos possam ser facilmente compartilhados e distribuídos através da organização; • expansibilidade dos sistemas, garantido que limitações em componentes de funções simples não criem obstáculos para o crescimento da organização. Dependendo da arquitetura que se pretende utilizar, existem diversas metodologias para a sua construção. 3.1.7 Business Intelligence É um processo de coleta, transformação, análise e distribuição de dados para melhorar a decisão de negócios; sua infra-estrutura tecnológica é composta de data warehouses ou data marts, ferramentas OLAP, EIS, data mining, consultas e relatórios e software de visualização dos dados; os bancos de dados são a infra-estruturas básica de qualquer sistema de business intelligence. São neles que vão estar armazenados os dados que serão transformados em informações competitivas [17]. 19 3.1.8. Modelagem de Dados Modelagem de dados é uma atividade na qual procuramos construir uma estrutura de dados que reflita a realidade e ao mesmo tempo seja facilmente manuseada por computadores para que os sistemas construídos a partir dela sejam estáveis e sofram o mínimo de manutenção possível. A modelagem é dividida em três etapas ou níveis: Conceitual, Lógico e Físico. Modelo Conceitual: É desenvolvido sem levar em consideração nenhum aspecto de representação lógica ou física dos dados, seja software, hardware ou visão particular de um usuário. É baseado em como funciona o negócio do cliente e ignora detalhes de implementação e performance [28]. Modelo Lógico: É desenvolvido levando-se em consideração a arquitetura de dados suportada pelo sistema gerenciador de banco de dados. Exemplo: Em Rede, Hierárquico, Relacional. Há a definição das tabelas, colunas e chaves. A meta é a redução de redundâncias para simplificação do gerenciamento e aumento da integridade [28]. Modelo Físico: O mapeamento físico leva em consideração características de hardware e software (SGBD) e estimativas de espaço e tempo (performance) [28]. O inicio para o plano de migração é um modelo de dados. O modelo de dados representa as necessidades de informação da corporação. Representa o que a corporação necessita não necessariamente o que a corporação atualmente possui. É construído sem consideração de tecnologia [12]. O Modelo Entidade-Relacionamento (MER) será a técnica de modelagem de dados utilizada para criação do Modelo Conceitual de Dados [9]. Esta técnica é usada para descrever o mundo real com alto grau de abstração, em termos de entidades (objetos de interesse), relacionamentos (forma como as entidades estão interligadas) e atributos (características das entidades e relacionamentos) [9]. O MER é composto por uma representação gráfica, o chamado Diagrama Entidade-Relacionamento (DER) e um conjunto de informações escritas sobre cada conceito representado (entidades, relacionamentos e atributos) [9]. 20 Apesar de ter surgido junto com a Análise Estruturada, o MER, por sua flexibilidade, foi evoluindo com o aparecimento de novas abordagens de desenvolvimento de sistemas (Engenharia da Informação, Análise Essencial, Análise Orientada a Objetos), e é considerada uma linguagem universal para a representação da realidade dos negócios de uma empresa [9]. Modelo de Dados: Estruturas de dados lógicas, providas por um sistema gerenciador de banco de dados utilizado para a representação dos dados [13]. Entidade: Armazena os dados de uma pessoa, lugar ou objeto de interesse em um alto nível de abstração [13]. Todo o objeto, coisa que tem alguma existência no negócio, na vida real. Não são tabelas, são implantadas como tabelas [23]. Relacionamentos: As ações ou fatos que integram as entidades no mundo real [23]. Modelo Entidade-Relacionamento (MER): Um modelo de dados que define entidades, o relacionamento entre entidades e os atributos que tem valores para descreverem as propriedades das entidades e/ou relacionamentos [13]. Diagrama de Entidade-Relacionamento (DER): Um modelo de dados de alto nível que demonstra, esquematicamente, todas as entidades dentro do âmbito de integração e a relação direta entre essas entidades [13]. Chave: Um item de dado ou combinação de itens de dados utilizados para identificar ou localizar uma instância de um registro ou algum agrupamento de dados similares [13]. Elas podem ser: • Chave Primária: Um atributo único utilizado para identificar um registro em um banco de dados. Uma ou mais colunas que unicamente identificam uma linha da tabela. Chaves primárias devem ser únicas e não nulas. • Chave Estrangeira: Uma ou mais colunas que referenciam à chave primária de outra tabela. • Chave Comum: Uma ou mais colunas que são freqüentemente utilizadas para relacionar tabelas. 21 Chaves não são o mesmo que índices. Uma chave pode ou não ser um índice. As chaves são definidas no projeto lógico enquanto índices são definidos no projeto físico para garantir performance e outras razões [6]. 3.1.9 Banco de Dados Relacional Um Sistema Gerenciador de Banco de Dados Relacional (SGBDR) mantém tabelas que são compostas por colunas que descrevem linhas de dados. Uma base ou banco de dados é uma coleção de dados relacionados e armazenados (freqüentemente com redundância controlada e limitada) de acordo com um esquema. Um banco de dados pode servir única ou múltiplas aplicações. Os atuais Sistemas Gerenciadores de Bancos de Dados Relacionais oferecem uma solução poderosa e eficiente para o processamento de grandes volumes de transações de uma grande variedade de aplicações comerciais e científicas [8]. 3.1.9.1 Tabelas Tabela é uma relação que consiste em um conjunto de colunas com um título e um conjunto de linhas. Coluna é uma tabela vertical onde são selecionados valores do mesmo domínio. Uma linha é composta de uma ou mais colunas. Em um banco de dados relacional, todos os dados estão em tabelas. Uma tabela mantém dados relacionados com uma classe particular de objetos (uma entidade). Tabelas são compostas por linhas e colunas. Existe exatamente um conteúdo de dado em cada coluna de cada linha [31]. 3.1.10 Banco de Dados Multidimensional Um sistema gerenciador de banco de dados especificamente projetado para suportar várias dimensões de dados em uma arquitetura três camadas. 22 Tipicamente não suportam SQL (Structured Query Language) diretamente e, atualmente, suportam um volume de dados significantemente menor que um Sistema Gerenciador de Banco de Dados Relacional. Entretanto, esse tipo de gerenciador de banco de dados pode ser uma excelente opção para uma implementação departamental se a funcionalidade que ele provê atende à demanda do usuário referente às informações do negócio [13]. “As pessoas falam da necessidade de separar a captura dos dados do acesso aos dados, em termos de bases separadas, movendo informações entre si, ao menos desde o início dos anos 80”, testemunha o especialista da IDC em data warehouse Henry Morris. O que mudou foi a maturação de várias tecnologias-chave: agora não é mais só o banco de dado relacional; mas SGBDR multidimensional, com características especiais para aumento de performance, como indexação bitmap, e novos esquemas para organizar e representar os dados, visando não somente a inserção rápida de novas transações, mas análise e consultas complexas [3]. 3.1.11 Análise Multidimensional Análise multidimensional é a habilidade em manipular dados que foram agregados em várias categorias ou dimensões. A proposta da análise multidimensional é auxiliar o usuário a sintetizar a informação da empresa através de uma visão comparativa, personalizada e projetada para a análise de dados históricos [13]. Algumas ferramentas de análise multidimensional possuem a habilidade em acessar dados em um sistema gerenciador de banco de dados relacional; outras requerem um esquema estrela (“star schema”) para facilitar o processamento multidimensional [13]. A visão multidimensional é muito mais útil para os analistas do que a tradicional visão tabular utilizada nos sistemas de processamento de transação. Ela é mais natural, fácil e intuitiva, permitindo a visão dos negócios da empresa em diferentes perspectivas e, assim, transformando o analista num explorador da informação [7]. 23 3.1.12 OLTP O Processamento Transacional Online registra todas as transações contidas em uma determinada operação organizacional. Por exemplo: sistema de transações bancárias registra todas as operações efetuadas em um banco. Transação OLTP consome poucos recursos; pesquisa quantidade reduzida de dados. Como resultado desta disciplina, o tempo de resposta de uma transação é bom (dois a três segundos são o normal) [13]. De maneira geral, um sistema aplicativo está focado na precisão dos processos operacionais [33]. 3.1.13 OLAP Processamento Analítico Online é um importante método na arquitetura do data warehouse na qual os dados podem ser transformados em informação. OLAP é uma categoria de tecnologia de software que permite a analistas, gerentes e executivos a obterem perspicácia em dados de uma forma rápida, consistente e com acesso interativo para uma grande variedade de possíveis visões da informação na empresa. Mais sucintamente, OLAP é um conjunto de funcionalidades que tem, como principal objetivo, facilitar a análise multidimensional [13]. OLAP representa um conjunto de tecnologias projetadas para suportar análise e consultas ad hoc (consultas efetuadas pelo usuário de acordo com sua necessidade momentânea). A característica principal dos sistemas OLAP é permitir uma visão conceitual multidimensional dos dados de uma empresa [7]. A criação do OLAP foi em decorrência da forte necessidade de análises dos dados de forma fácil e flexibilidade, mas ao mesmo tempo, analisando múltiplas visões do negócio em diferentes níveis de detalhes. Os bancos de dados multidimensionais foram a resposta para atender a essas necessidades analíticas. No início dos anos 90 começaram a surgir os primeiros protótipos de bancos de dados multidimensionais. Após alguns anos de aprimoramento da tecnologia, os bancos de dados multidimensionais foram 24 submetidos à análise de E. F. Codd e sua equipe em 1993. Codd então definiu 12 regras, padrões, homologou a tecnologia, e batizou os bancos de dados multidimensionais com o nome de OLAP (derivado do termo OLTP - que foi atribuído aos Bancos de Dados Relacionais no início da década de 1970, quando Codd definiu os padrões para modelo Relacional). A partir da homologação de Codd, a tecnologia começou a ser utilizada e conhecida em 1994, e os fornecedores da tecnologia criaram produtos com cada vez mais capacidade de armazenamento, bem como vários outros recursos para facilitar as análises. Começou então a utilização de Banco de Dados Multidimensionais como Data Marts entre 1995/96 e a tecnologia evoluiu a passos largos [5]. As bases OLAP podem ser acessadas/manipuladas através de aplicações personalizadas ou ainda via Internet/Intranet e aplicações pré-definidas para se fazer análises diversas. Abaixo há uma tabela comparativa: Operação típica OLTP Transação OLAP Análise Granularidade Atômico Agregado Temporalidade dos dados Presente Histórico, atual e projetado. Recuperação Poucos registros Muitos registros Usuários Muitos Poucos Orientação Registros Arrays Consulta Predefinida Ad-hoc Tabela 1: Comparação do Modelo OLTP com OLAP Essa tabela é apenas para dar uma idéia geral e será detalhada abaixo: Operação típica: No modelo OLTP são efetuadas transações, que podem ser, por exemplo, uma atualização de um registro, uma remoção, uma recuperação ou uma criação. Já no modelo OLAP os dados servem para ser analisados, por exemplo, saber qual foi o produto mais vendido há dois meses. [34] 25 Granularidade: No modelo OLTP os dados são tratados com o máximo de detalhamento, já no OLAP os dados estão agregados, ou seja, há um resumo dos dados. Esse resumo é o necessário para que sejam feitas análises. [34] Temporalidade dos dados: No OLTP o que importa são os dados atuais, por exemplo, se o preço de um produto passa de x para y então x é apagado e substituído por y. No OLAP o passado importa, pois os dados são utilizados para análise e previsões futuras, ambas atividades que necessitam de informações sobre o passado. Logo o modelo OLAP considera as informações atuais e também as informações anteriores, as quais no OLTP poderiam não mais existir. [34] Recuperação: No modelo OLTP geralmente poucos registros são recuperados em uma consulta. Por exemplo, o preço de um produto, os dados de um cliente. No OLAP vários registros são recuperados, por exemplo, a quantidade vendida de um dado produto em cada um dos últimos sete meses agrupados por cidade. [34] Usuários: No modelo OLTP existem muitos usuários utilizando o sistema ao mesmo tempo, porém com consultas mais simples. No OLAP existem poucos usuários com consultas mais complexas. [34] Orientação: O modelo OLTP é orientado a registros, termo que é muito comum em informática e geralmente significa uma linha em uma tabela de um banco de dados relacional. O modelo OLAP utiliza arrays, os quais são bons para representar dimensões, como, por exemplo, a dimensão tempo ou a dimensão lugar. [34] Consulta: No modelo OLTP os tipos de consultas que podem ser realizadas já são predefinidos, por exemplo, consultar o preço de um produto ou consultar o débito de um cliente. No OLAP as consultas são ad-hoc, ou seja, são definidas de acordo com os interesses de quem realiza a consulta, por exemplo, qual o total de vendas de um dado produto em cada um dos últimos três meses por cidade. [34] A tecnologia OLAP hoje é largamente utilizada na elaboração de Data Marts com desdobramentos para ROLAP/modelagem NxN no Relacional e HOLAP (Híbrido OLAP que combina OLAP com ROLAP) [5]. 26 A utilização de OLAP híbrido, o H-OLAP só é necessária quando se trata de bases muito grandes, de grande ocorrência em Varejo, Banco e Seguradoras [5]. 3.1.13.1 ROLAP Nos sistemas ROLAP (Relacional OLAP) temos uma base de dados relacional que será analisada de maneira multidimensional. A base de um desenho físico ROLAP é, tipicamente, uma combinação de dados apropriadamente normalizados em uma ou mais técnicas star schema [13].Esse trabalho poderá ser feito de duas maneiras: • Todo o processamento sendo feito no servidor do banco de dados. Esses servidores OLAP geram os comandos SQL em diversos passos e as tabelas necessárias para o processamento das consultas. • Todo o processamento dos dados sendo feito no servidor OLAP, mas o servidor dos dados executando os comandos SQL, inclusive os joins e agregações. Algumas outras características dos servidores ROLAP: • Uso de metadados que descrevem o modelo e servem também para o auxílio na construção de consultas. Com o uso dos metadados, um analista é capaz de executar consultas de maneira mais personalizada, buscando os dados e usando os critérios que achar mais conveniente. [43] • Capacidade de criar comandos SQL mais otimizados para o banco de dados com o qual trabalha. [43] A maior vantagem da adoção da tecnologia ROLAP está no fato de ser uma tecnologia já estabelecida e cuja arquitetura é aberta e padronizada, já que é relacional. Isso faz com que possa utilizar diversas plataformas, escalabilidade e paralelismo de hardware. [43] 27 3.1.13.2 MOLAP É qualquer análise multidimensional efetuada em um sistema gerenciador de banco de dados multidimensional [13]. MOLAP (Multidimensional OLAP) é uma classe de sistemas que permite a execução de análises bastante sofisticadas usando como gerenciador de dados um banco de dados multidimensional [7]. 3.1.13.3 HOLAP É um produto de OLAP híbrido que pode prover análise multidimensional simultaneamente de dados armazenados em um banco de dados multidimensional e em um banco de dados relacional [17]. 3.1.13.4 WOLAP Representa a migração da tecnologia OLAP para o ambiente da Internet (Web OLAP). Tem havido uma grande divulgação sobre o uso de Web browsers para acesso à OLAP, mas ainda são poucos os sites em funcionamento com o uso de OLAP. Segundo alguns institutos de pesquisa o OLAP baseado na Web será a chave para aplicações na Intranet e deverá oferecer um caminho simples e barato no acesso ao data warehouse [17]. 3.1.14 Operações OLAP Operações OLAP são as operações de pesquisa e exploração da informação no cubo de dados. São elas: • Slice and Dice: São operações de fatiamento do cubo de dados, permitindo sua visualização em segmentos, assim como a rotação do cubo buscando novas perspectivas de visão de dados. • Drill Down e Roll UP: É a capacidade de navegação aprofundando o nível de detalhamento dos dados, ou subindo este nível de detalhe conforme a hierarquia. 28 Figura 4: Exemplo de Drill-down e Roll-up Figura 5: Exemplo de Slice 3.1.15 Modelagem Dimensional dos Dados A modelagem dimensional é a técnica utilizada para se ter uma visão multidimensional dos dados. Nessa técnica, os dados são modelados em uma estrutura dimensional conhecida por cubo. As dimensões do cubo representam os componentes dos negócios da empresa, tais como “cliente”, “produto”, “fornecedor” e “tempo”. A célula resultante da intersecção das dimensões é chamada de medida e geralmente representa dados numéricos como “unidades vendidas”, “lucro” e “total de venda” [7]. Além dos componentes dimensão e medida, outro importante aspecto do modelo multidimensional é a consolidação dos dados, uma vez que para a tarefa de análise são mais úteis e significativos à agregação (ou sumarização) dos valores indicativos dos negócios [7]. O próprio desenho do data warehouse leva a novas perspectivas de projeto. Não há necessidade de modelagem na terceira forma normal. Na 29 prática, redundância de dados é bem-vinda nesse ambiente. Para muitos projetistas, é uma maneira diferente de modelar dados [33]. Modelagem Dimensional é um nome novo para uma técnica antiga usada para criar bancos de dados simples e compreensíveis. Quando um banco de dados pode ser visualizado como um “cubo” contendo até três, quatro, cinco ou mais dimensões, as pessoas conseguem visualizar este cubo em qualquer de suas dimensões. Outro nome para modelo dimensional é star join schema. Os projetistas de bancos de dados têm utilizado esse nome já há algum tempo para descrever modelos dimensionais porque o diagrama é semelhante a uma estrela com uma tabela no centro rodeada por tabelas auxiliares exibidas em um padrão radial [19]. Dimensional Modeling (DM) é uma técnica lógica de projeto muito utilizada nos data warehouses, diferente e oposta ao entity-relation modeling (ER). O DM é a única técnica viável para os bancos de dados projetados para suportar as consultas de usuário final de um data warehouse. O ER é muito útil na captura de transações e nas fases de administração de dados da construção de um data warehouse, mas deve ser evitado para o usuário final [4]. O DM é uma técnica lógica de projeto que busca apresentar os dados dentro de uma estrutura padrão e intuitiva, permitindo ainda o acesso de alto desempenho. Ele é inerentemente dimensional e adota a disciplina com algumas restrições importantes. Todo modelo dimensional é composto por uma tabela com uma chave de várias partes, denominado tabela de fatos e um conjunto de tabelas menores chamadas tabelas de dimensão. Cada tabela de dimensão possui uma chave de uma única parte, que corresponde exatamente a um dos componentes da chave de várias partes da tabela de fatos. Essa característica de estrutura de “estrela” também é chamada de star join. Este termo remonta os primeiros dias dos bancos de dados relacionais [4]. 30 3.1.15.1 Fatos São as medidas básicas de informações do negócio. Representa as quantidades e valores dos dados que podem ser agregados sem perderem seu significado. A tabela fato ou fact table armazena as medidas básicas objetos de análise do negócio. O dado na tabela fato é composto de elementos de dados organizados em um nível estruturado. Os valores destes elementos de dados podem ser sumarizados em uma variedade de formas sem por em risco a integridade dos dados [13]. A chave de uma tabela fato é a composição das chaves das tabelas dimensão. O resultado é que existirá uma linha na tabela fato para cada combinação única dos domínios de todas as chaves de todas as tabelas dimensão. Características: • Quantifica o dado que foi descrito nas tabelas dimensão. • Chave composta de combinação única de valores das chaves das dimensões. • Os valores da tabela fato são somente aditivos. • Sempre contém uma data. 3.1.15.2 Dimensões de um Cubo Descrevem ou caracterizam os dados relacionados e organizados na tabela fatos. As tabelas dimensão circundam a tabela fato. Representam as possíveis formas de visualizar e consultar os dados. Características: • Chave deve ser única. • Permitir gerenciar número de níveis de agregações. • Dimensão não precisa ser uma hierarquia, pode ser uma combinação de atributos. 31 Figura 6: Exemplo de um Cubo Dimensional 3.1.15.3 Agregações Agregações são sumarizações de dados com o objetivo principal de melhorar a performance de acesso. Geralmente armazenadas em tabelas fatos separadas [13]. Abstração de dados que, aplicada à modelagem conceitual de dados, permite que objetos venham a formar um novo objeto de mais alto nível. [28]. Agregações fornecem níveis múltiplos de detalhes do fato. Os resultados das queries (ou seus valores intermediários) são précalculados, o que melhora muito a performance [18]. As agregações podem ser acumuladas através de agrupamentos diferentes, freqüentemente através de várias dimensões ou combinação de dimensões [18]. O único aspecto mais importante de design de um data warehouse é o assunto da granularidade. Granularidade se refere ao nível de detalhe contido as unidades de dados no data warehouse. Quanto mais detalhamento há, mais baixo será o nível de granularidade. Quanto menos detalhamento há, mais alto o nível de granularidade. A razão por que granularidade é o assunto de design principal no ambiente de data warehouse é que afeta profundamente o volume de dados residente no data warehouse e ao mesmo tempo afeta o tipo de questão que pode ser respondida [12]. 32 3.1.15.4 Técnica Star Schema (Esquema Estrela) A técnica star schema pré-processa os dados em uma tabela fatos central com tabelas de dimensão relacionadas. As únicas chaves de cada tabela dimensão compõem uma chave combinação na tabela fatos. Os benefícios desta técnica são que os dados estão pré-processados em dimensões conhecidas e caracterizadas em um conjunto específico de necessidades de informação do negócio, tornando o acesso pelo usuário mais eficiente. Figura 7: Exemplo de uma Estrutura Star Schema Este modelo é composto por uma tabela com chave de múltiplas partes (dimensões) chamadas de tabela fato e de um conjunto de tabelas pequenas chamadas de dimensões, que formam as pontas das estrelas. Cada tabela de dimensão tem uma chave primária simples que corresponde a um dos componentes da chave múltipla da tabela fato. A princípio parece um modelo muito simples de ser construído, porém a determinação das dimensões e do fato tem necessidade de excelente entendimento conceitual para que se obtenha sucesso em uma implantação de data warehouse [23]. 33 3.1.15.5 Técnica Snow Flake (Floco de Neve) A técnica snow flake é uma variante do star schema com as tabelas dimensões normalizadas [23]. Figura 8: Exemplo de uma Estrutura Snow-Flake As hierarquias têm significado e importância dentro da análise multidimensional. No modelo star, elas estão todas em vista da desnormalização das entidades, um dos conceitos básicos de modelagem multidimensional. Um esquema alternativo é o esquema snow flake, onde normalizando as hierarquias encadeamos relacionamentos e entidades a partir das dimensões. A utilização de esquema snow flake depende da necessidade de otimizações no projeto físico ou nas queries realizadas. Lembramos que sempre um data warehouse tem como objetivo sistemas de apoio à decisão, que necessitam das mais variadas consultas [23]. Um esquema snow flake em nosso entendimento é somente uma alternativa de construção do modelo de dados multidimensional. Todo modelo snow flake pode rapidamente ser transformado em um star, bastando para isto relacionarmos as hierarquias diretamente às tabelas fato, desnormalizando-as completamente [23]. 34 3.1.16 Metadados São dados sobre dados. Descrição dos dados: estrutura, conteúdo, chaves, índices, detalhes, etc. Sem os metadados, o data warehouse e seus componentes associados seriam meramente componentes não integrados trabalhando independentemente e com objetivos distintos [13]. Para alcançar harmonia e unidade entre os diferentes componentes do ambiente projetado, deve haver uma técnica bem definida e rigorosa para desenvolver os metadados. Existem metadados para: • O ambiente operacional. • A camada de integração e transformação. • Porções detalhadas do data warehouse. • Depósitos de dados operacionais. • Data mart’s. • Ambiente de desenvolvimento. • Modelo do negócio da Empresa. Para atingir um grau de segurança na confiabilidade dos dados, o primeiro passo é catalogar os metadados com RDBMS (Relational Data Base Management System), plataforma, fontes de dados, tabelas, campos, índices, chaves primárias, chaves estrangeiras, stored procedures, parâmetros, programas – ou seja, o metadados contém todas as informações que explicam o funcionamento da base de dados [24]. Com os metadados catalogados, as estruturas de dados de todo o ambiente estarão sempre sendo verificadas. Portanto, a cada mudança que ocorra nas bases de dados transacionais, o administrador estará sempre sendo alertado, o que aumenta sua confiança na informação que estará sendo disponibilizada aos tomadores de decisão [24]. Importante utilizar metadados para descrever o modelo dos dados e para auxiliar na construção das consultas. Dessa maneira, um analista pode executar suas análises utilizando seus próprios termos [7]. 35 O Metadado é um dado sobre um determinado dado. Por exemplo: os metadados poderiam indicar se uma base de dados existe na corporação, quais atributos formam uma determinada tabela, características físicas de um determinado atributo, tais como: tamanho e formato, onde ele é utilizado, etc. As informações do metadado podem ser sobre os dados do legado, dados armazenados em data warehouse ou informações pertinentes a um catálogo. Estas informações são armazenadas em um repositório que tem o objetivo de documentar e administrar estes metadados e fornecer informações para reuso destes dados, melhorando a qualidade e produtividade da empresa [16]. Metadados é a mais importante regra no data warehouse e, é usado em vários aspectos: • É direcionado para ajudar na localização analítica do conteúdo no data warehouse para o DSS [13]. • É um guia para mapear os dados, como o dado é transformado do ambiente operacional para o ambiente do data warehouse [13]. • É um guia para o algoritmo usado para a sumarização entre dado corrente detalhado e o dado “lightly” sumarizado e o dado “highly” sumarizado, etc [13]. 3.1.17 Ferramentas CASE (Computer Aided Software Engineering) São ferramentas individuais que auxiliam o desenvolvedor de software ou gerente de projeto durante uma ou mais fases do desenvolvimento de software (ou manutenção). Uma combinação de ferramentas de software e metodologias de desenvolvimento estruturado. CASE pode auxiliar diretamente no projeto e suporte do desenvolvimento de sistemas e também provê gerenciamento da informação, documentação e controle de como desenvolver um projeto [11]. Alguns benefícios do CASE: • Reduz custos, especialmente manutenção. • Melhora a qualidade de software. 36 • Acelera o processo de desenvolvimento. • Incrementa a produtividade. • Tornam práticas as técnicas estruturadas. 3.1.18 SQL A Structured Query Language é uma linguagem padrão de acesso aos dados em bancos de dados relacionais independente de fornecedor. É dividida em três partes: linguagem de definição de dados (DDL), linguagem de manipulação de dados (DML) e linguagem de controle de dados (DCL). O padrão internacional é estabelecido pela ISO (International Organization for Standardization). A primeira normatização do SQL foi feita pela ANSI (American National Standards Institute) em 1986. O SQL/86 foi um subconjunto das implementações de SQL da IBM. A primeira norma da ISO saiu em 1989. A norma internacional vigente é a versão de 1992 (ISO/IEC 9075:1992(E), também conhecida como SQL92 ou SQL2). Ela se subdivide em 3 partes: Entry Level, Intermediate Level e Full Level. A maioria dos sistemas gerenciadores de banco de dados só implementa o Entry Level completamente. [28] Já existem trabalhos para o SQL/3 e SQL/MM (Multimídia) que devem implementar alguns conceitos da tecnologia de orientação à objeto. Um dos órgãos de certificação de conformidade dos produtos com a norma é o NIST (National Institute of Standards and Technology) que publica o FIPS (Federal Information Processing Standards) que contém uma lista de sistemas gerenciadores de banco de dados que tem conformidade com o padrão e em qual plataforma [28]. Uma linguagem que habilita o usuário a interagir diretamente com o sistema gerenciador de banco de dados para recuperar e/ou modificar dados gerenciados pelo mesmo. Características: • É uma forma padrão de especificar conjuntos de dados. • É uma forma de recuperar e manipular dados em um banco de dados relacional. 37 • É utilizada para todas as funções de bancos de dados, incluindo administração, criação de esquemas e recuperação. • Pode ser utilizada na forma de “SQL embutida” em um programa de aplicativo. 3.1.18.1 Stored Procedure Stored Procedure (SP) é uma técnica de projeto que permite que um conjunto de instruções SQL sejam compiladas e armazenadas no gerenciador de banco de dados. São rotinas chamadas por aplicações cliente de modo semelhante a RPC (Remote Procedure Call) e são armazenadas e executadas no servidor. A stored procedure fornece uma significante melhora de performance sobre o SQL utilizado diretamente na aplicação [28]. Uma stored procedure é uma coleção de comandos SQL armazenados no banco de dados e que pode ser executada pelo nome. Características: • Podem aceitar e retornar parâmetros e podem chamar outras procedures. • Processam mais rapidamente que os mesmos comandos SQL executados interativamente. • Reduzem o tráfego de dados na rede. • A primeira vez que uma stored procedure é executada, um plano de acesso é produzido no banco de dados. • Garantem a consistência do banco de dados. • Provêem um nível extra de segurança. • Sugerem o desenvolvimento de uma aplicação modular. • Reduz erro de operação. 38 3.1.19 Indexação É o conceito de índices de acesso. São estruturas de indexação destinadas a otimizar o acesso aos dados. É importante lembrar que em bancos de dados relacionais, uma chave nem sempre tem um índice associado a ela. Chaves são definições de nível lógico e os índices são estruturas físicas para melhorar a performance no acesso aos dados. Há dois tipos de índices: clustered index e nonclustered index. No clustered index os dados de uma tabela são ordenados fisicamente pelo índice. Ele tem um nível a menos de acesso em relação ao nonclustered. O índice nonclustered armazena os valores das chaves e ponteiros para as páginas de dados onde as linhas estão armazenadas [28]. Índice: Porção da estrutura de armazenamento de dados mantida para prover acesso eficiente a um registro quando seu conteúdo chave é conhecido. Índice Invertido: Uma estrutura de índice organizada por meio de uma chave não única que aumenta a velocidade de pesquisa aos dados [13]. Características dos Índices: • São utilizados para melhorar a performance. (se nenhum índice é definido a uma tabela, a tabela inteira deverá ser pesquisada para satisfazer uma condição de consulta) [6]. • Provêem um mecanismo para garantir a unicidade. • Clustered: O dado é classificado na ordem do índice. Somente pode existir um único índice clusterizado por tabela (geralmente é a chave primária). Determina a ordem física do dado na tabela [6]. • NonClustered: O dado não é classificado na ordem da chave. Podem existir vários índices associados à tabela (geralmente são as chaves estrangeiras) [6]. 3.1.20 XML A eXtensible Markup Language tem como propósito principal a facilidade de compartilhamento de informações através da Internet. 39 Estimulado pela insatisfação com os formatos existentes (padronizados ou não), um grupo de empresas e organizações que se autodenominou World Wide Web Consortium (W3C) começou a trabalhar em meados da década de 1990 em uma linguagem de marcação que combinasse a flexibilidade da SGML com a simplicidade da HTML. O principio do projeto era criar uma linguagem que pudesse ser lida por software, e integrar-se com as demais linguagens [36]. Sua filosofia seria incorporada por vários princípios importantes: • Separação do conteúdo da formatação. • Simplicidade e Legibilidade, tanto para humanos quanto para computadores. • Possibilidade de criação de tags sem limitação. • Criação de arquivos para validação de estrutura (Chamados DTDs). • Interligação de bancos de dados distintos. • Concentração na estrutura da informação, e não na sua aparência. O XML é considerado um bom formato para a criação de documentos com dados organizados de forma hierárquica, como se vê frequentemente em documentos de texto formatados, imagens vetoriais ou bancos de dados[36]. Pela sua portabilidade, um banco de dados pode através de uma aplicação escrever em um arquivo XML, e um outro banco distinto podem ler então estes mesmos dados [36]. 3.1.21 XMLA XML for Analysis é o padrão da indústria para acesso aos dados em sistemas analíticos, tais com OLAP e Data Mining. XMLA é baseado em outros padrões da indústria tais como XML, SOAP e HTTP.[37] Produtos que suportam XMLA são de duas categorias: • XMLA Providers: esses produtos XMLA provêem serviços. Tipicamente esses são servidores ou produtos meios. [37] 40 • XMLA Consumers: esses produtos podem conectar ao XMLA Providers e consumir XMLA. Tipicamente esses são clientes. [37] 3.2 Aspectos na construção de um Data Warehouse 3.2.1. Planejamento Um problema sério em projetos de data warehouse é um planejamento defeituoso. O fato de todos concordarem que o projeto de um data warehouse não se baseia em requisitos bem delimitados não significa que os projetistas não devam planejar minuciosamente cada atividade do processo. E mais, tal planejamento deve levar em consideração o fato de se tratar de um data warehousing mais que um data warehouse: um processo sem fim para todos os efeitos práticos. Deve ser considerado o longo prazo geralmente envolvido. Não se estará projetando uma aplicação operacional, mas sim um repositório de informações gerenciais [10]. A operação do negócio tende a uma estabilidade grande. Um aplicativo voltado para gerir essas atividades tende, portanto, a ser bastante estável, pelo menos quando comparado às necessidades de informação para a tomada de decisão. É aqui que a competitividade do mercado se faz sentir. As perguntas que os executivos precisam ver respondidas hoje para tomarem suas decisões podem ser substancialmente as de amanhã. Desse modo, um planejamento consistente deve prever liberações parciais de dados, em curtos intervalos, de maneira que o usuário cedo possa interagir com o ambiente, facilitando essa mudança inevitável de requisitos. Os planejadores devem identificar muito cedo os alvos do projeto e seus benefícios [10]. Recomenda-se que o data warehouse não comece muito ambiciosamente. O primeiro projeto não deve levar mais que nove meses para estar operacional e deve atingir basicamente as áreas de negócio mais importantes e que tragam retorno direto e tangível. Com o tempo, ele será refinado e aumentado em sua abrangência [32]. Um projeto de data warehouse deve ser conduzido com enfoque diferente de um projeto de aplicações tradicional. A primeira etapa é identificar os 41 objetivos da organização, sob a óptica de seus executivos. A empresa pretende crescer dentro de seu segmento de negócio? Ou pretende expandir seu market-share? Depois, são identificados os processos de negócio diretamente relacionados com esses objetivos. A seguir, definem-se as informações que são necessárias para suportar esses processos de decisão. Onde essas informações serão obtidas? As especificações técnicas aparecem no final, quando então se desenham as alternativas tecnológicas para a sua total implementação [33]. 3.2.2 Necessidades das Empresas No princípio havia sistemas simples de automação. Então vieram sistemas de banco de dados e sistemas on-line. Em um tempo muito pequeno o computador tinha achado seu modo de incorporar-se ao cotidiano das empresas. De quase nenhum computador nos anos cinqüenta para milhões de computadores de todo tipo e tamanho nos anos oitenta, o mundo da tecnologia explodiu além de qualquer previsão a uma taxa de crescimento que parecia ser impossível acreditar. Os sistemas de computação iniciais foram projetados para processar as transações diárias da corporação. Decisões imediatas eram o enfoque destes sistemas pioneiros. Com o advento dos primeiros sistemas, veio um subproduto de dados. Estes dados refletiam as atividades que estavam acontecendo e cresceram à medida que o tempo passava e de como o negócio era administrado [13]. Logo, a quantidade de trabalho exigiu manter as aplicações ao ponto em que 95% do trabalho era dedicado à manutenção de programas. Ao mesmo tempo em que o fardo de manutenção estava crescendo, os usuários finais estavam ficando frustrados com a inabilidade dos sistemas de informação da organização em responder às necessidades de informação. Caso após caso, os usuários finais sabiam que os dados de que eles precisavam estavam disponíveis, mas difíceis de serem obtidos. Ainda, em cada caso, o departamento de sistemas de informação dava uma ou outra justificativa do 42 porquê dos dados não poderem ser acessados. Usuários finais sentiam-se abandonados e frustrados [13]. Então, o data warehouse foi criado para transferir os dados do ambiente transacional, armazenando-os e organizando-os de forma que o usuário final poderia obter a informação pela qual tanto ansiava. Afinal, os dados estavam disponíveis em uma base para que o usuário processasse suas próprias consultas [13]. O data warehouse representou uma troca fundamental na concepção de sistemas de informação e introduziu alguns conceitos novos importantes: • Dados devem ser integrados através da empresa. • Dados sumarizados tem um grande valor para a organização. • Dados históricos são a chave para compreender os dados ao longo do tempo. • Metadados representam um papel muito importante na infra-estrutura do data warehouse. • Muito importante manter a precisão dos dados históricos com o passar do tempo. Além de resolver alguns problemas muito importantes para a corporação, a criação do data warehouse aliviou o fardo do programador de aplicação em tentar transformar o ambiente de sistemas legado em um sistema para a tomada de decisão. As solicitações dos usuários e a manutenção das aplicações, pela primeira vez, tornaram-se gerenciáveis [13]. O objetivo básico do data warehouse deve ser adicionar valor ao negócio. À medida que as regras do negócio são incorporadas às aplicações, exige-se rapidez cada vez maior nas respostas. O ambiente de negócios é crescentemente dinâmico. Responder com rapidez ao como, quando e quanto passa a ser decisivo para a empresa sobreviver e crescer nesse cenário [33]. As organizações hoje em dia estão enfrentando enormes pressões para prever informações de melhor qualidade para tomada de decisões, em formatos de fácil acesso e manipulação. Em poucas palavras, as empresas 43 precisam se tornar mais ágeis em sua capacidade de utilizar as enormes quantidades de dados no esforço de proporcionar melhor suporte ao cliente. Um data warehouse reconhece o valor estratégico do gerenciamento intencional do bem corporativo de dados. A ênfase no data warehouse reflete o reconhecimento de que a exploração de dados é o caminho para vantagem competitiva, novas oportunidades de negócios, e melhoria no serviço ao cliente. Ela também reconhece que os sistemas tradicionais de gerenciamento de base de dados estão geralmente assoberbados pelo enorme volume de dados que lhes são confiados. Como resultado, os sistemas de extração de informações que trabalham com a totalidade das bases de dados geralmente funcionam mal [35]. O data warehouse e a arquitetura associada a ele providencia o objetivo para lutar contra os mais variados desafios confrontados nos sistemas de informações gerenciais de hoje [13]. Em outras palavras, o data warehouse permite o gerenciamento para considerar resultados no contexto. Sem a armação do data warehouse e sua arquitetura associada é uma tarefa quase impossível formar sentido para os diversos resultados obtidos [13]. Os sistemas de informações (IS) gerenciáveis encontram a noção da arquitetura indispensável no movimento da corporação dentro de um mundo de processamento de informação efetiva. Em particular, o IS gerenciável usa a arquitetura como um guia para o gerenciamento, como o seguinte: • uso da armazenagem e aquisição. • tecnologia adequada com processamento necessário. • gerenciamento de orçamento. • mudança de tecnologia e plataforma. • informações derivadas do ambiente de produção. • determinação das responsabilidades organizacionais. • desenvolvimento de relatórios da arquitetura. • definição da interface entre as diferentes unidades organizacionais. 44 • gerenciamento de gráficos organizacionais como a responsabilidade no processamento da informação concernida. • gerenciamento do impacto na arquitetura no desenvolvimento do processo. Afinal, é antigo o enfoque por trás da idéias do depósito, galpão ou armazém de dados extraídos dos muitos sistemas de produção – geralmente “legacy systems” – das companhias: transformar o dado cru em informação, para obtenção de vantagem competitiva. [3] Data warehouse é entendido como uma “enabling technology”; uma tecnologia-meio, que favorece a tomada de decisões ao separar sistemas de informações para decisão dos dados de produção. Essa divisão dos dados permite, dizem os entusiastas, melhor alocação e administração de recursos; enquanto que a proliferação de ferramentas sofisticadas de acesso possibilita combinar várias fontes de dados de estruturas distintas e concretiza, assim, antigas promessas de gerência participativa e menor concentração de poder decisório [3]. 3.2.3 Tipos de Sistemas de Informações na Empresa Segundo Laudon e Laudon (1998), os sistemas de informações são classificados em quatro tipos, dependendo do tipo de problema organizacional que solucionam, conforme a figura abaixo. Figura 9: Tipos de Sistemas de Informação (Laudon e Laudon 1998) 45 Pirâmide com três níveis: [38] • 1º Nível é o Nível Estratégico: ESS – Sistema de Suporte aos Executivos: ajuda a gerencia sênior no planejamento das atividades de longo prazo. • 2º Nível é o Nível Tático: DSS – Sistema de Suporte a Decisão e MIS – Sistemas de Administração das Informações: suporta o monitoramento, controle, tomadas de decisão e avaliação das atividades da gerência intermediária. • 3º Nível é o Nível de Conhecimento: KWS – Sistema de Controle de Conhecimento e OAS – Sistema de Automação de Escritório: permite aos funcionários de escritórios a criação de produtos, racionalização de serviços e acompanhamento de fluxo de documentos na organização. • 4º Nível é o Nível Operacional: TPS – Sistemas de processamentos Transacionais: responde questões rotineiras e acompanha o fluxo das transações através da organização. 3.2.4 Motivação da Empresa no Mercado O verdadeiro impulso para a utilização da tecnologia de data warehouse começou quando as pessoas perceberam que as informações disponíveis no data warehouse poderiam ser utilizadas para a obtenção de vantagem competitiva. Esta informação apoiou a habilidade da corporação em atrair e manter parte do mercado, reduzir despesas e aumentar as vendas. Estes atributos elevaram o data warehouse para a vanguarda de sistemas de informação, tornando-o promissor tanto para o profissional técnico da informação quanto para o profissional da área de negócios [13]. Estamos vivendo o início da era da informação. Nela os grandes desafios são as integrações dos processos operacionais entre as empresas e o gerenciamento do negócio através da análise dos fatos para identificação de oportunidades [26]. 46 3.2.5 Necessidades e Benefícios para o Usuário A necessidade principal do usuário é a transformação dos dados em informações. Embora o seu uso ainda seja incipiente, alguns resultados positivos parecem demonstrar que realmente o data warehouse produz um alto retorno sobre o investimento. A grande vantagem de um data warehouse é permitir a tomada de decisões baseadas em fatos. Na verdade, ele busca disponibilizar à organização o grande volume de dados que foram e estão sendo armazenados em bases de dados operacionais, espalhadas por toda a empresa [32]. O principal resultado de um data warehouse é, indiscutivelmente, a facilidade dos gestores da empresa poderem tomar decisões rápidas, baseados em informações mais consistentes [32]. Levantamentos realizados junto a usuários em âmbito mundial e local atestam o sucesso dos projetos já implantados, nos quais os primeiros resultados apontaram para: aumento do tempo dos tomadores de decisão (decision makers) para a análise e tomada de decisão; eliminação de tarefas operacionais como pesquisa e identificação dos dados necessários ao processo decisório; melhor confiabilidade das informações devido à implantação de um elo integrador dos dados transacionais; racionalização do fluxo de informações da empresa; padronização dos conceitos de negócio e democratização das informações sobre o desempenho do negócio [24]. 3.2.6 Perfil do Usuário na Empresa que Utiliza o Data Warehouse O usuário, o formulador de perguntas, é o ponto mais crítico nos projetos de data warehouse. Idealmente, os usuários devem ser membros da equipe de projeto, desde o seu nascimento [10]. Os usuários finais do data warehouse tem alguns papéis específicos a cumprir. Estes geralmente dividem-se em duas categorias: Suporte aos Papéis e Tipos de Usuário [13]. Suporte aos Papéis: 47 Cada interação do data warehouse deve ter um “Patrocinador Executivo” da área de negócios da comunidade usuária que serão os primeiros beneficiários da funcionalidade destas interações. O Patrocinador Executivo é especialmente importante para o data warehouse. Ele define o escopo e requisitos do negócio e analisa as necessidades de informação da organização para a tomada de decisão. Existem, também, dois importantes papéis adicionais na comunidade de usuários finais: Especialista do Assunto e Técnico de Apoio ao Usuário [13]. O Especialista do Assunto é quem facilita a comunicação entre os usuários finais e a equipe técnica do data warehouse. Provê as informações para definir o escopo de uma interação do data warehouse. Participa no projeto e revisão da aquisição e capacidade de acesso aos dados. Assiste o treinamento de outros usuários em seus grupos funcionais. Atua como suporte a outros usuários em suas áreas [13]. O Técnico de Apoio ao Usuário provê apoio técnico global para os usuários do seu departamento, grupo, linha de negócio, etc. Ele entende o ambiente técnico de uma área específica do data warehouse, presta apoio como administrador de banco de dados local e apoio técnico aos usuários locais [13]. Tipos de Usuário: São categorizados como: Usuários de Aplicações Pré-definidas, Usuários com Acesso Limitado e Usuários com Acesso Ilimitado [13]. Os Usuários de Aplicações Pré-definidas não possuem um nível alto de experiência técnica, mas estão, tipicamente, em um nível relativamente alto dentro da estrutura de administração de uma organização. Eles também são, freqüentemente, assistentes administrativos. Acessam o data warehouse através de consultas pré-definidas que atendem aos seus requisitos de negócio [13]. Os Usuários com Acesso Limitado são a maioria dos usuários analíticos. Requerem caminhos pré-definidos de acesso ao data warehouse como, por exemplo, uma ferramenta OLAP para facilitar o acesso e tem conhecimento em 48 drill-up/down. Tipicamente oferecem apoio aos pedidos de informação da administração superior [13]. Os Usuários com Acesso Ilimitado são os “exploradores”, altamente habilitados tecnicamente no acesso aos dados, precisam de ferramentas poderosas, procedurais e não ferramentas simples e limitadas. Freqüentemente desenvolvem aplicações para uso por outros tipos de usuários e, tipicamente, possui um número pequeno de usuários. Oferecem apoio às exigências organizacionais para relatórios complexos [13]. Pode parecer desnecessário identificar os papéis chaves que os usuários executam no desenvolvimento e gerenciamento de um data warehouse. Entretanto, muitas organizações não têm reconhecido a importância que os usuários exercem durante esse desenvolvimento e, conseqüentemente, perderam a visão da importância em conduzir a evolução do data warehouse através das necessidades de negócio do usuário. O resultado é normalmente um enfoque tecnológico ao data warehouse e não um enfoque do usuário, resultando em um ambiente de informação que não atinge as necessidades da organização para a análise e suporte à decisão [13]. De patrocinador da funcionalidade de negócio para um executivo que precisa monitorar as tendências em uma métrica importante do negócio; de perito de assunto para um usuário técnico altamente qualificado para a obtenção ocasional da informação, usuários têm papéis distintos e importantes a executar na evolução do data warehouse de forma que podem continuar satisfazendo suas exigências de informação sobre o negócio. Os usuários também tem uma responsabilidade significativa como “bons cidadãos corporativos” para trabalhar com a equipe do data warehouse para assegurarse de que o data warehouse continuará agregando valor à organização através de uma importante ferramenta tática e estratégica de análise e acesso à informação [13]. Um ingrediente essencial para o sucesso do ambiente do data warehouse é o fator humano. O melhor projeto e a melhor arquitetura no mundo não são bem usadas se não existirem pessoas capazes e preparadas para colocarem os planos em ação. 49 O ambiente do data warehouse é administrado por uma unidade organizacional chamada grupo de arquitetura de dados. O grupo de arquitetura de dados algumas vezes faz parte da administração de dados. [13]. Em outros casos, o grupo de arquitetura de dados permanece sozinho. Ele está próximo do grupo de sistemas ou do grupo de aplicações [13]. 3.2.7 Análise do Ambiente Legado Situada entre o ambiente operacional, o data warehouse e o depósito de dados operacionais está a interface de integração e transformação dos dados. Esta interface é o local onde o dados não integrados do ambiente operacional são integrados e enviados ao data warehouse [13]. As tecnologias de sistemas gerenciadores de bancos de dados que normalmente alojam as aplicações do legado mais antigas, usualmente requerem que os dados sejam acessados na forma de um registro por vez. Esta abordagem requer lógica de programa que é familiarizada com a maneira com que os dados são armazenados. Em muitos casos, o dados provenientes de muitas áreas de assunto diferentes são amarrados e controlados pelas aplicações. A execução da integração e transformação dos dados torna-se um problema complexo decorrente do grande volume de dados armazenados no ambiente de aplicações do legado. A integração e transformação dos dados a serem carregados no data warehouse são um dos aspectos mais importantes e devem ser cuidadosamente gerenciados [13]. Como todo o data warehouse depende dos dados disponíveis nas bases de dados operacionais da empresa, o primeiro passo para sua construção é o mapeamento dessas bases, sua limpeza e sincronização com as demais camadas. Para isso, é extremamente necessário conciliar em um único ambiente a administração de todas as bases de dados operacionais que são fonte de alimentação para o data warehouse com a administração do data warehouse em si [24]. Criar um data warehouse não é uma simples questão de escolha de banco de dados ou ferramentas, mas envolve planejamento e modelagem (aspectos que garantem a qualidade dos dados, fator crítico para o sucesso do 50 projeto), escolha de ferramentas e atualização e refinamento contínuos. É, de fato, uma arquitetura completa e que se compõe dos seguintes elementos principais: bases de dados operacionais, que são as fontes primárias das informações; processos de extração e conversão de dados; bancos de dados específicos para data warehouse; recursos de administração e ferramentas de inteligência de negócios, que facilitam o acesso, manipulação e análise dos dados contidos no data warehouse [25]. Um armazém de dados é composto de três áreas funcionais distintas, cada uma das quais deve ser customizada para satisfazer as necessidades do negócio. O primeiro componente é a aquisição de dados, podendo ser de sistemas legados ou de outras fontes quaisquer. Lá o dado é identificado, copiado, formatado e preparado para ser carregado no armazém. O segundo componente do armazém é o espaço de armazenamento e o terceiro é a área de acesso aos dados [27]. A busca pelas informações espalhadas pelas diversas aplicações e plataformas tecnológicas, pode ser um problema muito sério. Mesmo que as informações que vão preencher o data warehouse venham apenas de sistemas legados baseados em mainframes, o que nem sempre ocorre, a diversidade de tecnologias envolvidas é grande. Uma recente pesquisa mostrou que apenas 25% das informações desses sistemas estão em bancos de dados relacionais, como o DB2. A grande maioria está espalhada por bancos de dados não relacionais, arquivos VSAM, etc [32]. Um armazém de dados se propõe a compatibilizar um número grande de sistemas desintegrados oriundos do legado a uma coleção igualmente diversa de tipos de estações de trabalho de usuário final. Os ambientes existentes normalmente se compõem de um conjunto de hardware sortido, software e sistemas operacionais incompatíveis e com características únicas a cada organização [27]. A maioria dos “armazéns de armazenamento” está sendo administrada por bancos de dados relacionais sob plataformas Unix. De acordo com o Meta Group Inc., Oracle, Sybase Inc., IBM Corp. e Informix controlam 65% do mercado de “armazéns de armazenamento”; os vendedores de outros bancos 51 de dados relacionais e bancos de dados especializados são secundários nesse contexto [27]. Uma questão relevante será como integrar as diversas fontes de dados legadas ou não, arquivos VSAM, DB2, CA-IDMS, CA-DATACOM, OpenIngres, Oracle, Informix, Sybase e mais uma infinidade de outras fontes. A resposta: utilizando gateways que tenham as características de transparência e confiabilidade para sustentar o ambiente de data warehouse [20]. O assunto mais óbvio relativo à interface de integração e transformação refere-se às tecnologias utilizadas pelos sistemas transacionais encontradas no ambiente legado (às vezes chamado de ambiente fonte) como, por exemplo, as tecnologias que são, na maioria dos casos antigas, orientadas à transações e complexas: IMS (Information Management System) – um sistema gerenciador de banco de dados hierárquico desenvolvido pela IBM para ambientes mainframe, VSAM (Virtual Storage Access Method) – arquivo indexado desenvolvido pela IBM para ambientes mainframe, IDMS, Adabas, Oracle, Sybase, Informix, Arquivos Seqüenciais, etc [13]. 3.2.8 Equipe de Desenvolvedores O crescimento do data warehouse criou a necessidade de disciplinar o gerenciamento do mesmo que é o papel do administrador do data warehouse (DWA). O DWA é parte administrador de dados, parte administrador de banco de dados, deve posicionar-se um pouco como usuário final, um pouco programador de sistemas e muito de programador e projetista de aplicação [13]. O administrador do data warehouse é um disciplinador organizacional que apareceu com o advento do data warehouse e dos sistemas de apoio à decisão. Ele é o principal responsável pelo sucesso contínuo do armazém de dados [13]. O administrador do data warehouse deve conhecer as várias habilidades abaixo descritas: • Projetista da Base de Dados: projeta e constrói o data warehouse. 52 • Modelador de Dados: integra um novo data warehouse em um já existente. • Desenvolvedor: que mantém, nos programas, novas integrações e transformações de dados. • Político: solicita e negocia os recursos necessários para a construção do data warehouse. • Programador de Sistemas: capacidade de planejamento e refinamento do data warehouse. • Usuário final: deve entender as necessidades das áreas de negócio da empresa como, por exemplo, financeira, gerência de vendas, atuarial, engenharia, etc. Em alguns casos, o administrador do data warehouse não somente deve possuir as habilidades acima, mas estar apto a executá-las. Em suma, o administrador do data warehouse é responsável por um ambiente inteiro de suporte à decisão que é o fator crucial para o sucesso da corporação [13]. O Administrador de Data warehouse (DWA) é o responsável pelo data warehouse, envolvendo obter, agendar e coordenar o trabalho entre os recursos humanos, preparando relatórios de situação, orientando revisões de design, garantindo que membros de equipes de trabalho e usuários finais estão sendo efetivamente treinados, e gerenciando outras atividades relacionadas ao Data warehouse como especificado pela gerência da organização [13]. O Administrador de Banco de Dados é essencial na organização da equipe de data warehouse, em número suficiente e dedicados em tempo integral. As diferenças entre os sistemas de informação e operacional da empresa devem ser acompanhadas pelo Administrador de Banco de Dados [13]. O Gerenciador de Metadados deve assegurar que os metadados no Subdiretório de Informações está sincronizado com a produção de recursos, regras de negócio na obtenção de dados, e regras de negócio norteando o acesso dos dados, bem como fontes de conceito de metadados como ferramentas CASE e novas aplicações em desenvolvimento [13]. 53 3.2.9 Aspectos da Implementação Física (ROLAP/MOLAP) Quanto à localização dos dados a serem utilizados na análise, atualmente existem duas abordagens: • Um banco de dados multidimensional especializado. • Um data warehouse implementado com a tecnologia de banco de dados relacional, mas otimizado para a tarefa de análise: Nesse caso, os dados são modelados utilizando um esquema projetado para balancear desempenho e volume de dados. Normalmente é utilizada uma representação desnormalizada da conhecida por esquema estrela. Sistemas OLAP que implementam a primeira abordagem são chamados de MOLAP (Multidimensional OLAP) e aqueles que implementam a segunda são chamados de ROLAP (Relacional OLAP). Em um banco de dados MOLAP, os dados são mantidos em arranjos e indexados de maneira a prover um ótimo desempenho no acesso a qualquer elemento. O indexamento, a antecipação da maneira como os dados serão acessados e o alto grau de agregação dos dados fazem com que sistemas MOLAP tenham um excelente desempenho. Além de serem rápidos, outra grande vantagem desses sistemas é o rico e complexo conjunto de funções de análise que oferecem [7]. Existem algumas limitações nos sistemas MOLAP. Bancos de dados multidimensionais são sistemas proprietários que não seguem padrões (linguagem, Application Program Interface, etc.) estabelecidos pela indústria de banco de dados. Isso se torna uma desvantagem para tais sistemas, uma vez que a arquitetura não é aberta. A utilização das estruturas dimensionais adotadas também traz algumas desvantagens. Mudanças do modelo dimensional requerem uma reorganização do banco de dados, e a estrutura de cubos não suporta a criação ad hoc de visões multidimensionais. Além dessa falta de flexibilidade, sistemas MOLAP enfrentam problemas quanto à escalabilidade porque um dos recursos para garantir o excelente desempenho é manter os índices dos arranjos na memória e isso acaba limitando banco de dados multidimensionais a 20 ou 30 gigabytes de dados, tornando-se, dessa 54 maneira, mais apropriados para data marts ou organizações com pequenos data warehouses [7]. Sistemas ROLAP fornecem análise multidimensional de dados armazenados em uma base de dados relacional. A principal vantagem de se adotar uma solução ROLAP reside na utilização de uma tecnologia estabelecida, de arquitetura aberta e padronizada como é a relacional, beneficiando-se da diversidade de plataformas, escalabilidade e paralelismo de hardware [7]. Quanto às limitações, podemos citar o pobre conjunto de funções para análise, a inadequação do esquema estrela para atualização dos dados e as soluções proprietárias para metadados que acaba por anular muitas das vantagens da tecnologia relacional [7]. MOLAP ou ROLAP? Qual escolher? Atualmente existe um grande debate sobre essa questão e, se possível, esse debate deve ser deixado para os fornecedores. Para quem utilizará a tecnologia, o mais importante é entender os negócios da empresa para então decidir pela solução que melhor atende o volume de dados e as necessidades de análise da empresa. Provavelmente esse debate não terá um vencedor. Já se percebe que existe uma convergência dessas duas tecnologias. Fornecedores MOLAP têm adicionado funcionalidade ROLAP nos seus produtos e, igualmente, fornecedores ROLAP têm enriquecido a funcionalidade e desempenho de seus servidores. 3.2.10 Performance A duração de tempo desde o momento em que um pedido é emitido até o primeiro resultado recebido. A maioria das consultas dos usuários precisa ser processada rápida e eficientemente. O administrador do data warehouse é responsável pela performance de carga de dados, criação de índices e manutenção de metadados, itens importantes ao analisar a performance. 55 A maioria dos projetos de data warehouse reside em um sistema gerenciador de banco de dados separado do ambiente OLTP, com um processador dedicado, disco e memória. Esta separação é o melhor ambiente porque, certamente, alivia o processamento e proporciona, ao administrador do data warehouse, liberdade para projetar as bases de dados e suporta uma estrutura de acesso específica para um ambiente de data warehouse onde as consultas são variadas [13]. 56 4. APLICAÇÃO Esta seção descreve a modelagem e implementação de um Sistema de Informações Gerenciais sobre Projetos de Pesquisa acadêmicos no âmbito da Universidade Federal de Campina Grande. Utilizamos o Mondrian, um servidor OLAP/WOLAP open source feito em Java [48]. Além disso, para testarmos o modelo dimensional que criamos, utilizamos uma pequena aplicação cliente que vem junto com o Mondrian. A seguir detalhamos a arquitetura do Mondrian e as funcionalidades da aplicação cliente. O Mondrian consiste de quatro camadas. Numa visão top-down temos: a camada de apresentação, a camada dimensional, a camada estrela, e a camada de armazenamento. A camada de apresentação determina o que o usuário final vê na tela do seu computador, e como ele pode interagir para fazer perguntas à aplicação. Há muitos modos para apresentar datasets multidimensional, inclusive tabelas pivot, gráficos de barra, linha ou pizza, e ferramentas avançadas de visualização como mapas interativos e gráficos dinâmicos. Estes poderiam ser escritos em Swing ou JSP, gráficos transformados em JPEG ou GIF, ou transmitiu a uma aplicação remota por XML. [48] A segunda camada é a camada dimensional. A camada dimensional realiza o parser, a validação e a execução das consultas em MDX. Uma consulta é avaliada em múltiplas fases. Os eixos são computados primeiro, em seguida os valores das células de cada eixo. Por questões de eficiência, a camada dimensional envia cell-requests em lotes para a camada estrela. Um transformador de consultas permite à aplicação manipular consultas existentes, em vez de construir uma declaração MDX para cada request. E o metadata descreve o modelo dimensional, e como ele é mapeado para o modelo relational. [48] A terceira camada é a camada estrela, que é responsável por manter um cache agregado. Aqui uma agregação é um conjunto de valores das medidas 57 ('células’) em memória, separadas por colunas das dimensões do cubo. A camada dimensional envia requests para conjuntos de células. Se as células pedidas não estão em cache, ou se são deriváveis através de operações rollup, a camada estrela envia um pedido à camada de armazenamento. A camada de armazenamento é um RDBMS (Relational Database Management System). É responsável por prover dados agregados das células, e membros das tabelas dimensionais. [48] Todas estas quatro camadas podem existir na mesma máquina, ou então podem ser distribuídas entre máquinas. As camadas 2 e 3, que incluem o servidor Mondrian, devem estar na mesma máquina. A camada de armazenamento pode estar em outra máquina, acessada por conexão de JDBC remota. Em um sistema multi-usuário, a camada de apresentação existiria na máquina de cada usuário final (menos no caso de páginas de JSP geradas no servidor). [48] Na nossa aplicação, por questões de simplicidade, colocamos todas as quatro camadas do Mondrian em uma máquina. O gerenciador de banco de dados escolhido foi o MySQL 5, que possui integração com XML. Uma exemplo de aplicação cliente para o servidor Mondrian é a ferramenta JPivot, que baseado em JSP (Java Server Pages). No JPivot o usuário pode realizar operações OLAP típicas, como drill-down, roll-up, slice, e dice. A comunicação com o servidor dar-se-á por XMLA. [47] Resumindo, utilizamos as seguintes tecnologias/ferramentas/modelos no nosso projeto: • Ambiente de Banco de Dados Gerenciais: Data Warehouse; • Servidor OLAP: Mondrian. [48] • Modelo Multidimensional: esquema estrela (star scheme); • Método OLAP: ROLAP, utilizando o MySQL 5; • Interface OLAP: WOLAP, através da ferramenta web-client que vem junto com o Mondrian; • Padrão de acesso OLAP: XMLA; • Linguagem de Recuperação de Informação: MDX; 58 A seguir temos uma figura que mostra toda a arquitetura do servidor Mondrian, destacando suas camadas e componentes. Figura 10: Arquitetura do servidor OLAP utilizada. 59 O controle de acesso ao banco de dados dimensional no servidor Mondrian é definido em um arquivo XML. Os elementos que definem as regras de acesso são os seguintes • <SchemaGrant> - define o acesso padrão a objetos em um esquema. O atributo de acesso pode ser "all" ou "none"; este acesso pode ser sobrescrito para usuários específicos. • Um <CubeGrant> define o acesso a um cubo particular. Como para <SchemaGrant>, o atributo de acesso pode ser "all" ou "none", e pode ser sobrescrito para sub-objetos específicos no cubo. • Um <HierarchyGrant> define acesso a uma hierarquia. O atributo de acesso pode ser "all", significando que todos os membros são visíveis; "none", significando que a existência da hierarquia é escondida do usuário; e "custom". Com acesso customizado, pode usar você definir regras de acesso topLevel e bottomLevel, limitando o usuário de realizar as operações roll-up e drill-down no cubo. 4.1 Modelagem Conceitual 4.1.1 Informação O diagrama de objetos modela as instâncias das classes contidas no diagrama de classes, isto é, o diagrama de objetos mostra um conjunto de objetos e seus relacionamentos no tempo. Estes diagramas são importantes para construir os aspectos estáticos do sistema. Normalmente, são compostos por: objetos e vínculos. Na figura 10, temos o diagrama de objetos para a classe projeto na modelagem tradicional. 60 Figura 11: Diagrama de Objeto 4.1.2 Modelo Os diagramas de Classe mostram as diferentes classes que fazem um sistema e como elas se relacionam. Os Diagramas de Classe são chamados diagramas “estáticos” porque mostram as classes, com seus métodos e atributos bem como os relacionamentos estáticos entre elas: quais classes “conhecem” quais classes ou quais classes “são partes” de outras classes, mas não mostram a troca de mensagens entre elas. Na figura 11, temos o diagrama de classe para o nosso projeto. 61 Figura 12: Diagrama de Classe 62 4.1.3 Meta-Modelo Os meta-modelos da modelagem conceitual do nosso projeto equivalem as linguagens UML e OCL, que são explicados a seguir. 4.1.3.1 UML A Linguagem de Modelagem Unificada (Unified Modelling Language UML) é uma linguagem de diagramação ou notação para especificar, visualizar e documentar modelos de sistemas de software Orientados à Objeto. A UML não é um método de desenvolvimento, o que significa que ela não diz para você o que fazer primeiro e em seguida ou como desenhar seu sistema, mas ele lhe auxilia a visualizar seu desenho e a comunicação entre objetos. A UML é controlada pelo Grupo de Gerenciamento de Objeto (Object Management Group - OMG) [40]. A UML é voltada para o desenho de software Orientado à Objeto e tem um uso limitado para outros paradigmas de programação. Ela é composta por muitos elementos de modelo que representam as diferentes partes de um sistema de software. Os elementos UML são usados para criar diagramas, que representam uma determinada parte, ou um ponto de vista do sistema. A seguir temos a descrição dos principais diagramas UML [40]: Diagrama de Caso de Uso - mostra atores (pessoas ou outros usuários do sistema), casos de uso (os cenários onde eles usam o sistema), e seus relacionamentos. Diagrama de Classe - mostra classes e os relacionamentos entre elas. Diagrama de Seqüência - mostra objetos e uma seqüência das chamadas do método feitas para outros objetos Diagrama de Objeto - modela as instâncias das classes contidas no diagrama de classes. Diagrama de Colaboração - mostra objetos e seus relacionamentos, colocando ênfase nos objetos que participam na troca de mensagens. 63 Diagrama de Estado - mostra estados, mudanças de estado e eventos num objeto ou uma parte do sistema. Diagrama de Atividade - mostra atividades e as mudanças de uma atividade para outra com os eventos ocorridos em alguma parte do sistema. Diagrama de Componente - mostra os componentes de programação de alto nível. Diagrama de Distribuição - mostra as instâncias dos componentes e seus relacionamentos. 4.1.3.2 OCL A primeira versão da UML foi submetida ao Object Management Group (OMG), organizador do processo de padronização dos modelos e linguagens. A revisão desse modelo mostrou uma grande deficiência na clareza e consistência das definições da UML. Em particular, uma dificuldade encontrada foi que a semânitica da UML poderia ser interpretada em formas ambígüas. O problema foi minimizado com a elaboração de uma nova versão da Unified Modeling Language (UML) a qual foi publicada em 1997. O mais importante incremento nesta versão foi a criação da Object Constraint Language (OCL). [41] A OCL é uma linguagem de expressões para especificar restrições sobre modelos orientados a objetos ou outros artefatos da linguagem UML. É uma linguagem precisa, textual e formal. Essa formalidade garante a não existência de interpretações ambígüas para as mesmas restrições, fato que ocorria antes da sua criação. Uma das suas principais características é que seu uso não exige um forte conhecimento matemático para ser utilizada corretamente, como ocorre nos modelos Z e VDM. [41] Na linguagem OCL toda expressão é declarativa no sentido de que expressa “o quê” a restrição representa no sistema e não “como” essa restrição é implementada. A avaliação de uma expressão sempre resulta em um valor booleano e nunca muda o estado do sistema no modelo [41]. 64 As expressões OCL são utilizadas para definir condições invariantes nas classes representadas em um modelo e também são utilizadas para especificar as pré e pós-condições em operações aplicadas a classes deste modelo. Elas também podem ser utilizadas para fazer consultas a um modelo de classes da UML. Essas consultas podem ser úteis para validar modelos de classes na fase de projeto. A avaliação dessa expressão não devolve um valor booleano, e sim valores de um tipo específico da OCL [41]. 4.1.3.2.1 Regras OCL Regra 1: a área de uma sala deve ser maior que 2m2; Context Sala inv: self.areaSala > 2; Regra 2: Um laboratório deve estar sendo usado por pelo menos um projeto. Context Laboratorio inv: self.numProjetos > 0; Regra 3: Cada projeto sempre deve ter um único coordenador. Caso o coordenador saia, outra pessoa deve entrar no lugar. Context Projeto inv: if self.temCoordenador then self.coordenador->count = 1; else then self.coordenador->includes(pessoa); 65 Regra 4: Todo professor que for coordenador de um projeto deve participar deste projeto. Context Professor inv: self.coordenaProjeto->iterator(i; i: Projeto; if not i.participaProjeto->including(self) then i.participaProjeto->includes(self); else; Regra 5: Um laboratório deve possuir uma única sala. Context Laboratorio inv: self.sala -> count = 1 4.1.4 Meta-meta Modelo O Meta-meta-Modelo utilizado para modelar o modelo conceitual deste projeto foi o MOF (Meta-Object Facility), um padrão sugerido pela OMG (Object Management Group) que define a estratégia de meta-meta-modelagem do OMG, baseada na orientação a objetos. O MOF é uma meta-meta-modelo para nível de meta-modelos UML (UnifiedModeling Language) que está estruturado em torno de uma hierarquia de múltiplas camadas. O modelo MOF tem uma sintaxe abstrata definida por ele e emprega diagramas de classes UML em sua sintaxe concreta. Para isso, o MOF e UML possuem um núcleo comum alinhado de forma que qualquer meta-modelo oriundo do MOF é passível de representação através de ferramentas CASE que sigam o padrão UML. No MOF a linguagem de meta-modelagem é independente da tecnologia de dados, ou seja, podem ser usada com XML ou modelo relacional, por exemplo. Ele também é independente da linguagem de programação e outras plataformas de tecnologia. 4.1.4.1 Data warehouse e MOF No data warehouse a extração e os processos de integração dependem do administrador de banco de dados que cria um mapeamento de esquemas de um banco de dados tradicional para o esquema de um data warehouse [39]. 66 A meta-informação para vários bancos de dados é representada usando tecnologia MOF, logo é possível criar ferramentas sofisticadas para ajudar o administrador de banco de dados neste processo [39]. O Meta dados é descrito freqüentemente como o “coração e alma” do data warehouse. O MOF é usado para automatizar a administração dos meta dados no data warehouse. Atualmente, repositórios de meta dados que administram data warehouse usam meta dados estáticos que usam grupos de arquivos baseados em meta dados que se comunicam [39]. A interface do MOF e o modelo do MOF podem ser usados para definir meta-modelos específicos para banco de dados tradicionais e para o data warehouse. A integração entre estes modelos é feita em tempo real entre o ambiente de desenvolvimento do data warehouse (que possuem o modelo de dados) e os modelos UML (que descrevem os modelos incorporados dos dados e as bases de dados operacionais) este é um uso típico do MOF [39]. 4.2 Modelagem Interna Esta seção mostra os aspectos da modelagem interna, segundo a arquitetura ANSI/SPARC, aplicada ao nosso projeto. 4.2.1 Diagrama Entidade Relacionamento O diagrama entidade relacionamento é um modelo diagramático que descreve o modelo de dados de um sistema com alto nível de abstração. A sua principal aplicação é para visualizar o relacionamento entre tabelas de uma banco de dados, no qual as relações são construídas através da associação de um ou mais atributos destas tabelas. A Figura 12 mostra o diagrama entidade relacionamento do banco de dados tradicional do nosso projeto. 67 Figura 13: Modelo Entidade Relacionamento 4.2.2 Relacionamento entre Entidades Existem quatro tipos de multiplicidade no relacionamento entre duas entidades:1-1, 1-N, N-1 e N-N. A figura 13 mostra o relacionamento entre a entidade bloco e a entidade sala do nosso projeto. 68 Figura 14: Relacionamento entre Entidades 4.2.3 Tabela do Banco de Dados Relacional Um Banco de Dados Relacional é um conceito abstrato que define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas, construindo assim um banco de dados. 4.2.4 Tabelas (ou relações, ou entidades) Todos os dados de um banco de dados relacional (BDR) são armazenados em tabelas. Uma tabela é uma simples estrutura de linhas e colunas. Em uma tabela, cada linha contém um mesmo conjunto de colunas, e estas linhas devem seguir a ordem que foi especificada pelo projetista do BDR. Em um banco de dados podem existir uma ou centenas de tabelas, sendo que o limite pode ser imposto tanto pela ferramenta de software utilizada, quanto pelos recursos de hardware disponíveis no equipamento. As tabelas associam-se entre si através de regras de relacionamentos, estas regras consistem em associar um atributo de uma tabela com um conjunto de registros de outra tabela. A Figura 14 mostra uma tabela do banco de dados relacional do nosso projeto que foi criada utilizando o programa MySQL. 69 Figura 15: Tabela no Banco de Dados Relacional 4.3 Modelagem Externa Após feita a modelagem conceitual através de UML e seguindo a arquitetura do data warehouse, o próximo passo é realizar a modelagem dimensional. Escolhemos utilizar o esquema estrela como modelo conceitual do banco de dados dimensional. A seguir será descrita as etapas para construção desse esquema a partir do esquema relacional definido na seção 4.2, e a posterior construção do cubo. 4.3.1 Esquema estrela Como visto anteriormente, no esquema estrela temos uma tabela de fato, que representa o dado mais importante da aplicação, e as tabelas dimensionais. No caso do banco de dados gerenciais de projetos de pesquisa fica fácil perceber que a tabela de fato conterá dados de projetos. A questão agora é definir quantas e quais serão as tabelas dimensionais. Pensando nas principais perguntas que descrevem os atores envolvidos em 70 um projeto acadêmico, conseguimos definir as tabelas de dimensões. Abaixo está o esboço do esquema estrela. Figura 16: Esboço do esquema estrela A tabela de fato sabe o “o quê” é o centro da aplicação, que é justamente os projetos. Cada tabela dimensional reponde uma pergunta crucial. São elas: quem ganha com o projeto?; Quem paga os custos?; Quem realiza o projeto?; Onde será feito o projeto?; Quando será feito?; Qual a categoria do projeto? Ou seja, quais são os discriminadores dos projetos. Com base nessas perguntas, e aproveitando a já definição das tabelas no modelo relacional, chegamos ao modelo dimensional abaixo, mantendo a estrutura estrela: 71 Figura 17: Esquema estrela da BD dimensional É interessante relembrar aqui que um das características do modelo dimensional é a não normalização das tabelas. Por exemplo, a tabela Laboratório possui informações sobre a sala, o bloco e o departamento. No modelo relacional precisaríamos de três tabelas para modelar isso, para deixar tudo normalizado. Porém essa normalização aqui não tem necessidade, pois 72 essas tabelas do esquema estrela, que faz parte do data warehouse, possuirão os valores contidos nas tabelas do banco de dados operacional, e não serão alterados depois. Essa simplificação facilitará justamente o que se quer com o data warehouse: analisar os dados de forma rápida e simples. 4.3.2 Cubo Com o modelo estrela construído, podemos construir o modelo lógico do data warehouse, que é chamado de cubo. O modelo estrela é considerado como um modelo físico, enquanto que o cubo um modelo lógico. Isso porque não é necessariamente um cubo propriamente dito, mas uma estrutura de dados que, no contexto da nossa aplicação, permiti a navegação pelos projetos nas dimensões de lugar, tempo, pessoas, etc. Um cubo possui métricas, dimensões, hierarquias e níveis. As métricas das tabelas de fatos são usadas para medir o desempenho do negócio. Hierarquias são estruturas em forma de árvore contendo informações do domínio de uma característica. Para a construção do cubo foi utilizada a ferramenta open-source Pentaho Cube Designer (44). A construção foi feita por uma interface gráfica amigável. Após esta etapa o cubo está pronto, estando descrito em XML. Abaixo um trecho do código do cubo da nossa aplicação, destacando os seus elementos: <?xml version="1.0" encoding="UTF-8"?> <Schema name="Projetos"> <Cube name="Projetos"> <Table name="projeto"/> <Dimension name="Local" foreignKey="id_local"> <Hierarchy name="Local" hasAll="true" allMemberName="All local" primaryKey="id_local"> <Table name="local"/> <Level name="departamento" table="local" column="departamento" uniqueMembers="false"/> <Level name="bloco" table="local" column="bloco" uniqueMembers="false"/> <Level name="sala" table="local" column="sala" uniqueMembers="false"/> <Property name="area" column="area_sala" type="Numeric"/> </Hierarchy> </Dimension> ... <Measure name="QuantidadeProjetos" column="idProjeto" aggregator="count" datatype="Integer" formatString="#"/> 73 <Measure name="MediaAvaliacoesCliente" column="avaliacaoCliente" aggregator="avg" datatype="Numeric" formatString="#,##"/> <Schema> é a raiz do xml. Dentro de um schema pode haver muitos cubos. Na nossa aplicação criamos apenas um: Projetos. Dentro da tag <Cubo> definimos as seguintes dimensões: • Local – contendo os níveis nessa ordem: departamento, bloco e sala. Dessa forma, o usuário do sistema poderá navegar no sentido departamento -> bloco -> sala. Também definimos uma propriedade dessa dimensão no nível de sala, que é a área da sala. • AreaTematica – contém os níveis do tema de um projeto: grande área, área e subárea. • Equipe – contém um único nível, que é o coodenador, e as propriedades referentes a quantidade de estudantes da graduação, mestrado e doutorado e a quantidade de professores envolvidos no projeto. • Favorecido – dimensão que permitir visualizar os dados do favorecido do projeto. No nosso projeto consideramos apenas o atributo nome. • Financiador – dimensão que possui o nível setor (público/privado) e o nome do financiador do projeto. Assim, será possível separar os projetos oriundos de verba pública e de verba privada. • Cronograma – permitirá ao usuário do sistema navegar no sentido ano -> mês nas datas • Situação – essa dimensão foi acrescenta para que possamos separar os projetos já finalizados dos que estão em andamento. Após a construção do cubo, instalamos um servidor ROLAP chamado Mondrian, também da organização Pentaho, em uma máquina e configuramos o banco de dados que o servidor usaria para extrair os dados. Inserimos dados fictícios no banco de dados diretamente no esquema estrela ao invés do normal que seria inserir no banco de dados operacional criado na seção 4.2. O objetivo deste projeto não era criar toda a infraestrutura de data warehouse, 74 mas sim o mínimo necessário para executar consultar MDX em uma base de dados dimensional, construído sobre o esquema estrela. Na etapa de povoamento do bando de dados em estrela, inserimos um total de quinze projetos, dos quais nove representam projetos já finalizados e seis projetos em andamento. Abaixo está o total de linhas (rows) inseridas na base de dados: Figura 18: Povoamento do banco de dados 4.3.3 Recuperação da informação A recuperação da informação em um banco de dados dimensional dá-se através de consultas com a linguagem MDX. No nosso projeto, a aplicação cliente é executada no browser, o que caracteriza que nossa solução é ROLAP na camada de persistência, e WOLAP na camada cliente [47], pois realiza as operações OLAP via web. A seguir mostraremos um exemplo de consulta na base de dados criados acima. 4.3.3.1 Consultas MDX O MDX é uma linguagem de consulta para banco de dados OLAP, assim como SQL para bancos relacionais. Sua sintaxe possui semelhanças com fórmulas de planilhas eletrônicas. Foi desenvolvida pela Microsoft, e após a invenção do XML para análise (XMLA) a MDX foi padronizada com a linguagem de consulta multidimensional. [45] Uma importante vantagem dessa linguagem é que ela funciona independente da localização do cliente e do servidor dentro dos cubos do 75 OLAP. Se eles são localizados na mesma máquina, a comunicação ocorrerá localmente, senão, ela se realizará através da rede. [46] Abaixo está um exemplo de consulta MDX no nosso projeto. Ela cria uma medida virtual (MediaGeral) e a formata. A medida [MediaGeral] não existe fisicamente, sendo assim uma métrica virtual, que é o resultado de uma operação matemática de duas ou mais medidas reais. Nesta consulta, a formatação da string dessa medida virtual terá um estilo (cor de background) vermelho se a média geral for menor que sete, e verde caso contrário. O select selecionará as métricas da tabela Projetos, colocando-os nas colunas da tabela resultado, e os departamentos da dimensão Local estarão nas linhas do lado esquerdo da tabela. A cláusula where executa a operação slice, “fatiando” o cubo projetos selecionando apenas os projetos finalizados. O resultado da consulta é enviado à ferramenta olap cliente. WITH MEMBER [Measures].[MediaGeral] AS '( ([Measures].[MediaAvaliacoesCliente] + [MediaAvaliacoesComissao]) / 2)', FORMAT_STRING = Iif([Measures].[MediaGeral] < 7.0, '|#.##|style=red', '|#.##|style=green') SELECT { [Measures].[QuantidadeProjetos], [Measures].[MediaAvaliacoesCliente], [Measures].[MediaAvaliacoesComissao], [Measures].[MediaGeral], [Measures].[OrcamentoProjetos] } on columns, { ([Local].[Departamento].Members) } ON rows FROM Projetos WHERE [Projeto.Situacao].[All situacao].[Finalizado] Após executarmos a consulta acima aparecerá no browser a seguinte tabela. No eixo vertical temos a dimensão Local, com os filhos de primeiro nível, que são os departamentos (DEAG, DEE, DEMA e DSC). No eixo horizontal temos as métricas provenientes da tabela fato Projetos. 76 Figura 19: Recuperação da informação 4.3.3.2 Relatórios e gráficos A ferramenta possui integração com o Microsoft Excel, possibilitando a exportação do resultado das consultas e navegações para uma planilha do Excel que poderá servir de relatório para o gerente. Abaixo temos um relatório Excel que separa os projetos em área temática e por período de tempo (ano e mês do início), mostrando as métricas consideramos importantes para o usuário do software (o gerente de projetos de P&D da universidade): quantidade de projetos, avaliação média do cliente e da comissão acadêmica, e o orçamento final do projeto. Área Temática Cronograma All cronograma Ciências Exatas e All da Terra cronograma Ciências da All Computação cronograma All cronograma 1995 1998 2001 Banco de Dados 1 4 2004 2006 2007 Redes de All Computadores cronograma All Engenharia Agrícola cronograma QtdeProj MAvalCliente MAvalComissao Orcamento (R$) 14 5 5 273.238,4 7 4 5 150.255,15 4 6 6 62500, 1 7 8 15000, 2 1 1 9 9 9 9 9 9 12500, 7500, 5000, Ciências Biológicas 1 35000, 3 2 2 87.755,15 2 3 3 28.550,5 77 Engenharia de Materiais Física Matemática Ciências Humanas História Teologia Ciências Sociais Aplicadas All cronograma All cronograma All cronograma All cronograma All cronograma All cronograma All cronograma 2 2 4 15850, 1 7 7 3.582,75 2 10 10 75000, 1 21.320,32 1 21.320,32 Tabela 2: Relatório dos projetos por área temática e tempo A métrica MediaGeral foi criada nessa consulta, não existindo fisicamente na tabela. Isso permitiu criarmos visões específicas para os usuários. Além disso, na consulta nós formatamos essa medida, para destacar projetos que tiveram boas avaliações e os que tiveram más avaliações. A aplicação possui muitas funcionalidades. Uma delas é a montagem de gráficos a partir dos dados resultantes mostrado na consulta da Figura 18. A seguir temos o gráfico que relaciona os departamentos com e as médias gerais dos projetos realizados neles, contidos na figura acima. Figura 20: Avaliação dos Projetos por Departamento 78 Por fim, temos abaixo a visão da arquitetura ANSI/SPARC do nosso Sistema de Informação Gerencial de Projetos de Pesquisa. Dimensão Interno Conceitual Externo Esquema do Modelo de Dados F-Logic MOF Modelo de Dados Relacional UML, OCL, Modelo Estrela * Dicionário de Dados Bloco compostopor Sala Diagrama de Classe e Regras OCL ** 1 composto-por 201 Diagrama de Objeto Dados aplicativos SGML1 *** Tabela 3: Arquitetura ANSI/SPARQ 1: SGML é a metalinguagem das linguagens de marcação. *: Modelo dimensional: A estrutura é representada pelo Cubo. O controle é definido através de tags xml <Role> indicando a permissão de acesso às dimensões/métricas do cubo, e o acesso é feito por XMLA. A definição dos esquemas XML de estrutura e controle dar-se-á por arquivos DTD. **: Como extensão do modelo dimensional do cubo temos a instância do cubo de projetos de pesquisa, descrito parcialmente abaixo (o código completo encontra-se no apêndice): <?xml version="1.0" encoding="UTF-8" ?> <Schema name="Projetos"> <Cube name="Projetos"> <Table name="projeto" /> <Dimension name="Tempo" foreignKey="id_cronograma"> <Dimension name="AreaTematica" foreignKey="id_areatematica"> <Dimension name="Favorecido" foreignKey="id_favorecido"> <Dimension name="Bloco" foreignKey="id_local"> <Dimension name="Coordenador" foreignKey="id_equipe"> <Dimension name="Financiador" foreignKey="id_financiador"> <Measure name="Avaliação média do cliente" column="avaliacaoCliente" aggregator="avg" datatype="Numeric" formatString="#.##0,###" /> <Measure name="AvaliaçãoMédia da comissão" column="avaliacaoComissao" aggregator="avg" datatype="Numeric" formatString="#.##0,###" /> <Measure name="OrçamentoTotal" column="orcamento" aggregator="sum" datatype="Numeric" formatString="#.##0,###" /> </Cube> </Schema> 79 O controle foi realizado usando as tags XML descritas no início deste capítulo: <SchemaGrant>, <CubeGrant>, <HierarchyGrant> e <MemberGrant>. ***: Os dados aplicativos são os resultados das consultas usando a linguagem MDX mostrados em tabelas dinâmicas, que revelam uma visão do Cubo: suas métricas, hierarquias e dimensões. O comportamento é alcançado através das operações OLAP roll-up, drill-down, slice, etc. 80 5. CONCLUSÃO As novas maneiras de desenvolver sistemas gerenciais, através do WOLAP por exemplo, têm facilitado o acesso a informações que são vitais para os negócios de uma empresa. Nesta monografia realizou-se uma pesquisa bibliográfica sobre os conceitos que envolvem os Sistemas de Informação Gerenciais, focando na estrutura do Data Warehouse, que baseia-se na modelagem dimensional dos dados (Star Scheme), processamento analítico online (OLAP) e consultas usando MDX. Em seguida, projetamos um sistema gerencial de projetos de P&D da Universidade Federal de Campina Grande usando um servidor ROLAP (Mondrian), um cliente WOLAP e um banco de dados relacional (MySQL). Foram definidas as modelagens interna e conceitual dos bancos de dados relacional e dimensional e a modelagem externa do banco de dados dimensional. Trabalhos futuros poderão propor um modelo mais próximo da realidade dos projetos acadêmicos e utilizar outras abordagens OLAP, como o MOLAP ou HOLAP. Além disso, pode-se criar um sistema mais abrangente, contendo informações dos projetos por campus universitário, espalhados em várias cidades. 81 REFERÊNCIAS [1] ASSUNÇÃ0, Luis. Data Warehousing. Disponível http://www.luis.assuncao.eti.br/luisdwh.htm#item1. na Internet. acessado em 19/05/2007. [2] CLEMES, Márcio. Data Warehouse como suporte ao sistema de informações gerenciais em uma instituição de ensino superior: Estudo de caso na UFSC. Florianópolis:2001, 118f. Dissertação (Mestrado em Engenharia de Produção) Universidade Federal de Santa Catarina, 2001. [3] COMPUTERWORLD. Data warehouse: depósito de boas oportunidades. Rio de Janeiro. n.173, p. 17, julho,1996. [4] DBMS – TOOLS & STRATEGIES FOR I.S. PROFESSIONAIS. Um Manifesto do Dimensional Modeling. Rio de Janeiro. Ed. Mantelmedia, n. 7, p. 44-50, 7 novembro,1997. [5] EXECPLAN. Apresentação. Disponível http://www.execplan.com.br/apresent/apresent.htm. na Internet. acessado em 01/05/2007. [6] Fast Track to Sybase – Student Guide. 1992, Sybase Inc. [7] FIGUEIREDO, Adriana Maria C.M.. MOLAP x ROLAP: Embate de Tecnologias para Data warehouse. Developer’s Magazine. Rio de Janeiro: Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.24. [8] FILHO, Trayahú R.Moreira. On-Line Analytical Processing Server (Servidor OLAP). Developer’s Magazine. Rio de Janeiro: Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.28-29. 82 [9] FORMA INFORMÁTICA LTDA. Técnicas de Modelagem de Dados. São Paulo, 26 maio, 1994. [10] GUTIERREZ, Marco Antônio. Developer’s Magazine. Rio de Janeiro: Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.7. [11] http://osiris.sunderland.ac.uk/sst/case2/welcome.html, acessado em 03/05/2007 [12] INMON, W. H. Building the Data warehouse. New York : Wiley Computer Publishing, 1996. [13] INMON, W. H., WELCH, J. D. e GLASSEY,Katherine L. Managing the Data warehouse. New York : Wiley Computer Publishing, 1997. [14] INMON, Willian H. e HACKATHORN, R. D. Using the Data warehouse. New York : J. Wiley, 1994. [15] JAMHOUR, Edgard. Data warehouse. Disponível em Lemon Internet Services, disponível em http://www.lemon.com.br/canais/tutoriais/bd.cfm?Id=338&Sub=13. acessado em 15/05/2007. [16] JORNAL BATE BYTE – CELEPAR ( Companhia de Informática do Paraná). Administração de Metadados. Curitiba, edição nº 76 em junho de 1998. [17] JORNAL BATE BYTE – CELEPAR ( Companhia de Informática do Paraná). Tecnologia OLAP. Curitiba, edição nº 87 em junho de 1999. [18] JÚNIOR TRONCHIN, Valsoir. Warehousing :Aspectos Apresentação Sybase : Estratégicos e de Data Implementação. Curitiba,1997. 83 [19] KIMBALL, Ralph. Data warehouse Toolkit. 1.ed. São Paulo: Makron Books, 1998. 388p. [20] KONDRATIUK, Edgardo Ruben. Data warehouse: Detalhes que Fazem a Diferença. Developer’s Magazine. Rio de Janeiro: Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.22. [21] LAUDON, K. C.; LAUDON, J. P. Management information systems: new approaches to organization and technology. 5. ed. New Jersey: Prentice Hall, 1998. [22] LESCA, H. Structure et systeme d’information facteurs et competitive de l’entreprese. [S.l.]: Masson, 1996. [23] MACHADO, Felipe. Modelagem de Dados Multidimensional. DBA Engenharia de Sistemas. Rio de Janeiro, 1999. MALLACH, E. G. Decision support and data warehouse systems. Boston: McGraw-Hill, 2000. 664p. [24] MANNI, Luiz Carlos & DORSA, Luiz Fernando A. Data warehouse: Gerenciando a Qualidade dos Dados. Developer’s Magazine. Rio de Janeiro: Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.20. [25] NIMER, Fernando.Analisando o Retorno Sobre o Investimento de Data warehouse. Developer’s Magazine. Rio de Janeiro : Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.16-17. [26] OLIVEIRA LEITE., Argemiro A. Informação à Prova de Equívocos. ComputerWorld Business Inteligence, Rio de Janeiro, n. 285, p.7, 8 março, 1999. 84 [27] PALMA, Sérgio. Os Componentes Funcionais de um Data warehouse. Developer’s Magazine. Rio de Janeiro:Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.18-19. [28] PORTFÓLIO DE TECNOLOGIAS CELEPAR ( Companhia de Informática do Paraná). SQL, Índices, Modelo de Dados, Banco de Dados. Curitiba,30 de junho de 1998. [29] POZZEBON, M.; FREITAS, H. M. R. Características desejáveis dos enterprise information systems no final dos anos 90. Read, Porto Alegre, v. 5, n. 1, abr. 1999. Disponível em: <http://read.adm.ufrgs.br/read09/artigo/artigo_3.htm>. Acessado em: 03/05/2007. [30] SINGH, H. S. Data warehouse. São Paulo: Makron Books, 2001. 382p. [31] Sybase System 10: Introduction to SQL- Student Guide.1993, Sybase Inc. [32] TAURION, Cezar. Data warehouse : Vale a Investindo em Um?. Developer’s Magazine. Pena Gastar Milhões Rio de Janeiro: Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.10-11. [33] TAURION, Cezar. Data warehouse Será Útil Para a Sua Organização? Developer’s Magazine. Rio de Janeiro : Axcel Books do Brasil Editora Ltda. Fevereiro de 1998, nº 18 p.26-27. [34] TIMÓTEO, Max J. L., Ferramentas OLAP, disponível em www.cin.ufpe.br/~mjlt/idw/relatorio2/OLAP.doc . Acessado em: 20/05/2007. [35] WANG, Charles B., Techno Vision II, ed. Makron Books, 1998. 85 [36] Wikipedia, XML, disponível em http://pt.wikipedia.org/wiki/XML. Acessado em 21/05/2007. [37] Wikipedia, XML for Analysis, disponível em http://en.wikipedia.org/wiki/XMLA . Acessado em 21/05/2007. [38] ZAMBON, Luís Pedro. Desenvolvimento de Sistemas de Informação. Curitiba,Setembro de 1999.Disciplina do Curso de Especialização em Gestão da Tecnologia da Informação e Comunicação da Faculdade Católica de Administração e Economia. [39] The Object Management Group (OMG). MetaObjectFacility (MOF) Specification – disponível em www.omg.org/docs/formal/02-04-03.pdf acessado em 19/05/2007 [40] HENSGEN, Paul, Manual do Umbrello UML Modeller, ano 2003, disponível em http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml- basics.html acessado em 20/05/2007 [41] LIMA, Daniel H. A, MUSIAL Rafael, Entendendo OCL - Apresentação e utilização da Object Constraint Language, ano 2001 [42] CUSTÓDIO Eduardo, Data Warehouse, disponível em http://www.maxarte.com.br/eduardocustodiohp/DataWareHouse.htm acessado em 20/05/2007 [43] SHAMMAS Gabriel, Extraindo dados de um DW, disponível em: http://www.shammas.eng.br/acad/sitesalunos0106/012006dtw/extraindo. htm. Acessado: 20/05/2007 [44] Pentaho. http://www.pentaho.com/. Acessado em 18/05/2007. 86 [45] Wikipedia, Multidimensional Expressions, disponível em http://en.wikipedia.org/wiki/XMLA . Acessado em 18/05/2007. [46] SISNEMA Informática, MDX e Crystal Analysis: Duas ferramentas de auxílio ao OLAP, disponível em: http://sisnema.com.br/Materias/idmat014821.htm [47] JPivot - a JSP based OLAP client. http://jpivot.sourceforge.net/, acessado em: 24/05/2007. [48] Mondrian: um servidor OLAP em Java. http://mondrian.pentaho.org/documentation/architecture.php 87 Apêndice A A.1 Estrutura <?xml version="1.0" encoding="UTF-8" ?> <Schema name="Projetos"> <Cube name="Projetos"> <Table name="projeto" /> <Dimension name="Local" foreignKey="id_local"> <Hierarchy name="Local" hasAll="true" allMemberName="All local" primaryKey="id_local"> <Table name="local" /> <Level name="departamento" table="local" column="departamento" uniqueMembers="false" /> <Level name="bloco" table="local" column="bloco" uniqueMembers="false" /> <Level name="sala" table="local" column="sala" uniqueMembers="false" /> <Property name="area" column="area_sala" type="Numeric" /> </Hierarchy> </Dimension> <Dimension name="AreaTematica" foreignKey="id_areatematica"> <Hierarchy name="AreaTematica" hasAll="true" allMemberName="All areatematica" primaryKey="id_areatematica"> <Table name="areatematica" /> <Level name="grandeArea" table="areatematica" column="grandeArea" uniqueMembers="false" /> <Level name="area" table="areatematica" column="area" uniqueMembers="false" /> <Level name="subarea" table="areatematica" column="subarea" uniqueMembers="false" /> </Hierarchy> </Dimension> <Dimension name="Equipe" foreignKey="id_equipe"> <Hierarchy name="Equipe" hasAll="true" allMemberName="All equipe" primaryKey="id_equipe"> <Table name="equipe" /> <Level name="coordenador" table="equipe" column="coordenador" uniqueMembers="false"> <Property name="qtdeAlunosGraduacao" column="qtdeAlunosGraduacao" type="Numeric" /> <Property name="qtdeAlunosMestrado" column="qtdeAlunosMestrado" type="Numeric" /> <Property name="qtdeAlunosDoutorado" column="qtdeAlunosDoutorado" type="Numeric" /> <Property name="qtdeProfessores" column="qtdeProfessores" type="Numeric" /> </Level> </Hierarchy> </Dimension> <Dimension name="Favorecido" foreignKey="id_favorecido"> <Hierarchy name="Favorecido" hasAll="true" allMemberName="All favorecido" primaryKey="id_favorecido"> <Table name="favorecido" /> 88 <Level name="nome" table="favorecido" column="nome" uniqueMembers="false" /> </Hierarchy> </Dimension> <Dimension name="Financiador" foreignKey="id_financiador"> <Hierarchy name="Financiador" hasAll="true" allMemberName="All financiador" primaryKey="id_financiador"> <Table name="financiador" /> <Level name="setor" table="financiador" column="setor" uniqueMembers="false" /> <Level name="nome" table="financiador" column="nome" uniqueMembers="false" /> </Hierarchy> </Dimension> <Dimension name="Cronograma" foreignKey="id_cronograma"> <Hierarchy name="Cronograma" hasAll="true" allMemberName="All cronograma" primaryKey="id_cronograma"> <Table name="cronograma" /> <Level name="ano_inicio" table="cronograma" column="ano_inicio" uniqueMembers="false"> <Property name="ano_fim" column="ano_fim" type="Numeric" /> <Property name="mes_fim" column="mes_fim" type="Numeric" /> </Level> <Level name="mes_inicio" table="cronograma" column="mes_inicio" uniqueMembers="false" /> </Hierarchy> </Dimension> <Dimension name="Projeto"> <Hierarchy name="Situacao" hasAll="true" allMemberName="All situacao"> <Table name="projeto" /> <Level name="situacao" table="projeto" column="situacao" uniqueMembers="false" /> </Hierarchy> </Dimension> <Measure name="QuantidadeProjetos" column="idProjeto" aggregator="count" datatype="Integer" formatString="#" /> <Measure name="MediaAvaliacoesCliente" column="avaliacaoCliente" aggregator="avg" datatype="Numeric" formatString="#.##" /> <Measure name="MediaAvaliacoesComissao" column="avaliacaoComissao" aggregator="avg" datatype="Numeric" formatString="#.##" /> <Measure name="OrcamentoProjetos" column="orcamento" aggregator="sum" datatype="Numeric" formatString="#,###.##" /> </Cube> </Schema> A.2 Consultas MDX Entre todos os projetos finalizados retorne a quantidade de projetos, a média de avaliação do cliente, da comissão e o orçamento total do projeto: 89 <jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/projetos_estrela?user=elmano&password=123" catalogUri="/WEB-INF/queries/projetos_estrela.xml"> select {[Measures].[QuantidadeProjetos], [Measures].[MediaAvaliacoesCliente], [Measures].[MediaAvaliacoesComissao], [Measures].[OrcamentoProjetos]} on columns, {([Local].[Departamento].Members)} ON rows from Projetos where [Projeto.Situacao].[All situacao].[Finalizado] </jp:mondrianQuery> Agora, o coordenador de projetos deseja visualizar quais projetos tiveram boas/más avaliações. Para isso, ele deseja que todos os projetos cuja avaliação média, avaliaçãoCliente+avaliaçãoComissão / 2, for menor que sete (7,0), seja destacado na cor vermelha, caso contrário na cor verde. WITH MEMBER [Measures].[MediaGeral] AS '( ([Measures].[MediaAvaliacoesCliente] + [MediaAvaliacoesComissao]) / 2)', FORMAT_STRING = Iif([Measures].[MediaGeral] < 7.0, '|#.##|style=red', '|#.##|style=green') select {[Measures].[QuantidadeProjetos], [Measures].[MediaAvaliacoesCliente], [Measures].[MediaAvaliacoesComissao], [Measures].[MediaGeral], [Measures].[OrcamentoProjetos]} on columns, {([Local].[Departamento].Members)} ON rows from Projetos where [Projeto.Situacao].[All situacao].[Finalizado] 90