Implementing Concurrent R trees in Java Mehdi Kargar
- Slides: 18
Implementing Concurrent R -trees in Java Mehdi Kargar Department of Computer Science and Engineering 1
R-trees � R-tree is useful for indexing and representing multidimensional objects. � An R-tree is a depth balanced tree with a dynamic index structure ◦ Leaf nodes point to actual keys ◦ The number of entries in a node is between m and N (1 < m ≤ N) ◦ Root might have between 1 and N entries. ◦ All leaf nodes are at the same level ◦ The key for each internal node is the minimum bounding rectangle of its child nodes ◦ keys at all levels might have overlap with each other 2
R-trees 3
R-trees � During the search for a key, it might be necessary to descend multiple sub-trees � Insertion is more complex than search ◦ After inserting a new key, the new bounding rectangle should be propagated up to the tree. ◦ If a node overflows, it should be split. The split should also be propagated up to the tree. � During the Insertion, only one sub-tree is traversed at each level. We should not descend multiple sub-trees. 4
Three Implementations 1. 2. 3. The Monitor Solution The Readers-Writers Solution Locking Nodes (RLink-Tree) 5
The Monitor Solution public class Monitor. RTree { public synchronized void add(Rectangle rect) {. . . } } public synchronized boolean search(Rectangle rect) {. . . } 6
The Readers Writers Solution import java. util. concurrent. locks. Reentrant. Read. Write. Lock; public class Read. Write. Lock. RTree { private Reentrant. Read. Write. Lock lock; . . public void add(Rectangle rect) { this. lock. write. Lock(). lock(); . . this. lock. write. Lock(). unlock(); } public boolean search(Rectangle rect) { this. lock. read. Lock(). lock(); . . this. lock. read. Lock(). unlock(); } } 7
RLink-Tree � Basic idea : ◦ Logical Serial Number (LSN) is used to capture unfinished splits. ◦ Right Links is used to follow the split nodes. 8
RLink-Tree (Locking Problem) RLink-Tree uses the lock coupling strategy for inserting new entries. � The normal implementation of lock coupling leads to deadlocks. � Read-Lock Process 1 Finding the best node for inserting new entries Read-Lock the nodes in a top-down approach Write-Lock 2 1 x 1 2 Y Z Process 2 After Inserting new entry, the split and new bounding rectangle should be propagated Write-Lock the nodes in a bottom-up approach 9
RLink-Tree (Locking Problem) � The previous situation is called phantom problem. � It can be solved by predicate locks. � What are predicate locks ? ? � You can find more about it here : ◦ K. Eswaren, J. Gray, R. Lorie and I. Traiger, On the Notions of Consistency and Predicate Locks in a Database System, Comm. ACM, November 1976, Vol. 19, No. 11, pp. 624– 633. 10
What is implemented? � Here, the root node is kept write-lock for the insertion of new nodes. Thus, only one process can insert at any time and we do not have multiple insertions. � The LSN and right links are the same as the original RLink-Tree. � Search algorithm and the read-lock mechanism is also the same as RLink-Tree. 11
Read Lock and Write Lock of Nodes public synchronized void read. Lock() { while (this. state == WRITE) { try { this. wait(); } catch (Interrupted. Exception e) {} } this. increment(); } public synchronized void read. Unlock() { this. decrement(); this. notify. All(); } public synchronized void write. Lock() { while (this. readers != 0 || state == WRITE) { try { this. wait(); } catch (Interrupted. Exception e) {} } this. state = WRITE; } public synchronized void write. Unlock() { this. state = READ; this. notify. All(); } 12
Running time comparison 13
Running time comparison 14
Running time comparison 15
Possible Improvements � Having multiple insertion process without locking the root. � Finding better solution for phantom problem. �. . . 16
Next Phase � Verifying the implementations using different applications and tools such as Java Path. Finder 17
Thank you for you attention 18
- Concurrent
- Mehdi
- Azure technical trainer
- Mehdi salek md
- Sodium correction formula
- Mehdi namazi
- Mehdi bouguerra
- Mehdi salek
- General mehdi rahimi
- Mehdi hamadani
- Dr mehdi hasan
- Dr. mehdi pain management
- Mehdi nt
- Mehdi namazi
- Mehdi bouguerra
- Minimax java
- Mis issues in strategy implementation
- Designing and implementing branding strategies
- Low end entry level brand