ENIO KILDER OLIVEIRA DA SILVA UM ESTUDO SOBRE SISTEMAS DE BANCO DE DADOS CLIENTE/SERVIDOR ASPER - ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS João Pessoa – PB 2001 UM ESTUDO SOBRE SISTEMAS DE BANCO DE DADOS CLIENTE/SERVIDOR FICHA CATALOGRÁFICA 004.65 S586u SILVA, Enio Kilder Oliveira Um Estudo sobre Sistemas de Banco de Dados Cliente/Servidor. João Pessoa – PB, 2001 97p Monografia 1. Banco de Dados – Sistemas. 2. Cliente/Servidor – Arquitetura I . Título ilus. ENIO KILDER OLIVEIRA DA SILVA UM ESTUDO SOBRE SISTEMAS DE BANCO DE DADOS CLIENTE/SERVIDOR Monografia apresentada ao Curso de Processamento de Dados da Faculdade Paraibana de Processamento de Dados, como um dos requisitos para a obtenção do título de Graduado em Processamento de Dados. Orientador: Prof. Nilton Freire Santos ASPER - ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS . ENIO KILDER OLIVEIRA DA SILVA UM ESTUDO SOBRE SISTEMAS DE BANCO DE DADOS CLIENTE/SERVIDOR Aprovada em _____/_____________/ 2001 BANCA EXAMINADORA __________________________________ Orientador __________________________________ Examinador (1) __________________________________ Examinador (2) Aos meus pais José de Arimatéa da Silva e Maria de Lourdes Oliveira da Silva e aos meus irmãos Nenê e Hercênio, DEDICO. AGRADECIMENTOS Primeiramente a Deus, por ter me dado vida, saúde e sabedoria necessária para enfrentar os obstáculos. Aos meus pais Arimatéa e Lourdes, pelo amor, carinho, educação e todo apoio necessário para minha formação. Ao Prof. Nilton, por sua orientação para a conclusão deste trabalho, fica a minha eterna gratidão. À bibliotecária Cristiane Gaspar, pelo apoio técnico dado na organização deste trabalho. À Jailma pela sua amizade, carinho e apoio, e também por ter me ajudado a organizar o trabalho em cima da hora. SUMÁRIO LISTA DE FIGURAS RESUMO CAPÍTULO 1 - APRESENTAÇÃO.............. ........................................................ ...... 1.1. Introdução........................................................................................................... ...... 1.2. Justificativa......................................................................................................... ...... 1.3. Objetivos............................................................................................................. ...... 1.3.1. Geral ................................................................................................................ ...... 1.3.2. Específicos....................................................................................................... ...... 1.4. Organização do Trabalho ................................................................................... ...... CAPÍTULO 2 - REVISÃO BIBLIOGRÁFICA.................................................... ...... 2.1. Fundamentos sobre Sistemas de Banco de Dados.............................................. ...... 2.1.1. Retrospectiva Histórica ................................................................................... ...... 2.1.2. Teoria de Banco de Dados Multiusuário ......................................................... ...... 2.2. Fundamentos sobre a Arquitetura Cliente/Servidor ........................................... ...... 2.2.1. Aspectos Básicos da Arquitetura Cliente/Servidor ......................................... ...... 2.2.2. Tipos de Sistema Cliente/Servidor .................................................................. ...... 2.2.3. Principais Mecanismos.................................................................................... ...... 2.2.3.1. O Sistema Cliente ......................................................................................... ...... 2.2.3.2. O Sistema Servidor....................................................................................... ...... 2.2.3.3. A Rede de Comunicação de Dados .............................................................. ...... 2.2.4. Aplicações e Perspectivas................................................................................ ...... CAPÍTULO 3 - SISTEMAS DE BANCO DE DADOS CLIENTE/SERVIDOR...... 3.1. Definições .......................................................................................................... ...... 3.1.1. O Sistema Cliente ............................................................................................ ...... 3.1.2. O Sistema Servidor.......................................................................................... ...... 3.2. Vantagens e Desvantagens ................................................................................. ...... 3.3. Componentes Principais ..................................................................................... ...... 3.3.1. O Sistema de Gerenciamento de Banco de Dados (SGBD) ............................ ...... 3.3.2. O Modelo de Representação de Dados............................................................ ...... 3.3.2.1. Modelo Relacional........................................................................................ ...... 3.3.2.2. Modelo Orientado a Objetos ........................................................................ ...... 3.3.2.3. Modelo Objeto-Relacional ........................................................................... ...... 3.3.3. A Linguagem SQL e seus Recursos ................................................................ ...... 3.3.3.1. Visões ........................................................................................................... ...... 10 10 12 14 14 14 15 16 16 16 22 23 23 24 26 26 28 30 32 33 33 34 35 36 38 38 40 41 43 46 47 50 3.3.3.2. Índices........................................................................................................... ...... 3.3.3.3. Transações .................................................................................................... ...... 3.3.3.4. Procedimentos Armazenados ....................................................................... ...... 3.3.3.5. Triggers......................................................................................................... ...... 3.3.4. Interfaces de Comunicação para Bancos de Dados ......................................... ...... 3.3.4.1. ODBC ........................................................................................................... ...... 3.3.4.2. DBI ............................................................................................................... ...... 3.3.4.3. JDBC ............................................................................................................ ...... 3.3.4.4. BDE .............................................................................................................. ...... 3.3.5. Os Programas de Aplicação............................................................................. ...... 3.3.6. Gerência de Transações................................................................................... ...... 3.3.7. Controle de Concorrência................................................................................ ...... 3.3.8. Segurança e Administração ............................................................................. ...... 3.4. Principais Soluções da Indústria de Banco de Dados Cliente/Servidor............. ...... 3.4.1. Oracle .............................................................................................................. ...... 3.4.2. SQL Server...................................................................................................... ...... 3.4.3. Sybase SQL Server ......................................................................................... ...... 3.4.4. Informix........................................................................................................... ...... 3.4.5. C/A Ingres ....................................................................................................... ...... 3.4.6. IBM DB2......................................................................................................... ...... 3.4.7. Centura SQLBase............................................................................................ ...... 3.4.8. PostgreSQL ..................................................................................................... ...... 3.4.9. MySQL............................................................................................................ ...... 3.4.10. GemStone ...................................................................................................... ...... CAPÍTULO 4 - APLICAÇÕES DE BANCO DE DADOS CLIENTE/SERVIDOR 4.1. Aspectos Básicos................................................................................................ ...... 4.2. Processamento de Bancos de Dados Distribuídos ............................................. ...... 4.3. Internet e Intranets Organizacionais .................................................................. ...... 4.4. Sistemas de Informações Geográficas (GIS) ..................................................... ...... 4.5. Banco de Dados Multimídia............................................................................... ...... 4.6. Data Warehouses................................................................................................ ...... CAPÍTULO 5 - CONCLUSÃO.............................................................................. ...... 5.1. Considerações Finais.......................................................................................... ...... ABSTRACT .............................................................................................................. ...... Referências Bibliográficas ...................................................................................... ...... 50 51 51 52 52 53 55 57 59 60 64 67 69 72 72 74 75 76 78 79 80 81 81 83 85 85 86 87 89 91 92 93 93 95 96 LISTA DE FIGURAS FIGURA 1 - Representação de um sistema de banco de dados ................................ ...... FIGURA 2 - Representação da arquitetura cliente/servidor ..................................... ...... FIGURA 3 - Tipos de sistema cliente/servidor ......................................................... ...... FIGURA 4 - Componentes de um sistema cliente .................................................... ...... FIGURA 5 - Componentes de um sistema servidor .................................................. ...... FIGURA 6 - Representação de um sistema de banco de dados cliente/servidor ...... ...... FIGURA 7 - Estrutura de um SGBD......................................................................... ...... FIGURA 8 - Modelo de banco de dados relacional .................................................. ...... FIGURA 9 - Modelo de banco de dados orientado a objeto ..................................... ...... FIGURA 10 - Exemplos de resultados obtidos através de instrução SQL ............... ...... FIGURA 11 - A arquitetura ODBC........................................................................... ...... FIGURA 12 - A arquitetura DBI............................................................................... ...... FIGURA 13 - A arquitetura JDBC ............................................................................ ...... FIGURA 14 - A arquitetura do BDE......................................................................... ...... FIGURA 15 - Interface de um programa de aplicação.............................................. ...... FIGURA 16 - Estrutura de uma aplicação ................................................................ ...... FIGURA 17 - Representação de um processo de transação...................................... ...... FIGURA 18 - Conexão com SGBD cliente/servidor ................................................ ...... FIGURA 19 - Definindo privilégios no SQL Server 6.5........................................... ...... FIGURA 20 - Visão Geral do Oracle Enterprise Manager ....................................... ...... FIGURA 21 - Visão geral do Microsoft SQL Server................................................ ...... FIGURA 22 - Visão geral do Sybase SQL Server .................................................... ...... FIGURA 23 - Visão geral do Command Center do Informix ................................... ...... FIGURA 24 - Visão geral do Centro de Controle do DB2 ....................................... ...... FIGURA 25 - Visão geral do MySQL para Windows .............................................. ...... FIGURA 26 - Exemplo de aplicação web de comércio eletrônico ........................... ...... FIGURA 27 - Exemplo de processamento de dados geográficos na Internet ........... ...... 17 24 25 28 30 35 39 42 44 48 55 56 58 59 61 62 66 70 71 73 75 76 77 79 83 88 90 RESUMO Esta pesquisa tem por objetivo, apresentar uma abordagem sobre os sistemas de banco de dados utilizados em ambientes de processamento cliente/servidor, descrevendo seus principais componentes e as tecnologias empregadas para integração entre bancos de dados e aplicações. Com base nesta análise são apontados os principais aspectos que levaram os sistemas de bancos de dados cliente/servidor a se tornarem as principais plataformas para gerenciamento de dados e suporte às novas aplicações. CAPÍTULO 1 - APRESENTAÇÃO 1.1. INTRODUÇÃO Segundo Hackathorn (1993, p.2), a última década do século XX ocasionou uma profunda reavaliação sobre os fundamentos relativos aos sistemas de informação utilizados nas empresas. Tal fato originou-se em virtude da discussão gerada em relação à real efetividade de custo, desempenho e flexibilidade dos sistemas centralizados. Com base na meta de reduzir custos operacionais e ao mesmo tempo oferecer soluções de forma imediata aos seus clientes, as empresas apontaram como alternativa, adotar um processo de modernização através do achatamento de suas estruturas organizacionais. Tal processo visava integrar novas tecnologias às aplicações que representam as regras de negócio da organização. 11 Paralelamente, mesmo com a mudança imposta pela adoção de novos paradigmas empresariais, sempre houve a preocupação por manter dados pessoais e gerenciais armazenados com segurança e ao mesmo tempo, gerenciados de forma rápida e eficiente. Com a aquisição de novas soluções tecnológicas de tratamento de dados, esperava-se atingir o objetivo esperado, que é a produção de informações operacionais, necessárias para o processo de tomada de decisões. De acordo com Date (1990, p.5), o propósito principal a ser alcançado pelos sistemas de bancos de dados desde o seu surgimento, era o de oferecer recursos que visam manter os dados organizacionais e torná-los disponíveis quando solicitados. Com a adoção de sistemas de banco de dados, as empresas puderam dispor de uma ferramenta eficiente para tratamento e disseminação de informações, superando assim todas as limitações impostas pelos sistemas anteriores. Hoje podemos afirmar que os sistemas de informação evoluíram consideravelmente, contribuindo de forma significativa para o amadurecimento e o crescente uso dos sistemas de banco de dados. Com o surgimento de novos modelos de SGBDs, os sistemas de informação ganharam mais capacidade para armazenar e gerenciar bancos de dados de forma simples e eficiente. Já com a arquitetura cliente/servidor, os sistemas de banco de dados ampliaram ainda mais a sua potencialidade e a sua importância para as empresas. Isso impulsionou nos últimos anos o desenvolvimento de novas tecnologias capazes de prover integração entre banco de dados e suporte a várias aplicações em diferentes plataformas computacionais. 12 1.2. JUSTIFICATIVA Os sistemas de banco de dados cliente/servidor passaram a ser adotados por todas as empresas, devido às inúmeras vantagens apresentadas para prover suporte às novas aplicações empresariais. De acordo com Prado (1998, p.3), o que contribuiu de forma decisiva para a disseminação do uso dos sistemas de bancos de dados cliente/servidor, foram os inúmeros problemas encontrados em sistemas que utilizam o modelo de bancos de dados centralizado. Apesar dos sistemas centralizados proporcionarem ganhos significativos de produtividade, não ofereciam soluções para os seguintes problemas encontrados: - Aumento de tráfego na rede, tendo como causa o acesso simultâneo dos usuários ao banco de dados, gerando assim uma significativa degradação na performance do sistema; - Ausência de mecanismos que possibilitem restringir o acesso de usuários não autorizados a determinadas informações do banco de dados; - O grande volume de dados que eram processados em estações que, em muitos casos, não possuíam capacidade de processamento adequada nem memória suficiente. 13 A utilização da arquitetura cliente/servidor permitiu que os sistemas de banco de dados atuais pudessem superar todas as limitações impostas pelos sistemas centralizados, tornando o processo de gerência de banco de dados mais eficiente e com maior grau de segurança. Além desses benefícios, a arquitetura cliente/servidor possibilitou que os sistemas de informação pudessem evoluir, adotando novos recursos de hardware e software, capazes de oferecer maior eficiência e performance aos sistemas de gerência de banco de dados e suas aplicações. Como justificativa para o tema proposto, podemos destacar que a importância deste trabalho leva em conta que, os sistemas de banco de dados cliente/servidor, são os principais recursos da tecnologia da informação empregados atualmente nas empresas. A fim de ter-se um conhecimento amplo a respeito destes sistemas, pretende-se com este trabalho fornecer uma fonte de informação abrangente a respeito dos fundamentos e dos recursos tecnológicos empregados, de modo a contribuir para desenvolvimento de novas aplicações cliente/servidor. Vale lembrar que, a mudança do paradigma de “sistema centralizado” para o paradigma de “sistema cliente/servidor”, acabou se tornando uma atitude a ser adotada firmemente pelas organizações. Paralelamente, os sistemas de banco de dados, dentro deste novo paradigma, continuarão em pleno processo de evolução de modo a expandir cada vez mais a sua capacidade de forma a lidar com novos tipos de aplicações. 14 1.3. OBJETIVOS 1.3.1. GERAL Apresentar um estudo sobre sistemas de banco de dados que usam a arquitetura cliente/servidor, descrevendo os principais aspectos que contribuíram para transforma-la na principal plataforma para desenvolvimento de novas soluções, voltadas ao gerenciamento de dados empresariais. 1.3.2. ESPECÍFICOS - Apresentar os principais componentes dos sistemas de banco de dados cliente/servidor e sua aplicabilidade no processo de gerência de banco de dados; - Identificar as principais ferramentas disponíveis e os processos utilizados no gerenciamento de banco de dados multiusuário atuais; - Descrever os principais benefícios dos modelos de banco de dados cliente/servidor e suas aplicações. 15 1.4. ORGANIZAÇÃO DO TRABALHO Os itens subseqüentes deste trabalho estão distribuídos da seguinte forma: O Capítulo 2 aborda os conceitos fundamentais sobre os sistemas de banco de dados e a arquitetura cliente/servidor. Descreve os aspectos históricos e técnicos destas tecnologias, de modo a servir de base para compreensão a respeito da metodologia de funcionamento dos sistemas de banco de dados cliente/servidor. O Capítulo 3 relata uma visão geral sobre os conceitos fundamentais referente aos sistemas de banco de dados cliente/servidor. São apresentadas as características de seus componentes e os principais mecanismos utilizados no processo de gerenciamento e segurança dos dados. Também serão abordados neste capítulo os principais SGBDs cliente/servidor existentes no mercado, descrevendo algumas das principais características empregadas nestes produtos. O Capítulo 4 descreve as principais aplicações de banco de dados clientes/servidor, analisando os principais aspectos funcionais e tecnológicos e empregados nestas aplicações. O Capítulo 5 apresenta a conclusão do trabalho realizado, expondo as considerações finais do autor, sugestões e outras observações que poderão contribuir para futuras pesquisas relacionadas o tema deste trabalho. CAPÍTULO 2 - REVISÃO BIBLIOGRÁFICA 2.1. FUNDAMENTOS SOBRE SISTEMAS DE BANCO DE DADOS 2.1.1. Retrospectiva Histórica Em meados dos anos 60 do Século XX, os paradigmas de armazenamento e processamento de informações passaram por uma grande mudança com o surgimento da tecnologia de armazenamento baseada em discos magnéticos. Isso fez com que dados e aplicações de software, que antes formavam um único elemento, passaram a ser independentes um do outro. Isso permitiu a criação de ferramentas capazes de gerenciar e manipular estes dados da forma mais eficiente possível a fim de obter os resultados esperados. Os sistemas de banco de dados vieram a surgir na década de 60, com o objetivo de fornecer recursos capazes de armazenar, organizar, manipular e recuperar dados de forma segura, rápida e eficiente. Trata-se de uma solução que supera todas as 17 limitações da tecnologia baseada nos sistemas de arquivos tradicionais, que tinham uma ampla dependência com relação à forma de organização da estrutura dos arquivos. Essa dependência obrigava a alterar toda programação das funções de dados, sempre que houvesse alterações em sua estrutura. Além disso, eles não apresentavam soluções para problemas relativos à duplicação da informação, inconsistências e integridade. Segundo Melo (1997, p.3), um sistema de banco de dados pode ser definido como “um ambiente de hardware e software composto por dados armazenados em banco de dados (BD), o software que gerencia o banco de dados (SGBD) e os programas de aplicação”. Pode-se dizer que esta modalidade de processamento de dados trouxe uma série de vantagens, sendo que a mais significativa foi tornar os bancos de dados independentes da aplicação. As aplicações, que antes acessavam os dados diretamente, passaram a se comunicar com o SGBD, enviando apenas as requisições necessárias para obter os resultados desejados. Figura 1: Representação de um sistema de banco de dados 18 Para chegar aos modelos atuais, os sistemas de banco de dados passaram por uma série de mudanças na sua arquitetura, de forma a se tornar compatível com as novas tendências de tecnologia adotadas pelas organizações. Nos anos 70, quando o foco principal era voltado exclusivamente aos programas de aplicação, os sistemas projetados tinham a função de atender apenas as necessidades específicas da empresa. Isso resultou em sistemas robustos, que dependiam diretamente da plataforma computacional na qual eram projetados para operar. Já nos anos 80, o avanço da tecnologia dos chips contribuiu de forma significativa para diminuir o tamanho e o custo dos computadores. Juntamente com a popularização do software e a disseminação das redes de computadores, criou-se uma nova filosofia de desenvolvimento de aplicações de bancos de dados, cujo foco estaria centralizado no usuário final. Com a difusão da computação distribuída, que levou a aplicação a ser executada nas estações de trabalho, os requisitos de novas aplicações se baseavam em oferecer recursos que tornassem a apresentação dos dados mais simples para os usuários. Para complementar, as ferramentas de conectividade remotas adequadas, fizeram com que os dados pusessem ser compartilhados por sistemas computacionais de diferentes plataformas. Atualmente os sistemas de banco de dados podem ser agrupados em modelos, os quais representam claramente os diversos estágios de evolução até chegar aos modelos atuais. Segundo Salemi (1994, p.7), os modelos de banco de dados possibilitaram dividir os sistemas em várias categorias que serão apresentadas a seguir. 19 a) Sistema de Gerenciamento de Arquivos (FMS – File Management System): Foi a primeira forma utilizada para armazenamento de dados em banco de dados. A metodologia de funcionamento e baseia em armazenar os dados de forma seqüencial em um único arquivo. Esse sistema tem como vantagem a simplicidade na forma em que os dados são estruturados no arquivo. No entanto esse sistema não apresenta relação entre os dados, nem mecanismos de busca, classificação e recursos para evitar problemas de integridade. b) Sistema de Banco de Dados Hierárquico (HDS – Hierarquical Database System): Surgiu na década de 60 com a primeira linguagem de banco de dados conhecida como a DL/I desenvolvida pela IBM e a North American Aviation. É um modelo de banco de dados onde os dados armazenados são estruturados em forma de árvore. Cada estrutura de dados se origina a partir de um nó raiz e se ramifica criando relações pai-filho com outras classes de dados, criando assim relações de um para vários elementos. A desvantagem estaria na rigidez da estrutura de dados, que obrigaria refazer todo o banco de dados, caso a classe de dados principal ou a classe que possuem classes dependentes fosse alterada. São exemplos de bancos de dados hierárquicos o IMS (Information Management System) da IBM e TDMS (Time-shared Database Management System) da System Development Corporation. c) Sistema de Banco de Dados em Rede (NDS - Network Database System): Esse modelo surgiu entre a década de 60 e 70 como uma extensão do modelo hierárquico, incorporando recursos para criar mais de uma relação pai-filho e estabelecer relações entre os seus elementos. Esta metodologia torna a pesquisa 20 mais rápida e mais flexível, pois não depende de um único nó raiz como vetor de inicialização de pesquisa. Entretanto apesar da flexibilidade, o modelo de rede ainda apresenta os mesmos problemas com relação ao projeto de estrutura do modelo hierárquico. Qualquer alteração feita em uma classe de dados implicaria na criação de uma nova estrutura para suportar àquela alteração. Seus principais representantes são o IDS da General Eletric e o Idms da Cullinet. d) Modelo de Dados Relacional (RDM – Relational Data Model): Trata-se de um modelo criado na década de 70 pelo pesquisador da IBM Dr. E. F. Codd, cujo propósito era representar os dados de forma mais simples, através de um modelo matemático de conjuntos de tabelas inter-relacionadas. Este modelo abandona por completo os conceitos anteriores, tornando os bancos de dados mais flexíveis, tanto na forma de representar as relações entre os dados, como na tarefa de modificação de sua estrutura, sem ter que reconstruir todo o banco de dados. A única peculiaridade com os modelos anteriores é que os detalhes sobre como os dados são armazenados e acessados não são revelados ao usuário, o que torna necessário projetar as aplicações de forma de acessem os dados baseados apenas no formato já estabelecido pelo SGBD. Com base nesta retrospectiva, podemos notar que os modelos de dados são diretamente responsáveis pela evolução dos sistemas de banco de dados. Com o surgimento de novos modelos, novas categorias de SGBDs puderam ser utilizadas ao longo dos anos. Podemos citar como exemplo o ADABAS da Software A. G. que usa o modelo de banco de dados baseados em listas invertidas1. 1 Trata-se de um tipo de banco de dados que se baseia em realizar pesquisas através de mecanismos de rotas de acesso, diferente dos bancos de dados relacionais que se fundamentaram na álgebra relacional. 21 Os novos modelos de banco de dados com tecnologia de orientação a objetos (OODBMS – Object-Oriented Database Management System)2 são considerados uma forte tendência para estabelecimento de um modelo para novas tecnologias de banco de dados. No entanto, devido à falta de um modelo padrão para construção de bancos de dados OO puros, a baixa performance apresentada por eles, e a falta de recursos utilizados atualmente em grande escala em aplicações empresariais, fizeram com que a demanda por OODBMS diminuíssem. Como alternativa, vários fabricantes de SGBD adotaram a medida de incorporar características OO aos modelos relacionais, criando assim os modelos de banco de dados objeto-relacionais (ORDBMS – Object-Relational Database Managenent System). Atualmente o modelo de dados Objeto-Relacional já está sendo implementado na maioria dos produtos de SGBD. Acredita-se que o uso estes produtos será cada vez mais difundido em relação aos ORDBMS devido ao sucesso dos já consolidados bancos de dados relacionais. 2 Considera-se orientação a objetos como uma terminologia usada para desenvolvimento de sistemas com uso de recursos de modularidade e reusabilidade de componentes. 22 2.1.2. Teoria de Banco de Dados Multiusuário Um banco de dados multiusuário, segundo Kroenke (1999, p.205), é um tipo especial de banco de dados que pode ser manipulado por mais de um usuário ao mesmo tempo. Este conceito surgiu com base na preocupação em fazer com que os processos de um usuário não interferissem nos dos demais, garantindo assim a integridade dos dados do sistema. Atualmente, os bancos de dados multiusuário são utilizados em todos os tipos de aplicações, onde os acessos são realizados simultaneamente por vários usuários. Podemos ter como exemplo os sistemas de dados bancários, automação comercial, agência de viagens, etc. Com relação à arquitetura, os bancos de dados multiusuário, no princípio, eram baseados nos modelos de sistemas onde todo o processamento era feito em um computador central (mainframe ou minicomputador). Todas as requisições dos usuários eram feitas através de terminais ou em computadores que emulavam esses terminais. Com o surgimento dos microcomputadores e a interligação destes através de rede de comunicação de dados, a exigência de bancos de dados com características de processamento multiusuário tornou-se um requisito cada vez mais importante, devido às inúmeras operações de transações que são realizadas pelas aplicações. 23 2.2. FUNDAMENTOS SOBRE A ARQUITETURA CLIENTE/SERVIDOR 2.2.1. Aspectos Básicos da Arquitetura Cliente/Servidor A arquitetura cliente/servidor é atualmente a principal plataforma tecnológica da indústria tecnologia da informação. A sua popularização se deve aos vários fatores oriundos do processo de achatamento das estruturas organizacionais, fazendo com que muitos dos sistemas fossem descentralizados. Segundo Renaud (1994, p.3) “cliente/servidor é um conceito lógico, mais precisamente um paradigma, ou modelo para interação entre processos de software em execução concorrente”. Isso significa dizer que a metodologia cliente/servidor foi criada com o objetivo de possibilitar que vários tipos de aplicações, executadas em máquinas distintas, se comuniquem entre si, sem que a execução de um processo interfira no do outro. Baseado neste conceito, a arquitetura cliente/servidor estabeleceu um novo paradigma de processamento de dados, diversificando o processamento entre dois processos de software distintos (cliente e servidor). Ao mesmo tempo a arquitetura visa fornecer recursos que coordenem estes processos de forma que, a perda de sincronização, não resulte em alterações ou perda de informações para o sistema. 24 Seu funcionamento se baseia no seguinte esquema: o usuário do sistema, através do processo de software cliente, envia o pedido de requisição ao processo de software servidor, que por sua vez devolve ao cliente os resultados solicitados. Todos os processos de software rodam sobre o controle do Sistema Operacional que coordena todos os recursos do sistema computacional utilizado. Figura 2: Representação da arquitetura cliente/servidor 2.2.2. Tipos de Sistema Cliente/Servidor Ainda segundo o autor, os sistemas cliente/servidor podem ser divididos em vários tipos, dependendo da forma em que os processos cliente e servidor estão alocados. Os tipos de sistema podem ser classificados nas seguintes categorias descritas a seguir. 25 a) Intra-sistema cliente/servidor: sistemas nos quais os processos cliente e servidor residem no mesmo local. São exemplos típicos as estações de trabalho, isoladas ou não da rede. O usuário ao fazer uso da aplicação local emite uma solicitação de serviço ao processo servidor situado na mesma máquina onde o usuário está operando; b) Servidor Desktop: abrange os sistemas nos quais tanto o processo cliente quanto o servidor residem na máquina servidora e os usuários, através de uma estação ou terminal remoto, interagem com o processo cliente remotamente emitindo o pedido e recebendo os resultados; c) Cliente Desktop: nesse sistema o processo cliente é executado na estação de trabalho do usuário na qual são enviadas as requisições à máquina servidora através da rede. O servidor por sua vez recebe as requisições do cliente, efetua o processamento e devolve os resultados. Figura 3: Tipos de sistema cliente/servidor 26 Atualmente, mesmo possibilitando a execução dos processos tanto o cliente quanto o servidor em uma única máquina, o que caracteriza realmente o fundamento da arquitetura cliente/servidor hoje em dia é a divisão do poder de processamento. Os dois processos são separados em máquinas distintas e ao mesmo tempo, são interligadas através de uma rede de computadores local (LAN) ou remota (WAN), o que permite as estações de trabalho processarem os dados armazenados no servidor, liberando o mesmo para a execução de outras aplicações. 2.2.3. Principais Mecanismos Os principais mecanismos da arquitetura estão divididos entre sistema cliente, sistema servidor e a rede de comunicação de dados. Serão analisadas neste tópico as principais características que complementam cada um destes mecanismos, visando um melhor entendimento sobre a sua importância para o processamento das informações. 2.2.3.1. O Sistema Cliente O sistema cliente é a parte responsável pela tarefa de requisição de pedidos ao servidor e também por toda a parte relativa à interação com o usuário final. Normalmente os sistemas cliente abstraem do usuário todas as funções de rede e do servidor, fazendo parecer que todos os processos estão rodando em um mesmo local. 27 Para prover esta interação, o sistema cliente abrange um conjunto de componentes básicos que auxiliam nas funcionalidades, tanto ao nível de aplicação como de sistema. Estes componentes de acordo com Melo (1997, p.28) são agrupados em: a) Hardware de estação: é formado pelos componentes básicos de um sistema de computação, tais como unidade central de processamento (CPU), memória, unidades de disco e dispositivos de entrada e saída de dados (periféricos); b) Sistema operacional: é o software que possui o conjunto de instruções necessárias para gerenciar os recursos de hardware e fornecer os meios necessários para que as aplicações utilizem estes recursos de forma adequada; c) Interface de conectividade: concentra o conjunto de instruções para permitir que os processos cliente interajam com o processo servidor através da rede de comunicação; d) Os programas de aplicação: consiste em um conjunto de programas desenvolvidos com a finalidade de realizar operações que atendam a uma necessidade específica do usuário ou organização; e) Interface Gráfica de Usuário (GUI): é o principal componente de interação de interação com os usuários finais, pois é o que torna as aplicações serem utilizadas de forma mais simples e intuitiva. 28 Figura 4: Componentes de um sistema cliente 2.2.3.2. O Sistema Servidor O sistema servidor é a parte responsável de um sistema cliente/servidor que tem a função de receber dos clientes as requisições, processa-las e devolve-las ao mesmo os resultados. A grande vantagem desse sistema é que, por ser totalmente reativo, só é disparado quando recebe alguma requisição do cliente. Isso faz com que o servidor não procure interagir com outros servidores durante um pedido de requisição, o que torna o processo de ativação uma tarefa a ser desempenhada apenas pelo cliente que o solicitou. 29 Da mesma forma que o sistema cliente, o sistema servidor possui um conjunto de componentes básicos para prover as funcionalidades necessárias ao processamento de informações através da rede. Estes componentes são divididos em: a) Hardware de servidor: normalmente são compostos por sistemas de computação que variam de microcomputadores de alto desempenho até computadores de grande porte. Estes sistemas, para cumprir a função de servidor, devem possuir alta capacidade de armazenamento e grande quantidade de memória para fornecer melhor desempenho aos processos que estarão sempre rodando a espera de requisições; b) O sistema operacional de rede: consiste em um recurso de software que além de gerenciar os componentes de hardware, fornecem recursos que possibilitam obter o controle total da rede de comunicações através de componentes de controle de acesso, compartilhamento de recursos, administração e gerência, além de outras funções de rede necessárias; c) Interface de conectividade: são caracterizados pelo uso de protocolos de comunicação e de interfaces para acesso a bancos de dados; d) O SGBD: é o componente do sistema de banco de dados responsável por todo o gerenciamento e controle centralizado dos dados operacionais. 30 Figura 5: Componentes de um sistema servidor 2.2.3.3. A Rede de Comunicação de Dados A rede de comunicação de dados consiste em um conjunto de componentes de hardware e software, interligados de forma a oferecer interação entre os sistemas cliente e servidor. As redes de computadores, as quais são formadas pela interconexão entre os computadores de um sistema computacional, estabelecem um caminho físico para que os processos cliente e servidor se comuniquem. 31 Segundo Melo (1997, p.41), “as ligações podem ser implementadas através de linhas telefônicas públicas, linhas privadas de comunicação, canais de satélite ou de rádio e outros meios que a tecnologia está disponibilizando, com a mesma função”. Com base nesta observação, pode-se dizer que o avanço tecnológico contribuiu bastante para disseminação e uso das redes e conseqüentemente para a expansão do uso dos recursos computacionais em diversas áreas de aplicação. Atualmente os tipos de rede são agrupados em três categorias distintas. Esta classificação é feita de acordo com a distância em que os componentes de hardware estão alocados. Estas redes podem ser: a) Redes Locais (Local Area Networks - LANs): são redes que permitem a interconexão de equipamentos de comunicação de dados e compartilhamento de recursos numa área fisicamente próxima, tais como as propriedades privadas; b) Redes Metropolitanas (Metropolitan Area Networks - MANs): são redes que apresentam as mesmas características das redes locais, porém cobrem distâncias maiores do que as LANs e operam em velocidades maiores; c) Redes Geograficamente Distribuídas (Wide Area Networks - WANs): são redes capazes de compartilhar recursos especializados por uma comunidade maior de usuários geograficamente dispersos. 32 Outro fator importante com relação à comunicação é a questão de como as estações de trabalho se comunicam através da rede, independente do tipo de rede utilizado. Para que seja possível viabilizar esta comunicação, os sistemas cliente/servidor utilizam protocolos de rede, que são elementos responsáveis pela interação entre sistemas de igual, ou diferentes plataformas. Dentre os principais protocolos podemos destacar o TCP/IP, Netware IPX/SPX, AppleTalk, NetBios e OSI (Open Systems Interconnection). 2.2.4. Aplicações e Perspectivas Embora as aplicações destinadas ao acesso aos bancos de dados em rede sejam as mais utilizadas nesta arquitetura, elas apenas representam apenas um tipo comum de sistemas cliente/servidor. Existem várias outras aplicações entre as quais podemos citar a própria Internet, que utiliza redes de comunicações para prover uma grande variedade de serviços. Outras aplicações podem ser inseridas neste contexto, como por exemplo, os sistemas de gerenciamento de backup, gerenciamento de impressão, aplicações multimídia e comunicações. Convém afirmar que a adoção desta arquitetura impulsionou o mercado a desenvolver produtos cada vez mais poderosos, não só para oferecer interação com o usuário, como também para aumentar a produtividade no campo de desenvolvimento de aplicações, deixando de lado a filosofia de se desenvolver produtos voltados apenas ao gerenciamento do banco de dados. CAPÍTULO 3 - SISTEMAS DE BANCO DE DADOS CLIENTE/SERVIDOR 3.1. DEFINIÇÕES Um sistema de banco de dados cliente/servidor pode ser definido como um sistema cliente/servidor onde pelo menos uma máquina servidora é responsável por manter e processar o banco de dados. Os dados armazenados ficam disponíveis aos usuários que poderão manipula-los através das aplicações cliente, instaladas em suas estações de trabalho individuais. Os sistemas de banco de dados cliente/servidor são utilizados atualmente pela maioria das organizações, devido à flexibilidade obtida com esta plataforma. Com a arquitetura cliente/servidor, tornou-se possível criar um ambiente capaz de fornecer um controle centralizado dos dados. Ao mesmo tempo, pode-se integrar novas tecnologias e aplicações de banco de dados, independente do tipo de plataforma ou sistema operacional utilizado. Isso reforça ainda mais a demanda por novas aplicações que não aderem a padrões específicos de arquitetura (sistemas abertos). 34 Com base na filosofia cliente/servidor, os sistemas de banco de dados dividem o processamento entre os dois sistemas distintos. Para execução de suas respectivas tarefas, estes sistemas utilizam uma estrutura, que normalmente compõe um servidor de banco de dados e as estações de trabalho, interligadas através da rede. Os sistemas podem ser definidos em sistemas Cliente e Servidor, cujos detalhes serão descritos a seguir. 3.1.1. O Sistema Cliente Encarrega-se de executar nas estações cliente as aplicações responsáveis pela manipulação dos dados armazenados no servidor de banco de dados. As aplicações cliente/servidor, chamadas de aplicações “front-end”’, correspondem a um conjunto de programas integrados desenvolvidos em alguma linguagem de programação1. Essas aplicações são na sua grande maioria compostas de uma interface gráfica de usuário (GUI – Graphical User Interface) e de funções que permitem realizar tarefas de requisição de serviços ao servidor. Isso permite ao usuário interagir com o SGBD sem ter que se preocupar com as complexidades da arquitetura, no que diz respeito aos métodos utilizados para acesso aos dados armazenados, bem como na forma na qual eles são atualizados. 1 Trata-se de um software que tem a capacidade de desenvolver novos programas de aplicação. Algumas linguagens podem ser utilizadas para desenvolver até mesmo outras linguagens de programação. 35 3.1.2. O Sistema Servidor Constitui na parte que concentra o banco de dados, o SGBD propriamente dito a as demais aplicações, conhecidas como aplicações “back-end”. Estes componentes têm a função realizar o processamento dos dados requisitados pelo cliente através da rede. No que se refere à localização dos dados e do SGBD no servidor, tanto podem estar armazenados em servidores que executam outras tarefas (como por exemplo, um servidor de arquivos ou de comunicações), ou em um servidor dedicado (servidor de banco de dados). Figura 6: Representação de um sistema de banco de dados cliente/servidor 36 3.2. VANTAGENS E DESVANTAGENS Com base na filosofia cliente/servidor voltada ao processamento de banco de dados, existe uma série de vantagens significativas, dentre as quais podemos destacar: - O aumento de desempenho, através da distribuição das tarefas de banco de dados entre computadores clientes e servidores. Todo o processamento desempenhado pelo SGBD passou a ser executado no lado do servidor, enquanto que as aplicações que manipulam dados, passaram a ser executadas no lado do usuário nas estações de trabalho, reduzindo drasticamente o tráfego da rede; - A independência da estação de trabalho, que torna possível aos usuários executarem aplicações de banco de dados em qualquer tipo de plataforma ou sistema; - A preservação da integridade dos dados, dando ao SGBD a capacidade de efetivar controle de atualizações através de mecanismos de transações e controle de concorrência, adequados ao processamento de banco de dados multiusuário; - Segurança dos dados reforçada, através de mecanismos de backup e restauração de banco de dados implementados nos produtos de SGBDs. 37 No que se refere às desvantagens, a utilização de banco de dados cliente/servidor pode apresentar alguns inconvenientes, tais como: - Aumento de custo com pessoal, o que obriga a investir em capacitação ou contratação de profissional para administração e suporte para manutenção do banco de dados; - O aumento da quantidade de componentes de sistema pode contribuir para aumentar a complexidade; - A independência de aplicativos cliente/servidor pode aumentar a quantidade de suporte de programação para estações de trabalho; - A necessidade de se ter controle efetivo das operações de transação com dados. Como as estações de trabalho tendem a acessar os dados de forma simultânea, tornaria necessário então coordenar o processamento das aplicações para evitar perda de atualização de dados na rede. 38 3.3. COMPONENTES PRINCIPAIS 3.3.1. O Sistema de Gerenciamento de Banco de Dados (SGBD) Podemos caracterizar o SGBD como um recurso de software composto por programas e utilitários destinados às tarefas voltadas para o completo gerenciamento de um sistema de banco de dados. As principais tarefas a serem desempenhadas pelo SGBDs se constituem no armazenamento, organização, atualização e restauração de banco de dados de sistemas computacionais. O SGBD é considerado o componente mais importante do sistema de banco de dados, pois concentra todos recursos que definem o que um sistema computacional deve possuir para gerenciar bases de informações, de modo a atender às necessidades de integração, exigidas pelas novas tecnologias. Sob o ponto de vista lógico, seu principal propósito era de estabelecer um modelo que representasse o mundo real, capturando os dados e dando a eles conteúdo e estrutura de forma a tornar possível ao banco de dados representar logicamente os aspectos da vida real de cada elemento para um fim específico de um usuário ou grupo de usuários. 39 Na prática, além de cobrir estas necessidades, a utilização dos SGBDs tornou a administração do banco de dados mais segura, fazendo com que as aplicações não tenham acesso direto ao dados armazenados, como era o caso dos sistemas de arquivos convencionais. Todas as requisições feitas pelas aplicações passaram a ser analisadas e processadas pelo SGBD. Isso favoreceu a sua utilização como base de administração de dados para diversos tipos de aplicações. Figura 7: Estrutura de um SGBD Em resumo, as principais características funcionais dos SGBDs, podem ser definidas da seguinte maneira: - Todas as operações em banco de dados solicitadas pelos clientes são realizadas diretamente pelo SGBD no próprio servidor, devolvendo ao cliente apenas o resultados; 40 - Utiliza esquemas de controle de acesso, que determinará quais usuários terão acesso aos dados armazenados no banco de dados, assim como os privilégios que cada um terá sobre eles; - Utiliza-se de toda a potencialidade do servidor para a execução de operações de validação de dados e execução de instruções mais complexas; - Garante a segurança dos dados armazenados e as mantém ao mesmo tempo rapidamente disponíveis aos usuários. Com o passar dos anos, a evolução dos SGBDs vem contribuindo bastante para o surgimento de produtos cada vez mais sofisticados. Muitas empresas produtoras de software têm investido constantemente na criação e aprimoramento destes produtos. Um dos fatores que tem contribuido bastante é o aprimoramento dos modelos de representação de dados que são considerados o principal elemento responsável pela evolução dos SGBDs. 3.3.2. O Modelo de Representação de Dados O modelo de representação de dados é o elemento que está diretamente relacionado à qualidade dos SGBDs, pois dá a eles a capacidade de traduzir ou modelar o mundo real, descrevendo como os dados serão acessados e manipulados pelos usuários. 41 Com o passar dos anos, vários modelos surgiram gerando novas categorias de banco de dados. Atualmente o modelo relacional é a principal base para o desenvolvimento de produtos de SGBDs. Esse modelo, além de solucionar os problemas encontrados nos modelos que o antecederam, ainda deu mais flexibilidade na organização e manipulação de bancos de dados maiores e mais complexos. No entanto, com o avanço da tecnologia, a demanda por sistemas capazes de gerenciar dados complexos tornou-se um fator que impulsionou a elevação de esforços para criar novos modelos de tratamento de dados. Segue aqui um relato sobre os principais modelos de dados existentes e os que poderão se tornar a plataforma principal para desenvolvimento de novos SGBDs cliente/servidor. 3.3.2.1. Modelo Relacional O modelo relacional foi criado por Codd em 1970 com o propósito de tornar o mundo mais simples na visão dos usuários e dar aos SGBDs a capacidade de processar os dados de forma mais eficiente. O modelo relacional se baseia em representar os dados em forma de tabelas, que se relacionam através de um elemento comum que atenda às restrições impostas pelo próprio modelo, garantindo a integridade dos dados. 42 Figura 8: Modelo de banco de dados relacional O sucesso atual dos SGBDs que usam o modelo relacional fez com que estes produtos dominassem cerca de 90% do mercado de bancos de dados corporativos. Juntamente com a linguagem SQL e as interfaces de comunicação, este modelo facilitou a implementação de vários processos disponíveis na vida dos usuários. Hoje é comum encontrar aplicações de bancos de dados relacionais cliente/servidor em diversos ambientes de sistemas empresariais, seja na Internet ou em ambientes corporativos mais restritos. No entanto, a ampla utilização dos bancos de dados ao logo do tempo fez com que houvesse uma demanda cada vez maior por modelos capazes de operar com novos tipos de dados (como som, imagens, texto, etc.), cada vez mais comuns nas aplicações empresariais atuais. 43 3.3.2.2. Modelo Orientado a Objetos Analisando as aplicações atualmente existentes, podemos perceber que existe uma grande variedade de novos tipos de dados os quais somos obrigados a lidar. A necessidade de fazer com que dados não-convencionais, pudessem ser estruturados e armazenados em banco de dados, tornou-se um motivo para que se desenvolvessem modelos de dados mais complexos para atender a esses requisitos. O modelo de banco de dados orientado a objetos (OO) é baseado nos conceitos de orientação a objetos, já difundidos em linguagens de programação como o SmallTalk e o C++. Seu objetivo principal é tratar os tipos de dados complexos como um tipo abstrato (objeto), podendo ser definidos tanto à nível interno como pelo próprio usuário. Segundo Silberschatz (1999, p.269), a filosofia do modelo de dados OO consiste em agrupar os dados e o código que manipula estes dados em um único objeto, estruturando-os de forma que possam ser agrupados em classes. Isso significa que, baseado nos conceitos OO, os objetos de banco de dados agrupados podem usar o mesmo mecanismo de herança para definir superclasses e subclasses de objetos, criando assim hierarquias. 44 Figura 9: Modelo de banco de dados orientado a objeto Dentre as vantagens significativas proporcionadas pelos SGBD orientados a objetos (SGBDOO), podemos destacar a capacidade de integração com linguagens de programação OO. Esta integração permite que os métodos envolvidos no processo de armazenamento e gerenciamento possam ser feitos de forma automática, desconsiderando a necessidade de ter conhecimento da linguagem de programação utilizada. Outra vantagem do modelo OO é a capacidade de permitir que os usuários definam tipos de dados que serão gerenciados pelo SGBD. No modelo OO não existe dependência de relacionamentos. Os tipos dados também não precisam ser incorporados aos SGBDs, como ocorre nos modelos relacionais. 45 As desvantagens significativas, no entanto, estariam relacionadas às exigências impostas pela linguagem de programação OO, além do alto custo de conversão do banco de dados tradicional para o modelo OO. A ausência de ferramentas mais eficientes para geração de consultas e relatórios também é um fator a ser considerado. Podemos considerar ainda que não se tem uma informação precisa sobre o desempenho dos SGBDOO em sistemas que lidem com grande volume de dados, o que levanta a dúvida sobre se os SGBDOO são ou não melhores do que os SGBDs, utilizados atualmente no processamento de dados convencionais. Acredita-se também que os SGBDOO demandem recursos mais eficazes destinados ao processamento de transações e controle de concorrência. Para finalizar, é importante que se tenha uma definição de um padrão específico para a construção de SGBDOO. Segundo Kroenke (1999, p.322), são apresentadas duas soluções de padronização para incluir recursos de orientação a objetos aos bancos de dados. Uma delas é o desenvolvimento do padrão SQL3 proposta pelos comitês ISO e ANSI fundamentada na ampliação do padrão SQL92, usado nos modelos relacionais. A outra solução se origina de um consórcio entre fabricantes de banco de dados de objetos com outros especialistas. Trata-se do modelo ODMG-93, que se baseia no objeto como sua estrutura fundamental e os aspectos relacionados ao gerenciamento de dados são tidos como um processo evolutivo. 46 O ODMG-93 é um modelo completamente diferente do padrão SQL3 que se baseia na visão do banco de dados e evolui na visão do objeto. Ainda segundo o autor, não se tem certeza de qual padrão será o mais utilizado, mas acredita-se que muitas empresas produtoras de software poderão se apoiar em qualquer um destes padrões para construção de SGBDOO cliente/servidor. 3.3.2.3. Modelo Objeto-Relacional O Modelo Objeto-Relacional surgiu como uma alternativa de expandir o modelo relacional para atender a demanda de construção de sistemas a lidar com dados complexos não suportados pelo modelo relacional. O fator que obrigou o seu surgimento se fundamentou nas questões relacionadas a real efetividade do modelo OO, no que diz respeito ao desempenho e custos com a migração de bancos de dados relacionais para bancos de dados OO. Como conseqüência, a migração ocasionaria uma brusca mudança em praticamente todas as aplicações que completam o sistema computacional da organização. Este modelo se baseia na adoção de conceitos de orientação a objetos integrados ao modelo relacional. Isso significa dizer que este modelo é capaz de incluir características de orientação a objetos e ao mesmo tempo incorporar estruturas às linguagens de consultas relacionais como a SQL. 47 Como principal benefício, esse modelo permite ampliar a capacidade dos SGBDs para lidar com dados complexos, evitando que os produtores de software desconsiderem os investimentos feitos na produção de SGBDs relacionais. Entretanto, da mesma forma que o modelo OO, não existe um modelo padrão padronizado para construção de SGBDs objeto-relacionais. Diferente dos SGBDs relacionais, que são sustentados por um modelo formal já definido, os SGBDs objetorelacionais obtiveram sucesso comercial graças às iniciativas de implementações em produtos comerciais já disponíveis no mercado como o Oracle 8.x da Oracle Corporation. 3.3.3. A Linguagem SQL e seus Recursos A linguagem SQL (Structured Query Language), surgiu em meados os anos 70 com a finalidade de se tornar uma linguagem padrão para acessar um antigo banco de dados relacional (o System R da IBM), que rodava em computadores de grande porte (mainframes). Atualmente, esta linguagem garante seu sucesso no mercado de banco de dados simplesmente porque está integrada em praticamente todos os produtos de SGBDs Relacionais e Objeto-Relacionais. 48 Segundo Kroenke (1999, p.175), a linguagem SQL é tida como “uma linguagem orientada a transformações que aceita uma ou mais relações como entrada e produz uma relação única como saída”. Isso significa dizer que a linguagem SQL é capaz de transformar em resultado, qualquer operação envolvendo uma ou mais tabelas dentro de banco de dados. Cada um destes resultados gera uma nova tabela com linhas e colunas conforme a definição estabelecida pelo modelo relacional. Sua principal vantagem é a capacidade de facilitar e agilizar a consulta e manipulação de dados, independente da plataforma que está sendo usada, ou em qual linguagem o aplicativo que irá interagir com os dados tenha sido desenvolvido. Figura 10: Exemplo de resultados obtidos através de instrução SQL. 49 Esta linguagem apresenta uma série de instruções (comandos) para definir e manipular estruturas de banco de dados. No que diz respeito à definição de dados, a SQL utiliza a chamada de DDL (Data Definition Language), que é composta pelos comandos destinados a criação de banco de dados, tabelas e relações. Como exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop. No que diz respeito à manipulação de dados, a SQL utiliza chamadas da série DML (Data Manipulation Language), destinadas a operações de consulta, inclusão, exclusão e alteração de registros das tabelas de uma banco de dados. Como exemplo de comandos da classe DML temos os comandos Select, Insert, Update e Delete. Devido a sua popularidade, a linguagem SQL fez com que muitos produtos de banco de dados SQL fossem lançados no mercado. Cada um com características próprias do vendedor. Isso fez com que o comitê de padronização ANSI (American National Standard Institute) estabelecesse uma padronização para esta linguagem, que resultou na criação de várias especificações. Hoje o SQL2 ou SQL92 é tido como o padrão mais utilizado nos SGBDs cliente/servidor comerciais, devido aos novos mecanismos introduzidos nesta linguagem que serão apresentados a seguir. 50 3.3.3.1. Visões Uma visão em SQL consiste em uma forma que a linguagem utiliza para gerar uma tabela virtual com resultados oriundos de outras tabelas fisicamente existentes no banco de dados. Trata-se de um recurso que pode ser bastante utilizado em casos onde aplicação necessite acessar informações que geralmente já são resultados de outra operação de consulta. Como exemplo temos o Create View que é o principal comando SQL utilizado definição de visões. 3.3.3.2. Índices Os índices são caracterizados como um meio utilizado para melhorar o desempenho das aplicações de banco de dados. Trata-se de um método que possibilita criar uma tabela auxiliar, contendo uma seqüência de registros indexados por uma ou mais colunas, freqüentemente utilizadas como critérios de pesquisa em uma tabela. A definição para criação de índices é feita através do comando Create Index. 51 3.3.3.3. Transações Para realizar transações, que são uma das tarefas mais importantes dos SGBDs cliente/servidor, a linguagem SQL utiliza instruções que permitem realizar com sucesso as transações, garantindo a integridade para as informações. Também permite desfaze-las antes de realizar as alterações no banco de dados. A SQL utiliza os comandos Commit e Rollback que, respectivamente, efetiva e desfaz as transações. 3.3.3.4. Procedimentos Armazenados Os procedimentos armazenados são objetos de banco de dados que ficam localizados no servidor, tendo como finalidade armazenar um conjunto de instruções SQL que poderão ser executadas em qualquer momento pelas aplicações. Outra característica dos procedimentos armazenados é a capacidade de receber parâmetros e retornar valores quando necessário, agilizando assim trabalho das aplicações. A criação de procedimentos armazenados no SGBD é feita através do comando Create Procedure. 52 3.3.3.5. Triggers Da mesma forma que os procedimentos armazenados, os triggers contém conjuntos de instruções SQL que ficam armazenadas no servidor, porém eles não podem receber parâmetros nem retornar valores. Em um banco de dados cliente/servidor, os triggers permitem especificar regras de negócio que são chamadas pelo próprio banco de dados no momento em que ocorre um determinado evento, reforçando ainda mais as restrições de integridade do banco de dados. A definição para a criação de triggers no banco de dados é feita com o comando Create Trigger. 3.3.4. Interfaces de Comunicação com Banco de Dados Vimos que a arquitetura cliente/servidor proporcionou aos sistemas de computação distribuir os processos cliente e servidor através da rede, levando a funcionalidade da aplicação para o lado do usuário. Com esta distribuição, os SGBDs puderam seguir seu padrão, concentrando as atividades de gerência de banco de dados apenas no lado do servidor, limitando as aplicações apenas ao processo de atualização dos dados através das estações cliente. 53 No entanto, a grande variedade de bancos de dados de diferentes fabricantes, além da própria separação dos sistemas em front-end e back-end, ocasionou a demanda por padrões e mecanismos que possibilitassem às aplicações cliente/servidor interagirem com bancos de dados, independente da plataforma ou sistema operacional. Com isso, vários fabricantes de software se uniram formando o SQL Access Group (SAG), com o objetivo de produzir especificações de acesso a dados para produtos de SGBDs que usam o padrão SQL. Estes mecanismos, conhecidos como interfaces de comunicação com banco e dados, concentram um conjunto de instruções que permitem às aplicações se comunicarem com o SGBD e estabelecer um meio compatível de transferência de dados através da rede. Com o desenvolvimento das novas tecnologias, surgiram vários modelos de interface de banco de dados para diversas plataformas. Dentre os modelos existentes, podemos destacar nos tópicos subseqüentes, algumas das principais interfaces de comunicação para bancos de dados comumente usadas. 3.3.4.1. ODBC O padrão ODBC (open database connectivity) foi desenvolvido pela Microsoft e acabou se tornando o padrão dominante no mercado de interfaces comum para acesso a bases de dados. Sua arquitetura em camadas permite aos aplicativos acessarem uma grande variedade de banco de dados utilizando a linguagem SQL. 54 Segundo Melo (1997, p.205) a arquitetura ODBC é composta por quatro componentes básicos: a aplicação, o gerente de driver (driver manager), o driver e a fonte de dados (data source). A aplicação consiste em um recurso de software que tem a função de processar as chamadas das funções ODBC que cria meios padronizados para estabelecer uma conexão com o banco de dados, de modo que torne possível emitir instruções SQL ao SGBD. O gerente de drivers é a parte intermediária da arquitetura, responsável pelo recebimento das requisições emitidas pelas aplicações e pela determinação de qual driver será carregado para fazer a conexão com o SGBD apropriado. Uma vantagem significativa do gerente de driver é a capacidade de permitir que múltiplos drivers estejam ativos simultaneamente utilizando o nome da fonte de dados fornecido pela aplicação. O driver2 por sua vez consiste em uma biblioteca de funções que processam as solicitações ODBC enviando instruções SQL especificas para cada fonte de dados. Quando uma aplicação faz uma requisição, o driver ODBC traduz a requisição para o formato apropriado do SGBD, servindo assim como um mediador entre os dois elementos. A fonte de dados contém a definição de um driver ODBC utilizado pela aplicação para acessar um SGBD específico. Trata-se dos dados propriamente ditos na abordagem ODBC e cada fonte de dados deve possuir um driver apropriado para que a intermediação possa ser estabelecida. 2 O driver corresponde a um conjunto de informações que fornece as instruções necessárias para que o sistema operacional possa se comunicar com componentes de hardware específicos. 55 Figura 11: A arquitetura ODBC 3.3.4.2. DBI A DBI (Database Interface) é uma interface de programação de aplicações (API) desenvolvida para a linguagem Perl3. Sua arquitetura foi projetada com o intuito de oferecer um conjunto de funções, variáveis e convenções que possam prover um mecanismo de comunicação de banco de dados consistente e independente da plataforma computacional utilizada pelo SGBD. 3 PERL (Practical Extraction and Report Language) é uma linguagem criada por Larry Wall, inicialmente para sistemas Unix, e hoje roda em vários outros sistemas como Windows, Amiga, VMS, etc. 56 Essa interface (Descartes, 2000, p.1), se divide em dois grupos onde, o primeiro, corresponde a própria arquitetura DBI, que implementa todas as funções de chamada de drivers, enquanto que o segundo, corresponde aos drivers responsáveis pela conexão ao seu SGBD específico. Figura 12: A arquitetura DBI Esta separação permite que a DBI suporte uma grande variedade de bancos de dados para utilização em ambientes de computação distribuída. Com isso a DBI é capaz de fornecer acesso múltiplo a diferentes tipos de bancos de dados, de uma forma transparente para os usuários. Com ela pode-se estabelecer conexões com bancos de dados Oracle, Informix, mSQL, Sybase, ou qualquer outra base de dados compatível, sem a necessidade de conhecer o mecanismo utilizado para efetuar esta tarefa. Como benefício principal, a DBI dá às aplicações capacidade de conectar duas bases de dados de fabricantes diferentes, fazendo com que elas se comuniquem através do mesmo código-fonte escrito na linguagem Perl. Isso dá à aplicação capacidade de atualizar bases de dados através de uma forma bastante simples, facilitando assim o trabalho do programador. 57 3.3.4.3. JDBC O JDBC (Java Database Conectivity) é uma interface desenvolvida pela Sun Corporation com a finalidade de estabelecer conexão entre bancos de dados SQL e aplicações desenvolvidas através da linguagem Java4. Com a JDBC os programadores podem criar aplicações Java capazes de acessar dados corporativos, independente da plataforma onde a aplicação está sendo executada. A sua arquitetura, de acordo com Hamilton (1997, p.8) é composta por um conjunto de interfaces abstratas que permite ao programador estabelecer conexões a um determinado banco de dados, manipula-los através de instruções SQL e processar os resultados. Estas interfaces podem ser resumidas em quatro classes principais, a saber: - java.sql.DriverManager: gerencia o carregamento de drivers para criar novas conexões de banco de dados; - java.sql.Connection: representa uma conexão de um banco de dados específico; - java.sql.Statement: funciona como um container para declaração ou execução de comandos SQL; - 4 java.sql.ResultSet: controla o acesso aos resultados das requisições. A linguagem Java foi desenvolvida para ser uma linguagem independente de plataforma tornando-se uma boa opção para criação de aplicações de acesso remoto a banco de dados. 58 Figura 13: A arquitetura JDBC Com base nesta arquitetura, podemos perceber que a principal característica da JDBC é permitir um acesso genérico a banco de dados através de SQL. Ao mesmo tempo, a JDBC oferece uma interface padronizada para diferentes fontes de dados, cabendo ao programador apenas construir uma interface de usuário para facilitar a interação com o banco de dados. Os tipos de drives suportados pela JDBC podem fornecer interfaces para SGBDs, tais como o Oracle, Sybase, Informix, além de outros que utilizam protocolos de acesso a banco de dados específicos, independentes ou não de protocolos de rede. Além desses, a JDBC, fornece conectividade para drivers ODBC. 59 3.3.4.4. BDE O Borland Database Engine (BDE) é uma interface de acesso a banco de dados que contém um conjunto de funções e drivers que possibilitam às aplicações se comunicarem com uma variedade de sistemas de banco de Dados local ou remotamente. Sua arquitetura fornece uma forma única e transparente para a aplicação acessar os diferentes tipos de SGBDs. Segundo Rudraraju (1995, p.1) o BDE utiliza drivers SQL IDAPI nativos para fornecer conectividade aos diferente servidores de bancos de dados. Através da IDAPI (Integrated Database Application Program Interface), pode-se estabelecer conexões para SGBDs cliente/servidor Interbase, Oracle, Sybase, Informix, DB2 e SQL Server. Através desta interface, pode-se executar vários tipos de operações, tais como: criação de sessões, bancos de dados, tabelas, índices, campos, consultas, procedimentos e filtros. Figura 14: A arquitetura do BDE 60 Para concluir, o BDE se constitui em uma solução desenvolvida pela Borland Corporation para ser executada em plataformas Windows 9x/2000/ME e Windows NT. O BDE provê suporte a base de dados para aplicações desenvolvidas através de ambientes de desenvolvimento integrados, tais como o Delphi e C++ Builder. 3.3.5. Os Programas de Aplicação Vimos que a arquitetura cliente/servidor divide o poder de processamento de um sistema computacional em sistemas cliente e servidor. Neste sentido, cada componente tem seu papel específico. A aplicação cliente fica encarregada de fazer a interface com o usuário, capturando os dados e exibindo informações, enquanto que a aplicação servidora, fornece recursos necessários para as aplicações clientes. O programa de aplicação é o principal recurso que dá ao usuário a possibilidade de interagir com os sistemas de computação, principalmente nas tarefas que envolvem o acesso à banco de dados. Para prover esta funcionalidade, principalmente em sistemas cliente/servidor, as aplicações devem conter um conjunto de funções que possibilitem interação entre dois ou vários processos distribuídos em diferentes plataformas, de forma a cooperarem entre si para produzir os resultados desejados. 61 Para Melo (1997, p.60), “uma aplicação possui funções que podem ser agrupadas em componentes para o processamento da lógica da interface do usuário, para o processamento da lógica de negócios, para a manipulação de dados e para os serviços de acesso aos dados”. Figura 15: Interface de um programa de aplicação As funções de interface de usuário correspondem a todas as atividades de interação entre o usuário e a máquina. Concentra recursos de controle de dispositivos de entrada e saída de dados, formatação de tela de apresentação, além de outras funções avançadas como verificação e validação de dados. As funções da lógica do negócio são aquelas que definem o verdadeiro propósito da aplicação, pois compreende toda a regra de 62 negócio e os processos administrativos de uma organização. As funções de gerência dos dados processam todas as operações de acesso e manipulação de dados fornecidos pelo usuário. Por fim, as funções de acesso a dados encarregam-se de fornecer recursos para acesso físico aos dados armazenados em um banco de dados. Figura 16: Estrutura de uma aplicação Com isso podemos perceber que um programa de aplicação tem uma estrutura claramente definida e que cada um de seus componentes cooperam entre si para executar a tarefa desejada pelo usuário. No que se refere à sua alocação, quando se tratava de ambientes centralizados, eles eram alocados em um único local. No entanto, a arquitetura cliente/servidor permitiu distribuir as funções entre os servidores e clientes da rede de forma a aumentar o desempenho dos sistemas de informação. 63 Com base nesta distribuição, a arquitetura cliente/servidor permitiu criar várias categorias de arquitetura, dividindo-a em camadas para tratar com diferentes configurações de seus componentes de aplicação. As principais arquiteturas abrangem dois tipos de modelos, a saber: a) modelo de duas camadas: modelo no qual as aplicações cliente/servidor normalmente concentram as funções de interface de usuário e da lógica de negócio em um único componente. Esse componente fica alocado no cliente, enquanto que os dados e as funções de acesso a dados se concentram no servidor; b) modelo de três camadas: neste modelo os dados e suas funções de acesso se concentram no servidor, enquanto que as regras de negócio e as aplicações são separadas em camadas distintas. Neste modelo as operações de acesso e manipulação de dados são executadas pela aplicação. O servidor só irá processa-los obedecendo às regras de negócio, que podem estar alocadas, ou na máquina servidora, ou na máquina cliente, ou em ambas as máquinas. Através da arquitetura cliente/servidor, podemos perceber que a divisão das tarefas em camadas distintas resulta em um grande benefício para as aplicações. A distribuição de suas funções aproveitando de todos os recursos existentes, resulta em um melhor aproveitamento e um considerável ganho de performance, sem comprometer a integridade dos dados armazenados. 64 Para o desenvolvimento das aplicações, podemos encontrar atualmente uma grande variedade de ferramentas, ou linguagens, capazes de produzir aplicativos. Estas linguagens dispõem de todas as funções necessárias para criação de interfaces e implementação de funções de controle e de manipulação de dados. As ferramentas de desenvolvimento mais utilizadas atualmente são as linguagens orientadas a objetos e dirigidas por eventos, tendo como exemplo Java, Delphi, Powerbuilder, Visual Basic, SQL Windows, SmallTalk e Kylix. 3.3.6. Gerência de Transações Um SGBD cliente/servidor implementa mecanismos de gerência de transações como um método destinado a assegurar que o banco de dados não sofra algum tipo de alteração que resulte em perda de dados ou resultados indesejados. O uso de transações em ambientes de banco de dados cliente/servidor se deve ao fato de que, muitos ambientes corporativos, em seus processos diários de trabalho, executam uma seqüência complexa de atividades que dependem constantemente da atualização dos seus dados para gerar resultados imediatos ao usuário da aplicação. Segundo Silberschatz (1999, p.441) “uma transação é uma unidade lógica de execução que acessa e, possivelmente, atualiza itens de dados”. Pode-se dizer que uma transação consiste em elemento importante para os SGBDs cliente/servidor, pois trata-se de um mecanismo que possibilita as aplicações em execução simultânea, atualizarem os dados de um banco de dados, sem comprometer a sua integridade. 65 Esse benefício só pôde ser obtido graças a um conjunto de operações, originadas de um estudo baseado em quatro regras fundamentais para gerenciamento de dados em ambientes multiusuário. Estas regras conhecidas como propriedades ACID, correspondem respectivamente a: a) Atomicidade: define se todas as ações que representam a transação em um banco de dados serão aplicadas, ou caso contrário nenhuma delas será; b) Consistência: assegura que um banco de dados ao sofrer uma alteração, mova seu estado de consistência de forma a garantir que os dados afetados não violem as regras de integridade; c) Isolamento: define que uma transação não poderá ser afetada por outra, mesmo quando ambas são executadas simultâneamente; d) Durabilidade: implica que os resultados de um processo de transação sejam permanentes, caso sejam concluídas com sucesso. Um exemplo mais comum de um processo de transação (Hackathorn 1993, p.61) é a transferência de fundos entre contas bancárias. Uma transação só deverá ser completada se existirem fundos suficientes na conta original, verificando sempre se houve alguma alteração no banco de dados antes que ocorra a transferência. Se isto acontecer, a transação deverá ser abortada, evitando que o banco de dados seja alterado. 66 Figura 17: Representação de um processo de transação Os SGBDs cliente/servidor realizam as transações através de comandos introduzidos na própria linguagem SQL conhecidos como Commit e Rollback. Estes comandos definem se as alterações serão concluídas com sucesso ou desfeitas quando há risco de inconsistência. Uma vez concluída a transação (através do comando commit), o SGBD muda o estado do banco de dados, tornando as alterações imediatamente visíveis para outros processos de transações. Caso o processo de transação não puder ser completado, a transação pode ser desfeita (através do comando rollback), fazendo que banco de dados retorne ao seu estado original. Normalmente estas instruções são executadas através da aplicação, de acordo com o critério de processamento estabelecido pela lógica do negócio, ficando o SGBD responsável por toda à parte de gerência, podendo ou não utilizar mecanismos de controle, que muitas vezes são necessários em ambientes em que haja a execução de transações concorrentes. 67 3.3.7. Controle de Concorrência Vimos que em um sistema de banco de dados cliente/servidor, ocorrerá situações em que vários itens de dados estarão sendo manipulados pelos usuários e quase que ao mesmo tempo. Isso significa dizer que, todas as atividades que ocorrem no banco de dados, estão em pleno processo de concorrência, podendo acontecer naquela mesma unidade de tempo, porém em fatias de tempo definidas. O sistema de gerência de transações de um SGBD oferece mecanismos que torna possível realizar tarefas no banco de dados de forma isolada. No entanto, não poderão garantir a confiabilidade dos dados se o SGBD, não possuir meios para controlar o sincronismo entre as operações. Segundo Kroenke (1999, p. 210), “o controle de concorrência consiste em medidas que são tomadas para evitar que o trabalho do usuário não interfira no do outro”. Isso significa dizer que, se um SGBD cliente/servidor tiver que gerenciar atualizações em seu banco de dados, ele deverá possuir meios que garantam ao usuário, que o resultado se seu trabalho seja o mesmo, como se ele estivesse trabalhando isoladamente. Existem atualmente dois mecanismos básicos de controle de concorrência utilizados pelos SGBDs. Estes mecanismos são baseados em princípios de bloqueios (deadlocks) ou de ordenação, de acordo com um critério estabelecido para a efetivação das ações de atualização de dados. Estes mecanismos são conhecidos como: 68 a) Controle de Concorrência Pessimista: funciona de maneira a bloquear o item de dado impedindo que outras transações executem atualizações no item bloqueado. Trata-se de um método que trabalha sempre na premissa de que sempre haverá possibilidade de conflito entre operações de transação, fazendo com que uma operação interfira na execução da atual. Com o método de bloqueio, torna-se possível garantir o isolamento, que é a principal propriedade das operações de transação. A desvantagem significativa estaria relacionada aos consideráveis atrasos que podem ocorrer, e que às vezes podem ser até desnecessários; b) Controle de Concorrência Otimista: trata-se de uma técnica que se concentra em realizar alterações, baseados na premissa da não-existência de conflitos. Cada processo de transação age sem comprometer a execução de outra. Neste mecanismo toda a avaliação é feita no momento em que o item de dado está sendo atualizado. Neste período, é feita a verificação das demais transações para ver se algum dado foi alterado no período em que a transação foi iniciada. Este mecanismo evita a possibilidade de usar métodos de bloqueio durante o processo. A desvantagem desta técnica é que, em algum caso de falha, toda a operação de transação deverá reinicializada para assegurar a integridade dos dados. 69 3.3.8. Segurança e Administração Segundo Silberschatz (1999, p.13), “uma das principais razões que motivaram o uso de SGBDs é o controle centralizado, tanto dos dados, quanto dos programas de acesso a esses dados”. Isso convêm afirmar que o controle centralizado de um sistema de banco de dados, em um ambiente cliente/servidor, consiste em um grande benefício para a segurança das informações. No entanto, ao fazer uma analogia com os sistemas de informação atuais, observamos que as empresas disponibilizam seus dados a vários tipos de usuários, dentro ou fora do seu ambiente físico. Por essa razão tem-se por definido que, para garantir a segurança do próprio banco de dados da empresa, não se deve levar em conta apenas o uso das ferramentas de administração incorporadas nos SGBDs. Deve-se considerar também o fator humano, que determina qual pessoa tem o perfil necessário para administrar os recursos primários (banco de dados) e secundários (SGBD e ferramentas relacionadas) do sistema. O Administrador de Banco de Dados (DBA), é a pessoa que possui a competência técnica para gerenciar todo o sistema de banco de dados de uma organização. Suas principais funções envolvem um conjunto de atividades que partem, desde a definição da estrutura e do conteúdo do banco de dados, até atividades relacionadas à administração dos componentes principais do sistema. Dentre esses componentes são mencionados os servidores, estruturas de armazenamento e métodos de acesso, mecanismos de medição de desempenho, backup e recuperação de dados, administração de usuários e restrições de integridade. 70 Outra tarefa importante do DBA é também servir de elo de ligação entre os bancos de dados e os usuários. O DBA define os critérios de autorização através de mecanismos que permitam criar contas de usuário, implementando o critério de segurança apropriado. Além disso, o DBA pode fornecer aos analistas e programadores, todas as informações necessárias para viabilizar o desenvolvimento de aplicações de banco de dados específicas, que serão utilizadas pelos usuários finais. Com relação à tecnologia utilizada para resolver as questões de segurança ao nível de usuário, o DBA pode através do SGBD, implementar mecanismos de segurança baseados em esquemas de login e senha, e também em níveis de privilégios. Os mecanismos de controle de acesso baseados em login e senha, permitem aos SGBDs, não só garantir ou restringir o acesso dos usuários, como também registrar todas as operações a partir do período em que o usuário acessa o banco de dados até o momento em que ele encerra suas atividades. Figura 18: Conexão com SGBD cliente/servidor 71 Os níveis de privilégios por sua vez, permitem restringir o acesso a determinado banco de dados a um grupo restrito de usuários. Uma vez definido qual banco de dados poderá ser acessado, poderemos também definir quais tipos de operações poderão ser realizadas pelos usuários sobre seus objetos. Vários produtos de SGBD que utilizam SQL implementam métodos conhecidos como GRANT e REVOKE para garantia e a revogação dos níveis de privilégios dos usuários. Figura 19: Definindo privilégios no SQL Server 6.5 Em um ambiente cliente/servidor, pudemos observar que as tecnologias de SGBDs são capazes de garantir a segurança dos dados contra usuários não autorizados. No que se refere às questões de hardware e software, o controle centralizado dos dados também torna possível reforçar os níveis de segurança. O DBA pode em caso de pane ou perda de dados durante alguma operação complexa, utilizar mecanismos de backup e recuperação adequados para garantir a restauração do banco de dados. 72 3.4. PRINCIPAIS SOLUÇÕES DA INDÚSTRIA DE BANCO DE DADOS CLIENTE/SERVIDOR Nos últimos anos, os SGBDs cliente/servidor evoluíram dando origem a produtos cada vez mais poderosos, capazes de gerenciar bancos de dados de forma mais eficiente, dando ao mesmo tempo mais simplicidade nas operações. Atualmente podemos encontrar no mercado diversos produtos de SGBD cliente/servidor, projetados para vários tipos de plataformas e sistemas operacionais. A seguir serão apresentadas características de alguns dos produtos atualmente disponíveis. 3.4.1. Oracle O Oracle é um SGBD cliente/servidor objeto-relacional (ORDBMS) de alta performance produzido pela Oracle Corporation. Foi projetado para ser executado em plataformas UNIX, Linux e Microsoft Windows NT. Sua tecnologia integra recursos, capazes de gerenciar grande volume de dados em ambientes multi-usuário. Isso garante o acesso simultâneo dos usuários ao banco de dados, sem comprometer o desempenho do sistema. Como linguagem SQL nativa o Oracle utiliza a PL/SQL, que implementa vários recursos ativos, tais como triggers e procedimentos armazenados. Além disso, o Oracle fornece um potente mecanismo de integridade referencial. 73 Para prover facilidade na administração dos recursos, as versões mais recentes o Oracle dispõem de uma ferramenta conhecida como Oracle Enterprise Manager. Essa ferramenta integra vários utilitários de administração e manipulação de elementos de banco de dados. Outro mecanismo importante a ser destacado é o Data Manager, que oferece recursos que permitem importar e exportar objetos de um banco de dados para outro, facilitando as tarefas de migração e atualização. Figura 20: Visão geral do Oracle Enterprise Manager. 74 3.4.2. SQL Server O SQL Server (Soukup, 1999, p.30) é um SGBD cliente/servidor relacional (RDBMS), projetado para oferecer alto desempenho e suporte a processamento de alto volume de dados. Sua plataforma é baseada em sistemas operacionais Windows NT Server ou Workstation, Windows 95/98/ME e em plataformas Windows 2000. Tem como linguagem SQL nativa a Transact-SQL, que incorpora vários recursos como otimização de consultas, construção de programação e procedimentos armazenados. Na sua versão 7, o SQL Server possui um ambiente integrado de desenvolvimento, conhecido como Enterprise Manager, onde permite administrar todos os recursos de qualquer servidor de banco de dados SQL acessível. Trata-se de uma interface que apresenta uma estrutura de árvore, onde é possível visualizar todos os detalhes de um servidor de banco de dados, incluindo, além dos bancos de dados, todas as ferramentas de gerência necessárias. Outra ferramenta importante é o Query Analyzer, que permite executar instruções SQL e visualizar os resultados através de uma interface simples. A principal vantagem dessa ferramenta é admitir que várias janelas sejam abertas ao mesmo tempo, possibilitando realizar conexões simultâneas a bancos de dados diferentes. 75 Figura 21: Visão geral do Microsoft SQL Server. 3.4.3. Sybase SQL Server O Sybase SQL Server, na sua versão 11 (Freeman 1996, p.1), foi desenvolvido de acordo com o processo de certificação ISO 9000 para ser um dos mais avançados SGBDs do mercado. Sua arquitetura inclui um conjunto ferramentas baseadas em ambiente gráfico Windows. Dentre essas ferramentas, inclui o Server Manager, que permite gerenciar todo o processo de manipulação de banco de dados e de seus objetos, além de fornecer um utilitário para gerar scripts SQL. 76 Figura 22: Visão geral do Sybase SQL Server. Dentre os outros recursos do Sybase SQL Server, também podemos destacar o Service Manager, que oferece recursos para carregar e interromper servidores de banco de dados Sybase. Outra ferramenta, o Server Config, permite configurar servidores a um nível mais alto, envolvendo tarefas de ajuste de controles, parâmetros de linha de comando, conexões de rede, segurança e registro de erros. 3.4.4. Informix O Informix, desenvolvido pela Informix Corporation, é um SGBD multiusuário que possui como núcleo principal o Command Center, que concentra ferramentas usadas na administração de servidores de banco de dados. 77 Além do Command Center, o Informix possui outras ferramentas administrativas voltados para as seguintes finalidades: gerenciamento de espaço de armazenamento de banco de dados (Space Explorer), criação e manipulação de objetos de banco de dados (Database Explorer), execução de instruções SQL (SQL Editor). Além destas ferramentas, o Informix também possui o Dbschema, que permite criar arquivos de scripts para serem executados em outros bancos de dados. Figura 23: Visão geral do Command Center do Informix Os bancos de dados Informix podem escalar e rodar em qualquer plataforma de sistema operacional, que pode variar desde o Windows NT até sistemas baseados em Linux ou Unix. 78 3.4.5. C/A Ingres O C/A Ingres é um SGBD relacional que teve seu início nas plataformas Unix, DEC e VAX, onde a maioria das ferramentas tinha interfaces orientadas a caracter. Na suas versões 1.1 e 1.2, o Ingres traz um subsistema de gerenciamento de objetos baseado em ambiente gráfico Windows (CA-Visual/DBA), além de outros utilitários importantes, dentre os quais destaca-se o CBF (Configuration by Forms), usado para configurar diversos tipos de servidores, incluindo os de SGBDs e de banco de dados distribuído. Atualmente a versão do Ingres, conhecida como Ingres II é tida como a solução mais completa de sua categoria para aplicações de múltiplas camadas e gerenciamento de informação. O Ingres II está disponível em duas versões, conhecidas como Workgroup e Enterprise. A versão Workgroup, roda em plataforma Windows NT e permite conexões de até 25 usuários simultâneos. Já a versão Enterprise permite conexão de um número ilimitado de usuários e pode ser utilizado em qualquer ambiente multiplataforma. 79 3.4.6. IBM DB2 O DB2 Universal Database é um SGBD relacional da IBM Corporation, projetado para ser um banco de dados capaz de oferecer um suporte relacional de gerenciamento de dados rápido, seguro e eficiente. Sua tecnologia é derivada do conceito de Banco de Dados Universal, que visa ampliar as capacidades da tecnologia de banco de dados, permitindo manipular tipos de dados não-convencionais, tais como: informações armazenadas em documentos, planilhas e objetos multimídia. Hoje as versões mais recentes oferecem suporte a vários tipos de aplicações cliente/servidor disponíveis, incluindo a internet. Figura 24: Visão geral do Centro de Controle do DB2. 80 O DB2 na sua versão 7.1, possui várias ferramentas de administração que podem ser gerenciadas através do Centro de Controle (Control Center), que é seu ambiente principal. Trata-se de um ambiente que permite ao DBA, através de uma interface gráfica de usuário (GUI), gerenciar de forma simples e transparente, todos os bancos de dados DB2 alocados em diferentes tipos de plataformas ou sistemas operacionais. 3.4.7. Centura SQLBase O Centura SQLBase é um SGBD relacional multiusuário desenvolvido para plataformas Windows e Novell Netware. Na sua versão 6.00, o SQLBase integra ferramentas GUI baseadas no estilo Windows, dando ao DBA a capacidade de administrar os recursos de forma mais simples. Uma das principais ferramentas do SQLBase é o SQL Console, que permite gerenciar servidores de banco de dados, dando a possibilidade de carregar, criar, modificar e excluir bancos de dados ou objetos de banco de dados. Possui também um utilitário onde o DBA pode executar backups e outros serviços de manutenção. 81 3.4.8. PostgreSQL O PostgreSQL é um SGBD objeto-relacional (ORDBMS) de código-fonte aberto, desenvolvido para plataformas Linux e Windows. Segundo Vasudevan (2000, p.1), o PostgreSQL é um aperfeiçoamento do antigo SGBD Postgres. Sua arquitetura foi projetada para se tornar 100% de acordo com o padrão ANSI/ISO SQL, e ao mesmo tempo, a principal base de dados de livre distribuição no mundo. Dentre as principais vantagens é a capacidade de permitir herança entre tabelas, além de prover suporte a qualquer tipo de aplicação, que pode variar desde páginas web simples até um sistema administrativo completo. Outros benefícios a serem destacados são: o excelente desempenho, suporte a transações e integridade referencial. 3.4.9. MySQL O MySQL é um sistema de banco de dados relacional de código aberto, projetado oferecer um suporte a banco de dados cliente/servidor, oferecendo rapidez e flexibilidade. Pode ser capaz de rodar em qualquer servidor e suportar diferentes aplicações cliente, além de prover interação com diferentes ferramentas de administração e interfaces de programação, tais como C, C++, Eiffel, Java, Perl, PHP, Python e Tcl. 82 Dentre os componentes principais do MySQL destaca-se o MySqlAdmin, que pode ser utilizado para uma variedade de tarefas tais como: criação e exclusão de banco de dados, controle de conexões em memória, controle de contas de usuário e monitoramento de servidor. O MySqlDump é outro utilitário importante, pois através dele, pode-se gravar em um arquivo texto, todos os comandos SQL necessários para criar uma cópia de um banco de dados, inteiro ou em parte. Para execução de instruções SQL, o MySQL dispõe o cliente MySQL, onde é possível criar e manipular banco de dados e seus respectivos objetos. Existem atualmente versões do MySQL disponíveis para plataformas, incluindo todas as variedades de sistema operacional Linux, AIX, FreeBSD, Irix e Windows 95/98/NT. Na versão Windows, foi incorporado o WinMySqlAdmin, que permite através de uma interface gráfica, visualizar e alterar as configurações do MySQL, além de criar novos bancos de dados. Outro utilitário, o MySQLManager, permite executar instruções SQL nos bancos de dados criados pelo MySQL. 83 Figura 25: Visão geral do MySQL para Windows. 3.4.10. GemStone O GemStone é um SGBDOO comercial disponível pela GemStone Systems. Foi projetado para combinar os conceitos de linguagem de programação orientada a objetos Smalltalk, com funções de sistema de gerenciamento de banco de dados. Sua tecnologia apresenta robustez suficiente para manipular grande quantidade de dados a uma baixa taxa de erros, além de possibilitar a recuperação de falhas sem comprometer a disponibilidade dos dados. 84 Suas linguagens de manipulação (DML) e definição de dados (DDL) são derivadas do Smalltalk, tendo como base os objetos, mensagens e métodos para tratamento de dados. Os objetos têm uma interface e um estado, e se comunicam uns com os outros através de mensagens. O suporte a transmissão de mensagens, encapsulamento, hierarquia de classe, herança e identidade de objetos, são amplamente suportados pelas DML e DDL do GemStone. Em comparação com a linguagem SQL, a DML do GemStone é bem completa no aspecto de linguagem de programação. O GemStone tem como componente básico o Gem Server, que concentra todos os objetos que são executados pela DML do GemStone, inclusive a avaliação das consultas. Outro componente principal é o Stone Monitor que aloca novos identificadores de objetos e coordena a execução de transações. CAPÍTULO 4 - APLICAÇÕES DE BANCO DE DADOS CLIENTE/SERVIDOR 4.1. ASPECTOS BÁSICOS Podemos afirmar que os sistemas de banco de dados cliente/servidor são utilizados hoje em dia em uma grande variedade de aplicações, sendo que a maioria delas, são e vão continuar sendo voltadas ao uso comercial pelas organizações. No entanto, novas aplicações surgiram nos últimos anos, contribuindo de maneira que tornasse possível às empresas expandirem seus limites de atuação no mercado, dispondo ao mesmo tempo de novos recursos de gerência de dados para seu negócio. Estes novos recursos permitem que as aplicações possam lidar com informações não-convencionais, podendo ainda ser acessadas e manipuladas em diferentes locais. Com base nestas novas aplicações, as produtoras de software puderam incorporar novos mecanismos de gerenciamento de dados em seus produtos de SGBDs. Isso fez com que as aplicações de banco de dados também pudessem participar deste processo evolutivo, de forma a poder lidar com tipos de informações, que antes era inimagináveis pelos sistemas do passado. 86 Neste contexto relacionamos algumas das novas aplicações de banco de dados que nos últimos anos, se tornaram cada vez mais importantes para as organizações. 4.2. PROCESSAMENTO DE BANCOS DE DADOS DISTRIBUÍDOS Segundo Ceri e Pelagatti citado por Melo et al. (1997, p.165), “um sistema de banco de dados distribuído é uma coleção de dados que é distribuída por diferentes computadores, possivelmente em diferentes locais. Os computadores são conectados por uma rede de comunicação. O sistema deve suportar aplicações locais em cada computador, bem como aplicações globais nas quais mais de um computador esteja envolvido”. Na verdade, um sistema de banco de dados distribuído, é considerado como uma modalidade de processamento de banco de dados cliente/servidor, que integra a filosofia dos bancos de dados como resolução dos problemas apresentados pelos sistemas gerenciamento de arquivos. Um banco de dados distribuído também se fundamenta na distribuição dos processos, que leva para o lado do usuário as tecnologias utilizadas para manipular dados através da rede. Todos esses requisitos resultam em oferecer aos usuários um sistema integrado para troca de informações, porém distribuídos no que se refere ao local onde os bancos de dados serão alocados. Em um banco de dados distribuído, o requisito fundamental é fazer com que os bancos de dados, dispersos nos diversos locais, sejam vistos pelas aplicações como um único banco de dados centralizado. Para isso, o SGBD cliente/servidor disponibiliza várias 87 funções que tornam os bancos de dados independentes uns dos outros. Ao mesmo tempo, esses recursos visam a transparência na distribuição e na fragmentação, de forma que os usuários vejam os dados de forma única, sem se preocupar com a sua localização física. No que se refere aos requisitos de desempenho e disponibilidade dos dados, os SGBDs utilizam técnicas de replicação que cria cópias locais de um banco de dados inteiro ou parte dele. 4.3. INTERNET E INTRANETS ORGANIZACIONAIS A Internet pode ser considerada atualmente como o ambiente cliente/servidor mais utilizado para transações comerciais e disseminação de informações empresariais de diferentes áreas de atuação. Trata-se de uma rede pública, que surgiu a partir de um projeto conhecido como ARPANET, que tinha a finalidade de interligar grandes centros de informações militares americanos. Quando os militares se retiraram do projeto para a formação da MILNET, a ARPANET passou a ser conhecida como Internet, se popularizando entre centros de pesquisa, empresas e universidades. 88 Com a sua liberação para uso comercial nos Estados Unidos, várias empresas viram neste novo ambiente a possibilidade de expandir as suas fronteiras comerciais, disponibilizando produtos e serviços aos seus clientes em qualquer parte do mundo. Hoje podemos afirmar que o comércio eletrônico pôde se tornar uma realidade, graças ao surgimento de interfaces que permitiram que bancos de dados pudessem ser interligados ao ambiente Web1. A integração de banco de dados na web também possibilitou que inúmeras outras aplicações empresariais pudessem rodar neste novo ambiente. Como exemplo prático, podemos destacar os próprios sistemas de transações bancárias pela Internet, que nos últimos anos têm apresentado um nível de utilização bastante acima das previsões. Figura 26: Exemplo de Aplicação web de comércio eletrônico. 1 Um acrônimo para World Wide Web (WWW). Corresponde a uma grande rede de informações que concentra todos os sistemas de informação disponíveis na Internet. 89 No ambiente corporativo, a infra-estrutura de comunicação de dados usada na internet também é usada para criação de redes privadas, conhecidas como Intranets. Trata-se de uma rede restrita apenas ao ambiente da empresa e que normalmente é utilizada para compartilhamento de informações empresariais. Da mesma forma que a internet, o uso de aplicações de banco de dados permitiu expandir a funcionalidade das Intranets, dando a possibilidade de criar aplicações para diversos fins. 4.4. SISTEMAS DE INFORMAÇÕES GEOGRÁFICAS (GIS) Um Sistema de Infomações Geográfica (GIS – Geographic Information System) consiste em uma modalidade não-convencional de aplicação de banco de dados, que tem como características principais o armazenamento de informações baseadas em dados geofísicos e a integração de ferramentas voltadas para processamento de imagens geográficas. Seu funcionamento (Davis, 2001, p.2) é baseado na utilização de componentes organizados em uma estrutura hierárquica que inclui: interface com o usuário, entrada e integração de dados, consulta e análise espacial, visualização/plotagem, funções de processamento gráfico de imagens e funções de gerência de dados baseada em bancos de dados geográficos. 90 Os bancos de dados geográficos são implementados em praticamente todas as modalidades de GIS atualmente disponíveis, podendo operar em conjunto com vários SGBDs cliente/servidor relacionais ou orientado a objetos. Um exemplo de banco de dados geográfico é o SPRING2, que roda em plataformas de SGBD Oracle e Ingres, armazenando informações descritivas sobre dados geográficos, tais como mapas e imagens de satélites. Outro exemplo prático é o acesso a dados geográficos pela Internet, que acabou criando um novo segmento de aplicações voltadas para pesquisa e desenvolvimento em geoprocessamento. Figura 27: Exemplo de processamento de dados geográficos na internet. 2 O SPRING (Sistema para Processamento de Informações Georeferenciadas) foi desenvolvido pelo INPE (Instituto Nacional de Pesquisas Espaciais) para ser utilizado em ambientes UNIX e Windows. 91 4.5. BANCO DE DADOS MULTIMÍDIA Os bancos de dados multimídia passaram a ganhar interesse nos últimos anos devido aos novos tipos de informação que passaram a estar presente em vários segmentos de aplicações. Tipos de dados como textos com livres formatos, documentos web, gráficos estruturados, imagens estáticas ou com animação, voz e sons, se tornaram cada vez mais comuns no ambiente corporativo. Hoje já é possível pensar em sistemas capazes de operar com tipos de dados que possam representar imagens de impressões digitais, eletrocardiogramas, ressonância magnética e radiografias, freqüentemente utilizados em hospitais ou órgãos especializados. Os SGBDs cliente/servidor relacionais e objeto-relacionais implementam recursos destinados ao armazenamento de elementos gráficos e de texto em grandes objetos binários, conhecidos como BLOB3. No entanto, devido às limitações para operar outros novos tipos de dados, como vídeos e sons, os ORDBMS podem ser vistos como a alternativa mais eficaz entre os dois modelos para gerenciar novos tipos de informação e dar suporte mais adequado às novas aplicações. 3 BLOB (Binary Large Objects) consiste em um bloco de dados em formato binário que é armazenado fisicamente, separado do registro principal. A sua localização normalmente é feita através do uso de ponteiros sempre que o registro correspondente é referenciado. 92 4.6. DATA WAREHOUSES Um Data Warehouse (Kroenke, 1999, p.280) é um depósito de dados corporativo cuja estrutura inclui recursos destinados a facilitar o acesso a determinados tipos de dados para tomada de decisões. Seu objetivo principal é aumentar o valor patrimonial dos dados da empresa, armazenando dados de diversos clientes para geração de informações integradas futuras. O ambiente Data Warehouse agrega várias tecnologias para oferecer a integração necessária aos bancos de dados de uma organização. Além da própria arquitetura cliente/servidor aliada aos recursos dos SGBDs, são utilizadas interfaces de usuários e ferramentas adequadas para análise e consulta de dados de modo a fornecer uma interface única para gerar consultas de suporte à decisão. De forma a viabilizar a implementação de Data Warehouses nos sistemas de informação das empresas, várias produtoras de SGBDs já implementam em seus produtos um conjunto de recursos, dentre os quais se destacam as ferramentas de processamento analítico on-line (OLAP), que facilitam o compartilhamento de metadados (dados referentes a dados) com outros bancos de dados e demais aplicações, de modo a fornecer acesso e análise desses dados de forma simples para o usuário-final. CAPÍTULO 5 - CONCLUSÃO 5.1. CONSIDERAÇÕES FINAIS Conclui-se que, o ambiente de computação cliente/servidor é uma área que está em plena evolução no que diz respeito ao segmento de novas aplicações de banco de dados e tecnologias de integração. Paralelamente, os sistemas de banco de dados cliente/servidor podem hoje ser também considerados como parte indispensável em qualquer sistema computacional multi-plataforma. A contribuição deste trabalho para compreensão dos principais aspectos dos sistemas de banco de dados cliente/servidor foi uma abordagem genérica, que delimitou o estudo dos principais elementos envolvidos no processamento de banco de dados para os diversos segmentos de aplicações empresariais que lidam com tipos de informações, tanto convencionais, como não-convencionais. 94 Com base nesse estudo, pode-se afirmar que a abordagem apresentada sobre os aspectos tecnológicos e funcionais, empregados na arquitetura cliente/servidor para banco de dados, serviu para mostrar que esse ambiente conseguiu superar os problemas apresentados pelos sistemas centralizados, principalmente no que se refere às questões relativas à redução de custos operacionais e implementação de novos recursos tecnológicos para oferecer soluções imediatas para tomada de decisões. Ao mesmo tempo, os sistemas de banco de dados no ambiente cliente/servidor puderam ainda estabelecer nas empresas um novo padrão de comportamento, incentivando o estudo de novas soluções corporativas e adotando estratégias para prover melhor organização e controle de todo o seu sistema de informação, contribuindo ainda para dar amplo suporte às novas aplicações que poderão ser adotadas ao longo do tempo. Como sugestão para novos trabalhos, pode ser feita uma pesquisa sobre as principais soluções de mercado que utilizam ORDBMS cliente/servidor, a fim de ter uma idéia mais precisa sobre a real efetividade das aplicações OO cliente/servidor existentes para processamento de dados não-convencionais. Para finalizar, deve-se ter conhecimento sobre quais componentes poderão ser considerados mais adequados para determinado tipo de aplicação cliente/servidor de banco de dados. Apesar da arquitetura cliente/servidor oferecer independência de plataforma e sistema operacional para comunicação entre processos, o melhor conjunto de recursos pode fazer a diferença em termos de desempenho e produtividade. ABSTRACT This research has for objective to present a boarding about database systems used in client/server processing environments, describing its main components and the technologies used for integration between databases and the applications. Based in this analysis will be pointed the main aspects that had taken the client/server database systems to become the main plataforms for data management and support to the new applications. Referências Bibliográficas DATE, C.J. Introdução a Sistemas de Bancos de Dados. 9. ed. Rio de Janeiro: Editora Campus, 1990. DAVIS, Clodoveu; CÂMARA, Gilberto. Fundamentos de Geoprocessamento – Arquitetura de Sistemas de Informação Geográfica. 04 Junho 2001. Disponível em: <http://www.dpi.inpe.br/gilberto/livro/introd/cap3-arquitetura.pdf> Acesso em 30 de julho de 2001 DESCARTES, Alligator: Programming the Perl DBI, 1ª Ed, 2000. Disponível em: <http://www.oreilly.com/catalog/perldbi/chapter/ch04.html> Acesso em 07 de maio de 2001 FREEMAN, Miller. Sybase SQL Server 11. DBMS and Internet Systems, 1996. Disponível em: <http://www.dbmsmag.com/9611d54.html> Acesso em 26 de junho de 2001 HACKATHORN, Richard D. Conectividade de Bancos de Dados Empresariais. Rio de Janeiro: Infobook, 1993. HAMILTON, Graham; CATTELI, Rick. JDBC – A Java SQL API. Sun Microsystems Inc. 1997. Disponível em: < ftp://ftp.java.sun.com/pub/jdbc/953287-12/jdbc-spec-0120.pdf> Arquivo capturado em 13 de junho de 2001 KROENKE, David M. Banco de Dados: Fundamentos, Projeto e Implementação. 6ª. Ed. Rio de Janeiro: LTC, 1999. MELO, Rubens N.; SILVA, Sidney D.; TANAKA, Asterio K. Banco de Dados em Aplicações Cliente/Servidor. Rio de Janeiro: Infobook, 1997. PRADO, Juano A. Nunez del. Acessando SQL Server com Visual Basic 5. Santa Catarina: Advanced Editora, 1998. RENAUD, Paul E. Introdução aos Sistemas Cliente/Servidor: Guia Prático para Profissionais de Sistemas. Rio de Janeiro: Infobook, 1994. RUDRARAJU, Pandu. Borland Database Engine and IDAPI - A Technology Overview. Borland Software Corporation, 1995. Disponível em: <http://www.borland.com/bde/papers/idapi/> Acesso em 18 de junho de 2001 SALEMI, Joe. Guia para Banco de Dados Cliente/Servidor. 2. ed. Rio de Janeiro: Infobook, 1995. SILBERSCHATZ. Abrahan; KORTH, Henry F. e SUDARSHAN, S. Sistema de Banco de Dados. 3. ed. São Paulo: Makron Books, 1999. SOUKUP, Ron. Desvendando o SQL Server 7.0. Rio de Janeiro: Campus, 1999. VASUDEVAN, Alavoor. Database-SQL-RDBMS HOW-TO - document for Linux (PostgreSQL Object Relational Database System). v40.0, 09 dez. 2000. Disponível em: <http://www.cybersite.com.au/HOWTO/PostgreSQL-HOWTO.html> Acesso em 05 de junho de 2001.