Você está na página 1de 35

Machine Translated by Google

SGBD - Arquitetura

O projeto de um SGBD depende de sua arquitetura. Pode ser centralizado ou

descentralizado ou hierárquico. A arquitetura de um SGBD pode ser vista como

camada única ou multicamada. Uma arquitetura de n camadas divide todo o sistema em

n módulos relacionados, mas independentes , que podem ser modificados, alterados,

alterado ou substituído.

Na arquitetura de 1 camada, o DBMS é a única entidade onde o usuário se senta diretamente

o DBMS e o utiliza. Quaisquer alterações feitas aqui serão feitas diretamente no DBMS

em si. Ele não fornece ferramentas úteis para usuários finais. Designers de banco de dados e

os programadores normalmente preferem usar a arquitetura de camada única.

Se a arquitetura do DBMS for de 2 camadas, ele deve ter um aplicativo por meio

qual o DBMS pode ser acessado. Os programadores usam arquitetura de 2 camadas onde eles

acessar o SGBD por meio de um aplicativo. Aqui a camada de aplicação é inteiramente

independente do banco de dados em termos de operação, design e programação.

Arquitetura de 3 camadas

Uma arquitetura de 3 camadas separa suas camadas umas das outras com base na complexidade de

os usuários e como eles usam os dados presentes no banco de dados. É o mais amplamente

arquitetura usada para projetar um DBMS.


Machine Translated by Google

• Camada de banco de dados (dados) ÿ Nesta camada, o banco de dados reside junto com seus

linguagens de processamento de consulta. Também temos as relações que definem os dados

e suas restrições a este nível.

• Application (Middle) Tier ÿ Nesta camada residem o servidor de aplicativos e

os programas que acessam o banco de dados. Para um usuário, essa camada de aplicativo

apresenta uma visão abstrata do banco de dados. Os usuários finais desconhecem qualquer

existência do banco de dados além do aplicativo. Na outra ponta, o

camada de banco de dados não está ciente de nenhum outro usuário além da camada de aplicativo.

Assim, a camada de aplicação fica no meio e atua como um mediador

entre o usuário final e o banco de dados.

• Camada de usuário (apresentação) ÿ Os usuários finais operam nessa camada e sabem

nada sobre qualquer existência do banco de dados além desta camada. Nesta camada,
Machine Translated by Google

várias exibições do banco de dados podem ser fornecidas pelo aplicativo. Todos

as exibições são geradas por aplicativos que residem na camada de aplicativos.

A arquitetura de banco de dados de várias camadas é altamente modificável, já que quase todos os seus

os componentes são independentes e podem ser alterados independentemente.

Arquiteturas Centralizadas e Cliente/Servidor para

SGBDs

1. Arquitetura de DBMSs Centralizados

As arquiteturas para DBMSs seguiram tendências semelhantes àquelas para

arquiteturas de sistemas de computador. Arquiteturas anteriores usavam computadores mainframe para

fornecer o processamento principal para todas as funções do sistema, incluindo o aplicativo do usuário

programas e programas de interface do usuário, bem como toda a funcionalidade do DBMS. O

razão era que a maioria dos usuários acessava esses sistemas por meio de terminais de computador que não

não têm poder de processamento e apenas fornecem recursos de exibição. Portanto, todos

processamento foi realizado remotamente no sistema de computador, e apenas exibir

informações e controles foram enviados do computador para os terminais de exibição,

que foram conectados ao computador central através de vários tipos de comunicação

redes.

Como os preços do hardware caíram, a maioria dos usuários substituiu seus terminais por PCs e

estações de trabalho. No início, os sistemas de banco de dados usavam esses computadores da mesma forma que eles

tinha usado terminais de exibição, de modo que o próprio DBMS ainda era um DBMS centralizado
Machine Translated by Google

em que toda a funcionalidade do DBMS, execução do programa aplicativo e controle do usuário

o processamento da interface foi realizado em uma máquina. A Figura 2.4 ilustra o

componentes físicos em uma arquitetura centralizada. Gradualmente, os sistemas DBMS

começou a explorar o poder de processamento disponível no lado do usuário, o que levou a

arquiteturas DBMS cliente/servidor.

2. Arquiteturas básicas de cliente/servidor

Primeiro, discutimos a arquitetura cliente/servidor em geral, depois vemos como ela é

aplicado a SGBDs. A arquitetura cliente/servidor foi desenvolvida para lidar com

ambientes de computação em que um grande número de PCs, estações de trabalho, arquivos

servidores, impressoras, servidores de banco de dados,


Machine Translated by Google

Servidores Web, servidores de e-mail e outros softwares e equipamentos são conectados por meio de um

rede. A ideia é definir servidores especializados com funcionalidades específicas. Para

por exemplo, é possível conectar vários PCs ou pequenas estações de trabalho como clientes

a um servidor de arquivos que mantém os arquivos das máquinas clientes. Outra máquina pode

ser designado como um servidor de impressão por estar conectado a várias impressoras; todas as impressões

os pedidos dos clientes são encaminhados para esta máquina. Servidores Web ou e-mail

os servidores também se enquadram na categoria de servidores especializados. Os recursos fornecidos por

servidores especializados podem ser acessados por muitas máquinas clientes. o cliente

as máquinas fornecem ao usuário as interfaces apropriadas para utilizar esses servidores,

bem como com capacidade de processamento local para executar aplicativos locais. Este conceito pode

ser transportado para outros pacotes de software, com programas especializados - como um

Pacote CAD (desenho auxiliado por computador) — sendo armazenado em máquinas servidoras específicas

e tornando-se acessível a vários clientes. A Figura 2.5 ilustra cliente/servidor

arquitetura no nível lógico; A Figura 2.6 é um diagrama simplificado que mostra o

arquitetura física. Algumas máquinas seriam apenas sites de clientes (por exemplo,

estações de trabalho sem disco ou estações de trabalho/PCs com discos que possuem apenas cliente

software instalado).
Machine Translated by Google

Outras máquinas seriam servidores dedicados e outras teriam cliente e

funcionalidade do servidor.

O conceito de arquitetura cliente/servidor assume uma estrutura subjacente que

consiste em muitos PCs e estações de trabalho, bem como um número menor de mainframes

