Method and apparatus for building and using multi-dimensional index trees for multi-dimensional data objects
First Claim
1. A method of building a multi-dimensional index tree for use in searching for data objects;
- said method comprising;
a) placing a data object into an appropriate leaf node, said leaf node having a predetermined capacity for data objects, each of said data objects having a plurality of keys, each of said keys being associated with a split dimension;
b) dividing said leaf node into N subtrees when said leaf node is filled with a number of data objects exceeding said capacity, each of said subtrees having a predetermined capacity for data objects, wherein N is at least two;
c) indexing said data objects in said excessively-filled leaf node into an appropriate subtree on the basis of a first split dimension if said data objects in said excessively-filled leaf node can be identifiably separated on the basis of said first split dimension or on the basis of a different split dimension if said data objects in said excessively-filled leaf node cannot be identifiably separated on the basis of said first split dimension; and
d) repeating steps a) through c) until all data objects presented for placement have been indexed, wherein each of said subtrees is treated as a leaf node on each successive pass.
4 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus are provided for building a searchable multi-dimensional index tree that indexes a plurality of data objects. In one aspect of the invention, the index tree divides dataspace into three subspaces and indexes the data objects using a single dimension. If too many data objects map to the same point in that dimension, the dimension is switched to a new dimension of the data object and the data object is indexed using the new dimension. A split node having a split value is used to keep track of the indexing. In another aspect of the invention, the index tree divides dataspace into two subspaces, and equal bits are used in the split nodes to track the content of the data objects in the subspaces. If too many data objects sharing the same key within the same dimension map to a single point, then the dimension is switched to a new dimension and the data objects are indexed using the new dimension. Also disclosed is the multi-dimensional index tree itself as well as a router that uses the multi-dimensional index tree of the present invention to provide packet classification functions.
212 Citations
82 Claims
-
1. A method of building a multi-dimensional index tree for use in searching for data objects;
- said method comprising;
a) placing a data object into an appropriate leaf node, said leaf node having a predetermined capacity for data objects, each of said data objects having a plurality of keys, each of said keys being associated with a split dimension;
b) dividing said leaf node into N subtrees when said leaf node is filled with a number of data objects exceeding said capacity, each of said subtrees having a predetermined capacity for data objects, wherein N is at least two;
c) indexing said data objects in said excessively-filled leaf node into an appropriate subtree on the basis of a first split dimension if said data objects in said excessively-filled leaf node can be identifiably separated on the basis of said first split dimension or on the basis of a different split dimension if said data objects in said excessively-filled leaf node cannot be identifiably separated on the basis of said first split dimension; and
d) repeating steps a) through c) until all data objects presented for placement have been indexed, wherein each of said subtrees is treated as a leaf node on each successive pass. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
- said method comprising;
-
29. A computer configured to build a multi-dimensional index tree for use in searching data objects;
- said computer comprising;
a) dataspace comprising a plurality of leaf nodes, said leaf nodes capable of being recursively divided into a plurality of subtrees;
b) means for placing a data object into an appropriate leaf node, said leaf node having a predetermined capacity for data objects, each of said data objects having a plurality of keys, each of said keys being associated with a split dimension;
c) means for dividing said leaf node into N subtrees when said leaf node is filled with a number of data objects exceeding said capacity, each of said subtrees having a predetermined capacity for data objects, wherein N is at least two;
d) means for indexing said data objects in said excessively-filled leaf node into an appropriate subtree on the basis of a first split dimension if said data objects in said excessively-filled leaf node can be identifiably separated on the basis of said first split dimension or on the basis of a different split dimension if said data objects in said excessively-filled leaf node cannot be identifiably separated on the basis of said first split dimension; and
e) means for repeating said functions of means b), c), and d) until all data objects presented for indexing have been placed, wherein each of said subtrees is treated as a leaf node on each successive pass. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56)
- said computer comprising;
-
57. A database indexing a plurality of multi-dimensional data objects on a plurality of a dimensions, said database comprising:
-
a) a upper level comprising;
i) an upper level split node having at least one split value, said upper level split node having pointers pointing to each upper level subtree, and said upper level split node having at least one pointer pointing to a split node in a lower level;
ii) at least N upper level subtrees, each of said upper level subtrees being associated with an upper level split value;
iii) a plurality of indexed upper level data objects, each of said upper level data objects having a plurality of keys, each of said keys being associated with a different split dimension; and
wherein each of said upper level data objects are indexed into said upper level subtrees on the basis of a key within said upper level data objects, said key being associated with a split dimension for said upper level; and
b) a lower level comprising;
i) at least one lower level split node having at least one split value, said lower level split node having pointers pointing to each lower level subtree;
ii) at least M lower level subtrees, each of said lower level subtrees being associated with a lower level split dimension;
iii) a plurality of indexed lower level data objects, each of said lower level data objects having a plurality of keys, each of said keys being associated with a different split dimension; and
wherein each of said lower level data objects are indexed into said lower level subtrees on the basis of a key within said lower level data objects, said key being associated with a split dimension for said lower level, said lower level split dimension being different than said upper level split dimension. - View Dependent Claims (58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73)
-
-
74. A router for forwarding data packets, said router comprising:
-
a) a searchable multi-dimensional index tree, said multi-dimensional index tree comprising i) a upper level comprising;
A) an upper level split node having at least one split value, said upper level split node having pointers pointing to each upper level subtree, and said upper level split node having at least one pointer pointing to a split node in a lower level;
B) at least N upper level subtrees, each of said upper level subtrees being associated with an upper level split value;
C) a plurality of indexed upper level data objects, each of said upper level data objects having a plurality of keys, each of said keys being associated with a different split dimension; and
wherein each of said upper level data objects are indexed into said upper level subtrees on the basis of a key within said upper level data objects, said key being associated with a split dimension for said upper level; and
ii) a lower level comprising;
A) at least one lower level split node having at least one split value, said lower level split node having pointers pointing to each lower level subtree;
B) at least M lower level subtrees, each of said lower level subtrees being associated with a lower level split dimension;
C) a plurality of indexed lower level data objects, each of said lower level data objects having a plurality of keys, each of said keys being associated with a different split dimension; and
wherein each of said lower level data objects are indexed into said lower level subtrees on the basis of a key within said lower level data objects, said key being associated with a split dimension for said lower level, said lower level split dimension being different than said upper level split dimension; and
b) a search engine for searching said index tree to find an indexed data object matching a received data packet. - View Dependent Claims (75, 76, 77, 78, 79, 80, 81, 82)
-
Specification