Class DBTraceAddressSnapRangePropertyMapTree<T, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>>
-
Nested Class Summary
Nested ClassesChangeModifier and TypeClassDescriptionstatic classstatic classstatic interfacestatic classNested classes/interfaces inherited from class Abstract2DRStarTree
Abstract2DRStarTree.AsSpatialMap<DS,DR, NS, T, Q>, Abstract2DRStarTree.XAxis<X, Y, NS>, Abstract2DRStarTree.YAxis<X, Y, NS> Nested classes/interfaces inherited from class AbstractRStarConstraintsTree
AbstractRStarConstraintsTree.LeastAreaEnlargementThenLeastArea, AbstractRStarConstraintsTree.LeastDistanceFromCenterToPoint, AbstractRStarConstraintsTree.LeastOverlap, AbstractRStarConstraintsTree.LevelInfo, AbstractRStarConstraintsTree.ReInsertInfoNested classes/interfaces inherited from class AbstractConstraintsTree
AbstractConstraintsTree.TreeRecordVisitor, AbstractConstraintsTree.VisitResult -
Field Summary
FieldsChangeModifier and TypeFieldDescriptionprotected final DBCachedObjectIndex<Long, DR> protected final DBTraceAddressSnapRangePropertyMap.DBTraceAddressSnapRangePropertyMapDataFactory<T, DR> protected final Comparator<TraceAddressSnapRange> protected final DBTraceAddressSnapRangePropertyMapSpace<T, DR> protected static final intOn My Machine (TM), I get the following performance when setting register values, which imply setting state to KNOWN, which is how that involves this tree:MAX_CHILDRENRecords / second 3 13,179 10 13,104 15 11,261 20 8,035 50 1,085 62 768protected final DBCachedObjectIndex<Long, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode> Fields inherited from class Abstract2DRStarTree
axes, spaceFields inherited from class AbstractRStarConstraintsTree
CHEAT_OVERLAP_COUNT, FILL_RATE, MAX_LEVELS, maxChildren, minChildren, REINSERT_RATE, reinsertCountFields inherited from class AbstractConstraintsTree
cachedDataChildren, cachedNodeChildren, dataStore, leafLevel, nodeStore, root -
Constructor Summary
ConstructorsChangeConstructorDescriptionDBTraceAddressSnapRangePropertyMapTree(DBCachedObjectStoreFactory storeFactory, String tableName, DBTraceAddressSnapRangePropertyMapSpace<T, DR> space, Class<DR> dataType, DBTraceAddressSnapRangePropertyMap.DBTraceAddressSnapRangePropertyMapDataFactory<T, DR> dataFactory, boolean upgradable) -
Method Summary
ChangeModifier and TypeMethodDescriptionprotected DRcreateDataEntry(DBCachedObjectStore<DR> store, DBRecord record) createNodeEntry(DBCachedObjectStore<DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode> store, DBRecord record) protected Comparator<TraceAddressSnapRange> doChooseSplitAxis(List<DBTreeRecord<?, ? extends TraceAddressSnapRange>> children) protected intdoChooseSplitIndex(List<DBTreeRecord<?, ? extends TraceAddressSnapRange>> children, Comparator<TraceAddressSnapRange> axis) protected voiddoDeleteEntry(DR data) protected voiddoInsertDataEntry(DR entry) protected voiddoUnparentEntry(DR data) Remove a data record from the tree, but keep the orphaned record in the tableprotected Collection<? extends DBTreeRecord<?, ? extends TraceAddressSnapRange>> Get the children.protected Collection<DR> getDataChildrenOf(long parentKey) For leaf nodes, get the children.protected Comparator<TraceAddressSnapRange> intgetDepth()For developers and testers.protected Rectangle2DDirectiongetNodeChildrenOf(long parentKey) For non-leaf nodes, get the children.For developers and testers.Collection<? extends DBTreeRecord<?, ? extends TraceAddressSnapRange>> For developers and testers.voidpaint(DBTraceAddressSnapRangePropertyMapTree.Painter painter, int depth) For developers and testers.Methods inherited from class Abstract2DRStarTree
asSpatialMap, getShapeSpace, getSplitAxesMethods inherited from class AbstractRStarConstraintsTree
checkNodeIntegrity, computeOverlap, doChooseSubtree, doInsert, doInsertData, doOverflowTreatment, doReInsert, doSplit, findChildByMinimumEnlargementCost, findChildByNearlyMinimumOverlapCost, reRootMethods inherited from class AbstractConstraintsTree
checkDataIntegrity, checkIntegrity, clear, computeLeafLevel, count, destroySubtree, doAddToCachedChildren, doDecrementDataCount, doFindExact, doRecomputeBounds, doRemoveData, doRemoveFromCachedChildren, doSetParentKey, doUpdateOrDeleteAlongPath, dump, first, getDataByKey, getDataChildrenOf, getNodeChildrenOf, getOrCreateRoot, getParentOf, getUserIndex, init, invalidateCache, isEmpty, iterator, iterator, orderedIterator, resyncMetadata, stream, unionStream, visit, visit, visitAllData, visitDirectory, visitLeaf
-
Field Details
-
MAX_CHILDREN MODIFIED
protected static final int MAX_CHILDRENconstant: 50 → 15-static int MAX_CHILDREN+static int MAX_CHILDRENOn My Machine (TM), I get the following performance when setting register values, which imply setting state to KNOWN, which is how that involves this tree:MAX_CHILDRENRecords / second 3 13,179 10 13,104 15 11,261 20 8,035 50 1,085 62 768 These were measured after setting 100,000 records total. Note
MAX_CHILDRENmust be less than 64, because ofDBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode.CHILD_COUNT_MASK. There's definitely a tradeoff in storage, since a lower child count will increase the value of log_{childCount}(recordCount). Similarly, I expect a longer query time, but it's unclear what actual impact that will have given the caches. I have yet to measure that, but for now, I'll set this at 15 and see how things go. It was 50....- See Also:
-
dataFactory
protected final DBTraceAddressSnapRangePropertyMap.DBTraceAddressSnapRangePropertyMapDataFactory<T, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>> dataFactory -
mapSpace
protected final DBTraceAddressSnapRangePropertyMapSpace<T, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>> mapSpace -
nodesByParent
protected final DBCachedObjectIndex<Long, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode> nodesByParent -
dataByParent
protected final DBCachedObjectIndex<Long, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>> dataByParent -
leftmostComparator
-
-
Constructor Details
-
DBTraceAddressSnapRangePropertyMapTree
public DBTraceAddressSnapRangePropertyMapTree(DBCachedObjectStoreFactory storeFactory, String tableName, DBTraceAddressSnapRangePropertyMapSpace<T, DR> space, Class<DR> dataType, DBTraceAddressSnapRangePropertyMap.DBTraceAddressSnapRangePropertyMapDataFactory<T, throws VersionException, IOExceptionDR> dataFactory, boolean upgradable) - Throws:
VersionExceptionIOException
-
-
Method Details
-
getDefaultBoundsComparator
- Specified by:
getDefaultBoundsComparatorin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>
-
createDataEntry
- Specified by:
createDataEntryin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>
-
createNodeEntry
protected DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode createNodeEntry(DBCachedObjectStore<DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode> store, DBRecord record) - Specified by:
createNodeEntryin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>
-
getDirectionOf
protected Rectangle2DDirection getDirectionOf(DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery query) -
getNodeChildrenOf
protected Collection<DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode> getNodeChildrenOf(long parentKey) Description copied from class:AbstractConstraintsTreeFor non-leaf nodes, get the children.For leaf nodes, the behavior is undefined. Note that the query should not filter the children, only order them. Filtering is performed by
AbstractConstraintsTree<DS extends BoundedShape<NS>, DR extends DBTreeDataRecord<DS,.NS, T>, NS extends BoundingShape<NS>, NR extends DBTreeNodeRecord<NS>, T, Q extends Query<DS, NS>>.TreeRecordVisitor - Specified by:
getNodeChildrenOfin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>- Parameters:
parentKey- the key of the parent whose children to get- Returns:
- an iterable of the children
-
getDataChildrenOf
Description copied from class:AbstractConstraintsTreeFor leaf nodes, get the children.For non-leaf nodes, the behavior is undefined. Note that the query should not filter the children, only order them, or else the collection will return an incorrect
Collection.size(). Filtering is performed byAbstractConstraintsTree<DS extends BoundedShape<NS>, DR extends DBTreeDataRecord<DS,.NS, T>, NS extends BoundingShape<NS>, NR extends DBTreeNodeRecord<NS>, T, Q extends Query<DS, NS>>.TreeRecordVisitor - Specified by:
getDataChildrenOfin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>- Parameters:
parentKey- the key of the parent whose children to get- Returns:
- an iterable of the children
-
doUnparentEntry
Description copied from class:AbstractConstraintsTreeRemove a data record from the tree, but keep the orphaned record in the tableNote that at most one orphaned record should be in the table at any time, otherwise behavior is undefined. It is up to the implementor to provide a means of inserting orphaned data records back into the tree. This is useful for implementations which allow a data record's shape to be mutated: Orphan the record, adjust its shape, re-insert the orphan.
- Overrides:
doUnparentEntryin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>- Parameters:
data- the data record
-
doDeleteEntry
- Overrides:
doDeleteEntryin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>
-
doInsertDataEntry
-
getMapSpace
-
paint NEW
For developers and testers. -
getDepth NEW
public int getDepth()For developers and testers. -
getRootBounds NEW
For developers and testers. -
internalGetChildrenOf
public Collection<? extends DBTreeRecord<?, ? extends TraceAddressSnapRange>> internalGetChildrenOf(DBTreeNodeRecord<?> rec) For developers and testers. -
doChooseSplitAxis
protected Comparator<TraceAddressSnapRange> doChooseSplitAxis(List<DBTreeRecord<?, ? extends TraceAddressSnapRange>> children) - Overrides:
doChooseSplitAxisin classAbstractRStarConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>
-
doChooseSplitIndex
protected int doChooseSplitIndex(List<DBTreeRecord<?, ? extends TraceAddressSnapRange>> children, Comparator<TraceAddressSnapRange> axis) - Overrides:
doChooseSplitIndexin classAbstractRStarConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>
-
getChildrenOf NEW
protected Collection<? extends DBTreeRecord<?, ? extends TraceAddressSnapRange>> getChildrenOf(DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode parent) Description copied from class:AbstractConstraintsTreeGet the children.Because the children may be either nodes or data, the exact type is not known. The only guarantee is that it is a tree record, which permits access to its bounds and parent. Note that the query should not filter the children, only order them, or else the collection will return an incorrect
Collection.size(). Filtering is performed byAbstractConstraintsTree<DS extends BoundedShape<NS>, DR extends DBTreeDataRecord<DS,.NS, T>, NS extends BoundingShape<NS>, NR extends DBTreeNodeRecord<NS>, T, Q extends Query<DS, NS>>.TreeRecordVisitor - Overrides:
getChildrenOfin classAbstractConstraintsTree<TraceAddressSnapRange, DR extends DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData<T>, TraceAddressSnapRange, DBTraceAddressSnapRangePropertyMapTree.DBTraceAddressSnapRangePropertyMapNode, T, DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery>- Parameters:
parent- the parent node- Returns:
- a collection of the children
-