Banco de dados distribuído

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Banco de dados distribuídos)
Saltar para a navegação Saltar para a pesquisa

Banco de dados distribuído (BDD) é uma coleção de várias bases de dados logicamente inter-relacionadas, distribuídas por uma rede de computadores.

Sistemas de gerência de bancos de dados distribuídos (SGBDDs) estendem as facilidades usuais de gerência de dados de tal forma que o armazenamento de um banco de dados possa ser dividido ao longo dos nós (diferentes locais físicos) de uma rede de comunicação de dados, sem que com isto os usuários percam uma visão integrada do banco.

Segundo Moura e Casanova, a ideia de SGBDDs é atrativa sob muitos aspectos. Sob ponto de vista administrativo, tais sistemas permitem que cada setor de uma organização geograficamente dispersa mantenha controle de seus próprios dados, mesmo oferecendo compartilhamento a nível global no uso destes dados. Do ponto de vista econômico, SGBDDs podem diminuir os custos de comunicações, que hoje em dia tendem a ser maiores do que o próprio custo de equipamento, com o tradicional declínio dos custos de "hardware". Finalmente, SGBDDs também são atrativos de um ponto de vista técnico pois facilitam o crescimento modular do sistema (em contraste principalmente com um sistema centralizado de grande porte), aumentam a confiabilidade através da replicação das partes críticas do banco em mais de um nó, e podem aumentar a eficiência através de um critério judicioso de particionamento e replicação que coloque os dados próximos do local onde são mais frequentemente usados (em contraste com acesso remoto a um banco de dados centralizado).

Existem dois tipos de banco de dados distribuídos, os homogêneos e os heterogêneos. Os homogêneos são compostos pelos mesmos bancos de dados, já os Heterogêneos são aqueles que são compostos por mais de um tipo de banco de dados.

Arquitetura básica[editar | editar código-fonte]

Conforme visto, um SGBD distribuído é constituído de uma coleção de SGBDs locais interligados por um SGBD global. Em cada nó, os usuários locais são servidos pelo SGBD local implementado naquele nó, e os usuários globais (residentes naquele nó) são servidos pela cópia local do SGBD global. Há, portanto, duas classes de interfaces em um SGBD distribuído:

  • as interfaces globais, oferecidas pelo SGBD global aos usuários globais;
  • as interfaces locais, oferecidas pelos SGBDs locais aos usuários locais.

Os usuários locais ou globais podem ser classificados em quatro grandes grupos: o administrador do banco, analistas e programadores de aplicação, usuários casuais, e usuários paramétricos. Para satisfazer as necessidades destas classes de usuários, tradicionalmente um SGBD centralizado oferece:

  • uma linguagem de definição de dados (LDD) usada para definir novos bancos de dados;
  • uma ou mais linguagens de manipulação de dados (LMDs) usadas para recuperar e modificar os dados armazenados no banco;
  • opcionalmente, uma linguagem de geração de relatórios (LGR) que, como o nome indica, é apropriada para extrair relatórios do banco de dados;
  • utilitários para manutenção do banco.

Formas de Armazenamento[editar | editar código-fonte]

Os arquivos do banco de dados distribuídos são dividos em três formas de armazenamento: Replicação, Fragmentação e fragmentação e replicação.

Replicação[editar | editar código-fonte]

O sistema mantém réplicas idênticas da relação, onde cada réplica é armazenada em locais diferentes, resultando na replicação dos dados. Existem pontos de destaques na replicação:

  • Os dados estão mais disponíveis neste esquema.
  • O paralelismo é aumentado quando a solicitação de leitura é atendida.
  • Aumenta a sobrecarga nas operações de atualização, pois cada site que contém a réplica precisava ser atualizado para manter a consistência.

Replicação Síncrona[editar | editar código-fonte]

  • Todas as cópias de uma relação modificada (fragmentos) devem ser atualizadas antes da transação modificante fazer commit;
  • A distribuição de dados fica transparente para o usuário.

Replicação Assíncrona[editar | editar código-fonte]

  • As cópias da relação modificada só são atualizadas periodicamente; réplicas podem ficar inconsistentes por algum tempo;
  • Os usuários devem estar cientes da distribuição e replicação.

Fragmentação[editar | editar código-fonte]

A relação é particionada em vários fragmentos, onde cada fragmento é armazenado em um local diferente. Existem duas formas de fazer a fragmentação, Fragmentação Horizontal e Fragmentação Vertical, onde:

  • Fragmentação Horizontal:  os fragmentos são definidos por seleção de tuplas.
  • Fragmentação Vertical: os fragmentos são definidos por projeção de atributos.

Replicação e Fragmentação[editar | editar código-fonte]

A relação é particionada em vários segmentos, e o sistema mantém diversas réplicas de cada fragmento.

Importantes considerações[editar | editar código-fonte]

Como os bancos de dados distribuídos armazenam dados em vários computadores, os bancos de dados distribuídos podem melhorar o desempenho nos locais de trabalho do usuário final, permitindo que as transações sejam processadas em muitas máquinas, em vez de limitadas a uma.

Entretanto, são necessários alguns cuidados com banco de dados distribuídos para assegurar o seguinte:

  • A distribuição transparente: onde usuários devem poder interagir com o sistema como se ele fosse um único sistema lógico. Isso se aplica ao desempenho do sistema, métodos de acesso, entre outras coisas.
  • Transações transparentes: onde cada transação deve manter a integridade do banco de dados dentre os múltiplos bancos de dados. Transações devem também ser divididas em sub transações.

Regras Básicas[editar | editar código-fonte]

