Indexing: Consider a 3-level B+ Tree with 64 entries per internal node page. Suppose the top two levels of the tree are pinned in memory. Consider a range query that retrieves entries 1900-2200 inclusive. Determine the benefit in I/O obtained on account of side pointers. (a) Assuming a clustered index with data entries in leaf nodes. There are 16 entries per leaf node page. (b) Assuming a clustered index with only pointers in leaf nodes. There are 32 entries per leaf node page. (c) Assuming an unclustered index with only pointers in leaf nodes. There are 32 entries per leaf node page. In all cases ignore the small storage required for the side pointers. The FBI has a database of mugshots of convicted criminals, and has identified (i) distance between eyes (ii) height of cheekbone (iii) angle of nose as three prominent facial features hard to disguise. Your task is to find criminals in the database who "look like" (in terms of these three critical attributes) a given suspect description. You would like to use GiST to construct an index for this purpose. What would you choose as your bucket labeling predicete? (Hint: there are many different answers possible). Given this predicate, define how the "Consistent" function works in your example. Consider a database of "objects" with each object being 2KB in size. The page size is 8KB. You have a complex selection predicate with selectivity s. Compare the following two access methods: (a) Sequential scan of the database (b) Use a signature technique with a signature of size 64B and a false hit ratio of 3. (That is, of every 4 times that the signature declares a possible match, there is no match in 3 cases, but there is a match in one case). If the time for one random disk I/O is 3 times the time for one sequential disk I/O, for what value of selectivity are the two access methods equally expensive? For lower values of selectivity, which method will be preferred? What is the predicate "label" associated with each "bucket" in a trie? Suppose that a pointer takes 12 bytes and an integer is 4 bytes, what is the (maximum) fanout of a B-tree (over an integer-valued attribute) with 8K page size? (Ignore any small overheads -- assume that the entire page is devoted to range boundary markers and pointers). Now consider a new complex index structure where instead of integer range boundaries, we require a complex predicate label for each bucket, and this label requires 52 bytes. What is the maximum fanout for the new index tree? How many leaf nodes are in the suffix tree created over the data set "Mabel, table, able, babel"?