280 likes | 615 Views
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). Example of Data Records.
E N D
K-D-B Tree Multidimensional Index K-D-B Tree
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) 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) K-D-B Tree
Nodes = Pages • Region pages • Contain a set of <region, ptr. to page> • Internal nodes • Point pages • Contain a set of <point, ptr. to data record> • Leaf nodes K-D-B Tree
Xmax Xmax Xmin Xmin Ymax Ymax Ymin Ymin Region Pages … Region PAGE PAGE The branching factor is determined by the page size and the size of each entry. K-D-B Tree
Point Pages … 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. K-D-B Tree
Example Point page Point page Point page Point page K-D-B Tree
Search Point query Point page Point page Point page Point page K-D-B Tree
Insert Insert a point here and the point page overflows. 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 pcof 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> . K-D-B Tree
Split: Example The page overflows, and is splitted. This region is also splitted. This region is splitted. K-D-B Tree
Split: Example The region page is splitted. The point page is also splitted. Create a new region page. Children pages are transferred. K-D-B Tree
How to find split axis • Cyclic: x -> y -> x -> y -> … • Priority: x -> x -> y -> x -> x -> y -> … • Possible one 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. 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. K-D-B Tree
Insert: Example Search for the given point until the point page is found. Insert here and split point page if overflows. Divide region. K-D-B Tree
Insert: Example Parent page overflows, then split the page. This region is splitted. K-D-B Tree
Insert: Example The point page is splitted. The region page is splitted. K-D-B Tree
Insert: Example Insert the new region page in its parent. The root node is overflowed, and then splitted. K-D-B Tree
Insert: Example Create the new root node 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. K-D-B Tree
Joinable Regions K-D-B Tree
Unjoinable Regions 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. K-D-B Tree
Further Discussion K-D-B Tree
Axis Cyclic Priority Shape ? Value Area Number of data points Ratio ? Random ? Splitting Criteria Combine the two decisions ? K-D-B Tree