Banco de Dados Distribuídos
Autor: Michael Nakamura | Publicado: 2011-04-13T06:55:00-07:00

Introdução
Nos anos 70, houve uma implementação de uma nova solução de informática jamais utilizada antes para o Programa SETI (Search for Extra-Terrestrial Intelligence).
Este Programa tinha como objetivo encontrar formas de vida inteligentes extraterrestres por meio da captura e análise de todas as ondas de rádio que viessem do espaço. Se fosse encontrado um sinal portador de uma possível comunicação, seria possível encontrar de onde ele foi transmitido e aí estudar a possibilidade de transmitir uma resposta. Mas como analisar toda a grande carga de ondas recebidas diariamente?
A resposta foi a computação distribuída. Diversos computadores processariam as ondas em busca dos sinais desejados.Na mesma época também havia um grande esforço no desenvolvimento de bancos de dados mais eficientes. Daí veio a grande proposta de distribuir o armazenamento e o processamento das informações de um SGBD, surgindo assim, os bancos de dados distribuídos.





Hoje, existem diversas instituições de grande porte que necessitam do cruzamento de largas quantidades de dados para dar vazão às suas transações. Este processamento, por enquanto, não pode ser feito somente em um servidor. Sendo necessária a instanciação de diversos sites contendo partes do SGBD. Estes são os Sistemas de Bancos de Dados Distribuídos.Bancos de Dados Distribuídos são soluções de acesso, manipulação e armazenamento seguro de dados que se valem do princípio do processamento e armazenamento distribuído em uma rede de computadores que pode ser local, virtual ou de longa distância.Um banco de dados distribuído oferece muitas vantagens sobre um banco de dados monolítico, porém sua implementação é mais cara e exige uma manutenção mais trabalhosa que um banco de dados comum.   

Conceitos
Um banco de dados distribuído (BDD) é uma coleção de múltiplos bancos de dados inter-relacionados e distribuídos sobre uma rede de computadores, chamados de nós.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A diferença principal entre sistemas de banco de dados centralizados e distribuídos é que no primeiro os dados estão localizados em um único lugar, enquanto que no último, os dados residem em diversos locais. Esta distribuição de dados é o motivo de muitas preocupações e dificuldades.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BDDs gerenciam a execução de consultas em dados distribuídos por vários servidores. Reflete os requisitos de que a localização dos dados deve ser transparente aos usuários do BD e de que os sistemas locais devem manter sua autonomia.
- Características (Razões de uso)•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compartilhamento de Dados•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Autonomia•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disponibilidade
- É preciso ter em mente que para assegurar a coordenação entre os sites existe um acréscimo considerável na complexidade.•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Custo do desenvolvimento do Software•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maior possibilidade de Bugs•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Aumento do processamento e Overhead
- Armazenamento Distribuído de Dados•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Replicação•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fragmentação•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Replicação e Fragmentação
- Replicação de dados•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parcial X total
- Fragmentação de dados•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Horizontal&nbsp;Divide a relação separando as tuplas em dois ou mais fragmentos;
•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vertical&nbsp;É uma decomposição em vários subconjuntos de atributos;A relação é reconstituída a partir dos fragmentos por uma junção natural
•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MistaHorizontal + vertical
•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transparência de rede&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - denominação dos dados&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - replicação dos itens de dados&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Fragmentação dos itens de dados&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - locação das replicas e fragmentos





   