O autor da teoria de dados relacionais, Christopher Date, criou 12 regras básicas de um SGBDD, que são elas:

  1. Automomia Local: Cada nó participante de um sistema distribuído deve ser independente dos outros nós. Cada nó deve prover mecanismos de segurança, bloqueio, acesso, integridade e recuperação após falha.
  2. Não dependência de um nó central: Um sistema de banco de dados distribuído não deve depender de um nó central, pois isso acarretaria um único ponto de falha, afetando todos os outros nós. Um nó central também poderia ficar sobrecarregado resultando em perda de desempenho do sistema.
  3. Operação contínua: Um sistema de banco de dados distribuído nunca deve precisar ser desativado. As operações de backup e recuperação devem ser suportadas on-line. Essas operações devem ainda ser rápidas o bastante para não afetarem o funcionamento do sistema (backup incremental, por exemplo).
  4. Transparência/independência de localização: Os usuários do sistema não devem precisar saber o local onde estão localizados os dados; devem se comportar como se os dados estivessem armazenados localmente.
  5. Independência de fragmentação: As tabelas que fazem parte de um sistema de banco de dados distribuído podem estar divididas em fragmentos, localizados fisicamente em diferentes nós, de forma transparente para o usuário.
  6. Independência de replicação: Dados podem estar replicados em vários nós da rede, de forma transparente. As réplicas de dados devem ser mantidas sincronizadas automaticamente pelo SGBD.
  7. Processamento de consultas distribuído: O desempenho de uma consulta deve ser independente do local onde a mesma é submetida. Um SGBDD deve possuir um otimizador capaz de selecionar não apenas o melhor caminho para o acesso a um determinado nó da rede, mas também otimizar o desempenho de uma consulta distribuída, levando em conta a localização dos dados, utilização de CPU, I/O e o tráfego na rede.
  8. Gerenciamento de transações distribuídas: Um SGBDD deve suportar transações atômicas. As propriedades ACID (Atomicidade, Consistência, Independência e Durabilidade) das transações e a serialização devem ser suportadas não apenas para transações locais, mas para transações distribuídas também.
  9. Independência de hardware: Um SGBDD deve poder operar e acessar dados em uma variedade de plataformas de hardware. Um SGBDD verdadeiro não deve depender de uma determinada.
  10. Independência de sistema operacional: Um SGBDD deve poder executar em sistemas operacionais diferentes. Assim como na regra anterior, um SGBDD não deve depender de um sistema operacional em especial.
  11. Independência de rede: Um SGBDD deve ser projetado para executar independentemente do protocolo de comunicação e da topologia de rede usada para interligar os vários nós que fazem parte da rede.
  12. Independência de SGBD: Um SGBDD ideal deve possuir capacidades para se comunicar com outros sistemas de gerenciamento de banco de dados executando em nós diferentes, mesmo se estes sistemas de bancos de dados são diferentes (heterogêneos).

Vantagens de bancos de dados distribuídos[editar | editar código-fonte]

  • Reflete a estrutura organizacional — fragmentos do banco de dados estão localizados nos departamentos que se relacionam com os dados que estes persistem.
  • Autonomia Local — um departamento pode controlar seus dados (já que é o mais familiarizado com estes).
  • Maior disponibilidade — uma falha em um banco de dados afetará somente um fragmento, ao invés do banco de dados inteiro.
  • 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).
  • Econômico — custa menos criar uma rede de pequenos computadores com o mesmo poder que um único computador maior.
  • Modularidade — sistemas podem ser modificados, adicionados ou removidos do banco de dados distribuído sem afetar os outros módulos (sistemas).

Desvantagens de banco de dados distribuídos[editar | editar código-fonte]

  • Complexidade — trabalho extra deve ser feito pelos DBAs para garantir que a natureza da distribuição do sistema seja 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 - por exemplo, joins tornam-se proibitivamente caros quando são rodados entre múltiplas plataformas.
  • Implantação mais cara — o aumento da complexidade e uma infraestrutura mais extensa significa custo extra de trabalho
  • 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).
  • 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.
  • Inexperiência — Dificuldades no gerenciamento. 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.
  • 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.
  • 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.

Referências[editar | editar código-fonte]

  • [Hussain AL-Mout]
  • M. T. Ozsu and P. Valduriez, Principles of Distributed Databases (2nd edition), Prentice-Hall, ISBN 0-13-659707-6
  • Elmasri and Navathe, Fundamentals of database systems (3rd edition), Addison-Wesley Longman, ISBN 0-201-54263-3
  • CUNHA, Samuel L. O. Gerenciamento de Dados em Banco de Dados Distribuídos. 2003. 55f. Trabalho de Conclusão de Curso -  Centro Universitário do Triangulo, Uberlândia, 2003.
  • FILETO, Renato. Banco de Dados Distribuídos. 2009. 30f. Artigo Científico – Universidade Federal de Santa Catarina, Santa Catarina, 2009.
  • NUMATA, Cesar A. Banco de Dados Distribuídos. 2012. 41f. Trabalho de Conclusão de Curso – FATEC, São Paulo, 2012.
  • ROSARIO, Luiz G. O que é Banco de Dados Distribuído? IMasters. Disponível em: https://imasters.com.br/banco-de-dados/o-que-e-banco-de-dados-distribuido/?trace=1519021197&source=single Acesso em: 25 de março de 2018.
  • ALMEIDA, Roniere. O que é um Banco de Dados Distribuído? Devmedia. Disponível em: https://www.devmedia.com.br/o-que-e-um-banco-de-dados-distribuido/24762 Acesso em 25 de março de 2018.
  • CASANOVA, Marco A; MOURA, Arnaldo V. Princípios de Gerência de Bancos de Dados Distribuídos. 1999.

Ver também[editar | editar código-fonte]