gestor: tic/tic-e&p/gidsep versão 1 - julho/2013 tecgraf puc-rio outubro de 2013 dataservice...
TRANSCRIPT
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Tecgraf PUC-RioOutubro de 2013
DataService 1.2
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
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 (n x n)● Eficiência na transmissão dos dados
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Múltiplas visões sobre o mesmo dado
● Uma aplicação que deseja verificar se a vazão de um poço está dentro do esperado precisará ter acesso ao vazão real e a vazão estimada.● Uma aplicação que deseja dar visibilidade do poço em um mapa precisará da localização da cabeça do poço.● Uma aplicação que deseja exibir o poço em 3D precisará da trajetória do poço.
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Data Service
● Oferece um conjunto de funcionalidades para acesso e manipulação dos dados armazenados em Servidores de Dados (data sources).● Flexível para atender as diferentes características dos servidores de dados e as diferentes necessidades dos clientes.● Solução de integração entre aplicações cujos dados são provenientes de diferentes servidores de dados (1 x n)
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Princípios básicos● Representação dos dados de forma estruturada
● os dados podem ser representados da forma mais adequada para suas aplicações
● navegação x armazenamento● Diferentes interfaces de visão 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
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Data Service
● É composto das seguintes interfaces de serviço:
● IDataService● Provê acesso a visão dos dados
● IHierarchicalNavigationDataService● IHierarchicalManagementDataService● IHierarchicalTransferDataService● Provê suporte a navegação e busca dos
dados
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Conceitos básicos
● Descritor do dado (DataDescription): possui informações suficientes para um provedor descrever um dado● Chave do dado (DataKey): identifica univocamente um dado no seu provedor● Visão do dado (DataView): um tipo IDL que provê uma visão sobre o dado● Meta-dados (Metadata): informações adicionais na forma de chave-valor
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Descritor do Dado (DataDescription)
● Possui informações suficientes para um provedor descrever e identificar um dado.struct DataDescription { /** A chave unívoca do dado. */ public DataKey fKey; /** O nome simbólico do dado. */ public string fName; /** A visão default (opcional) */ DefaultView fDefaultView; /** As outras visões oferecidas pelo dado. */ public StringSeq fOthersViews; /** Metadados (opcionais) do dado. */ public MetadataSeq fMetadata;};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Chave do Dado (DataKey)
● O identificador unívoco de um dado.● A chave é criada pelo serviço e nela pode-se inserir qualquer informação que o serviço entenda como importante para identificar o dado.● Por exemplo, o caminho do dado no sistema de arquivos ou a chave do dado em um banco de dados
typedef sequence<octet> OctetSeq;typedef OctetSeq DataKey;
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visão do Dado (DataView)
● Atributos e operações que apresentam o dado de acordo com um domínio ou uma necessidade.● Os servidores de dados implementam suas próprias visões sobre os dados.● É identificada pelo ID da IDL da visão.abstract interface DataView {
/** Chave do dado associada a essa visão */ DataKey getKey(); /** Repository ID da interface IDL da visão */ string getInterfaceName();};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visão do Dado (DataView)
●Sendo uma interface abstrata, pode ser objeto por valor (valuetype) ou objeto remoto (interface).valuetype ValueTypeDataView supports DataView { /** O identificador unívoco do dado. */ public DataKey fKey;};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visões de um Dado
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visão Default (DefaultView)
● Um DataDescription define opcionalmente umavisão default e uma ou mais visões adicionais.struct DefaultView { string fInterfaceName; /** O nome da interface da visão. */ DataView fValue; /** A instância da visão. */};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Meta-dados (Metadata)
● O metadado é utilizado para inserir umainformação adicional ao descritor do dado.● Para representar o metadado utiliza-se umpar de nome e valor onde o valor pode ser dequalquer tipo básico (any).struct Metadata { string fName; /**< \brief O nome. */ any fValue; /**< \brief O valor. */};typedef sequence<Metadata> MetadataSeq;
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Interface de Acesso ao Dado
● Suporte à consulta ao descritor de um dado erecuperação de suas visões
● IDataService● responsável pela acesso ao descritor e
visões dos dados de um provedor
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IDataService
● Obtém o descritor de um dado cuja chave épassada como parâmetro de entrada
DataDescription getDataDescription(in DataKey fKey raises (ServiceFailure, InvalidDataKey, DataNotFound, DataAccessDenied);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IDataService
● Obtém uma visão de um dado cuja chave é passada como parâmetro de entrada e que implemente a interface IDL cujo ID é informado.
DataView getDataView(in DataKey fKey, in string fViewInterface) raises (ServiceFailure, InvalidDataKey, DataNotFound, UnsupportedView, DataAccessDenied);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IDataService
● Obtém um conjunto de visões para um conjunto de dados cujas chaves são informadas no parâmetro de entrada.● Todas as visões no conjunto implementam a mesma interface solicitada.
DataViewSeq getDataViewSeq(in DataKeySeq fKeys, in string fViewInterface) raises (ServiceFailure, InvalidDataKey, DataNotFound, UnsupportedView, DataAccessDenied);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Interfaces de Navegação Hierárquica
● Suporte à navegação hierárquica sobre os dados de um provedor– 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
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalNavigationDataService
● Obtém os descritores dos dados que representam as raízes da hierarquia.● Este método é utilizado pelas aplicações que utilizam o serviço para iniciar a navegação nos dados.
DataDescriptionSeq getRoots() raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalNavigationDataService
● Obtém os descritores dos dados descendentes de um determinado dado cuja chave é passada como parâmetro de entrada.
DataDescriptionSeq getChildren(in DataKey fKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalNavigationDataService
● Obtém o descritor do ascendente de um dado cuja chave é passada como parâmetro de entrada.● Caso o dado informado seja a raiz da hierarquia é retornado um descritor que representa uma descrição nula (fKey com o tamanho zero)
DataDescription getParent(in DataKey fKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Cria um dado a partir de um protótipo do descritor, passado como parâmetro de entrada.● O protótipo precisar conter apenas as informações necessárias para criar o dado.● A chave do dado (pai) é informada.● Retorna a chave do dado criado.
DataKey createData(in DataDescription fPrototype, !in DataKey fParentKey) raises (!tecgraf::openbus::data_service::core::v1_02::ServiceFailure,tecgraf::openbus::data_service::core::v1_02::DataAccessDenied,tecgraf::openbus::data_service::core::v1_02::InvalidDataKey,tecgraf::openbus::data_service::core::v1_02::DataNotFound,tecgraf::openbus::data_service::core::v1_02::DataAlreadyExist,InvalidPrototype, InvalidContainer, UnsupportedOperation);!
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Cria uma cópia de um dado cuja chave é passada como parâmetro de entrada.● A chave do pai do novo dado criado é informada.● Retorna a chave do novo dado.
DataKey copyData(in DataKey fSourceKey, in DataKey fParentKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound, tecgraf::openbus::data_service::core::v1_02::DataAlreadyExist, InvalidContainer, UnsupportedOperation);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Move na hierarquia um dado cuja chave é passada como parâmetro de entrada.● A chave do pai para onde o dado é movido é informada.● Erro caso o dado já exista.
void moveData(in DataKey fKey, in DataKey fNewParentKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound, tecgraf::openbus::data_service::core::v1_02::DataAlreadyExist, InvalidContainer, UnsupportedOperation);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Atualiza um dado a partir do conteúdo de um outro dado qualquer.● A chave do dado a ser atualizado e a chave que provê o dado de origem são passados como parâmetros de entrada
void updateData(in DataKey fKey, in DataKey fSourceKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound, tecgraf::openbus::data_service::core::v1_02::AbsentViews, UnsupportedOperation);!
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Remove um dado cuja chave é passada como parâmetro de entrada.
void deleteData(in DataKey fKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound, UnsupportedOperation);!
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Cria uma cópia de um dado proveniente de outro provedor de dados.● A chave do pai do novo dado criado é informada.● Retorna a chave do novo dado
DataKey copyDataFrom(in DataKey fSourceKey, in DataKey fParentKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound, tecgraf::openbus::data_service::core::v1_02::AbsentViews, tecgraf::openbus::data_service::core::v1_02::UnavailableDataService, tecgraf::openbus::data_service::core::v1_02::DataAlreadyExist, InvalidContainer, UnsupportedOperation);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IHierarchicalManagementDataService
● Atualiza um dado a partir do conteúdo de um outro dado qualquer, proveniente de outro provedor de dados.● A chave do dado a ser atualizado e a chave que provê o dado de origem são passados como parâmetros de entrada.
void updateDataFrom(in DataKey fKey, in DataKey fSourceKey) raises ( tecgraf::openbus::data_service::core::v1_02::ServiceFailure, tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::InvalidDataKey, tecgraf::openbus::data_service::core::v1_02::DataNotFound, tecgraf::openbus::data_service::core::v1_02::UnavailableDataService, tecgraf::openbus::data_service::core::v1_02::AbsentViews);
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Servidor de Dados de Projetos
● Alguns provedores (data source) organizam seus dados em projetos● O serviço de dados oferece interfaces e tipos para representar a visão de projeto e itens de projetos nesses sistemas● Um projeto é representado como uma hierarquia de itens de projeto
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Projetos
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visões do Projeto
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
IProjectNavigationDataService
● A interface IProjectNavigationDataService herda os métodos definidos em IHierarchicalNavigationDataService.● O método getProject retorna um objeto por valor que é a visão de um projeto compartilhado com o usuário solicitante.
interface IProjectNavigationDataService : tecgraf::openbus::data_service::hierarchical::v1_02:: IHierarchicalNavigationDataService { ProjectDataViewSeq getProject( in string fOwner ) raises(tecgraf::openbus::data_service::core::v1_02::DataAccessDenied, tecgraf::openbus::data_service::core::v1_02::ServiceFailure, InvalidOwner);};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visão de Projeto (ProjectDataView)● Possui informações sobre um projeto:
valuetype ProjectDataView :tecgraf::openbus::data_service::core::v1_02::ValueTypeDataView { public string fOwner; /** O dono do projeto. */ public string fDescription; /** A descrição do projeto. */ public string fPath; /** O caminho absoluto até o projeto. */ public string fSoftware; /** O Software que provê o projeto. */ public long long fSize; /** O tamanho do projeto (em bytes). */ public StringSeq fReadingUsers; /** Os usuários que podem ler. */ public StringSeq fWritingUsers; /** Os usuário que podem escrever */ public tecgraf::openbus::data_service::core::v1_02::TimeStamp fCreationDate; /* A data de criação do projeto. */ public tecgraf::openbus::data_service::core::v1_02::TimeStamp fModificationDate; /** A data da última modificação do projeto. */};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visão de Item de Projeto(ProjectItemDataView)● Possui informações sobre um item de projeto.valuetype ProjectItemDataView:tecgraf::openbus::data_service::core::v1_02::ValueTypeDataView { public string fOwner; /** O dono do item. */ public string fDescription; /** A descrição do item. */ public string fPath; /** O caminho do item relativo ao projeto. */ public string fType; /** O tipo do item. */ public long long fSize; /** O tamanho do item (em bytes). */ public boolean fIsContainer; /* Indica se o item é um contêiner. */ public boolean fCanRead; /** Conteúdo do item pode ser lido*/ public boolean fCanWrite; /** Conteúdo do item pode ser escrito */ public tecgraf::openbus::data_service::core::v1_02::TimeStamp fCreationDate; /** A data da criação do item. */ public tecgraf::openbus::data_service::core::v1_02::TimeStamp fModificationDate; /** A data da última modificação do item. */};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visão de Item de Projeto(ProjectItemDataView)● A visão que representa as referências do projeto.interface ProjectReferencesDataView :tecgraf::openbus::data_service::core::v1_02::DataView { DataKeySeq getReferences();};
● O método getReferences fornece as dependências, ou seja, referências para dados (projeto ou item de projeto) internos (dentro do mesmo DataService) externos (de outros DataServices) ao projeto.
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Visões do Poço
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Exemplo: WellDataViewvaluetype WellDataView :tecgraf::openbus::data_service::core::v1_01::ValueTypeDataView { /** O Identificador de Poço da Base de Dados Integrada de E&P. */ public BDIEPWellID fBDIEPID; /** Sigla de Poço */ public string fAcronymn; /** Sistema de Referência de Coordenadas para Localização do Poço. */ public petrobras::ep::beep::coordinate_reference_system:: types::v3_00::GeodeticCoordinateReferenceSystem fCoordinateReferenceSystem; /** A Localização do Poço. */ public petrobras::ep::beep::geometry::types::v1_02::Point2D fLocation; /** A Elevação do Poço. */ public Elevation fElevation; /** Altura do poço em relação ao nível médio dos mares. */ public petrobras::ep::beep::physical_quantities:: types::v1_01::Length fTrueVerticalDepth; /** Medida da profundidade real do poço. */ public petrobras::ep::beep::physical_quantities:: types::v1_01::Length fMeasuredDepth; /** Profundidade da lâmina d'água. */ public petrobras::ep::beep::physical_quantities:: types::v1_01::Length fWaterDepth;};
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013
Exemplo: WellPathDataView
valuetype WellPathDataView: tecgraf::openbus::data_service::core::v1_01::ValueTypeDataView { /** O Datum de Referência da Profundidades dos Pontos da Trajetória */ public petrobras::ep::beep::well::types::v1_02::ElevationDatum fDatum; /** Referência norte contra a qual os valores de azimute são medidos*/ public AzimuthNorthType fAzimuthNorthType; /** A unidade de todas as grandezas lineares da trajetória de poço. */ petrobras::ep::beep::physical_quantities::types::v1_01::LengthUnit fLengthUnit;! /** A unidade de todas as grandezas angulares da trajetória. */ petrobras::ep::beep::physical_quantities::types::v1_01::AngleUnit fAngleUnit;! /** Os pontos da trajetória de poço*/ WellPathPointSeq fPoints;};