OPeNDAP Acessando dados heterogêneos em ambientes distribuídos David Moises William Voorsluys Introdução Na distribuição de dados científicos, as questões de incompatibilidade de formatos é um obstáculo significante impede cientistas de compartilhar livremente seus dados desencoraja o acesso a dados disponibilizados por centros de referência Para tratar questões como esta em relação ao dados de oceanografia, alguns cientistas lançaram em 1993 um projeto chamado DODS (Distributed Oceanographic Data System) Introdução O objetivo de tal projeto é facilitar o compartilhar de dados Permitindo que cientistas importem dados para suas ferramentas de análise diretamente de sites remotos, sem se preocupar com o formato no qual os dados estão armazenados O esforço do projeto DODS tem duas partes fundamentais Como dados são transferidos pela rede até o software cliente — Data Access Protocol (DAP) Aplicações para o uso do protocolo Introdução Dados relacionados a oceanografia envolvem uma grande variedade de tipos de dados e estruturas de organização Então, o resultado é que foi desenvolvido um protocolo razoavelmente genérico Sendo assim, embora desenvolvido para a comunidade de Oceanografia, DAP não tem nada que seja específico desta área Introdução Alguns cientistas logo reconheceram isto e adotaram DAP Sendo assim, surgiram várias especializações do protocolo, gerando deste modo, uma duplicação de esforços desnecessária O que é OPeNDAP? Para resolver este problema, OPeNDAP (Open Source Project for a Network Data Access Protocol) foi estabelecido em 2000 Desenvolvimento e promoção de softwares que facilitam o acesso de dados via rede Mais abrangente do que oceanografia Por que usar OPeNDAP? Exemplo: FTP versus OPeNDAP Considere um cientista que deseja fazer análises de alguns dados que estão contida no site X Para efeitos de comparação, ele precisará de outros dados que estão no site Y Por que usar OPeNDAP? Cenário com FTP Importe o arquivo do site X para a máquina local do usuário. Isto requer outros passos: 1. • • Deve ser feito o download dos dados usando FTP Em seguida, os dados devem ser convertidos para um formato que pode ser lido pelo programa que realiza a análise 2. Examine os dados e formule a requisição para o site Y 3. Importe o resultado para a máquina local. • 4. Novamente deve ser feito o download e conversão dos dados Analise os resultados finais Por que usar OPeNDAP? Cenário com OPeNDAP 1. Uma vez feita a requisição, os dados são baixados e convertidos automaticamente para a aplicação do usuário • Restrições podem ser feitas e, deste modo, poupar tráfego na rede 2. Examine os dados e formule a requisição para o site Y 3. Mais uma vez, os dados são baixados e convertidos automaticamente 4. Analise os resultados finais Por que usar OPeNDAP? Conversão de formatos - semântica dos dados - ordem das variáveis Restrições FTP OPeNDAP Manual Automática Não Sim Por que usar OPeNDAP? Benefícios O usuário não precisa aprender qualquer formato de dados Consultas podem extrair uma parte dos dados de um arquivo remoto no formato tratado por sua aplicação Dados desnecessários não são transmitidos Adicionando restrições a URL, o usuário pode consultar dados usando técnicas que não estão disponíveis na sua aplicação Arquitetura Cliente/Servidor O cliente OPenDAP é um programa que requisita e recebe dados O servidor OPeNDAP é um programa que envia dados em um formato intermediário Servidor Web que utiliza um conjunto de scripts CGI ou servlets JAVA Segurança Podem ser definidos usuários e senhas para acesso aos dados (Servidor Web) O protocolo OPeNDAP define como clientes e servidores comunicam um com o outro Arquitetura Cliente/Servidor Acesso a dados (cliente) Acessa dados remotos através de aplicações rotineiras Matlab GrADS Qualquer aplicação netCDF Excel etc Não precisa saber o formato no qual os dados estão armazenados Pode consultar subconjuntos dos dados Publicação de dados (servidor) Pode fornecer dados em vários formatos netCDF FreeForm JGOFS DSP Etc DAP provê um representação intermediária para dados Permite consultar subconjuntos dos dados Arquitetura Cliente/Servidor Como OPeNDAP encontra dados? Protocolo: protocolo de uma requisição via Internet Host: endereço Internet do servidor Servidor: característica especial do servidor para executar scripts CGI Diretório: pasta que contém o arquivo desejado Nome do arquivo Sufixo: especificação do tipo de requisição diferentes sufixos demandam diferentes serviços do servidor Serviços OPeNDAP Data Attribute (.das) Data Descriptor (.dds) Retorna os dados requisitados pela URL ASCII Data (.ascii) Descreve a estrutura dos dados OPeNDAP Data (.dods) Define os atributos dos dados Representação ASCII dos dados requisitados Existe uma entidade responsável por decidir serviço e usado comopara Apresenta um qual formulário HTMLprocessar para pode ser construção da URL para requisitar dados o programa deve passar os Information (.info) parâmetros extraídos daerequisição Fornece informações sobre o servidor o arquivo de dados, em WWW Interface (.html) um formato HTML legível para humanos Version (.ver) Mostra a versão do Servidor OPeNDAP Help Retorna algum texto útil como resposta a uma URL especificada de forma imprópria Serviços OPeNDAP Um exemplo de consulta Usando o serviço ASCII Restringindo a consulta por tempo http://dodsdev.gso.uri.edu/dods-3.4/nphdods/data/nc/coads_climatology.nc.ascii?TIME[0:1:11] Organização dos dados Modelo de dados Conversão entre formatos Componentes do “DAP” Representação de dados Tipos de dados Estruturas de dados Meta-dados Sintáticos Semânticos Modelo de dados O que é? Um conjunto de dados é formado por: Modelo de dados Dados Um modelo de dados Define os tamanhos e a organização dos valores Define a relação entre os valores Computacionalmente falando ... Tipos de dados (inteiro, real, string) Coleções de dados (Estrutura, Array, Vetor) Modelo de dados Exemplo Representando a “Temperatura da Superfície do Mar” Informações a representar em cada ponto: Coordenadas geográficas (latitude, longitude) Tempo (Dia, Hora) Valores (Temperatura, Profundidade) Modelo de dados Exemplo Mesmo dado Diferentes modelos de dado Dataset { Float64 lat; Float64 lon; Int32 minutes; Int32 day; Int32 year; Sequence { Float64 depth; Float64 temperature; } cast; } station; Dataset { Structure { Float64 lat; Float64 lon; } location; Structure { Int32 minutes; Int32 day; Int32 year; } time; Sequence { Float64 depth; Float64 temperature; } cast; } station; Dataset { Structure { Float64 lat; Float64 lon; } location; Structure { Int32 minutes; Int32 day; Int32 year; } time; Float64 depth[500] Float64 temperature[500] } station; Modelo de dados API Biblioteca de funções para operar sobre os dados Funções da API estão “amarradas” ao modelo de dados Funções desejáveis para uma API Ler Escrever Consultar Retirar subconjuntos OPeNDAP suporta APIs bem distintas Ex.: netCDF e JGOFS Conversão entre formatos Questão central na implementação do OPeNDAP Não é possível efetuar conversões entre “quaisquer modelos” Muitas vezes a conversão implica em perda de informação Informações contidas no modelo são essenciais para a correta análise dos dados O DAP (Data Access Protocol) Consiste de 4 componentes 1. 2. 3. 4. Formato intermediário de representação Formato para metadados (dados auxiliares) Metadado sintático (DDS) Metadado semântico (DAS) Um procedimento para recuperar dados e metadados de fontes remotas (serviços) Uma API para implementar o protocolo Representação dos dados Objetivos do formato intermediário Modelo OPeNDAP consiste de: Adequado para transmissão pela rede Ser genérico o suficiente para representar as abstrações de diversos formatos Evitar perda de informações durante a conversão Conjunto básico de tipos de dados Conjunto avançado de estruturas de dados e operadores Representação externa Formato independente de arquitetura Sun XDR (External Data Representation) RFC 1832 Elementos do DAP (1) Tipos de dado básicos Byte, Int32, UInt32, Float64, String, Url Estruturas List Array Estrutura indexada. Uma ou mais dimensões. Structure Coleção de elementos de qualquer tipo Representa relação entre variáveis Sequence Conjunto ordenado de grupos de variáveis Grid Associação de um array de N dimensões com N vetores de índices Elementos do DAP (2) Operadores Byte, Int32, UInt32, Float64 String length(list), nth(list,n), member(list,elem) Structure, Sequence [start:stop] [start:stride:stop] List * Array = != ~= URL < > = != <= >= “.” Grid [start:stop] [start:stride:stop], “.” Elementos do DAP (2) Operadores Byte, Int32, UInt32, Float64 String length(list), nth(list,n), member(list,elem) Structure, Sequence [start:stop] [start:stride:stop] List * Array = != ~= URL < > = != <= >= “.” Grid [start:stop] [start:stride:stop], “.” Dados auxiliares (metadados) Objetivo Fornecer informação sobre a “forma e tamanho” dos dados Associar atributos às variáveis Representações textuais Dois tipos de metadado DDS (Dataset Descriptor Structure) DAS (Dataset Attribute Structure) DDS (Dataset Descriptor Structure) Informações sintáticas Dataset { Structure { Float64 lat; Float64 lon; } location; Int32 time; Sequence { Float64 depth; Float64 temperature; } cast } station; Tipos de dados Relação entre os dados Independente da área de estudo DAS (Dataset Attribute Structure) Attributes { station { location { lat { String units “degrees north” Float64 actual_range 0, 30.0; } lon { String units “degrees east” Informações semânticas Associa atributos às variáveis Float64 actual_range -50.0, -48.0; } Dá significado aos valores } time { String format “Second since 1/1/1970”; } cast { depth { String units “meters”; } temperature { String units “degrees C”; } Pode conter atributos globais Dependente da área de estudo } } Exemplos http://dodsdev.gso.uri.edu/dods-3.4/nphdods/data/nc/coads_climatology.nc.das http://dodsdev.gso.uri.edu/dods-3.4/nphdods/data/nc/coads_climatology.nc.dds http://dodsdev.gso.uri.edu/dods-3.4/nphdods/data/nc/coads_climatology.nc.html Como servir seu dado? Como construir um novo Cliente/Servidor OPeNDAP? Usar a biblioteca (API) OPeNDAP Frameworks (C++ e JAVA) Open source Da parte do servidor implementar os serviços DAS, DDS e DODS Servidor e Cliente mapear as variáveis para serem representadas usando os tipos disponíveis pelo protocolo DAP a API inclui software que gera automaticamente os outros serviços a partir destes implementados implementar restrições que clientes podem fazer através de URLs Da parte do cliente traduzir os dados intermediários usando DAS e DDS gerenciar abertura e encerramento de conexões Catálogo Se restringe a uma lista estática de URLs de arquivos http://www.opendap.org/data/datasets.cgi?xmlfilename =datasets.xml&exfunction=none Um arquivo pode ser registrado através do link www.opendap.org/data/addtolist.html as informações necessárias são: Nome do arquivo URL Servidor E-mail Potenciais aplicações no SegHidro Aproveitamento de resultados de previsões atmosféricas Um resultado pode conter outro resultado Aproveitar rodadas de produção em simulações ad hoc Disponibilizar arquivos GRADS, PMH e PHR para análise em outras ferramentas (Matlab, Excel, etc) Utilizar dados observados produzidos por outros centros para comparação Considerações Finais OPeNDAP e SegHidro Podem contribuir para uma ciência melhor Facilitando o compartilhamento de conhecimento entre parceiros Limitações Documentação desatualizada