Multidimensional Index K-D-B Tree Multidimensional Index
Characteristics Multi-way branch Height-balanced tree Repeatedly divide area of the domain into disjoint sub-area A node in a tree corresponds to a (set of consecutive) disk page(s) Jaruloj Chongstitvatana K-D-B Tree
Example of Data Records Table (stdntID, courseID, grade, year, smstr) Table (accID, branchID, saving, name, addr) Table (custID, age, gender, occupation, salary, children, promotion, since) Jaruloj Chongstitvatana K-D-B Tree
Nodes = Pages Region pages Point pages Contain a set of <region, ptr. to page> Internal nodes Point pages Contain a set of <point, ptr. to data record> Leaf nodes Jaruloj Chongstitvatana K-D-B Tree
Region Pages Region The branching factor is determined by the Xmax Xmin Ymax Ymin … Xmax Xmin Ymax Ymin Region PAGE PAGE The branching factor is determined by the page size and the size of each entry. Jaruloj Chongstitvatana K-D-B Tree
Point Pages X Y X Y X Y The branching factor of a point page is … X Y X Y X Y DATA RECORD DATA RECORD DATA RECORD POINT The branching factor of a point page is usually larger than that of a region page. Jaruloj Chongstitvatana K-D-B Tree
Example Point page Point page Point page Point page Jaruloj Chongstitvatana K-D-B Tree
Search Point query Point page Point page Point page Point page Jaruloj Chongstitvatana K-D-B Tree
Insert Insert a point here and the point page overflows. Jaruloj Chongstitvatana K-D-B Tree
Split Split a region r with page id p along xi If r is on the right/page of xi then put <r, p> in the right/left page. Otherwise; For each children pc of p , split pc along xi Split r along xi into rleft and rright. Create 2 new pages with page id pleft and pright. Move children of p in the left region into pleft and children in the right region into pright. Return <rleft, pleft> and <rright, pright> . Jaruloj Chongstitvatana K-D-B Tree
Split: Example The page overflows, and is splitted. This region is also splitted. This region is splitted. Jaruloj Chongstitvatana K-D-B Tree
Split: Example The region page is splitted. The point page is also splitted. Children pages are transferred. Create a new region page. Jaruloj Chongstitvatana K-D-B Tree
How to find split axis Cyclic: x -> y -> x -> y -> … Priority: x -> x -> y -> x -> x -> y -> … Possible one Jaruloj Chongstitvatana K-D-B Tree
Insert Insert a record with point a and location l in a tree with root r If r is NIL, then create a point page p and insert the record with <a,l> in p and return p. Otherwise; Search for a in the tree with root r until a point page, say p, is reached. Insert the record in the point page p. Jaruloj Chongstitvatana K-D-B Tree
Insert (cont’d) Insert a record with point a and location l in a tree with root r If the point page p is overflowed, then find an appropriate axis to split p into pleft and pright. If p is not the root, then change to p and pleft, and insert pright into the parent of p. If p is the root, then create a new root node with two children of pleft and pright. Jaruloj Chongstitvatana K-D-B Tree
Insert: Example Insert here and split point page if overflows. Search for the given point until the point page is found. Insert here and split point page if overflows. Divide region. Jaruloj Chongstitvatana K-D-B Tree
Insert: Example Parent page overflows, then split the page. This region is splitted. Jaruloj Chongstitvatana K-D-B Tree
Insert: Example The point page is splitted. The region page is splitted. Jaruloj Chongstitvatana K-D-B Tree
Insert: Example The root node is overflowed, and then splitted. Insert the new region page in its parent. Jaruloj Chongstitvatana K-D-B Tree
Insert: Example Create the new root node Jaruloj Chongstitvatana K-D-B Tree
Delete Simple, if storage utilization is ignored. Otherwise, an underfull page should be merged with another page. When 2 pages are merged, the region of the new page must be a valid region. A number of regions are joinable if their union is also a region. Jaruloj Chongstitvatana K-D-B Tree
Joinable Regions Jaruloj Chongstitvatana K-D-B Tree
Unjoinable Regions Jaruloj Chongstitvatana K-D-B Tree
Delete (cont’d) If a page p is underfull, merge sibling pages of p whose regions are joinable. If the newly-created page is overflowed, then split the page. Jaruloj Chongstitvatana K-D-B Tree
Further Discussion
Splitting Criteria Combine the two decisions ? Axis Value Cyclic Priority Shape ? Value Area Number of data points Ratio ? Random ? Combine the two decisions ? Jaruloj Chongstitvatana K-D-B Tree