<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0717-5000</journal-id>
<journal-title><![CDATA[CLEI Electronic Journal]]></journal-title>
<abbrev-journal-title><![CDATA[CLEIej]]></abbrev-journal-title>
<issn>0717-5000</issn>
<publisher>
<publisher-name><![CDATA[Centro Latinoamericano de Estudios en Informática]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0717-50002012000200008</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[Querying data warehouses efficiently using the Bitmap Join Index OLAP Tool]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Chaves Carniel]]></surname>
<given-names><![CDATA[Anderson]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Lopes Siqueira]]></surname>
<given-names><![CDATA[Thiago Luís]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,São Paulo Federal Institute of Education  ]]></institution>
<addr-line><![CDATA[Salto SP]]></addr-line>
<country>Brazil</country>
</aff>
<aff id="A02">
<institution><![CDATA[,São Paulo Federal Institute of Education  ]]></institution>
<addr-line><![CDATA[São Carlos SP]]></addr-line>
<country>Brazil</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>08</month>
<year>2012</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>08</month>
<year>2012</year>
</pub-date>
<volume>15</volume>
<numero>2</numero>
<fpage>1</fpage>
<lpage>1</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_arttext&amp;pid=S0717-50002012000200008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_abstract&amp;pid=S0717-50002012000200008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_pdf&amp;pid=S0717-50002012000200008&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[Abstract Data warehouse and OLAP are core aspects of business intelligence environments, since the former store integrated and time-variant data, while the latter enables multidimensional queries, visualization and analysis. The bitmap join index has been recognized as an efficient mechanism to speed up queries over data warehouses. However, existing OLAP tools does not use strictly this index to improve the performance of query processing. In this paper, we introduce the BJIn OLAP Tool to efficiently perform OLAP queries over data warehouses, such as roll-up, drill-down, slice-and-dice and pivoting, by employing the bitmap join index. The BJIn OLAP Tool was implemented and tested through a performance evaluation to assess its efficiency and to corroborate the feasibility of adopting the bitmap join index to execute OLAP queries. The performance results reported that our BJIn OLAP Tool provided a performance gain that ranged from 31% up to 97% if compared to existing solutions regarding the query processing. Our tool has proven not only to efficiently process queries, but also to process OLAP operations on the server and client sides, for different volumes of data and taking into account different operating systems. Besides, it provides a reasonable use of the main memory and enables new rows to be appended to bitmap join indices.]]></p></abstract>
<abstract abstract-type="short" xml:lang="pt"><p><![CDATA[Portuguese abstract Data warehouse e OLAP são aspectos fundamentais em ambientes de inteligência de negócio, uma vez que o primeiro armazena dados integrados e históricos, enquanto que o segundo possibilita consultas, visualização e análise multidimensionais. O índice bitmap de junção constitui um mecanismo eficiente para reduzir o tempo de resposta das consultas em data warehouses. Porém, as ferramentas OLAP existentes não usam estritamente este índice para melhorar o desempenho do processamento de consultas. Neste artigo, nós introduzimos a ferramenta BJIn OLAP para realizar consultas OLAP eficientemente sobre data warehouses, tais como roll-up, drill-down, slice-and-dice e pivoteamento, empregando o índice bitmap de junção. A ferramenta BJIn OLAP foi implementada e testada por meio de uma avaliação de desempenho para aferir sua eficiência e corroborar a viabilidade de se adotar o índice bitmap de junção para executar consultas OLAP. Os resultados demonstraram que a ferramenta BJIn OLAP produziu um ganho de desempenho no processamento de consultas que variou de 31% a 97% se comparado às soluções existentes. Além de processar consultas eficientemente, esta ferramenta processa operações OLAP nos lados cliente ou servidor, considerando volumes de dados que variam, e sob diferentes sistemas operacionais. Além disso, ela provê um uso de memória adequado e habilita novos registros para serem inseridos aos índices bitmap de junção.]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[bitmap join index]]></kwd>
<kwd lng="en"><![CDATA[OLAP]]></kwd>
<kwd lng="en"><![CDATA[drill-down]]></kwd>
<kwd lng="en"><![CDATA[roll-up]]></kwd>
<kwd lng="en"><![CDATA[slice-and-dice]]></kwd>
<kwd lng="en"><![CDATA[pivoting]]></kwd>
<kwd lng="pt"><![CDATA[índice bitmap de junção]]></kwd>
<kwd lng="pt"><![CDATA[OLAP]]></kwd>
<kwd lng="pt"><![CDATA[drill-down]]></kwd>
<kwd lng="pt"><![CDATA[roll-up]]></kwd>
<kwd lng="pt"><![CDATA[slice-and-dice]]></kwd>
<kwd lng="pt"><![CDATA[pivoteamento]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <div class="Section1">      <p style="margin: 0cm 0cm 0.0001pt;"><span lang="EN-US"> <font face="Verdana" size="2">&nbsp;</font></span><o:p></o:p></p>       <p style="margin: 0cm 0cm 0.0001pt;"><span lang="EN-US"> <font face="Verdana" size="2">&nbsp;</font></span><o:p></o:p></p>       <p style="margin: 0cm 0cm 0.0001pt;"><b><span lang="EN-US"> <font face="Verdana" size="4">Querying data warehouses efficiently using  the Bitmap Join Index OLAP Tool</font></span></b><o:p></o:p></p>   </div>   <b style=""> <span style="font-size: 10pt; font-family: &quot;Verdana&quot;;" lang="EN-US"><br style="page-break-before: auto;" clear="all">  </span></b>      <div class="Section2">      <p style="text-align: center;" align="center"><span style="font-size: 10pt; font-style: normal;" lang="EN-US"> <font face="Verdana">&nbsp;</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><b style=""><span style="font-size: 10pt; font-style: normal;" lang="EN-US"> <font face="Verdana">&nbsp;</font><o:p></o:p></span></b></p>       <p style="text-align: center;" align="center"><b style=""><span style="font-style: normal;" lang="EN-US"> <font face="Verdana" size="2">Anderson Chaves Carniel</font><o:p></o:p></span></b></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="EN-US"> <font face="Verdana" size="2">S&atilde;o Paulo Federal Institute of Education, Science and Technology, IFSP, Salto Campus,</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><font face="Verdana" size="2"><span style="font-style: normal;" lang="PT-BR">Salto, SP, Brazil, 13.320-271</span></font><span style="" lang="PT-BR"><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p style="text-align: center;" align="center"><span style="" lang="PT-BR"> <font face="Verdana" size="2"><a href="accarniel@gmail.com">accarniel@gmail.com</a></font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="PT-BR"> <font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="PT-BR"> <font face="Verdana" size="2">and</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="PT-BR"> <font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><b style=""><span style="font-style: normal;" lang="PT-BR"> <font face="Verdana" size="2">Thiago Lu&iacute;s Lopes Siqueira</font><o:p></o:p></span></b></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="PT-BR"> <font face="Verdana" size="2">S&atilde;o Paulo Federal Institute of Education, Science and Technology, IFSP, S&atilde;o Carlos Campus,</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="PT-BR"> <font face="Verdana" size="2">S&atilde;o Carlos, SP, Brazil, 13.565-905</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><span style="font-style: normal;" lang="EN-US"> <font face="Verdana" size="2">Federal University of S&atilde;o Carlos, UFSCar, Computer Science Department,</font><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><font face="Verdana" size="2"><span style="font-style: normal;" lang="PT-BR">S&atilde;o Carlos, SP, Brazil, 13.565-905</span></font><span style="" lang="PT-BR"><o:p></o:p></span></p>       <p style="text-align: center;" align="center"><span style="" lang="PT-BR"> <font face="Verdana" size="2"><a href="mailto:prof.thiago@ifsp.edu.br">prof.thiago@ifsp.edu.br</a></font><o:p></o:p></span></p>   </div>   <i style=""> <span style="font-size: 10pt; font-family: &quot;Verdana&quot;;" lang="PT-BR"><br style="page-break-before: auto;" clear="all">  </span></i>      ]]></body>
<body><![CDATA[<div class="Section3"></div>   <span style="font-size: 10pt; font-family: &quot;Verdana&quot;;" lang="PT-BR"><br style="page-break-before: auto;" clear="all">  </span>      <div class="Section4">      <p style="margin: 12pt 45pt 6pt;"><font face="Verdana" size="2"><span lang="EN-US">Abstract</span></font></p>       <p style="margin: 0cm 45pt 0.0001pt; text-align: justify;"><font face="Verdana"><span style="font-size: 10pt;" lang="EN-GB">Data warehouse and OLAP are core aspects of business intelligence environments, since the former store integrated and time-variant data, while the latter enables multidimensional queries, visualization and analysis. The bitmap join index has been recognized as an efficient mechanism to speed up queries over data warehouses. However, existing OLAP tools does not use strictly this index to improve the performance of query processing. In this paper, we introduce the BJIn OLAP Tool to efficiently perform OLAP queries over data warehouses, such as roll-up, drill-down, slice-and-dice and pivoting, by employing the bitmap join index. The BJIn OLAP Tool was implemented and tested through a performance evaluation to assess its efficiency and to corroborate the feasibility of adopting the bitmap join index to execute OLAP queries. The performance results reported that our BJIn OLAP Tool provided a performance gain that ranged from 31% up to 97% if compared to existing solutions regarding the query processing.</span><span style="" lang="EN-GB"><font size="2"> </font> </span> </font><span style="font-size: 10pt;" lang="EN-GB"><font face="Verdana">Our tool has proven not only to efficiently process queries, but also to process OLAP operations on the server and client sides, for different volumes of data and taking into account different operating systems. Besides, it provides a reasonable use of the main memory and enables new rows to be appended to bitmap join indices.</font><o:p></o:p></span></p>       <p style="margin-right: 45.1pt; margin-top: 11.9pt; margin-left: 45.1pt; page-break-after: avoid;"> <font face="Verdana"><b><span style="font-size: 10pt;" lang="EN-US">Portuguese abstract</span></b></font><span style="" lang="EN-US"><o:p></o:p></span></p>       <p style="margin-right: 45.1pt; margin-top: 0cm; margin-left: 45.1pt;"> <font face="Verdana"><span style="font-size: 10pt;">Data warehouse e OLAP s&atilde;o aspectos fundamentais em ambientes de intelig&ecirc;ncia de neg&oacute;cio, uma vez que o primeiro armazena dados integrados e hist&oacute;ricos, enquanto que o segundo possibilita consultas, visualiza&ccedil;&atilde;o e an&aacute;lise multidimensionais. O &iacute;ndice bitmap de jun&ccedil;&atilde;o constitui um mecanismo eficiente para reduzir o tempo de resposta das consultas em data warehouses. Por&eacute;m, as ferramentas OLAP existentes n&atilde;o usam estritamente este &iacute;ndice para melhorar o desempenho do processamento de consultas. Neste artigo, n&oacute;s introduzimos a ferramenta BJIn OLAP para realizar consultas OLAP eficientemente sobre data warehouses, tais como roll-up, drill-down, slice-and-dice e pivoteamento, empregando o &iacute;ndice bitmap de jun&ccedil;&atilde;o. A ferramenta BJIn OLAP foi implementada e testada por meio de uma avalia&ccedil;&atilde;o de desempenho para aferir sua efici&ecirc;ncia e corroborar a viabilidade de se adotar o &iacute;ndice bitmap de jun&ccedil;&atilde;o para executar consultas OLAP. Os resultados demonstraram que a ferramenta BJIn OLAP produziu um ganho de desempenho no processamento de consultas que variou de 31% a 97% se comparado &agrave;s solu&ccedil;&otilde;es existentes. Al&eacute;m de processar consultas eficientemente, esta ferramenta processa opera&ccedil;&otilde;es OLAP nos lados cliente ou servidor, considerando volumes de dados que variam, e sob diferentes sistemas operacionais. Al&eacute;m disso, ela prov&ecirc; um uso de mem&oacute;ria adequado e habilita novos registros para serem inseridos aos &iacute;ndices bitmap de jun&ccedil;&atilde;o.</span></font><span style=""><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span style="" lang="EN-GB">Keywords: </span><span style="font-weight: normal;" lang="EN-GB">bitmap join index, OLAP, drill-down, roll-up, slice-and-dice, pivoting</span></font><span style="" lang="EN-GB"><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="" lang="EN-GB"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span style="" lang="EN-GB">Portuguese keywords: </span><span style="font-weight: normal;" lang="EN-GB">&iacute;ndice bitmap de jun&ccedil;&atilde;o, OLAP, drill-down, roll-up, slice-and-dice, pivoteamento</span></font><span style="" lang="EN-GB"><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="" lang="EN-GB"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span style="font-weight: normal;" lang="EN-GB">Received 2011-12-15, Revised 2012-05-16, Accepted 2012-05-16 </span></font><span style="" lang="EN-GB"><o:p></o:p></span></p>       <p style="text-align: justify;"><span style="font-size: 10pt;" lang="EN-GB"> <font face="Verdana">&nbsp;</font><o:p></o:p></span></p>       <p style="margin-left: 0cm; text-indent: 0cm;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">1 <span class="capLabel">Introduction</span></span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Business Intelligence solutions (BI) are widely adopted by management sectors of enterprises to aid processing, analysis and interpretation of their data, aiming at posi&shy;tively impacting strategy, tactics, and operations <a href="#c1">(1)</a><a name="c1."></a>. Data warehouse (DW) and Online Analytical Processing (OLAP) are core aspects of BI environments <span style=""><a href="#c2">(2)</a><a name="c2."></a></span>. The DW is a subject-oriented, integrated, time-variant and non-volatile dimensional database <span style=""><a href="#c3">(3)</a></span><a name="c3."></a>, while OLAP provides tools to perform multidimensional queries over the DW and to support visualization and analysis of the DW <span style=""><a href="#c4">(4)</a></span>.<a name="c4."></a> Combining both the DW and OLAP enables a better monitoring of business. Therefore, many OLAP tools have been de&shy;veloped to end users visualize and manipulate multidimensional data, such as Oracle BI <a href="#c5">(5)</a><a name="c5."></a> and Mondrian <a href="#c6">(6)</a><a name="c6."></a>.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The multidimensional operations commonly supported by OLAP tools are <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> <a href="#c1">(1)</a><a href="#c7">(7)</a><a name="c7."></a>. They force the OLAP tool to challenge performance issues, since costly joins among huge fact and dimension tables as well as grouping operations are required together with predicates that filter the results. Aiming at reducing the query response time in DW, well-known methods as vertical fragmentation <a href="#c8">(8)</a><a name="c8."></a>, view materialization <a href="#c9">(9)</a><a href="#c10">(10)</a><a href="#c11">(11)</a><a href="#c12">(12)</a><a name="c9."></a><a name="c10."></a><a name="c11."></a><a name="c12."></a> and indices <a href="#c13">(13)</a><a href="#c14">(14)</a><a name="c13."></a><a name="c14."></a> were proposed. However, none of the studied OLAP tools has investigated the feasibility of adopting exclusively the bitmap join index <a href="#c13">(13)</a><a name="c15."></a><a href="#c15">(15)</a> to improve the query processing performance in DW, although this index avoids costly join operations. </span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Providing such investigation is one of the contributions of this paper. In addition we introduce the Bitmap Join Index OLAP Tool (BJIn OLAP Tool) to efficiently perform <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> OLAP operations, as our main contribution. Our tool has proven to efficiently process these operations both on the server and client sides, for different volumes of data and also with portability for different operating systems. In addition, it provides a reasonable use of the main memory and enables new rows to be appended to bitmap join indices.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">This paper extends a previous work <a href="#c16">(16)</a><a name="c16."></a>, which was published and presented in <i style="">CLEI&rsquo;2011 - XXXVII Conferencia Latinoamericana de Informatica</i>, in Quito, Ecuador. Furthermore, this paper extends another previous work <a href="#c17">(17)</a>.<a name="c17."></a> We highlight several unpublished subjects addressed in this paper, as follows. We present an extended description of the BJIn OLAP Tool that comprises the system architecture, all the available operations (building, querying, appending new rows to and dropping bitmap join indices) and some implementation details. Moreover, the experimental evaluation discusses novel performance tests concerning the interface (client), the append operation and the portability. The remaining of this paper is organized as follows. Section 2 summarizes the technical background necessary to comprehend this paper. Section 3 introduces the BJIn OLAP Tool. Section 4 discusses the experimental results. Section 5 surveys related work. Finally, Section 6 concludes the paper and addresses future work. <span style="">&nbsp;</span></span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p style="margin-left: 0cm; text-indent: 0cm;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">2 Technical Background</span></font></p>       <p style="text-align: justify;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">In this section, the technical background necessary to comprehend the paper is summarized. In Section 2.1, data warehouse and OLAP concepts, applications and examples are addressed. In Section 2.2, methods to provide an efficient query processing over DW are described. Finally, Section 2.3 details how to append new rows.</font><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">2.1 Data warehouse and OLAP</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US"><span style=""><a href="#f1">Fig. 1</a></span> shows a star schema representing a retail application, which is derived from the Star Schema Benchmark (SSB) <a href="#c18">(18)</a><a name="c18."></a>. <i style="">Lineorder</i> is the fact table that measures sales and orders, while <i style="">Customer</i>, <i style="">Supplier</i>, <i style="">Part</i> and <i style="">Date</i> are dimension tables that redundantly store descriptive attributes that categorize the facts. These dimension tables are referenced by the fact table through foreign keys. In addition, the dimension tables hold hierarchies that enable data aggregation according to different granularity levels, such as <i style="">(c_region)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_nation)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_city)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_address)</i>, which is held by the dimension table Customer, and <i style="">(p_mfgr)</i> </span><span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(p_category)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(p_brand1)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(p_partkey)</i> which is held by the dimension table <i style="">Part</i>. Considering the mentioned hierarchy in the dimension table Customer, <i style="">c_region</i> is the highest granularity level, while <i style="">c_address</i> is the lowest granularity level. According to <a href="#r11">(11)</a>, Q<sub>1</sub> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> Q<sub>2</sub> if, and only if it is possible to answer Q<sub>1</sub> using just the results of Q<sub>2</sub>, and Q<sub>1</sub> &ne; Q<sub>2</sub>. Therefore, it is possible to find out the revenue in a given nation by aggregating the results of the cities inside that nation, for example. Finally, an alternative to the star schema is the snowflake schema that normalizes the hierarchies. However, the snowflake schema introduces additional costly join operations among dimension tables in order to process queries <a href="#c19">(19)</a><a name="c19."></a>.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f1"> <img src="/img/revistas/cleiej/v15n2/2a08f1.jpg"> </a>     <br>  <b>Fig. 1:</b> A star schema for a DW of a retail application <a href="#c13">(13)</a>. </font> </p>        <p><font face="Verdana" size="2"><i style=""><span lang="EN-US">Drill-down</span></i><span lang="EN-US"> and <i style="">roll-up</i> OLAP operations depend on hierarchies <a href="#c1">(1)</a>. A <i style="">drill-down</i> operation decomposes fact data to lower levels of a hierarchy, then increasing data details. Inversely, a <i style="">roll-up</i> operation aggregates fact data to upper levels of a hierarchy, then summarizing data <a href="#c7">(7)</a>. <span style=""><a href="#f2">Fig. 2</a></span> shows examples of these operations adapted from <a href="#c18">(18)</a>, using existing hierarchies held by the dimension tables <i style="">Customer</i> and <i style="">Supplier</i>. Considering that the user firstly issued the query of <span style=""><a href="#f2">Fig. 2</a>/a&gt;</span>a and later issued the query of <span style=""><a href="#f2">Fig. 2</a></span>b, there was a <i style="">drill-down</i> operation based on both <i style="">(c_nation) </i></span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><i style=""><span lang="EN-US"> (c_city) </span></i><span lang="EN-US">and <i style="">(s_nation) </i></span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><i style=""><span lang="EN-US"> (s_city)</span></i><span lang="EN-US">. On the other hand, if the user had issued the queries inversely, there was a <i style="">roll-up</i> operation based also on those mentioned hierarchies. The underlined attributes in <span style=""><a href="#f2">Fig. 2</a></span> highlight these operations.</span></font></p>       <p><font face="Verdana"><span lang="EN-US"><font size="2">Both the queries of <span style=""><a href="#f2">Fig. 2</a></span>a and <span style=""><a href="#f2">Fig. 2</a></span>b exemplify the <i style="">slice-and-dice</i> operation, which consists of applying filters to the resulting data <a href="#c7">(7)</a>, such as &ldquo;<i style="">c_region = 'ASIA'<span style="">&nbsp; </span>AND s_region = 'ASIA' AND d_year &gt;= 1992 AND d_year &lt;= 1997</i>&rdquo;, shown in <span style=""><a href="#f2">Fig. 2</a></span>a. Finally, the <i style="">pivoting</i> operation enables reordering results by switching the axis for columns and rows <a href="#c7">(7)</a>. <span style=""><a href="#f3">Fig. 3</a></span>a shows the results for the query of <span style=""><a href="#f2">Fig. 2</a></span>a, whose column <i style="">d_year</i> was pivoted to be a row, providing the results of <span style=""><a href="#f3">Fig. 3</a></span>b. The representation of results in <span style=""><a href="#f3">Fig. 3</a></span>b is also known as a </font> <i style=""><font size="2">cross table </font> </i></span> <span style="font-size: 10pt;" lang="EN-US"><a href="#c6">(6)</a></span><span lang="EN-US"><font size="2">.</font></span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">OLAP tools support OLAP operations that are executed over the DW, such as <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> and enable multidimensional visualization and analysis <a href="#c1">(1)</a>. Mostly, the data cube is accessed through Multidimensional Expressions (MDX) <a href="#c20">(20)</a><a name="c20."></a> . For instance, Mondrian is an open source OLAP server that comprises these features and reports query results on Java Server Pages by rendering the cross table employing JPivot <a href="#c6">(6)</a> and synchronous requests that are sent to the server <a href="#c21">(21</a><a href="#r21">)</a><a name="c21."></a>. In order to enable OLAP operations, Mondrian requires the data cube definition in XML format describing the DW schema, e.g. fact and dimension tables, hierarchies and measures. The user may execute the Mondrian Schema Workbench and provide the proper inputs to generate the XML document containing the description of the DW. Otherwise, the user may execute any XML editor. This file ensures the correct access to tables, attributes and hierarchies when executing queries on Mondrian. Regarding query execution, the user types the query using MDX accessing the Mondrian interface. The MDX code is translated by Mondrian to SQL to access the database management system (DBMS), execute the query and finally retrieve the answers. The result set is then rendered in <i style="">cross tables </i>and charts and presented to the user, and then <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> operations are enabled. Conversely, recent web applications are adopting asynchronous requests based on Ajax and JSON (JavaScript Object Notation) <a href="#c26">(26)</a><a name="c26."></a>. Therefore we decided to adopt asynchronous requests to develop the BJIn OLAP Tool.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f2"> <img src="/img/revistas/cleiej/v15n2/2a08f2.jpg"> </a>     ]]></body>
<body><![CDATA[<br>  <b>Fig. 2:</b> Roll-up and drill-down operations </font> </p>        <p style="text-align: center;" align="center"><span lang="EN-US"> <font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f3"> <img src="/img/revistas/cleiej/v15n2/2a08f3.jpg"> </a>     <br>  <b>Fig. 3:</b> The original query results and the pivoted query results reorganized with year as a row </font> </p>        <p style="text-align: center;" align="center"><span lang="EN-US"> <font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">2.2 Improving query processing performance over data warehouses</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The costly method to process a query over a DW is to perform the <i style="">star-join</i>, by joining all tables of the star schema and then perform filters, groupings and sorting. This strategy provides prohibitive query response times, as discussed in Section 4. On the other hand, the methods discussed in this section can improve the query processing performance over DW, and are employed in the performance evaluation presented in Section 4.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Some methods store pre-computed data into tables after performing some operations. A <i style="">vertically fragmented view</i> <a href="#c8">(8)</a> maintains the minimum set of columns of the star schema that are necessary to answer a given query. For instance, the table shown in <span style=""><a href="#f4">Fig. 4</a></span>a has the minimum set of columns to provide the answer to the query shown in <span style=""><a href="#f2">Fig. 2</a></span>a. Note that all essential joins were computed when composing the view, by issuing &Pi; <i style=""><sub>c_region, s_region, c_nation, s_nation, d_year, lo_revenue</sub></i> (<i style="">Customer</i>&nbsp;</span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image006.jpg" v:shapes="_x0000_i1034" height="7" width="8"></span><span lang="EN-US"><span style="">&nbsp;&nbsp;</span><i style="">Lineorder</i>&nbsp;</span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image007.jpg" v:shapes="_x0000_i1035" height="7" width="8"></span><span lang="EN-US"><span style="">&nbsp;</span><i style="">Supplier</i>&nbsp;</span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image008.jpg" v:shapes="_x0000_i1036" height="7" width="8"></span><span lang="EN-US"><span style="">&nbsp;</span><i style="">Date</i>). Therefore, this view can be stored aiming at improving the query processing performance, since joins are avoided and only filters and groupings need to be computed to retrieve the query answer. </span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">On the other hand, <i style="">materialized views</i> <a href="#c9">(9)</a><a href="#c11">(11)</a><a href="#c12">(12)</a> pre-compute the DW information that can be used to answer queries that are frequently issued. A materialized view is built by creating a table to report pre-computed data from a fact table that was joined to dimension tables, and whose measures were aggregated. Since a materialized view stores pre-computed aggregated data, processing a query avoids joins and groupings, and drastically reduces the number of rows then benefiting the filters. For instance <span style=""><a href="#f5">Fig. 5</a></span>a depicts a materialized view created as <sub>c_nation, s_nation, d_year </sub>G<sub>SUM(lo_revenue)</sub> (&Pi; <i style=""><sub>c_region, s_region, c_nation, s_nation, d_year, lo_revenue</sub></i> (<i style="">Customer</i>&nbsp;</span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image009.jpg" v:shapes="_x0000_i1037" height="7" width="8"></span><span lang="EN-US"><span style="">&nbsp;&nbsp;</span><i style="">Lineorder</i>&nbsp;</span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image010.jpg" v:shapes="_x0000_i1038" height="7" width="8"></span><span lang="EN-US"><span style="">&nbsp;</span><i style="">Supplier</i>&nbsp;</span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image011.jpg" v:shapes="_x0000_i1039" height="7" width="8"></span><span lang="EN-US"><span style="">&nbsp;</span><i style="">Date</i>) ) to efficiently answer the query shown in <span style=""><a href="#f2">Fig. 2</a></span>a. This view can be stored aiming at improving the query processing performance, since joins and groupings are avoided, and only filters need to be computed to retrieve the query answer. The reduced set of rows benefits the performance of filtering. Finally, both vertically fragmented views and materialized views can be applied to OLAP tools to enhance the query processing performance over DW. For example, materialized views can be applied to Mondrian, i.e., aggregate tables according to Mondrian&rsquo;s terminology.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f4"> <img src="/img/revistas/cleiej/v15n2/2a08f4.jpg"> </a>     ]]></body>
<body><![CDATA[<br>  <b>Fig. 4:</b>Vertically fragmented view and Bitmap join indices </font>  </p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f5"> <img src="/img/revistas/cleiej/v15n2/2a08f5.jpg"> </a>     <br>  <b>Fig. 5:</b> Materialized view and Bitmap join indices </font> </p>       <p style="text-indent: 0cm;"><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Indices are an alternative to storing pre-computed data. The <i style="">bitmap index</i> <a href="#r14">(14)</a> builds one bit-vector to each distinct value <i style="">v</i> of the indexed attribute <i style="">A</i>. The attribute cardinality, <i style="">|A|</i>, is the number of distinct values of <i style="">A</i> and determines the quantity of existing bit-vectors. All bit-vectors have as many bits as the number of rows found in the indexed table. If for the <i style="">i</i>-th record of the table we have that <i style="">A</i> = <i style="">v</i>, then the <i style="">i</i>-th bit of the bit-vector built for value <i style="">v</i> is set to 1. Otherwise, the bit is set to 0. Suppose that the attribute <i style="">d_year</i> <span style=""><a href="#f3">Fig. 3</a></span>a is indexed by a <i style="">bitmap index</i>. The cardinality |<i style="">d_year</i>| is 6, resulting in six bit-vectors, each one of them associated to one of the values 1992, 1993, 1994, 1995, 1996 and 1997. For instance, the bit-vector for <i style="">d_year</i>=1992 is 1000001, denoting the existence of <i style="">d_year</i>=1992 in the first and seventh rows. The main advantage of processing queries using a bitmap index is the CPU efficiency of bitwise operations (i.e. AND, OR, XOR, NOT) <a href="#c22">(22)</a><a name="c22."></a>. For instance, to query &ldquo;<i style="">d_year&gt;=1992 AND d_year&lt;=1995</i>&rdquo;, there are bit-wise OR operations among the bit-vectors for the values involved, i.e., 1000001 OR 0100000 OR 0010000 OR 0001000. The result, 1111001, excludes the fifth and sixth rows from the result set. High cardinality attributes may impair the performance of the <i style="">bitmap index</i>, but binning, encoding and compression techniques minimize these losses <a href="#c14">(14)</a>. Currently, the FastBit is an efficient open source implementation of the bitmap index <a href="#c23">(23)</a><a name="c23."></a>.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Besides, a <i style="">bitmap join index</i> <a href="#r13">(13)</a><a href="#c13"> </a>can be created on the attribute <i style="">B</i> of a dimension table in order to indicate the set of rows in the fact table to be joined with a certain value of <i style="">B</i>. Therefore, each bit determines the rows of the fact table where a given value of <i style="">B</i> exists. As already mentioned, <span style=""><a href="#f4">Fig. 4</a></span>a shows the table obtained from applying     <br>  &Pi; <i style=""><sub>c_region, s_region, c_nation, s_nation, d_year, lo_revenue</sub></i> (<i style="">Customer&nbsp;</i></span><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image020.jpg" v:shapes="_x0000_i1044" height="7" width="8"></span><i style=""><span lang="EN-US"><span style="">&nbsp;&nbsp;</span>Lineorder&nbsp;</span></i><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image021.jpg" v:shapes="_x0000_i1045" height="7" width="8"></span><i style=""><span lang="EN-US"><span style="">&nbsp;&nbsp;</span>Supplier&nbsp;</span></i><span style="letter-spacing: -0.1pt;" lang="EN-US"><img src="./2a08_archivos/image022.jpg" v:shapes="_x0000_i1046" height="7" width="8"></span><i style=""><span lang="EN-US"><span style="">&nbsp;&nbsp;</span>Date</span></i><span lang="EN-US">) on the star schema shown in <span style=""><a href="#f1">Fig. 1</a></span> to answer the query of <span style=""><a href="#f2">Fig. 2</a></span>a. This table is the fact table <i style="">Lineorder </i>joined with the dimensions <i style="">Customer</i>, <i style="">Supplier</i> and <i style="">Date</i>. In <span style=""><a href="#f4">Fig. 4</a></span>b, bitmap join indices were built on attributes <i style="">c_region</i>, <i style="">s_region</i>, <i style="">c_nation</i>, <i style="">s_nation</i> and <i style="">d_year</i> to improve the performance when processing the query shown in <span style=""><a href="#f2">Fig. 2</a></span>a. As a result, these indices indicate the rows of the table shown in <span style=""><a href="#f4">Fig. 4</a></span>a where a given value occurs. For instance, <i style="">d_year</i> = 1998 occurs in the 8<sup>th</sup> and 9<sup>th</sup> rows of the table shown in <span style=""><a href="#f4">Fig. 4</a></span>a. Joins among huge DW tables are necessary only once to build the bitmap join index. After the index is built, the queries can be processed by accessing the index, avoiding costly joins among the tables of the DW. Bitmap join indices built over materialized views, as shown in <span style=""><a href="#f5">Fig. 5</a></span>b, are capable of processing queries even more efficiently than those built over vertically fragmented views, because the former maintain aggregated data (and a reduced data volume) while the latter does not. Although the bitmap join index improves the query processing over DW, none of the OLAP tools investigated in Section 5 adopted exclusively this index to process OLAP queries such as <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i>.</span></font></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">2.3 Appending rows to data warehouses, views and indices</span></font></p>       <p style="text-indent: 0cm;"><font face="Verdana" size="2"><span lang="EN-US">In this section, issues related to appending rows to vertically fragmented views, materialized views and bitmap join indices are discussed <a href="#c7">(7)</a><a href="#c19">(19)</a><a href="#c24">(24)</a><a href="#c25">(25)</a><a name="c24."></a><a name="c25."></a>, since they are essential to understand the append operation developed for the BJIn OLAP Tool. <span style="">&nbsp;</span>New rows are appended to DW on a regular time cycle, e.g. daily, weekly or monthly. Suppose that the three rows shown in <span style=""><a href="#f6">Fig. 6</a></span> are appended to the DW depicted in <span style=""><a href="#f1">Fig. 1</a></span>. Consider, also, that <i style="">lo_suppkey=715</i> references a supplier located in Brazil (<i style="">t1</i>), <i style="">lo_custkey=22851</i> references a customer located in Japan (<i style="">t1</i>), and <i style="">lo_orderdate=871</i> occurred in 1993 (<i style="">t1</i> and <i style="">t3</i>).</span></font></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f6"> <img src="/img/revistas/cleiej/v15n2/2a08f6.jpg"> </a>     ]]></body>
<body><![CDATA[<br>  <b>Fig. 6:</b>Three rows to be appended to the DW depicted in <a href="#f1">Fig. 1</a> </font> </p>   <font face="Verdana" size="2">       <br> </font>     <p></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Firstly, the row <i style="">t1</i> is inserted in the fact table <i style="">Lineorder</i>. Considering the vertically fragmented view of <span style=""><a href="#f4">Fig. 4</a></span>a, a new row is appended, as {'ASIA', 'AMERICA', 'JAPAN', 'BRAZIL', 1993, 7890}. In <span style=""><a href="#f4">Fig. 4</a></span>b, the bit-vector for <i style="">c_region</i>='AMERICA' has a bit 0 appended, while the bit-vector for <i style="">c_region</i>='ASIA' has a bit 1 appended, and the other attributes&rsquo; bit-vectors are similarly modified. As for the materialized view of <span style=""><a href="#f5">Fig. 5</a></span>a, the second row should be modified to comprise the value 586026 (i.e. 578136+7890) for the attribute <i style="">sum(lo_revenue)</i>. Finally, no one of the bit-vectors in <span style=""><a href="#f5">Fig. 5</a></span>b need to be modified, since any new row was inserted in the corresponding materialized view of <span style=""><a href="#f5">Fig. 5</a></span>a. However, if the attribute <i style="">sum(lo_revenue)</i> was indexed, the bit-vector for value 578136 would be modified by replacing a bit 1 by a bit 0 in the second row, i.e. the bit-vector would be modified from 010000000 to 000000000. In addition, a bit-vector for value 586026 (i.e. 578136+7890) would be created and have a bit 1 in the second row and zeroes in the remaining rows, i.e. 010000000. Clearly, the insertion of <i style="">t1 </i>in the DW reveals several challenges for maintaining vertically fragmented views, bitmap join indices or materialized views, which are necessary to speed up the query processing.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Secondly, the row <i style="">t2</i> is inserted in the dimension table <i style="">Customer</i> and does not affect the vertically fragmented view, the bitmap join indices or the materialized views since these are exclusively associated to facts. And thirdly, <i style="">t3</i> is inserted in the fact table <i style="">Lineorder</i>. As a result, the vertically fragmented view of <span style=""><a href="#f4">Fig. 4</a></span>a has a new row appended, as {'AMERICA', 'AMERICA', 'ECUADOR', 'BRAZIL', 1993, 92910}. As for the bitmap join indices shown in <span style=""><a href="#f4">Fig. 4</a></span>b, it is necessary to: (i) append a bit 1 in the bit-vector for <i style="">c_region</i>='AMERICA' and append a bit 0 in the bit-vector for <i style="">c_region</i>='ASIA'; (ii) append a bit 1 in the bit-vector for <i style="">s_region</i>='AMERICA' and append a bit 0 in the bit-vector for <i style="">s_region</i>='ASIA'; (iii) build a new bit-vector for <i style="">c_nation=</i>'ECUADOR', with a bit 1 in the last row and bits zeroes in the remaining rows; (iv) append a bit 1 in the bit-vector for <i style="">s_nation</i>='BRAZIL' and append a bit 0 in the remaining bit-vectors of this attribute; and (v) append a bit 1 in the bit-vector for <i style="">d_year</i>=1993 and append a bit 0 in the remaining bit-vectors of this attribute. As for the materialized view shown in <span style=""><a href="#f5">Fig. 5</a></span>a, a new row composed of {'AMERICA', 'AMERICA', 'ECUADOR', 'BRAZIL', 1993, 92910} is appended. If the attribute <i style="">sum(lo_revenue) </i>was indexed, a new bit-vector for value 92910 would be built with a bit 1 in the last row and zeroes in the remaining rows. Finally, the bitmap join index on <i style="">c_nation </i>in <span style=""><a href="#f5">Fig. 5</a></span>b earns a new bit-vector for value 'ECUADOR', while the other bit-vectors are modified similarly to those from <span style=""><a href="#f4">Fig. 4</a></span>b, as discussed. Clearly, the insertion of <i style="">t2 </i>and <i style="">t3 </i>in the DW reveals even more challenges for maintaining vertically fragmented views, bitmap join indices or materialized views aiming at speeding up the query processing. Particularly, the bitmap join indices required the creation of more bit-vectors, since a new customer was inserted in the <i style="">Customer</i> dimension table. The BJIn OLAP Tool supports appending new rows to the DW similarly to the insertion of <i style="">t1</i>, <i style="">t2</i> and <i style="">t3</i>, as detailed in Section 3.3.</span></font></p>       <p style="margin: 12pt 0cm 5.95pt; text-indent: 0cm;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">3 The Bitmap Join Index OLAP Tool</span></font></p>       <p style="margin-bottom: 12pt;"><font face="Verdana" size="2"><span lang="EN-US">The architecture of the Bitmap Join Index OLAP Tool (BJIn OLAP Tool) is shown in <span style=""><a href="#f7">Fig. 7</a></span>. The BJIn OLAP Tool was developed as an open source OLAP server written in Java that accesses bitmap join indices to speed up the OLAP operations <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i>. On the server side, our tool operates both the DBMS and the FastBit in order to build the indices, to issue queries over them and to append new rows to them. The queries are submitted by the client to the server, and the latter accesses strictly the indices to provide the answer rapidly with high performance. On the client side, the user interacts with our tool through Java Server Pages, submits queries and analyzes multidimensional data that are rendered on cross tables and charts produced by the Open Ajax Toolkit Framework. Whenever a cross table is modified by the user to produce another view, the corresponding chart is refreshed and synchronized with the cross table, and vice-versa. Some implemented facilities aid users to interact, i.e. the visualization of the data cube as a tree to select attributes to index and highlight and auto complete the query string to match the proper syntax. Finally, other utilities manipulate internal files to maintain logs, access privileges, configuration parameters, metadata and parsing.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"><a name="f7"> <img src="/img/revistas/cleiej/v15n2/2a08f7.jpg"> </a>     <br>  <b>Fig. 7:</b> The architecture of the BJIn OLAP Tool </font>   </p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p style="text-indent: 11.35pt;"><span lang="EN-US"> <font face="Verdana" size="2">Sections 3.1, 3.2, 3.3 and 3.4 describe building, query processing, data appending and drop operations over bitmap join indices using the BJIn OLAP Tool, respectively. Section 3.5 details additional features. We encourage the reader to access the BJIn OLAP Tool Portal at <i style=""><a href="http://gbd.dc.ufscar.br/bjinolap"><span style="color: windowtext; text-decoration: none;">http://gbd.dc.ufscar.br/bjinolap</span></a></i>.</font><i style=""><o:p></o:p></i></span></p>       <p style="margin: 12pt 0cm 5.95pt 28.9pt; text-indent: -28.9pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">3.1 Building the bitmap join indices</span></font></p>       <p><font face="Verdana" size="2"><span style="" lang="EN-GB">Before using the BJIn OLAP Tool to build bitmap join indices, the </span><span lang="EN-US">user should execute the Mondrian Schema Workbench to specify the attributes to be indexed, as well as dimension and fact tables, measures, and hierar&shy;chies that exist in the DW schema. The Workbench validates these inputs by checking the DW schema, i.e., by accessing the DBMS, assuring that the DW was properly described by the user. If the validation is successful, the Workbench generates a XML document that stores all the DW schema specification and the attributes to be indexed. The reuse of Mondrian Schema Workbench promotes the interoperability between Mondrian OLAP Server and the BJIn OLAP Tool, since the produced XML document can be used by both. While Mondrian reads the document to compose a data cube, our tool parses it in order to build the bitmap join indices on the specified attributes. However, the use of the Mondrian Schema Workbench does not impose a restriction, because another XML editor could be employed instead, since the syntax and tags remains the same.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">After specifying all parameters, the user logs in the BJIn OLAP Tool, uploads the corresponding XML document and sets or unsets the append flag, which determines if the indices shall support new rows to be appended or not (as detailed in Section 3.3). Thereafter, the UML activity diagram shown in <span style=""><a href="#f8">Fig. 8</a></span> models the whole process of how to build bitmap join indices using our tool. Once uploaded, the XML document is parsed by the BJIn OLAP Tool, which issues SQL and dump commands on the DBMS in order to compute joins and build a tempo&shy;rary table. This table is dumped to a set of CSV files (comma-separated values) that are stored into the BJIn OLAP directory. Then, the BJIn OLAP Tool issues <i style="">ardea</i> and <i style="">ibis</i> commands to the FastBit. While the former reads CSV files to store data into the FastBit binary format, the latter effec&shy;tively builds the bitmap index and stores it into the directory. Finally, the BJIn OLAP Tool records metadata that fully specifies the index, e.g. the names and types of the indexed columns, aliases and the available OLAP operations for that index. The log recording starts after the composition of SQL and dump commands and finishes after metadata are recorded. The log file is detailed in Section 3.5 and maintains a complete description of the building operation.</span></font></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f8"> <img src="/img/revistas/cleiej/v15n2/2a08f8.jpg"> </a>     <br>  <b>Fig. 8:</b> Building bitmap join indices using the BJIn OLAP Tool </font> </p>       <p style="margin-top: 12pt;"><font face="Verdana" size="2"><span lang="EN-US">For instance, suppose that <i style="">c_region</i>, <i style="">s_region</i>, <i style="">c_nation, s_nation</i>, <i style="">d_year</i> and <i style="">lo_revenue</i> from the DW depicted in <span style=""><a href="#f1">Fig. 1</a></span> were specified by the user to be indexed. They involve four different tables to be joined: <i style="">Customer</i>, <i style="">Lineorder</i>, <i style="">Date</i> and<i style=""> Supplier</i>. Therefore, the temporary table to be created by the SQL commands is exactly the one shown in <span style=""><a href="#f4">Fig. 4</a></span>a. Then, the bitmap join indices are created on the attributes of this temporary table. Note that indexing such attributes would enable <i style="">roll-up</i> or <i style="">drill-down</i> operations considering that <i style="">(c_region)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_nation)</i>. However, in order to enable <i style="">roll-up</i> or <i style="">drill-down</i> operations along the entire hierarchies <i style="">(c_region)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_nation)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_city)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_address) </i>and <i style="">(s_region)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(s_nation)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(s_city)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(s_address)</i>, the user may have firstly specified each one of these attributes on Mondrian Schema Workbench.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">A relevant remark is that the user can alternatively create bitmap join indices over materialized views, similarly to <span style=""><a href="#f5">Fig. 5</a></span>. Considering the activity diagram shown in <span style=""><a href="#f8">Fig. 8</a></span>, in addition to upload the XML document and set or unset the append flag, the user may check the option to build indices over the materialized view and then specify the attributes to be indexed. To specify these attributes, the user marks them on the BJIn OLAP Tool interface (i.e. the Tree Cube View component, shown in <span style=""><a href="#f7">Fig. 7</a></span>). Then, the DBMS builds a temporary table that corresponds to the materialized view containing the specified attributes. The creation of the materialized view causes an overhead because it requires data aggregation. On the other hand, the index has a reduced data volume and a better performance on query processing.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The BJIn OLAP Tool provides mechanisms to avoid, treat and report errors during the tasks to build bitmap join indices. The tool refuses the upload of any invalid XML documents or indices that are homonyms. All attributes have internal aliases that avoid ambiguity. Also, our tool limits the data volume to be manipulated by the FastBit, avoiding memory leaks.</span></font></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">3.2 Query processing</span></font></p>       ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span lang="EN-US">Whenever the user builds an index, its metadata is recorded and then the index becomes available to be queried. The UML activity diagram shown in <span style=""><a href="#f9">Fig. 9</a></span> models the whole process of how to process queries using our tool. Initially, the user chooses the index to be used among all available indices, and types the desired query. The BJIn OLAP Tool parses the query and writes the proper <i style="">ibis</i> command containing the query and the chosen index, and submits it to the FastBit. Then, the FastBit accesses the index and processes the query. After processing the query, the FastBit writes a CSV file containing the query results. The BJIn OLAP Tool reads this CSV file to build the cross table and render it on Java Server Pages, which are displayed to the user. Additionally, charts are displayed to depict the same results of the cross table.</span></font></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f9"> <img src="/img/revistas/cleiej/v15n2/2a08f9.jpg"> </a>     <br>  <b>Fig. 9:</b>   Issuing queries to be processed by the BJIn OLAP Tool </font> </p>        <p><font face="Verdana" size="2"><span lang="EN-US">After a query execution, rather than typing another query the user is able to per&shy;form OLAP operations as follows. Once the results were displayed, the <i style="">pivoting</i> oper&shy;ation is allowed. All the user needs to do is to drag and drop columns or rows to switch the axis of the cross table. This operation is computed on the client side, and therefore was not shown in <span style=""><a href="#f9">Fig. 9</a></span>. <i style="">Drill-down</i> and <i style="">roll-up</i> operations are also allowed for the user if the requested attributes were indexed and if there is at least one hierarchy involved in the previous query. For instance, if the previous query involves the <i style="">s_nation</i> attribute, a combo-box will enable the attribute <i style="">s_region</i> for the <i style="">roll-up</i> operation, and the attributes <i style="">s_city</i> and <i style="">s_address</i> for the <i style="">drill-down</i> operation. The user then selects the operation and the attributes of interest in the combo-box. Furthermore, <i style="">roll-up</i> and <i style="">drill-down</i> operations are ex&shy;ecuted on the server side, and correspond to issuing a new query. However, since results of the previous query were cached by the server and contain partial results of the new query, the performance is benefited. Every OLAP operation that the user applies to a cross table is also applied to synchronize the corresponding chart.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The query language used to compose queries is already defined by the FastBit and does not require joins or grouping clauses. The columns listed in the SELECT clause are used to aggregate results. Therefore, writing the query is a straightforward task for the user, since only SELECT-WHERE clauses need to be written. Furthermore, the <i style="">slice-and-dice </i>operation can be described as restrictions in the WHERE clause.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">For instance, suppose that attributes <i style="">c_region</i>, <i style="">s_region</i>, <i style="">c_nation</i>, <i style="">d_year</i> and <i style="">lo_revenue</i> were indexed and that the user issues the query &ldquo;<i style="">SELECT c_nation, s_nation, d_year, sum(lo_revenue) WHERE AND c_region = 'ASIA'<span style="">&nbsp; </span>AND s_region = 'ASIA' AND d_year &gt;= 1992 AND d_year &lt;= 1997</i>&rdquo;. The FROM clause is not necessary because the user had already selected the index to be queried. The WHERE clause has filters that define the <i style="">slice-and-dice</i> OLAP operation. To submit a <i style="">roll-up</i> operation on <i style="">c_nation</i>, instead of typing another query, the user should simply select the attribute <i style="">s_nation</i> in the combo-box. To perform a pivoting operation and switch the column <i style="">d_year</i> to a row, the user should simply drag and drop this item. The results of these operations are automatically applied to the chart that depicts the corresponding cross table.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The BJIn OLAP Tool provides mechanisms to avoid, treat and report errors during the tasks to process queries over bitmap join indices. Since the building and the data appending operations of bitmap join indices often spend several seconds (as discussed in Section 4), our tool does not enable queries over indices that are currently being built or having new rows appended. Besides, the tool refuses to issue queries that are syntactically wrong or that refer to attributes that are not indexed by the selected index. Ambiguity is avoided to issue and process queries, since all attributes have internal aliases. Moreover, any runtime error during the query execution is reported to the user. The log recording starts after parsing the query and finishes after displaying cross tables and charts. Finally, the OLAP operations of <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> are enabled only for attributes that were previously indexed and whose hierarchies were associated to the previous query.</span></font></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">3.3 Appending new rows to bitmap join indices</span></font></p>       <p style="margin-top: 12pt; text-align: justify;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">In the BJIn OLAP Tool, the existing bitmap join indices support new rows to be appended if the user had set the append flag before building the indices (see Section 3.1 and <span style=""><a href="#f8">Fig. 8</a></span>). The UML activity diagram shown in <span style=""><a href="#f10">Fig. 10</a></span> models the whole process of how to append new rows to existing bitmap join indices using the BJIn OLAP Tool. Firstly, the user provides the name of the index that wishes to append new rows to. Then, our tool reads the metadata of the specified index and then issues SQL and dump commands on the DBMS. A temporary table whose rows must be appended to the indices is accessed, and its rows are dumped in CSV files. After dumping data, all the rows of the temporary table are deleted. Then, the BJIn OLAP Tool composes <i style="">ardea</i> and <i style="">ibis</i> commands and issues them on FastBit using the cited CSV files to append the new rows and possibly create new bit-vectors. Finally, our tool updates the metadata file with the timestamp of the last row appended. The log recording starts after composing SQL and dump commands and finishes after recording the metadata.</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">In detail, whenever the user sets the append flag before building the indices, the BJIn OLAP Tool automatically creates two main components:</font><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><font size="2"><!--[endif]--></font> <span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">a temporary table with the same attributes of the indices; and</font><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">a trigger that monitors if new rows are being appended to the fact table of the DW.</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><font face="Verdana"><span style="font-size: 10pt;" lang="EN-US">The temporary table remains stored as long as the corresponding indices exist (see more details in Section 3.4). Rows are inserted into this table whenever the trigger detects an insertion into the fact table, similarly to the rows <i style="">t1</i> and <i style="">t3</i> exemplified in <span style=""><a href="#f6">Fig. 6</a></span>. The trigger maps the foreign key values of each appended row to the corresponding values of attributes that were indexed. Also, </span> </font><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">the trigger inserts the mapped appended rows in the temporary table. This table then contains the set of rows to be appended to the bitmap join indices. The trigger has a sequence of tasks to be performed, independently of the DW schema. These tasks are detailed in <span style="">Algorithm 1</span>, whose parameters and local variables are described in <span style=""><a href="#t1">Table 1</a></span>.</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">Initially, the record to be inserted in the temporary table is empty (line 1). There is a loop to assure the processing of the following tasks for every row inserted in the fact table (lines 2 to 19). For each attribute of the inserted row, the values are mapped to the values that will be appended to the index (lines 3 to 14). Attributes that have foreign keys referencing the dimension tables (lines 4 to 12) are distinguished from those attributes that denote measures (line 13). Finally, the record with mapped values is inserted in the temporary table (lines 15 to 18).</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><font face="Verdana"><span style="font-size: 10pt;" lang="EN-US">To map the values of the attributes that reference the dimension tables through foreign keys (e.g. <i style="">lo_custkey</i> in <span style=""><a href="#f1">Fig. 1</a></span>) to adequate values of the indexed attributes (e.g. <i style="">c_region </i>and <i style="">c_nation </i>in <span style=""><a href="#f1">Fig. 1</a></span>), each dimension table must be read (line 4). If one of the dimension tables store the given attribute (e.g. <i style="">Customer</i>), then it is necessary to compose the set of indexed attributes <i style="">C</i> (line 6). This set indicates all attributes in a given dimension table that also exist in the temporary table. For instance, if <i style="">Customer</i> is the dimension table and <i style="">temp</i> has the attributes of <span style=""><a href="#f4">Fig. 4</a></span>a, then <i style="">C</i> is assigned to</span></font><span style="font-size: 10pt; font-family: &quot;Verdana&quot;;" lang="EN-US"> </span> <font face="Verdana"><span style="font-size: 10pt;" lang="EN-US">{<i style="">c_region, s_region, c_nation, s_nation, d_year, lo_revenue</i>} </span> </font><span style="font-size: 10pt; font-family: Verdana" lang="EN-US">&Ccedil; </span><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">{<i style="">c_custkey, c_name, c_phone, c_mktsegment, c_address, c_city, c_nation, c_region</i>} and therefore C = {<i style="">c_nation, c_region</i>}. Then, for each element of C, the value for that attribute is fetched in the dimension table and added to the record that maintains mapped values (lines 7 to 10). For example, if the row <i style="">t1</i> of <span style=""><a href="#f6">Fig. 6</a></span> was inserted in the fact table, the values 'JAPAN' and 'ASIA' would be added to the record, since<i style=""> SELECT c_nation FROM Customer WHERE c_custkey = 22851</i> and <i style="">c_region FROM Customer WHERE c_custkey = 22851</i> would be executed. After executing these steps for all dimension tables, the record would contain {'ASIA', 'AMERICA', 'JAPAN', 'BRAZIL', 1993}. </font> <o:p></o:p></span></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f10"> <img src="/img/revistas/cleiej/v15n2/2a08f10.jpg"> </a>     <br>  <b>Fig. 10:</b> Appending new rows to bitmap join indices with the BJIn OLAP Tool </font> </p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f10">     <br>  <b>Algorithm 1:</b>    <br>   <img src="/img/revistas/cleiej/v15n2/2a08z1.jpg"> </a> </font> </p>      ]]></body>
<body><![CDATA[<p style="margin-top: 12pt; text-align: justify; text-indent: 11.35pt;"><a name="_Ref314155401"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">Further, the values for the attributes that denote measures are added to the record (line 13). In the previous example, the value for <i style="">lo_revenue</i> is added to the record, resulting in {'ASIA', 'AMERICA', 'JAPAN', 'BRAZIL', 1993, 7890}. As a result, the record store the mapped values. Finally, the insertion is performed in the temporary table using the mapped values from the record (lines 15 to 18), for example <i style="">INSERT INTO temp VALUES ('ASIA', 'AMERICA', 'JAPAN', 'BRAZIL', 1993, 7890)</i>. An important detail is to empty the record before processing another row (line 17). Note that the BJIn OLAP Tool has a strict control over attributes that are homonyms, avoiding the ambiguity that could occur if attributes in distinct dimension tables had the same name (in line 5). One important remark is that <span style="">Algorithm 1</span> supports only star schemas. To provide support for a snowflake schema, the BJIn OLAP Tool modifies line 8 to join the normalized tables and then fetch the attribute <i style="">c<sub>m</sub></i>. These tables are held by the set of dimension tables <i style="">D</i>.</font><o:p></o:p></span></a></p>      <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <b>Table 1:</b> Parameters and local variables of Algorithm 1      <br>  <a name="t1"> <img src="/img/revistas/cleiej/v15n2/2a08t1.jpg"> </a> </font> </p>        <p style="margin-top: 12pt; text-align: justify; text-indent: 11.35pt;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">Regarding the data appending to bitmap join indices using the BJIn OLAP Tool, we finally emphasize that:</font><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">The append operation comprises the creation of new bit-vectors if necessary, similarly to the insertion of rows <i style="">t1</i> and <i style="">t3</i> in the fact table <i style="">Lineorder</i>, according to <span style=""><a href="#f6">Fig. 6</a></span>.</font><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">Insertions in the fact table that are denied by the DBMS because they violate integrity or referential constraints are not considered by the BJIn OLAP Tool to append rows to the bitmap join indices.</font><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana"><span style="font-size: 10pt;" lang="EN-US">The replacement of values, similar to an UPDATE command of the SQL, is not supported. As exemplified in Section 2.2, this is the case for the bitmap join index built on the attribute <i style="">sum(lo_revenue)</i> of </span> <span style="font-size: 10pt" lang="EN-US"><a href="#f5">Fig. 5</a></span><span style="font-size: 10pt;" lang="EN-US">a</span></font><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana"> and the subsequent insertion of<span style="">&nbsp; </span>the row <i style="">t1</i> into Lineorder, according to <span style=""><a href="#f6">Fig. 6</a></span>.</font><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">If bitmap join indices created over a materialized view requires the replacement of values, firstly the materialized view and later the bitmap join indices are rebuilt.</font><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <font face="Verdana"><span style="font-size: 10pt; " lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">The append operation is not automatic and requires the user intention because, similarly to a DW, this operation should be executed in batch and during a time window when the indices are unavailable to users.</font><o:p></o:p></span></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">3.4 Dropping the bitmap join indices</span></font></p>       ]]></body>
<body><![CDATA[<p style="text-align: justify;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">The UML activity diagram shown in <span style=""><a href="#f11">Fig. 11</a></span> describes how to drop bitmap join indices using the BJIn OLAP Tool. Firstly, the user selects the index to be dropped and confirms the choice, because this operation is permanent and cannot be undone. Then, our tool checks if the user had set the append flag before building the index. If so, the DBMS is accessed and drops the corresponding temporary table and trigger. The files and directories concerning the index chosen are removed from the file system. The BJIn OLAP Tool provides mechanisms to avoid, treat and report errors during the tasks to drop bitmap join indices as follows. Only indices whose append flag were set require an access to the database. Besides, the metadata that describe the indices (Section 3.1) and the internal aliases for indices and their attributes avoid the deletion of indices that were not specified by the user.</font><o:p></o:p></span></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">3.5 Additional features</span></font></p>       <p style="text-align: justify;"><font face="Verdana"><span style="font-size: 10pt;" lang="EN-GB">T</span></font><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana">he operations involving bitmap join indices described in sections 3.1 to 3.4 require a previous authentication, i.e., the BJIn OLAP Tool only enables these operations if the user was previously identified and logged in. The privileges available to users are: <i style="">canUploadXml </i>to allow XML files to be uploaded by the user<i style="">; canCreateIndex </i>to allow the user to build indices;<i style=""> canAppendRows </i>to allow indices to have new rows appended;<i style=""> canDropIndex </i>to allow indices to be dropped by a given user; and<i style=""> isSuperUser</i> to determine if the user is a superuser and therefore has no restrictions.</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><font face="Verdana"><span style="font-size: 10pt;" lang="EN-US">In order to configure the BJIn OLAP Tool to run properly in a given operating system, the user sets the parameters in the configuration file <i style="">config.properties</i>. The properties required are: </span><i style=""><span style="font-size: 10pt;" lang="EN-US">ibisPath</span></i></font><span style="font-size: 10pt;" lang="EN-US"><font face="Verdana"> to indicate the directory where the <i style="">ibis</i> application was installed by the FastBit; <i style="">ardeaPath </i>to indicate the directory where the <i style="">ardea</i> application was installed by the FastBit; <i style="">url</i> to detail the Java Database Connection (JDBC) values; <i style="">driver</i> to specify the JDBC class; and <i style="">bjinolapPath </i>to indicate the directory where the BJIn OLAP Tool will manipulate folders and files associated to the bitmap join indices.</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">Another relevant feature implemented in the BJIn OLAP Tool is the log, which records every command issued by the tool, e.g. DBMS and operating system commands. All the described operations detailed in the previous sections have their specific logs. Every runtime error is recorded. As a result, the log benefits debugging the software. This feature was implemented using the log4j library (<a href="http://logging.apache.org"><span style="color: windowtext; text-decoration: none;">http://logging.apache.org</span></a>).</font><o:p></o:p></span></p>       <p style="text-align: justify; text-indent: 11.35pt;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">Currently, our tool is compatible to the operating systems Windows and Linux, to the DBMSs PostgreSQL, MySQL and IBM DB2&reg;, and to the browsers Opera, Chrome, Firefox, IE8 and IE9. Regarding the Java Virtual Machine, its version 7 is compatible.</font><o:p></o:p></span></p>       <p style="text-align: justify;"><span style="font-size: 10pt;" lang="EN-US"> <font face="Verdana">&nbsp;</font><o:p></o:p></span></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f11"> <img src="/img/revistas/cleiej/v15n2/2a08f11.jpg"> </a>     <br>  <b>Fig. 11:</b>  Dropping bitmap join indices with the BJIn OLAP Tool</font></p>       <p style="margin: 12pt 0cm 5.95pt; text-indent: 0cm;"><a name="_Ref313622101"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4 Experimental Evaluation</span></font></a></p>       ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span lang="EN-US">This section presents the experimental evaluation of the BJIn OLAP Tool, which was done by running performance tests. The results point out the remarkable performance of the BJIn OLAP Tool to process the following OLAP operations: <i style="">drill-down</i>, <i style="">roll-up</i> and <i style="">slice-and-dice</i>. We investigate the performance of our tool against the current technology of DBMS and against the Mondrian OLAP Server. Since the <i style="">pivoting</i> OLAP operation is performed on the client side, it was not evaluated in our tests.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">In section 4.1 we detail the experimental setup used to execute the tests. The first test, in Section 4.2, compares the <i style="">slice-and-dice </i>query processing performance for the BJIn OLAP Tool, vertically fragmented views stored by the DBMS and Mondrian OLAP Server. Furthermore, storage requirements and attributes&rsquo; cardinalities are addressed. In Section 4.3 we focus on the <i style="">drill-down </i>and <i style="">roll-up </i>query processing performance. Section 4.4 describes the results regarding a more voluminous DW and the use of materialized views and bitmap join indices built over these views. In Section 4.5, the performance of rendering interface components on the client side is assessed. Section 4.6 details the memory usage, while Section 4.7 evaluates the query processing performance and the portability issues. Finally, Section 4.8 focuses the cost of appending new rows to bitmap join indices using the BJIn OLAP Tool.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.1 Experimental setup</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Regarding the datasets, we used the Star Schema Benchmark (SSB) <span style=""><a href="#c18">(18)</a></span> to create two star schemas identical to that in <span style=""><a href="#f1">Fig. 1</a></span>. The DW1 dataset was loaded according to the SSB scale factor 1 and produced 6 million rows in the fact table, while the DW10 dataset was loaded with scale factor 10 and therefore was 10 times more voluminous than DW1. Both of them held attribute hierarchies such as <i style="">(s_region)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(s_nation)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(s_city)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(s_address)</i> and <i style="">(c_region)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_nation)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_city)</i> </span> <span style="font-family: Lucida Bright Math Symbol" lang="EN-US">9</span><span lang="EN-US"> <i style="">(c_address)</i>, then enabling the experimental evaluation of <i style="">drill-down</i> and <i style="">roll-up</i> operations. The DBMS automatically created B-trees to index the attributes that composed the primary keys of each table in DW1 and DW10 datasets. We did not create any additional indices.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The workload was composed of SSB&rsquo;s queries, which are organized in four groups of queries Q1, Q2, Q3 and Q4 and have increasing complexity <span style=""><a href="#c18">(18)</a></span>. Each group of query determines an intrinsic number of joins and filters, as well as groupings and sorting. <span style=""><a href="#f12">Fig. 12</a></span> illustrates each query group template. These templates are described in terms of the operations that are computed to execute their queries in <span style=""><a href="#t2">Table 2</a>&nbsp;</span>. Since the queries have filters in the WHERE clause, they enable <i style="">slice-and-dice</i> operations. The <i style="">drill-down</i> and <i style="">roll-up </i>operations were evaluated following the SSB&rsquo;s queries Q3.1, Q3.2, Q3.3 and Q3.4. Executing them progressively determines a <i style="">drill-down</i> operation, while the inverse execution consists of a <i style="">roll-up</i> operation. <span style="">&nbsp;</span>These queries are shown in <span style=""><a href="#f13">Fig. 13</a></span>, and the attributes used for <i style="">drill-down </i>and <i style="">roll-up</i> operations are highlighted in bold.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Other datasets were created as <i style="">vertically fragmented views</i> and <i style="">materialized views</i>, similarly to those of Section 2.2. Their descriptions are provided in the next sections. In addition to low cardinality attributes, all queries involve at least one high cardinality attribute. For instance, <i style="">lo_revenue</i> attribute has a cardinality of 3,345,588 in the DW1 dataset, and a cardinality of 5,841,774 in the DW10 dataset. These attributes were used aiming at assessing our tool when dealing with high cardinality.</span></font></p>       <p style="text-indent: 0cm;"><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font></span><o:p></o:p></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f12"> <img src="/img/revistas/cleiej/v15n2/2a08f12.jpg"> </a>     <br>  <b>Fig. 12:</b>  The templates for the SSB&rsquo;s queries <a href="#r18">(18)</a>.</font></p>        ]]></body>
<body><![CDATA[<p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <b>Table 2:</b>  Description of the queries templates in <a href="#f12">Fig. 12</a>    <br>  <a name="t2"> <img src="/img/revistas/cleiej/v15n2/2a08t2.jpg"> </a> </font> </p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f13"> <img src="/img/revistas/cleiej/v15n2/2a08f13.jpg"> </a>     <br>  <b>Fig. 13:</b>   Adapted queries to evaluate drill-down and roll-up operations</font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The hardware and software platforms used are described as follows. </span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">Platform P1 was a computer with an Intel&reg; Core&trade; 2 Duo processor with frequency of 2.80GHz, 320 GB SATA hard drive with 7200 RPM, and 3 GB of main memory. The operating system was CentOS 5.4 with Kernel Version 2.6.18-164.el5, and the following softwares were installed: FastBit 1.2.2, PostgreSQL 8.4, JDK 1.6.0_21 and Apache Tomcat 6.0.29; and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">Platform P2 comprised a computer with an Intel&reg; Core&trade; i5 processor with frequency of 2.66GHz, 640 GB SATA hard drive with 7200 RPM, 4 GB of main memory, Ubuntu 10.10 with Kernel 2.6.35-27, FastBit 1.2.4, PostgreSQL 9.0, JDK 1.6.0_24 and Apache Tomcat 7.0.14.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Two distinct platforms were utilized due to the costly operations involved. Both P1 and P2 platforms had Open Ajax Toolkit 2.8, Mondrian Schema Workbench 3.2.0 and Mondrian OLAP Server 3.2.1.13885 installed. Finally, all bitmap join indices were built with WAH compression algorithm, equality encoding and no binning. These features are enabled by the FastBit by default to improve Bitmap indices over high cardinality attributes <a href="#c14">(14)</a>.</span></font></p>       <p style="text-align: center;" align="center"><span lang="EN-US"> <font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.2 Comparing the BJIn OLAP Tool to <span style="letter-spacing: -0.1pt;">vertically fragmented views</span></span></font></p>       ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span lang="EN-US">These experiments were conducted in platform P1 and considered the following configurations to execute queries:</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">SJ</span></i><span lang="EN-US"> used the DBMS to compute the star-join on the DW1 dataset; </span> </font><span style="" lang="EN-US"><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">VFM</span></i><span lang="EN-US"> used the DBMS to avoid joins by accessing a specific vertically fragmented view that was previously built over the DW1 dataset; </span></font><span style="" lang="EN-US"><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices that were previously built over the DW1 dataset; and</span></font><span style="" lang="EN-US"><o:p></o:p></span></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian</span></i><span lang="EN-US"> OLAP Server to access the DW1 dataset using MDX.</span></font><span style="" lang="EN-US"><o:p></o:p></span></p>       <p style="text-indent: 11.35pt;"><font face="Verdana"><span lang="EN-US"> <font size="2">Note that the VFM configuration demanded the creation of one vertically fragmented view for each SSB query, similarly to that view of Section 2.2. We per&shy;formed all tests locally to avoid network latency. All SSB&rsquo;s queries were issued, and the system cache was flushed after the execution of each query. We gathered the elapsed time in seconds to process each query. The results were reported </font> </span> </font><span style="" lang="EN-US"><font size="2" face="Verdana">in <span style=""><a href="#f14">Fig. 14</a></span>.</font><o:p></o:p></span></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Clearly, the BJIn OLAP Tool outperformed all the other configurations, corroborat&shy;ing the use of the bitmap join index to process OLAP queries. On the other hand, the Mondrian configuration was the one that mostly impaired the query processing perfor&shy;mance. In fact, OLAP servers often access the star schema maintained by the DBMS in order to perform the queries, mapping MDX to SQL queries. Therefore, as the Mondrian configuration accessed DW1 just as the SJ configuration did, it was already expected that they would obtain similar results. Furthermore, there was an overhead that differed Mondrian and SJ configurations, since only the former needed to prepare Java Server Pages and render cross tables to show to the user. Both the SJ and the Mondrian configurations provided unacceptable query response times.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f14"> <img src="/img/revistas/cleiej/v15n2/2a08f14.jpg"> </a>     <br>  <b>Fig. 14:</b>  Elapsed time obtained by each configuration to process SSB&rsquo;s queries</font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Moreover, the VFM configuration overcame the SJ configuration since the former avoids joins. The exceptions were queries Q4.1 and Q4.2, where the VFM configuration performed a sequential scan on the text attribute <i style="">p_mfgr </i>introducing an overhead. However, the improvement provided by the VFM configuration was smaller than the improvement achieved by our tool to process queries. Actually, the time reduction im&shy;posed by the BJIn OLAP Tool over vertically fragmented views ranged from 33% in Q3.3 up to 84% in Q2.2. The time reduction is a percentage that determines how much more efficient one configuration was than other configuration. Note that, as every query of the workload had restrictions in the WHERE clause, the results corroborated the use of the bitmap join index in OLAP tools to improve the performance of the <i style="">slice-and-dice</i> operation.</span></font></p>       ]]></body>
<body><![CDATA[<p><span style="" lang="EN-US"><font face="Verdana" size="2">The attribute&rsquo;s cardinality is a very important issue whenever dealing with bitmap indices, since it determines the quantity of bit-vectors built for the corresponding attribute. <span style=""><a href="#f15">Fig. 15</a></span> illustrates, for the indices built for each query, the quantity of bit-vectors available, i.e. the sum of the cardinalities of all indexed attributes. Only the indices of group Q1 have less than 3 million bit-vectors. According to our assessments, every query execution accessed more than 99% of the available bit-vectors. Therefore, the results revealed that the BJIn OLAP Tool efficiently performed queries even for very high cardinalities and accessing a huge number of bit-vectors.</font><o:p></o:p></span></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The construction of the bitmap join indices spent 1,896 seconds, while the vertically fragmented views accessed by the DBMS spent 6,225 seconds to be built. Regarding storage, <span style=""><a href="#f16">Fig. 16</a></span> shows individual requirements for both vertically fragmented views (VFM) and bitmap join indices that were build to process each SSB query. Naturally, as more bit-vectors need to be built (<span style=""><a href="#f15">Fig. 15</a></span>), more storage space is required (<span style=""><a href="#f16">Fig. 16</a></span>). As a result, VFMs and bitmap join indices that were built for group Q1 required less storage space than other groups. Also, for group Q1, the bitmap join indices occupied less space than vertically fragmented views. </span></font></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f15"> <img src="/img/revistas/cleiej/v15n2/2a08f15.jpg"> </a>     <br>  <b>Fig. 15:</b> Quantity of bit-vectors available for the index of each query</font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f16"> <img src="/img/revistas/cleiej/v15n2/2a08f16.jpg"> </a>     <br>  <b>Fig. 16:</b>  Storage requirements for both the vertically fragmented views and the bitmap join indices</font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">On the other hand, considering groups Q2, Q3 and Q4, indices required more storage space than views. Although the cardinalities of the attributes in groups Q2, Q3 and Q4 were similar (<span style=""><a href="#f15">Fig. 15</a></span>), the storage requirements varied according to each query as shown in <span style=""><a href="#f16">Fig. 16</a></span>. This difference is due to the existence of attributes of distinct data types (and sizes in bytes) in each query. For instance, although queries Q2.1 and Q4.2 had bitmap join indices with similar cardinalities built (<span style=""><a href="#f15">Fig. 15</a></span>), their indices occupied distinct amount of storage space (<span style=""><a href="#f16">Fig. 16</a></span>). Finally, the DW1 dataset occupied 838 MB, the created vertical fragmented views occupied a sum of 5,193 MB, and the bitmap join indices occupied a sum of 5,652 MB. Compared to vertically fragmented views, bitmap join indices re&shy;quired 8.8% more disk space. However, these indices have reasonably improved the query processing performance and spent less time to be built.</span></font></p>       <p style="margin: 12pt 0cm 5.95pt 28.9pt; text-indent: -28.9pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.3 Drill-down and roll-up operations</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">In this test we evaluated <i style="">drill-down</i> and <i style="">roll-up </i>operations using platform P1 and the following test configurations: </span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices built over the DW1 dataset, comprising the attributes <i style="">d_year</i>, <i style="">d_yearmonth</i>, <i style="">s_region</i>, <i style="">s_nation</i>, <i style="">s_city</i>, <i style="">c_region</i>, <i style="">c_nation</i>, <i style="">c_city</i> and <i style="">lo_revenue</i>; and</span></font><span style="" lang="EN-US"><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian</span></i><span lang="EN-US"> OLAP Server to access the DW1 dataset using MDX.</span></font><span style="" lang="EN-US"><o:p></o:p></span></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">We executed the queries shown in <span style=""><a href="#f13">Fig. 13</a></span> consecutively without flushing the system cache between each query. This strategy allows the cache to be used and therefore to rapidly fetch partial results of the query. We performed both the <i style="">drill-down</i> and <i style="">roll-up</i> operations five times, ga&shy;thered the elapsed time of each specific query and later calculated the average. Also, we calculated the total elapsed time of each OLAP operation and the time reduction provided by the BJIn OLAP Tool over Mondrian. </span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The results were reported in <span style=""><a href="#t3">Table 3</a></span>, and revealed that the first query, i.e. the query Q3.1, was the costly query of the <i style="">drill-down</i> operation. This fact confirmed the importance of the cache whenever performing this OLAP operation, in order to rapidly fetch partial query results, and then provide a shorter elapsed time to process the subsequent queries. An important result derived from our experi&shy;ments is that the BJIn OLAP Tool greatly outperformed the Mondrian configuration to execute the first query of both <i style="">drill-down</i> and <i style="">roll-up</i> operations, i.e. Q3.1 and Q3.4, respectively.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">The experiments had also shown that the BJIn OLAP Tool drastically decreased the query response time to process <i style="">drill-down</i> and <i style="">roll-up</i> operations. Actually, our tool pro&shy;vided a time reduction of at least 45% over Mondrian. This fact corro&shy;borated the use of the bitmap join index in OLAP tools in order to improve the query processing performance of <i style="">drill-down</i> and <i style="">roll-up</i> operations.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <b>Table 3: </b> Drill-down and roll-up operations performed by Mondrian and the BJIn OLAP Tool      <br>  <a name="t3"> <img src="/img/revistas/cleiej/v15n2/2a08t3.jpg"> </a> </font> </p>         <p style="margin: 12pt 0cm 5.95pt 28.9pt; text-indent: -28.9pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.4 Increasing Data Volume and Accessing Materialized Views</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">In order to assess our BJIn OLAP Tool for its efficiency and scalability, we performed experiments with a greater data volume (DW10) than those used in sections 4.2 and 4.3 (DW1), and the same platform P1. Besides, in this section we state four new configurations as follows:</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">DBMS+MV</span></i><span lang="EN-US"><span style="">&nbsp; </span>was the DBMS avoiding joins by accessing specific materialized views that were built to process each one of the SSB&rsquo;s queries over the DW10 dataset (similarly to the view shown in <span style=""><a href="#f5">Fig. 5</a></span>a); </span> </font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian+MV </span></i><span lang="EN-US">was the Mondrian OLAP Server ac&shy;cessing the previously cited materialized views using MDX and Aggregate Tables; </span> </font></p>       ]]></body>
<body><![CDATA[<p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">FastBit</span></i><b style=""><span lang="EN-US"> </span></b><span lang="EN-US">used the FastBit to avoid joins by accessing bitmap join indices that were previously built over the cited materialized views (similarly to <span style=""><a href="#f5">Fig. 5</a></span>b); and </span> </font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> to avoid joins by accessing the previously mentioned bitmap join indices.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Although the DW10 had a greater vo&shy;lume, materialized views drastically reduced the quantity of rows. We performed all tests locally to avoid network latency. This test also compared the performance of the OLAP tool and its query engine, aiming to estimate the overhead, i.e. the difference between the time spent by the OLAP tool and the time spent by the query engine. While the query engine of Mondrian is the DBMS, the query engine of the BJIn OLAP Tool is the FastBit. All queries of the SSB were issued, and the system cache was flushed after the execution of each query. We gathered the elapsed time in seconds to process each query. The results were reported in <span style=""><a href="#f17">Fig. 17</a></span>.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The results revealed that the BJIn OLAP Tool outperformed the Mondrian configu&shy;ration in every query. Concerning the engines, the FastBit outperformed the DBMS in most queries, except for group Q1, which has a very low volume (less than 100 rows). Actually, the time reduction imposed by the BJIn OLAP Tool over the Mondrian configuration ranged from 71% in Q1.2 up to 97% in Q3.4. Therefore, our tool demonstrated to be feasible when indexing materialized views and processing queries using these indices.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f17"> <img src="/img/revistas/cleiej/v15n2/2a08f17.jpg"> </a>     <br>  <b>Fig. 17:</b>  Elapsed time to process SSB&rsquo;s queries on DW10 dataset, in logarithmic scale (base 10) </font> </p>       <p style="text-align: center;" align="center"><span lang="EN-US"> <font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Another interesting result showed that the BJIn OLAP Tool was capable of displaying the query results much more rapidly than the Mondrian configuration. <span style=""><a href="#f18">Fig. 18</a></span> shows how many seconds of overhead each OLAP tool added to the elapsed time spent by the query engine to process each query. In other words, it represents the difference between the OLAP tool elapsed time and the engine elapsed time, derived from <span style=""><a href="#f17">Fig. 17</a></span>. Although the DBMS provides the query answer quickly, there is an overhead that severely impaired the Mon&shy;drian configuration performance to cache the data cube, translate MDX and render the results. This overhead ranged from 11 seconds (Q1.2) to 83 seconds (Q4.1). This severe overhead was not observed on the BJIn OLAP Tool, which introduced only a few seconds to the FastBit elapsed time, i.e. at most 3 seconds (Q2.2).</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Regarding storage, the DW10 dataset occupied 10,540 MB, all bitmap join indices required 51 MB and all materialized views required 45.6 MB. The construction of the materialized views by the DBMS spent 174,416 seconds, while the indices spent 163 seconds to be built over these views. Although the indices added approximately 12% of storage requirements to materialized views, they greatly improved the query processing performance over the DW10 dataset. Also, the time to build the indices over the materialized views added only 0.00094% to the elapsed time to build these views.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f18"> <img src="/img/revistas/cleiej/v15n2/2a08f18.jpg"> </a>     ]]></body>
<body><![CDATA[<br>  <b>Fig. 18:</b> The overhead tool added to the elapsed time spent by the query engine</font></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.5 Rendering interface components on the client side to present the query results</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">In this section we evaluate the time spent by OLAP tools to render the interface components and present the query results to the user. Differently from the previous and remaining sections, this test assesses the performance on the client side. This evaluation was motivated by the fact that OLAP tools added significant overheads to the query processing elapsed times of their corresponding query engines, as discussed in Section 4.5. We measured how much time Mondrian and the BJIn OLAP Tool spent to load the entire Java Server Page, starting at the moment when the first byte transferred from the server became available, and finishing when the page became completely loaded on the client&rsquo;s Internet browser. We decided to use the queries of group Q3 (<span style=""><a href="#f13">Fig. 13</a></span>) because they were the most costly according to the results of sections 4.1 to 4.4. <span style=""><a href="#t4">Table 4</a></span> describes how many rows and columns composed the cross table to display the results of each query regarding the DW1 and DW10 datasets. Note that these datasets have different data volumes as they were generated according to SSB&rsquo;s scale factors 1 and 10, respectively. As a result, the quantity of rows for the DW1 and the DW10 datasets are not the same in <span style=""><a href="#t4">Table 4</a></span>. All tests were executed in platform P2 due to the complexity of the involved operations. We utilized the Mozilla Firefox 3.6.15 as Internet browser and gathered the elapsed time to load the pages with the utility FireBug 1.7.3.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <b>Table 4:</b>  Rows and columns that compose the cross table showing the queries&rsquo; results     <br>  <a name="t4"> <img src="/img/revistas/cleiej/v15n2/2a08t4.jpg"> </a> </font> </p>        <p style="margin-top: 12pt; text-indent: 17.85pt;"> <font face="Verdana" size="2"><span lang="EN-US">Firstly, we issued five times the queries of group Q3 over the DW1 dataset, gathered the elapsed time to load the page, and then calculated the average. The system cache was flushed between each query execution. We evaluated the following configurations:</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian+SJ </span></i><span lang="EN-US">accessed the DW1 dataset using MDX; and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices built for each query of group Q3.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The results are shown in <span style=""><a href="#f19">Fig. 19</a></span>a. They revealed that the BJIn OLAP Tool was three to five times more efficient than Mondrian to present the query results for the client on the Internet browser, considering Q3.1 and Q3.2, respectively. In addition, the BJIn OLAP Tool spent the shorter time to render the larger cross table, i.e., for Q3.2.</span></font></p>       <p style="text-indent: 18pt;"><font face="Verdana" size="2"><span lang="EN-US">Secondly, we rerun the experiment over the DW10 dataset and evaluated the following configurations:</span></font></p>       ]]></body>
<body><![CDATA[<p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian+MV </span></i><span lang="EN-US">accessed specific materialized views that were built to process each one of the four Q3 queries; and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool+MV</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices built over the mentioned materialized views.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">The results are shown in <span style=""><a href="#f19">Fig. 19</a></span>b and revealed that rendering the results of queries over a more voluminous DW did not impair the performance of both the BJIn OLAP Tool and Mondrian, if compared to the results of <span style=""><a href="#f19">Fig. 19</a></span>a. Although the query results and the number of rows of the cross table slightly differed (due to the different scale factors chosen for data generation, 1 and 10), there was no significant modifications on performance. Furthermore, the BJIn OLAP Tool outperformed Mondrian in all queries. Since the results of queries processed by the BJIn OLAP Tool are written in a CSV file (<span style=""><a href="#f9">Fig. 9</a></span>) and sent through JSON to the client, if a given query is processed by more voluminous indices (e.g. <i style="">BJIn OLAP Tool</i> configuration) or less voluminous indices (e.g. <i style="">BJIn OLAP Tool+MV</i> configuration), the performances to load the results on the query browser were similar and independent of the index data volume.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f19"> <img src="/img/revistas/cleiej/v15n2/2a08f19.jpg"> </a>     <br>  <b>Fig. 19:</b>  Elapsed time to load the pages with the answers of the queries in group Q3.</font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Finally, we issued five times the <i style="">drill-down </i>and the <i style="">roll-up</i> operations of query group Q3 over the DW10 dataset, gathered the elapsed time of each query and calculated the average of these five executions. The system cache was not flushed between each query execution, aiming at fetching previously computed results in the cache. We evaluated the following configurations:</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian+MV </span></i><span lang="EN-US">avoided joins by accessing a specific materialized view that was built to process all queries of the Q3 query group (i.e. Aggregate Table); and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices that were built over the previously cited materialized view.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">The results for the <i style="">drill-down </i>operation are shown in <span style=""><a href="#f20">Fig. 20</a></span>a and revealed that the BJIn OLAP Tool outperformed Mondrian in all queries. Also, our tool has proven to efficiently reuse cache and JSON to render the interface, since it drastically reduced the elapsed time to display the results of the subsequent queries that followed Q3.1. BJIn OLAP Tool also provided a maximum time reduction of 97% when executing Q3.2 after Q3.1, and a minimum time reduction of 8% when executing Q3.4 after Q3.3.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">The results for the <i style="">roll-up </i>operation are shown in <span style=""><a href="#f20">Fig. 20</a></span>b and revealed that the BJIn OLAP Tool outperformed Mondrian in all queries. Differently from the <i style="">drill-down </i>operation, the <i style="">roll-up</i> operation did not indicate decreasing response times when executing consecutive queries, for both the BJIn OLAP Tool and Mondrian. Particularly, there was an increase when executing the query Q3.1 after the query Q3.2 with our tool. This fact can be explained by the execution of a data aggregation that reduced 600 rows (Q3.2) to 150 rows (Q3.1) as shown in <span style=""><a href="#t4">Table 4</a></span>, causing an overhead. Even though, the response times to present the queries&rsquo; results were not greater than 0.009s. Again, the BJIn OLAP Tool drastically reduced the elapsed time to display the results of the subsequent queries that followed Q3.4, due to the use of cache and JSON.</span></font></p>       ]]></body>
<body><![CDATA[<p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f20"> <img src="/img/revistas/cleiej/v15n2/2a08f20.jpg"> </a>     <br>  <b>Fig. 20:</b> Elapsed time to load the pages with the answers of <i style="">drill-down </i>and <i style="">roll-up</i> operations. </font> </p>        <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">In short, the results presented in this section corroborated the reasonable performance of the interface components adopted by the BJIn OLAP Tool, and provided by the Open Ajax Toolkit Framework. Furthermore, these results were achieved flushing the cache when issuing individual queries (<span style=""><a href="#f19">Fig. 19</a></span>), or maintaining the cache to reuse previously fetched results and then benefit <i style="">drill-down </i>and <i style="">roll-up </i>operations (<span style=""><a href="#f20">Fig. 20</a></span>).</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.6 Memory usage</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">In this section we present a test that measured and compared the amount of main memory utilized by each OLAP tool. The web applications of Mondrian and of the BJIn OLAP Tool consumed the Java Virtual Machine heap that was measured using the NetBeans Profiler. This software is widely used by developers since is integrated to the NetBeans IDE and is free of charge. Also, the DBMS and the FastBit utilized the main memory managed by the operating system, which was measured using the <i style="">ps_mem.py</i> library. We summed the amount of memory of the OLAP tools and their corresponding query engines. In this section, all tests were run in platform P2 due to the complexity of the involved operations.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Firstly, we issued the Q3 <i style="">roll-up</i> operation (<span style=""><a href="#f13">Fig. 13</a></span>) over the DW1 dataset and evaluated the following configurations:</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian </span></i><span lang="EN-US">was the Mondrian OLAP Server ac&shy;cessing the DW1 with the DBMS as query engine; and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices with the FastBit as query engine.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US"><span style=""><a href="#f21">Fig. 21</a></span> shows the results. The BJIn OLAP Tool had peaks of memory usage whenever one of the four queries was submitted to FastBit. These peaks indicated much more memory usage than Mondrian. However, the BJIn OLAP Tool spent a shorter time to provide the query answer. We concluded that, for the <i style="">roll-up </i>operation, our tool required more memory in a shorter period, while Mondrian required less and increasing memory for a longer period.</span></font></p>       ]]></body>
<body><![CDATA[<p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f21"> <img src="/img/revistas/cleiej/v15n2/2a08f21.jpg"> </a>     <br>  <b>Fig. 21:</b> Memory usage for the roll-up operation over DW1 dataset</font></p>       <p style="text-indent: 18pt;"><font face="Verdana" size="2"><span lang="EN-US">Secondly, we issued the query Q3.4 (<span style=""><a href="#f13">Fig. 13</a></span>) over the DW10 dataset and evaluated the following configurations:</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian </span></i><span lang="EN-US">was the Mondrian OLAP Server ac&shy;cessing the materialized view using MDX and an Aggregate Table, using the DBMS as query engine;</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices that were built over the cited materialized view, using the FastBit as query engine.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The results are shown in <span style=""><a href="#f22">Fig. 22</a></span>. Although the BJIn OLAP Tool consumed more memory than Mondrian during the initial 6 seconds of execution, it provided a much shorter elapsed time than the latter. Also, Mondrian drastically increased its memory consumption after 6 seconds of execution. The FastBit introduced only one peak of memory consumption (totalizing 55MB) that lasted around 1 second. Again, our OLAP tool had a feasible memory usage, even considering the most costly query (according to <span style=""><a href="#f17">Fig. 17</a></span>).</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f22"> <img src="/img/revistas/cleiej/v15n2/2a08f22.jpg"> </a>     <br>  <b>Fig. 22:</b>  Memory usage for the query Q3.4 issued over the DW10 dataset</font></p>       <p><span style="color: red;" lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.7 Portability and the query processing performance</span></font></p>       <p style="text-indent: 0cm;"><font face="Verdana" size="2"><span lang="EN-US">In this section we assess the query processing performance of both Mondrian and the BJIn OLAP Tool in two different operating systems aiming at testing the portability. In addition to Linux Ubuntu, we installed Microsoft Windows 7 SP1 Professional 64 bits in the platform P2. Firstly, we issued five times the queries of group Q3 (<span style=""><a href="#f13">Fig. 13</a></span>) over the DW1 dataset, gathered the elapsed time of each query and calculated the average of these five executions. The system cache was flushed between each query execution. We evaluated the following configurations in both operating systems (namely Win and Linux):</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian+SJ</span></i><span lang="EN-US"> accessed the DW1 dataset using MDX; and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices built over the DW1 dataset.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">The results are shown in <span style=""><a href="#f23">Fig. 23</a></span>. Clearly, the BJIn OLAP Tool outperformed Mondrian in both operating systems. Comparing Mondrian to itself, it was notably more efficient in one of the operating systems. On the other hand, our tool achieved similar results in most queries, independently from the operating system.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f23"> <img src="/img/revistas/cleiej/v15n2/2a08f23.jpg"> </a>     <br>  <b>Fig. 23:</b> Portability and the query processing performance for the DW1 dataset </font>  </p>        <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Secondly, we repeated the previously described procedures on DW10 dataset to evaluate the following configurations in both operating system (namely Win and Linux):</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">Mondrian+MV </span></i><span lang="EN-US">avoided joins by accessing a specific materialized views that was built to process all queries of the Q3 query group (i.e. an Aggregate Table); and</span></font></p>       <p style="margin-left: 36pt; text-indent: -18pt;"><font face="Verdana" size="2"> <span lang="EN-US">&middot;</span></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><i style=""><span lang="EN-US">BJIn OLAP Tool</span></i><span lang="EN-US"> avoided joins by accessing bitmap join indices that were built over the previously cited materialized view.</span></font></p>       ]]></body>
<body><![CDATA[<p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">The results are shown in <span style="">Fig. 24</span>. Again, the BJIn OLAP Tool outperformed Mondrian in both operating systems. Comparing Mondrian to itself, it was notably more efficient in one of the operating systems. Both Mondrian and the BJIn OLAP Tool were more efficient in the Linux operating system when dealing with materialized views and indices built over materialized views, respectively.</span></font></p>       <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f24"> <img src="/img/revistas/cleiej/v15n2/2a08f24.jpg"> </a>     <br>  <b>Fig. 24:</b> Portability and the query processing performance for the DW10 dataset</font></p>       <p style="margin-top: 12pt;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">4.8 Appending new rows to bitmap join indices</span></font></p>       <p style="text-indent: 0cm;"><font face="Verdana" size="2"><span lang="EN-US">In this section we evaluate the performance of the append operation over bitmap join indices maintained by the BJIn OLAP Tool. We utilized the platform P2, the DW1 dataset, and the most costly bitmap join indices concerning storage requirements, i.e., those indices built to answer the query Q4.2 (see <span style=""><a href="#f16">Fig. 16</a></span>). We also introduced a workload composed of 10% of the original index volume, i.e., 600,000 new rows to be appended to the fact table <i style="">Lineorder</i>. In addition, new values were also introduced in the dimension tables of the DW. As a result, the operation not only appended new bits to existing bit-vectors, but also created new bit-vectors and increased the attributes&rsquo; cardinalities as shown in <span style=""><b style=""><a href="#t5">Table 5</a></b></span>. Each new bit-vector created had a minimum of 6 million bits with value 0, since these bits refer to the former existing rows of the index.</span></font></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <b>Table 5:</b> How many new bit-vectors were created for each indexed attribute      <br>  <a name="t5"> <img src="/img/revistas/cleiej/v15n2/2a08t5.jpg"> </a> </font> </p>         <p style="text-indent: 0cm;"><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font></span><o:p></o:p></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The first test assessed the performance of the insertion of new rows in the DW1 dataset. The insertion of the new rows spent 184.03 seconds considering the DW1 dataset with the append trigger. On the other hand, the same insertion took 126.89 seconds without the trigger. Therefore, the execution of the trigger introduced an overhead of 31.05% to the normal insertion in the DW1 dataset. This overhead should be taken into account when using the BJIn OLAP Tool, since it delays the insertion of new rows into the DW tables. Particularly, the delay is caused mainly due to several queries issued by the trigger before the insertion into the temporary table (line 08 of </span><span style="" lang="EN-US">Algorithm 1</span><span lang="EN-US">). </span> </font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The second test evaluated the time to process the following tasks related to the append operation of the BJIn OLAP Tool: dumping the temporary table using the DBMS and executing <i style="">ardea </i>and <i style="">ibis</i> commands in the FastBit to append new values and create new bit-vectors. The whole process took 15.45 seconds. <span style=""><a href="#f25">Fig. 25</a></span>a reveals that dumping the temporary table consumed 45.12% of the time spent for the append operation. On the other hand, the manipulation of the indices consumed 54.88% of this time. Therefore, the tasks performed by the FastBit demonstrated to be more costly than those performed by the DBMS.</span></font></p>       ]]></body>
<body><![CDATA[<p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <a name="f25"> <img src="/img/revistas/cleiej/v15n2/2a08f25.jpg"> </a>     <br>  <b>Fig. 25:</b> Tests regarding the append operation </font> </p>       <p><font face="Verdana" size="2"><span lang="EN-US">Finally, the last test compared the building operation to the append operation, according to the tasks performed by the DBMS and the FastBit. We aimed to identify if rebuilding the indices would be more advantageous than appending new rows to them. The results are shown in <span style=""><a href="#f25">Fig. 25</a></span>b. The FastBit execution spent the major parcel of the elapsed time to build the indices, as already identified for the task of appending new rows to indices (<span style=""><a href="#f25">Fig. 25</a></span>a). Also, the building operation took 120.33 seconds, while the append operation took only 15.45 seconds. Therefore, appending new rows to the indices has shown to be more advantageous than rebuilding these indices, since the append operation represented only 12.84% of the time spent by the building operation.</span></font></p>       <p style="margin: 12pt 0cm 5.95pt; text-indent: 0cm;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="" lang="EN-US"><font face="Verdana" size="2">5 Related Work</font><o:p></o:p></span></p>       <p style=""><font face="Verdana" size="2"><span lang="EN-US">In <span style=""><a href="#t6">Table 6</a></span> existing software are compared to the BJIn OLAP Tool. Oracle BI enables the bitmap join index and new rows to be appended to it. However, the use of this index is recommended only when indexing very low cardinality attributes <span style=""><a href="#c5">(5)</a></span>. Conversely, the FastBit provides the support to index attributes with higher cardinalities for our tool, e.g. <i style="">lo_revenue</i> whose cardinality is 3,345,588. Furthermore, Oracle BI platform is not open source software, does not consist of a web application and therefore was not employed in our performance evaluation.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Regarding the Mondrian OLAP Server <a href="#c6">(6)</a>, although it sup&shy;ports materialized views to improve the query processing performance, it currently does not support the bitmap join index. Moreover, the user must learn and type MDX to issue queries. On the other hand, the BJIn OLAP Tool uses this index and supports a query language that is syntactically based on SQL. Although this query language does not provide OLAP operations, the user is able to perform them from the BJIn OLAP Tool graphical user interface. As a result, the BJIn OLAP Tool <span style="letter-spacing: -0.2pt;">does not require knowledge about additional query languages, such as MDX that is commonly adopted by existing OLAP Tools <a href="#c6">(6)</a><a href="#c5">(5)</a><a href="#c4">(4)</a><a href="#c20">(20)</a></span>. Besides, Mondrian does not implement any mechanisms to append new rows to materialized views, while the BJIn OLAP Tool enables new rows to be appended to bitmap join indices.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Important issues regarding the design of the interfaces of Mondrian and the BJIn OLAP Tool need to be stated. The former employs synchronous requests to transfer data from the server to the client. As a result, the server retrieves the query answer and sends preprocessed cross tables and charts to the client, which interprets the HTML code and renders the components. On the other hand, the latter employs asynchronous requests through Ajax and processes JSON <a href="#c26">(26)</a> sent by the server on the client side. In short, our tool processes interface components on the client side, while Mondrian does not. We did not consider existing unofficial Mondrian extensions.</span></font></p>        <p style="margin: 6pt 0cm; text-align: center;" align="center"> <font face="Verdana" size="2"> <b>Table 6:</b> Comparison among existing software and the BJIn OLAP Tool      <br>  <a name="t6"> <img src="/img/revistas/cleiej/v15n2/2a08t6.jpg"> </a> </font> </p>       <p><span lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>       ]]></body>
<body><![CDATA[<p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">In addition, the BJIn OLAP Tool interestingly uses the FastBit to be applied over DW and support <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> OLAP opera&shy;tions. Although the FastBit natively supports the bitmap join index, building, appending rows to and dropping this index require many long and complex instructions to be typed by the user, both in the operating system and DBMS command lines. The BJIn OLAP Tool avoids keyboarding by enabling a graphical interface for the user. Also, our tool operates the FastBit on the server side, while in the client side the results of queries are displayed to the user in cross tables and charts via the web. </span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The experimental evaluation presented in Section 4 aimed at testing the BJIn OLAP Tool. We investigated the feasibility of developing an OLAP tool exclusively based on the bitmap join index to process OLAP operations such as <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i>, comparing it to existing software. Differently from <a href="#c27">(27)</a><a name="c27."></a>, our goal was not to exhaustively assess the bitmap join index against other join indices. Also, we have not considered specific algorithms to select the bitmap join indices, as already stated by <a href="#c15">(15)</a>.</span></font></p>       <p style="margin: 12pt 0cm 5.95pt; text-indent: 0cm;"> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-GB">6 Conclusions and Future Work</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">In this paper, we introduced the BJIn OLAP Tool to efficiently perform <i style="">drill-down</i>, <i style="">roll-up</i>, <i style="">slice-and-dice</i> and <i style="">pivoting</i> OLAP operations over DW, by employing the bitmap join index. The BJIn OLAP Tool is Free Software and was implemented and tested through a performance evalua&shy;tion to assess its efficiency and to corroborate the feasibility of adopting strictly the bitmap join index in an OLAP tool. The performance results reported that our BJIn OLAP Tool provided a performance gain that ranged from 31% up to 97% if com&shy;pared to existing solutions regarding the query processing, even for attributes with a very high cardinality. Furthermore, our tool has proven to efficiently process these operations both on the server and client sides, for different volumes of data and also taking into account different operating systems, enforcing its portability. In addition, the BJIn OLAP Tool provides a reasonable use of the main memory and enables new rows to be appended to bitmap join indices.</span></font></p>       <p style="text-indent: 11.35pt;"><font face="Verdana" size="2"><span lang="EN-US">Currently, the BJIn OLAP Tool is being applied to the Web-PIDE Project over DW containing real educational data from Brazilian Government <a href="#c28">(28)</a><a href="#c29">(29)</a>,<a name="c28."></a><a name="c29."></a> to aid decision takers on planning Educational Policies. Moreover, our tool is under a registration process to be formally registered as Free Software, and its internet portal is under development. As future work, we intend to investigate <i style="">drill-across</i> OLAP oper&shy;ations, adapt the tool for Spatial OLAP operations <a href="#c17">(17)</a> and enable the use on mobile devices <a href="#c30">(30)</a><a name="c30."></a>. Also, the BJIn OLAP Tool will be and its Portal will contain proper documentation.</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">Acknowledgements</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The 1<sup>st</sup> author thanks the support of IFSP Undergraduate Research Grant. </span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">The 2<sup>nd</sup> author thanks Projeto Web-PIDE (Observat&oacute;rio da Educa&ccedil;&atilde;o: CAPES/INEP).</span></font></p>       <p><font face="Verdana" size="2"><span lang="EN-US">References</span></font></p>       <!-- ref --><p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;<a name="c1"></a><a href="#c1.">(1)</a> &nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">R. Wrembel, C. Koncilia, <i style="">Data Warehouses and OLAP: Concepts, Architectures and Solutions</i>. IRM Press, 2006.    </span></font></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;<a name="c2"></a> &nbsp;(<a href="#c2.">2</a>) &nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">L. Xu, L. Zeng, Z. Shi, Q. He, M. Wang, &ldquo;Research on business intelligence in enterprise computing environment,&rdquo; <i style="">IEEE SMC</i>, pp.3270-3275, 2007.</span></font></p>       <!-- ref --><p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;<a name="c3"></a> (<a href="#c3.">3</a>) &nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">W. H. Inmon, <i style="">Building the Data Warehouse</i>. Wiley, 2002.    </span></font></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;<a name="c4"></a>&nbsp; (<a href="#c4.">4</a>) &nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">M. Golfarelli, &ldquo;Open source BI platforms: a functional and architectural comparison,&rdquo; <i style="">DaWaK</i>, pp. 287-297, Springer, 2009.</span></font></p>       <!-- ref --><p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;<a name="c5"></a> (<a href="#c5.">5)</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">S. Fogel, C. Johnston, S. Moore, T. Morales, P. Potineri, R. Urbano, L. Ashdown, J. Greenberg, <i style="">Oracle 11g database administrator&#700;s guide</i>. 2010.     </span> </font></p>       <!-- ref --><p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;<a name="c6"></a> <a href="#c6.">(6</a>) &nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">M. Casters, R. Bouman, J. Dongen, <i style="">Pentaho&reg; Kettle Solutions</i>. Sybex, 2010.    </span></font></p>       <p> <span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;<a name="c7"></a> (<a href="#c7.">7</a>) &nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2"><span lang="EN-US">S. Chaudhuri, U. Dayal, &ldquo;An overview of data warehousing and OLAP technology,&rdquo; <i style="">SIGMOD Record</i>, vol. 26, pp. 65-74, 1997.</span></font></p>       ]]></body>
<body><![CDATA[<p><span lang="EN-US"><font face="Verdana" size="2"><a name="c8"></a>(<a href="#c8.">8</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">M. Golfarelli, D. Maio, S. Rizzi, &ldquo;Applying vertical fragmentation techniques in logical design of multidimensional databases,&rdquo; <i style="">DaWaK</i>, pp. 11-23, Springer, 2000.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c9"></a>(<a href="#c9.">9</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">E. Baikousi, P. Vassiliadis, &ldquo;View usability and safety for the answering of top-k queries via materialized views,&rdquo; <i style="">DOLAP</i>, pp. 97-104, ACM, New York, 2009.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c10"></a>(<a href="#c10.">10</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">L. Bellatreche, K. Y. Woameno, &ldquo;Dimension table driven approach to referential partition relational data warehouses,&rdquo; <i style="">DOLAP</i>, pp. 9-16. ACM, New York, 2009.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c11"></a>(<a href="#c11.">11</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">V. Harinarayan, A. Rajaraman, J. D. Ullman, &ldquo;Implementing data cubes efficiently,&rdquo; <i style="">SIGMOD Record</i>, vol. 25, pp. 205-216, 1996.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c12"></a>(<a href="#c12.">12</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">A. S. Firmino, R. C. Mateus, V. C. Times, L. F. Cabral, T. L. L. Siqueira, R. R. Ciferri, C. D. A. Ciferri, &ldquo;A Novel Method for Selecting and Materializing Views based on OLAP Signatures and GRASP,&rdquo; <i style="">JIDM</i>, vol. 2, no. 3, pp. 479-494, 2011.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c13"></a>(<a href="#c13.">13</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">P. O&#700;Neil, G. Graefe, &ldquo;Multi-table joins through bitmapped join indices,&rdquo; <i style="">SIGMOD Record</i>, vol. 24, pp. 8-11, 1995.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c14"></a>(<a href="#c14.">14</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">K. Stockinger, K. Wu, &ldquo;Bitmap indices for data warehouses,&rdquo; in <i style="">Data Warehouses and OLAP</i>, IRM Press, 2006, pp. 157-178.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c15"></a>(<a href="#c15.">15)</a></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">L. Bellatreche, K. Boukhalfa, &ldquo;Yet Another Algorithms for Selecting Bitmap Join Indexes&rdquo; <i style="">DaWaK</i>, pp. 105-116, 2010.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c16"></a>(<a href="#c16.">16</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">A. C. Carniel, T. L. L. Siqueira, &ldquo;An OLAP Tool based on the Bitmap Join Index,&rdquo; <i style="">CLEI</i>, pp. 911-926, 2011.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c17"></a>(<a href="#c17.">17</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">T. L. L. Siqueira, C. D. A. Ciferri, V. C. Times, R. R. Ciferri, &ldquo;The SB-index and the HSB-Index: efficient indices for spatial data warehouses,&rdquo; <i style="">Geoinformatica</i>, vol.16, no. 1, pp. 165-205, 2011.</span></font></p>       ]]></body>
<body><![CDATA[<p><span lang="EN-US"><font face="Verdana" size="2"><a name="c18"></a>(<a href="#c18.">18</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">P. O&rsquo;Neil, E. O&rsquo;Neil, X. Chen, S. Revilak, &ldquo;The star schema benchmark and augmented fact table indexing,&rdquo;<span style="">&nbsp; </span><i style="">TPCTC</i>, pp. 237&ndash;252, 2009.</span></font></p>       <!-- ref --><p><span lang="EN-US"><font face="Verdana" size="2"><a name="c19"></a><a href="#c19.">(19</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">R. Kimball, M. Ross, <i style="">The data warehouse toolkit: the complete guide to dimensional modeling</i>. John Wiley &amp; Sons, Inc., Chichester,     2002.</span></font></p>       <!-- ref --><p><span lang="EN-US"><font face="Verdana" size="2"><a name="c20"></a>(<a href="#c20.">20)</a></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">M. Whitehorn, R. Zare, M. Pasumansky, <i style="">Fast Track to MDX</i>. Springer, 2005.    </span></font></p>       <p><span style="letter-spacing: -0.2pt;" lang="EN-US"> <font face="Verdana" size="2"><a name="c21"></a>(<a href="#c21.">21)</a></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal"><a href="#c21.">&nbsp;</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2">N. C. Zakas, J. McPeak, J. Fawcett, &ldquo;What is Ajax?,&rdquo; in <i style="">Professional Ajax</i>, Wiley Publishing Inc., 2006, pp. 1-45.</font><o:p></o:p></span></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a href="#c22." name="c22"></a><a href="#c22.">(22</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">C. Y. Chan, &ldquo;Bitmap Index,&rdquo; in <i style="">Encyclopedia of Database Systems</i>, Springer, 2009, pp. 244-248.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c23"></a>(<a href="#c23.">23)</a></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">O. R&uuml;bel, A. Shoshani, A. Sim, K. Stockinger, G. Weber, W. M. Zhang, Prabhat, &ldquo;FastBit: interactively searching massive data,&rdquo; <i style="">J. of Physics</i>: Conference Series, vol. 180, 12053, 2009.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c24"></a><a href="#c24.">(24</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">C. D. A. Ciferri, F. F. Fonseca, &ldquo;Materialized Views in Data Warehousing Environments,&rdquo; <i style="">SCCC</i>, pp. 3-12, 2001.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c25"></a>(<a href="#c25.">25</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">G. Canahuate, &ldquo;Update Conscious Bitmap Indexes,&rdquo; in <i style="">Enhanced Bitmap Indexes for Large Scale Data Management</i>, The Ohio State University, Dissertation, ch. 7, pp 141-163, 2009.</span></font></p>       ]]></body>
<body><![CDATA[<!-- ref --><p><span lang="EN-US"><font face="Verdana" size="2"><a name="c26"></a>(<a href="#c26.">26</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">D. Crockford<i style="">, JavaScript: The Good Parts</i>. Yahoo Press, 2008.    </span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c27"></a>(<a href="#c27.">27)</a></font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">A. Datta, D. VanderMeer, K. Ramamritham, &ldquo;Parallel Star Join+DataIndexes: efficient query processing in data warehouses and OLAP,&rdquo; <i style="">IEEE TKDE</i>, vol. 14, pp. 1299-1316, 2002.</span></font></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c28"></a>(<a href="#c28.">28</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">A. C. Carniel, T. L. L. Siqueira, &ldquo;The Bitmap Join Index OLAP Tool,&rdquo; <i style="">SBBD Demos</i>, pp. 13-18. 2011.</span></font></p>       <p><span style="" lang="PT-BR"><font face="Verdana" size="2"><a name="c29"></a><a href="#c29.">(29</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font face="Verdana" size="2">T. L. L. Siqueira, R. R. Ciferri, M. T. P. Santos, &ldquo;Projeto, constru&ccedil;&atilde;o e manuten&ccedil;&atilde;o de data warehouses para auxiliar o planejamento de pol&iacute;ticas p&uacute;blicas de educa&ccedil;&atilde;o,&rdquo; <i style="">XVI Jornadas de J&oacute;venes Investigadores,</i> AUGM, pp. 1016-1025, 2008.</font><o:p></o:p></span></p>       <p><span lang="EN-US"><font face="Verdana" size="2"><a name="c30"></a>(<a href="#c30.">30</a>)</font><span style="font-family: &quot;Verdana&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><font face="Verdana" size="2"><span lang="EN-US">A. S. Maniatis, &ldquo;The Case for Mobile OLAP,&rdquo; <i style="">Pervasive Information Management</i> <i style="">PIM &rsquo;04</i>, Mar., 2004. </span> </font></p>       <p><span style="" lang="EN-US"><font face="Verdana" size="2">&nbsp;</font><o:p></o:p></span></p>   </div>        ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wrembel]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Koncilia]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Data Warehouses and OLAP: Concepts, Architectures and Solutions]]></source>
<year>2006</year>
<publisher-name><![CDATA[IRM Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Xu]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Zeng]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Shi]]></surname>
<given-names><![CDATA[Z]]></given-names>
</name>
<name>
<surname><![CDATA[He]]></surname>
<given-names><![CDATA[Q]]></given-names>
</name>
<name>
<surname><![CDATA[Wang]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[&ldquo;Research on business intelligence in enterprise computing environment,&rdquo;]]></article-title>
<source><![CDATA[IEEE SMC]]></source>
<year>2007</year>
<page-range>3270-3275</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Inmon]]></surname>
<given-names><![CDATA[W. H]]></given-names>
</name>
</person-group>
<source><![CDATA[Building the Data Warehouse]]></source>
<year>2002</year>
<publisher-name><![CDATA[Wiley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Golfarelli]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Open source BI platforms: a functional and architectural comparison]]></article-title>
<source><![CDATA[DaWaK,]]></source>
<year>2009</year>
<page-range>287-297</page-range><publisher-loc><![CDATA[Springer ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Fogel]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Johnston]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Moore]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Morales]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Potineri]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Urbano]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Ashdown]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Greenberg]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Oracle 11g database administrator&#700;s guide.]]></source>
<year>2010</year>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Casters]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Bouman]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Dongen]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[]]></source>
<year>2010</year>
<publisher-name><![CDATA[Pentaho® Kettle Solutions]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chaudhuri]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Dayal]]></surname>
<given-names><![CDATA[U]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[&ldquo;An overview of data warehousing and OLAP technology,&rdquo;]]></article-title>
<source><![CDATA[SIGMOD Record]]></source>
<year>1997</year>
<volume>26</volume>
<page-range>65-74</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Golfarelli]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Maio]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Rizzi]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Applying vertical fragmentation techniques in logical design of multidimensional databases]]></article-title>
<source><![CDATA[DaWaK]]></source>
<year>2000</year>
<page-range>11-23</page-range><publisher-loc><![CDATA[Springer ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Baikousi]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Vassiliadis]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[&ldquo;View usability and safety for the answering of top-k queries via materialized views,&rdquo;]]></article-title>
<source><![CDATA[DOLAP]]></source>
<year>2009</year>
<page-range>97-104</page-range><publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[ACM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bellatreche]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Woameno]]></surname>
<given-names><![CDATA[K. Y]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Dimension table driven approach to referential partition relational data warehouses]]></article-title>
<source><![CDATA[DOLAP]]></source>
<year>2009</year>
<page-range>9-16</page-range><publisher-loc><![CDATA[New York ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Harinarayan]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
<name>
<surname><![CDATA[Rajaraman]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Ullman]]></surname>
<given-names><![CDATA[J. D]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Implementing data cubes efficiently]]></article-title>
<source><![CDATA[SIGMOD Record]]></source>
<year>1996</year>
<volume>25</volume>
<page-range>205-216</page-range></nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Firmino]]></surname>
<given-names><![CDATA[A. S]]></given-names>
</name>
<name>
<surname><![CDATA[Mateus]]></surname>
<given-names><![CDATA[R. C]]></given-names>
</name>
<name>
<surname><![CDATA[Times]]></surname>
<given-names><![CDATA[V. C]]></given-names>
</name>
<name>
<surname><![CDATA[Cabral]]></surname>
<given-names><![CDATA[L. F.]]></given-names>
</name>
<name>
<surname><![CDATA[Siqueira]]></surname>
<given-names><![CDATA[T. L. L.]]></given-names>
</name>
<name>
<surname><![CDATA[Ciferri]]></surname>
<given-names><![CDATA[R. R]]></given-names>
</name>
<name>
<surname><![CDATA[Ciferri]]></surname>
<given-names><![CDATA[C. D. A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Novel Method for Selecting and Materializing Views based on OLAP Signatures and GRASP]]></article-title>
<source><![CDATA[JIDM]]></source>
<year>2011</year>
<volume>2</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>479-494</page-range></nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Neil]]></surname>
<given-names><![CDATA[P. O]]></given-names>
</name>
<name>
<surname><![CDATA[Graefe]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Multi-table joins through bitmapped join indices]]></article-title>
<source><![CDATA[SIGMOD Record]]></source>
<year>1995</year>
<volume>24</volume>
<page-range>8-11</page-range></nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Stockinger]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Wu]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Bitmap indices for data warehouses]]></article-title>
<source><![CDATA[Data Warehouses and OLAP]]></source>
<year>2006</year>
<page-range>157-178</page-range><publisher-name><![CDATA[IRM Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bellatreche]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Boukhalfa]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Yet Another Algorithms for Selecting Bitmap Join Indexes]]></article-title>
<source><![CDATA[DaWaK]]></source>
<year>2010</year>
<page-range>105-116</page-range></nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Carniel]]></surname>
<given-names><![CDATA[A. C]]></given-names>
</name>
<name>
<surname><![CDATA[Siqueira]]></surname>
<given-names><![CDATA[T. L. L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An OLAP Tool based on the Bitmap Join Index]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ CLEI]]></conf-name>
<conf-date>2011</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Siqueira]]></surname>
<given-names><![CDATA[T. L. L]]></given-names>
</name>
<name>
<surname><![CDATA[Ciferri]]></surname>
<given-names><![CDATA[C. D. A]]></given-names>
</name>
<name>
<surname><![CDATA[Times]]></surname>
<given-names><![CDATA[V. C]]></given-names>
</name>
<name>
<surname><![CDATA[Ciferri]]></surname>
<given-names><![CDATA[R. R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The SB-index and the HSB-Index: efficient indices for spatial data warehouses]]></article-title>
<source><![CDATA[Geoinformatica]]></source>
<year>2011</year>
<volume>16</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>165-205</page-range></nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[O&rsquo;Neil]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[O&rsquo;Nei l]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[X]]></given-names>
</name>
<name>
<surname><![CDATA[Revilak]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The star schema benchmark and augmented fact table indexing]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ TPCTC]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kimball]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Ross]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[The data warehouse toolkit: the complete guide to dimensional modeling.]]></source>
<year>2002</year>
<publisher-loc><![CDATA[Chichester ]]></publisher-loc>
<publisher-name><![CDATA[John Wiley & Sons, Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Whitehorn]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Zare]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Pasumansky]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Fast Track to MDX.]]></source>
<year>2005</year>
<publisher-loc><![CDATA[Springer ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zakas]]></surname>
<given-names><![CDATA[N. C]]></given-names>
</name>
<name>
<surname><![CDATA[McPeak]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Fawcett]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[What is Ajax?]]></article-title>
<source><![CDATA[Professional Ajax]]></source>
<year>2006</year>
<page-range>1-45</page-range><publisher-name><![CDATA[Wiley Publishing Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chan]]></surname>
<given-names><![CDATA[C. Y]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[&ldquo;Bitmap Index,&rdquo;]]></article-title>
<source><![CDATA[Encyclopedia of Database Systems]]></source>
<year>2009</year>
<page-range>244-248</page-range><publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rübel]]></surname>
<given-names><![CDATA[O]]></given-names>
</name>
<name>
<surname><![CDATA[Shoshani]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Sim]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Stockinger]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Weber]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Zhang]]></surname>
<given-names><![CDATA[W. M.]]></given-names>
</name>
<name>
<surname><![CDATA[Prabhat]]></surname>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[&ldquo;FastBit: interactively searching massive data,&rdquo;]]></article-title>
<source><![CDATA[J. of Physics: Conference Series]]></source>
<year>2009</year>
<volume>180</volume>
</nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ciferri]]></surname>
<given-names><![CDATA[C. D. A.]]></given-names>
</name>
<name>
<surname><![CDATA[Fonseca]]></surname>
<given-names><![CDATA[F. F]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Materialized Views in Data Warehousing Environments]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ SCCC]]></conf-name>
<conf-date>2001</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B25">
<label>25</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Canahuate]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<source><![CDATA[Update Conscious Bitmap Indexes,&rdquo; in Enhanced Bitmap Indexes for Large Scale Data Management,]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B26">
<label>26</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Crockford]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[JavaScript: The Good Parts]]></source>
<year>2008</year>
<publisher-name><![CDATA[Yahoo Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B27">
<label>27</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Datta]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[VanderMeer]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Ramamritham]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Parallel Star Join+DataIndexes: efficient query processing in data warehouses and OLAP]]></article-title>
<source><![CDATA[IEEE TKDE]]></source>
<year>2002</year>
<volume>14</volume>
<page-range>1299-1316</page-range></nlm-citation>
</ref>
<ref id="B28">
<label>28</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Carniel]]></surname>
<given-names><![CDATA[A. C.]]></given-names>
</name>
<name>
<surname><![CDATA[Siqueira]]></surname>
<given-names><![CDATA[T. L. L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The Bitmap Join Index OLAP Tool]]></article-title>
<source><![CDATA[SBBD Demos]]></source>
<year>2011</year>
<page-range>13-18</page-range></nlm-citation>
</ref>
<ref id="B29">
<label>29</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Siqueira]]></surname>
<given-names><![CDATA[T. L. L]]></given-names>
</name>
<name>
<surname><![CDATA[Ciferri]]></surname>
<given-names><![CDATA[R. R]]></given-names>
</name>
<name>
<surname><![CDATA[Santos]]></surname>
<given-names><![CDATA[M. T. P]]></given-names>
</name>
</person-group>
<article-title xml:lang="pt"><![CDATA[Projeto, construção e manutenção de data warehouses para auxiliar o planejamento de políticas públicas de educação]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ XVI Jornadas de Jóvenes Investigadores]]></conf-name>
<conf-date>2008</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B30">
<label>30</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Maniatis]]></surname>
<given-names><![CDATA[A. S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The Case for Mobile OLAP]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Pervasive Information Management PIM &rsquo;04]]></conf-name>
<conf-date>2004</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