máquinas, conectadas via LANs e outros tipos de redes de computadores. um cliente em

esta estrutura é tipicamente uma máquina de usuário que fornece recursos de interface de usuário

e processamento local. Quando um cliente requer acesso a funcionalidades adicionais—

como acesso ao banco de dados - que não existe naquela máquina, ele se conecta a um servidor

que fornece a funcionalidade necessária. Um servidor é um sistema que contém tanto hard

ware e software que podem fornecer serviços para as máquinas clientes, como arquivo

acesso, impressão, arquivamento ou acesso ao banco de dados. Em geral, algumas máquinas instalam

apenas software cliente, outros apenas software servidor e ainda outros podem incluir ambos

software cliente e servidor, conforme ilustrado na Figura 2.6. No entanto, é mais


Machine Translated by Google

comum que o software cliente e o servidor geralmente sejam executados em máquinas separadas. Dois

principais tipos de arquiteturas básicas de DBMS foram criados neste subjacente

estrutura cliente/servidor: duas camadas e três camadas.

3. Arquiteturas cliente/servidor de duas camadas para DBMSs

Em sistemas de gerenciamento de banco de dados relacional (RDBMSs), muitos dos quais começaram como

sistemas centralizados, os componentes do sistema que foram movidos primeiro para o lado do cliente

foram a interface do usuário e os programas aplicativos. Como o SQL (consulte os Capítulos 4

e 5) forneceu uma linguagem padrão para RDBMSs, isso criou uma divisão lógica

ponto entre cliente e servidor. Portanto, a funcionalidade de consulta e transação

relacionados ao processamento SQL permaneceram no lado do servidor. Em tal arquitetura, o

O servidor geralmente é chamado de servidor de consulta ou servidor de transação porque fornece

essas duas funcionalidades. Em um RDBMS, o servidor também costuma ser chamado de SQL

servidor.

Os programas de interface com o usuário e os programas aplicativos podem ser executados no lado do cliente.

Quando o acesso ao DBMS é necessário, o programa estabelece uma conexão com o

DBMS (que fica do lado do servidor); uma vez que a conexão é criada, o cliente

programa pode se comunicar com o DBMS. Um padrão chamado Open Database

Conectividade

(ODBC) fornece uma interface de programação de aplicativo (API), que permite

programas do lado do cliente para chamar o DBMS, desde que as máquinas cliente e servidor
Machine Translated by Google

ter o software necessário instalado. A maioria dos fornecedores de DBMS fornece drivers ODBC

para seus sistemas. Um programa cliente pode realmente se conectar a vários RDBMSs e

enviar solicitações de consulta e transação usando a API ODBC, que são então

processados nos sites do servidor. Todos os resultados da consulta são enviados de volta ao programa cliente,

que pode processar e exibir os resultados conforme necessário. Um padrão relacionado para o Java

linguagem de programação, chamada JDBC, também foi definida. Isso permite que o Java

programas clientes para acessar um ou mais DBMSs através de uma interface padrão.

A abordagem diferente da arquitetura cliente/servidor de duas camadas foi adotada por alguns

SGBDs orientados a objetos, onde os módulos de software do SGBD foram divididos

entre cliente e servidor de forma mais integrada. Por exemplo, o servidor

nível pode incluir a parte do software DBMS responsável pela manipulação de dados

armazenamento em páginas de disco, controle e recuperação de simultaneidade local, buffering e

cache de páginas de disco e outras funções semelhantes. Enquanto isso, o nível do cliente pode

lidar com a interface do usuário; funções de dicionário de dados; Interações do DBMS com

compiladores de linguagem de programação; otimização de consulta global, controle de simultaneidade,

e recuperação em vários servidores; estruturação de objetos complexos a partir dos dados

nos buffers; e outras funções semelhantes. Nesta abordagem, o cliente/servidor

a interação é mais fortemente acoplada e é feita internamente pelos módulos DBMS—

alguns dos quais residem no cliente e alguns no servidor - em vez do

usuários/programadores. A divisão exata da funcionalidade pode variar de sistema para

sistema. Nessa arquitetura cliente/servidor, o servidor é chamado de banco de dados

servidor porque fornece dados em páginas de disco para o cliente. Esses dados podem então ser

estruturados em objetos para os programas clientes pelo software DBMS do lado do cliente.
Machine Translated by Google

As arquiteturas descritas aqui são chamadas de arquiteturas de duas camadas porque o

componentes de software são distribuídos em dois sistemas: cliente e servidor. O

vantagens desta arquitetura são sua simplicidade e compatibilidade perfeita com

sistemas existentes. O surgimento da Web mudou os papéis dos clientes e

servidores, levando à arquitetura de três camadas.

4. Arquiteturas de três camadas e n camadas para aplicativos da Web

Muitos aplicativos da Web usam uma arquitetura chamada arquitetura de três camadas,

que adiciona uma camada intermediária entre o cliente e o servidor de banco de dados, como

ilustrado na Figura 2.7(a).

Essa camada intermediária ou camada intermediária é chamada de servidor de aplicativos ou

o servidor Web, dependendo do aplicativo. Este servidor desempenha um intermediário

executando programas aplicativos e armazenando regras de negócios (procedimentos ou

restrições) que são usadas para acessar dados do servidor de banco de dados. também pode
Machine Translated by Google

melhorar a segurança do banco de dados verificando as credenciais de um cliente antes de encaminhar um

solicitação ao servidor de banco de dados. Os clientes contêm interfaces GUI e alguns recursos adicionais

regras de negócios específicas do aplicativo. O servidor intermediário aceita solicitações de

o cliente, processa a solicitação e envia consultas e comandos de banco de dados para o

servidor de banco de dados e, em seguida, atua como um canal para passar dados (parcialmente) processados

do servidor de banco de dados para os clientes, onde pode ser processado posteriormente e

filtrado para ser apresentado aos usuários no formato GUI. Assim, a interface do usuário,

regras de aplicativos e acesso a dados atuam como as três camadas. A Figura 2.7(b) mostra

outra arquitetura usada por bancos de dados e outros fornecedores de pacotes de aplicativos. O

camada de apresentação exibe informações para o usuário e permite a entrada de dados. O

camada de lógica de negócios lida com regras intermediárias e restrições antes que os dados sejam

