tecgraf puc-rio setembro de 2013 data service. motivação aplicações científicas têm como...

33
Tecgraf PUC-Rio Setembro de 2013 Data Service

Upload: internet

Post on 22-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Tecgraf PUC-Rio

Setembro de 2013

Data Service

Page 2: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Motivação

• Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos que as manipulam• representação complexa• grande volume de dados

• Necessidade de compartilhamento de dados entre as aplicações

Page 3: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Data Service

• Oferece um conjunto de funcionalidades para acesso e manipulação dos dados armazenados em Provedores de Dados (data sources)

• Flexível para atender às diferentes características dos servidores de dados e às diferentes necessidades dos clientes

• Aplicações se integram de maneira uniforme a diferentes provedores de dados, com apenas uma implementação

Page 4: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Princípios básicos

• Representação dos dados de forma estruturada• os dados podem ser representados da forma mais

adequada às aplicações• navegação x armazenamento

• Diferentes visões sobre os dados• um mesmo dado pode oferecer diferentes visões

• Navegação hierárquica• a navegação é feita de forma hierárquica

• Navegação por descritores (meta-informações)• a navegação não é feita sobre o próprio dado, mas

sobre uma hierarquia de descritores

Page 5: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

O Serviço de Dados

• Define os tipos e as facetas para navegação hierárquica pelos dados oferecidos.

