31
Tecgraf PUC-Rio maio de 2011 Data Service

Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem como característica a elevada complexidade de seus dados e dos algoritmos

Embed Size (px)

Citation preview

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

Tecgraf PUC-Rio

maio de 2011

Data Service

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

Motivação

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

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

Page 3: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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 maio de 2011 Data Service. Motivação Aplicações científicas tem 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

para as 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 maio de 2011 Data Service. Motivação Aplicações científicas tem 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 maio de 2011 Data Service. Motivação Aplicações científicas tem 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 maio de 2011 Data Service. Motivação Aplicações científicas tem 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. */ public DataKey fKey; /** O nome simbólico do dado. */ public string fName; /** As visões oferecidas pelo dado. */ public StringSeq fViews; /** Metadados (opcionais) do dado. */ public MetadataSeq fMetadata;};

Page 8: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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. */ public DataKey fKey; /** O nome simbólico do dado. */ public string fName; /** As visões oferecidas pelo dado. */ public StringSeq fViews; /** Metadados (opcionais) do dado. */ public MetadataSeq fMetadata;};

typedef sequence<octet> OctetSeq;typedef OctetSeq DataKey;

Page 9: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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. */ public DataKey fKey; /** O nome simbólico do dado. */ public string fName; /** As visões oferecidas pelo dado. */ public StringSeq fViews; /** Metadados (opcionais) do dado. */ public MetadataSeq fMetadata;};

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

Descritores dos Dados

• O campo fViews possui a lista das visões que o dado possui.

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

valuetype DataDescription { /** A chave unívoca do dado. */ public DataKey fKey; /** O nome simbólico do dado. */ public string fName; /** As visões oferecidas pelo dado. */ public StringSeq fViews; /** Metadados (opcionais) do dado. */ public MetadataSeq fMetadata;};

Page 11: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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. */ public DataKey fKey; /** O nome simbólico do dado. */ public string fName; /** As visões oferecidas pelo dado. */ public StringSeq fViews; /** Metadados (opcionais) do dado. */ public MetadataSeq fMetadata;};

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

Page 12: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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 é sobre um dado em particular.

• Do ponto de vista do cliente, a visão é o dado.abstract 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 13: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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 não-estruturada de um dado para a transferência de seu conteúdo através de um socket. */valuetype UnstructuredData supports DataView { public DataKey fKey; /* O identificador unívoco do dado. */ 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 14: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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 implementa abstrações para transferência de dados por socket.

byte[] data = ...; UnstructuredData view = (UnstructuredData) dataService.getDataView(fileKey, UnstructuredDataHelper.id()); DataKey dataKey = new DataKey(view.fKey); RemoteFileChannel rfc = new RemoteFileChannelImpl( dataKey.getDataId().getBytes(Utils.CHARSET_ENCODING), view.fWritable, view.fHost, view.fPort, view.fAccessKey); rfc.open(false); rfc.write(data); rfc.close();

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

Facetas definidas pelo Serviço de Dados

• IHierarchicalNavigationDataService• responsável pela navegação pelos dados

• IHierarchicalManagementDataService• responsável pela criação, atualização e remoção de dados,

no próprio data source.

• IHierarchicalTransferDataService• responsável pela transferência de dados entre data sources

diferentes.

• IHierarchicalDataService• interface de conveniência que herda todas as

funcionalidades das outras três

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

IHierarchicalNavigationDataService

Page 17: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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 18: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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 19: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

• O método getParent obtém o descritor dos 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 20: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

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 21: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem como característica a elevada complexidade de seus dados e dos algoritmos

IHierarchicalNavigationDataService

DataView getDataView(in DataKey fKey, in string fViewInterface) raises (ServiceFailure, InvalidDataKey, DataNotFound, UnknownViewInterface, 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.

• UnknownViewInterface uma visão desconhecida foi solicitada

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

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

IHierarchicalNavigationDataService

DataViewSeq getDataViewSeq(in DataKeySeq fKeys, in string fViewInterface) raises (ServiceFailure, InvalidDataKey, DataNotFound, UnknownViewInterface, 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.

• UnknownViewInterface uma visão desconhecida foi solicitada

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

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

IHierarchicalManagementDataService

Page 24: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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

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

Page 25: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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.

• UnknownViews o dado não possua visões para o novo dado.

• 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

DataKey copyData(in DataKey fSourceKey, in DataKey fParentKey) raises (ServiceFailure, UnknownViews, InvalidDataKey, DataNotFound, DataAccessDenied);

Page 26: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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.

• UnknownViews o dado não possua visões para o novo dado.

• 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

void moveData(in DataKey fKey, in DataKey fNewParentKey) raises (ServiceFailure, UnknownViews, InvalidDataKey, DataNotFound, DataAccessDenied);

Page 27: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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.

• UnknownViews o dado não possua visões para o novo dado.

• 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

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

Page 28: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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

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

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

IHierarchicalTransferDataService

Page 30: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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.

• UnknownViews o dado não possua visões para o novo dado.

• 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

DataKey copyDataFrom(in DataKey fSourceKey, in DataKey fParentKey) raises (ServiceFailure, UnknownViews, InvalidDataKey, DataNotFound, DataAccessDenied)

Page 31: Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem 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.

• UnknownViews o dado não possua visões para o novo dado.

• 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

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