Baixe o app para aproveitar ainda mais
Prévia do material em texto
tt Arquitetura de Sistemas de Banco de Dados Aula 4: Estrutura de um SGBD Apresentação Na aula passada você viu a Linguagem SQL e sua relação com a Álgebra Relacional. Nesta aula veremos a Estrutura de um SGBD, sua aderência ao modelo Cliente Servidor, organização interna e ainda exploraremos a arquitetura interna do SGBD ORACLE. Objetivos Descrever o modelo Cliente Servidor; Identi�car a estrutura interna de um SGBD; Reconhecer a estrutura do SGBD ORACLE. Arquitetura de Aplicações utilizando Banco de Dados Ao longo do tempo, a arquitetura das aplicações que utilizam banco de dados evoluiu da Monolítica para a Cliente Servidor. Figura 1 – Arquitetura de Aplicações Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Arquitetura Monolítica Tipicamente utilizada, no passado, em sistemas de Grande Porte (Mainframe), era caracterizada por todo processamento ser realizado no computador central. Os dados eram mantidos centralizados. Redes Esta arquitetura pode ser considerada um ponto intermediário na evolução para o modelo Cliente Servidor. Os dados eram mantidos centralizados em um servidor de arquivos, quando fosse necessária a execução de uma consulta os arquivos eram transferidos para máquina do usuário via a rede de computadores, onde o processamento da consulta era então realizado. Este modelo tem como efeito colateral gerar um grande volume de tráfego na rede, já que todo o banco de dados deve ir para a máquina do usuário toda vez que uma consulta tiver que ser realizada. Cliente Servidor Utiliza o conceito de distribuição do processamento via redes de computadores. O usuário através de sua máquina (cliente) envia ao SGBD (servidor) a solicitação dos dados que deseja. O SGBD então executa localmente a consulta e retorna ao cliente apenas o conjunto resposta, ou seja, os dados solicitados, o que diminui muito o tráfego de dados na rede. Modelo cliente servidor Agora que você viu os tipos de arquitetura, vamos estudar melhor o Modelo Cliente Servidor. Neste modelo, o sistema é dividido em 3 camadas lógicas: Apresentação Representa a lógica de apresentação dos dados e a aplicação do usuário. Esta camada é normalmente implementada no computador cliente. Negócios Inclui a lógica da aplicação e as regras de negócios. Pode estar no cliente ou no servidor. Dados Inclui a de�nição de dados, integridade lógica, procedimentos armazenados e outras atividades relativas a gerencia e manipulação dos dados. É implementada no SGBD. Cliente Magro - Servidor Gordo Quando a maior parte das regras de negócio residem no servidor. Cliente Gordo - Servidor Magro Quando a maior parte das regras de negócio residem no cliente. Figura 2 – Tipos de Arquitetura Cliente/Servidor Atenção Os SGBDs possuem mecanismos que permitem posicionar a lógica da aplicação no servidor (stored procedures, triggers, check constraints). Funcionamento do Modelo Cliente Servidor Na tecnologia Cliente/ Servidor, o processamento da informação é dividido em módulos ou processos distintos. Um processo responsável pela manutenção da informação (servidor) e os outros responsáveis pela obtenção dos dados (os clientes). Figura 3 –Arquitetura Cliente/Servidor https://stecine.azureedge.net/webaula/estacio/go0095/aula4.html Esses módulos constituem: Clique nos botões para ver as informações. Provê uma interface entre o usuário e a aplicação; Pode ser responsável pela validação dos dados digitados pelo usuário; Envia solicitações ao servidor para realização de uma tarefa; Manipula o processamento de entrada / saída dos dados. Cliente ou Front-end Controla os recursos compartilhados como base de dados, impressoras, modens e processadores. Servidor ou Back-end É um software de conectividade que permite que aplicações se comuniquem de forma transparente com outros programas ou processos independentes de sua localização. O Middleware se posiciona entre a aplicação cliente e o protocolo de comunicação da rede, e entre o protocolo de comunicação e a aplicação no servidor. Middleware Veja um exemplo de Funcionamento: Um usuário no front-end gera uma consulta ao servidor de banco de dados, e o aplicativo front-end envia o pedido para o servidor através da rede. O servidor executa a pesquisa e retorna somente os dados que respondem a pergunta dos usuários. Figura 4 –Exemplo de Funcionamento Cliente/Servidor Vejamos mais um exemplo, agora utilizando a arquitetura do SQL/Server, que é um Sistema Gerenciador de Banco de Dados da Microsoft: Figura 5 –Funcionamento de uma Consulta no SQL/Server A sistemática de uma consulta nesta arquitetura é a seguinte: 01 O aplicativo gera uma consulta utilizando uma linguagem de acesso, como o SQL; 02 O modulo de cliente de rede encapsula esta consulta em um pacote e a envia via rede para o servidor de BD; 03 O mecanismo de banco de dados recebe a consulta e a transforma em uma série de operações relacionais; 04 O Mecanismo de armazenamento prove o acesso físico recupera os dados e os passa ao mecanismo de banco; 05 O mecanismo de banco gera o resultado e o envia pela rede para o cliente; 06 O recebe o resultado e o exibe para o usuário; Arquitetura Física de Sistemas Gerenciadores de Banco de Dados Um SGBD nada mais é que um sistema composto por um grande conjunto de programas de computador. Este sistema é extremamente complexo, mas de uma forma simpli�cada, pode ser decomposto nos seguintes componentes: Clique nos botões para ver as informações. O SGBD utiliza o Sistema Operacional para acessar os dados armazenados em disco, controlando o acesso concorrente às tabelas do Banco de Dados. O Gerenciador controla todas as pesquisas (queries) solicitadas pelos usuários no modo interativo, os acessos do compilador DML, os acessos feitos pelo Processador do Banco de Dados ao Catalogo e também aos próprios dados. Gerenciador de Arquivos Processa as de�nições do esquema do Banco de Dados, acessando quando necessário o Dicionário de Dados do Banco de Dados. Compilador DDL (Data De�nition Language) Contém o esquema do Banco de Dados, suas tabelas, índices, forma de acesso e relacionamentos existentes. É também conhecido como Catálogo. Dicionário de Dados Manipula requisições à própria Base de Dados em tempo de execução. É o responsável pelas atualizações e integridade da Base de Dados. Gerenciador de Banco de Dados Analisa as solicitações dos usuários e, se estas forem consistentes, aciona o Gerenciador de Banco de Dados para acesso efetivo aos dados. Processador de Consultas vinculado à linguagem hospedeira, as aplicações encaminham a ele seus pedidos de acesso, o qual os envia ao Processador de consultas onde o Compilador DML gerará os códigos de acesso ao Banco de Dados. Pré-Compilador DML (Data Manipulation Language) Armazenam o próprio banco de dados. Arquivos de dados Funções e procedimentos previamente compilados disponíveis para uso pelas aplicações de usuário. Aplicações em código objeto Figura 6 –Arquitetura Simplificada de um SGBD O Sistema Gerenciador de Banco de Dados como um serviço do Sistema Operacional Conforme dito anteriormente, o SGBD é um conjunto de programas em execução, ou seja, um conjunto de processos. Mas o SGBD tem algumas diferenças fundamentais em relação a aplicativos de usuário como, por exemplo, o Word. Ele tem que �car disponível para acesso o tempo todo, à espera de uma requisição do usuário. Existem aqui, então, dois conceitos diferentes: Aplicação É um programa executado por comando, ele cria um processo e �ca ativo até ser encerrado. Serviço É um programa que �ca executando em segundo plano, normalmente para oferecer alguma funcionalidade de servidor. https://stecine.azureedge.net/webaula/estacio/go0095/aula4.html A �gura a seguir mostra o gerenciador de tarefas do Windows 10, onde podemos ver, na aba processos, os aplicativos e os processos em segundo plano, em sua maioria serviços: Figura 7 – Gerenciadorde Tarefas do Windows 10 Todo servidor, portanto, e o SGBD não é exceção, instala-se como um Serviço no Sistema Operacional e �ca em segundo plano, esperando que o cliente faça uma requisição de serviço. A memória de trabalho do Sistemas Gerenciador de Banco de Dados Todo programa, para poder executar, necessita de uma área de trabalho na memória. Em um SGBD essa área é utilizada para manipular os dados do banco, bem como outras informações de controle do sistema. Os dados de um banco de dados, conforme você já viu em aulas anteriores, �cam armazenados nos arquivos de dados. Acontece que nenhum programa consegue manipular diretamente os dados no disco, isso acarreta que quando o SGBD precisa acessar algum dado, ele deve levá-lo do disco para a memória, onde poderá consultá-lo e eventualmente alterá-lo. Se o dado for alterado na memória, ele deverá ser salvo novamente no disco. Os Arquivos do SGBD Os SGBD possuem 3 tipos básicos de arquivos: 1 Dados Onde são armazenados os dados do banco de dados. 2 Metadados ou catálogo Onde são armazenadas as informações de controle do banco de dados e a descrição dos dados armazenados. 3 Arquivos de log Onde são armazenadas as operações realizadas nos dados. Todos os arquivos de um SGBD residem no Sistema de Arquivos, o SGBD não tem controle direto sobre eles e toda operação de leitura (transferência da disco para a memória) ou de gravação (transferência da memória para o disco) é realizada via solicitação do Sistema Operacional. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Estudo de Caso - ORACLE Clique no botão acima. https://stecine.azureedge.net/webaula/estacio/go0095/aula4.html O Oracle é o SGBD líder de mercado, sendo disponibilizado pela Empresa de mesmo nome. Um servidor Oracle é composto de uma instância e seus arquivos. A �gura seguinte mostra a arquitetura básica do SGBD: Instância Uma instância Oracle pode ser entendida como uma área reservada em memória, juntamente com um conjunto de processos que rodam em background com o objetivo de controlar a integridade de todos os arquivos físicos do Oracle, assim como toda a parte de integridade das informações e solicitações de usuários. Em um único servidor pode-se instalar várias instâncias Oracle, porém cada instância, terá sua própria área reservada em memória, assim como seu conjunto de processos rodando em background. System Global Area (SGA) System Global Area (SGA) é a área em memória que o Oracle reserva para seu funcionamento. Essa área é subdividida em 3 subáreas: Data Buffer Cache - é a área em memória que o Oracle utiliza como um Buffer para leitura em disco. O Oracle nunca lê diretamente do disco, ele primeiro procura a informação no Data Buffer Cache, caso ele não ache, ele então lê o próximo bloco (bloco Oracle) no disco, carrega no Data Buffer Cache. Caso ele não encontre, ele irá repetir o processo até ele encontrar a informação desejada; Redo Log Buffer - é utilizado para armazenar as informações a serem gravadas nos arquivos de log; Figura 8 – Arquitetura Básica do Oracle – Fonte Curso Administração Oracle Shared Pool - serve tanto para armazenar os comandos SQL que são solicitados ao Oracle, quanto para os objetos do dicionário para tratamento de privilégios. A Shared Pool é dividida em duas partes: 1. Library Cache - armazena todos os comandos SQL que são solicitados ao Oracle. Antes do Oracle compilar o comando e de�nir seu plano de acesso (Parse), ele irá procurar na Library Cache se o comando já existe lá, se já existir, ele aproveita a compilação e o plano de acesso do comando anterior; 2. Data Dictonary Cache - armazena informações de privilégios de usuários em cada objeto. Assim que um comando é executado, o Oracle veri�ca se o usuário que está executando o comando, tem privilégios nos devidos objetos que ele está querendo acessar. Processos Como já havia sido dito anteriormente, uma instância Oracle é formada por uma área reservada em memória (SGA) e um conjunto de processos. Estes processos são programas que rodam em background, ou seja não tem interação com o usuário e não consomem CPU quando estão idle (sem fazer nada). System Monitor (SMON) - um processo obrigatório, que realiza qualquer recuperação no momento do Startup do Oracle; Database Writer (DBWR) - é um processo obrigatório, que grava os blocos de dados alterados nos arquivos do Banco de Dados; Process Monitor (PMON) é um processo obrigatório que realiza a recuperação de uma falha de usuário do Bando de Dados. Ele assume a identidade do usuário defeituoso, liberando todos os recursos do Banco de Dados que o usuário estava mantendo; Checkpoint (CKPT) - serve para gravar de tempos em tempos todos os blocos alterados (sujos) que estão em memória. Ele é responsável também por atualizar o Control-File da troca de arquivos de log; Log Writer (LGWR) - é um processo obrigatório e é responsável por gravar e ler os Redos Logs; Archiver (ARCH) - é um processo opcional, só irá trabalhar se o Oracle estiver trabalhando no modo ARCHIVELOG. Ele será responsável por arquivar as informações do Log para um outro arquivo, para que o Oracle possa sobrescrever o arquivo de log; Processos do Usuário (Cliente) – quando um usuário se conecta ao servidor é criado um processo em seu nome solicitando informações dos processos servidor; Processos do Servidor (Servidor) - pegam as solicitações dos processos dos usuários e se comunicam com o Banco de Dados. Arquivos Parameter File - é o arquivo de inicialização do Oracle. O Oracle irá atribuir os valores para seus parâmetros de inicialização, no momento do startup e qualquer alteração nos valores destes parâmetros, só serão reconhecidos quando for feito o próximo startup; Password File - é o arquivo que contém a senha da instância; Data Files - são os arquivos físicos onde o Oracle vai guardar seus dados, Sejam dados temporários ou permanentes; Log Files - são os arquivos de Redo Log, neles são registrados todas as transações feitas no Banco de Dados. Os Log Files juntamente com os Archives servem para recuperar a integridade do Banco de Dados no caso de uma falha; Control File - é responsável por manter a integridade física e lógica, assim como o sincronismo entre todos os Data Files e Log Files. Este arquivo é tão importante que é recomendado trabalhar com no mínimo 2 control �les, sendo que um é a cópia do outro e, logicamente, devem �car em discos diferentes. Notas Cliente Gordo - Servidor Magro O uso do cliente Gordo ou do Servidor Gordo é uma decisão de projeto. Cada uma das soluções possui características diferentes: Cliente Gordo Facilidade no desenvolvimento de aplicações decorrente da variedade de ferramentas de desenvolvimento, com capacidades ODBC (Open Database Conectivity); Possível sobrecarga na rede, pois o processamento da lógica da aplicação ocorre no cliente; Cliente mais sensível à mudança, pois a lógica da aplicação é replicada nos clientes; Menos processamento no servidor. Servidor Gordo Aplicativos clientes que acessam os dados terão as mesmas regras de negócio impostas na base de dados; Possível gargalo no banco de dados decorrente do maior processamento no servidor; Eliminação da portabilidade entre bancos de dados relacionais, visto que as stored procedures apresentam uma linguagem proprietária; Menos processamento no servidor. Manutenção mais simples; Menor tráfego de rede. processos De forma simpli�cada podemos de�nir processo como um programa em execução. Cada atividade a ser realizada em um computador consiste na execução de um ou mais programas que são chamados toda vez que a respectiva função é requerida. Usa-se a palavra processo para descrever uma atividade desse tipo. Assim, um processo pode ser considerado como sendo a sequência de ações realizadas pela execução de instruções (um programa) cujo resultado fornece uma das funções do sistema. Esse conceito pode ser estendidode forma que inclua as funções do usuário. Então, a execução de um programa de um usuário é também um processo. Um processo pode envolver a execução de mais de um programa e por outro lado, um mesmo programa pode ser requerido por mais de um processo. Sistema de Arquivos Um arquivo pode ser entendido como um conjunto de dados armazenados em um dispositivo físico não-volátil, com um nome ou outra referência que permita sua localização posterior. Do ponto de vista do usuário e das aplicações, o arquivo é a unidade básica de armazenamento de informação em um dispositivo não-volátil, pois para eles não há forma mais simples de armazenamento persistente de dados. O Sistema de Arquivos pode ser entendido então como a organização física e lógica dos dados armazenados de forma persistente em um dispositivo físico não volátil. Existem vários sistemas de arquivos nos SO dentre os quais podemos citar FAT e NTFS do Windows. Referências DATE, C. J. Introdução a sistemas de banco de dados. 7. ed. Rio de Janeiro: Campus, 2000. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson Addison Wesley, 2011. SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de banco de dados. 5. ed. Rio de Janeiro: Campus, 2006. Próxima aula Estruturas de armazenamento; Organização de arquivos. Explore mais Documentação do SQL Server; PostgreSQL: o banco de dados relacional de código aberto mais avançado do mundo; Documentação Oracle.. javascript:void(0); javascript:void(0); javascript:void(0);
Compartilhar