Buscar

E-book 3 Tópico 3 - Ambientes de Alta Escalabilidade

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

Continue navegando