US6484172B1 - Concurrency control method for high-dimensional index structure using latch and lock - Google Patents

Concurrency control method for high-dimensional index structure using latch and lock Download PDF

Info

Publication number
US6484172B1
US6484172B1 US09/497,345 US49734500A US6484172B1 US 6484172 B1 US6484172 B1 US 6484172B1 US 49734500 A US49734500 A US 49734500A US 6484172 B1 US6484172 B1 US 6484172B1
Authority
US
United States
Prior art keywords
node
lock
tree
leaf
reinsertion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/497,345
Inventor
Jang Sun Lee
Jin Soo Lee
Hun Soon Lee
Myung Joon Kim
Jae Soo Yoo
Seok Il Song
Seok Hee Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Uniloc 2017 LLC
Original Assignee
Electronics and Telecommunications Research Institute ETRI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Electronics and Telecommunications Research Institute ETRI filed Critical Electronics and Telecommunications Research Institute ETRI
Assigned to ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE reassignment ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LEE, SEOK-HEE, SONG, SEOK-IL, YOO, JAE-SOO, KIM, MYUNG-JOON, LEE, HUN-SOON, LEE, JIN-SOO, LEE, JANG-SUN
Application granted granted Critical
Publication of US6484172B1 publication Critical patent/US6484172B1/en
Assigned to IPG ELECTRONICS 502 LIMITED reassignment IPG ELECTRONICS 502 LIMITED ASSIGNMENT OF ONE HALF (1/2) OF ALL OF ASSIGNORS' RIGHT, TITLE AND INTEREST Assignors: ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE
Assigned to PENDRAGON ELECTRONICS AND TELECOMMUNICATIONS RESEARCH LLC reassignment PENDRAGON ELECTRONICS AND TELECOMMUNICATIONS RESEARCH LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE, IPG ELECTRONICS 502 LIMITED
Assigned to UNILOC LUXEMBOURG S.A. reassignment UNILOC LUXEMBOURG S.A. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PENDRAGON ELECTRONICS AND TELECOMMUNICATIONS RESEARCH LLC
Assigned to UNILOC 2017 LLC reassignment UNILOC 2017 LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: UNILOC LUXEMBOURG S.A.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Definitions

  • the present invention relates to a concurrency control method for database systems, particularly for high-dimensional index structures which use a reinsert operation when an insert operation causes a node overflow. More particularly, the present invention relates to a technique by which the entity, deleted in a node of an index tree for reinsert operation, can be searched.
  • index trees have been performed very frequently. And various index structures such as Grid File, Multilevel Grid File, R-Tree, R*-Tree, TV-Tree, X-Tree, SS-Tree, SR-Tree, CIR-Tree and Hybrid-Tree have been proposed. In the multi-user environment of real application, an appropriate concurrency control algorithm for index structures is necessarily needed. Most of index structures are expressed by a tree shape (hereinafter refers to index tree). Each element in an index tree is called as a node, and the node makes up the index tree by a hierarchical structure. The index tree is made by inserting/deleting entries into/from it.
  • each node of an index tree is able to have only limited number of entries. It is called an overflow when a node has no space to insert a new entry. When an overflow occurs in a node, reinserting some of the entries one by one into the index tree is able to enhance the performance.
  • the research of a concurrency control method for existing index tree is primarily about B-Tree for one-dimensional data.
  • the concurrency control algorithms for existing multidimensional index tree can be divided into two classes. One is based upon Lock-Coupling Technique and the other is based upon Link Technique.
  • a Concurrency Control algorithm based upon Lock-Coupling acquires lock in next-visiting nodes before unlocking the current node's lock when traversing the index tree. When the node split is performed or MBR change is reflected, all nodes which relates to these operation should be locked. This method decreases the concurrency performance because one transaction should maintain the locks of many nodes simultaneously on search or insert operation.
  • a concurrency control algorithm based upon Link Technique is proposed to solve this problem.
  • the previous research proves that the concurrency control method based upon Link Technique has a better performance than that based upon Lock-Coupling Technique.
  • the concurrency control algorithm based upon Link Technique need not perform Lock-Coupling. Namely, the Link Technique has only to acquire lock in one node during the traversing of the tree. However, performing MBR change or split operation still need to acquire locks in many nodes simultaneously.
  • Link Technique is to connect all nodes on each level via rightward-pointing links and to check and compensate the split of a lower node, which is not reflected upon the upper node, without performing lock-coupling on search operation.
  • R Link -Tree modifies and compensates the Link Technique of the B Link -Tree because of the structural difference between R-Tree and B-Tree.
  • the modification introduces NSN(Node Sequence Number) and allocates it to each node.
  • the modification changes the entry structure from ⁇ MBR, child-page> to ⁇ MBR, child-page, NSN>.
  • the NSN is increased when a new node is made, and each new node is given the NSN of the old node, and the old node is given an increased NSN. And then, the new node is linked to the rightward of the old node. Therefore, the search operation, when traversing the tree, can determine whether the child node is split or not by the value of NSN.
  • the search process which memorizes the NSN recorded in the entry ⁇ MBR, child-page, NSN> of the parent node, moves rightward when the value of NSN of child node is larger than the memorized NSN.
  • the search process meets the node having the same NSN to the memorized NSN, it stops moving sideward and proceeds to perform a search of lower nodes.
  • This method has some drawbacks.
  • the improved method solves the problem which wastes the storage space owing to the added NSN to the data structure of the entry.
  • the improved method also allocates NSN to each node like R Link -Tree, checks the split through the rightward-pointing link, and determines whether to go on making tours through the rightward-pointing link.
  • R Link -Tree unlike R Link -Tree, the improved method provides the means to determine whether the lower node splits without recording the NSN of the lower node in the entry of the non-leaf node. Allocating NSN by using a global counter enables this.
  • the new node When a node splits, the new node is given the NSN of the old node, and the old node is given the new NSN. And then, the operation of traversing the tree memorizes the value of the global counter of visited node. The operation of traversing the tree compares the NSN of the current node and the memorized value of the global counter when visiting the lower node and concludes that the split is not reflected on the upper node if the NSN of the current node is larger. The search operation stops moving to neighbor nodes when it meets the node having smaller NSN than the memorized NSN of the global counter and continues making tours to lower nodes.
  • this method has a problem.
  • the split of node using a global counter should acquire lock in the upper node before the split of the current node and proceed to split. Besides, it should not release the locks of the nodes which relate to the split operation until the split operation is terminated for the purpose of recovery.
  • an object of the present invention is to provide the method for preventing the problem of lowering the efficiency of the storage space due to the NSN included in the entry of the leaf node by using an LSN as a global counter, and to provide the method for the search operation to refer to the specified node(the reinsertion node) which stores the deleted entries from the tree for the purpose of the reinsert operation.
  • Another object of the present invention is to provide the method for the lock in the index node not to affect the search operation at all by mixing latch and lock.
  • a further another object of the present invention is to provide a high searching performance because the present invention acquires only shared-mode latch (hereinafter refers to shared latch) in the visiting node during the search operation and a delay due to the lock of the insert or delete operation doesn't occur.
  • shared-mode latch hereinafter refers to shared latch
  • a method for searching a high-dimensional index tree of a database comprising the steps of: a) adding a root node to the queue and acquiring the shared lock for reinsertion node; b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty; c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; d) returning to the step b).
  • a method for inserting an entry to the high-dimensional index tree of a database comprising the steps of: a) searching a leaf node to which a new entry is inserted; b) determining whether an insert for the new entry to the searched leaf node causes any overflow; c) when the result of the step b) is positive, acquiring a tree lock, performing the process for the overflow of the leaf node and then releasing the tree lock; and d) when the result of the step b) is negative, inserting the new entry to the leaf node, acquiring a tree lock changing a MBR and releasing the tree lock.
  • a computer readable medium having computer-executable instructions stored thereon, for performing a method for searching the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, the method comprising the steps of: a) adding a root node to the queue and acquiring the shared lock for reinsertion node; b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty; c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; d) returning to the step b).
  • a computer readable medium having computer-executable instructions stored thereon, for inserting an entry to the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, the method comprising the steps of: a) searching a leaf node to which a new entry is inserted; b) determining whether an insert for the new entry to the searched leaf node causes any overflow; c) if the result of the step b) is positive, acquiring a tree lock, performing a process for the overflow of the leaf node and then releasing the tree lock; and d) if the result of the step b) is negative, inserting the new entry to the leaf node, acquiring a tree lock, changing a MBR and releasing the tree lock.
  • FIG. 1 illustrates the tree structure for explaining the problem of path loss when performing the insert, delete, and reinsert operation simultaneously in accordance with a preferred embodiment of the present invention
  • FIG. 2 is a block diagram showing the subroutines, components of the insert operation, in accordance with a preferred embodiment of the present invention
  • FIG. 3 is a flowchart for explaining the operation of the Insert process in accordance with a preferred embodiment of the present invention
  • FIG. 4 is a flowchart for explaining the operation of the FindNode process, which finds a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention
  • FIG. 5 is a flowchart for explaining the operation of the TreatOverflow process, which treats the overflow of a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention
  • FIG. 6 is a flowchart for explaining the operation of the Reinsert process, one operation of the Insert process in accordance with a preferred embodiment of the present invention
  • FIG. 7 is a flowchart for explaining the operation of the Split process, which splits a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention
  • FIG. 8 is a diagram illustrating the tree structure for explaining the process 800 which requests a conditional exclusive lock to the parent node of the path stack during the overflow process of the non-leaf node, in accordance with a preferred embodiment of the present invention
  • FIG. 9 is a flowchart for explaining the operation of the Search process 900 for the range query in accordance with one preferred embodiment of the present invention.
  • FIG. 10 is a flowchart for explaining the operation of the delete process in accordance with a preferred embodiment of the present invention.
  • the recent multidimensional index trees (R*-Tree, TV-Tree, X-Tree, SS-Tree, CIR-Tree) select some entries in the node and reinsert one by one into the index tree.
  • the entries selected for reinsert operation can not be searched.
  • the reinsert period is a very long time. If the entries being reinserted can not be searched during this period, then it will cause a serious problem.
  • the present invention relates to an effective concurrency control method for a high-dimensional index tree.
  • the concurrency control method records the entries deleted for reinsert operation in reinsertion node so that the deleted entries can be searched during the reinsert operation.
  • the present invention is based upon the Link Technique used in the R Link -Tree. Namely, the present invention uses a global counter, allocates NSN, and consequently prevents the problem that the NSN included in the non-leaf node lowers the efficiency of storage space.
  • the present invention unlike the previous method, provides the method to use LSN as a global counter.
  • the LSN has the characteristic of monotonously increasing like the NSN and never decreasing.
  • the R Link -Tree using the previous Link Technique should lock the index tree in order to make sure the consistency of the tree because of the structural characteristic of R-Tree series. Without locking in the index node, the insert or delete operation performing in the subtree of the node doing the reinsert operation, can lose the path when the insert or delete operation tries to change the MBR information due to the insert or delete operation going up the tree.
  • the present invention mixes lock and latch to solve the problem of path loss.
  • the latch for the node of index tree synchronizes the transactions (or processes) when the transactions visit a node of index tree, and makes sure the physical consistency of the node.
  • the present invention acquires shared lock in all nodes which the transaction visits when making tours to lower nodes for insert and delete operation, and releases the shared lock when the transaction ends.
  • the problem of path loss can occur when a reinsert occurs while the transaction goes up the tree and tries to change the MBR due to insert or delete operation. Therefore, the present invention requests to acquire exclusive-mode lock (hereinafter exclusive lock) in a node to be reinserted before the reinsert operation in order to prevent the problem of path loss due to the reinsert operation.
  • exclusive lock exclusive-mode lock
  • the present invention doesn't perform reinsert operation but performs split operation.
  • the lock in index node doesn't affect the search operation.
  • the search operation acquires shared latch in a node to approach and consequently, the delay due to the lock of insert or delete operation doesn't occur.
  • the lock of root node (hereinafter refers to root lock) in index tree has special meaning.
  • the root lock is used to embody tree lock.
  • the concurrency control method performs in serial the overflow operation (includes reinsert or split operation) and MBR change operation.
  • the tree lock is used to perform these operations in serial.
  • the transaction acquires tree lock in exclusive-mode prior to treating the overflow.
  • the other transaction while the transaction performs, does not perform but wait even if overflow occurs or the MBR changes.
  • Other insert operations which do not cause the overflow or the MBR change and search operations can perform without acquiring tree lock.
  • the present invention provides a concurrency controlled reinsert operation by using a reinsertion node.
  • the entries deleted from the tree are recorded in a region for reinsert, and can be referenced by the search operation.
  • the present invention records the deleted entries in a specific node (i.e. reinsertion node) and the search operation refers the deleted entries.
  • each index tree has only one reinsertion node. And so the overflow or the MBR change operation cannot occur at the same time, i.e., only one can occur at one time. Namely, two or more reinsert operation cannot occur simultaneously.
  • the present invention guarantees that the transaction performing reinsert operation holds latch in a node of one level at most.
  • the NSN of node is set using a global counter.
  • the parent node need not acquire latch in advance for the split operation. This prevents the delay time from being longer during the search operation.
  • FIG. 1 illustrates the tree structure for explaining the problem of path loss when the insert, delete, and reinsert operation are performed simultaneously in accordance with a preferred embodiment of the present invention.
  • FIG. 1 it shows the path loss in transaction T 1 , T 2 , and T 3 .
  • Transaction T 1 inserts a new entry into node P 4 , and approaches to node P 2 to modify the entry for node P 4 .
  • Transaction T 2 performs reinsert operation for node P 2 and deletes the entry for node P 4 .
  • Transaction T 1 cannot find the entry for P 4 in node P 2 , and results to path loss.
  • FIG. 2 is a block diagram for showing the operations, components of the insert operation in accordance with a preferred embodiment of the present invention.
  • the insert 300 operation comprises FindNode 400 , TreatOverflow, Reinsert 600 , Split 700 , SplitAll and FixMBR operations.
  • the FindNode 400 operation has the function to find out the appropriate node for the insert of entry.
  • the TreatOverflow operation 500 has the function to judge whether to perform split operation or to perform reinsert operation, and performs this operation.
  • the reinsert operation 600 is a function to be called when the TreatOverflow operation 500 treats an overflow as a reinsertion.
  • the function inserts the reinsertion entries in an overflowed node into an index tree.
  • the SplitAll operation in the reinsert operation is a function to be called to split when an overflow occurs during the reinsert operation.
  • the SplitAll operation in the reinsert operation is the same as the split operation 700 except that the SplitAll operation doesn't acquire locks. The reason that the SplitAll operation doesn't acquire locks is that the SplitAll operation already gets lock because the SplitAll operation occurs during the reinsert operation.
  • FIG. 3 is a flowchart for explaining the operation of the insert process in accordance with the preferred embodiment of the present invention.
  • the insert operation begins with finding a leaf node to insert a new entry into (FindNode 310 ).
  • the step 312 judges whether the found leaf node has a sufficient space to insert a new entry into or not. When the leaf node has not enough space, the step 314 acquires tree lock, and the step 316 performs TreatOverflow operation. At step 318 , the tree lock is released. When the found leaf node has sufficient space, the following processes continue. The process continues to inserts new entry into the leaf node.
  • the step 322 judges whether the MBR of the leaf node changed or not at step 320 . When the MBR is changed, tree lock is acquired at step 324 .
  • step 326 releasing the exclusive-mode latch (hereinafter exclusive latch) in the leaf node.
  • FixMBR operation is performed at step 328 , and then the tree lock is released at step 330 . All acquired locks is released at step 334 and ends.
  • the process releases the exclusive latch in the leaf node at step 332 and does the all acquired locks at step 334 and ends.
  • FIG. 4 is a flowchart for explaining the operation of the FindNode process, which finds a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
  • the method provides the method to find out the appropriate node for inserting the new entry.
  • the step 410 sets the CurNode(current node) to be RootNode(root node) and acquires shared latch in the CurNode.
  • the step 412 finds out the appropriate child node into which new entry is inserted, and the step 414 releases the shared latch in the CurNode.
  • the step 416 judges whether the level of the ChildNode is the same as the target level. When it is same, the step 418 acquires exclusive latch and exclusive lock in the ChildNode. When it is not the same, the step 420 acquires shared latch and shared lock in the ChildNode.
  • the step 422 judges whether the NSN of the ChildNode is greater than the LSN of the CurNode.
  • step 424 selects an appropriate node in the node split from the ChildNode which is not reflected on the upper node.
  • step 426 the selected node is assigned to ChildNode, and the process acquires an exclusive latch and exclusive lock or shared latch and shared lock). Acquiring latch and lock-mode is the same as the result of the step 416 .
  • step 428 determines whether the ChildNode's level is equal to the target level. When it is not equal, at step 430 , the ChildNode is pushed into path stack, and at step 432 , the CurNode is assigned to ChildNode. And the process goes back to the step 412 . If the ChildNode's level is equal to the target level, the process proceeds to step 432 at which the process returns the ChildNode and Path stack.
  • FIG. 5 is a flowchart for explaining the operation of the TreatOverflow process which treats the overflow of a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
  • the TreatOverflow operation 500 provides the method to perform when a node has not enough space for new entry. It is determined whether is the root node or not at step 510 . When the CurNode is the root node, root split is performed at step 534 , and the entry which cause the overflow is inserted at step 536 . When the CurNode is not the root node, the process continues to request conditional exclusive lock in the CurNode at step 512 . Then, the process goes to step 514 to determine whether the CurNode acquires exclusive lock. When the exclusive lock is acquired, the process continues to step 518 calling the reinsert operation 600 and then goes to step 520 in which the exclusive latch and the exclusive lock in the CurNode are released.
  • step 522 the process determines whether the reinsert operation splits the CurNode. If the result of step 522 is positive, the process goes to step 524 , otherwise the process stops.
  • the step 516 calls the Split operation 700 . All the overflows in the leaf node continue to reinsert operation because the leaf node acquires exclusive lock during the FindNode operation 400 .
  • the transaction doesn't perform the reinsert operation but performs the split operation in the non-leaf node while the other transaction performs the insert or delete operation in the subtree of the non-leaf node.
  • the next step to be performed depends upon how the reinsert operation 600 finished.
  • the process stops.
  • the CurNode overflows during the reinsert operation 600
  • the ParentNode is read from the path stack.
  • the process proceeds to step 528 at which ParentNode is assigned to the CurNode, then the process goes back to step 510 .
  • FIG. 6 is a flowchart for explaining the operation of the Reinsert process, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
  • the process requests a conditional exclusive lock in the reinsertion node and then it is determined whether requested lock is acquired or not. If the requested lock is acquired, the process deletes the reinsertion entries from the CurNode and inserts into the reinsertion node at step 614 . On contrary, if the requested lock is not acquired, the process proceeds to step 612 releasing exclusive latch in the CurNode and acquiring non-conditional exclusive lock in the reinsertion node and exclusive latch in the CurNode, and then the process goes to step 614 . In step 616 , the number of the reinsertion entries is recorded in the CurNode. The number plays a role as a counter for inserting one by one the reinsertion entries into the index tree.
  • the first record in the reinsertion node saves the level on which the reinsertion is occurring, node identifier and the MBRs of the reinsertion entries. Then, the exclusive latch is released in the reinsertion node and the CurNode at step 618 . Subsequently, the MBR change of the CurNode is reflected on the ancestor node (FixMBR) in step 620 . In step 622 , it is determined whether all of the deleted entries are reinserted into the index tree. The judgment of the step 622 can be done by checking the number of reinsertion entries in the CurNode is zero or not. If the result of step 622 is positive, the process goes to step 640 , the process releases exclusive lock in the reinsertion node and stops.
  • step 624 the process found out an appropriate node for the reinsertion entry (call FindNode operation).
  • step 626 it is determined whether there is sufficient space to insert or not. If the result of step 626 is positive, the process inserts the entry into the found node in step 628 . In step 630 , the MBR change is reflected on the ancestor node. In step 632 , the process decreases the number of the reinsertion entries in the CurNode by one, and the process goes to the step 622 . If the result of the step 626 is negative, the process goes to step 634 . In step 634 , it is determined whether the found node is the CurNode or not.
  • step 638 call the SplitAll operation in order to split the CurNode. Namely, when the CurNode overflows again after the reinsert operation, the next step split the CurNode. All overflows during the reinsert operation leads to split through the SplitAll. Then, the process releases exclusive lock in the reinsertion node and stops. If the result of step 634 is negative, the process splits the node found, reflects the split on the upper node, and inserts. Then the process goes to the step 622 .
  • FIG. 7 is a flowchart for explaining the operation of the Split process, which splits a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
  • the split operation 700 allocates a new node(NewNode) and acquires the exclusive latch (step 710 ).
  • step 712 it is determined whether the node to be split is a leaf node or not. When it is a leaf node, in step 714 the process acquires exclusive lock in the NewNode. In step 716 , the process selects the entries to be moved from the CurNode to the NewNode, inserts these entries into the NewNode and deletes these entries from the CurNode.
  • step 718 the NSN of the CurNode is assigned to the NSN of the NewNode.
  • step 720 the LSN of the NewNode is assigned to the NSN of the CurNode.
  • step 722 the process connects the CurNode and the NewNode.
  • step 724 the exclusive lock and the exclusive latch are released in the CurNode and NewNode, and then the process stops.
  • FIG. 8 illustrates the tree structure for explaining the process 800 which requests a conditional exclusive lock to the is parent node of the path stack during the overflow process of the non-leaf node, in accordance with a preferred embodiment of the present invention.
  • the process 800 requests the exclusive lock, if the exclusive lock is acquired then reinsert operation is performed. Otherwise, a split is performed.
  • T 1 , T 2 and T 3 represent transactions for inserting entries.
  • T 1 proceeds through the node N 5 to the node N 3 for inserting an entry.
  • T 1 acquires the shared lock for the node N 5 and acquires an exclusive lock for the node N 3 .
  • Transactions T 2 and T 3 also proceed to the node N 3 through the node N 5 for inserting an entry.
  • T 2 and T 3 successively acquire the shared lock as is the case of T 1 .
  • T 1 undergoes an overflow during the insertion of the node N 3 so as to acquire a tree lock and then perform reinsert operation.
  • the node N 3 is split. Based on this the upper node N 5 should be modified.
  • This modification causes an overflow and thus a conditional exclusive lock for the node N 5 is requested for performing the reinsert operation.
  • T 1 since T 2 and T 3 has acquire shared lock for the node N 5 , T 1 does not acquire any exclusive lock and performs a split. T 1 performs the split of the node N 5 and then releases the tree lock so as to complete its flow. Then T 3 insert an entry into the node N 1 and this insertion cause a MBR change. A tree lock is requested to propagate the MBR change to the upper node. In advance of this, T 2 inserts an entry into the node N 2 . T 2 acquires a tree lock and perform an reinsert operation because the insert operation cause an overflow.
  • T 2 splits the node N 2 . Since another overflow occurs during the reflecting the split of N 2 on N 5 ′, a conditional exclusive lock is again requested to the node N 5 . However, since T 3 maintains the shared lock for the node N 5 , T 2 cannot perform any reinsertion but perform a split. If T 3 requests a conditional exclusive lock for the node N 5 ′ in this condition, T 3 would acquire it and perform a reinsert operation in the node N 5 ′. This, however, may cause the MBR having the changed node N 2 to be lost path during the modification of the upper nodes.
  • FIG. 9 is a flowchart for explaining the operation of the Search process 900 for the range query in accordance with one preferred embodiment of the present invention.
  • the search process 900 always maintains the shared latch in only the node existing in one level, and senses the split of child nodes of the currently visited node using a link technique.
  • step 910 the level of the root node is assigned to the current level and the root node is added to the queue.
  • step 912 the shared lock is acquired in the reinsertion node.
  • the process which performs the range query or the K-nearest neighbor point query, acquires the shared lock in the reinsertion node before performing the search operation. This is for preventing that the reinsertion node is changed during the search. In other words, this is for preventing that the reinsertion entries should be excluded from the object to be searched based on the fact that any change of the reinsertion node can be made during the search. Accordingly, in step 912 , the process requests and acquires the shared lock in the reinsertion node.
  • step 914 it is determined whether the queue is empty or not. If the result of the step 914 is positive, in step 938 the process releases shared lock in the reinsertion node, and the process stops. If the result of the step 914 is negative, a node is fetched as the current node CurNode from the queue and the shared latch is acquired at step 916 . At step 918 , it is determined whether the level of the CurNode (Level) is less than the current level CurLevel. If the result of the step 918 is positive, the process proceeds to step 920 in which the level of the CurNode is assigned to the current level(CurLevel). At step 922 , it is determined whether the CurLevel is equal to the level of the node being reinserted or not.
  • the shared latch is acquired in the reinsertion node. And then the entries of the reinsertion node within the query range are inserted into the result group if CurNode is leaf or into the queue if CurNode is not leaf, and the shared latch in the reinsertion node is released. Then, the process continue to step 928 acquiring shared latch in the CurNode. If the CurLevel is not equal to the level of the node being reinserted, the process continues to step 928 . If the result of the step 918 is negative, the process continues to step 928 in order to acquire shared latch in the CurNode. At step 930 , it is determined whether the CurNode is the leaf node or not.
  • the process inserts the entries of the ChildNode within the query range into the result group if CurNode is leaf at step 934 or into the queue if the CurNode is non-leaf at step 932 .
  • the process releases shared latch in the CurNode. The process goes back to step 914 .
  • FIG. 10 is a flowchart for illustrating the operation of the deleting process 1000 .
  • the deleting process is initiated by step 1010 in which finds out the leaf node, which includes the entry to be deleted, and acquires exclusive latch in the found node. Then, the entry from the node found is deleted in step 1012 .
  • step 1014 a determination is made whether the percent ratio of remnant entries to the entire entries is 20% or more, or there is no remnant entry. If the result of the step 1014 is positive, a tree lock is acquired in step 1016 and the exclusive latch of the leaf node is released in step 1018 . If there is no remnant entry, the MBR of current leaf node on the upper node is transformed into negative value in step 1022 . In the searching process, the entry having such negative MBR is excluded from the object to be searched.
  • FindNode process 400 changes the negative MBR into the positive one so as to consider it as the node capable of being inserted a new entry. This endows the reusability to the vacant node. If there is remnant entry, the process acquires a tree lock and reflects the MBR change on the upper node (call FixMBR operation) in step 1024 , the process releases tree lock in step 1026 , and the process stops. If the result of the step 1014 is negative, the process releases exclusive latch in the leaf node in step 1028 , and the process stops.
  • the inventive method for supporting the concurrency of database systems prevents the problem that the efficiency of storage space is decreased due to the inclusion of the NSN in the entry of the non-leaf node by assigning the NSN using LSN as global counting number.
  • the inventive method uses both the latch technique and the lock technique, so that the lock of the index node cannot give any influence to the search process. Since the search process only acquires the shared latch, the delay for the locks of insertion and deletion does not occur, thereby increasing the searching performance.
  • the inventive method allows that the entries deleted from the tree are stored in a specific node (or reinsertion node) for reinsertion and allows the search process to refer the reinsertion node.

Abstract

A concurrency control method for searching the high-dimensional index tree of a database is disclosed. The concurrency control includes: a) adding a root node to the queue and acquiring the shared lock for reinsertion node; b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty; c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; and d) returning to the step b).

Description

FIELD OF THE INVENTION
The present invention relates to a concurrency control method for database systems, particularly for high-dimensional index structures which use a reinsert operation when an insert operation causes a node overflow. More particularly, the present invention relates to a technique by which the entity, deleted in a node of an index tree for reinsert operation, can be searched.
DESCRIPTION OF THE PRIOR ART
Last few years, a similarity search based upon a multidimensional data has been an important field of the database systems. The application areas of the similarity search are widely spread from GIS(Geographical Information System) to medical database systems and multimedia database systems.
One of the fundamental problems is how to efficiently find out objects similar to a given query from a number of multidimensional data sets. The researches about multidimensional index trees have been performed very frequently. And various index structures such as Grid File, Multilevel Grid File, R-Tree, R*-Tree, TV-Tree, X-Tree, SS-Tree, SR-Tree, CIR-Tree and Hybrid-Tree have been proposed. In the multi-user environment of real application, an appropriate concurrency control algorithm for index structures is necessarily needed. Most of index structures are expressed by a tree shape (hereinafter refers to index tree). Each element in an index tree is called as a node, and the node makes up the index tree by a hierarchical structure. The index tree is made by inserting/deleting entries into/from it.
In addition, each node of an index tree is able to have only limited number of entries. It is called an overflow when a node has no space to insert a new entry. When an overflow occurs in a node, reinserting some of the entries one by one into the index tree is able to enhance the performance.
The research of a concurrency control method for existing index tree is primarily about B-Tree for one-dimensional data. However, the research of a concurrency control method for R-Tree, index tree for multidimensional data, has begun recently. The concurrency control algorithms for existing multidimensional index tree can be divided into two classes. One is based upon Lock-Coupling Technique and the other is based upon Link Technique. A Concurrency Control algorithm based upon Lock-Coupling acquires lock in next-visiting nodes before unlocking the current node's lock when traversing the index tree. When the node split is performed or MBR change is reflected, all nodes which relates to these operation should be locked. This method decreases the concurrency performance because one transaction should maintain the locks of many nodes simultaneously on search or insert operation.
A concurrency control algorithm based upon Link Technique is proposed to solve this problem. The previous research proves that the concurrency control method based upon Link Technique has a better performance than that based upon Lock-Coupling Technique. The concurrency control algorithm based upon Link Technique need not perform Lock-Coupling. Namely, the Link Technique has only to acquire lock in one node during the traversing of the tree. However, performing MBR change or split operation still need to acquire locks in many nodes simultaneously.
The basic concept of Link Technique is to connect all nodes on each level via rightward-pointing links and to check and compensate the split of a lower node, which is not reflected upon the upper node, without performing lock-coupling on search operation.
RLink-Tree modifies and compensates the Link Technique of the BLink-Tree because of the structural difference between R-Tree and B-Tree. The modification introduces NSN(Node Sequence Number) and allocates it to each node. And the modification changes the entry structure from <MBR, child-page> to <MBR, child-page, NSN>. The NSN is increased when a new node is made, and each new node is given the NSN of the old node, and the old node is given an increased NSN. And then, the new node is linked to the rightward of the old node. Therefore, the search operation, when traversing the tree, can determine whether the child node is split or not by the value of NSN. The search process, which memorizes the NSN recorded in the entry <MBR, child-page, NSN> of the parent node, moves rightward when the value of NSN of child node is larger than the memorized NSN. When the search process meets the node having the same NSN to the memorized NSN, it stops moving sideward and proceeds to perform a search of lower nodes.
This method has some drawbacks. First, when some transactions perform the operation of changing the tree structure (i.e. node split and MBR change), the nodes of two or more levels should be held locks at the same time, and consequently the search process can be delayed during I/O operations. Second, since the data structure of entry changes into <MBR, child-page, NSN>, the additional information, NSN lowers the efficiency of storage space and consequently the fan out of a non-leaf node is decreased.
The improved method solves the problem which wastes the storage space owing to the added NSN to the data structure of the entry. The improved method also allocates NSN to each node like RLink-Tree, checks the split through the rightward-pointing link, and determines whether to go on making tours through the rightward-pointing link. However, unlike RLink-Tree, the improved method provides the means to determine whether the lower node splits without recording the NSN of the lower node in the entry of the non-leaf node. Allocating NSN by using a global counter enables this.
When a node splits, the new node is given the NSN of the old node, and the old node is given the new NSN. And then, the operation of traversing the tree memorizes the value of the global counter of visited node. The operation of traversing the tree compares the NSN of the current node and the memorized value of the global counter when visiting the lower node and concludes that the split is not reflected on the upper node if the NSN of the current node is larger. The search operation stops moving to neighbor nodes when it meets the node having smaller NSN than the memorized NSN of the global counter and continues making tours to lower nodes. However, this method has a problem. The split of node using a global counter should acquire lock in the upper node before the split of the current node and proceed to split. Besides, it should not release the locks of the nodes which relate to the split operation until the split operation is terminated for the purpose of recovery.
SUMMARY OF THE INVENTION
Therefore, an object of the present invention is to provide the method for preventing the problem of lowering the efficiency of the storage space due to the NSN included in the entry of the leaf node by using an LSN as a global counter, and to provide the method for the search operation to refer to the specified node(the reinsertion node) which stores the deleted entries from the tree for the purpose of the reinsert operation.
Another object of the present invention is to provide the method for the lock in the index node not to affect the search operation at all by mixing latch and lock.
A further another object of the present invention is to provide a high searching performance because the present invention acquires only shared-mode latch (hereinafter refers to shared latch) in the visiting node during the search operation and a delay due to the lock of the insert or delete operation doesn't occur.
In accordance with an aspect of the present invention, there is provided a method for searching a high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, comprising the steps of: a) adding a root node to the queue and acquiring the shared lock for reinsertion node; b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty; c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; d) returning to the step b).
In accordance with an aspect of the present invention, there is provided a method for inserting an entry to the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, comprising the steps of: a) searching a leaf node to which a new entry is inserted; b) determining whether an insert for the new entry to the searched leaf node causes any overflow; c) when the result of the step b) is positive, acquiring a tree lock, performing the process for the overflow of the leaf node and then releasing the tree lock; and d) when the result of the step b) is negative, inserting the new entry to the leaf node, acquiring a tree lock changing a MBR and releasing the tree lock.
In accordance with an aspect of the present invention, there is provided a computer readable medium having computer-executable instructions stored thereon, for performing a method for searching the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, the method comprising the steps of: a) adding a root node to the queue and acquiring the shared lock for reinsertion node; b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty; c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; d) returning to the step b).
In accordance with an aspect of the present invention, there is provided a computer readable medium having computer-executable instructions stored thereon, for inserting an entry to the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, the method comprising the steps of: a) searching a leaf node to which a new entry is inserted; b) determining whether an insert for the new entry to the searched leaf node causes any overflow; c) if the result of the step b) is positive, acquiring a tree lock, performing a process for the overflow of the leaf node and then releasing the tree lock; and d) if the result of the step b) is negative, inserting the new entry to the leaf node, acquiring a tree lock, changing a MBR and releasing the tree lock.
BRIEF DESCRIPTION OF THE DRAWINGS
The above and other objects and features of the instant invention will become apparent from the following description of preferred embodiments taken in conjunction with the accompanying drawings, in which:
FIG. 1 illustrates the tree structure for explaining the problem of path loss when performing the insert, delete, and reinsert operation simultaneously in accordance with a preferred embodiment of the present invention;
FIG. 2 is a block diagram showing the subroutines, components of the insert operation, in accordance with a preferred embodiment of the present invention;
FIG. 3 is a flowchart for explaining the operation of the Insert process in accordance with a preferred embodiment of the present invention;
FIG. 4 is a flowchart for explaining the operation of the FindNode process, which finds a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention;
FIG. 5 is a flowchart for explaining the operation of the TreatOverflow process, which treats the overflow of a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention;
FIG. 6 is a flowchart for explaining the operation of the Reinsert process, one operation of the Insert process in accordance with a preferred embodiment of the present invention;
FIG. 7 is a flowchart for explaining the operation of the Split process, which splits a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention;
FIG. 8 is a diagram illustrating the tree structure for explaining the process 800 which requests a conditional exclusive lock to the parent node of the path stack during the overflow process of the non-leaf node, in accordance with a preferred embodiment of the present invention;
FIG. 9 is a flowchart for explaining the operation of the Search process 900 for the range query in accordance with one preferred embodiment of the present invention; and
FIG. 10 is a flowchart for explaining the operation of the delete process in accordance with a preferred embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
When a node overflows, the recent multidimensional index trees(R*-Tree, TV-Tree, X-Tree, SS-Tree, CIR-Tree) select some entries in the node and reinsert one by one into the index tree. The entries selected for reinsert operation can not be searched. Generally, the reinsert period is a very long time. If the entries being reinserted can not be searched during this period, then it will cause a serious problem.
The present invention relates to an effective concurrency control method for a high-dimensional index tree. The concurrency control method records the entries deleted for reinsert operation in reinsertion node so that the deleted entries can be searched during the reinsert operation.
The present invention is based upon the Link Technique used in the RLink-Tree. Namely, the present invention uses a global counter, allocates NSN, and consequently prevents the problem that the NSN included in the non-leaf node lowers the efficiency of storage space. However, the present invention, unlike the previous method, provides the method to use LSN as a global counter. The LSN has the characteristic of monotonously increasing like the NSN and never decreasing.
During insert and delete operation which may cause the structure modification of the tree, the RLink-Tree using the previous Link Technique should lock the index tree in order to make sure the consistency of the tree because of the structural characteristic of R-Tree series. Without locking in the index node, the insert or delete operation performing in the subtree of the node doing the reinsert operation, can lose the path when the insert or delete operation tries to change the MBR information due to the insert or delete operation going up the tree.
The present invention mixes lock and latch to solve the problem of path loss. The latch for the node of index tree synchronizes the transactions (or processes) when the transactions visit a node of index tree, and makes sure the physical consistency of the node. The present invention acquires shared lock in all nodes which the transaction visits when making tours to lower nodes for insert and delete operation, and releases the shared lock when the transaction ends. The problem of path loss can occur when a reinsert occurs while the transaction goes up the tree and tries to change the MBR due to insert or delete operation. Therefore, the present invention requests to acquire exclusive-mode lock (hereinafter exclusive lock) in a node to be reinserted before the reinsert operation in order to prevent the problem of path loss due to the reinsert operation. And without acquiring exclusive lock the present invention doesn't perform reinsert operation but performs split operation. According to the present invention, the lock in index node doesn't affect the search operation. According to the present invention, the search operation acquires shared latch in a node to approach and consequently, the delay due to the lock of insert or delete operation doesn't occur. According to the present invention, the lock of root node (hereinafter refers to root lock) in index tree has special meaning. The root lock is used to embody tree lock. The concurrency control method, according to the present invention, performs in serial the overflow operation (includes reinsert or split operation) and MBR change operation. The tree lock is used to perform these operations in serial. Namely, when a transaction meets a node overflow during insert operation, the transaction acquires tree lock in exclusive-mode prior to treating the overflow. When the tree lock is acquired, the other transaction, while the transaction performs, does not perform but wait even if overflow occurs or the MBR changes. Other insert operations which do not cause the overflow or the MBR change and search operations can perform without acquiring tree lock.
The present invention provides a concurrency controlled reinsert operation by using a reinsertion node. The entries deleted from the tree are recorded in a region for reinsert, and can be referenced by the search operation. The present invention records the deleted entries in a specific node (i.e. reinsertion node) and the search operation refers the deleted entries. According to the present invention, each index tree has only one reinsertion node. And so the overflow or the MBR change operation cannot occur at the same time, i.e., only one can occur at one time. Namely, two or more reinsert operation cannot occur simultaneously.
The present invention guarantees that the transaction performing reinsert operation holds latch in a node of one level at most. The NSN of node is set using a global counter. However, since the overflow or the MBR change operation can not occur at the same time, the parent node need not acquire latch in advance for the split operation. This prevents the delay time from being longer during the search operation.
Hereinafter, the preferred examples of the present invention will be explained in more detail with reference to the accompanying drawings.
FIG. 1 illustrates the tree structure for explaining the problem of path loss when the insert, delete, and reinsert operation are performed simultaneously in accordance with a preferred embodiment of the present invention.
Referring to FIG. 1, it shows the path loss in transaction T1, T2, and T3. Transaction T1 inserts a new entry into node P4, and approaches to node P2 to modify the entry for node P4. Transaction T2 performs reinsert operation for node P2 and deletes the entry for node P4. Transaction T1 cannot find the entry for P4 in node P2, and results to path loss.
FIG. 2 is a block diagram for showing the operations, components of the insert operation in accordance with a preferred embodiment of the present invention.
Referring to FIG. 2, the insert 300 operation comprises FindNode 400, TreatOverflow, Reinsert 600, Split 700, SplitAll and FixMBR operations.
The FindNode 400 operation has the function to find out the appropriate node for the insert of entry. The TreatOverflow operation 500 has the function to judge whether to perform split operation or to perform reinsert operation, and performs this operation. The reinsert operation 600 is a function to be called when the TreatOverflow operation 500 treats an overflow as a reinsertion. The function inserts the reinsertion entries in an overflowed node into an index tree. The SplitAll operation in the reinsert operation is a function to be called to split when an overflow occurs during the reinsert operation. The SplitAll operation in the reinsert operation is the same as the split operation 700 except that the SplitAll operation doesn't acquire locks. The reason that the SplitAll operation doesn't acquire locks is that the SplitAll operation already gets lock because the SplitAll operation occurs during the reinsert operation.
FIG. 3 is a flowchart for explaining the operation of the insert process in accordance with the preferred embodiment of the present invention.
Referring to FIG. 3, the insert operation begins with finding a leaf node to insert a new entry into (FindNode 310). The step 312 judges whether the found leaf node has a sufficient space to insert a new entry into or not. When the leaf node has not enough space, the step 314 acquires tree lock, and the step 316 performs TreatOverflow operation. At step 318, the tree lock is released. When the found leaf node has sufficient space, the following processes continue. The process continues to inserts new entry into the leaf node. The step 322 judges whether the MBR of the leaf node changed or not at step 320. When the MBR is changed, tree lock is acquired at step 324. The process continues to step 326 releasing the exclusive-mode latch (hereinafter exclusive latch) in the leaf node. FixMBR operation is performed at step 328, and then the tree lock is released at step 330. All acquired locks is released at step 334 and ends. When the MBR is not changed, the process releases the exclusive latch in the leaf node at step 332 and does the all acquired locks at step 334 and ends.
FIG. 4 is a flowchart for explaining the operation of the FindNode process, which finds a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
Referring to FIG. 4, the method provides the method to find out the appropriate node for inserting the new entry. The step 410 sets the CurNode(current node) to be RootNode(root node) and acquires shared latch in the CurNode. The step 412 finds out the appropriate child node into which new entry is inserted, and the step 414 releases the shared latch in the CurNode. The step 416 judges whether the level of the ChildNode is the same as the target level. When it is same, the step 418 acquires exclusive latch and exclusive lock in the ChildNode. When it is not the same, the step 420 acquires shared latch and shared lock in the ChildNode. The step 422 judges whether the NSN of the ChildNode is greater than the LSN of the CurNode. When it is greater, the step 424 selects an appropriate node in the node split from the ChildNode which is not reflected on the upper node. In step 426, the selected node is assigned to ChildNode, and the process acquires an exclusive latch and exclusive lock or shared latch and shared lock). Acquiring latch and lock-mode is the same as the result of the step 416. The process continues to step 428 to determine whether the ChildNode's level is equal to the target level. When it is not equal, at step 430, the ChildNode is pushed into path stack, and at step 432, the CurNode is assigned to ChildNode. And the process goes back to the step 412. If the ChildNode's level is equal to the target level, the process proceeds to step 432 at which the process returns the ChildNode and Path stack.
FIG. 5 is a flowchart for explaining the operation of the TreatOverflow process which treats the overflow of a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
Referring to FIG. 5, the TreatOverflow operation 500 provides the method to perform when a node has not enough space for new entry. It is determined whether is the root node or not at step 510. When the CurNode is the root node, root split is performed at step 534, and the entry which cause the overflow is inserted at step 536. When the CurNode is not the root node, the process continues to request conditional exclusive lock in the CurNode at step 512. Then, the process goes to step 514 to determine whether the CurNode acquires exclusive lock. When the exclusive lock is acquired, the process continues to step 518 calling the reinsert operation 600 and then goes to step 520 in which the exclusive latch and the exclusive lock in the CurNode are released. Subsequently, in step 522 the process determines whether the reinsert operation splits the CurNode. If the result of step 522 is positive, the process goes to step 524, otherwise the process stops. When it didn't acquire the exclusive lock in step 514, the step 516 calls the Split operation 700. All the overflows in the leaf node continue to reinsert operation because the leaf node acquires exclusive lock during the FindNode operation 400. The transaction doesn't perform the reinsert operation but performs the split operation in the non-leaf node while the other transaction performs the insert or delete operation in the subtree of the non-leaf node. When the reinsert operation 600 is terminated, the next step to be performed depends upon how the reinsert operation 600 finished. When the CurNode doesn't overflow during the reinsert operation 600, the process stops. When the CurNode overflows during the reinsert operation 600, in step 524 the ParentNode is read from the path stack. Then, at step 526, it is determined whether there is sufficient space to reflect the is split of CurNode on the ParentNode or not. If there is the sufficient space, at step 530, the split new entry is inserted into the ParentNode. Then the MBR change is reflected on the upper node at step 532.and the entry which cause the overflow is inserted at step 536, and the process stops. When there is no sufficient space, the process proceeds to step 528 at which ParentNode is assigned to the CurNode, then the process goes back to step 510.
FIG. 6 is a flowchart for explaining the operation of the Reinsert process, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
Referring to FIG. 6, at step 610, the process requests a conditional exclusive lock in the reinsertion node and then it is determined whether requested lock is acquired or not. If the requested lock is acquired, the process deletes the reinsertion entries from the CurNode and inserts into the reinsertion node at step 614. On contrary, if the requested lock is not acquired, the process proceeds to step 612 releasing exclusive latch in the CurNode and acquiring non-conditional exclusive lock in the reinsertion node and exclusive latch in the CurNode, and then the process goes to step 614. In step 616, the number of the reinsertion entries is recorded in the CurNode. The number plays a role as a counter for inserting one by one the reinsertion entries into the index tree. The first record in the reinsertion node saves the level on which the reinsertion is occurring, node identifier and the MBRs of the reinsertion entries. Then, the exclusive latch is released in the reinsertion node and the CurNode at step 618. Subsequently, the MBR change of the CurNode is reflected on the ancestor node (FixMBR) in step 620. In step 622, it is determined whether all of the deleted entries are reinserted into the index tree. The judgment of the step 622 can be done by checking the number of reinsertion entries in the CurNode is zero or not. If the result of step 622 is positive, the process goes to step 640, the process releases exclusive lock in the reinsertion node and stops. If the result of the step 622 is negative, the process goes to step 624, the process found out an appropriate node for the reinsertion entry (call FindNode operation). In step 626, it is determined whether there is sufficient space to insert or not. If the result of step 626 is positive, the process inserts the entry into the found node in step 628. In step 630, the MBR change is reflected on the ancestor node. In step 632, the process decreases the number of the reinsertion entries in the CurNode by one, and the process goes to the step 622. If the result of the step 626 is negative, the process goes to step 634. In step 634, it is determined whether the found node is the CurNode or not. If the result of step 634 is positive, the step 638 call the SplitAll operation in order to split the CurNode. Namely, when the CurNode overflows again after the reinsert operation, the next step split the CurNode. All overflows during the reinsert operation leads to split through the SplitAll. Then, the process releases exclusive lock in the reinsertion node and stops. If the result of step 634 is negative, the process splits the node found, reflects the split on the upper node, and inserts. Then the process goes to the step 622.
FIG. 7 is a flowchart for explaining the operation of the Split process, which splits a node, one operation of the Insert process in accordance with a preferred embodiment of the present invention.
Referring to FIG. 7, the split operation 700 allocates a new node(NewNode) and acquires the exclusive latch (step 710).
In step 712, it is determined whether the node to be split is a leaf node or not. When it is a leaf node, in step 714 the process acquires exclusive lock in the NewNode. In step 716, the process selects the entries to be moved from the CurNode to the NewNode, inserts these entries into the NewNode and deletes these entries from the CurNode.
In step 718, the NSN of the CurNode is assigned to the NSN of the NewNode. In step 720, the LSN of the NewNode is assigned to the NSN of the CurNode. In step 722, the process connects the CurNode and the NewNode. In step 724, the exclusive lock and the exclusive latch are released in the CurNode and NewNode, and then the process stops.
FIG. 8 illustrates the tree structure for explaining the process 800 which requests a conditional exclusive lock to the is parent node of the path stack during the overflow process of the non-leaf node, in accordance with a preferred embodiment of the present invention.
Referring to FIG. 8, in the process 800 requests the exclusive lock, if the exclusive lock is acquired then reinsert operation is performed. Otherwise, a split is performed.
T1, T2 and T3 represent transactions for inserting entries. First, T1 proceeds through the node N5 to the node N3 for inserting an entry. At this time, T1 acquires the shared lock for the node N5 and acquires an exclusive lock for the node N3. Transactions T2 and T3 also proceed to the node N3 through the node N5 for inserting an entry. Here, for the node N5, T2 and T3 successively acquire the shared lock as is the case of T1. Then, T1 undergoes an overflow during the insertion of the node N3 so as to acquire a tree lock and then perform reinsert operation. Then the node N3 is split. Based on this the upper node N5 should be modified. This modification causes an overflow and thus a conditional exclusive lock for the node N5 is requested for performing the reinsert operation. However, since T2 and T3 has acquire shared lock for the node N5, T1 does not acquire any exclusive lock and performs a split. T1 performs the split of the node N5 and then releases the tree lock so as to complete its flow. Then T3 insert an entry into the node N1 and this insertion cause a MBR change. A tree lock is requested to propagate the MBR change to the upper node. In advance of this, T2 inserts an entry into the node N2. T2 acquires a tree lock and perform an reinsert operation because the insert operation cause an overflow. After the reinsert operation, T2 splits the node N2. Since another overflow occurs during the reflecting the split of N2 on N5′, a conditional exclusive lock is again requested to the node N5. However, since T3 maintains the shared lock for the node N5, T2 cannot perform any reinsertion but perform a split. If T3 requests a conditional exclusive lock for the node N5′ in this condition, T3 would acquire it and perform a reinsert operation in the node N5′. This, however, may cause the MBR having the changed node N2 to be lost path during the modification of the upper nodes.
FIG. 9 is a flowchart for explaining the operation of the Search process 900 for the range query in accordance with one preferred embodiment of the present invention.
Referring to FIG. 9, the search process 900 always maintains the shared latch in only the node existing in one level, and senses the split of child nodes of the currently visited node using a link technique.
In step 910, the level of the root node is assigned to the current level and the root node is added to the queue. In step 912, the shared lock is acquired in the reinsertion node. The process, which performs the range query or the K-nearest neighbor point query, acquires the shared lock in the reinsertion node before performing the search operation. This is for preventing that the reinsertion node is changed during the search. In other words, this is for preventing that the reinsertion entries should be excluded from the object to be searched based on the fact that any change of the reinsertion node can be made during the search. Accordingly, in step 912, the process requests and acquires the shared lock in the reinsertion node. In step 914, it is determined whether the queue is empty or not. If the result of the step 914 is positive, in step 938 the process releases shared lock in the reinsertion node, and the process stops. If the result of the step 914 is negative, a node is fetched as the current node CurNode from the queue and the shared latch is acquired at step 916. At step 918, it is determined whether the level of the CurNode (Level) is less than the current level CurLevel. If the result of the step 918 is positive, the process proceeds to step 920 in which the level of the CurNode is assigned to the current level(CurLevel). At step 922, it is determined whether the CurLevel is equal to the level of the node being reinserted or not. If the CurLevel is equal to the level of the node being reinserted, the shared latch is acquired in the reinsertion node. And then the entries of the reinsertion node within the query range are inserted into the result group if CurNode is leaf or into the queue if CurNode is not leaf, and the shared latch in the reinsertion node is released. Then, the process continue to step 928 acquiring shared latch in the CurNode. If the CurLevel is not equal to the level of the node being reinserted, the process continues to step 928. If the result of the step 918 is negative, the process continues to step 928 in order to acquire shared latch in the CurNode. At step 930, it is determined whether the CurNode is the leaf node or not. The process inserts the entries of the ChildNode within the query range into the result group if CurNode is leaf at step 934 or into the queue if the CurNode is non-leaf at step 932. At step 936, the process releases shared latch in the CurNode. The process goes back to step 914.
FIG. 10 is a flowchart for illustrating the operation of the deleting process 1000.
Referring to FIG. 10, the deleting process is initiated by step 1010 in which finds out the leaf node, which includes the entry to be deleted, and acquires exclusive latch in the found node. Then, the entry from the node found is deleted in step 1012. In step 1014, a determination is made whether the percent ratio of remnant entries to the entire entries is 20% or more, or there is no remnant entry. If the result of the step 1014 is positive, a tree lock is acquired in step 1016 and the exclusive latch of the leaf node is released in step 1018. If there is no remnant entry, the MBR of current leaf node on the upper node is transformed into negative value in step 1022. In the searching process, the entry having such negative MBR is excluded from the object to be searched. This is for preventing that any vacant node is searched. In the case of the inserting process, FindNode process 400 changes the negative MBR into the positive one so as to consider it as the node capable of being inserted a new entry. This endows the reusability to the vacant node. If there is remnant entry, the process acquires a tree lock and reflects the MBR change on the upper node (call FixMBR operation) in step 1024, the process releases tree lock in step 1026, and the process stops. If the result of the step 1014 is negative, the process releases exclusive latch in the leaf node in step 1028, and the process stops.
As described above, the inventive method for supporting the concurrency of database systems prevents the problem that the efficiency of storage space is decreased due to the inclusion of the NSN in the entry of the non-leaf node by assigning the NSN using LSN as global counting number.
Also, the inventive method uses both the latch technique and the lock technique, so that the lock of the index node cannot give any influence to the search process. Since the search process only acquires the shared latch, the delay for the locks of insertion and deletion does not occur, thereby increasing the searching performance.
In addition, the inventive method allows that the entries deleted from the tree are stored in a specific node (or reinsertion node) for reinsertion and allows the search process to refer the reinsertion node.
Although the preferred embodiments of the invention have been disclosed for illustrative purposes, those skilled in the art will appreciate that various modifications, additions and substitutions are possible, without departing from the scope and spirit of the invention as disclosed in the accompanying claims.

Claims (14)

What is claimed is:
1. A method for searching a high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, comprising the steps of:
a) adding a root node to the queue and acquiring the shared lock for reinsertion node;
b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty;
c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; and
d) returning to the step b).
2. The method as recited in claim 1, furthers comprising the step of e) maintaining the level information about a node being accessed when traversing the tree so as to search entries within the reinsertion node, determining whether the level information is equal to the level of which the node is being reinserted, and searching the reinsertion node if the level information is changed to the level of reinsertion level.
3. The method as recited in claim 1, further comprising the step of f) moving to a rightward-pointing link of the lower node to select the adjacent node when the split which is not propagated to the upper node is detected.
4. The method as recited in claim 1, further comprising the step of g) controlling a level to be the same with the level of the current node, so that the shared latch is always maintained in only the node existing in one level.
5. A method for inserting an entry to the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, comprising the steps of:
a) searching a leaf node to which a new entry is inserted;
b) determining whether an insert for the new entry to the searched leaf node causes any overflow;
c) when the result of the step b) is positive, acquiring a tree lock, performing the process for the overflow of the leaf node and then releasing the tree lock; and
d) when the result of the step b) is negative, inserting the new entry to the leaf node, acquiring a tree lock changing a MBR and releasing the tree lock.
6. The method as recited in claim 5, wherein the step a) includes the steps of:
a-1) determining whether a child node is a leaf node;
a-2) if the child node is a leaf node, acquiring an exclusive lock and an exclusive latch for the child node;
a-3) if the child node is not a leaf node, acquiring a shared lock and a shared latch for the child node;
a-4) determining whether the NSN composed of LSN of the child node is higher than the estimated NSN composed of LSN of the current node;
a-5) when the result of the step a-4) is positive, releasing a latch and a lock for the child node, selecting an appropriate node in the node split from the child node which is not reflected on the upper node and acquiring a latch and a lock in the selected node;
a-6) when the result of the step a-4) is negative, determining whether a child node is a leaf node;
a-7) when the result of the step a-6) is positive, returning a path stack which stores a path from a root node to the child node and the child node; and
a-8) when the result of the step a-6) is negative, the current is assigned to child node and return to the step a-1).
7. The method as recited in claim 5, wherein the step c) includes the steps of:
c-1) determining whether the current node is the root node;
c-2) when the result of the step c-1) is positive, performing a root split, and when the result of the step c-1) is negative, requesting a conditional exclusive lock for the current node;
c-3) determining whether the current node acquires an exclusive lock based on the request of the step c-2);
c-4) when the result of the step c-3) is positive, calling a Reinsert function; and
c-5) when the result of the step c-3) is negative, calling a Split function.
8. The method as recited in claim 7, wherein the step c-5) further includes:
c-6) reading out a parent node of the current node from the path stack and then determining whether the propagation of the split to the parent node causes any overflow;
c-7) when the result of the step c-6) is positive, assigning the current node to parent node, returning to the step c-1); and
c-8) when parent node has enough space, inserting the split new node into the parent node, propagating the MBR change and completing the overflow process.
9. The method as recited in claim 7, wherein the step c-4) includes the step of:
c-4-1) compulsorily acquiring an exclusive lock for the reinsertion node;
c-4-2) deleting the reinsertion entries from the current node and then storing the deleted entries in the reinsertion node;
c-4-3) calling a function for processing a MBR change such that ancestor nodes of the current node are changed based on the changed MBR of the current node;
c-4-4) inserting the entries of the reinsertion node into the index tree after the change of the MBR; and
c-4-5) when all entries of the reinsertion node are inserted, completing the reinsertion process, and when any entry of the reinsertion node remains uninserted, returning to the step c-4-4).
10. The method as recited in claim 9, wherein the step c-4-2) includes the step of recording the number of the deleted entries in the current node.
11. The method as recited in claim 9, wherein the step c4-5) includes the steps of:
c-4-5-1) finding a node to reinsert an entry and determining whether the found node has enough space to insert an entry;
c-4-5-2) when the result of the step c-4-5-1) is negative, calling a SplitAll process for splitting the found node; and
c-4-5-3) when the result of the step c-4-5-1) is positive, inserting the entry stored in the reinsertion node into the found node, and then returning to the step c-4-3) for repeating when any change of the MBR of the inserted node occurs.
12. The method as recited in claim 7, wherein the step c-5) includes the steps of:
c-5-1) assigning a new node and then acquiring an exclusive latch for the new node;
c-5-2) determining whether the new node is a leaf node;
c-5-3) when the new node is a leaf node, acquiring an exclusive lock for the new node;
c-5-4) selecting some entries from the current node, moving the selected entries into the new node, wherein the current node is split to become the new node;
c-5-6) assigning the NSN of the current node to the NSN of the new node and assigning the LSN of the new node to the NSN of the current node; and
c-5-7) completing the split process after the exclusive latch and the exclusive lock of the current node and the new node are released.
13. A computer readable medium having computer-executable instructions stored thereon, for performing a method for searching the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, the method comprising the steps of:
a) adding a root node to the queue and acquiring the shared lock for reinsertion node;
b) determining whether the queue is empty or not, fetching a node from the queue and assigning the fetched node as a current node if queue is not empty, releasing the shared lock and terminating the search process if queue is empty;
c) acquiring the shared latch in the current node, selecting the lower nodes which are within the query range and adding the selected nodes to the queue if current node is not leaf or to the result set if current node is leaf; and
d) returning to the step b).
14. A computer readable medium having computer-executable instructions stored thereon, for inserting an entry to the high-dimensional index tree of a database, wherein the concurrency of the database can be controlled, the method comprising the steps of:
a) searching a leaf node to which a new entry is inserted;
b) determining whether an insert for the new entry to the searched leaf node causes any overflow;
c) if the result of the step b) is positive, acquiring a tree lock, performing a process for the overflow of the leaf node and then releasing the tree lock; and
d) if the result of the step b) is negative, inserting the new entry to the leaf node, acquiring a tree lock, changing a MBR and releasing the tree lock.
US09/497,345 1999-12-24 2000-02-03 Concurrency control method for high-dimensional index structure using latch and lock Expired - Lifetime US6484172B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR19990062171 1999-12-24
KR99-62171 1999-12-24

Publications (1)

Publication Number Publication Date
US6484172B1 true US6484172B1 (en) 2002-11-19

Family

ID=19629725

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/497,345 Expired - Lifetime US6484172B1 (en) 1999-12-24 2000-02-03 Concurrency control method for high-dimensional index structure using latch and lock

Country Status (1)

Country Link
US (1) US6484172B1 (en)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658413B1 (en) * 1999-09-01 2003-12-02 I2 Technologies Us, Inc. Multidimensional database system with intermediate lockable intersections
US20060149865A1 (en) * 2004-12-30 2006-07-06 Microsoft Corporation Queue rendezvous
US20070027884A1 (en) * 2005-08-01 2007-02-01 Achim Heger Systems and methods for modeling tree structures
US7487152B1 (en) * 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US20090307336A1 (en) * 2008-06-06 2009-12-10 Brandon Hieb Methods and apparatus for implementing a sequential synchronization hierarchy among networked devices
US20130031452A1 (en) * 2011-07-28 2013-01-31 General Electric Company Systems and methods for multiple column sorting and locking
US8428397B1 (en) 2010-08-26 2013-04-23 Adobe Systems Incorporated Systems and methods for large scale, high-dimensional searches
US8666981B2 (en) 2011-02-28 2014-03-04 International Business Machines Corporation Bottom-up optimistic latching method for index trees
US20140149464A1 (en) * 2012-11-29 2014-05-29 International Business Machines Corporation Tree traversal in a memory device
US8832050B2 (en) 2012-03-09 2014-09-09 Hewlett-Packard Development Company, L.P. Validation of distributed balanced trees
US9037557B2 (en) 2011-02-28 2015-05-19 International Business Machines Corporation Optimistic, version number based concurrency control for index structures with atomic, non-versioned pointer updates
US20150199391A1 (en) * 2013-12-26 2015-07-16 Sybase, Inc. Append-Only B-Tree Cursor
US9424304B2 (en) 2012-12-20 2016-08-23 LogicBlox, Inc. Maintenance of active database queries
CN112559529A (en) * 2020-12-16 2021-03-26 杭州趣链科技有限公司 Data storage method and device, computer equipment and storage medium
US11256681B2 (en) * 2020-03-03 2022-02-22 WunBae JEON Method and apparatus for controlling access to trie data structure
CN117494587A (en) * 2023-12-29 2024-02-02 杭州行芯科技有限公司 Spatial relationship management method of chip packaging structure, electronic equipment and storage medium
CN117494587B (en) * 2023-12-29 2024-04-09 杭州行芯科技有限公司 Spatial relationship management method of chip packaging structure, electronic equipment and storage medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717921A (en) 1991-06-25 1998-02-10 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions
US6047281A (en) * 1997-12-05 2000-04-04 Authentec, Inc. Method and apparatus for expandable biometric searching
US6157929A (en) * 1997-04-15 2000-12-05 Avid Technology, Inc. System apparatus and method for managing the use and storage of digital information
US6381605B1 (en) * 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717921A (en) 1991-06-25 1998-02-10 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions
US6157929A (en) * 1997-04-15 2000-12-05 Avid Technology, Inc. System apparatus and method for managing the use and storage of digital information
US6047281A (en) * 1997-12-05 2000-04-04 Authentec, Inc. Method and apparatus for expandable biometric searching
US6381605B1 (en) * 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Chen, et al.; A Study of Concurrent Operations on R-Trees; 1997 pp. 1-38.
Kornacker, et al.; High-Concurrency Locking in R-Trees; 1995; Proceedings of the 21st VLDB Confrence.
Xue Qun Li; King, I. discloses Regression analysis for Rival Penalized Competitive Learning Binary Tree.; Neural Networks, 2000. IJCNN 2000, Proceedings of the IEEE-INNS-ENNS International Joint Conference on, vol.:6, 2000; pp.: 290-295 vol.* *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658413B1 (en) * 1999-09-01 2003-12-02 I2 Technologies Us, Inc. Multidimensional database system with intermediate lockable intersections
US7487152B1 (en) * 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US20090171963A1 (en) * 2000-05-31 2009-07-02 International Business Machines Corporation System and program products for efficiently locking resources of a global data repository
US8108451B2 (en) 2000-05-31 2012-01-31 International Business Machines Corporation System and program products for efficiently locking resources of a global data repository
US20060149865A1 (en) * 2004-12-30 2006-07-06 Microsoft Corporation Queue rendezvous
US7568009B2 (en) 2004-12-30 2009-07-28 Microsoft Corporation Queue rendezvous
US20070027884A1 (en) * 2005-08-01 2007-02-01 Achim Heger Systems and methods for modeling tree structures
US7640259B2 (en) * 2005-08-01 2009-12-29 Sap Ag Systems and methods for modeling tree structures
US20090307336A1 (en) * 2008-06-06 2009-12-10 Brandon Hieb Methods and apparatus for implementing a sequential synchronization hierarchy among networked devices
US7793002B2 (en) 2008-06-06 2010-09-07 Fisher-Rosemount Systems, Inc. Methods and apparatus for implementing a sequential synchronization hierarchy among networked devices
US8428397B1 (en) 2010-08-26 2013-04-23 Adobe Systems Incorporated Systems and methods for large scale, high-dimensional searches
US8666981B2 (en) 2011-02-28 2014-03-04 International Business Machines Corporation Bottom-up optimistic latching method for index trees
US9037557B2 (en) 2011-02-28 2015-05-19 International Business Machines Corporation Optimistic, version number based concurrency control for index structures with atomic, non-versioned pointer updates
US20130031452A1 (en) * 2011-07-28 2013-01-31 General Electric Company Systems and methods for multiple column sorting and locking
US8806323B2 (en) * 2011-07-28 2014-08-12 General Electric Company Systems and methods for multiple column sorting and locking
US8832050B2 (en) 2012-03-09 2014-09-09 Hewlett-Packard Development Company, L.P. Validation of distributed balanced trees
US20140149464A1 (en) * 2012-11-29 2014-05-29 International Business Machines Corporation Tree traversal in a memory device
US9064030B2 (en) * 2012-11-29 2015-06-23 International Business Machines Corporation Tree traversal in a memory device
US10430409B2 (en) 2012-12-20 2019-10-01 Infor (Us), Inc. Maintenance of active database queries
US9424304B2 (en) 2012-12-20 2016-08-23 LogicBlox, Inc. Maintenance of active database queries
US9594786B2 (en) * 2013-12-26 2017-03-14 Sybase, Inc. Append-only b-tree cursor
US20150199391A1 (en) * 2013-12-26 2015-07-16 Sybase, Inc. Append-Only B-Tree Cursor
US11256681B2 (en) * 2020-03-03 2022-02-22 WunBae JEON Method and apparatus for controlling access to trie data structure
CN112559529A (en) * 2020-12-16 2021-03-26 杭州趣链科技有限公司 Data storage method and device, computer equipment and storage medium
CN112559529B (en) * 2020-12-16 2023-06-09 杭州趣链科技有限公司 Data storage method, device, computer equipment and storage medium
CN117494587A (en) * 2023-12-29 2024-02-02 杭州行芯科技有限公司 Spatial relationship management method of chip packaging structure, electronic equipment and storage medium
CN117494587B (en) * 2023-12-29 2024-04-09 杭州行芯科技有限公司 Spatial relationship management method of chip packaging structure, electronic equipment and storage medium

Similar Documents

Publication Publication Date Title
US4823310A (en) Device for enabling concurrent access of indexed sequential data files
CN1026631C (en) Method of concurrency access for useing indexed tree to data base record
EP0336035B1 (en) Tree structure database system
US6484172B1 (en) Concurrency control method for high-dimensional index structure using latch and lock
US6792432B1 (en) Database system with methods providing high-concurrency access in B-Tree structures
US5758356A (en) High concurrency and recoverable B-tree index management method and system
US7577658B2 (en) Hierarchical locking in B-tree indexes
CN110990404B (en) Index data processing method and device and electronic equipment
US20020143743A1 (en) Methods for in-place online reorganization of a database
US20040267747A1 (en) Transaction processing system supporting concurrent accesses to hierarchical data by transactions
Becker et al. On optimal multiversion access structures
KR100289331B1 (en) Concurrency Control Method of High Dimensional Index Structures
Chien et al. A comparative study of version management schemes for XML documents
US6571250B1 (en) Method and system for processing queries in a data processing system using index
US7321898B1 (en) Locking mechanism for materialized views in a database system
CN114282074B (en) Database operation method, device, equipment and storage medium
KR100349667B1 (en) A concurrency control method for high-dimensional index structures
Wang et al. The concurrent learned indexes for multicore data storage
KR100507782B1 (en) Database management system and the method of controlling consistency of system table in DBMS
KR100292643B1 (en) Parallel file system and method with byte range locking (BYTE RANGEATI LOCKING)
Krishna et al. Using Cuckoo Filters to Improve Performance in Object Store-based Very Large Databases
KR100447330B1 (en) PLC based concurrency control scheme for multi dimensional index structures
KR100709275B1 (en) A concurrency control method for non-blocking search operation based on r-tree
Salzberg et al. Branched and Temporal Index Structures
Chen A degradable B link-tree with periodic data reorganization

Legal Events

Date Code Title Description
AS Assignment

Owner name: ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTIT

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LEE, JANG-SUN;LEE, JIN-SOO;LEE, HUN-SOON;AND OTHERS;REEL/FRAME:010546/0474;SIGNING DATES FROM 20000105 TO 20000108

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: IPG ELECTRONICS 502 LIMITED

Free format text: ASSIGNMENT OF ONE HALF (1/2) OF ALL OF ASSIGNORS' RIGHT, TITLE AND INTEREST;ASSIGNOR:ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE;REEL/FRAME:023456/0363

Effective date: 20081226

FPAY Fee payment

Year of fee payment: 8

FEPP Fee payment procedure

Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: PENDRAGON ELECTRONICS AND TELECOMMUNICATIONS RESEA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:IPG ELECTRONICS 502 LIMITED;ELECTRONICS AND TELECOMMUNICATIONS RESEARCH INSTITUTE;SIGNING DATES FROM 20120410 TO 20120515;REEL/FRAME:028611/0643

FEPP Fee payment procedure

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: UNILOC LUXEMBOURG S.A., LUXEMBOURG

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PENDRAGON ELECTRONICS AND TELECOMMUNICATIONS RESEARCH LLC;REEL/FRAME:045338/0797

Effective date: 20180131

AS Assignment

Owner name: UNILOC 2017 LLC, DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:UNILOC LUXEMBOURG S.A.;REEL/FRAME:046532/0088

Effective date: 20180503