passado para o usuário ou para o DBMS. A camada inferior inclui todos os dados

serviços de gestão. A camada intermediária também pode atuar como um servidor Web, que

recupera os resultados da consulta do servidor de banco de dados e os formata em dinâmico

Páginas da Web que são visualizadas pelo navegador da Web no lado do cliente.

Outras arquiteturas também foram propostas. É possível dividir as camadas

entre o usuário e os dados armazenados em componentes mais finos, dando assim

ascensão para arquiteturas de n camadas; onde n pode ser quatro ou cinco níveis. Normalmente, o

camada de lógica de negócios é dividida em várias camadas. Além de distribuir

programação e dados em toda a rede, os aplicativos de n camadas oferecem o

vantagem de que qualquer camada pode ser executada em um processador ou

plataforma do sistema e podem ser manuseados de forma independente. Fornecedores de ERP (empresa

planejamento de recursos) e pacotes de CRM (gerenciamento de relacionamento com o cliente) geralmente

usar uma camada de middleware, que responde pelos módulos front-end (clientes)

comunicando-se com vários bancos de dados de back-end (servidores).


Machine Translated by Google

Os avanços na tecnologia de criptografia e descriptografia tornam a transferência mais segura

dados confidenciais do servidor para o cliente em formato criptografado, onde serão descriptografados.

Este último pode ser feito pelo hardware ou por software avançado. esta tecnologia

oferece níveis mais altos de segurança de dados, mas os problemas de segurança de rede continuam sendo um grande problema

preocupação. Várias tecnologias para compactação de dados também ajudam a transferir grandes

quantidades de dados de servidores para clientes em redes com e sem fio.

Sistema de gerenciamento de banco de dados centralizado

Um banco de dados centralizado é armazenado em um único local, como um computador mainframe.

Ele é mantido e modificado apenas a partir desse local e geralmente acessado usando um

conexão com a Internet, como uma LAN ou WAN. O banco de dados centralizado é usado por

organizações como faculdades, empresas, bancos, etc.


Machine Translated by Google

Como pode ser visto no diagrama acima, todas as informações para a organização são

armazenados em um único banco de dados. Esse banco de dados é conhecido como banco de dados centralizado.

Vantagens

Algumas vantagens do sistema de gerenciamento de banco de dados centralizado são -

• A integridade dos dados é maximizada, pois todo o banco de dados é armazenado em um único

localização física. Isso significa que é mais fácil coordenar os dados e é

o mais preciso e consistente possível.

• A redundância de dados é mínima no banco de dados centralizado. Todos os dados são

armazenados juntos e não espalhados em locais diferentes. Então, é mais fácil

certifique-se de que não há dados redundantes disponíveis.

• Como todos os dados estão em um só lugar, pode haver medidas de segurança mais fortes

em torno dele. Assim, o banco de dados centralizado é muito mais seguro.

• Os dados são facilmente transportáveis porque são armazenados no mesmo local.


Machine Translated by Google

• O banco de dados centralizado é mais barato do que outros tipos de bancos de dados, pois

requer menos energia e manutenção.

• Todas as informações no banco de dados centralizado podem ser facilmente acessadas de

no mesmo local e ao mesmo tempo.

Desvantagens

Algumas desvantagens do sistema de gerenciamento de banco de dados centralizado são -

• Como todos os dados estão em um único local, leva mais tempo para pesquisar e acessar

isto. Se a rede estiver lenta, esse processo leva ainda mais tempo.

• Há muito tráfego de acesso a dados para o banco de dados centralizado. Isso pode

criar uma situação de gargalo.

• Como todos os dados estão no mesmo local, se vários usuários tentarem acessá-los

simultaneamente, cria um problema. Isso pode reduzir a eficiência do

sistema.

• Se não houver medidas de recuperação de banco de dados e uma falha do sistema

ocorrer, todos os dados no banco de dados serão destruídos.

Sistema cliente-servidor

Na computação cliente-servidor, os clientes solicitam um recurso e o servidor fornece

esse recurso. Um servidor pode servir vários clientes ao mesmo tempo enquanto um cliente está

em contato com apenas um servidor.

As diferentes estruturas para dois níveis e três níveis são dadas da seguinte forma -

Estrutura cliente/servidor de dois níveis


Machine Translated by Google

A arquitetura de duas camadas tem principalmente duas partes, uma camada de cliente e uma camada de servidor.

camada de cliente envia uma solicitação para a camada de servidor e a camada de servidor responde com o

informações desejadas.

Um exemplo de uma estrutura cliente/servidor de duas camadas é um servidor web. Ele retorna o

páginas web necessárias para o clientes que Requeridos eles.

Uma ilustração da estrutura cliente/servidor de duas camadas é como acima

Vantagens da Estrutura Cliente/Servidor de Dois Níveis

Algumas das vantagens da estrutura cliente/servidor de duas camadas são -

• Esta estrutura é bastante fácil de manter e modificar.

• A comunicação entre o cliente e o servidor na forma de solicitação

mensagens de resposta é bastante rápido.

Desvantagens da estrutura cliente/servidor de duas camadas

Uma grande desvantagem da estrutura cliente/servidor de duas camadas é -


Machine Translated by Google

• Se os nós clientes forem aumentados além da capacidade na estrutura, então o

servidor não é capaz de lidar com o estouro de solicitação e o desempenho do

sistema degrada.

Estrutura cliente/servidor de três camadas

A arquitetura de três camadas tem três camadas, ou seja, cliente, aplicativo e dados

camada. A camada cliente é aquela que solicita as informações. Neste caso poderia

ser a GUI, interface web etc. A camada de aplicação atua como uma interface entre

o cliente e a camada de dados. Ajuda na comunicação e também fornece segurança. O

camada de dados é aquela que realmente contém os dados necessários.

Uma ilustração da estrutura cliente/servidor de três camadas é a seguinte -

Vantagens da estrutura cliente/servidor de três camadas

Algumas das vantagens da estrutura cliente/servidor de três camadas são -

• A estrutura de três níveis fornece um serviço muito melhor e desempenho rápido.

• A estrutura pode ser dimensionada de acordo com os requisitos sem nenhum problema.
Machine Translated by Google

