Skip to content

Latest commit

 

History

History
819 lines (605 loc) · 25.3 KB

Mapa-de-decisões-tecnológicas.md

File metadata and controls

819 lines (605 loc) · 25.3 KB
published permalink layout filename title desc
true
/Mapa-de-decisões-tecnológicas/
slate
Mapa-de-decisões-tecnológicas.md
Mapa de decisões - Kit de Dados Abertos
Neste mapa são apresentadas diversas formas de publicação de dados abertos, dando ao gestor parâmetros de apoio à decisão.

Mapa de decisões tecnológicas

Durante o processo de abertura de dados, será necessário definir a arquitetura tecnológica da solução de abertura de dados. Não há um modelo único aplicável a todas as situações, mas sim uma gama de possibilidades que devem ser avaliadas à luz da configuração de arquitetura na origem onde os dados a serem abertos estão armazenados, no tempo e recursos disponíveis para o projeto de abertura e do resultado final desejado.

A tabela abaixo mostra algumas possíveis soluções para publicar dados abertos, ordenadas por complexidade e prazo de implementação.

<tr>

  <th>
    Solu&ccedil;&atilde;o
  </th>

  <th>
    Pr&eacute;-requisitos
  </th>

  <th>
    Prazo
  </th>

</tr>

<tr>

  <td rowspan="2">
    <a href="#publicar-dump-da-base-de-dados">Publicar dump da base de dados</a>
  </td>

  <td class="celula-meio">
    Acesso &agrave; base de dados
  </td>

  <td rowspan="2">
    Curto<br />
  </td>

</tr>

<tr>
  <td>
    Servidor web para arquivos
  </td>

</tr>

<tr>

  <td rowspan="2">
    <a href="#publicar-dados-em-arquivos-csv">Publicar dados em arquivos CSV</a>
  </td>

  <td class="celula-meio">
    Mecanismo de ETL (caso esteja em banco relacional)
  </td>

  <td rowspan="2">
    Curto<br />
  </td>

</tr>

<tr>
  <td>
    Servidor web para arquivos
  </td>

</tr>

<tr>

  <td rowspan="3">
    <a href="#publicar-dados-em-arquivos-json--xml">Publicar dados em arquivos JSON / XML</a>
  </td>

  <td class="celula-meio">
    Mecanismo de ETL (caso esteja em banco relacional)
  </td>

  <td rowspan="3">
    M&eacute;dio
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Servi&ccedil;o de desenvolvimento
  </td>

</tr>

<tr>
  <td>
    Servidor web para arquivos
  </td>

</tr>

<tr>

  <td rowspan="2">
    <a href="#desenvolver-mdulo-de-dados-abertos-em-sistema-existente">Desenvolver m&oacute;dulo de dados abertos em sistema existente</a>
  </td>

  <td class="celula-meio">
    Servi&ccedil;o de desenvolvimento
  </td>

  <td rowspan="2">
    Longo
  </td>

</tr>

<tr>
  <td>
    Servidor web para deploy da nova solu&ccedil;&atilde;o
  </td>

</tr>

<tr>

  <td rowspan="3">
    <a href="#desenvolver-api-restful-de-dados-abertos-desacoplada-da-soluo">Desenvolver API RESTful de dados abertos desacoplada da
    solu&ccedil;&atilde;o</a>
  </td>

  <td class="celula-meio">
    Mecanismo de ETL
  </td>

  <td rowspan="3">
    Longo
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Servi&ccedil;o de desenvolvimento
  </td>

</tr>

<tr>
  <td>
    Servidor web para deploy da nova solu&ccedil;&atilde;o
  </td>

</tr>

<tr>

  <td rowspan="3">
    <a href="#novo-sistema-com-a-gesto-de-dados-incorporados-em-sua-arquitetura">Novo Sistema, com a gest&atilde;o de dados incorporados em sua arquitetura</a>
  </td>

  <td class="celula-meio">
    Mecanismo de ETL
  </td>

  <td rowspan="3">
    Longo
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Servi&ccedil;o de desenvolvimento
  </td>

</tr>

<tr>
  <td>
    Servidor web para deploy da nova solu&ccedil;&atilde;o
  </td>

</tr>

<tr>

  <td rowspan="3">
    <a href="#publicar-dados-em-arquivos-rdf">Publicar dados em arquivos RDF</a>
  </td>

  <td class="celula-meio">
    Ontologia da &aacute;rea do conhecimento do sistema
  </td>

  <td rowspan="3">
    Longo
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Mecanismo de ETL
  </td>

