...
- Platfrom indexer - creates one tree component for each agent (each platfrom ident)
- Sensor type indexer - creates one tree component for each sensor type (each sensor type ident)
- Method indexer - creates one tree component for each method (each method ident)
- Object type indexer - creates one tree component per class, meaning that all objects of the same class will be in one branch/leaf
- Timestamp indexer - creates one tree component for every minute (only when needed), and indexes the elements by their time stamp
Leaf
Leaf is the element on the deepest level in the tree. All objects that are referenced in one leaf have the same indexing path.
LeafingBranch
LeafingBranch is the special type of branch that has an extended functionality to hold references to all objects that are indexed in this branch. This means that same element can be referenced from one leaf, but also many leafing branches. The advantage is speeding up the queries that need to traverse through whole branch because query does not define property for lower level branching. In this case, leafing brunch can just return results from its own leaf, with no need to look into all tree components below it. The disadvantage is the memory size needed for the indexing structure, because it rises linearly depending on the number of levels that use leaf branch.
During tests it was concluded that the best trade-off between query speed and indexing structure size is achieved by following:
- Normal branches need to be used for branches in the upper indexing levels and in branches that have a small number of referring tree components. A good example would be branch that would use platform indexer.
- Leafing branches need to be used for branches in the lower indexing levels and in branches that have a big number of referring tree components. A good example would be branch that would use time stamp indexer.