• A segurança dos dados é muito melhorada na estrutura de três camadas.

Desvantagens da estrutura cliente/servidor de três camadas

Uma grande desvantagem da estrutura cliente/servidor de três camadas é -

• A estrutura cliente/servidor de três camadas é bastante complexa devido aos recursos avançados.

Arquiteturas Centralizadas e Cliente-Servidor

Sistemas de banco de dados centralizados são aqueles executados em um único sistema de computador e

não interaja com outros sistemas de computador. Esses sistemas de banco de dados abrangem um intervalo

de sistemas de banco de dados de usuário único executados em computadores pessoais para alta

sistemas de banco de dados de alto desempenho executados em sistemas de servidores de ponta. Servidor cliente

sistemas, por outro lado, têm funcionalidade dividida entre um sistema de servidor e

vários sistemas clientes.

Sistemas Centralizados

Um sistema de computador moderno de uso geral consiste em uma ou algumas CPUs e um

número de controladores de dispositivos conectados por meio de um barramento comum que

fornece acesso à memória compartilhada. As CPUs possuem memórias cache locais que

armazenar cópias locais de partes da memória, para acelerar o acesso aos dados. Cada dispositivo

controlador é responsável por um tipo específico de dispositivo (por exemplo, uma unidade de disco, um

dispositivo de áudio ou um monitor de vídeo). As CPUs e os controladores de dispositivos podem executar

simultaneamente, competindo pelo acesso à memória. A memória cache reduz a contenção

para acesso à memória, pois reduz o número de vezes que a CPU precisa

acessar a memória compartilhada.


Machine Translated by Google

Distinguimos duas maneiras pelas quais os computadores são usados: como sistemas de usuário único e

como sistemas multiusuário. Computadores pessoais e estações de trabalho se enquadram no primeiro

categoria. Um sistema de usuário único típico é uma unidade de desktop usada por uma única pessoa,

geralmente com apenas uma CPU e um ou dois discos rígidos e geralmente apenas uma pessoa

usando a máquina de cada vez. Um sistema multiusuário típico, por outro lado, tem

mais discos e mais memória, pode ter várias CPUs e tem um multiusuário

sistema operacional. Atende a um grande número de usuários que estão conectados ao

sistema através de terminais.

Um sistema de computador centralizado.


Machine Translated by Google

Os sistemas de banco de dados projetados para uso por usuários individuais geralmente não fornecem muitos dos

as facilidades que um banco de dados multiusuário fornece. Em particular, eles podem não suportar

controle de concorrência, que não é necessário quando apenas um único usuário pode gerar

atualizações. Provisões para recuperação de falhas em tais sistemas estão ausentes ou

primitivo por exemplo, eles podem consistir em simplesmente fazer um backup do banco de dados

antes de qualquer atualização. Muitos desses sistemas não oferecem suporte a SQL e fornecem uma forma mais simples de

linguagem de consulta, como uma variante do QBE. Em contraste, os sistemas de banco de dados projetados

para sistemas multiusuários suportam todos os recursos transacionais que estudamos

mais cedo.

Embora os sistemas de computador de propósito geral hoje tenham múltiplos processadores, eles

têm paralelismo de granularidade grosseira, com apenas alguns processadores (cerca de dois a quatro,

normalmente), todos compartilhando a memória principal. Bancos de dados em execução nessas máquinas

geralmente não tente particionar uma única consulta entre os processadores; em vez de,

eles executam cada consulta em um único processador, permitindo que várias consultas sejam executadas

simultaneamente. Assim, tais sistemas suportam um maior rendimento; ou seja, permitem um

maior número de transações a serem executadas por segundo, embora transações individuais

não corra mais rápido.

Bancos de dados projetados para máquinas de processador único já fornecem multitarefa,

permitir que vários processos sejam executados no mesmo processador em tempo compartilhado,

dando uma visão ao usuário de múltiplos processos rodando em paralelo. Assim, grosseiro

máquinas paralelas de granularidade parecem logicamente idênticas a máquinas de processador único

máquinas e sistemas de banco de dados projetados para máquinas com tempo compartilhado podem ser facilmente

adaptado para correr sobre eles.

Em contraste, máquinas com paralelismo de granularidade fina têm um grande número de

processadores e sistemas de banco de dados executados em tais máquinas tentam paralelizar


Machine Translated by Google

tarefas individuais (consultas, por exemplo) enviadas pelos usuários. Estudamos a arquitetura de

sistemas de banco de dados paralelos.

Sistemas cliente-servidor
À medida que os computadores pessoais se tornaram mais rápidos, mais poderosos e mais baratos, houve uma

afastar-se da arquitetura do sistema centralizado. Computadores pessoais suplantados

terminais conectados a sistemas centralizados. Da mesma forma, os computadores pessoais

assumiu a funcionalidade da interface do usuário que costumava ser manipulada diretamente pelo

sistemas centralizados. Como resultado, os sistemas centralizados hoje atuam como sistemas servidores

que satisfazem as requisições geradas pelos sistemas clientes. A figura mostra o geral

estrutura de um sistema cliente-servidor. A funcionalidade do banco de dados pode ser amplamente dividida

em duas partes a extremidade dianteira e a extremidade traseira como na Figura . O back-end gerencia

estruturas de acesso, avaliação e otimização de consultas, controle de concorrência e

recuperação. O front-end de um sistema de banco de dados consiste em ferramentas como formulários, relatórios

escritores e recursos de interface gráfica do usuário. A interface entre o front-end

e o back-end é por meio de SQL ou por meio de um programa aplicativo.

Estrutura geral de um sistema cliente-servidor.

Padrões como ODBC e JDBC, foram desenvolvidos para interfacear clientes com

servidores. Qualquer cliente que usa as interfaces ODBC ou JDBC pode se conectar a qualquer

servidor que fornece a interface. Em sistemas de banco de dados de geração anterior, a falta

de tais padrões exigia que o front-end e o back-end fossem fornecidos por

o mesmo fornecedor de software. Com o crescimento dos padrões de interface, o front-end


Machine Translated by Google

a interface do usuário e o servidor de back-end geralmente são fornecidos por fornecedores diferentes.

Ferramentas de desenvolvimento de aplicativos são usadas para construir interfaces de usuário; eles providenciam