</tr>

<tr>
  <td>
    Servidor web para arquivos
  </td>

</tr>

<tr>

  <td rowspan="3">
    <a href="#disponibilizar-dados-por-endpoint-sparql">Disponibilizar dados por Endpoint SPARQL</a>
  </td>

  <td class="celula-meio">
    Ontologia da &aacute;rea do conhecimento do sistema
  </td>

  <td rowspan="3">
    Mais Longo
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Mecanismo de ETL
  </td>

</tr>

<tr>
  <td>
    Banco de dados de triplas
  </td>

</tr>

<tr>

  <td rowspan="5">
    <a href="#publicar-dados-em-api-de-dados-ligados-linked-data">Publicar dados em API de dados ligados (Linked Data)</a>
  </td>

  <td class="celula-meio">
    Ontologia da &aacute;rea do conhecimento do sistema
  </td>

  <td rowspan="5">
    Mais Longo
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Banco de dados de triplas
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Servi&ccedil;o de desenvolvimento
  </td>

</tr>

<tr>
  <td class="celula-meio">
    Mecanismo de ETL
  </td>

</tr>

<tr>
  <td>
    Servidor web para deploy da nova solu&ccedil;&atilde;o
  </td>

</tr>

Exemplos de cenários da arquitetura da solução para abertura de dados

Publicar dump da base de dados

Consiste na exportação de bases de dados, após tomar o devido cuidado em remover informações sensíveis, como nomes de usuários, senhas e informações pessoais.

É necessário estabelecer o processo de exportação de maneira automática, para manter os dados atualiados, bem como hospedar o arquivo resultante em um servidor de arquivos de onde o mesmo possa ser acessado através da internet por meio de uma URL fixa.

Para mais informações, consulte "Dump SQL" no Glossário de Formatos.

Vantagens:

  • simplicidade e rapidez de implementação
  • possibilita o uso para análises de dados que dependam do acesso completo aos dados
  • validação dos tipos de campos, associações entre tabelas

Desvantagens:

  • formato de arquivo e compatibilidade dependem do Sistema Gerenciador de Banco de Dados - SGBD - utilizado
  • os tamanhos grandes dos arquivos podem ser um fator dificultador a determinadas necessidades de uso dos dados

Publicar dados em arquivos CSV

A forma mais simples de disponibilizar dados abertos é por meio de uma planilha CSV. Para mais informações sobre o formato, consulte "CSV" no Glossário de Formatos.

O fluxo de publicação depende da origem dos dados. Nos casos em que eles estão localizados em um banco de dados, um processo de ETL deve ser estabelecido para ler os dados na orgiem, fazer as transformações necessárias (tais como remoção de informações sensíveis e melhorias na legibilidade e estrutura das tabelas), gerar e gravar o arquivo CSV.

Se a origem dos dados estiver em uma planilha de suíte de escritório (ex.: Microsoft Excel ou LibreOffice Calc), pode ser feita uma exportação manual para o foremato CSV. Entretanto, não é aconselhável, uma vez que a atualização dos dados terá de ser feita também manualmente.

Vantagens:

  • simplicidade e rapidez de implementação
  • facilidade de uso: pode ser aberto em diversas ferramentas amplamente conhecidas, por exemplo, em editores de planilhas, desde que o tamanho das tabelas seja compatível

Desvantagens:

  • não possibilita a validação dos tipos de campos
  • formato não padronizado

Glossário de Formatos

Formatos básicos

Dump SQL

De forma genérica, um "dump" é uma descarga de todo o conteúdo de uma base de dados, estruturada de uma forma que possa ser novamente carregada em um sistema gerenciador de banco de dados (SGBD) idêntico ou compatível, produzindo-se por esse processo uma base de dados que é uma cópia fidedigna da original.

Há vários tipos de dump. Os formatos textuais podem ser inspecionados em um editor de textos e geralmente usam a sintaxe SQL no dialeto particular do SGBD utilizado. Há também os formatos binários que produzem arquivos menores que os textuais, mas a compatibilidade com versões diferentes do SGBD tende a ser ainda mais restritiva que a compatibilidade dos formatos textuais.

Os SGBD em geral possuem processos definidos e documentação objetiva de como se gerar e carregar um dump.

++++++:

  • Forma menos trabalhosa de se publicar os dados
  • Curto prazo para produção
  • Preserva a estrutura dos dados como o são em produção

