Você está na página 1de 6

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

1­Instituto 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 utilizou­se 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 objeto­relacional 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 alterar­los, é 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 bem­sucedido ou não.
Baseando­se na conexão ponto­a­ponto 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  tree­way  
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 persistir­los 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   mostrou­se   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, mostrou­se 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 mostrou­se 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   <http://www.juliobattisti.com.br/artigos/windows/tcpip_p11.asp> 
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 
<http://www.guj.com.br/content/articles/hibernate/intruducao_hibernate3_guj.pdf> 
acessado em 17/05/09.
Monteiro,   Eduardo(2006)   db4o   :   Banco   OO   disponível   em 
<http://imasters.uol.com.br/artigo/5056/bancodedados/db4o_banco_oo> acessado em 
19/05/09
Informações   db4o   disponível   em  <http://www.db4o.com/portugues/>   acessado   em 
19/05/09.