Data Service Tecgraf PUCRio maio de 2011 Motivao

  • Slides: 31
Download presentation
Data Service Tecgraf PUC-Rio maio de 2011

Data Service Tecgraf PUC-Rio maio de 2011

Motivação • Aplicações científicas tem como característica a elevada complexidade de seus dados e

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

Data Service • Oferece um conjunto de funcionalidades para acesso e manipulação dos dados

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

Princípios básicos • Representação dos dados de forma estruturada • os dados podem ser

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

O Serviço de Dados • Define os tipos e as facetas para navegação hierárquica

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

Descritores dos Dados • A navegação pelos dados é feita usando descritores que possuem

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

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */ public Data. Key f. Key; /** O nome simbólico do dado. */ public string f. Name; /** As visões oferecidas pelo dado. */ public String. Seq f. Views; /** Metadados (opcionais) do dado. */ public Metadata. Seq f. Metadata; }; • A navegação hierárquica é feita sobre descritores dos dados. • O descritor deve ter informações suficientes para que um determinado dado seja identificado.

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */ public Data. Key f. Key; /** O nome simbólico do dado. */ public string f. Name; /** As visões oferecidas pelo dado. */ public String. Seq f. Views; /** Metadados (opcionais) do dado. */ public Metadata. Seq f. Metadata; }; typedef sequence<octet> Octet. Seq; typedef Octet. Seq Data. Key; • A chave f. Key é criada pelo serviço • Identificador unívoco • Identifica, além do dado em si, o serviço do qual o dado se originou.

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */ public Data. Key f. Key; /** O nome simbólico do dado. */ public string f. Name; /** As visões oferecidas pelo dado. */ public String. Seq f. Views; /** Metadados (opcionais) do dado. */ public Metadata. Seq f. Metadata; }; • O campo f. Name possui um nome simbólico para o dado.

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */ public Data. Key f. Key; /** O nome simbólico do dado. */ public string f. Name; /** As visões oferecidas pelo dado. */ public String. Seq f. Views; /** Metadados (opcionais) do dado. */ public Metadata. Seq f. Metadata; }; • O campo f. Views possui a lista das visões que o dado possui. • Tipicamente utiliza-se o repository ID como identificador da visão.

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */

Descritores dos Dados valuetype Data. Description { /** A chave unívoca do dado. */ public Data. Key f. Key; /** O nome simbólico do dado. */ public string f. Name; /** As visões oferecidas pelo dado. */ public String. Seq f. Views; /** Metadados (opcionais) do dado. */ public Metadata. Seq f. Metadata; }; struct Metadata { string f. Name; /**< brief O nome. */ any f. Value; /**< brief O valor. */ }; typedef sequence<Metadata> Metadata. Seq; • O campo f. Metadata permite qualquer informação adicional • Par nome e valor onde o valor pode ser de qualquer tipo básico (any).

Visão do Dado • É um conjunto de atributos e operações que apresentam o

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 Data. View { /** Obtém o identificador unívoco do dado. */ Data. Key get. Key() /** Obtém o nome da interface. Deve-se utilizar o * "Repository ID" como retorno. */ string get. Interface. Name(); };

Visão do Dado • O Data. Service já define uma visão para dados não

Visão do Dado • O Data. Service 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 Unstructured. Data supports Data. View { public Data. Key f. Key; /* O identificador unívoco do dado. */ public string f. Host; /* O nome do host de origem do dado. */ public unsigned long f. Port; /* A porta do host de origem */ public Octet. Seq f. Access. Key; /* A chave de acesso ao dado. */ public boolean f. Writable; /* Se é possível alterar o dado */ };

Exemplo de transferência de dado usando a visão não estruturada A biblioteca FTC implementa

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 =. . . ; Unstructured. Data view = (Unstructured. Data) data. Service. get. Data. View(file. Key, Unstructured. Data. Helper. id()); Data. Key data. Key = new Data. Key(view. f. Key); Remote. File. Channel rfc = new Remote. File. Channel. Impl( data. Key. get. Data. Id(). get. Bytes(Utils. CHARSET_ENCODING), view. f. Writable, view. f. Host, view. f. Port, view. f. Access. Key); rfc. open(false); rfc. write(data); rfc. close();

Facetas definidas pelo Serviço de Dados • IHierarchical. Navigation. Data. Service • responsável pela

Facetas definidas pelo Serviço de Dados • IHierarchical. Navigation. Data. Service • responsável pela navegação pelos dados • IHierarchical. Management. Data. Service • responsável pela criação, atualização e remoção de dados, no próprio data source. • IHierarchical. Transfer. Data. Service • responsável pela transferência de dados entre data sources diferentes. • IHierarchical. Data. Service • interface de conveniência que herda todas as funcionalidades das outras três

IHierarchical. Navigation. Data. Service

IHierarchical. Navigation. Data. Service

IHierarchical. Navigation. Data. Service • O método get. Roots obtém os descritores dos dados

IHierarchical. Navigation. Data. Service • O método get. Roots 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: • Service. Failure caso ocorra uma falha na operação. • Data. Access. Denied caso o usuário não tenha permissão de acesso. Data. Description. Seq get. Roots() raises (Service. Failure, Data. Access. Denied);

