Projecto e Implementação de um Sistema de Data Webhousing

Transcrição

Projecto e Implementação de um Sistema de Data Webhousing
Projecto e Implementação de um Sistema de Data
Webhousing
Nélio Guimarães, Alice Marques
{pg11036, pg10914}@alunos.uminho.pt
Resumo. Com a globalização e a competição entre organizações, as formas
usuais de negócio estão a mudar. O que era normal no passado está agora
ultrapassado devido ao aparecimento da internet. Esta recente ferramenta de
negócio está a diminuir o contacto directo com os clientes. Pela Internet (sites
das organizações) os utilizadores podem navegar livremente enquanto
observam o que o site lhes oferece. Assim, é muito importante para as empresas
compreenderem padrões de navegação, tempos de sessão, entre outras
características dos seus clientes. Este trabalho de pesquisa, pretende
implementar um sistema de data webhousing desenhado para suportar a
informação sobre o acesso a um determinado site.
Palavras chave: data webhouse, clickstreams, logs, data warehouse, clique,
crawlers, web.
1 Introdução
Em 1992 surgiu pela primeira vez um conceito que veio mudar o mundo tal como o
conhecíamos até essa altura. A World Wide Web (WWW) veio alterar costumes,
conceitos e acima de tudo formas de vida. Diariamente a Web é inundada por novos
utilizadores, justificando assim o forte investimento que as organizações fazem sobre
este espaço. Cada vez mais uma organização que não possua um sitio na Web é vista
como uma organização sem relevância empresarial, e mesmo aquelas que possuem
locais na Web têm preocupações acrescidas no que diz respeito à sua administração.
Assim como o hall de entrada de uma empresa poderá ser o espelho desta, também as
páginas do seu sítio Web devem ter um design apelativo e acima de tudo profissional,
pois será este o primeiro contacto com potenciais clientes no comércio electrónico.
No entanto, a administração Web vai muito mais além da questão estética,
passando desde a questão tecnológica (toda a infra-estrutura que suporta os conteúdos
Web) até à análise de acessos. Assim como no comércio tradicional, em que conhecer
os clientes e as suas características pode ser uma mais valia competitiva, também no
mundo Web o conhecimento sobre clientes – aqui a noção de cliente deve ser
entendida não só como um potencial comprador de algo (comércio electrónico) mas
também como um simples visitante – pode trazer alguma vantagem competitiva ou
sucesso na Web. É, então por isso, que muitas organizações começam a fazer análises
exaustivas aos seus ficheiros de Web logs de forma a estabelecer padrões de
navegação e/ou perfis de utilização. Este tipo de análises pode servir simplesmente
para organização de conteúdos Web e elaboração de estatísticas, mas também como
fonte de dados para a construção de modelos de recomendação – entenda-se modelos
de recomendação como o resultado de algoritmos de data mining sobre o conjunto de
dados – de forma a descobrir quais os produtos e serviços que mais interessam aos
seus potenciais clientes, afim de diminuir o tempo de pesquisa e aumentar o grau de
satisfação. Um cliente satisfeito poderá voltar a comprar e implicitamente é um
excelente meio de divulgação.
Usualmente a tecnologia utilizada para estabelecer padrões de navegação assenta
muito no conceito de data webhouse (DWeb). Em [1] a definição de DWeb pode ser
vista como uma instância de um data warehouse (DW), povoado com dados
provenientes de clickstream, de forma a fornecer um conjunto de metadados que serão
a base para análises On-Line Analytical Processing (OLAP). Em suma, o que se
pretende com a elaboração deste artigo de investigação é a apresentação de um
conjunto de técnicas e modelos de dados com vista à elaboração de um DWeb capaz
de responder a um vasto leque de interrogações, de forma a obter informação
necessária para estudos estatísticos e futuras remodelações do site.
2 Sistemas de data webhousing
O processo de tomada de decisão em organizações modernas nem sempre é uma
tarefa simples. Na realidade, um sistema de apoio à decisão é sempre algo bastante
complexo. O grande volume de informação e as constantes alterações às regras de
negócio exigem a estes sistemas constantes mutações, tornando-se por vezes bastante
instáveis. Contudo, as possibilidades de análise que estes sistemas (quando bem
modelados) colocam ao dispor dos agentes de tomada de decisão, são uma mais valia
no competitivo mundo actual.
Um dos pontos fortes dos sistemas de DW é a modelação dimensional [1][12]. Ao
contrário do tradicional modelo relacional [2] baseado em entidades interligadas entre
si, a modelação dimensional assenta no conceito de dimensão e tabelas de facto [1].
Sendo um DWeb uma instancia de um DW, em que as fontes de dados são ficheiros
de log de servidores Web, é igualmente possível fazer estudos segundo vários eixos
de análise e assim obter conhecimento, que de outra forma seria algo extremamente
difícil.
A integração dos dados de clickstream num DWeb permite diversos tipos de
análises. Questões relacionadas com comportamento de clientes que visitam o sitio
Web, hot pages, como são efectuadas as pesquisas, qual a sequência de cliques, quais
as áreas mais procuradas entre outras questões, serão de fácil análise. A informação
de clickstream não é apenas mais uma fonte de dados, esta apresenta uma série de
características que a diferencia dos dados recolhidos de um sistema operacional.
Habitualmente é bastante heterogénea devido há não uniformização dos formatos e
poderá estar espalhada pelos vários servidores da organização ou até mesmo em
servidores fora desta, dificultando o processo de recolha de dados.
2.1 Fontes de dados do Data Webhouse
As fontes de um DWeb podem surgir de dois locais distintos. Dos locais mais
clássicos, como os sistemas operacionais que contêm informação operacional
(clientes, produtos, fornecedores, etc.) e de ambientes Web: dados de clickstream [3].
2.2.1 Formatos Standard de Log
Usualmente nos ficheiros de log encontram-se os pedidos efectuados via HTTP, pelos
browsers ao servidor Web. Como em todas as tecnologias Web, também no formato
dos logs existem vários standards, nomeadamente os criados pelas entidades: World
Wide Web Consortium (W3C) e National Center for Supercomputing Applications
(NCSA).
• NCSA Common Log Format (CLF).
• NCSA Extended Common Log Format (ECLF) ou Combined Log Format.
• W3C Extended Log Format (ELF)
Definido pela primeira vez em [4], [5] o CLF é um tipo de log de formato fixo
ASCII, como tal não pode ser alterado ou adaptado. Está disponível para sítios Web e
para serviços SMTP e NNTP. Foi criado com a intenção de acabar com os formatos
proprietários tornando-se assim no primeiro standard. Guarda informação referente a :
• Remote host – endereço IP do computador que acedeu ao site.
• Ident – Identidade remota fornecida pelo cliente do pedido HTTP, pode ser
desconhecida nesse caso representa-se por ‘-‘.
• Authuser – O nome com que o utilizador se autenticou no site, pode ser
desconhecido nesse caso representa-se por ‘-‘
• Date – Data e hora em que o servidor terminou de atender o pedido.
• Request – Indica o pedido feito ao servidor.
• Status – Código de estado http retornado ao cliente.
• Bytes –Numero de bytes enviados pelo servidor ao cliente.
De seguida apresenta-se um fragmento de um log de um servidor Web no formato
CLF:
66.82.9.16 - asilva [30/Aug/2004:01:12:27 +0000] "GET
/images/main_nor2.gif HTTP/1.1" 200 73797
"http://www.utilities.h12.ru/Free-Download-C-17.html" "Mozilla/
Assim como o CLF também o ECLF [5] foi criado pela NCSA. É o resultado do
CLF por acréscimo de dois novos campos, o referenciador e o agente HTTP. Cada um
deles contém a seguinte informação:
• Referenciador – representa a página que conduziu o utilizador até ao sitio Web,
caso seja desconhecido representa-se por ‘-‘.
• Agente HTTP – identifica o navegador Web.
Um exemplo do formato ECLF é o seguinte:
189.12.157.159 - - [28/Jan/2008:00:00:01 -0500] "GET
/image/degois.jpg HTTP/1.1" 200 5199
"http://repositorium.sdum.uminho.pt/handle/1822/4641" "Mozilla/4.0
(compatible; MSIE 7.0; Windows NT 5.1)"
Criado pela W3C com intenção de obter um standard que satisfizesse as
necessidades de clientes, servidores e proxies [6],[7], o ELF encontra-se no formato
ASCII e é possível ser parametrizado. Ao contrário dos formatos anteriores, o formato
ELF contém no inicio um cabeçalho informando sobre os parâmetros que estão a ser
guardados. Um exemplo do formato ELF é o seguinte:
#Version: 1.0
#GMT-Offset: -0500
#Software: Oracle9iAS Web Cache/2.0.0.2.0
#Start-Date: 2002-10-24 00:00:15
#Fields: c-ip c-dns c-auth-id date time cs-method cs-uri sc-status
bytes cs(Cookie) cs(Referrer) time-taken cs(User-Agent)
#Date: 2002-10-24 00:00:15
10.32.37.2 pcmfr03.someorg.org jsmith 2002-10-24 00:00:18 GET
/admin/images/office.jpg 200 350
"Server_Webcache_pool=1443321748;ORA_UOM_AGID=%2fMP%2f8M7%3f%3fDh3
V H"
"http://www.someorg.org/nl/about.html" 6 "Mozilla/4.5 [en] (WinNT;
I)"
Na implementação realizada, os servidores Web guardam os ficheiros de log no
formato NCSA Extended Common Log Format (ECLF).
2.2 Modelação Dimensional
A modelação de um DWeb pode ser vista da mesma forma que a modelação de um
DW tradicional. Assim como na modelação de um DW, também na modelação de um
DWeb a escolha do nível de detalhe (tradicionalmente chamado de granularidade [1])
é uma tarefa extremamente importante, visto que é a partir desta definição que se
poderá conhecer o tipo de factos a analisar. Na modelação do DWeb em questão, três
níveis de detalhe poderiam ser utilizados:
• Registo de sessões completas por hora.
• Registos por pedido.
• Registo de pedidos por sessão.
Comparando os três níveis de detalhe optou-se por fazer a implementação do grão
que permite a analise do registo de sessões completas por hora. Analisar factos de
registo por pedidos não se apresentou como uma mais valia, ao mesmo tempo, com o
modelo construído para o registo de sessões completas por hora, é igualmente
possível construir a sequência de cliques (clickstream) de uma sessão.
2.2.1 Tabela de Factos
Na figura 1 é apresentado o modelo dimensional para a análise de registo de sessões
completas por hora. Na realidade, com o esquema apresentado a análise de registo por
sessão é também uma possibilidade, visto que a tabela ponte (TP_Session) usada
contém todos os registos de pedidos efectuados numa determinada sessão.
Figura 1. – Esquema dimensional para análise de sessões completas.
Como é possível verificar as medidas escolhidas são:
•
•
•
•
•
•
•
•
•
•
Pedidos – Número de pedidos efectuados na sessão.
m_Gets – Número de pedidos efectuados com o método get.
m_Post – Número de pedidos efectuados com o método post.
m_Head – Número de pedidos efectuados com o método head.
m_Outros – Número de pedidos efectuados com outros métodos.
status_Sucesso – Número de pedidos efectuados com sucesso.
status_redirecionado – Número de pedidos redireccionados.
status_Erro – Número de pedidos falhados.
bytes_enviados – Número de bytes enviados pelo servidor.
session_duration – Tempo de duração da sessão.
No total, o modelo dimensional é constituído por sete dimensões (Computador,
Referenciador, UserAgent, Data, Tempo, Pedido) uma das quais degenerada [1]
(SessionID), uma tabela ponte (TP_session) e dez medidas.
2.2.2 Dimensão Computador
A dimensão computador (tabela 1) visa identificar o computador de onde é
proveniente o pedido http ao servidor. A informação obtida é construída através do
endereço IP registado nos logs. Usando um ficheiro de dados [8] que contém o
intervalo de endereços de IP alocados por Internet Service Provider (ISP) é possível
obter o código ISO assim como o nome do país da entidade detentora do IP.
Tabela 1 – Atributos da dimensão Computador.
Atributo
Descrição
Exemplo
Ipaddress
Endereço de IP da entidade detentora do
pedido HTTP
Código ISO do país de origem do IP
País de origem da entidade dentora do IP
“87.196.186.46”
CódigoISOPaís
Pais
“PT”
“Portugal”
2.2.3 Dimensão User Agent
Um agente http (tabela 2) é a aplicação do cliente, conjuntamente com um protocolo
de rede, usada para efectuar o pedido ao servidor. Um agente pode ser de vário tipos,
entre eles, Web browsers, clientes de e-mail, search engine bots (“crawlers”).
Tabela 2 – Atributos da dimensão User Agent.
Atributo
Descrição
Exemplo
Agent_id
Tipo
Agent_name
Texto_log
Chave identificadora do agente.
Tipo do agente.
Nome do agente.
Texto existente no ficheiro log referente ao
agente.
1
“Crawler”
“GoogleBot”
2.2.4 Dimensão Calendário
Para caracterizar o dia de ocorrência do facto construiu-se a dimensão calendário
(tabela 3). Esta dimensão contém informação detalhada sobre datas para um período
de doze anos.
Tabela 3 – Atributos da dimensão Calendário.
Atributo
Data_id
Dia_semana
Dia_semana_nr
Dia_mes_nr
Dia_ano_nr
Tipo_dia
Semana_nr
Mes
Mes_nr
Quarter
Semestre
Ano
Descrição
Chave identificadora do dia.
Nome do dia da semana.
Número do dia da semana.
Número do dia no mês.
Número do dia no ano.
Fim-de-Semana ou dia de trabalho.
Número da semana no ano.
Nome do mês.
Número do mês no ano.
Número do trimestre no ano.
Número do semestre no ano.
Ano.
Exemplo
1
“Monday”
3
20
20
“weekend”
3
“Janeiro”
1
1
1
2008
2.2.5 Dimensão Hora
A dimensão Hora (tabela 4) guarda informação referente a cada uma das vinte e
quatro horas do dia, caracterizando desta forma a hora de ocorrência do facto.
Tabela 4 – Atributos dimensão Tempo.
Atributo
Hora
Período
Descrição
Exemplo
Chave identificadora da dimensão tempo.
Corresponde a hora.
Período do dia.
15
“Tarde”
2.2.6 Dimensão Referenciador
Por referenciador (tabela 5) deve entender-se o conjunto de atributos que identificam
o local que referenciou o pedido http. Este pode ser interno ao site, ou seja, um link
para o próprio site, ou então um link externo ao site.
Tabela 5 – Atributos da dimensão Referenciador.
Atributo
referrer_id
Tipo
URI
motor_pesquisa
Descrição
Chave identificadora do referenciador.
Tipo do referenciador
Local que referenciou
Se foi proveniente de um motor de pesquisa.
Exemplo
1
“interno”
“www.google.pt”
“y”
2.2.7 Dimensão Pedido
A dimensão pedido (tabela 6) identifica o conteúdo pedido ao site. De uma forma
simples, um pedido pode ser visto como objectos individuais descarregados após um
clique num link. Conceptualmente, um pedido pode ser entendido como tudo aquilo
que é descarregado após o clique num link. Contudo, todos os objectos descarregados
são registados individualmente, isto é, quando se abre uma página Web que contém
um número n de objectos no ficheiro de log, ficam registado os n pedidos, um por
cada objecto.
Tabela 6 – Atributos da dimensão Pedido.
Atributo
request_id
Request
Tipo
tipo_classe
Descrição
Chave identificadora do pedido.
Texto do pedido que ficou registado no log.
Tipo do pedido.
Tipo da classe do pedido
Exemplo
1
“/”
“pdf”
“PS”
2.2.8 Dimensão Sessão
Sendo a sessão uma dimensão degenerada [1], não possui qualquer tabela. É um
índice inteiro sequencial que identifica a sessão, permitindo desta forma utilizar
funções de agregação sobre o atributo sessão.
3 Povoamento do Data Webhouse
Assim como num sistema de DW, também em sistemas de DWeb os processos ETL
devem ser conceptualmente vistos da mesma forma. No entanto, devido à
heterogeneidade das fontes e ao eventual volume de dados a integrar, a
implementação dos processos de ETL requer especial atenção.
De uma forma simplista, o processo de ETL para o sistema em questão (figura 2)
consiste numa fase de extracção de dados, seguida de uma fase de transformação, e
por fim uma fase de integração no sistema final. Todos estes processos são suportados
por uma área de retenção (AR), que para além de servir como uma zona
centralizadora serve também como um local onde os dados podem ser combinados.
Figura 2 – O Processo de ETL.
3.1 Extracção
O processo de extracção de dados pode ser visto como um mecanismo de recolha, que
simplesmente extrai os dados das fontes e os coloca na AR. Tecnicamente, os dados
podem ser recolhidos de forma incremental ou completa. De forma incremental, os
dados colectados são aqueles que não foram recolhidos desde o último acesso. Este
pode ser um mecanismo especialmente útil caso os ficheiros de log se encontrem
espalhados por vários servidores da organização, ou até mesmo fora desta.
Num caso de recolha completa, os dados são colectados ao mesmo tempo. Ora,
para o sistema em questão, visto que é recolhido um número limitado de ficheiros de
log, usualmente um ficheiro por dia, o método de recolha completa será o mais
adequado.
Os dados são recolhidos diariamente entre as 00h15 e as 00h20 de um local
partilhado na rede e colocados na AR de forma a serem convenientemente
trabalhados. Simultaneamente, um processo acede à Web baixando um ficheiro que
será utilizado na resolução de IPs.
3.2 Transformação
Durante a fase de transformação, são realizadas as operações necessárias para a
integração dos dados no DWeb. Os dados sofrem operações de junção, limpeza, entre
outras. Quando prontos e uniformizados, os dados são colocados em tabelas na área
de retenção onde são mantidos, para posterior carregamento para o DWeb.
3.2.1 Identificação de sessões
Tendo os registos das visitas disponíveis, é necessário reconstruir a sessão do
utilizador. Uma sessão pode ser definida como o conjunto de cliques feitos por um
utilizador, desde o momento em que este acede ao website, até ao momento em que o
abandona. A identificação de sessões visa agrupar, num identificador único, todas as
acções realizadas por um utilizador no site.
Existem dois tipos de estratégias para reconstrução de sessões: pró-activas e
reactivas[9]. As estratégias pró-activas atribuem um identificador de sessão enquanto
o utilizador está a interagir com o site. Por outro lado, as estratégias reactivas tentam
atribuir um identificador de sessão a cada pedido, depois destes terem ocorrido.
Nos ficheiros de log utilizados para a realização deste trabalho, não existia
nenhuma identificação de sessão, pelo que as técnicas utilizadas para a reconstrução
de sessões foram técnicas reactivas, ou seja, o identificador de sessão será atribuído
pela análise dos ficheiros de log.
Identificar todos os pedidos feitos pelo mesmo utilizador durante um acesso,
constitui o primeiro passo para a reconstrução de sessões. Obtêm-se todos os
endereços de IP ordenados por data e hora e, caso exista uma diferença maior do que
15 minutos entre dois pedidos sequenciais p1 e p2, considera-se que o p2 pertence a
uma nova sessão. O intervalo de 15 minutos de inactividade entre dois pedidos
sequenciais foi escolhido tendo em conta três parâmetros: o tipo de utilizadores, o tipo
de acessos e o conteúdo informativo. O facto de ser um site para pesquisa de
informação, leva-nos a concluir que o tipo de acesso por parte de utilizadores é
directo e conciso, logo o tempo de inactividade de 15 minutos oferece uma boa
margem de segurança na identificação de sessões.
3.2.2 Identificação de crawlers
Um crawler pode ser definido como um programa que utiliza o protocolo HTTP[11] e
que tenta passar por um utilizador normal de modo a conseguir obter informação
(todo o conteúdo de um site). Os objectivos deste tipo de programas podem ser vários,
alguns são benéficos para a organização (caso dos crawlers de motores de pesquisa) e
outros prejudiciais (caso dos crawlers maliciosos que tentam obter informação
confidencial).
Muitos dos acessos a websites são feitos por crawlers e não por utilizadores
comuns. Em [10] podemos ver que 5% a 40% dos registo de visitas de um site são
feitas por crawlers, provocando um grande número de registos nos logs dos
servidores Web, criando assim uma falsa imagem de utilização do site. De facto, os
responsáveis pela administração Web das organizações podem de várias formas
restringir o acesso a este tipo de programas. Mas será que assim o pretendem? Será
benéfico para as organizações este tipo de restrições?
Analisando cuidadosamente algumas estatísticas, verificamos que a grande maioria
dos acessos a sites são referenciados por links externos, links recolhidos por crawlers
e indexados por motores de pesquisa. Ora restringir o acesso não é de facto do
interesse das organizações. Contudo existem várias técnicas que podem ser
implementadas de forma a minimizar a percentagem de acessos por crawlers nas
estatísticas globais.
A técnica utilizada na implementação do DWeb em questão, consiste em tentar
identificar os crawlers com recurso ao campo user agent, comparando o valor
existente no campo com uma lista de crawlers já conhecidos. Este método apresenta
no entanto alguns problemas. Na verdade, funciona apenas caso os logs do servidor
Web apresentem o campo user agent e apenas permite detectar crawlers previamente
conhecidos. Um problema adicional advém do facto de ser necessário manter a lista
de crawlers conhecidos sempre actualizada, colocando assim um esforço adicional na
manutenção do DWeb.
3.2.3 Construção das dimensões e tabela de factos
Elaborado todo o pré-processamento dos dados, é agora necessário construir as
dimensões e a tabela de factos.
A dimensão calendário é gerada automaticamente na altura da criação do DWeb
para um período de 11 anos, a começar em 01-01-2008 e a acabar em 31-12-2019. Tal
como na dimensão calendário, também a dimensão hora é gerada de forma
automática na altura de criação do DWeb.
No caso da dimensão pedido esta é alimentada pela informação existente nos
ficheiros de log do servidor. Os dados do ficheiro são processados e limpos para
posterior povoamento da dimensão.
Relativamente à dimensão referenciador esta é construída com a informação
existente nos ficheiros de log cruzada com a informação de uma tabela contendo os
principais motores de pesquisa, de forma a identificar se o site que referenciou o
pedido é ou não um motor de pesquisa.
A dimensão computador é construída a partir do processamento dos dados dos log,
complementada com a resolução de IPs. A identificação da entidade detentora do IP é
feita recorrendo a um ficheiro que contém a informação dos IPs alocados por ISP.
Por fim a dimensão user agent é construída através dos ficheiros de log dos
servidores Web. A identificação do user agent utilizado vai permitir saber se o pedido
foi efectuado por um crawler ou por um utilizador normal.
Depois de preenchidas todas as dimensões, atribuem-se chaves de substituição [1]
a cada um dos registos. As chaves de substituição das dimensões são números
sequenciais sem qualquer significado.
Após construídas as dimensões, e atribuídas as chaves de substituição, é altura de
construir a tabela de factos para o grão escolhido. Existem várias medidas a serem
preenchidas na tabela de factos para análise de secções completas. Todas estas
medidas são calculadas a partir da informação extraída directamente dos ficheiros de
log, nomeadamente a partir de:
• Pedidos – Número de pedidos efectuados na sessão, é a contagem de todos os
pedidos efectuados durante a sessão.
• m_Gets – Número de pedidos efectuados com o método get, é a contagem de
todos os pedidos da sessão em que o método utilizado foi o get.
• m_Post – Número de pedidos efectuados com o método post, é a contagem de
todos os pedidos da sessão em que o método utilizado foi o post.
• m_Head – Número de pedidos efectuados com o método head, é a contagem de
todos os pedidos da sessão que o método utilizado foi o head.
• m_Outros – Número de outros pedidos, é a contagem de todos os pedidos da
sessão, em que o método utilizado não foi nenhum dos três anteriores.
• status_Sucesso – Número de pedidos efectuados com sucesso, é a contagem de
todos os pedidos da sessão que foram respondidos com sucesso pelo servidor.
• status_redirecionado – Número de pedidos redireccionados, é a contagem de
todos os pedidos da sessão que foram redireccionados pelo servidor.
• status_Erro – Número de pedidos falhados, é a contagem de todos os pedidos da
sessão que não foram respondidos pelo servidor.
• bytes_enviados – Número de bytes enviados pelo servidor Web durante uma
sessão, é a soma do número de bytes enviados em cada um dos pedidos da
sessão.
• session_duration – Tempo de duração da sessão, é a soma do tempo que
demora a servir cada uma dos pedidos da sessão.
Tendo já construído todas as dimensões e a tabela de factos falta apenas construir
a tabela ponte. A chave primária da tabela é uma chave composta, em que cada um
dos atributos é uma chave estrangeira para a tabela de factos e para a dimensão
pedido. Para além da chave primária composta, a tabela ponte é guarnecida de um
número sequencial indicador da ordem do pedido na sessão. Este numero é calculado
através do campo data e tempo do ficheiro de log, permitindo assim construção de
todos os pedidos de uma sessão.
3.3 Integração e Operações
Terminado o processo de transformação de dados, estes encontram-se prontos para
serem integrados no DWeb. No DWeb devem ser criadas tabelas com a mesma
estrutura das dimensões e da tabela de factos existentes na área de retenção, pois desta
forma a integração dos dados torna-se mais simples, não sendo necessário executar
queries muito complexos.
O processo de carregamento de dados terá de seguir uma ordem específica, caso
contrário problemas de violação da chaves estrangeiras podem acontecer. Assim
sendo, a integração dos dados no DWeb é feita na seguinte ordem: primeiro integramse as dimensões, depois integra-se a tabela de factos (possui chaves estrangeiras para
todas as dimensões) e por fim a tabela ponte.
Ao integrar os dados nas dimensões é necessário ter algum cuidado para não serem
inseridos registos repetidos. De facto, podem já existir valores nas dimensões
resultantes de povoamentos anteriores. Para prevenir problemas de valores repetidos
alguns cuidados são fundamentais. Antes de se povoar uma dimensão com um novo
registo verifica-se se ele já existe. Caso exista pode ser necessário actualiza-lo. Caso
ainda não exista o novo registo vai ser inserido normalmente na respectiva dimensão.
Na tabela 7 são apresentados os tempos de processamento para o primeiro
povoamento, obviamente que para os povoamentos seguintes a dimensão calendário e
hora não serão alteradas, esperando-se assim uma ligeira quebra no tempo total de
processamento. Como se pode constatar, o maior esforço computacional encontra-se
no povoamento da dimensão computador e nas tabelas de facto e ponte. Estes valores
são facilmente explicados com base em dois factos: a dimensão computador utiliza
um processo extra, computacionalmente pesado para a resolução de IPs e as tabelas
de facto e ponte no seu povoamento fazem uso de várias junções (é sempre uma
função de elevado peso computacional, dependendo do tamanho da tabela) entre
tabelas.
Tabela 7 – Tempos de processamento.
Processo
Descrição
Tempo
pov_dim_cal
pov_dim_hora
Pov_dim_ref
Pov_dim_agnt
Identf_sessoes
Pov_dim_req
Pov_tf_tp
Pov_dim_comp
Povoamento da dimensão calendário
Povoamento da dimensão hora
Povoamento da dimensão referenciador
Povoamento da dimensão user agent
Identificador de sessões
Povoamento da dimensão pedido
Povoamento da tabela de facto e tabela ponte
Povoamento da dimensão computador
1 seg.
1 seg.
2 seg.
3 seg.
1min 2 seg.
2 min 9 seg.
7 min 22 seg.
10 min 8 seg.
4 Geração de Relatórios
Tendo o DWeb construído e os dados integrados, é agora necessário disponibilizar a
informação aos administradores do site para que eles possam através da análise dessa
informação, melhorar os serviços disponíveis.
Vão ser gerados relatórios para três tipos: cralwers, utilizadores normais e todos os
acessos. Os relatórios disponibilizados serão, diários, semanais, mensais e anuais.
Os relatórios diários serão construídos depois da integração diária e são
disponibilizados aos administradores até ás 10 horas do dia seguinte. Os semanais são
construídos depois da integração do ultimo dia da semana, e são entregues na
segunda-feira da semana seguinte aquando da entrega do relatório diário. Os mensais
são construídos após a integração do ultimo dia do mês e são entregues no primeiro
dia do mês seguinte. Por fim os anuais são construídos após a integração do ultimo
dia do ano, e são entregues durante o decorrer da primeira semana do ano seguinte.
A estrutura de cada relatório será idêntica mudando apenas o nível da hierarquia
(Ano, Mes, Semana, Dia) ao qual são agregados os dados.
Cada relatório é composto por um pequeno resumo (informação estatística relativa
ao período de analise) e por diferentes secções: analise de acessos por país, hot pages,
páginas de entrada e de saída do site, tipos de ficheiros mais pedidos, tipo de browser
mais utilizado, principais referenciadores, quais as alturas de maior acesso (hora, dia,
semana, mes), entre outros
Um exemplo de uma secção do relatório, em que é analisado a distribuição de
sessões por pais, é o seguinte.
Figura 3 – Distribuição de sessões por país.
5 Conclusões e Trabalho Futuro
Quando se parte para a implementação de um sistema analítico algumas decisões têm
de ser tomadas e validadas antes de se iniciar a modelação do sistema.
Para o projecto em questão algumas interrogações funcionais surgiram.
Obviamente que quando surgem interrogações algumas decisões têm de ser tomadas
de forma a contornar qualquer problema futuro. A primeira interrogação a surgir
relacionava-se com a escolha do sistema de gestão de bases de dados. Inicialmente a
escolha recaiu sobre a ferramenta MySQL, no entanto feitos alguns testes de carga
verificou-se que a versão 5.1 era extremamente instável e não escalonável, isto é,
grandes volumes de informação provocaram algumas falhas no sistema, optou-se
então por uma ferramenta consolidada do mercado, o Microsoft SQLServer.
Um outro problema surgiu no momento da especificação do nível de detalhe da
dimensão hora. Sendo um site em que o volume de acessos por minuto não é
demasiado concluiu-se que fazer a analises á hora seria o mais indicado, desistindo da
ideia de analisar ao minuto ou até mesmo ao segundo.
Um novo problema surgiu aquando da implementação do processo de resolução de
IPs do povoamento da dimensão computador. Inicialmente fez-se uso de uma
biblioteca já existente, no entanto quando submetida a alguns testes, vários IPs
ficaram por resolver. Partimos então para a implementação de uma biblioteca própria,
que apesar do esforço extra veio-se a revelar extremamente precisa nos resultados.
Por fim, um ultimo problema digno de registo, apareceu aquando da fase de
implementação. Será mais eficiente uma programação multithreading? Será que o
esforço inerente á implementação multithreading compensará em termos de
performance do sistema? Ambas as questões foram ponderadas e uma decisão foi
tomada. Dado o tempo disponível na janela de oportunidade (8 horas disponíveis)
optou-se por uma implementação single thread, visto que o esforço para implementar
computação multithread não compensaria em termos de performance final.
Em suma, a implementação do sistema correu dentro dos padrões estipulados. Com
maior ou menor dificuldade todos os problemas foram ultrapassados e no momento o
sistema encontra-se em fase de estabilização antes de se proceder ao processamento
final.
Tendo o DWeb construído e estabilizado, pode-se agora implementar um sistema
de processamento analítico, que nos vai permitir explorar de forma eficiente
informação sobre os utilizadores que acedem ao site. Para além disso também se
podem aplicar técnicas de Data Mining, que nos vão permitir extrair conhecimento da
informação. Com a aplicação destas técnicas pretende-se descobrir relacionamentos
entre os dados, e através deles estabelecer perfis de utilização Web. A definição
desses perfis vai permitir melhorar a forma como a informação do site é
disponibilizada aos utilizadores e assim melhorar o seu funcionamento.
Como trabalho futuro podemos ainda melhorar alguns aspectos da implementação
do DWeb:
• Aumentar o número de formatos de ficheiros de log aceites pelo programa, dado
que neste momento apenas aceita logs no formato ECLF.
• Melhorar os algoritmos de detecção de crawlers, bem como os de delimitações
de sessões.
• Optimizar os processos já desenvolvidos, de modo a melhorar os tempos de
processamento dos ficheiros de log.
Referências
1. Kimball, R., Reeves, L., Thornthwaite, W., Ross, M. and Thornwaite, W. The Data
Warehouse Lifecycle Toolkit: Expert Methods for Designing, Developing and Deploying
Data Warehouses with CD Rom. John Wiley \& Sons, Inc., 1998.
2. Codd, E.F. The relational model for database management: version 2. Addison-Wesley
Longman Publishing Co., Inc., 1990.
3. Borges, E., Sistemas de Data Webhousing: análise, desenho, implementação e exploração de
sistemas reais, Tese de Mestrado, Mestrado em Informática, 2004.
4. A Loutonen “The Common LogFileFormat”,1995.
http://www.w3.org/pub/WWW/Deamon/User/Config/Logging.html.
5. Documentação do servidor “NCSA HTTPd”. NCSA, http://hoohoo.ncsa.uiuc.edu/docs/
6. Phillip M. Hallam-Baker, Brian Behlendorf: “Extended Log Format”. W3C Working Draft
WD-logfile-960323, 1996, http://www.w3.org/pub/WWW/TR/WD-logfile.html.
7. Phillip M. Hallam-Baker, Brian Behlendorf: “Extended Log File Format”. World Wide Web
Journal: The Web Five Years After, Volume1, Number 3, O’Reilly & Associates, Setembro,
1996, http://www.w3journal.com/3/s2/hallam.htm.
8. Maxmind, GeoIP, Country, http://www.maxmind.com/.
9. Myra Spiliopoulou, Bamshad Mobasher, Bettina Berendit, Mike Nakagawa: A framework
for the evaluation of session reconstruction heuristics in Web usage analysis. Informs
Journal on Computing. Abril 2003.
10. Ron Kohavi, Rajesh Parekh: Ten Supplementary Analyses to improve E-commerce Web
sites. In Proceedings of Fifth International Workshop on Knowledge Discovery the Web
WebKDD’2003- WebMining as a Premise to Effective and Intelligent Web Applications.
Agosto 2003.
11. Michael Chau, Hsinchun Chen: Personalised and Focused Web Spiders. Web Intelligence,
Springer-Verlag, Fevereiro, 2003.
12. Kamble, A.S. A conceptual model for multidimensional data Proceedings of the fifth on
Asia-Pacific conference on conceptual modelling - Volume 79, Australian Computer
Society, Inc., Wollongong, NSW, Australia, 2008.