ferramentas gráficas que podem ser usadas para construir interfaces sem qualquer programação.

Algumas das ferramentas populares de desenvolvimento de aplicativos são PowerBuilder, Magic e

Borland Delphi; O Visual Basic também é amplamente utilizado para o desenvolvimento de aplicativos.

Além disso, certos programas aplicativos, como planilhas e análises estatísticas

pacotes, use a interface cliente-servidor diretamente para acessar dados de um back-end

servidor. Na verdade, eles fornecem front-ends especializados para tarefas específicas. Alguns

sistemas de processamento de transações fornecem uma chamada de procedimento remoto transacional

interface para conectar clientes com um servidor. Essas chamadas aparecem como comuns

chamadas de procedimento para o programador, mas todas as chamadas de procedimento remoto de um cliente

são incluídos em uma única transação no final do servidor. Assim, se a transação

aborta, o servidor pode desfazer os efeitos das chamadas de procedimento remoto individuais.

Funcionalidade front-end e back-end.

Arquiteturas de sistema de servidor

Os sistemas de servidores podem ser amplamente categorizados como servidores de transações e servidores de dados.
Machine Translated by Google

• Os sistemas de servidor de transações, também chamados de sistemas de servidor de consulta, fornecem uma

interface para a qual os clientes podem enviar solicitações para executar uma ação, em resposta a

qual eles executam a ação e enviam de volta os resultados para o cliente. Normalmente, cliente

máquinas enviam transações para os sistemas servidores, onde essas transações são

executados e os resultados são enviados de volta aos clientes que se encarregam de exibir

os dados. As requisições podem ser especificadas usando SQL, ou através de um

interface do programa aplicativo.

• Os sistemas de servidor de dados permitem que os clientes interajam com os servidores fazendo solicitações

para ler ou atualizar dados, em unidades como arquivos ou páginas. Por exemplo, servidores de arquivos

fornecem uma interface de sistema de arquivos onde os clientes podem criar, atualizar, ler e excluir

arquivos. Servidores de dados para sistemas de banco de dados oferecem muito mais funcionalidade; eles

oferecem suporte a unidades de dados como páginas, tuplas ou objetos menores que um arquivo.

Eles fornecem recursos de indexação para dados e fornecem recursos de transação para

que os dados nunca sejam deixados em um estado inconsistente se uma máquina ou processo cliente

falha.

Destas, a arquitetura de servidor de transações é de longe a mais amplamente utilizada.

arquitetura. Vamos elaborar sobre o servidor de transações e o servidor de dados

arquiteturas.

Sistemas Paralelos
Os sistemas paralelos melhoram as velocidades de processamento e E/S usando várias CPUs e

discos em paralelo. Máquinas paralelas estão se tornando cada vez mais comuns, tornando

o estudo de sistemas de banco de dados paralelos correspondentemente mais importante. O

força motriz por trás dos sistemas de banco de dados paralelos são as demandas de aplicativos que

tem que consultar bancos de dados extremamente grandes (da ordem de terabytes ou seja, 1012

bytes) ou que precisam processar um número extremamente grande de transações por segundo
Machine Translated by Google

(da ordem de milhares de transações por segundo). Centralizado e cliente–

os sistemas de banco de dados do servidor não são poderosos o suficiente para lidar com esses aplicativos.

No processamento paralelo, muitas operações são executadas simultaneamente, ao contrário

ao processamento serial, no qual as etapas computacionais são executadas sequencialmente.

Uma máquina paralela de grão grosso consiste em um pequeno número de processadores poderosos;

uma máquina paralela massivamente paralela ou de granulação fina usa milhares de

processadores.

A maioria das máquinas de ponta hoje oferece algum grau de paralelismo de granulação grossa: Dois

ou máquinas de quatro processadores são comuns. Computadores massivamente paralelos podem ser

distinguem-se das máquinas paralelas de granulação grossa pelo grau muito maior de

paralelismo que eles suportam. Computadores paralelos com centenas de CPUs e discos

estão disponíveis comercialmente.

Existem duas medidas principais de desempenho de um sistema de banco de dados: (1) throughput,

o número de tarefas que podem ser concluídas em um determinado intervalo de tempo e (2)

tempo de resposta, a quantidade de tempo que leva para concluir uma única tarefa a partir do momento em que

é submetido. Um sistema que processa um grande número de pequenas transações pode

melhorar o throughput processando muitas transações em paralelo. um sistema que

processa grandes transações pode melhorar o tempo de resposta, bem como o rendimento,

realizando subtarefas de cada transação em paralelo.

Acelerar e escalar

Duas questões importantes no estudo do paralelismo são a aceleração e o aumento de escala. executando um

dada tarefa em menos tempo, aumentando o grau de paralelismo é chamado de aceleração.

Lidar com tarefas maiores aumentando o grau de paralelismo é chamado de aumento de escala.

Considere um aplicativo de banco de dados em execução em um sistema paralelo com um determinado número

de processadores e discos. Agora suponha que aumentamos o tamanho do sistema em


Machine Translated by Google

aumentando o número de processadores, discos e outros componentes do sistema.

O objetivo é processar a tarefa em tempo inversamente proporcional ao número de

processadores e discos alocados. Suponha que o tempo de execução de uma tarefa no

máquina maior é TL, e que o tempo de execução da mesma tarefa na menor

máquina é TS.

A aceleração devido ao paralelismo é definida como TS/TL. Diz-se que o sistema paralelo

demonstrar aceleração linear se a aceleração for N quando o sistema maior tiver N vezes

os recursos (CPU, disco e assim por diante) do sistema menor. Se a aceleração for menor

do que N, diz-se que o sistema demonstra aumento de velocidade sublinear. A figura ilustra

aceleração linear e sublinear.

Acelere com recursos crescentes.

Scale up refere-se à capacidade de processar tarefas maiores na mesma quantidade de tempo,

fornecendo mais recursos. Seja Q uma tarefa e seja QN uma tarefa que é N vezes

maior que Q. Suponha que o tempo de execução da tarefa Q em uma determinada máquina MS seja

TS, e o tempo de execução da tarefa QN em uma máquina paralela ML, que é N vezes

maior que MS, é TL. A expansão é então definida como TS/TL. O sistema paralelo

