Modelo de Coleta e Processamento de Dados de Forma Assíncrona Jônnison Lima Ferreira1, Aislan Rafael Rodrigues de Sousa1 , Artur Luiz Torres de Oliveira1 1Instituto Federal de Educação Ciência e Tecnologia do Piauí Campus Picos(IFPI Picos) jonnison_1234[arroba]hotmail.com, aislanmaster[arroba]gmail.com, tuca_jampa[arroba]hotmail.com
Abstract. This article presents a model for construction of applications that require the collection and processing of data in asynchronous. Describes the technologies, architecture and was designed as the skeleton of code to support applications. Resumo. Este artigo apresenta um modelo para construção de aplicações que necessitem de coleta e processamento de dados de forma assíncrona. Descreve as tecnologias utilizadas, arquitetura e como foi idealizado o esqueleto de código para dar suporte às aplicações.
1. Introdução O modelo apresentado é uma proposta para solucionar problemas que necessitam coletar informações para serem processadas em uma aplicação servidora. A seguinte situação serve como exemplo para o uso do modelo apresentado: Uma empresa de distribuição de bebidas tem uma equipe de vendedores, estes vão até os clientes coletando informações sobre os pedidos: produtos e quantidade. Ao final do expediente estes descarregam essas informações para ser feito a logística de entrega. Situação na qual os vendedores devem ter um dispositivo portátil com uma aplicação cliente, para descarregar os dados no servidor onde vai ser feito todo o processamento de estoque e logística da aplicação. O artigo tem o propósito de analisar as tecnologias utilizadas na coleta, envio e processamento de dados.
2. Tecnologias adotadas Para a construção do modelo utilizouse de tecnologias tanto na aplicação servidora, cliente e no estabelecimento da comunicação entre as duas aplicações.
2.1 BDOO(banco de dados orientado ao objeto) É um banco de dados que utiliza objetos para persistir dados e faz uso das características do paradigma de orientação a objeto. Dois fatores importantes para a criação deste novo modelo foi a dificuldade existente para trabalhar com dados complexos em um banco de dados relacional, e o emprego em larga escala de linguagens de programação orientada a objetos para a manipulação dos dados, na forma tradicional na aplicação é necessário a tradução entre a representação dos dados como objetos e as tuplas do banco de dados relacional. Os BDOOs armazenam objetos persistentes, ou seja, mesmo após o término do programa, os dados podem ser recuperados e compartilhados com outras aplicações. Cada Objeto possui um identificador (OID) gerado pelo sistema. Com isso foi criado várias possibilidades de uso. Ganharam nicho nas áreas de bancos de dados espaciais, telecomunicações e áreas cientificas (como física de alta energia e biologia molecular). Inicialmente houve pouco impacto nas aplicações comerciais, embora sejam utilizados em algumas áreas especializadas em serviços financeiros. A partir de 2004 esses bancos tiveram uma nova fase de crescimento, com o surgimento de bancos de dados livres e vários recursos de fácil uso, por serem totalmente escritos em linguagens de programação orientada a objetos (como Java, C++, C#). O acesso aos bancos de dados pode ser rápido, porque geralmente não são necessárias as junções (como numa implementação de um banco de dados relacional), isto é, o objetos é obtido diretamente sem busca, seguindo os ponteiros, outra característica importante é o fato de que a linguagem de programação e banco têm os mesmos tipos de dados. O BDOO escolhido para o modelo foi o DB4O. Possui código aberto e uma comunidade bastante ativa, compatível com a linguagem de programação Java. Próprio para uso em aplicações feitas para dispositivos portáteis.
2.2 Hibernate O hibernate é uma ferramenta de mapeamento objetorelacional para a linguagem de programação Java. Ele tem como objetivo diminuir a complexidade da relação entre um programa Java que é uma linguagem orientada a objetos com um banco de dados do modelo relacional (maioria dos SGBDs). Ele tem como principal característica a transformação das classes Java em tabelas de dados (convertendo os tipos Java em tipos SQL). O hibernate gera todas as SQL, poupando o desenvolvedor do trabalho de conversão de dados, fazendo com que o programa fique portável para qualquer SGBD relacional de linguagem SQL, o único problema causado por ele é um pequeno aumento do tempo de execução, para
compensar isso a ferramenta poupa o desenvolvedor do trabalho da escrita de muito código de acessos ao banco e de SQL, acelerando o desenvolvimento. Mas esse framework pode não ser a melhor opção para todas as aplicações, como em aplicações que fazem grande uso de stored procedures, gatilho ou que fazem grande implementação da lógica da aplicação no próprio banco, tendo um modelo “pobre” ele não irá se beneficiar do uso do hibernate. Sendo indicado para sistemas com um modelo “rico”, onde grande parte da lógica de negócios fica na aplicação Java. O hibernate usa um dialeto SQL feito pra ele, o HQL(hibernate query language), que é uma poderosa linguagem de consulta, muito parecida com a própria SQL, mas é totalmente orientada ao objeto, com isso tem todos os benefícios desse tipo de linguagem, como herança, polimorfismo e encapsulamento.
2.3 TCP Segundo Battisti (2006) TCP é um protocolo de transporte que garante que os dados sejam entregues de forma confiável, sem corromper ou alterarlos, é sem duvidas um dos mais importantes protocolos da família TCP/IP. Este é um protocolo orientado a conexão (onde são passadas informações de logon) antes de começar a troca de dados. As principais características do TCP são a garantia de entrega de pacotes IP, ele executa a segmentação e reagrupamento de grandes blocos de dados enviados, verifica a integridade dos dados transmitidos, garantindo que os dados não sejam alterados ou corrompidos durante o transporte enviando, mensagens positivas ou negativas, dependendo do recebimento bemsucedido ou não. Baseandose na conexão pontoaponto entre dois hosts de redes. Ao receber os dados do programa ele os processa como um fluxo de bytes, esses segmentos são conhecidos como “pacotes”. Antes de se iniciar a troca de dados, primeiro é estabelecida a conexão sessão entre si, essa seção é iniciada através de um processo conhecido como treeway handshake, processo no qual ocorre a sincronização do numero de sequencia e oferece as informações de controle necessárias para o estabelecimento da conexão virtual entre os hosts. O protocolo de transmissão TCP foi escolhido justamente por garantir a entrega dos dados, já que ele só finaliza a conexão após a transferência correta de todos os dados, já o protocolo UDP mesmo sendo um pouco mais rápido não garante a chegada dos dados não assim indicada a esse tipo de aplicação.
2.4 Soquete Segundo Colouris (2007) , soquete é uma abstração que serve como ponto de texto para a comunicação entre processos. Para haver comunicação deve haver dois soquetes onde vão ser transferidas mensagens. Para que a operação seja realizada com sucesso, o soquete deve estar vinculado a uma porta local e a um dos endereços IP do computador em que é executado a aplicação cliente ou servidora.
3. Arquitetura do Modelo
Figura 1. Modelo de Arquitetura
O servidor é responsável por receber os dados coletados pelos clientes e persistirlos em uma base de dados através de uma conexão estabelecida quando o cliente achar necessário.
3.1 Servidor
Figura 2. Modelo de Arquitetura da camada do Servidor
Na aplicação servidora os dados são persistidos em um banco de dados relacional. Ex.: Mysql e SQL Server. Os bancos de dados relacionais são largamente utilizados nas empresas. Assim não há necessidade de grandes alterações em base de dados legadas, e também se trata de um modelo bastante testado e eficiente. O hibernate é utilizado como uma camada para recuperar e persistir objetos em uma base de dados relacional. O paradigma de Orientação a Objeto facilita no processo de construção da aplicação servidora. A comunicação entre cliente e servidor é feita
através de trocas de mensagens, onde as quais transportam apenas objetos e as informações necessárias para chegar ao destino.
3.2 Camada de comunicação
Figura 3. Modelo de Arquitetura da camada de comunicação
Para esta camada é empregado o uso de comunicação por fluxo TCP. Foi escolhido este protocolo pelo fato de ocultar, ou seja, trata de maneira automática: •
Tamanho das mensagens;
•
Mensagens perdidas;
•
Controle de fluxo;
•
Duplicação e ordenamento de mensagens;
•
Destinos de mensagens.
A linguagem de programação escolhida para rodar tanto na aplicação servidora e na aplicação cliente é o Java, por causa dessa escolha os objetos têm que ser serializados ao serem transportados. De acordo com Coulouris (2007), essa é uma atividade para simplificar um objeto, ou um conjunto de objetos conectados, em uma forma seqüencial conveniente para ser armazenada em disco ou transmitida em uma mensagem.
3.3 Cliente
Figura 4. Modelo de Arquitetura da aplicação cliente
Na aplicação cliente é utilizado o banco de dados orientado a objeto DB4O, onde são persistidos os objetos até que eles sejam transferidos a aplicação servidora por meio da camada de comunicação.
DB4O é um banco próprio para aplicações portáteis e nativo para o uso de objetos e tem suporte nativo para Java. A aplicação cliente deve sempre entra em contato com a aplicação servidora sempre que for necessário descarregar os objetos.
4. Conclusão Neste artigo foi apresentado um modelo para construção de aplicações que necessitem de coleta e processamento de forma assíncrona. A opção pela utilização das tecnologias descritas mostrouse acertada, por facilitar a implementação e manutenção de aplicações do tipo. Na aplicação servidor o uso de um banco de dados relacional junto a aplicação Java, mostrouse acertada pelo fato do grande uso desse tipo de banco, facilitando assim a construção ou aperfeiçoamento de um sistema já existente.
Na aplicação cliente o uso do DB4O junto à aplicação mostrouse muito importante, não deixando o cliente totalmente dependente do servidor, alem de facilitar a manutenção do sistema, alem de possuir um melhor desempenho. Referências Battisti, Julio. (2006) tutorial TCP/IP parte 11 – TCP, UDP e Portas de Comunicação disponível em acessado em 18/05/09. Colouris, George. (2007) Sistemas distribuídos: conceitos e projeto.4 .ed. Porto Alegre: Bookman. Linhares, Mauricio Introdução ao hibernate 3 disponível em acessado em 17/05/09. Monteiro, Eduardo(2006) db4o : Banco OO disponível em acessado em 19/05/09 Informações db4o disponível em acessado em 19/05/09.