module tecgraf {

module openbus { /** * \brief Módulo do Serviço de Dados Estruturados. */

module data_service {

...

}; // data_service }; // openbus}; // tecgraf

Page 6: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• A navegação pelos dados é feita usando descritores que possuem meta-informação sobre os dados• descrição dos dados representados• indica quais as visões o dado representado oferece• a aplicação usa apenas a visão que lhe interessa• possui uma chave que identifica univocamente o

dado representado• É utilizada no descritor e nas visões como identificador• Pode ser persistida

Page 7: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• A navegação hierárquica é feita sobre descritores dos dados

• O descritor deve ter informações suficientes para que um determinado dado seja identificado

valuetype DataDescription { /** A chave unívoca do dado. */ DataKey fKey; /** O nome simbólico do dado. */ string fName; /** A visão padrão do dado (opcional). */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado, ou seja, as visões diferentes da visão padrão. */ StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ MetadataSeq fMetadata;};

Page 8: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• A chave fKey é criada pelo serviço• Identificador unívoco• Identifica, além do dado em si, o serviço do qual o dado

se originou

valuetype DataDescription { /** A chave unívoca do dado. */ DataKey fKey; /** O nome simbólico do dado. */ string fName; /** A visão padrão do dado (opcional). */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado, ou seja, as visões diferentes da visão padrão. */ StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ MetadataSeq fMetadata;};

typedef sequence<octet> OctetSeq;typedef OctetSeq DataKey;

Page 9: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• O campo fName possui um nome simbólico para o dado

valuetype DataDescription { /** A chave unívoca do dado. */ DataKey fKey; /** O nome simbólico do dado. */ string fName; /** A visão padrão do dado (opcional). */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado, ou seja, as visões diferentes da visão padrão. */ StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ MetadataSeq fMetadata;};

Page 10: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• O campo fDefaultView possui a visão padrão do dado

• Tipicamente utiliza-se o repository ID como identificador da visão

valuetype DataDescription { /** A chave unívoca do dado. */ DataKey fKey; /** O nome simbólico do dado. */ string fName; /** A visão padrão do dado (opcional). */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado, ou seja, as visões diferentes da visão padrão. */ StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ MetadataSeq fMetadata;};

Page 11: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• O campo fOthersViews possui a lista das outras visões do dado

valuetype DataDescription { /** A chave unívoca do dado. */ DataKey fKey; /** O nome simbólico do dado. */ string fName; /** A visão padrão do dado (opcional). */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado, ou seja, as visões diferentes da visão padrão. */ StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ MetadataSeq fMetadata;};

Page 12: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Descritores dos Dados

• O campo fMetadata permite qualquer informação adicional • Par nome e valor onde o valor pode ser de qualquer tipo básico

(any)

valuetype DataDescription { /** A chave unívoca do dado. */ DataKey fKey; /** O nome simbólico do dado. */ string fName; /** A visão padrão do dado (opcional). */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado, ou seja, as visões diferentes da visão padrão. */ StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ MetadataSeq fMetadata;};

struct Metadata { string fName; /**< \brief O nome. */ any fValue; /**< \brief O valor. */};typedef sequence<Metadata> MetadataSeq;

Page 13: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Visão do Dado

• É um conjunto de atributos e operações que apresentam o dado de acordo com um domínio ou uma necessidade específica

• Os servidores de dados implementam suas próprias visões

• Uma visão existe sobre um dado em particular

• Do ponto de vista do cliente, a visão é o dadoabstract interface DataView { /** Obtém o identificador unívoco do dado. */ DataKey getKey() /** Obtém o nome da interface. Deve-se utilizar o * "Repository ID" como retorno. */ string getInterfaceName();};

Page 14: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Visão do Dado

• O DataService já define uma visão para dados não estruturados

• Com essa visão é possível transferir dados locais para o data source através de socket

/** Visão de um dado por valor. */valuetype ValueTypeDataView supports DataView { public DataKey fKey; /* O identificador unívoco do dado */ };

/** Visão não-estruturada de um dado para a transferência de seu conteúdo através de um socket. */valuetype UnstructuredDataView : ValueTypeDataView { public string fHost; /* O nome do host de origem do dado */ public unsigned long fPort; /* A porta do host de origem */ public OctetSeq fAccessKey; /* A chave de acesso ao dado */ public boolean fWritable; /* Se é possível alterar o dado */};

Page 15: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Exemplo de transferência de dado usando a visão não estruturada

A biblioteca FTC (versão Java atual 1.4.0.1) implementa abstrações para transferência de dados por socket

ByteBuffer data = …; UnstructuredDataView view = (UnstructuredDataView) dataService.getDataView(fileKey, UnstructuredDataViewHelper.id()); RemoteDataChannel rdc = new RemoteDataChannel( view.fWritable, view.fHost, view.fPort, view.fAccessKey); rdc.open(); rdc.write(data); rdc.close();

Page 16: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

Facetas definidas pelo Serviço de Dados

• IDataService• Permite a obteção de descrições e visões de

dados a partir de suas chaves unívocas

• IHierarchicalNavigationDataService• Permite a navegação pelos dados

• IHierarchicalManagementDataService• Permite a criação, atualização e remoção de

dados, no próprio data source

• IHierarchicalTransferDataService• Permite a transferência de dados entre data

sources diferentes

Page 17: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IDataService

Page 18: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IDataService

DataDescription getDataDescription(in DataKey fKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied);

• O método getDataDescription obtém o descritor de um determinado dado

• O parâmetro de entrada é a chave do dado que se deseja o descritor

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• InvalidDataKey caso a chave do dado não seja válida

• DataNotFound caso o dado não seja encontrado

• DataAccessDenied caso o usuário não tenha permissão de acesso

Page 19: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IDataService

DataView getDataView(in DataKey fKey, in string fViewInterface) raises (ServiceFailure, InvalidDataKey, DataNotFound, UnsupportedView, DataAccessDenied);

• O método getDataView obtém uma visão de um dado

• Os parâmetros de entrada são a chave do dado e o nome da visão desejada

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• InvalidDataKey caso a chave do dado não seja válida

• DataNotFound caso o dado não seja encontrado

• UnsupportedView uma visão não suportada foi solicitada

• DataAccessDenied caso o usuário não tenha permissão

Page 20: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IDataService

DataViewSeq getDataViewSeq(in DataKeySeq fKeys, in string fViewInterface) raises (ServiceFailure, InvalidDataKey, DataNotFound, UnsupportedView, DataAccessDenied);

• O método getDataViewSeq obtém um conjunto de visões para um conjunto de dados. As visões retornadas implementam a mesma interface

• Os parâmetros são as chaves dos dados e o nome da visão

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• InvalidDataKey caso a chave do dado não seja válida

• DataNotFound caso o dado não seja encontrado

• UnsupportedView uma visão não suportada foi solicitada

• DataAccessDenied caso o usuário não tenha permissão

Page 21: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

Page 22: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

• O método getRoots obtém os descritores dos dados que representam as raízes da hierarquia

• É utilizado pelas aplicações que utilizam o serviço para iniciar a navegação nos dados

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• DataAccessDenied caso o usuário não tenha permissão de acesso

DataDescriptionSeq getRoots() raises (ServiceFailure, DataAccessDenied);

Page 23: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

• O método getChildren obtém os descritores dos dados descendentes de um determinado dado

• O parâmetro de entrada é a chave do dado que se deseja os descendentes

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• InvalidDataKey caso a chave do dado não seja válida

• DataNotFound caso o dado não seja encontrado

• DataAccessDenied caso o usuário não tenha permissão de acesso

DataDescriptionSeq getChildren(in DataKey fKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied);

Page 24: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

• O método getParent obtém o descritor do ascendente de um determinado dado

• O parâmetro de entrada é a chave do dado que se deseja o ascendente

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• InvalidDataKey caso a chave do dado não seja válida

• DataNotFound caso o dado não seja encontrado

• DataAccessDenied caso o usuário não tenha permissão de acesso

DataDescription getParent(in DataKey fKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied

Page 25: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalManagementDataService

Page 26: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalManagementDataService

• O método createData cria um dado a partir de informações contidas em um descritor protótipo

• Nem todos os campos precisam estar presentes na descrição do dado (ex: o campo dataKey)

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação• InvalidDataKey caso a chave do dado não seja válida• DataNotFound caso o dado não seja encontrado• InvalidPrototype caso o protótipo seja inválido• DataAccessDenied caso o usuário não tenha permissão• DataAlreadyExist caso o dado já exista• InvalidContainer caso o dado pai não possa conter dados• UnsupportedOperation caso a operação não seja implementada pelo serviço

DataKey createData(in DataKey fPrototype, in DataDescription fParentKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, InvalidPrototype, DataAccessDenied, DataAlreadyExist, InvalidContainer, UnsupportedOperation)

Page 27: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalManagementDataService

• O método copyData copia um dado para uma determinada localização

• Recebe como parâmetros a chave do dado de origem e a chave do dado (pai) onde o novo dado (filho) será criado

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação• InvalidDataKey caso a chave do dado não seja válida• DataNotFound caso o dado não seja encontrado• DataAccessDenied caso o usuário não tenha permissão• DataAlreadyExist caso o dado já exista• InvalidContainer caso o dado pai não possa conter dados• UnsupportedOperation caso a operação não seja implementada pelo

serviço

DataKey copyData(in DataKey fSourceKey, in DataKey fParentKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied, DataAlreadyExist, InvalidContainer, UnsupportedOperation);

Page 28: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalManagementDataService

• O método moveData move um dado para uma determinada localização

• Recebe como parâmetros a chave do dado de origem e a chave do dado (pai) onde o novo dado (filho) será criado

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação• InvalidDataKey caso a chave do dado não seja válida• DataNotFound caso o dado não seja encontrado• DataAccessDenied caso o usuário não tenha permissão• DataAlreadyExist caso o dado já exista• InvalidContainer caso o dado pai não possa conter dados• UnsupportedOperation caso a operação não seja implementada pelo

serviço

void moveData(in DataKey fKey, in DataKey fNewParentKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied, DataAlreadyExist, InvalidContainer, UnsupportedOperation);

Page 29: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalManagementDataService

• O método updateData atualiza um dado a partir do conteúdo de um outro dado qualquer

• Recebe como parâmetros a chave do dado que se deseja atualizar e a chave do dado de origem

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação• AbsentViews caso o dado de origem não possua visões conhecidas

para a atualização• InvalidDataKey caso a chave do dado não seja válida• DataNotFound caso o dado não seja encontrado• DataAccessDenied caso o usuário não tenha permissão• UnsupportedOperation caso a operação não seja implementada pelo

serviço

void updateData(in DataKey fKey, in DataKey fSourceKey) raises (ServiceFailure, AbsentViews, InvalidDataKey, DataNotFound, DataAccessDenied, UnsupportedOperation);

Page 30: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalManagementDataService

• O método deleteData remove um dado

• Recebe como parâmetro a chave do dado que se deseja remover

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação

• InvalidDataKey caso a chave do dado não seja válida

• DataNotFound caso o dado não seja encontrado

• DataAccessDenied caso o usuário não tenha permissão

• UnsupportedOperation caso a operação não seja implementada pelo serviço

void deleteData(in DataKey fKey) raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied, UnsupportedOperation);

Page 31: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalTransferDataService

Page 32: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalTransferDataService• O método copyDataFrom copia um dado proveniente de outro data

source para uma determinada localização• Recebe como parâmetros a chave do dado de origem e a chave do dado

(pai) onde o novo dado (filho) será criado• Pode lançar as exceções:

• ServiceFailure caso ocorra uma falha na operação• InvalidDataKey caso a chave do dado não seja válida• DataNotFound caso o dado não seja encontrado• DataAccessDenied caso o usuário não tenha permissão• AbsentViews caso o dado de origem não possua visões conhecidas para a

atualização• UnavailableDataService caso o servidor de origem do dado não esteja disponível• DataAlreadyExist caso o dado já exista• InvalidContainer caso o dado pai não possa conter dados• UnsupportedOperation caso a operação não seja implementada pelo serviço

DataKey copyDataFrom(in DataKey fSourceKey, in DataKey fParentKey) raises (ServiceFailure, AbsentViews, InvalidDataKey, DataNotFound, DataAccessDenied, UnavailableDataService, DataAlreadyExist,

InvalidContainer, UnsupportedOperation)

Page 33: Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalTransferDataService

• O método updateDataFrom atualiza um dado a partir do conteúdo de um dado proveniente de outro data source

• Recebe como parâmetros a chave do dado que se deseja atualizar e a chave do dado de origem

• Pode lançar as exceções:• ServiceFailure caso ocorra uma falha na operação• AbsentViews caso o dado de origem não possua visões conhecidas

para a atualização• InvalidDataKey caso a chave do dado não seja válida• DataNotFound caso o dado não seja encontrado• DataAccessDenied caso o usuário não tenha permissão• UnavailableDataService caso o servidor de origem do dado não esteja

disponível

void updateDataFrom(in DataKey fKey, in DataKey fSourceKey) raises (ServiceFailure, AbsentViews, InvalidDataKey, DataNotFound, DataAccessDenied, UnavailableDataService);