Esse texto é a apresentação de um trabalho relacionado a matéria de Banco de Dados da minha graduação. Todas as informações foram retiradas do livro Sistema de Banco de Dados 5ª edição.

A arquitetura de um sistema de banco de dados é influenciada por diversos fatores como o computador que reside, a rede a qual está conectado e a localização desse sistema. Assim no livro é apresentado quatro arquiteturas, sendo elas: cliente centralizada, cliente-servidor, paralela e distribuída.

Sistemas centralizados

Os sistemas centralizados são aqueles que executam em apenas um computador e não interagem com outros. Esse tipo de banco de dados é muito influenciado pelo computador em que reside, em caso de sistemas monousuário o banco de dados pode não oferecer controle de concorrência ou métodos de recuperação de falhas.

E a quantidade de processadores que o computador possui pode determinar o paralelismo das tarefas. Para poucos processadores as consultas são executadas por apenas um processador podendo ocorrer várias em paralelo, assim temos o paralelismo de granularidade grossa. E para computadores com muitos processadores as consultas podem ser particionadas e executadas em múltiplos.

Sistemas cliente-servidor

Nesse tipo de arquitetura as funcionalidades do banco de dados são divididas em duas partes, front-end e back-end. Dessa forma o front-end é executado na máquina do cliente e serve como uma interface para o banco, enquanto o back cuidará do armazenamento dos dados.

Então o sistema do servidor pode ser categorizado em duas arquiteturas, servidores de transação ou de dados. No primeiro caso os clientes enviam as consultadas que são processadas pelo servidor e este retornará o resultado. Sendo formado por vários processos, alguns relacionados com as consultadas, como os processos que recebem as consultadas a serem realizadas ou os que escrevem no banco de dados, e outros que cuidam do gerenciamento do sistema, como o processo que monitora os processos ou o gerenciador de bloqueios. Todos esses acessam uma memória compartilhada.

Já no caso de servidores de dados, permitem aos clientes criar, atualizar, ler e excluir as unidades de dados, que podem ser páginas, arquivos. E as máquinas dos clientes que realizam todo o processamento dos dados. Esse tipo de arquitetura tem um custo de tempo muito alto, então os dados e bloqueios podem ser armazenados em cache no cliente para evitar a comunicação.

Sistemas paralelos

Aqui são utilizados vários processadores para aumentar a velocidade do processamento ao serem realizadas operações simultâneas. Como foi explicado anteriormente, o paralelismo pode ser dividido em granularidade grossa ou fina. Há dois tipos de ganhos com o paralelismo, o primeiro é o ganho de velocidade, em que uma transação é realizada em menor tempo, e o segundo é o ganho de escala, em que o servidor é capaz de lidar com um maior número de transações.

O paralelismo acarreta alguns problemas que podem limitar esses ganhos. O custo de partida é tempo para que um processo seja iniciado, podendo ser maior que o tempo de processamento real. A interferência ocorre quando um processo disputa recursos compartilhados com outros processos. E a distorção que uma tarefa dividida em várias etapas terá o tempo da etapa de maior tempo, ao serem executadas em paralelo.

Para sistemas paralelos há alguns tipos de arquiteturas. No de memória compartilhada todos os processadores têm acesso a mesma memória e mesmos discos. Em disco compartilhado a memória passa a ser única de cada processador mas os discos ainda são compartilhados. E no nada compartilhado cada processador tem sua própria memória e disco. Por fim, o modelo hierárquico é um modelo híbrido em que entre cada nó nada é compartilhado mas dentro deles pode haver um dos modelos anteriores.

Sistemas distribuídos

A última arquitetura é a de sistemas distribuídos onde os dados são armazenados em vários computadores. E diferente do modelo anterior, neste podem estar separados geograficamente, possuindo uma administração separada e certo nível de independência. As transações aqui podem ser classificadas em locais e globais. As locais são as que acessam os dados apenas do servidor que a iniciou e as globais podem acessar dados de outro servidor ou vários outros.