Diz-se que ML demonstra aumento linear na tarefa Q se TL = TS. Se TL > TS, o


Machine Translated by Google

diz-se que o sistema demonstra aumento de escala sublinear. A figura ilustra linear e sub

scale ups lineares (onde os recursos aumentam proporcionalmente ao tamanho do problema). Lá

Existem dois tipos de aumento de escala que são relevantes em sistemas de banco de dados paralelos, dependendo

sobre como o tamanho da tarefa é medido:

• No escalonamento em lote, o tamanho do banco de dados aumenta e as tarefas são trabalhos grandes

cujo tempo de execução depende do tamanho do banco de dados. Um exemplo dessa tarefa é

uma varredura de uma relação cujo tamanho é proporcional ao tamanho do banco de dados. Por isso,

o tamanho do banco de dados é a medida do tamanho do problema. Ampliação em lote

também se aplica a aplicações científicas, como a execução de uma consulta N vezes

resolução mais fina ou realizando uma simulação N vezes mais longa.

• No escalonamento da transação, a taxa na qual as transações são submetidas ao

banco de dados aumenta e o tamanho do banco de dados aumenta proporcionalmente ao

taxa de transação. Esse tipo de scale up é o que é relevante na transação

sistemas de processamento onde as transações são pequenas atualizações, por exemplo, um

depósito ou retirada de uma conta e as taxas de transação crescem à medida que mais

contas são criadas. Esse processamento de transações é especialmente bem adaptado para

execução paralela, uma vez que as transações podem ser executadas simultaneamente e independentemente

processadores separados, e cada transação leva aproximadamente a mesma quantidade de

tempo, mesmo que o banco de dados cresça.

O aumento de escala geralmente é a métrica mais importante para medir a eficiência do paralelo

sistemas de banco de dados. O objetivo do paralelismo em sistemas de banco de dados geralmente é fazer

certifique-se de que o sistema de banco de dados pode continuar a funcionar em uma velocidade aceitável, mesmo

à medida que o tamanho do banco de dados e o número de transações aumentam. Aumentando o

capacidade do sistema aumentando o paralelismo fornece um caminho mais suave para

crescimento para uma empresa do que substituir um sistema centralizado por um mais rápido

máquina (mesmo supondo que tal máquina exista). No entanto, devemos também olhar
Machine Translated by Google

em números absolutos de desempenho ao usar medidas de aumento de escala; uma máquina que

escalar linearmente pode ter um desempenho pior do que uma máquina que escala menos que linearmente,

simplesmente porque a última máquina é muito mais rápida para começar

Amplie com o aumento do tamanho e dos recursos do problema.

Vários fatores atuam contra a operação paralela eficiente e podem diminuir

acelerar e escalar.

• Custos de inicialização. Há um custo inicial associado ao início de um único processo.

Em uma operação paralela composta por milhares de processos, o tempo de inicialização pode

ofusca o tempo real de processamento, afetando negativamente a aceleração.

• Interferência. Como os processos que executam em um sistema paralelo geralmente acessam

recursos, uma desaceleração pode resultar da interferência de cada novo processo como

compete com os processos existentes por recursos comuns, como um

barramento do sistema, ou discos compartilhados, ou mesmo bloqueios. Tanto o speedup quanto o scale-up são

afetados por esse fenômeno.

• Inclinar. Ao dividir uma única tarefa em várias etapas paralelas, reduzimos

o tamanho do passo médio. No entanto, o tempo de serviço para o único mais lento

etapa determinará o tempo de serviço para a tarefa como um todo. Muitas vezes é difícil
Machine Translated by Google

dividir uma tarefa em partes de tamanhos exatamente iguais e a maneira como os tamanhos são

distribuído é, portanto, assimétrico. Por exemplo, se uma tarefa de tamanho 100 for dividida em

10 peças e a divisão for enviesada, pode haver algumas tarefas de tamanho menor que

10 e algumas tarefas de tamanho superior a 10; se pelo menos uma tarefa for de tamanho

20, o ganho de velocidade obtido executando as tarefas em paralelo é de apenas cinco, em vez de

dez como esperávamos.

Sistemas distribuídos

Em um sistema de banco de dados distribuído, o banco de dados é armazenado em vários computadores. O

computadores em um sistema distribuído se comunicam uns com os outros através de vários

meios de comunicação, como redes de alta velocidade ou linhas telefônicas. Eles fazem

não compartilhe memória principal ou discos. Os computadores em um sistema distribuído podem variar

em tamanho e função, variando de estações de trabalho até sistemas de mainframe.

Os computadores em um sistema distribuído são referidos por vários

nomes, como sites ou nós, dependendo do contexto em que são

mencionado. Usamos principalmente o termo site, para enfatizar a distribuição física de

estes sistemas. A estrutura geral de um sistema distribuído aparece na Figura .

As principais diferenças entre bancos de dados paralelos compartilhados e distribuídos

bancos de dados são que os bancos de dados distribuídos são normalmente separados geograficamente, são

administrados separadamente e têm uma interconexão mais lenta. outro importante

A diferença é que, em um sistema de banco de dados distribuído, diferenciamos entre local

e transações globais. Uma transação local é aquela que acessa dados somente de

sites onde a transação foi iniciada. Uma transação global, por outro lado, é

aquele que acessa dados em um site diferente daquele em que o

transação foi iniciada ou acessa dados em vários sites diferentes.


Machine Translated by Google

Existem várias razões para construir sistemas de banco de dados distribuídos, incluindo

compartilhamento de dados, autonomia e disponibilidade.

• Compartilhamento de dados. A principal vantagem na construção de um sistema de banco de dados distribuído é

o fornecimento de um ambiente onde os usuários em um site podem acessar

os dados que residem em outros sites. Por exemplo, em um sistema bancário distribuído,

onde cada filial armazena dados relacionados a essa filial, é possível para um usuário em

uma ramificação para acessar dados em outra ramificação. Sem essa capacidade, um usuário

que pretendam transferir fundos de uma sucursal para outra teriam de recorrer a

algum mecanismo externo que acoplaria os sistemas existentes.

• Autonomia. A principal vantagem de compartilhar dados por meio da distribuição de dados

é que cada site é capaz de manter um grau de controle sobre os dados que são armazenados

