Class BPlusLeafRecords<KeyType,KeyBufferType>
java.lang.Object
com.semedy.reasoner.edb.persistentstore.bplustree.BPlusNode<KeyType,KeyBufferType>
com.semedy.reasoner.edb.persistentstore.bplustree.BPlusLeaf<KeyType,KeyBufferType>
com.semedy.reasoner.edb.persistentstore.bplustree.BPlusLeafRecords<KeyType,KeyBufferType>
- All Implemented Interfaces:
CacheUnit
- Direct Known Subclasses:
BPlusLeafIndex
A leaf is the node in a B+ tree containing records. Although we want them to
be generic,
most B+ trees are specialized. As a result, the only thing generic about the tree is the key
most B+ trees are specialized. As a result, the only thing generic about the tree is the key
- Author:
- angele
-
Nested Class Summary
Nested classes/interfaces inherited from class com.semedy.reasoner.edb.persistentstore.bplustree.BPlusNode
BPlusNode.BPlusStatus -
Constructor Summary
ConstructorsConstructorDescriptionBPlusLeafRecords(BPlusKeys<KeyType, KeyBufferType> keys, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) BPlusLeafRecords(BPlusKeys<KeyType, KeyBufferType> keys, long[] records, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) Initializes leaf. -
Method Summary
Modifier and TypeMethodDescriptionbooleanappend a key with a recordlongBorrow the first recordlongborrows the rightmost recordbyte[]Map node to an array of bytesstatic BPlusLeafRecords<long[],TupleBuffer> createLeaf(byte[] bytes, KeysFactory<long[], TupleBuffer> keysFactory, BPlusTree<long[], TupleBuffer> bplustree) Method for creating a leaf from the given byte array.booleanDeletes the key (and the associated record offset) from this node.voiddestroy()free up ressources at the end (CacheManager.clear)voidperforms several cleaning up actions after borrowing from the right.voidperforms several cleanign up actions after borrowing from the left.getIndexBuffer(int index) get attached object at indexlonggetObjectSize(int index) get size of attached object at indexlonggetRecord(int index) get record at indexlong[]booleanInserts a key and the record offset into the node.booleanisLeaf()A quick checker to see if the node is a leaf- if so, we have found the final result of the search.voidremove()longSearches for the given value.longintsearchIndex(KeyType key) Searches for index of the key Returns -1 it key is not containedintSearches for hte (possible) index of the keybooleanSets the record of a given key
returns false if key is not therevoidsubstitute(BPlusKeys<KeyType, KeyBufferType> key, long[] record, long leftOffs) Methods inherited from class com.semedy.reasoner.edb.persistentstore.bplustree.BPlusLeaf
checkSanity, replace, searchIndexToInsert, searchIndexToInsertByBufferMethods inherited from class com.semedy.reasoner.edb.persistentstore.bplustree.BPlusNode
borrowFirstKey, borrowKey, canBeBorrowedFrom, clear, detach, getFather, getIndexInFather, getKeys, getLast, getNext, getNumKeys, getOffset, getStatus, isEmpty, isFull, isReleasable, release, setFather, setLast, setNext, setStatus, sizeInBytes, toString, touch, underflow
-
Constructor Details
-
BPlusLeafRecords
public BPlusLeafRecords(BPlusKeys<KeyType, KeyBufferType> keys, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) - Parameters:
keys-maxSizeInBytes-bplustree-
-
BPlusLeafRecords
public BPlusLeafRecords(BPlusKeys<KeyType, KeyBufferType> keys, long[] records, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) Initializes leaf.- Parameters:
keys-records-maxSizeInBytes-bplustree-
-
-
Method Details
-
substitute
- Overrides:
substitutein classBPlusLeaf<KeyType,KeyBufferType>
-
delete
Deletes the key (and the associated record offset) from this node. First, we find the index of the key. Make a temp array containing keys[0, indexToSkip - 1] copy keys[indexToSkip + 1, keys.length - 1] over. Do the same with the records.- Overrides:
deletein classBPlusLeaf<KeyType,KeyBufferType> - Parameters:
keyToDelete-
-
insert
Inserts a key and the record offset into the node. First, we find the index where these items need to be. Then copy all elements up to that point into a temp array. Shove the new key in, copy the rest of the elements. use the same index and do the same with the records.- Overrides:
insertin classBPlusLeaf<KeyType,KeyBufferType> - Parameters:
key-record-- Throws:
IOException
-
set
Sets the record of a given key
returns false if key is not there- Overrides:
setin classBPlusLeaf<KeyType,KeyBufferType> - Parameters:
key-record-
-
append
Description copied from class:BPlusLeafappend a key with a record- Overrides:
appendin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
- Throws:
IOException
-
isLeaf
public boolean isLeaf()Description copied from class:BPlusNodeA quick checker to see if the node is a leaf- if so, we have found the final result of the search.- Overrides:
isLeafin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
- true if this is a leaf
-
search
Searches for the given value.- Overrides:
searchin classBPlusLeaf<KeyType,KeyBufferType> - Parameters:
key-- Returns:
- the value for the key, or -1 if not found.
-
searchIndex
Description copied from class:BPlusLeafSearches for index of the key Returns -1 it key is not contained- Overrides:
searchIndexin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
-
searchIndexBuffer
Description copied from class:BPlusLeafSearches for hte (possible) index of the key- Overrides:
searchIndexBufferin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
-
searchBuffer
- Overrides:
searchBufferin classBPlusLeaf<KeyType,KeyBufferType>
-
getRecords
public long[] getRecords()- Overrides:
getRecordsin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
- array of records
-
getRecord
public long getRecord(int index) get record at index- Overrides:
getRecordin classBPlusLeaf<KeyType,KeyBufferType> - Parameters:
index-- Returns:
-
getIndexBuffer
get attached object at index- Overrides:
getIndexBufferin classBPlusLeaf<KeyType,KeyBufferType> - Throws:
IOException
-
getObjectSize
get size of attached object at index- Overrides:
getObjectSizein classBPlusLeaf<KeyType,KeyBufferType> - Throws:
IOException
-
borrowRecord
public long borrowRecord()borrows the rightmost record- Overrides:
borrowRecordin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
- the rightmost record
-
doneBorrowing
public void doneBorrowing()Description copied from class:BPlusNodeperforms several cleaning up actions after borrowing from the right.- Overrides:
doneBorrowingin classBPlusLeaf<KeyType,KeyBufferType>
-
doneBorrowingFirst
public void doneBorrowingFirst()Description copied from class:BPlusNodeperforms several cleanign up actions after borrowing from the left.- Overrides:
doneBorrowingFirstin classBPlusLeaf<KeyType,KeyBufferType>
-
borrowFirstRecord
public long borrowFirstRecord()Borrow the first record- Overrides:
borrowFirstRecordin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
- the first record
-
remove
public void remove()- Overrides:
removein classBPlusLeaf<KeyType,KeyBufferType>
-
destroy
public void destroy()Description copied from interface:CacheUnitfree up ressources at the end (CacheManager.clear) -
createBytes
public byte[] createBytes()Map node to an array of bytes- Overrides:
createBytesin classBPlusLeaf<KeyType,KeyBufferType> - Returns:
-
createLeaf
public static BPlusLeafRecords<long[],TupleBuffer> createLeaf(byte[] bytes, KeysFactory<long[], TupleBuffer> keysFactory, BPlusTree<long[], TupleBuffer> bplustree) Method for creating a leaf from the given byte array.- Parameters:
bytes-- Returns:
-