Multi-Dimensional Indexes in DBMSs

Multi-Dimensional Indexes in DBMSs

Thomas Mercieca (Faculty of ICT, University of Malta, Msida, Malta) and Joseph G. Vella (Faculty of ICT, University of Malta, Msida, Malta)
Copyright: © 2019 |Pages: 11
DOI: 10.4018/JCIT.2019070103

Abstract

Multi-dimensional data is present across multimedia, data mining and other data-driven applications. The R-Tree is a popular index structure that DBMSs are implementing as core for efficient retrieval of such data. The gap between the best and worst-case performance is very wide in an R-tree. Thus, building quality R-trees quickly is desirable. Variations differ in how node overflow are approached during the building process. This article studies the R-Tree technique that the open-source PostgreSQL DBMS uses. Focus is on a specific parameter controlling node overflows as an optimisation target, and improved configurations are proposed. This parameter is hard-wired into the DBMS, and therefore, an implementation is presented to allow this parameter to become accessible through an SQL construct. The access method designer can resort to configuring this parameter when trying to meet specific storage or time-related performance targets. With this study, the reader can gain an insight into the effects of changing the parameter by considering the spatial indexes on well-known workloads.
Article Preview
Top

Literature Review

The R-Tree

Guttman’s R-Tree (1984) is a height-balanced tree structure characterized by grouping space into subspaces. Spaces are represented with a Minimum Bounding Rectangle (MBR) structure across dimensions. Each MBR is represented by a node or a page on a disk-based system. An MBR contains several entries of other MBRs, except at the leaf-level, in which the MBR tightly covers the object it is representing and points towards the data record of this object. The maximum value of an R-tree’s height can be given by JCIT.2019070103.m01 where m is the minimum number of entries allowed per node, and N is the number of data elements being indexed. The maximum number of nodes possible in a specific tree (Manolopoulos et al., 2010) is derived by summing the maximum possible number of nodes at each level of the tree:

JCIT.2019070103.m02

Searching an R-Tree consists of a traversal from the topmost level of the tree, checking which MBRs overlap with the input search item. Once the leaf level is reached, all elements on the node are examined to identify which element matches the input item.

Because MBRs can overlap, it is inevitable that an element is not found on the first path explored and multiple paths would have to be subsequently investigated. If the entries in an instance of a node are represented by E1, …, Ep, then the total overlap of an entry in a node, as interpreted by Beckmann, Kriegel, Schneider and Seeger (1990), can be expressed using Equation (2). This overlap is attributed to the large coverage and underused space of each MBR illustrated in Figure 1.

Figure 1.

A visualization of an R-Tree built over a set of data objects