localmente. Em um sistema centralizado, o administrador do banco de dados do site central

controla o banco de dados. Em um sistema distribuído, existe um banco de dados global

administrador responsável por todo o sistema. Uma parte dessas responsabilidades é

delegado ao administrador de banco de dados local para cada site. Dependendo do

projeto do sistema de banco de dados distribuído, cada administrador pode ter um

diferentes graus de autonomia local. A possibilidade de autonomia local é muitas vezes um

principal vantagem dos bancos de dados distribuídos.


Machine Translated by Google

Um sistema distribuído.

• Disponibilidade. Se um site falhar em um sistema distribuído, os sites restantes podem ser

capaz de continuar operando. Em particular, se os itens de dados forem replicados em vários

sites, uma transação que precisa de um determinado item de dados pode encontrar esse item em qualquer um dos

vários sites. Assim, a falha de um site não implica necessariamente no desligamento

do sistema.

A falha de um site deve ser detectada pelo sistema e a ação apropriada pode

ser necessário para se recuperar da falha. O sistema não deve mais usar os serviços

do site com falha. Finalmente, quando o site com falha se recupera ou é reparado, mecanismos

deve estar disponível para integrá-lo suavemente de volta ao sistema.

Embora a recuperação de falhas seja mais complexa em sistemas distribuídos do que em

sistemas centralizados, a capacidade da maior parte do sistema para continuar a operar apesar

a falha de um site resulta em maior disponibilidade. A disponibilidade é crucial para

sistemas de banco de dados usados para aplicações em tempo real. Perda de acesso aos dados por, por

por exemplo, uma companhia aérea pode resultar na perda de potenciais compradores de passagens para concorrentes.
Machine Translated by Google

Um Exemplo de um Banco de Dados Distribuído

Considere um sistema bancário composto por quatro agências em quatro cidades diferentes. Cada

agência possui computador próprio, com banco de dados de todas as contas mantidas naquele

filial. Cada uma dessas instalações é, portanto, um site. Existe também um único site que

mantém informações sobre todas as agências do banco. Cada filial mantém

(entre outros) uma conta de relação (esquema de conta),

onde Esquema da conta = (número da conta, nome da agência, saldo)

O site com informações de todas as agências do banco mantém o

ramo de relação (ramo-esquema), onde

Esquema da agência = (nome da agência, cidade da agência, ativos)

Existem outras relações mantidas nos vários sites; nós os ignoramos para o

objetivo do nosso exemplo.

Para ilustrar a diferença entre os dois tipos de transações local e global

nos sites, considere uma transação para adicionar $ 50 à conta número A-177 localizada em

o ramo de vista do vale. Se a transação foi iniciada na agência Valley view,

então é considerado local; caso contrário, é considerado global. Uma transação para

transfira $ 50 da conta A-177 para a conta A-305, localizada em Hillside

agência, é uma transação global, pois contas em dois sites diferentes são acessadas como

resultado de sua execução.

Em um sistema de banco de dados distribuído ideal, os sites compartilhariam uma rede global comum

esquema (embora algumas relações possam ser armazenadas apenas em alguns sites), todos os sites seriam

executar o mesmo software de gerenciamento de banco de dados distribuído e os sites seriam

conscientes da existência um do outro. Se um banco de dados distribuído for criado do zero, ele

realmente seria possível alcançar os objetivos acima. Porém, na realidade uma

banco de dados distribuído tem que ser construído ligando vários já


Machine Translated by Google

sistemas de banco de dados existentes, cada um com seu próprio esquema e possivelmente executando diferentes

software de gerenciamento de banco de dados. Esses sistemas às vezes são chamados de bancos de dados múltiplos

sistemas ou sistemas de banco de dados distribuídos heterogêneos. onde mostramos como

alcançar um grau de controle global, apesar da heterogeneidade do componente

sistemas.

Problemas de implementação

A atomicidade das transações é uma questão importante na construção de um banco de dados distribuído

sistema. Se uma transação for executada em dois locais, a menos que os projetistas do sistema estejam

cuidado, pode comprometer em um site e abortar em outro, levando a uma inconsistência

estado. Os protocolos de confirmação de transação garantem que tal situação não ocorra. Os dois

O protocolo phase commit (2PC) é o mais amplamente utilizado desses protocolos.

A ideia básica por trás do 2PC é que cada site execute a transação até pouco antes

confirmar e, em seguida, deixar a decisão de confirmação para um único site coordenador; o

a transação está no estado pronto em um site neste ponto. O coordenador

decide confirmar a transação somente se a transação atingir o estado pronto em

cada local onde foi executado; caso contrário (por exemplo, se a transação for abortada em

qualquer site), o coordenador decide abortar a transação. Cada site onde o

transação executada deve seguir a decisão do coordenador. Se um site falhar

quando uma transação está em estado pronto, quando o site se recupera de uma falha, deve ser

em posição de confirmar ou abortar a transação, dependendo da decisão do

o coordenador.

O controle de simultaneidade é outro problema em um banco de dados distribuído. Desde uma transação

podem acessar itens de dados em vários sites, gerentes de transações em vários sites podem

precisa coordenar para implementar o controle de simultaneidade. Se o bloqueio for usado (como é

quase sempre o caso na prática), o travamento pode ser realizado localmente nos locais

contendo itens de dados acessados, mas também existe a possibilidade de impasse envolvendo
Machine Translated by Google

transações originadas em vários sites. Portanto, a detecção de deadlock precisa ser

realizada em vários sites. Falhas são mais comuns em sistemas distribuídos

pois não apenas os computadores podem falhar, mas os links de comunicação também podem falhar.

Replicação de itens de dados, que é a chave para o funcionamento contínuo de

bancos de dados distribuídos quando ocorrem falhas, complica ainda mais o controle de simultaneidade.

Os modelos de transação padrão, baseados em múltiplas ações realizadas por um único

unidade de programa, muitas vezes são inadequadas para a realização de tarefas que atravessam

limites de bancos de dados que não podem ou não irão cooperar para implementar protocolos

como 2PC.

Abordagens alternativas, baseadas em mensagens persistentes para comunicação, são

geralmente usado para tais tarefas. Quando as tarefas a serem executadas são complexas,