IHierarchical. Navigation. Data. Service • O método get. Children obtém os descritores dos dados

IHierarchical. Navigation. Data. Service • O método get. Children 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: • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão de acesso Data. Description. Seq get. Children(in Data. Key f. Key) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);

IHierarchical. Navigation. Data. Service • O método get. Parent obtém o descritor dos ascendente

IHierarchical. Navigation. Data. Service • O método get. Parent 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: • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão de acesso Data. Description get. Parent(in Data. Key f. Key) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied

IHierarchical. Navigation. Data. Service • O método get. Data. Description obtém o descritor de

IHierarchical. Navigation. Data. Service • O método get. Data. Description 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: • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão de acesso Data. Description get. Data. Description(in Data. Key f. Key) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);

IHierarchical. Navigation. Data. Service • O método get. Data. View obtém uma visão de

IHierarchical. Navigation. Data. Service • O método get. Data. View 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: • • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Unknown. View. Interface uma visão desconhecida foi solicitada Data. Access. Denied caso o usuário não tenha permissão Data. View get. Data. View(in Data. Key f. Key, in string f. View. Interface) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Unknown. View. Interface, Data. Access. Denied);

IHierarchical. Navigation. Data. Service • O método get. Data. View. Seq obtém um conjunto

IHierarchical. Navigation. Data. Service • O método get. Data. View. Seq 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: • • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Unknown. View. Interface uma visão desconhecida foi solicitada Data. Access. Denied caso o usuário não tenha permissão Data. View. Seq get. Data. View. Seq(in Data. Key. Seq f. Keys, in string f. View. Interface) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Unknown. View. Interface, Data. Access. Denied);

IHierarchical. Management. Data. Service

IHierarchical. Management. Data. Service

IHierarchical. Management. Data. Service • O método create. Data cria um dado a partir

IHierarchical. Management. Data. Service • O método create. Data 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 data. Key) • Pode lançar as exceções: • • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Invalid. Prototype caso o protótipo seja inválido Data. Access. Denied caso o usuário não tenha permissão Data. Key create. Data(in Data. Key f. Prototype, in Data. Description f. Parent. Key) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Invalid. Prototype, Data. Access. Denied)

IHierarchical. Management. Data. Service • O método copy. Data copia um dado para uma

IHierarchical. Management. Data. Service • O método copy. Data 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: • • • Service. Failure caso ocorra uma falha na operação. Unknown. Views o dado não possua visões para o novo dado. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão Data. Key copy. Data(in Data. Key f. Source. Key, in Data. Key f. Parent. Key) raises (Service. Failure, Unknown. Views, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);

IHierarchical. Management. Data. Service • O método move. Data move um dado para uma

IHierarchical. Management. Data. Service • O método move. Data 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: • • • Service. Failure caso ocorra uma falha na operação. Unknown. Views o dado não possua visões para o novo dado. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão void move. Data(in Data. Key f. Key, in Data. Key f. New. Parent. Key) raises (Service. Failure, Unknown. Views, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);

IHierarchical. Management. Data. Service • O método update. Data atualiza um dado a partir

IHierarchical. Management. Data. Service • O método update. Data 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: • • • Service. Failure caso ocorra uma falha na operação. Unknown. Views o dado não possua visões para o novo dado. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão void update. Data(in Data. Key f. Key, in Data. Key f. Source. Key) raises (Service. Failure, Unknown. Views, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);

IHierarchical. Management. Data. Service • O método delete. Data remove um dado. • Recebe

IHierarchical. Management. Data. Service • O método delete. Data remove um dado. • Recebe como parâmetro a chave do dado que se deseja remover. • Pode lançar as exceções: • • Service. Failure caso ocorra uma falha na operação. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão void delete. Data(in Data. Key f. Key) raises (Service. Failure, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);

IHierarchical. Transfer. Data. Service

IHierarchical. Transfer. Data. Service

IHierarchical. Transfer. Data. Service • O método copy. Data. From copia um dado proveniente

IHierarchical. Transfer. Data. Service • O método copy. Data. From 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: • • • Service. Failure caso ocorra uma falha na operação. Unknown. Views o dado não possua visões para o novo dado. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão Data. Key copy. Data. From(in Data. Key f. Source. Key, in Data. Key f. Parent. Key) raises (Service. Failure, Unknown. Views, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied)

IHierarchical. Transfer. Data. Service • O método update. Data. From atualiza um dado a

IHierarchical. Transfer. Data. Service • O método update. Data. From 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: • • • Service. Failure caso ocorra uma falha na operação. Unknown. Views o dado não possua visões para o novo dado. Invalid. Data. Key caso a chave do dado não seja válida. Data. Not. Found caso o dado não seja encontrado. Data. Access. Denied caso o usuário não tenha permissão void update. Data. From(in Data. Key f. Key, in Data. Key f. Source. Key) raises (Service. Failure, Unknown. Views, Invalid. Data. Key, Data. Not. Found, Data. Access. Denied);