Sistema de gerenciamento de dados climatológicos

Desenvolvimento de um sistema de gerenciamento de dados climatológicos cujo objetivo era prover funcionalidades de processamento, armazenamento, consulta e análise de dados provenientes de diversas fontes de medição direta ou indireta de dados coletados por sensores remotos, bem como, prover funcionalidades avançadas de clientes que necessitam de cálculos a partir de dados de medições ou estimativas ambientais, tais como vazões operativas em usinas hidroelétricas, capacidade de carga em linhas de transmissão de energia, produtividade de culturas, entre outros.

Um sistema completo e alto-contido que utiliza tecnologia de ponta a fim de entregar grande volume de informação no menor tempo possível. Para cumprir com este objetivo, o sistema foi completamente planejado e estruturado desde a ingestão de dados, passando pelo armazenamento de dados e metadados, processamento de processos complementares (sumário, climatologia, cálculos de variáveis dependentes, controle de qualidade), até uma interface WEB para visualização e análise das informações. O Sistema possui ainda uma ampla API RESTful capaz de dispor toda sua informação para integração em outros sistemas.

Na ingestão de dados é utilizado o conceito de fila de mensagens que através do RabbitMQ possibilita lidar com um tráfego de mensagens de forma rápida e confiável, este conceito garante a assincronicidade entre aplicações, diminui o acoplamento entre aplicações, distribui alertas/notificações e controlar a fila de trabalhos em background.

Na camada de armazenamento de dados foi utilizado um cluster do banco de dados não relacional Cassandra, capaz de atender simultaneamente uma quantidade acentuada de usuários online cuja principais vantagens é a alta escalabilidade e disponibilidade. Já para armazenar os metadados, que exigem um certo relacionamento entre as informações, foi utilizado o banco de dados PostgreSQL com PostGIS.

O processamento de dados é realizado em cima de um cluster Apache Spark que estende o modelo de programação MapReduce popularizado pelo Apache Hadoop, seu objetivo é o processamento de grandes conjuntos de dados de forma paralela e distribuída. Algumas destas informações são armazenadas no banco de dados Cassandra através de um pre-processamento enquanto que outras são executadas em tempo real e disponibilizada para a camada WEB através de uma API RESTful desenvolvida em linguagem Scala.

A camada WEB e sua API de metadados foi inteiramente desenvolvida em Python através do framework Django que tem como finalidade desenvolver e criar páginas com maior agilidade, velocidade, elegância e menor uso de códigos.

O sistema possui ainda uma interface com servidores de mapas que através dos padrões da OGC (Open Geospatial Consortium) é capaz de integrar a seus produtos de mapas camadas provindas de ferramentas GIS como o Thredds, Geoserver e MapServer.

Principais tecnologias e ferramentas:

PYTHON, HTML5, CSS3, JavaScript, Ajax, Django, AdminLTE, Vue.js, Bootstrap, Highcharts, Openlayers, D3.js, JQuery, Servidores de mapas e dados (Geoserver e Thredds), API Restful, SPARK (PYSPARK), Bibliotecas para data-science em python (PANDAS, NUMPY, SCYPY, MATPLOTLIB ANACONDA), Uso de Swagger em conjunto com a API, interfaces para consultas ao PI System da OSI Soft, ZooKeeper, Jupyter, PEP8 Documentação com Sphinx, Docker (utilização de contêineres), Jenkins, PostgreSQL, Cassandra, MongoDB.

Veja também

Painel de dados e informações de compras públicas

O Painel de Preços disponibiliza de forma clara e de fácil leitura, dados e informações de compras públicas homologadas no Sistema de Compras do Governo Federal – COMPRASNET.
Tem como objetivo ...

Veja também