ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa
ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa
ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>de</strong> malha <strong>de</strong> procura proposto pelo algoritmo PipeSort, a partir da qual <strong>de</strong>termina quais os cubói<strong>de</strong>s que<br />
po<strong>de</strong>m ser obtidos a partir <strong>de</strong> outros no sentido <strong>de</strong> minimizar o número <strong>de</strong> caminhos que é necessário<br />
percorrer para cobrir todos os nós. Assim, para cada cubo o algoritmo toma um caminho e or<strong>de</strong>na a<br />
relação em memória tendo em conta a or<strong>de</strong>nação dos atributos no nó inicial. Seguidamente, os dados<br />
são percorridos, sendo os agregados acumulados à medida que o caminho percorre os vários níveis <strong>de</strong><br />
granularida<strong>de</strong>.<br />
Os resultados mostram que o algoritmo faz o número mínimo possível <strong>de</strong> or<strong>de</strong>nações e consegue tirar<br />
partido dos prefixos comuns <strong>de</strong> diferentes agregados <strong>de</strong> forma a optimizar o custo a nível <strong>de</strong><br />
processamento. Além disso, os únicos custos <strong>de</strong> entrada/saída inerentes são os <strong>de</strong> entrada <strong>de</strong> dados e<br />
saída dos resultados, o que faz com que a carga total <strong>de</strong>ste tipo <strong>de</strong> operações seja linear em relação ao<br />
número <strong>de</strong> atributos envolvidos, sempre que a relação possa estar em memória.<br />
2.4.3 Algoritmos baseados em arrays<br />
Nos sistemas do tipo MOLAP, os dados são armazenados em arrays, o que faz com que as técnicas do<br />
tipo or<strong>de</strong>nação e dispersão não sejam aplicáveis. O próprio facto <strong>de</strong> ser utilizado outro tipo <strong>de</strong> estrutura<br />
<strong>de</strong> dados faz com que seja necessário ter em conta uma série <strong>de</strong> factores relacionados com o<br />
carregamento e armazenamento eficientes <strong>de</strong> arrays <strong>de</strong> gran<strong>de</strong>s dimensões e muito esparsos.<br />
O algoritmo Multi-Way Array Cubing, proposto por Zhao et al segue os princípios do paradigma MOLAP<br />
na medida em que o seu objectivo é percorrer as células dos arrays <strong>de</strong> tal forma que não seja necessário<br />
repetir a operação para calcular cada um dos sub-agregados. Por questões <strong>de</strong> <strong>de</strong>sempenho, os arrays<br />
têm que ser armazenados divididos em arrays <strong>de</strong> menor dimensão, recorrendo-se a uma estratégia<br />
<strong>de</strong>signada <strong>de</strong> chunking [Zhao1997].<br />
DS fonte <strong>de</strong> dados<br />
c chunk<br />
chunkSize tamanho do chunk<br />
O {D 1,D 2,...,D n : |D 1|≤|D 2|≤...≤|D n|}<br />
T MMST para or<strong>de</strong>m O<br />
m número <strong>de</strong> elementos <strong>de</strong> O<br />
para cada c no nivel m do array<br />
carregar dados para c a partir <strong>de</strong> DS<br />
i n<br />
para cada D i<br />
para cada posição <strong>de</strong> c<br />
val valor da posição<br />
fazer<br />
nextLevel m-1<br />
para cada nó em nextLevel<br />
remover posição não utilizada em nó<br />
agregar valor no nó<br />
até<br />
nextLevel≥0<br />
i i-1<br />
Figura 13 <strong>–</strong> Pseudocódigo genérico do algoritmo Multi-Way<br />
29