Class BPlusTree
- java.lang.Object
-
- org.apache.jena.dboe.transaction.txn.TransactionalComponentLifecycle<org.apache.jena.dboe.trans.bplustree.BptTxnState>
-
- org.apache.jena.dboe.trans.bplustree.BPlusTree
-
- All Implemented Interfaces:
java.lang.Iterable<org.apache.jena.dboe.base.record.Record>,org.apache.jena.atlas.lib.Closeable,org.apache.jena.atlas.lib.Sync,Index,RangeIndex,TransactionalComponent
public class BPlusTree extends TransactionalComponentLifecycle<org.apache.jena.dboe.trans.bplustree.BptTxnState> implements RangeIndex
B-Tree taken from:Introduction to Algorithms, Second Edition Chapter 18: B-Trees by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford SteinIncludes implementation of removal then the B-Tree code converted to a B+Tree, then made MVCC/transactional.Notes:
- Stores "records", which are a key and value (the value may be absent).
- In this B+Tree implementation, the (key,value) pairs are held in RecordBuffer, which wraps a ByteBuffer that only has records in it. BPTreeRecords provides the B+Tree view of a RecordBuffer. All records are in RecordBuffer - the "tree" part is an index for finding the right page. The tree only holds keys, copies from the (key, value) pairs in the RecordBuffers.
- The version above splits nodes on the way down when full, not when needed where a split can bubble up from below. It means it only ever walks down the tree on insert. Similarly, the delete code ensures a node is suitable before descending.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.jena.dboe.transaction.txn.TransactionalComponentLifecycle
TransactionalComponentLifecycle.ComponentState<X extends java.lang.Object>
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheck()voidcleanStart()voidclear()voidclose()booleancontains(org.apache.jena.dboe.base.record.Record record)booleandelete(org.apache.jena.dboe.base.record.Record record)org.apache.jena.dboe.base.record.RecorddeleteAndReturnOld(org.apache.jena.dboe.base.record.Record record)voiddump()voiddump(org.apache.jena.atlas.io.IndentedWriter out)org.apache.jena.dboe.base.record.Recordfind(org.apache.jena.dboe.base.record.Record record)voidfinishRecovery()BPTreeNodeMgrgetNodeManager()Only use for careful manipulation of structuresBPlusTreeParamsgetParams()Get the parameters describing this B+Treeorg.apache.jena.dboe.base.record.RecordFactorygetRecordFactory()BPTreeRecordsMgrgetRecordsMgr()Only use for careful manipulation of structuresintgetRootId()BPTStateMgrgetStateManager()Only use for careful manipulation of structuresbooleaninsert(org.apache.jena.dboe.base.record.Record record)org.apache.jena.dboe.base.record.RecordinsertAndReturnOld(org.apache.jena.dboe.base.record.Record record)Add a record into the B+TreebooleanisEmpty()java.util.Iterator<org.apache.jena.dboe.base.record.Record>iterator()java.util.Iterator<org.apache.jena.dboe.base.record.Record>iterator(org.apache.jena.dboe.base.record.Record fromRec, org.apache.jena.dboe.base.record.Record toRec)<X> java.util.Iterator<X>iterator(org.apache.jena.dboe.base.record.Record minRec, org.apache.jena.dboe.base.record.Record maxRec, org.apache.jena.dboe.base.record.RecordMapper<X> mapper)org.apache.jena.dboe.base.record.RecordmaxKey()org.apache.jena.dboe.base.record.RecordminKey()voidnewRoot(BPTreeNode newRoot)voidnonTransactional()voidrecover(java.nio.ByteBuffer ref)longsize()voidstartRecovery()voidsync()-
Methods inherited from class org.apache.jena.dboe.transaction.txn.TransactionalComponentLifecycle
abort, attach, begin, commit, commitEnd, commitPrepare, complete, detach, getComponentId, getComponentState, promote, setComponentState, shutdown
-
-
-
-
Method Detail
-
newRoot
public void newRoot(BPTreeNode newRoot)
-
getRootId
public int getRootId()
-
getParams
public BPlusTreeParams getParams()
Get the parameters describing this B+Tree
-
getStateManager
public BPTStateMgr getStateManager()
Only use for careful manipulation of structures
-
getNodeManager
public BPTreeNodeMgr getNodeManager()
Only use for careful manipulation of structures
-
getRecordsMgr
public BPTreeRecordsMgr getRecordsMgr()
Only use for careful manipulation of structures
-
getRecordFactory
public org.apache.jena.dboe.base.record.RecordFactory getRecordFactory()
- Specified by:
getRecordFactoryin interfaceIndex
-
find
public org.apache.jena.dboe.base.record.Record find(org.apache.jena.dboe.base.record.Record record)
-
contains
public boolean contains(org.apache.jena.dboe.base.record.Record record)
-
minKey
public org.apache.jena.dboe.base.record.Record minKey()
- Specified by:
minKeyin interfaceRangeIndex
-
maxKey
public org.apache.jena.dboe.base.record.Record maxKey()
- Specified by:
maxKeyin interfaceRangeIndex
-
insert
public boolean insert(org.apache.jena.dboe.base.record.Record record)
-
insertAndReturnOld
public org.apache.jena.dboe.base.record.Record insertAndReturnOld(org.apache.jena.dboe.base.record.Record record)
Add a record into the B+Tree
-
delete
public boolean delete(org.apache.jena.dboe.base.record.Record record)
-
deleteAndReturnOld
public org.apache.jena.dboe.base.record.Record deleteAndReturnOld(org.apache.jena.dboe.base.record.Record record)
-
iterator
public java.util.Iterator<org.apache.jena.dboe.base.record.Record> iterator()
-
iterator
public java.util.Iterator<org.apache.jena.dboe.base.record.Record> iterator(org.apache.jena.dboe.base.record.Record fromRec, org.apache.jena.dboe.base.record.Record toRec)- Specified by:
iteratorin interfaceRangeIndex
-
iterator
public <X> java.util.Iterator<X> iterator(org.apache.jena.dboe.base.record.Record minRec, org.apache.jena.dboe.base.record.Record maxRec, org.apache.jena.dboe.base.record.RecordMapper<X> mapper)- Specified by:
iteratorin interfaceRangeIndex
-
sync
public void sync()
- Specified by:
syncin interfaceorg.apache.jena.atlas.lib.Sync
-
close
public void close()
-
dump
public void dump()
-
dump
public void dump(org.apache.jena.atlas.io.IndentedWriter out)
-
nonTransactional
public void nonTransactional()
-
startRecovery
public void startRecovery()
- Specified by:
startRecoveryin interfaceTransactionalComponent- Specified by:
startRecoveryin classTransactionalComponentLifecycle<org.apache.jena.dboe.trans.bplustree.BptTxnState>
-
recover
public void recover(java.nio.ByteBuffer ref)
- Specified by:
recoverin interfaceTransactionalComponent- Specified by:
recoverin classTransactionalComponentLifecycle<org.apache.jena.dboe.trans.bplustree.BptTxnState>
-
finishRecovery
public void finishRecovery()
- Specified by:
finishRecoveryin interfaceTransactionalComponent- Specified by:
finishRecoveryin classTransactionalComponentLifecycle<org.apache.jena.dboe.trans.bplustree.BptTxnState>
-
cleanStart
public void cleanStart()
- Specified by:
cleanStartin interfaceTransactionalComponent
-
-