JCIT.2019070103.f01
<i>Minimum Bounding Rectangles</i> (MBRs)</div><p><i>A</i>, <i>B</i> and <i>C</i> minimally cover the indicated elements. In <i>i</i> (as well as from <i>d</i> to <i>k</i>), each element takes the form of an MBR representation of an object with a pointer to its data tuple. Retrieving <i>k</i> requires a traversal down <i>A</i> and <i>C</i> before <i>k</i> is finally found – an example of a multipath problem. Figure has been adapted from <i>Introduction to PostGIS</i> (<i>Boundless</i>, 2017) which is licensed under the Creative Non Commercial-Commons Attribution-ShareAlike 3.0 United States License. A copy of this license can be viewed at <underline><a href="https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" xmlns:xlink="http://www.w3.org/1999/xlink" target="_blank">https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode</a></underline>.</p><div style="width: 100%;"><a href="https://igiprodst.blob.core.windows.net:443/source-content/9781522563884_200293/JCIT.2019070103.m03.png?sv=2015-12-11&sr=c&sig=ELVdJqtcKf82Py5n7Wq1CrzSRj6kFdIuJc49O8yXcyA%3D&se=2019-11-14T18%3A48%3A54Z&sp=r" target="_blank"><img src="https://igiprodst.blob.core.windows.net:443/source-content/9781522563884_200293/JCIT.2019070103.m03.png?sv=2015-12-11&sr=c&sig=ELVdJqtcKf82Py5n7Wq1CrzSRj6kFdIuJc49O8yXcyA%3D&se=2019-11-14T18%3A48%3A54Z&sp=r" alt="JCIT.2019070103.m03" style="max-width: 100%;" /></a></div><p>The insertion operation builds the R-Tree structure. An insertion identifies a leaf node in which to allocate the new element through finding the least MBR enlargement required. In the case that the enlargement is the same as insertions in other locations, this conflict is resolved by choosing the MBR of the smallest area. Such insertions may overflow a node, in which case a node split is performed. When splitting a node having <i>M</i> entries, the <i>M+1</i> entries are distributed over two nodes.</p><p>The difficulty behind node splitting lies in obtaining a good quality distribution. A decision between possible distributions has to be taken in reasonable time and in some way that future searches on that structure attenuate the problem of traversing multiple paths for a search. Guttman (1984), in the original R-Tree proposal, suggests minimizing the area of the MBR of each resulting node and discusses three splitting heuristics based on their computational time complexity:</p><ul class="xmlReaderUl"><li><i>• </i><p>An exhaustive split where all possible distributions, Guttman quantifies this as 2<sup>M-1</sup>, are examined to select an optimal one.</p></li><li><i>• </i><p>A quadratic split where two entries that would together form the largest possible area are selected as the first item for each node. The remaining entries are assigned to either node depending on where the least area enlargement is generated.</p></li><li><i>• </i><p>A linear split achieving linear time complexity by selecting the pair of MBRs that are furthest away from each other as initial entries. Then, the remaining entries are distributed over the nodes without any condition.</p></li></ul><p>Since the original R-Tree, there have been many notable algorithms and modifications for building good quality splits efficiently: Greene’s (1989) split, the R<sup>+</sup>-Tree (Sellis, Roussopoulos & Faloutsos, 1987) and the Hilbert R-Tree (Kamel & Faloutsos, 1994) are some examples. Minimization of area is no longer the main factor considered for inserting entries. Attention is also given to storage utilisation and overlaps between MBRs among other things. The following explains other node splitting algorithm variations in some detail.</p><p>The R*-Tree (Beckmann et al., 1990) uses a reinsertion strategy when a node overflows. If the overflow remains unresolved, several parameters are taken into account for node split selection: minimization of area covered, minimization of overlap, minimization of perimeter and maximization of storage utilisation. The R*-Tree proposal claims that the best retrieval performance was obtained when the resulting nodes after a split were 40% filled at minimum.</p><p> Ang and Tan’s (1997) new linear split technique emphasizes minimisation of MBR overlap through the use of MBR pairs that are away from each other. For each dimension, an element is allocated to its closest boundary. A split is selected based on the dimension having the most elements. Conflicts are solved by selecting the split with the lowest overlap, and further conflicts are resolved by selecting the split with the least area. The time complexity of this algorithm is linear as it involves a linear scan of all MBRs to place them in an indicated list.</p><p>In Korotkov’s (2012) double sorting-based node splitting algorithm, the MBR of the elements of the overflowing node are projected onto each axis. A set of intervals is formed such that each interval represents the range of the projected box per that dimension in the form of (range<sub>Lower</sub>, range<sub>Upper</sub>) where range<sub>Lower</sub> is the beginning of this range and range<sub>Upper</sub>, the end. This set of intervals is stored in two sets, one sorted by range<sub>Lower</sub> and another sorted by range<sub>Upper</sub>. This algorithm iterates through both sets to create the resulting split. One grouping is formed by taking the smallest range<sub>Lower</sub> and investigating all possible range<sub>Upper</sub>. At the same time, the other entry is formed by taking the largest range<sub>Upper</sub> and investigating all range<sub>Lower</sub>. With every iteration, a split is being proposed for investigation against the previous split: first, the split is checked for the minimum number of entries on each of the resulting nodes against a threshold, then the distribution with minimal overlap is selected, and in case of equal overlap, the split with the nodes being furthest apart is selected. This process is then repeated across dimensions. Korotkov demonstrates that index build time is marginally slower, but node accesses are much less in comparison to Ang and Tan’s (1997) new linear algorithm. The most expensive operation in this technique is sorting with a time complexity of <i>n</i>log(<i>n</i>) with <i>n</i> being the number of items to sort.</p></div></div></div></span><div id="article-list"><h2 class="margin-top"> Complete Article List </h2><div class="search-contents"><span class="text"> Search this Journal: </span><span class="text-box-container"><input id="txtKeywords" type="text" maxlength="50" onkeypress="return SearchJournalFulltextHandleEnter(event, 1075, '');" title="Full text search term(s)" class="SearchTextBox TextBoxWatermark text-box" /></span><div class="inline-block search-contents-xs-full-width"><span class="search"><span class="search-button" onclick="RemoveSpecialCharacters();SearchJournalFulltext(1075, '');"></span></span><span class="reset"><span onclick="RemoveSpecialCharacters();SearchJournalFulltextReset();" class="link-gray-s">Reset</span></span></div></div><div id="searchResults"></div><div id="issues"><div id="ctl00_cphFeatured_ucJournalContentOverview_pnlOpenAccessArticles"><div class="listitemouter toggle-arrow-container" onclick="GetOpenAccessArticles(1075)"><div class="listiteminner listiteminnersmall"><div id="open-access-articles" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Open Access Articles </div></div></div><div id="openAccessArticles"></div></div><div class="bottomspace"><div class="listitemouter toggle-arrow-container" onclick="GetArticles(253907, 227, '', 1075, 23, '1,2,3,4')" style="display:none;"><div class="listiteminner listiteminnersmall"><div id="volume253907" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 23: 4 Issues (2021): 0 Released, 4 Forthcoming </div></div></div><div id="articles253907"></div><div class="listitemouter toggle-arrow-container" style="display:block;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 23: 4 Issues (2021): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(229442, 227, '', 1075, 22, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume229442" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 22: 4 Issues (2020) </div></div></div><div id="articles229442"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 22: 4 Issues (2020): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(200290, 227, '', 1075, 21, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume200290" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 21: 4 Issues (2019) </div></div></div><div id="articles200290"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 21: 4 Issues (2019): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(184794, 227, '', 1075, 20, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume184794" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 20: 4 Issues (2018) </div></div></div><div id="articles184794"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 20: 4 Issues (2018): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(158193, 227, '', 1075, 19, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume158193" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 19: 4 Issues (2017) </div></div></div><div id="articles158193"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 19: 4 Issues (2017): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(131586, 227, '', 1075, 18, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume131586" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 18: 4 Issues (2016) </div></div></div><div id="articles131586"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 18: 4 Issues (2016): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(118381, 227, '', 1075, 17, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume118381" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 17: 4 Issues (2015) </div></div></div><div id="articles118381"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 17: 4 Issues (2015): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(91262, 227, '', 1075, 16, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume91262" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 16: 4 Issues (2014) </div></div></div><div id="articles91262"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 16: 4 Issues (2014): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(71199, 227, '', 1075, 15, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume71199" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 15: 4 Issues (2013) </div></div></div><div id="articles71199"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 15: 4 Issues (2013): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(59107, 227, '', 1075, 14, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume59107" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 14: 4 Issues (2012) </div></div></div><div id="articles59107"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 14: 4 Issues (2012): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(47558, 227, '', 1075, 13, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume47558" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 13: 4 Issues (2011) </div></div></div><div id="articles47558"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 13: 4 Issues (2011): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(38787, 227, '', 1075, 12, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume38787" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 12: 4 Issues (2010) </div></div></div><div id="articles38787"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 12: 4 Issues (2010): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34995, 227, '', 1075, 11, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34995" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 11: 4 Issues (2009) </div></div></div><div id="articles34995"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 11: 4 Issues (2009): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34990, 227, '', 1075, 10, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34990" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 10: 4 Issues (2008) </div></div></div><div id="articles34990"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 10: 4 Issues (2008): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34985, 227, '', 1075, 9, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34985" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 9: 4 Issues (2007) </div></div></div><div id="articles34985"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 9: 4 Issues (2007): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34980, 227, '', 1075, 8, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34980" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 8: 4 Issues (2006) </div></div></div><div id="articles34980"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 8: 4 Issues (2006): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34975, 227, '', 1075, 7, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34975" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 7: 4 Issues (2005) </div></div></div><div id="articles34975"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 7: 4 Issues (2005): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34970, 227, '', 1075, 6, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34970" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 6: 1 Issue (2004) </div></div></div><div id="articles34970"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 6: 1 Issue (2004): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34965, 227, '', 1075, 5, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34965" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 5: 1 Issue (2003) </div></div></div><div id="articles34965"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 5: 1 Issue (2003): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34960, 227, '', 1075, 4, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34960" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 4: 1 Issue (2002) </div></div></div><div id="articles34960"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 4: 1 Issue (2002): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34955, 227, '', 1075, 3, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34955" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 3: 1 Issue (2001) </div></div></div><div id="articles34955"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 3: 1 Issue (2001): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34950, 227, '', 1075, 2, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34950" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 2: 1 Issue (2000) </div></div></div><div id="articles34950"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 2: 1 Issue (2000): Forthcoming, Available for Pre-Order </div></div></div><div class="listitemouter toggle-arrow-container" onclick="GetArticles(34945, 227, '', 1075, 1, '')" style="display:block;"><div class="listiteminner listiteminnersmall"><div id="volume34945" class="mar-l-4"><span class="toggle-arrow-15 toggle-arrow-up-15"></span> Volume 1: 1 Issue (1999) </div></div></div><div id="articles34945"></div><div class="listitemouter toggle-arrow-container" style="display:none;cursor:default;"><div class="listiteminner listiteminnersmall"><div class="mar-l-4"> Volume 1: 1 Issue (1999): Forthcoming, Available for Pre-Order </div></div></div></div></div><a href="/journal-contents/journal-cases-information-technology/1075" id="ctl00_cphFeatured_ucJournalContentOverview_lnkJournalContents">View Complete Journal Contents Listing</a></div></div></div></div><script> $(document).ready(function() { $('meta[name="citation_fulltext_world_readable"][content="_EMPTY_"]').attr('content', ''); }); </script><input type="hidden" name="ctl00$cphMain$hfJournalTitleId" id="ctl00_cphMain_hfJournalTitleId" value="1075" /><input type="hidden" name="ctl00$cphMain$hfJournalTitle" id="ctl00_cphMain_hfJournalTitle" value="Journal of Cases on Information Technology (JCIT)" /><input type="hidden" name="ctl00$cphMain$hfJournalUrlKeywords" id="ctl00_cphMain_hfJournalUrlKeywords" value="journal-cases-information-technology" /><script type="text/javascript"> MenuAdjust(); $(window).on('resize orientationChange', function (event) { MenuAdjust(); }); //Shopping cart - Adding item and displaying banner, signup, etc. var userAuthenticated = "false"; function setAddToCartOnClick(sender) { var lblTitle = document.getElementById('lblTitle'); var coverImage = $("#imgCover"); var tdpid = sender.getAttribute('tdpid'); AddShoppingCartSessionItemDynamic(tdpid, sender.getAttribute("a"), null, 1, lblTitle.innerText, coverImage.attr('src'), coverImage.attr('alt'), userAuthenticated); } </script><footer class="footer"><div class="container"><div class="row"><div class="top-margin"><div class="col-md-6"><div class="footer-header"> Learn More </div><div class="text"><a href="/about/" class="footer-link">About IGI Global</a> | <a href="/about/partnerships/" class="footer-link">Partnerships</a> | <a href="/about/memberships/cope/" class="footer-link">COPE Membership</a> | <a href="/contact/" class="footer-link">Contact</a> | <a href="/about/staff/job-opportunities/" class="footer-link">Job Opportunities</a> | <a href="/faq/" class="footer-link">FAQ</a> | <a href="/about/staff/" class="footer-link">Management Team</a></div><div class="footer-header header-margin-top"> Resources For </div><div class="text"><a href="/librarians/" class="footerlink">Librarians</a> | <a href="/publish/" class="footerlink">Authors/Editors</a> | <a href="/distributors/" class="footerlink">Distributors</a> | <a href="/course-adoption/" class="footerlink">Instructors</a> | <a href="/about/rights-permissions/translation-rights/" class="footerlink">Translators</a> | <a href="/editorial-service-partners/" class="footerlink" target="_blank" rel="noopener">Editorial Services</a></div><div class="footer-header header-margin-top"> Media Center </div><div class="text"><a href="/symposium/" class="footer-link">Webinars</a> | <a href="/newsroom/" class="footer-link">Blogs</a> | <a href="/catalogs/" class="footer-link">Catalogs</a> | <a href="/newsletters/" class="footer-link">Newsletters</a></div><div class="footer-header header-margin-top"> Policies </div><div class="text"><a href="/about/rights-permissions/privacy-policy/" class="footer-link">Privacy Policy</a> | <a href="/cookies-agreement/" class="footer-link">Cookie & Tracking Notice</a> | <a href="/about/rights-permissions/content-reuse/" class="footer-link">Fair Use Policy</a> | <a href="/about/rights-permissions/ethics-malpractice/" class="footer-link">Ethics and Malpractice</a></div></div><div class="col-md-6 td-r"><div class="td-r-t"><div class="footer-rightside-container"><div class="left"><div><a href="http://www.facebook.com/pages/IGI-Global/138206739534176?ref=sgm" target="_blank" rel="noopener" aria-label="Facebook"><span class="fb"></span></a>  <a href="http://twitter.com/igiglobal" target="_blank" rel="noopener" aria-label="Twitter"><span class="tw"></span></a>  <a href="https://www.linkedin.com/company/igiglobal" target="_blank" rel="noopener" aria-label="LinkedIn"><span class="linkedin"></span></a></div><div><a href="http://www.world-forgotten-children.org" target="_blank" rel="noopener"><img src="https://coverimages.igi-global.com/images/proud-supporter-of-wfcf-07282015.png" alt="World Forgotten Children's Foundation" title="Proud Supporter of the World Forgotten Children's Foundation" width="157" height="52" /></a></div><div class="margin-top-5"><a href="https://publicationethics.org/category/publisher/igi-global" target="_blank" rel="noopener"><img src="https://coverimages.igi-global.com/images/cope-logo-footer-white.png" alt="Committee on Publication Ethics (COPE)" title="Committee on Publication Ethics (COPE)" /></a></div></div><div class="right"></div></div></div><div class="text copyright-text">Copyright © 1988-2020, IGI Global - All Rights Reserved</div></div></div></div></div></footer><div class="aspNetHidden"><input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="2173C2F0" /><input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="gooRlGoYFxhsqVU8VNbtqCkKmMzBF8ZxWEW64inmhqwwXJD9Y6iWkKYy9rG2ye+feDvsRUyeFbM+YYM34zv1KDCj9ejbOkTDz2X/vMIb3pOOIsE0kUldHBFPVqAQO8mz/2yziW9Nd5P0wnp5gjeHOEkHj6Po/QRwwNzvZ26QLoH/CI6FlGC6lnu3q4MfKJcM9eylOgFZ0G1KIBe5xn11NeyISiUrZvPxDXE3Mm63yfc8oQ3EBP2k79HurqzYvUW4vKpgkCkNeMFC+1ARHQTp4/Avj0i2hgegT8xlUGcn/8kqfzMXb6tO4dvUxAFz8Makb43mM/FmtxJVEfkSkClyGhPUY8W9VaFxbnln69zX4pm21xJbEpQuwkXTHmIC/R61LyXu8eq5Vz1/oTbRmOwkWOQcCMCQ9VlC1hlUViBOQ9udT3YJil05FFPPhztLUzASEmPkTZKhxBmZQOdXW7sDPKLHVvw=" /></div></form></body></html>