------:

  • Provável necessidade de remoção prévia de dados pessoais
  • Necessidade de realizar carga dos dados em SGBD para acessá-los
  • Não há padronização entre formatos de dumps de SGBSs diferentes: em geral necessita-se do mesmo software e versão que gerou o dump
CSV

Pode significar Comma-Separated Values (valores separados por vírgula), ou ainda, Character-Separated Values (valores separados por caractere). É um formato para armazenamento de dados tabulares em texto. A codificação é muito simples: cada linha do arquivo representa uma linha na tabela, e as colunas são separadas por vírgula. Campos que podem conter vírgula devem ser delimitados por aspas. CSV é recomendado para representação de estrutura de dados mais simples, de natureza tabular, onde não existem subpropriedades ou listas, gerando um arquivo menor e mais leve para processamento. Arquivos CSV são processáveis diretamente por editores de planilhas, como o OpenOffice e o MS Excel. (do Glossário)

++++++:

  • Simplicidade. Registros em estrutura tabular.
  • Facilidade de geração (qualquer banco de dados exporta)
  • Facilidade de consumo (qualquer editor de planilhas manipula)
  • Sucinto (os arquivos gerados são menores)

------:

  • Falta de padronização do formato
  • Não suporta tipagem de valores
  • Dificuldade em se representar ligações entre os dados
Exemplo
Quantidade do item,Valor estimado do item,Decreto 7174,Margem preferencial,Unidade de fornecimento,Situação do item,Valor melhor lance
6,"R$ 1,590.33",Não,Não,SV,encerrado,R$ 360.00
8,"R$ 1,480.67",Não,Não,SV,encerrado,R$ 314.98
6,"R$ 1,700.00",Não,Não,SV,encerrado,R$ 989.00

Fonte: http://compras.dados.gov.br/pregoes/doc/pregao/1600850000132014/itens.csv

JSON

É um acrônimo para JavaScript Object Notation. É um padrão aberto de estruturação de dados baseado em texto e legível por humano. A especificação é a RFC 7159. JSON ganhou maior utilização com a utilização de carga dinâmica de conteúdo em páginas web com Javascript (técnica denominada "Ajax"). A serialização em JSON é muito simples e resulta em uma estrutura pouco verbosa o que se mostra uma ótima alternativa para o XML. JSON possibilita serialização de estrutura de objetos complexos, como listas e subpropriedades. JSON está se tornando o padrão mais utilizado para integração de dados entre repositórios e frameworks, também está se tornando o padrão nativo de armazenamento em alguns bancos de dados modernos. (do Glossário)

++++++:

  • Facilidade para representar hierarquias
  • Suporta tipagem de valores
  • Facilidade de consumo (qualquer linguagem de programação lê com facilidade)
  • Utilizável diretamente em navegadores (leitura por javascript)
  • Formato padronizado (RFC 7159 do IETF, ECMA-404)
  • Possibilidade de definir esquema de validação
  • Mais leve para processar que o XML

------:

Exemplo
{

    "uasg": ​160085,
    "modalidade": ​5,
    "numero_aviso": ​132014,
    "identificador": "16008505000132014",
    "tipo_pregao": "Eletrônico",
    "situacao_aviso": "Publicado",
    "numero_processo": "64535.029433/2014",
    "tipo_recurso": "Nacional",
    "nome_responsavel": "ELIAS ANTONIO MARCOS CARNEIRO DE ALBUQUERQUE",
    "funcao_responsavel": "Ordenador de Despesas",
    "data_entrega_edital": "2015-04-08T09:00:00",
    "endereco_entrega_edital": "Qg Ex Bl.a 1. Pavimento  - Setor Militar Urbano - Smu/DF",
    "data_abertura_proposta": "2015-04-22T09:00:00",
    "data_entrega_proposta": "2015-04-08T09:00:00"
}

Fonte: http://compras.dados.gov.br/licitacoes/doc/licitacao/16008505000132014.json

XML

XML significa Extensible Markup Language, e é uma sintaxe para codificar documentos em um formato legível por máquina. É baseado em texto e tem como alguns de seus objetivos a facilidade de uso e legibilidade. XML é largamente utilizado como formato de troca de dados nos clássicos Web Services SOAP. Apesar da larga utilização, é cada vez menos encorajada a utilização desse formato para integração de aplicações. Em substituição, recomenda-se utilizar JSON, por economizar banda e ser de processamento mais leve. (do Glossário).

++++++:

  • Facilidade para representar hierarquias
  • Suporta tipagem de valores
  • Amplo suporte de ferramentas
  • Formato padronizado (W3C)
  • Possilidade de definir esquema de validação