envolvendo múltiplos bancos de dados e/ou múltiplas interações com humanos,

coordenação das tarefas e garantir propriedades de transação para as tarefas tornam-se

mais complicado. Os sistemas de gerenciamento de fluxo de trabalho são sistemas projetados para ajudar

com a realização de tais tarefas.

Caso uma organização tenha que escolher entre uma arquitetura distribuída e uma

arquitetura centralizada para implementar um aplicativo, o arquiteto do sistema deve

equilibrar as vantagens contra as desvantagens da distribuição de dados. Temos

já vimos as vantagens de usar bancos de dados distribuídos. O primário

A desvantagem dos sistemas de banco de dados distribuídos é a complexidade adicional necessária para

garantir a coordenação adequada entre os sites. Essa maior complexidade leva

várias formas:

• Custo de desenvolvimento de software. É mais difícil implementar um sistema distribuído

sistema de banco de dados; assim, é mais caro.


Machine Translated by Google

• Maior potencial para bugs. Uma vez que os sites que constituem o sistema distribuído

operam em paralelo, é mais difícil garantir a exatidão dos algoritmos, especialmente

operação durante falhas de parte do sistema e recuperação de falhas. O

existe potencial para bugs extremamente sutis.

• Maior sobrecarga de processamento. A troca de mensagens e os adicionais

computação necessária para alcançar a coordenação entre sites são uma forma de sobrecarga

que não ocorre em sistemas centralizados.

Existem várias abordagens para o projeto de banco de dados distribuído, desde totalmente

projetos distribuídos para aqueles que incluem um alto grau de centralização.

Sistemas de rede

Bancos de dados distribuídos e sistemas cliente-servidor são construídos em torno da comunicação

redes. Existem basicamente dois tipos de redes: redes locais e amplas

redes de área. A principal diferença entre os dois é a forma como são

distribuídos geograficamente. Nas redes locais, os processadores são distribuídos em

pequenas áreas geográficas, como um único edifício ou um número de adjacentes

edifícios.

Em redes de longa distância, por outro lado, vários processadores autônomos são

distribuídos por uma grande área geográfica (como os Estados Unidos ou todo o

mundo). Essas diferenças implicam em grandes variações na velocidade e confiabilidade do

rede de comunicação, e são refletidas no sistema operacional distribuído

projeto.

Redes locais

As redes locais (LANs) (Figura) surgiram no início dos anos 1970 como uma forma de

computadores se comuniquem e compartilhem dados uns com os outros. Pessoas reconhecidas


Machine Translated by Google

que, para muitas empresas, vários computadores pequenos, cada um com seu próprio

aplicativos contidos, são mais econômicos do que um único sistema grande. Porque

cada pequeno computador provavelmente precisará de acesso a um conjunto completo de periféricos

dispositivos (como discos e impressoras) e porque alguma forma de compartilhamento de dados é

probabilidade de ocorrer em uma única empresa, foi um passo natural conectar esses pequenos

sistemas em uma rede.

Rede local.

As LANs geralmente são usadas em um ambiente de escritório. Todos os sites em tais sistemas são

próximos um do outro, por isso os links de comunicação tendem a ter maior velocidade e

taxa de erro menor do que suas contrapartes em redes de longa distância. A maioria

links comuns em uma rede local são par trançado, cabo coaxial, fibra ótica,

e, cada vez mais, conexões sem fio. As velocidades de comunicação variam de alguns

megabits por segundo (para redes locais sem fio), para 1 gigabit por segundo para

Gigabit Ethernet.
Machine Translated by Google

A Ethernet padrão roda a 10 megabits por segundo, enquanto a Fast Ethernet roda a 100

megabits por segundo. Uma rede de área de armazenamento (SAN) é um tipo especial de rede de alta velocidade

rede local projetada para conectar grandes bancos de dispositivos de armazenamento (discos) a

computadores que usam os dados. Assim, as redes de área de armazenamento ajudam a construir

sistemas de disco compartilhado. A motivação para usar redes de área de armazenamento para conectar

vários computadores para grandes bancos de dispositivos de armazenamento é essencialmente o mesmo que

para bases de dados de discos partilhados, nomeadamente

• Escalabilidade adicionando mais computadores

• Alta disponibilidade, pois os dados ainda estão acessíveis mesmo se um computador falhar no RAID

organizações são usados nos dispositivos de armazenamento para garantir alta disponibilidade do

dados, permitindo que o processamento continue mesmo se os discos individuais falharem. Área de armazenamento

as redes geralmente são construídas com redundância, como vários caminhos entre

nós, portanto, se um componente como um link ou uma conexão com a rede falhar, o

rede continua a funcionar.

Redes de longa distância

As redes de longa distância (WANs) surgiram no final da década de 1960, principalmente como uma

projeto de pesquisa para fornecer comunicação eficiente entre sites, permitindo

hardware e software sejam compartilhados de forma conveniente e econômica por um amplo

comunidade de usuários. Sistemas que permitiam que terminais remotos fossem conectados a um

computador central via linhas telefônicas foram desenvolvidos no início dos anos 1960, mas

não eram verdadeiras WANs.

A primeira WAN a ser projetada e desenvolvida foi a Arpanet. Trabalhe no

A Arpanet começou em 1968. A Arpanet cresceu de um experimento de quatro locais

rede para uma rede mundial de redes, a Internet, compreendendo centenas de

milhões de sistemas de computador. Links típicos na Internet são linhas de fibra ótica

e, às vezes, canais via satélite. As taxas de dados para links de longa distância geralmente variam
Machine Translated by Google

de alguns megabits por segundo a centenas de gigabits por segundo. O último elo,

para sites de usuários finais, geralmente é baseado na tecnologia de loop de assinante digital (DSL)

suportando alguns megabits por segundo), ou modem a cabo (suportando 10 megabits

por segundo), ou conexões de modem dial-up através de linhas telefônicas (suportando até 56

kilobits por segundo).

As WANs podem ser classificadas em dois tipos:

• Em WANs de conexão descontínua, como as baseadas em wireless

conexões, os hosts estão conectados à rede apenas parte do tempo.

• Em WANs de conexão contínua, como a Internet com fio, os hosts são conectados

à rede em todos os momentos.

Você também pode gostar