Banco de dados distribuído: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Linha 1:
'''Banco de dados distribuído''' ('''BDD''') é um banco de dados no qual nem todos os dispositivos de armazenamento estão conectados a um processador comum. Pode ser armazenado em vários [[computador]]es, localizados no mesmo local físico, ou podem ser dispersos por uma rede de computadores interconectados. Ao contrário dos sistemas paralelos, nos quais os processadores são fortemente acoplados e constituem um único sistema de banco de dados, um sistema de banco de dados distribuído consiste em sites fracamente acoplados que não compartilham componentes físicos.
'''Banco de dados distribuído''' ('''BDD''') é uma coleção de várias [[Base de Dados|bases de dados]] logicamente inter-relacionadas, distribuídas por uma rede de [[computador]]es.
 
Segundo Elmasri (2010)<ref>Segundo Elmasri (2010)</ref>, um Banco de Dados é uma coleção de dados relacionados. Dados são fatos conhecidos que podem ser registrados e possuem significado implícito. Ou seja, um banco de dados é um conjunto de dados interligados que tem por objetivo atender os usuários.
 
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.
 
Os administradores do sistema podem distribuir coleções de dados (por exemplo, em um banco de dados) em vários locais físicos. Um banco de dados distribuído pode residir em servidores de rede organizados ou em computadores independentes descentralizados na Internet, em intranets ou extranets corporativos ou em outras redes de organizações. 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.
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).
 
Há dois processos garantem que os bancos de dados distribuídos permaneçam atualizados e atuais: ''replicação'' e ''duplicação''.
 
A replicação envolve o uso de software especializado que procura alterações no banco de dados distributivo. Depois que as alterações forem identificadas, o processo de replicação fará com que todos os bancos de dados tenham a mesma aparência. O processo de replicação pode ser complexo e demorado dependendo do tamanho e do número dos bancos de dados distribuídos. Esse processo também pode exigir muito tempo e recursos do computador. A Duplicação, por outro lado, tem menos complexidade. Basicamente, ele identifica um banco de dados como um mestre e depois duplica esse banco de dados. O processo de duplicação é normalmente feito em um horário definido após o horário. Isso é para garantir que cada local distribuído tenha os mesmos dados. No processo de duplicação, os usuários podem alterar apenas o banco de dados mestre. Isso garante que os dados locais não sejam sobrescritos. Tanto a replicação quanto a duplicação podem manter os dados atualizados em todos os locais distributivos.
 
 
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.
Linha 9 ⟶ 16:
== Arquitetura básica ==
 
Um usuário do banco de dados acessa o banco de dados distribuído por meio de:
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:
 
* Aplicações locais: Aplicativos que não exigem dados de outros sites;
* as interfaces globais, oferecidas pelo SGBD global aos usuários globais;
* Aplicações globais: Aplicativos que exigem dados de outros sites;
*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:
 
Um banco de dados distribuído homogêneo possui software e hardware idênticos executando todas as instâncias de bancos de dados e pode aparecer por meio de uma única interface como se fosse um único banco de dados. Um banco de dados distribuído heterogêneo pode ter hardware, sistemas operacionais, sistemas de gerenciamento de banco de dados e até mesmo modelos de dados diferentes para bancos de dados diferentes.
* 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 ==
 
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 ===
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 ====
 
* 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 ====
 
* As cópias da relação modificada só são atualizadas periodicamente; réplicas podem ficar inconsistentes por algum tempo;
 
== Sistema gerenciador de Banco de Dados Distribuídos Homogêneo ==
* Os usuários devem estar cientes da distribuição e replicação.
 
Em um banco de dados distribuído homogêneo, todos os sites têm software idêntico e estão cientes um do outro e concordam em cooperar no processamento de solicitações do usuário. Cada site entrega parte de sua autonomia em termos de direito de alterar o esquema ou o software. Um SGBD homogêneo aparece para o usuário como um sistema único. O sistema homogêneo é muito mais fácil de projetar e gerenciar. As seguintes condições devem ser satisfeitas para banco de dados homogêneo:
=== Fragmentação ===
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:
 
* As estruturas de dados usadas em cada local devem ser iguais ou compatíveis;
* '''Fragmentação Horizontal: ''' os fragmentos são definidos por seleção de tuplas.
* O aplicativo de banco de dados (ou SGBD) usado em cada local deve ser igual ou compatível;
 
* '''Fragmentação Vertical:''' os fragmentos são definidos por projeção de atributos.
 
== Sistema gerenciador de Banco de Dados Distribuídos Heterogêneo ==
=== Replicação e Fragmentação ===
Em um banco de dados distribuído heterogêneo, sites diferentes podem usar esquemas e softwares diferentes. A diferença no esquema é um grande problema para processamento de consultas e processamento de transações. Os sites podem não estar cientes uns dos outros e podem fornecer apenas recursos limitados para cooperação no processamento de transações. Em sistemas heterogêneos, diferentes “nós” podem ter hardware e software diferentes, e estruturas de dados em vários nós ou locais também são incompatíveis. Diferentes computadores e sistemas operacionais, aplicativos de banco de dados ou modelos de dados podem ser usados em cada um dos locais. Por exemplo, um local pode ter a mais recente tecnologia de gerenciamento de banco de dados relacional, enquanto outro local pode armazenar dados usando arquivos convencionais ou uma versão antiga do sistema de gerenciamento de banco de dados. Da mesma forma, um local pode ter o sistema operacional Windows, enquanto outro pode ter o UNIX. Sistemas heterogêneos são geralmente usados quando sites individuais usam seu próprio hardware e software. No sistema heterogêneo, as traduções são necessárias para permitir a comunicação entre diferentes sites (ou SGBD). Nesse sistema, os usuários devem poder fazer solicitações em um idioma de banco de dados em seus sites locais. Normalmente, a linguagem do banco de dados SQL é usada para essa finalidade. Se o hardware é diferente, então a tradução é direta, na qual códigos de computador e comprimento de palavra são alterados. O sistema heterogêneo geralmente não é tecnicamente ou economicamente viável. Nesse sistema, um usuário em um local pode ler, mas não atualizar os dados em outro local.
A relação é particionada em vários segmentos, e o sistema mantém diversas réplicas de cada fragmento.
 
== Importantes considerações ==
 
Cuidados com um banco de dados distribuído devem ser tomados para garantir as transações e distribuições transparentes.
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.
 
* '''A distribuição é transparente''':, ondeos usuários devem poder interagir com o sistema como se ele fosse um único sistema lógico. Isso se aplica ao desempenho do sistema, e aos métodos de acesso, entre outras coisas.
Entretanto, são necessários alguns cuidados com banco de dados distribuídos para assegurar o seguinte:
 
*As '''Transaçõestransações transparentes''':são ondetransparentes, cada transação deve manter a integridade do banco de dados dentreem os múltiplosvários bancos de dados. TransaçõesAs devemtransações também devem ser divididas em subtransações, cada subtransação afeta subum transaçõessistema de banco de dados.
* '''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 ==