------:

  • Prolixo (os arquivos gerados são maiores)
  • Maior gasto de processamento para geração e consumo em relação ao JSON.
Exemplo
<resource>
    <_links>
        <link href="/fornecedores/id/linha_fornecimento/308" rel="self" title="Linha de Fornecimento 308: EQUIPAMENTOS PARA PURIFICAÇÃO DE ÁGUA"/>
        <link href="/fornecedores/v1/fornecedores?id_linha_fornecimento=308" rel="fornecedores" title="Fornecedores associados a esta Linha de Fornecimento"/>
        <link href="/materiais/id/material/4610" rel="material" title="Material 4610: EQUIPAMENTOS PARA PURIFICAÇÃO DE ÁGUA"/>
    </_links>
    <id>308</id>
    <codigo_material>4610</codigo_material>
    <tipo>Material</tipo>
    <ativo>true</ativo>
</resource>

Fonte: http://compras.dados.gov.br/fornecedores/doc/linha_fornecimento/308.xml

Formatos geo

Alguns formatos de arquivo servem especificamente para representar dados geográficos. A seguir, são relacionados os principais padrões abertos para dados geo, juntamente com as vantagens e desvantagens de cada um.

GeoJSON

É um formato aberto baseado em JSON para representar informações geográficas. Possibilita representar formas como pontos, linhas e polígonos com coordenadas geográficas, juntamente com seus atributos não-espaciais. O GeoJSON não é mantido por um órgão formal de padronização, como alguns outros formatos para informações geográficas. Em vez disso, ele é especificado por um grupo de trabalho de desenvolvedores. (do Glossário).

++++++:

  • Todos os benefícios do JSON
  • Bom suporte de ferramentas
  • Leve para processamento

------:

  • Falta padronização (embora a especificação seja aberta)
Exemplo
{
   "type":"FeatureCollection",
   "features":[
      {
         "type":"Feature",
         "id":"ubs.fid--4ce37384_151a5912be6_34da",
         "geometry":{
            "type":"MultiPoint",
            "coordinates":[
               [
                  -43.023,
                  -6.767
               ]
            ]
         },
         "geometry_name":"geometria",
         "properties":{
            "codigo":"9724",
            "empreendimento":"Floriano - PI - UBS I",
            "subeixo":"Comunidade Cidadã",
            "tipo":"UBS",
            "orgao_responsavel":"Ministério da Saúde",
            "executor":"Municí­pio",
            "unidade_federativa":"PI",
            "municipio":"FLORIANO",
            "investimento_previsto":"--",
            "observacao":"",
            "estagio":"Concluí­do",
            "data_de_referencia":"31 de Outubro de 2014",
            "count":0
         }
      },
      {
         "type":"Feature",
         "id":"ubs.fid--4ce37384_151a5912be6_34db",
         "geometry":{
            "type":"MultiPoint",
            "coordinates":[
               [
                  -40.616,
                  -7.088
               ]
            ]
         },
         "geometry_name":"geometria",
         "properties":{
            "codigo":"9725",
            "empreendimento":"Fronteiras - PI - UBS I",
            "subeixo":"Comunidade Cidadã",
            "tipo":"UBS",
            "orgao_responsavel":"Ministério da Saúde",
            "executor":"Municí­pio",
            "unidade_federativa":"PI",
            "municipio":"FRONTEIRAS",
            "investimento_previsto":"--",
            "observacao":"",
            "estagio":"Em obras",
            "data_de_referencia":"31 de Outubro de 2014",
            "count":0
         }
      }
   ]
}

Fonte: http://189.9.137.169:8080/geoserver/pac/wms?service=WFS&version=1.0.0&request=GetFeature&typeName=pac:ubs&outputFormat=JSON

KML

Acrônimo para Keyhole Markup Language. É um formato baseado em XML, desenvolvido originalmente pelo Google e depois padronizado pelo Open Geospatial Consortium. Pode representar informações geográficas, tais como marcadores de local, imagens, polígonos, modelos tridimensionais ou descrições textuais, usando coordenadas de latitude, longitude e elevação conforme o sistema WGS84. (do Glossário).

++++++:

  • Formato padronizado
  • Bom suporte de ferramentas

------:

  • Mais pesado para processamento que o GeoJSON
Shapefile ESRI

Formato aberto para dados geoespaciais, desenvolvido pela empresa Esri, que produz soluções de software para sistemas de informações geográficas (GIS). Apesar de ser mantido por uma empresa, a sua especificação é aberta e é implementada por praticamente todas as ferramentas de GIS. (do Glossário).

