Definição
Um sistema distribuído segundo a definição de Andrew Tanenbaum é uma "colecção de computadores independentes que se apresenta ao usuário como um sistema único e consistente"; outra definição, de George Coulouris, diz: "colecção de computadores autónomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados"[carece de fontes?].
O suporte completo de um sistema de banco de dados distribuídos implica que uma única aplicação seja capaz de operar de modo transparente sobre dados dispersos em uma variedade de banco de dados diferentes, gerenciados por vários SGBDs diferentes, em execução em uma variedade de máquinas diferentes que podem estar rodando em diversas plataformas diferentes e uma variedade de sistemas operacionais. Onde o modo transparente diz respeito à aplicação operar sob um ponto de vista lógico como se os dados fossem gerenciados por um único SGBD, funcionando em uma única máquina com apenas um sistema operacional.
Características Fundamentais
Execução concorrente das componentes – paralelismo real
o Necessidade de coordenação entre os vários componentes
Falhas independentes das componentes e das comunicações
- Impossível determinar se existe uma falha dum componente ou do sistema de comunicações
- Necessidade de tratar as falhas
Ausência de relógio global – existem limites para a precisão da sincronização dos relógios locais
- Impossível usar relógios locais para ordenar globalmente todos os eventos
Implicações
Nenhuma componente tem uma visão exacta e instantânea do estado global do sistema
Os componentes têm uma visão parcial do estado global do sistema
- Os componentes do sistema estão distribuídos e só podem cooperar através da troca de mensagens, as quais levam um tempo não nulo a serem propagadas
Na presença de falhas, o estado global pode tornar-se incoerente → as visões parciais do estado global podem tornar-se incoerentes
- Por exemplo, réplicas de um ficheiro podem ficar incoerentes
Vantagens
• Economia: melhor relação custo/desempenho
• Eficiência: maior poder total de computação
• Distribuição inerente: máquinas espacialmente separadas
• Confiabilidade: se uma máquina falha, o sistema como um todo pode ainda sobreviver
• Crescimento incremental: poder computacional adicionado em incrementos
Desvantagens
• Pouco software disponível (ainda!)
• Networking: a rede pode causar problemas
• Segurança: várias portas de acesso (mas...)
Sem comentários:
Enviar um comentário