Baixe o app para aproveitar ainda mais
Prévia do material em texto
Luciano Rossi BANCO DE DADOS EM AMBIENTES DE ALTA ESCALABILIDADE E-book 2 Neste E-Book: INTRODUÇÃO ����������������������������������������������������������� 3 ARMAZENAMENTO, INDEXAÇÃO E GERENCIAMENTO DE TRANSIÇÃO�������������������� 5 MEIOS DE ARMAZENAMENTO FÍSICO ������������������������������������5 INDEXAÇÃO E FUNÇÕES HASHING ���������������������������������������17 Recuperação de falhas �����������������������������������������������������������28 CONSIDERAÇÕES FINAIS ����������������������������������� 35 REFERÊNCIAS BIBLIOGRÁFICAS & CONSULTADAS �������������������������������������������������������38 2 INTRODUÇÃO Neste módulo, estudaremos os sistemas gerencia- dores de banco de dados (SGBD) e de que modo eles podem apresentar diferentes arquiteturas, devido à influência que o sistema operacional do computador que executa o SGBD. Essa influência pode refletir no tipo de operação em rede, que permite a execução de determinadas tarefas no servidor e outras tarefas no sistema cliente� Além disso, o processamento paralelo permite que as operações do banco de dados sejam realizadas mais eficientemente, provendo respostas mais rápi- das para as operações realizadas pelas transações� Dessa maneira, estudaremos a manutenção de bancos de dados em diferentes locais, fornecendo acesso a vários outros sistemas, aumentando a dis- ponibilidade dos dados armazenados, mesmo em condições de desastres, visto que as informações são distribuídas geograficamente e podem estar es- palhadas por diferentes bancos de dados� Portanto, o módulo proporcionará o estudo de di- ferentes arquiteturas de bancos de dados, entre as quais destacamos os sistemas cliente-servidor, siste- mas paralelos e sistemas distribuídos� Além de tratar dos tipos de servidores e dos sistemas de diretórios� 3 GERENCIAMENTO DE SERVIDORES I A arquitetura de um sistema computacional trata de diferentes aspectos pertinentes, a saber: I. Estrutura de seus componentes� II. Relacionamento entre esses componentes� III. Restrições impostas tanto aos elementos quanto aos relacionamentos� IV. Comportamento global do sistema, que é re- sultado das interações entre seus componentes� V. Conjunto de princípios e regras que regulam sua evolução� VI. Características físicas e lógicas de seus ele- mentos componentes� VII. Objetivo do sistema computacional� Sendo assim, estudaremos as principais arquitetu- ras de sistemas de banco de dados, com vistas a evidenciar as características que definem cada tipo de sistema e sua aplicabilidade prática. Para compreender as diferenças entre as arquitetu- ras, iniciaremos pelo tradicional sistema centralizado, executado sobre um único sistema computacional� 4 Sistemas centralizados Um computador compõe-se de alguns componen- tes elementares, tais quais memória, processador e dispositivos periféricos� Todos eles interligam-se por um barramento comum� Assim, um computador é um sistema composto por elementos básicos. Um sistema computacional pode contar com um ou poucos processadores que, por sua vez, podem ter diferentes núcleos independentes� Os dispositi- vos periféricos são gerenciados por controladores específicos para cada tipo de dispositivo. Tanto os controladores quanto os processadores concorrem pelo acesso à memória principal� Um sistema computacional monousuário é comu- mente utilizado por um único usuário por vez, contan- do com um único processador, que pode ter vários núcleos, e um ou dois discos magnéticos ou unidade em estado sólido (SSD)� Por sua vez, um sistema multiusuário conta com mais unidades de memória e de processadores, podendo ser utilizado por vários usuários conectados remotamente. Os bancos de dados utilizados em sistemas mo- nousuários podem não oferecer as funcionalidades observadas para os sistemas multiusuários. Por exemplo, controle de concorrência, recuperação de falhas e a utilização de variantes de linguagens de consulta, que são mais simples de serem utilizadas� 5 Essa precariedade de funcionalidades em sistemas monousuários deve-se, naturalmente, à ausência de concorrência, visto que os dados armazenados são acessados por um único usuário por vez. Apesar de os sistemas monousuários não observa- rem a concorrência entre processos e transações de vários usuários, ainda assim é possível haver alguma concorrência devido ao paralelismo, por exemplo, na execução de transações� Nesse tipo de sistema, as transações não são par- ticionadas� Observe, porém, que, devido à presença de processadores ou de um processador com alguns núcleos, as transações diferentes podem ser execu- tadas simultaneamente em diferentes processadores ou núcleos� Individualmente, as transações não são executadas mais rapidamente, porém, quando temos um con- junto de transações, a execução em paralelo torna o sistema mais eficiente, permitindo a execução de transações por segundo� Os sistemas computacionais que contam com alguns poucos processadores oferecem o paralelismo de granularidade grossa, no qual somente parte dos processadores é disponível para o compartilhamento da memória� Por outro lado, os sistemas computacionais que contam com um grande número de processadores disponibilizam o paralelismo de granularidade fina, 6 no qual há execução paralela de atividades individu- ais do usuário, como uma consulta. Os sistemas centralizados (ou sistemas monolíticos) tratam dados, recursos e processamento centraliza- do, ou seja, em um único sistema computacional� Nesse sentido, o tipo de sistema apresenta simplici- dade tanto em seu desenvolvimento quanto em sua operação. Observa-se, porém, pouca flexibilidade nesse tipo de sistema para o atendimento às solici- tações do usuário. Sistemas cliente-servidor A tecnologia cliente-servidor é aplicada a sistemas distribuídos, ou seja, o trabalho (ou funcionalida- des) oferecido pelo sistema é distribuído entre os diferentes sistemas computacionais� Um sistema cliente-servidor considera três componentes básicos responsáveis pelo compartilhamento dos recursos de computação: ● Computadores clientes� ● Computadores servidores� ● Rede que interliga os componentes anteriores� A distribuição exata do trabalho entre os clientes e servidores pode variar em função do tipo e aplicação� É comum observarmos o cliente como responsável pela interface com o usuário e pela execução de al- guma lógica básica da aplicação. Nesse sentido, o 7 servidor é responsável pelo gerenciamento de aces- so, pelas funções relativas ao bando de dados e pelas regras do negócio� Na Figura 1, observa-se um esquema ilustrativo de um sistema baseado em cliente-servidor: CLIENTE CLIENTE CLIENTE SERVIDOR CLIENTE REDE Figura 1: Esquema geral de um sistema baseado em cliente- -servidor� Fonte: Silberschatz, Sundarshan e Korth (2016)� Considerando o contexto de banco de dados, em um sistema baseado em cliente-servidor, as funcionalida- des são distribuídas entre o front-end e o back-end� O back-end concentra as tarefas realizadas do lado do servidor, como o controle das estruturas de acesso, a otimização das consultas, o controle de concorrência e a execução de processos de recuperação� Por sua vez, o front-end representa o lado do cliente, que comumente é responsável pelas interfaces e pela disponibilização de alguma lógica básica da aplicação, para tornar as interações mais eficientes. O papel do cliente em um sistema cliente-servidor é realizar o gerenciamento das apresentações, ou seja, é responsável pela interação com o usuário, o 8 que incluí o recebimento de dados para composição das consultas que serão realizadas junto ao servidor� Além disso, o cliente armazena os recursos necessá- rios para que as aplicações possam ser executadas e algumas partes, mais simples, da lógica do negócio que é representada na aplicação� Do ponto de vista do hardware, os clientes podem ser estações de trabalho que não necessitam de ca- racterísticas de desempenhomuito robustas� Quanto ao software, os clientes contam com sistemas ope- racionais específicos para exercerem sua função, aplicações locais para uso particular do usuário e aplicações que são responsáveis pelo processo de comunicação com o servidor� O cliente é considerado uma entidade ativa no sis- tema, pois é responsável pelo início e encerramento do processo de comunicação com o servidor, por meio da solicitação de serviços� Não é comum ha- ver comunicação entre diferentes clientes em um sistema cliente-servidor. Por fim, uma característica fundamental do cliente é a de tornar todo o sistema transparente ao usuário, de modo que a complexi- dade, inerente a esse tipo de sistema, não seja per- cebida por ele� O papel do servidor é o de prover a efetiva comunica- ção com o usuário, cuidando também dos processos de autenticação e validação de permissões que o usuário possuí. Todos os processos referentes ao acesso, organização, seleção e atualização dos da- dos no banco são de responsabilidade do servidor, 9 que armazena o SGBD� Ademais, as regras do ne- gócio estão no lado do servidor, refletidas por meio dos procedimentos armazenados tanto no banco de dados quanto nos demais componentes do sistema� Os computadores utilizados como servidores apre- sentam características de desempenho robustas, com capacidade de processamento e armazena- mento� Esses dispositivos contam com um sistema operacional específico e armazena os SGBD e outras aplicações que descrevem as regras do negócio� Ainda, há aplicações dedicadas ao processo de co- municação com os clientes� No geral, os servidores são reativos, recebendo as solicitações dos clientes e de outros servidores e enviando as respostas para cada solicitação� Os ser- vidores apresentam uma execução contínua, prestan- do serviços distribuídos a diversos clientes e outros servidores simultaneamente� Para que os clientes e servidores possam executar suas tarefas de maneira eficiente, a comunicação en- tre eles é feita por meio de uma rede� O papel da rede é prover a infraestrutura para as aplicações que ro- dam em ambos os lados e necessitam se comunicar� A rede é responsável por submeter às solicitações dos clientes aos servidores e por transportar as res- pectivas respostas de volta aos clientes. Há padrões distintos que podem ser utilizados em redes, como a Ethernet, o TCP/IP e o HTTP� 10 No tocante à aplicação, podemos ter diferentes con- figurações em camadas que podem estar do lado do cliente ou do servidor, a depender das características e objetivos da aplicação� A Figura 2 mostra as possíveis configurações para as camadas da aplicação� Note que, acompanhando as configurações da esquerda para a direita, temos a apresentação distribuída, na qual a camada da apre- sentação é compartilhada no lado do servidor e do cliente; a apresentação remota, na qual a camada da apresentação está somente no lado do cliente; a camada da lógica do negócio distribuída, o gerencia- mento de dados remoto, ou seja, somente no lado do servidor, e o gerenciamento de dados distribuído, cuja parte é responsabilidade do cliente: CLIENTE REDE SERVIDOR APRESENTAÇÃO APRESENTAÇÃO LÓGICA DO NEGÓCIO LÓGICA DO NEGÓCIO LÓGICA DO NEGÓCIO LÓGICA DO NEGÓCIO LÓGICA DO NEGÓCIO LÓGICA DO NEGÓCIO GERÊNCIA DE DADOS GERÊNCIA DE DADOS GERÊNCIA DE DADOS GERÊNCIA DE DADOS GERÊNCIA DE DADOS GERÊNCIA DE DADOS APRESENTAÇÃO APRESENTAÇÃO APRESENTAÇÃO APRESENTAÇÃO Figura 2: Esquema geral de um sistema baseado em cliente- -servidor� Fonte: Vidal (2013)� 11 Do ponto de vista exclusivo do banco de dados, as aplicações podem ser particionadas em duas ou três camadas. Na arquitetura em duas camadas, há uma única camada para a aplicação, que está localizada no lado do cliente, e a camada no servidor refere-se ao SGBD� Nesse caso, a aplicação realiza as cha- madas ao SGBD por meio de padrões de linguagem, como ODBC e JDBC, visando a promover a interação entre o cliente e o servidor� O padrão Open Database Connectivity (ODBC) é uti- lizado para o acesso ao SGBD e fornece interfaces para diferentes linguagens de programação� Assim, o padrão faz a intermediação entre a aplicação e o SGBD� Desse modo, o Java Database Connectivity (JDBC) fornece um conjunto de classes e API, es- critas em Java, proporcionando a interface entre o SGBD e a linguagem Java, expandindo as possibili- dades de uso dessa linguagem� Na arquitetura em três camadas, a máquina cliente não realiza chamadas diretas ao banco de dados� Em vez disso, utiliza-se uma interface de formulá- rios (cliente de aplicação) que se comunica com o servidor de aplicação que, por sua vez, é responsável pela comunicação com o SGBD, isso tudo no lado do servidor. Nisso, a lógica do negócio está incorporada no servidor da aplicação, consistente com a organi- zação denominada apresentação remota� 12 Tipos de sistemas cliente-servidor Os sistemas servidores desempenham um papel especial por serem responsáveis pela disponibiliza- ção de diferentes serviços essenciais para o lado do cliente� No geral, os tipos de servidores podem ser representados por aquilo que é disponibilizado, ou seja, podemos ter servidores de transação, de dados e baseados em nuvem� Vamos a eles� Servidores de transação Os servidores de transação (ou consulta) disponi- bilizam uma interface por meio da qual os clientes podem realizar solicitações de operações sobre o banco de dados� As solicitações dos clientes podem ser feitas a partir da linguagem padrão para a reali- zação de consultas (SQL) ou por alguma interface especializada� Na verdade, um servidor de transação é composto por vários processos que acessam a memória de forma compartilhada� Os processos de servidores são responsáveis por receber, executar e responder as transações demandadas pelos clientes� Essas tarefas podem ser demandas via SQL por pro- tocolos JDBC, ODBC ou outros semelhantes� Assim, pode haver vários processos, um para cada sessão do usuário, ou um único processo com várias threa- ds. Há ainda possibilidade de se ter vários processos e várias threads simultaneamente� 13 Gerencia-se a memória compartilhada pelo proces- so gerenciador de bloqueio� Esse processo é res- ponsável por diversas funcionalidades, entre elas destacamos a permissão e a liberação de bloqueios de unidades de memória, bem como a detecção de impasse� O processo responsável por atualizar o banco de dados é o “processo escritor de banco de dados”, que envia continuamente blocos de buffer alterados para a atualização no disco� Anteriormente, verificamos que uma transação se efetiva quando as atualizações são registradas em log, e esses registros são armazenados de maneira estável. O processo escritor de log é responsável por incluir o registro de log no buffer e, em determinado momento, enviar tais registros ao armazenamento estável. Os checkpoints (ou pontos de verificação) são uti- lizados com a finalidade de evitar que transações muito longas possam resultar em problemas de desempenho� Assim, um checkpoint é uma entrada intermediária que indica atualizações parciais de uma transação� Nesse sentido, o sistema suspende temporariamen- te a execução das transações, impõe a gravação dos blocos de dados que foram alterados, registra o checkpoint no log, impõe sua gravação em disco e, por fim, libera a continuidade da execução das tran- sações. Assim, o processo de ponto de verificação implementa checkpoints periódicos� 14 Quando um processo falha, o processo monitor de processos é responsável tanto pela identificação da falha quanto pelas ações de recuperação, que podem incluir o aborto das transações em execução, sendo oriundas do processo que falhou, e a posterior reinicialização do processo� A Figura 3 apresenta a estrutura dos processos que compõem os servidores de transação: PROCESSO DO USUÁRIO PROCESSO SERVIDOR PROCESSO ESCRITOR DE LOG PROCESSO DO USUÁRIO PROCESSO SERVIDORPROCESSO DO USUÁRIO PROCESSO SERVIDOR PROCESSO MONITOR DE PROCESSOS PROCESSO GERENCIADOR DE BLOQUEIOS PROCESSO DE PONTO DE VERIFICAÇÃO PROCESSO ESCRITOR DE BANCO DE DADOS CACHE DO PLANO DE CONSULTA BUFFET DE LOG POOL DE BUFFER TABELA DE BLOQUEIOS ODBC MEMÓRIA COMPARTILHADA DISCOS DE LOG DISCOS DE DADOS JDBC Figura 3: Memória compartilhada e estrutura de processos� Fonte: Silberschatz, Sundarshan e Korth (2016)� Os dados demandados pelas transações são arma- zenados na memória compartilhada, que pode ser acessada simultaneamente por diferentes proces- sos. A fim de garantir que não haja dois processos atualizando a mesma unidade de dados, o sistema 15 operacional implementa um mecanismo de exclusão mútua por meio de semáforos. Apenas um processo por vez pode alocar uma determinada unidade de dados� Uma alternativa seria a utilização de instru- ções atômicas� Os bloqueios podem levar a uma sobrecarga, devi- do ao grande número de mensagens trocadas com o processo gerenciador de bloqueios� Assim, em muitos SGBD, o processo gerenciador de bloqueios realiza a implementação pela atualização direta da tabela de bloqueios� Desse modo, a exclusão mútua é garantida e, para evitar que a verificação da tabela de bloqueio seja feita repetidas vezes, os semáforos do sistema ope- racional são acionados e sinalizam as concessões de bloqueios aos processos que aguardam� Servidores de dados Quando as tarefas computacionais envolvem o processamento de grande quantidade de dados, é comum o processamento ser realizado no lado do cliente� Assim, o cliente deve ter uma capacidade de processamento comparável à do servidor. Nesse caso, o servidor de dados e os clientes se in- terligam por conexões de alta velocidade, e o servidor de dados envia os dados aos clientes para que sejam processados e, depois, devolvidos� Nessa arquitetura particularmente, os clientes têm funcionalidades de back-end� 16 Nesse tipo de arquitetura, observa-se um alto custo na comunicação entre cliente e servidor, e algumas questões relativas à comunicação são particular- mente importantes� A granularidade da unidade de comunicação pode ser grossa quando a menor unidade de dados é, por exemplo, uma página; ou fina, quando a unidade de dados é uma tupla� Em um contexto de granularida- de fina, quando uma unidade de dados é solicitada, realiza-se o envio conjunto de outras unidades de dados, que podem ser consideradas posteriormente� O envio de maior quantidade de dados é para otimizar o fluxo de dados segundo a respectiva capacidade do sistema, sendo denominado busca prévia� A busca prévia pode resultar em outro tipo de pro- blema, o bloqueio desnecessário de unidades de dados que não utilizadas pelo cliente� Esse fenômeno ocorre da mesma forma quando a granularidade da unidade de comunicação é grossa� Nesse cenário, algumas técnicas de desescalada de bloqueio têm sido propostas, pois preveem que o servidor solicite aos clientes a liberação de bloqueio de unidades de dados que foram transferidas em busca prévia� Desse modo, outros clientes podem requerer o bloqueio dos itens de dados, melhorando o desempenho do sistema� A utilização do caching de dados no cliente é uma forma de minimizar o fluxo de dados entre clientes e servidor� Quando um cliente solicita o bloqueio de alguma unidade de dados, pode-se mantê-la em ca- 17 ching, caso haja espaço suficiente para isso, mesmo depois da transação ter sido efetivada� Assim, caso haja outra transação sobre a mesma unidade de dados, o cliente não precisa solicitar os respectivos envio e bloqueio ao servidor� Nesse caso, há risco de a unidade de dados em caching ter sido alterada por outro cliente após o seu desbloqueio� Com isso, é preciso verificar junto ao servidor se a unidade de dados que ele possui está atualizada e, caso positivo, solicitar o seu bloqueio� Uma variante do caching de dados é o caching de bloqueios, no qual o cliente mantém o bloqueio em caching, em vez de liberar a unidade de dados junto ao servidor� Caso ele tenha outra transação sobre a unidade, o cliente não precisa comunicar ao servidor a despeito da atualização� O problema é que o servidor deve manter o registro de todos os bloqueios em cache, de modo que caso haja uma solicitação de bloqueio àquela unidade de dados, o servidor possa chamar de volta (call back) os bloqueios em caching� Servidores baseados em nuvem A computação em nuvem é a disponibilização de recursos de sistemas computacionais que são ofere- cidos sob demanda� Entre esses recursos, podemos destacar o armazenamento e o processamento de dados� O termo nuvem se refere à disponibilidade dos recursos, via internet, independentemente da localização do usuário. 18 Existem diversos tipos de computação em nuvem� A infraestrutura como serviço (ou Infrastructure as a Service — IaaS), é o termo utilizado para definir a oferta de recursos computacionais sem a preocu- pação, por parte do usuário, com detalhes de baixo nível a respeito da infraestrutura necessária para a aplicação� Na visão dos desenvolvedores de aplicações, a pla- taforma como serviço (ou Platform as a Service — PaaS) fornece as ferramentas para os desenvolve- dores criarem suas aplicações� A área de trabalho como serviço (ou Desktop as a Service — DaaS) consiste da utilização de todas as ferramentas e serviços computacionais, demanda- dos por usuários individuais, remotamente e sem a instalação local de qualquer aplicação� Os servidores de dados baseados em nuvem apre- sentam-se vantajosos quando comparados aos ser- vidores de dados tradicionais, por conta da escala- bilidade e disponibilidade dos dados� Nesse sentido, não há limite físico para a quantidade de dados que são armazenados, visto que é sempre possível comprar espaço adicional para armazena- mento, por vezes até automaticamente� O acesso aos dados do servidor baseado em nuvem pode ser feito de qualquer lugar, desde que haja uma conexão via internet de qualidade e um dispositivo para realizar esse acesso� 19 Os servidores baseados em nuvem não oferecem os recursos observados em SGBD, como suporte para SQL ou transações ACID� Sistemas paralelos Os sistemas paralelos possibilitam melhor desem- penho no processamento de dados, pela utilização de vários processadores e nas operações de entra- da e saída de dados, a partir da utilização de vários discos� Suponha que temos uma transação que, devido ao número de operações executadas, vai demandar t unidades de tempo para sua conclusão� Se a transa- ção for executada em um sistema multiprocessado, com vários processadores, o tempo de execução se manterá, com isso, teremos somente um processa- dor sendo utilizado, e os demais estarão ociosos� Note que, para melhorar o desempenho de processa- mento, a transação precisa ser particionada, sendo que cada parte dela precisa ser executada em um processador diferente� Dessa forma, se formos capazes de dividir a transa- ção em duas partes, podemos executar cada uma delas em um processador diferente e, caso as partes sejam equivalentes em tempo de processamento, podemos reduzir o tempo total pela metade� Os sistemas de banco de dados paralelos ganham relevância quando as aplicações precisam realizar consultas extremamente grandes ou quando se faz 20 necessário o processamento de muitas transações simultaneamente� Nisso, as arquiteturas centraliza- das ou cliente-servidor não capazes de realizar as operações com o desempenho necessário. Os computadores podem apresentar granularidade grossa ou fina no tocante ao paralelismo. Máquinas que contam com poucos processadores com grande poder de processamento são consideradas máquinas paralelas com granularidade grossa. Contudo, máqui- nas que utilizam milhares de processadores menos poderosos são de granularidade fina. As máquinas de granularidade fina admitem um grau de paralelis- mo muito maior que as máquinas de granularidade grossa� Os sistemascomputacionais paralelos têm seus desempenhos avaliados a partir de duas medidas principais� O número de operações que podem ser realizadas em um determinado intervalo de tempo é denominado throughput (vazão)� No entanto, o tempo de resposta mede a quantidade de tempo necessária para que uma determinada tarefa seja completada� Os sistemas computacionais paralelos de granulari- dade fina tendem a melhorar o throughput, ao passo que os sistemas paralelos de granularidade grossa podem apresentar um melhor tempo de resposta, quando temos transações muito grandes e difíceis de serem desmembradas� Quando temos uma redução no tempo de proces- samento de uma determinada tarefa, por conta do paralelismo, dizemos que se obteve um ganho de 21 velocidade� O ganho de velocidade pode ser mais ou menos proporcional ao grau de paralelismo do sistema� Se for possível reduzir pela metade o tempo de pro- cessamento com a duplicação dos recursos, como processadores e discos, dizemos que o ganho de velocidade é linear, ou seja, quanto maior for a dis- ponibilidade de recursos, maior será o ganho de velocidade� Assim, qualquer ganho de velocidade proporcional- mente menor que o incremento de recursos de har- dware é denominado ganho de velocidade sublinear� O ganho de escala define a capacidade do sistema paralelo de realizar o processamento de transações maiores em um mesmo intervalo de tempo, a partir do incremento de recursos� Imagine que uma tarefa de um tamanho X seja rea- lizada em t unidades de tempo� Se, a partir da dupli- cação dos recursos de hardware, for possível realizar outra tarefa com o dobro do tamanho da primeira, nas mesmas t unidades de tempo, dizemos que o sistema demonstra um ganho de escala linear� Porém, se o tempo necessário para realizar a tarefa for maior que t, dizemos que o sistema apresenta um ganho de escala sublinear� Existem dois tipos de ganhos de escala, em batch e de transação� O ganho de escala em batch associa-se ao aumento do tamanho do banco de dados� Com 22 isso, a medida que o banco de dados aumenta, o tem- po de execução das transações igualmente aumenta� O ganho de escala de transação descreve o aumento da velocidade de submissão de transações ao banco de dados, cujo tamanho aumenta em sua proporção� Portanto, a medida do ganho de escala é importante, pois verifica se o sistema computacional paralelo será capaz de operar em uma velocidade adequada, mesmo que haja um crescimento do tamanho do banco de dados ou do número de transações sub- metidas a ele� Sistemas distribuídos O processamento paralelo é um conceito referente à forma com que um processo (ou transação ou tarefa) pode ser executado� O processo pode ser executado sequencialmente, em que as operações pertinentes ao processo são escutadas uma a uma, em um único processador, ou paralelamente, que prevê a execução simultânea de operações, de um mesmo processo, em processadores diferentes� Estudamos que o processamento pode ser executado em um único sistema computacional, de maneira centralizada� Nesse tipo de sistema, podemos ob- servar o processamento paralelo, visto que um único sistema computacional pode contar com diferentes processadores� Assim, um sistema monolítico pode ser paralelo também� 23 Os sistemas cliente-servidor definem papéis muito bem definidos para cada componente envolvido no sistema� Nesse tipo de sistema, os componentes individuais (computadores clientes ou servidores) podem executar suas operações de forma paralela� Observe que esses conceitos se referem a aspectos distintos e não mutuamente excludentes, no âmbito do processamento de dados� Os sistemas cliente-servidor são categorizados como sistemas distribuídos, pois uma transação pode, por exemplo, ser criada em um computador e executa- da em outro, visto que os componentes do sistema estão distribuídos geograficamente. A Figura 4 apresenta a estrutura de alguns tipos de sistemas em função das características do processamento: PROCESSAMENTO PROCESSAMENTO CENTRALIZADO MONOLÍTICO PEER-TO-PEER CLIENTE-SERVIDOR PROCESSAMENTO DISTRIBUÍDO Figura 4: Tipos de processamento� Fonte: Vidal (2013)� 24 Os SGBD distribuídos fazem a gestão de um ban- co de dados armazenado em vários computadores. Esses computadores estão interconectados, no geral, por redes de alto desempenho e não compartilham outros elementos, como memória principal ou disco� Destacamos as principais diferenças entre bancos de dados paralelos e distribuídos, por exemplo, o fato de os bancos de dados distribuídos serem compostos por diferentes computadores geograficamente dis- tantes uns dos outros� Cada um deles é administrado de maneira independente� Ademais, nos bancos de dados distribuídos, existem as transações locais e globais� A transação local é aquela que acessa somente o segmento do banco de dados que está armazenado na mesma máquina que originou a transação. Por outro lado, uma transação é global quando acessa segmentos do banco de dados armazenados em outra localidade ou quando acessa vários segmentos distintos� Dentre as características particulares, pertinentes aos sistemas de banco de dados distribuídos, po- demos destacar o compartilhamento dos dados� Nesse caso, os usuários têm acesso a dados que, fisicamente, estão alocados em outro computador. Um exemplo clássico da importância do compartilha- mento de dados em sistemas distribuídos é o caso das agências bancárias. Caso esse tipo de sistema não estivesse disponível, uma transação bancária po- deria ser consolidada apenas entre contas da mesma 25 agência ou por meio do auxílio de algum mecanismo externo de acoplamento entre as contas� Outra característica importante em sistemas de ban- co de dados distribuídos é a autonomia� Em sistemas de banco de dados centralizados, há um administra- dor responsável pelo controle do banco. Entretanto, em um sistema distribuído, apesar de haver um ad- ministrador que controla o banco de dados como um todo, há administradores locais para cada segmento do banco de dados� Essa configuração permite que as responsabilidades sejam compartilhadas, atribuindo algum grau de au- tonomia aos administradores locais e resultando em um controle mais efetivo� Em um contexto de banco de dados centralizados, uma falha pode impactar o funcionamento do siste- ma como um todo� Entretanto, quando um segmento do banco de dados falha, em um sistema distribuí- do, os outros segmentos podem continuar a operar normalmente� Ademais, se houver alguma estratégia de replicação dos segmentos do banco de dados, as transações podem continuar a executar normalmente, mesmo que a unidade de dado, sobre a qual a operação está sendo executada, esteja armazenada no segmento com falha� Como uma característica resultante, te- mos maior disponibilidade das informações armaze- nadas no banco de dados, quando este é distribuído� 26 O sistema deve ser capaz de identificar uma falha em um dos segmentos distribuídos do banco de dados. Após a identificação, o segmento é isolado, submetido a processos de recuperação e posterior integração ao sistema� Apesar de a recuperação em um sistema distribuído ser mais complexa do que em um sistema centrali- zado, a possibilidade de não interromper a operação, mesmo em contextos de falhas, é uma vantagem provida por esse tipo de sistema� Por exemplo, quatro agências bancárias, cada uma em uma cidade e com o próprio banco de dados� Os dados dos clientes de cada agência estão arma- zenados em seus respectivos bancos de dados e, além do mais, há outro banco de dados central, com informações a respeito de todas as agências. Nota-se que, nesse contexto, uma transferência é realizada, em uma das agências, para uma conta na própria agência. E essa é uma transação local, visto que foi iniciada no mesmo local em que o segmento do banco de dados está armazenado. Se a origem da transação fosse em outra agência, a transação seria consideradaglobal� Conceitualmente, um sistema de banco de dados distribuído tem seus segmentos em conformidade com um esquema único e são gerenciados por um mesmo tipo de SGBD� Cada segmento reconhece a existência de todos os outros. Em geral, os sistemas distribuídos não apresentam essas características ideais, pois um banco de dados distribuído é o re- 27 sultado da interconexão entre sistemas existentes, que, por vezes, não compartilham o mesmo esque- ma ou tipo de software de gestão� Eles são conheci- dos como sistemas de banco de dados distribuídos heterogêneos. Os sistemas de banco de dados distribuídos apre- sentam outros desafios importantes, e a atomicidade das transações é um desses desafios. Em sistemas centralizados, o controle da atomicidade é mais sim- ples de ser realizado que em sistemas distribuídos� Por exemplo, suponha que uma transação seja exe- cutada em dois segmentos diferentes de um sistema distribuído� Nesse caso, pode ocorrer de a transa- ção finalizar em um segmento e, por algum motivo, precisar ser abortada em outro� O resultado seria a inconsistência do banco de dados. Temos protocolos específicos para que situações como essa não ocorram� Nesse sentido, o protocolo de commit em duas fases é muito utilizado� No pro- tocolo, cada segmento do banco de dados executa a transação, mas não realiza a confirmação da exe- cução (commit)� Ao contrário, o segmento executante informa a um segmento coordenador sobre a situação, ao qual cabe a decisão de realizar ou não o commit� Se, em algum segmento, a transação abortar por qualquer motivo, o segmento coordenador deverá abortar a transação em todos os outros segmentos em que ela executou� 28 O controle de concorrência em sistemas distribuídos é outro desafio. Um segmento pode bloquear um item de dados, localmente, e dada a possibilidade de as transações serem originadas em outros segmentos, surgir um impasse nesse contexto� Assim, a detecção de impasse precisa ser executada coordenadamente, em vários segmentos do banco de dados� Além disso, como podemos ter réplicas dos dados em diferentes segmentos, isso torna o desafio ainda mais complicado. Escolher entre um sistema centralizado ou distribu- ído deve considerar as vantagens e desvantagens de cada um. Verificamos que as vantagens de um sistema distribuído são compartilhamento de dados, autonomia e disponibilidade� Por outro lado, podemos ter desvantagens que se resumem à complexidade para se garantir a coor- denação entre os segmentos do banco de dados� Essa complexidade pode se apresentar na forma de maior custo para o desenvolvimento de software, um maior potencial de ocorrência de bugs ou maior sobrecarga de processamento, devido ao esforço de coordenação dos segmentos� 29 Sistemas de diretório Um sistema de diretórios é uma forma de organizar objetos em função de uma classe� Um objeto pode ser visto como um registro em um banco de dados, apesar de o conceito de diretório não estar restrito ao contexto computacional� Assim, um objeto em um banco de dados pode ser descrito por uma série de atributos e pertencer à determinada classe, pois os diretórios são úteis para que se possa identificar informações a respeito de um objeto específico ou para encontrar um conjunto de objetos que satisfa- çam certas restrições� Por exemplo, temos uma lista telefônica que arma- zena informações sobre os usuários do sistema de telefonia e disponibiliza essas informações orde- nadamente. Quando utilizamos um dicionário (lista telefônica) para identificar as características de um objeto, por exemplo, sabemos o nome do usuário e queremos descobrir o número do seu telefone ou o seu endereço� Essa utilização é descrita como white pages� Sabemos a respeito de certas restrições sobre os objetos e queremos saber quais objetos se adequam às restrições, por isso, estamos recorrendo à descrita de yellow page� Retomando o exemplo anterior, pode- mos estar interessados em identificar os veterinários que atendam na cidade de São Paulo� O sistema de diretório é um serviço de armazena- mento de informações que prioriza a busca e a lei- 30 tura� As informações armazenadas no sistema de diretório são descritas por atributos, possibilitando as operações de filtragem. Há muitas similaridades entre os sistemas de banco de dados e os sistemas de diretório; contudo, a ca- racterística predominante que diferencia ambos os sistemas é que, no sistema de diretórios, priorizam-se as operações de leitura em detrimento das operações de escrita� Com isso, os sistemas de diretórios não implementam certos controles que são imprescin- díveis nos sistemas de banco de dados� Outra diferença importante entre os sistemas de ban- co de dados e de diretórios é a forma de acesso� Enquanto a maioria dos bancos de dados são aces- sados pela SQL, os sistemas de diretório utilizam um protocolo de acesso mais simplificado, visto que não fornecem todas as funcionalidades que um banco de dados normalmente oferece� Os serviços globais, oferecidos por um sistema de diretórios, são distribuídos e seus dados são espa- lhados por diferentes computadores� Um exemplo de serviço global é o Domain Name System (DNS) utilizado na internet� O protocolo de acesso aos sistemas de diretórios mais utilizado atualmente é o Lightweight Directory Access Protocol (LDAP), que se baseia no protocolo X.500, definido pela International Organization for Standardization (ISO), que por sua vez não é muito utilizado dada a sua complexidade� O LDPA oferece grande parte dos recursos do X�500 com mais sim- 31 plicidade e, consequentemente, mais popularidade entre os usuários. O modelo de dados utilizado pela LDAP são entradas em que, para cada uma, há um distinguished name (DN) que a identifica. Por sua vez, um DN é composto por uma sequência de Nomes Distintos Relativos (Relative Distinguished Name — RDN)� Cada atributo da entrada possui um tipo associado a um ou mais valores� A estrutura de dados conside- rada pelo protocolo LDAP é uma árvore hierárquica, denominada Directory Information Tree (DIT)� O LDAP define um protocolo de rede para a manipu- lação dos dados, que consiste somente de seleções e projeções� Na Figura 5, temos um exemplo de es- trutura de dados para o protocolo LDAP: 32 FAM AUGUSTA PESSOAS COMPUTADORES GRUPOS MÓOCA PAULISTA Figura 5: Exemplo de DIT� Fonte: Adaptado de Mori Junior e Machado (2006)� As consultas realizadas sobre a DIT devem especifi- car uma base, ou seja, um nó interno da árvore, por meio de seu nome distinto, as restrições de busca, que podem ser uma expressão booleana formada a partir das restrições, um escopo, que define a abran- gência de busca, podendo ser apenas a base e os respectivos filhos ou a subárvore toda, os atributos de retorno e os parâmetros que definem o núme- ro de resultados retornados e sobre o consumo de recursos� As informações disponibilizadas em um sistema de diretórios podem ser divididas em diversas DIT� Cada uma armazena informações sobre alguma entrada 33 específica. O sufixo de uma DIT é uma sequência de pares atributo-valor que definem qual é a informação armazenada na DIT� A concatenação entre os pares e os nomes distintos definem um percurso na árvore da entrada até a raiz� Os sistemas de diretórios podem ser considerados uma especialização dos sistemas de banco de da- dos� Nesses sistemas, as informações são arma- zenadas em conformidade com um esquema hie- rárquico em forma de árvore, de modo semelhante à organização de arquivos no sistema de arquivos de um computador pessoal� Devido à simplicidade dos sistemas de diretórios, o acesso a eles é feito por meio de protocolos padronizados, como o LDAP� 34 CONSIDERAÇÕES FINAIS Neste módulo, tivemos a oportunidade de estudar os diferentes tipos de sistemas computacionais, mais especificamente os sistemas de bancos de dados. Assim, pudemos verificar que o sistema de banco de dados é influenciado pelaarquitetura do sistema computacional em que está inserido. Os sistemas monolíticos, de processamento centrali- zado, concentram todos os componentes do sistema (memória principal, processador, barramentos) em um único ambiente� Os sistemas cliente-servidor compõem um tipo de sistema que realiza as opera- ções de maneira distribuída em diferentes computa- dores. Esses computadores têm papéis bem defini- dos e são classificados como clientes e servidores. O banco de dados é armazenado ao lado do servidor, e as solicitações que geram as transações são reali- zadas nos computadores clientes. Há, portanto, um processo de comunicação entre esses elementos, e esse processo se baseia em uma infraestrutura de rede� O processamento paralelo de dados, ou de transa- ções, é uma forma de otimizar a capacidade compu- tacional, no que diz respeito ao processamento e às operações de entrada e saída, para que as operações sobre o banco de dados possam ser realizadas mais rapidamente� 35 Em seguida, passamos a analisar uma forma es- pecializada e simplificada de sistema de banco de dados: os sistemas de diretórios� Esses sistemas consideram uma estrutura hierárquica em forma de árvore para o armazenamento dos dados. Assim, as operações nesse tipo de sistema são realizadas a partir de protocolos específicos para esse fim. Quanto ao seu objetivo, os sistemas de diretório prio- rizam a leitura dos dados em detrimento da escrita� Por conta disso, é possível não considerar uma série de mecanismos previstos nos sistemas de banco de dados� 36 Referências Bibliográficas & Consultadas BARRETO, J. S.; ZANIN, A.; MORAIS, I. S.; VETTORAZZO, A. S. Fundamentos de segu- rança da informação. Porto Alegre: SAGAH, 2018 [Biblioteca Virtual]. ELMASRI, R.; NAVATHE, S. B. Sistema de banco de dados. 6. ed. São Paulo: Pearson Addison-Wesley, 2011 [Biblioteca Virtual]. HEUSER, C. A. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman, 2009. [Biblioteca Virtual]. MANNINO, M. V. Projeto, desenvolvimento de aplicações e administração de banco de dados. 3. ed. Porto Alegre: AMGH, 2014 [Biblioteca Virtual]. MEDEIROS, L. F. Banco de dados: princípios e prática. Curitiba: InterSaberes, 2013 [Biblioteca Virtual]. MOLINARO, L. F. R. Gestão de tecnologia da infor- mação: governança de TI: arquitetura e alinhamento entre sistemas de informação e o negócio. Rio de Janeiro: LTC, 2011 [Minha Biblioteca]. MORI JUNIOR, F. S. ; MACHADO, E. S. ; Autenticação Integrada Baseada em Serviço de Diretório LDAP. São Paulo: IME/USP, 2006. Disponível em: https://bcc.ime.usp.br/tccs/2006/er- ich/html/index.html. Acesso em: 18 nov. 2020. OIKAWA, M. K. Sistemas de Banco de Dados – Notas de Aula. Universidade Federal do ABC - UFABC, 2012. RAMARKRISHNAN, R. Sistemas de gerenciamento de banco de dados. 3. ed. Porto Alegre: AMGH, 2001 [Biblioteca Virtual]. SILBERSCHATZ, A.; SUNDARSHAN, S.; KORTH, H. F. Sistema de Banco de Dados. Elsevier Brasil, 2016. VIDAL, A. G. R. Sistemas Computacionais – Notas de Aula. São Paulo: FEA/USP, 2013. WANDERLEY, A. R. M. C. Gerenciamento de ser- vidores. São Paulo: Érica, 2019 [Biblioteca Virtual]. https://bcc.ime.usp.br/tccs/2006/erich/html/index.html https://bcc.ime.usp.br/tccs/2006/erich/html/index.html INTRODUÇÃO Referências Bibliográficas & Consultadas
Compartilhar