++++++:

  • Amplo suporte de ferramentas

------:

  • Falta padronização (embora a especificação seja aberta)
  • Necessita múltiplos arquivos para um único mapa
  • Possui limitações no armazenamento de atributos

Formatos baseados em RDF

A família de formatos RDF baseia-se em um metamodelo de grafos para indicar os relacionamentos entre os nós, onde cada nó pode ser qualquer coisa sobre a qual queira se afirmar algo. Esse metamodelo possibilita estabelecer relações semânticas entre os dados, ao descrevê-los conforme um modelo (vocabulário ou ontologia) preestabelecido para aquele domínio da informação.

Dados conforme esse metamodelo de grafos podem ser armazenados em bancos de dados especializados, chamados triple stores, ou bancos de triplas, numa referência à forma de descrever o grafo listando cada tripla nó-aresta-nó, representando sujeito, predicado e objeto.

Ao gravar dados RDF em um arquivo, no entanto, é necessário escolher uma entre as múltiplas sintaxes possíveis para representar o grafo como uma sequência de caracteres: XML, N-Triples, Turtle, JSON-LD, RDFa, etc. (do Glossário).

A seguir, algumas vantagens e desvantagens de se usar RDF em geral para a publicação de dados. Em seguida, apresentam-se uma breve descrição e as vantagens e desvantagens de cada um dos formatos de arquivo (sintaxes) específicos para dados em RDF.

++++++:

  • possibilidade de utilizar semântica para descrever os dados
  • facilita o cruzamento e ligação de dados entre fontes diversas
  • potencializa a reutilização de ferramentas especializadas em dados de determinado domínio da informação
  • facilita a descoberta de conhecimento ao possibilitar queries mais complexas usando dados de diversos domínios

------:

  • necessita desenvolver ontologia que descreve os conceitos relacionados aos dados
  • maior complexidade do metamodelo (grafos)
  • maior heterogeneidade nas estrutura dos dados
Turtle

Turtle significa "Terse RDF Triple Language", ou linguagem sucinta de triplas RDF. Foi criada como uma sintaxe simplificada para leitura tanto por humanos quanto por máquinas e padronizada em 2014. A indentação e o uso de prefixos são elementos que facilitam a leitura, assim como o agrupamento de triplas que possuem o mesmo sujeito ou que possuem o mesmo sujeito e mesmo predicado.

++++++:

  • Sucinto (os arquivos gerados são menores)
  • Simplicidade de leitura por humanos
  • Formato padronizado
  • Bom suporte de ferramentas
  • Leve para processamento

------:

Exemplo
<http://orcamento.dados.gov.br/id/2015/Acao/0011>
      a       loa:OperacaoEspecial , loa:Acao ;
      rdfs:label "Contribuição ao Fundo Global para o Meio Ambiente - GEF (MP)" ;
      loa:codigo "0011" .

<http://orcamento.dados.gov.br/id/2015/ItemDespesa/322014>
      loa:temAcao <http://orcamento.dados.gov.br/id/2015/Acao/0005> .

<http://orcamento.dados.gov.br/id/2015/ItemDespesa/357389>
      loa:temAcao <http://orcamento.dados.gov.br/id/2015/Acao/0005> .

Fonte: http://orcamento.dados.gov.br/doc/2015/Acao.ttl

RDF/XML

A sintaxe original, quando o padrão RDF foi inicialmente estabelecido, foi a baseada em XML. Por ser a primeira sintaxe para RDF, o seu suporte em ferramentas é excelente. Por outro lado, pela verbosidade do XML e pela sua estrutura hierárquica, os arquivos gerados são geralmente complexos e de difícil leitura.

++++++:

  • Formato padronizado
  • Amplo suporte de ferramentas

------:

  • Dificuldade de leitura por humanos
  • Utiliza estrutura hierárquica para representar um modelo de grafos
  • Prolixo (os arquivos gerados são maiores)
  • Mais pesado para processamento
JSON-LD

É um formato baseado em JSON para Linked Data, também padronizado em 2014. Traz todas as vantagens do formato JSON. A estrutura de mapeamento para IRIs pode opcionalmente ser separada em um documento JSON de contexto, o que deixa o JSON principal, onde estão os dados, essencialmente com a mesma estrutura que um documento JSON comum.

++++++:

  • Formato padronizado
  • Leve para processamento
  • Utilizável diretamente em navegadores (leitura por javascript)

------:

  • Menor suporte de ferramentas por ser um padrão mais recente