Principais características
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transparência e autonomia local – Apesar de existirem diversos sites no sistema, para o cliente existe somente um servidor de dados, sendo transparente para o mesmo, a distribuição tanto dos dados como do processamento.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Inexistência de um site central – Em um sistema distribuído não há uma hierarquia de sites, mas todos podem trabalhar independentemente. Com a queda de um site, o sistema continua executando, mas com uma redução de recursos proporcional à representação do potencial computacional do site que caiu em relação ao sistema.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Operação contínua – Uma importante característica de um sistema de dados distribuído é a sua alta tolerância a falhas tanto de hardware, software, como de rede. Em um sistema monolítico, havendo falha em qualquer dos quesitos mencionados anteriormente, ocorre a indisponibilidade do mesmo. Em um sistema distribuído, as chances de indisponibilidade são inversamente proporcionais à quantidade de sites. Havendo falha em um site, o sistema poderá continuar processando de forma reduzida ao invés de sair do ar. Há uma queda de desempenho, e até indisponibilidade de alguns dados, mas não a indisponibilidade do serviço.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Independência de localização – Em um sistema distribuído, o cliente solicitará qualquer dado existente no sistema sem a preocupação em acessar o site onde se encontra armazenada cada informação. Para o cliente, todas as informações estarão no site que ele acessa.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Independência de fragmentação – Um sistema de bancos de dados distribuído deverá acatar a possibilidade fragmentar os dados de forma a manter em um site as informações que seus clientes solicitam mais, distribuindo assim os dados e o processamento das informações. Estes dados são unificados por meio de junções para fragmentações verticais e de uniões para fragmentações horizontais. Para o cliente esta fragmentação não é visível.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Processamento de consultas distribuído – O sistema distribuído é capaz de envolver diversos sites na otimização e execução de consultas a dados considerando a localização dos mesmos, sendo transparente para o usuário.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gerenciamento de transações distribuído – Um sistema distribuído será capaz de conferir atomicidade a uma transação, mesmo que a mesma envolva sites diferentes. No sistema de um banco, por exemplo, quando há uma transferência de valores de uma conta armazenada em um site para outra conta de outro site, o valor é primeiro retirado da conta de um site e depois transferido para o outro, havendo a confirmação desta transação somente no término da mesma. Isto confere atomicidade a uma transação distribuída.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Independência de hardware – Um sistema de dados distribuído deve operar em cima de uma abstração de software capaz de operar em diferentes arquiteturas – daí o suporte a diversos tipos de hardwares.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Independência de sistema operacional – Um sistema de dados distribuído assim como deve oferecer tolerância a diversas arquiteturas, deverá oferecer implementação em diversos sistemas operacionais por meio de versões do SGBD capazes de operar em diversos sistemas operacionais.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Independência da rede – Se o SGBD utilizado para implantação da rede distribuída suporta diversos sistemas operacionais, deverá ser capaz de operar sobre um sistema operacional que tenha suporte a diversos tipos de rede.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Independência de SGBD – O sistema de bancos de dados distribuído poderá ter sites implementados com SGBDs diferentes.   

Vantagens
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reflete a estrutura organizacional — Fragmentos do banco de dados estão localizados nos departamentos que se relacionam com os dados que estes persistem.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Autonomia Local — Um departamento pode controlar seus dados (já que é o mais familiarizado com estes).·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maior disponibilidade — Uma falha em um banco de dados afetará somente um fragmento, ao invés do banco de dados inteiro.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Melhor performance — Os dados estão localizados próximo do local de maior demanda e os sistemas de banco de dados por si só são paralelizáveis, permitindo carregar no banco de dados para o balanceamento entre servidores (a elevada carga em um módulo do banco de dados não irá afetar os outros módulos de banco de dados em um banco de dados distribuído).·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Econômico — Custa menos criar uma rede de pequenos computadores com o mesmo poder que um único computador maior.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Modularidade — Sistemas podem ser modificados, adicionados ou removidos do banco de dados distribuído sem afetar os outros módulos (sistemas).

   

Desvantagens
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Complexidade — Trabalho extra deve ser feito pelos DBAs para garantir que a natureza da distribuição do sistema é transparente. Trabalho extra deve ser feito para manter sistemas múltiplos diferentes, ao invés de um único grande. Design de banco de dados extra deve também ser feito para levar em conta a natureza desconectada do banco de dados.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Implantação mais cara — O aumento da complexidade e uma infraestrura mais extensa significa custo extra de trabalho·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Segurança — Fragmentos de banco de dados remotos devem ser seguros e, como eles não são centralizados então os lugares remotos também devem ser seguros. A infraestrutura também deve ser segura (por exemplo, pela encriptação dos links de rede entre os lugares remotos).·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Difícil de manter a integridade — Em sistemas distribuídos, reforçar a integridade ao longo de uma rede pode exigir demais dos recursos da rede para ser viável.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Inexperiência — Pode ser difícil trabalhar com banco de dados distribuídos e como é uma área relativamente nova ainda não há tantos casos (ou experiências) práticos de seu uso disponíveis como exemplo.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Falta de padrões – Ainda não há metodologias e ferramentas para ajudar usuários a converter um SGBD centralizado para um SGBD distribuído.·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Design do banco de dados mais complexo – Além das dificuldades normais, o design de um banco de dados distribuídos tem que considerar a fragmentação dos dados, alocação dos fragmentos em lugares específicos e a replicação de dados.