quinta-feira, 4 de setembro de 2008

Espaços de Tuplas

RESUMO
Um espaço de tuplas tem como função criar uma abstração de memória compartilhada sobre um sistema distribuído. Por propiciar modelos de programação muito simples e com baixo acoplamento entre os elementos do sistema, espaços de tuplas têm sido empregados na construção de sistemas distribuídos complexos. O espaço de tuplas JavaSpaces é um dos mais populares espaços de tuplas para a linguagem Java. Ele tem como características relevantes a conformidade a objetos, a persistência e o emprego de transações. As atuais implementações de JavaSpaces apresentam restrições como: complexidade de configuração, limitação de alcance e não serem abertas. Por “complexidade de configuração” entende-se ter que usar boa parte da infra-estrutura Jini (feita para facilitar o desenvolvimento e administração de sistemas distribuídos) e o Remote Method Invocation (mecanismo de chamadas remotas padrão no ambiente Java), mesmo quando eles seriam dispensáveis. Por “limitação de alcance”, entende-se não poder usar as implementações sobre redes amplas, como a Internet. Por “não ser aberto” entende-se que: ou o código fonte não está disponível ou o código fonte e o aplicativo são distribuídos por licenças de software proprietárias ou o uso do software requer algum componente proprietário.
O primeiro espaço de tuplas recebeu o nome de Linda [Gelernter, 1985]. Ele trabalha em associação com diversas linguagens de programação, em especial, com as linguagens C e Fortran, as mais usadas em análise numérica e computação paralela. Não tardou, surgiram outros espaços de tuplas, quase sempre acrescentando alguma variante ao modelo básico implementado em Linda.

Lime (Linda in a Mobile Environment) [Picco et al, 1998] é um espaço de tuplas voltado para agentes e computação móvel. Esse é um nicho de aplicação propício para os espaços de tuplas. Lime mostra como o conceito básico de espaço de tuplas pode ser adaptado criativamente para aplicações com demandas específicas. Em Lime, cada agente possui espaços de tuplas próprios, que ele leva consigo a tiracolo, chamados ITS (interface tuple
space). Quando o agente se fixa em um host, seus ITSs são fundidos a um espaço de tuplas local e as tuplas passam a ficar visíveis para os demais agentes acoplados ao host. Ao deixar o host, o agente leva consigo os ITSs com as tuplas.

Ruple [Rogue Wave, 2001] é um espaço de tuplas voltado para a troca de documentos pela Internet. A grande inovação de Ruple é a definição de tupla, que não possui campos como uma tupla de Linda. As tuplas de Ruple são documentos em XML. No entanto, a recuperação das tuplas permanece sendo feita por conteúdo, usando consultas expressas na linguagem XQL. Outras características interessantes são: o protocolo SOAP para comunicação por rede, o uso de leasing para automanutenção e certificação X.509 para segurança.
Em resumo, o modelo de espaço de tuplas é um mecanismo com semântica de memória compartilhada que pode ser acessado concorrentemente por processos espalhados em um sistema distribuído. O modelo implementa um esquema de memória associativa. Duas propriedades do modelo de espaço de tuplas destacam-se: a simplicidade e o baixo acoplamento entre os processos. Juntas, elas dão ao modelo uma vantagem em termos de facilidade de desenvolvimento e manutenção das aplicações.

Nenhum comentário: