KR100349667B1 - A concurrency control method for high-dimensional index structures - Google Patents

A concurrency control method for high-dimensional index structures Download PDF

Info

Publication number
KR100349667B1
KR100349667B1 KR1020000008238A KR20000008238A KR100349667B1 KR 100349667 B1 KR100349667 B1 KR 100349667B1 KR 1020000008238 A KR1020000008238 A KR 1020000008238A KR 20000008238 A KR20000008238 A KR 20000008238A KR 100349667 B1 KR100349667 B1 KR 100349667B1
Authority
KR
South Korea
Prior art keywords
node
reinsert
determining whether
lock
tree
Prior art date
Application number
KR1020000008238A
Other languages
Korean (ko)
Other versions
KR20010066737A (en
Inventor
이장선
이진수
이훈순
김명준
유재수
송석일
이석희
Original Assignee
한국전자통신연구원
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 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020000008238A priority Critical patent/KR100349667B1/en
Publication of KR20010066737A publication Critical patent/KR20010066737A/en
Application granted granted Critical
Publication of KR100349667B1 publication Critical patent/KR100349667B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터베이스 시스템의 동시성 제어방법에 관한 것으로, 고차원 색인 구조에서 노드의 용량이 초과하여 넘침이 발생할 때에 재 삽입 연산 중 재 삽입을 위해 색인 구조의 노드에서 삭제된 객체들에 대해서도 탐색이 가능하도록 하는 동시성 제어방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.The present invention relates to a method for controlling concurrency of a database system, and to search for objects deleted from a node of an index structure for reinsertion during a reinsert operation when the capacity of a node is exceeded in a high-dimensional index structure. And a computer readable recording medium having recorded thereon a program for realizing the method.

본 발명에 따른 동시성 제어방법은 전역계수기로 로그일련번호를 사용하여 비단말 노드의 엔트리에 논리일련번호가 포함되어 저장 효율을 떨어뜨리는 문제를 방지하고, 재 삽입을 위하여 트리에서 삭제한 엔트리를 특정노드(재 삽입 노드)에 보관하여 탐색연산이 이를 참조할 수 있도록 해 준다. 또한, 래치와 잠금을 혼용하여 색인노드에 대한 잠금은 탐색연산에 전혀 영향을 미치지 않고, 탐색 연산이 수행될 때 접근하려는 노드에 공유모드의 래치만 획득하므로 노드에 대한 삽입 또는 삭제 연산의 잠금으로 인한 지연이 발생하지 않아 높은 탐색 성능을 제공할 수 있다.The concurrency control method according to the present invention uses a log serial number as a global counter to prevent a problem of degrading storage efficiency by including a logical serial number in an entry of a non-terminal node and identifying an entry deleted from a tree for reinsertion. Keep it in a node (reinsertion node) so the search operation can refer to it. Also, the combination of latch and lock does not affect the search operation at all, and only the shared mode latch is acquired to the node to be accessed when the search operation is performed. There is no delay, so high search performance can be provided.

Description

고차원 색인구조의 동시성 제어방법{A concurrency control method for high-dimensional index structures}A concurrency control method for high-dimensional index structures

본 발명은 데이터베이스의 동시성 제어방법에 관한 것으로, 특히 노드의 용량이 초과하여 넘침이 발생할 때에 노드 내의 일부 객체에 대한 재 삽입을 수행하는 기존의 고차원 색인구조(R*-트리, SS-트리, TV-트리, X-트리, CIR-트리)를 위한 동시성 제어방법에 관한 것이다. 보다 구체적으로 설명하면, 재 삽입 연산 중 재 삽입을 위해 색인 트리의 어떤 노드에서 삭제된 객체들에 대해서도 탐색이 가능하도록 하는 동시성 제어방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.The present invention relates to a method for controlling concurrency of a database. In particular, an existing high-dimensional index structure (R * -tree, SS-tree, TV) that performs reinsertion of some objects in a node when the capacity of the node is exceeded and overflow occurs. -Tree, X-tree, CIR-tree). More specifically, a concurrency control method that enables searching for objects deleted at any node of the index tree for reinsertion during a reinsert operation, and a computer-readable record that records a program for realizing the method. It is about the medium.

지난 수년 동안 다차원의 특징벡터를 기반으로 하는 유사성 검색이 데이터베이스 분야에서 매우 중요한 과제로 부각되어 왔다. 이의 응용분야는 지리정보 시스템부터 의료 데이터 저장 시스템, 멀티미디어 데이터베이스 시스템에 이르기까지 매우 폭 넓게 분포되어있다. 이런 유사성 검색의 가장 핵심적인 문제 중 하나가 바로 수많은 다차원의 데이터 중에서 어떻게 질의와 유사한 객체를 효율적으로 찾아내는가 하는 것이다. 이 문제를 해결하기 위해 다차원 색인구조에 대한 연구가 매우 활발히 진행되어 왔고, 그 결과 그리드 파일(Grid File), 멀티-레벨 그리드 파일(Multi-level Grid File), R-트리, R*-트리, TV-트리, X-트리, SS-트리, SR-트리, CIR-트리, 하이브리드-트리(Hybrid-Tree) 등의 수많은 색인구조들이 제안되었다. 기존의 다차원 색인구조들이 실제 응용에 사용되기 위해서는 여러 사용자가 삽입 및 탐색을 동시에 수행할 수 있는 다중 사용자환경이 고려되어야 한다. 즉, 색인 구조에 대한 적절한 동시성 제어 알고리즘이 있어야 한다는 것이다.Over the past few years, similarity search based on multidimensional feature vectors has been a very important task in the database field. Its applications range from geographic information systems to medical data storage systems to multimedia database systems. One of the key problems of similarity searching is how to efficiently find queries and similar objects among numerous multidimensional data. In order to solve this problem, researches on the multidimensional index structure have been actively conducted, and as a result, Grid File, Multi-level Grid File, R-tree, R * -tree, Numerous indexing schemes have been proposed, such as TV-tree, X-tree, SS-tree, SR-tree, CIR-tree, Hybrid-Tree. In order for existing multidimensional index structures to be used in actual applications, a multi-user environment in which multiple users can insert and search simultaneously must be considered. In other words, there should be an appropriate concurrency control algorithm for the index structure.

대부분의 색인구조는 트리 형태로 표현된다(이하 색인트리라 부른다). 색인트리를 이루는 각 구성요소를 노드라 부르며, 이들은 계층적인 구조로 색인트리를 구성한다. 색인트리는 객체의 삽입, 삭제 등의 연산을 통하여 구성되며, 삽입되는 객체는 트리 내의 노드에 일정한 규칙에 의해 삽입되게 된다.Most index structures are represented in tree form (hereinafter referred to as index tree). Each component of an index tree is called a node, and they form an index tree in a hierarchical structure. The index tree is composed of operations such as inserting and deleting objects, and the inserted object is inserted into a node in the tree by a certain rule.

그리고, 색인트리 내의 각 노드에는 일정한 수만큼의 객체만을 삽입할 수 있으며, 용량 초과시에 노드에 넘침이 발생했다고 한다. 이때, 넘침이 발생한 노드 내의 일부 객체를 선택하여 이들을 하나씩 색인트리 내에 재 삽입하여 성능을 향상시킬 수 있다.In addition, only a certain number of objects can be inserted into each node of the index tree, and when the capacity is exceeded, the node overflows. At this time, some objects in the overflowed node can be selected and reinserted into the index tree one by one to improve performance.

한편, 종래의 색인구조에 대한 동시성 제어방법에 대한 연구로는 1차원 데이터를 대상으로 하는 B-트리에 대한 것이 주를 이루고 있으며, 고차원 데이터를 관리하는 색인구조인 R-트리에 대한 동시성 제어방법이 얼마 전부터 연구되기 시작했다.On the other hand, the study on the concurrency control method for the conventional index structure mainly consists of the B-tree targeting the one-dimensional data, the concurrency control method for the R-tree which is an index structure for managing high-dimensional data This began to be studied some time ago.

기존의 다차원 색인구조에 대한 동시성 제어 알고리즘은 크게 잠금결합기법(Lock-Coupling Technique)을 기반으로 하는 방법과 링크기법(Link-Technique)을 기반으로 하는 방법으로 분류할 수 있다. 잠금결합 기반의 동시성 제어 알고리즘은 트리를 순회할 때 현재 노드의 잠금을 해제하기 전에 다음에 방문할 노드에 잠금을 획득한다. 그리고, 노드 분할을 수행하거나 최소경계영역(MBR : Minimum Bounding Region) 변경을 상위 노드에 반영할 때에는 변경에 참여하는 모든 노드들에 대한 잠금을 획득해야 한다. 이 방법은 탐색이나 삽입 연산시에 하나의 트랜잭션(Transaction)이 동시에 여러 노드에 잠금을 유지해야 하므로 동시성 성능의 저하를 초래하게 된다.The concurrency control algorithm for the existing multidimensional index structure can be largely classified into a method based on the lock-coupling technique and a method based on the link technique. Lock-based concurrency control algorithms acquire locks on the next node to visit before releasing the lock of the current node when traversing the tree. In addition, when performing node splitting or reflecting a minimum bounding region (MBR) change to a higher node, locks on all nodes participating in the change should be obtained. This method results in a decrease in concurrency performance because a transaction must hold a lock on multiple nodes at the same time during a search or insert operation.

이에 대한 문제점을 해결하기 위해 링크기법을 기반으로 하는 동시성 제어 알고리즘이 제안되었다. 이런 종래의 연구로부터 잠금결합기법보다는 링크기법을 사용한 동시성 제어방법이 그 성능면에서 우수함이 입증되었다. 링크기법 기반의 동시성 제어 알고리즘은 잠금결합을 수행할 필요가 없다. 즉, 트리를 순회하는 동안에 최대 하나의 노드에만 잠금을 획득하면 된다. 하지만 여전히 최소경계영역 변경이나 분할 연산을 수행할 때에는 동시에 여러 노드에 잠금을 획득해야 한다.In order to solve this problem, a concurrency control algorithm based on link technique has been proposed. From these conventional studies, the concurrency control method using the link method rather than the lock coupling method has proved to be superior in performance. Link scheme based concurrency control algorithm does not need to perform lock combining. That is, only one node needs to acquire a lock while traversing the tree. However, it is still necessary to acquire locks on multiple nodes at the same time when performing a minimum boundary change or partition operation.

링크기법의 기본 개념은 각 레벨의 모든 노드들을 오른쪽 링크를 통해 연결하여 탐색 연산시에 잠금 결합을 수행하지 않아도 상위 노드에 반영되지 않은 하위 노드의 분할을 감지하여 이를 보상할 수 있도록 하는 것이다. R LINK -트리에서는 R-트리와 B-트리의 구조적인 차이로 인해 B LINK -트리의 링크기법을 수정 및 보완하였다. 이 과정에서 노드일련번호를 도입하여 이를 각 노드에 할당하게 되었고 엔트리의 구조도 <MBR, Child_Page>에서 <MBR, Child_Page, NSN>으로 수정되었다. 노드일련번호라는 것은 노드가 새로 생성될 때 증가하는 값으로, 각 노드는 유일한 노드일련번호를 부여받는다. 노드가 분할되면 새로운 노드에 기존의 노드가 가지고 있던 노드일련번호를 할당하고 기존의 노드에는 새로운 노드일련번호를 할당한다. 이때, 새로 생성되는 노드는 항상 기존 노드의 오른쪽에 위치하게 된다. 따라서, 탐색연산은 트리를 순회할 때 자식노드의 분할 여부를 이 노드일련번호 값을 가지고 판단할 수 있다. 즉, 부모 노드의 엔트리 <MBR, Child_Page, NSN>에 기록된 노드일련번호를 기억하고 있는 탐색 프로세스는 그 엔트리에 대응하는 자식노드(Child_Page)의 실제 노드일련번호 값이 기억하고 있는 값보다 크면 오른쪽으로 이동한다. 이동하면서 기억하고 있는 노드일련번호를 가진 노드들을 만나면 옆으로의 이동을 멈추고 다시 하위 노드로 탐색을 진행하게 된다.The basic concept of the link technique is to connect all nodes of each level through the right link so that the partition of the lower node that is not reflected in the upper node can be compensated for without being locked in the search operation. In the R LINK -tree, due to the structural difference between the R-tree and the B-tree, the link technique of the B LINK -tree has been modified and supplemented. In this process, the node serial number was introduced and assigned to each node, and the structure of the entry was modified from <MBR, Child_Page> to <MBR, Child_Page, NSN>. The node serial number is incremented when a node is newly created. Each node is assigned a unique node serial number. When a node is split, it assigns the node serial number of the old node to the new node and the new node serial number to the existing node. In this case, the newly created node is always located to the right of the existing node. Therefore, the search operation can determine whether the child node is split with the node serial number value when traversing the tree. That is, the search process that stores the node serial number recorded in the parent node's entry <MBR, Child_Page, NSN> is right when the actual node serial number value of the child node (Child_Page) corresponding to the entry is larger than the stored value. Go to. When you meet the nodes with the node serial number that you remember while moving, it stops moving to the side and proceeds to the lower node again.

이 방법은 몇 가지 단점이 있다. 첫째는 어떤 트랜잭션이 트리 구조를 변경하는 연산(노드 분할과 최소경계영역 변경)을 수행할 때에는 동시에 둘 이상 레벨의 노드들에 잠금을 유지해야 하며, 이로 인해 탐색연산이 다음 노드로 탐색을 진행할 때 입출력시간 동안 지연될 수 있다는 것이다. 둘째는 엔트리를 표현하는 자료구조가 <MBR, Child_Page, NSN>으로 바뀌게 되면서 부가적인 정보인 노드일련번호로 인해 저장공간 이용률이 저하되어 비단말 노드의 팬-아웃(Fan Out)이 작아진다는 것이다.This method has some disadvantages. First, when a transaction performs operations that change the tree structure (node splitting and minimum boundary change), it is necessary to keep locks on more than one level of nodes at the same time, so that when the search operation proceeds to the next node, It can be delayed during I / O time. Secondly, as the data structure representing the entry is changed to <MBR, Child_Page, NSN>, the node serial number, which is an additional information, decreases the storage space utilization and reduces the fan out of non-terminal nodes. .

개선된 방법에서는 위의 방법에서 문제점으로 지적된 엔트리의 자료구조에 노드일련번호가 추가되어 저장공간을 낭비하는 문제를 해결하고 있다. 이 개선된 방법에서도 역시 R LINK -Tree에서와 같이 각각의 노드에 노드일련번호를 할당하고 오른쪽 링크를 두어 분할을 검사하고 어디까지 오른쪽 링크를 따라 순회할 것인지를 판별한다. 하지만, R LINK -트리와는 다르게 비단말 노드의 엔트리에 하위 노드의 노드일련번호를 기록해두지 않고도 하위 노드의 분할을 판별할 수 있는 방법을 제안하고 있다. 이것은 전역계수기를 이용해 노드일련번호를 할당함으로써 가능해 진다.The improved method solves the problem of wasting storage space by adding the node serial number to the data structure of the entry pointed out as a problem in the above method. As with R LINK -Tree, this improved method also assigns a node serial number to each node, places a right link to check for partitions, and determines how far along the right link to traverse. However, unlike the R LINK -tree, it is proposed a method of determining the division of the lower node without recording the node serial number of the lower node in the entry of the non-terminal node. This is done by assigning a node serial number using the global counter.

노드가 분할될 때 노드에는 원래 노드의 노드일련번호 값이 주어지고 원래 노드에는 새로운 노드일련번호 값이 할당된다. 이때, 트리 순회 연산은 노드를 방문할 때 전역계수기의 값을 기억하고 다시 하위 노드를 방문할 때 기억했던 전역계수기의 값과 현재 노드의 노드일련번호를 비교하여 현재 노드의 노드일련번호가 더 크면 상위 노드에 반영되지 않은 분할로 판단하고, 오른쪽 링크를 따라서 이동한다. 이동하다가 기억했던 전역계수기 값보다 작은 노드일련번호를 갖는 노드를 만나면 이웃 노드로의 이동을 멈추고 다시 하위 노드로의 순회를 계속하게 된다. 그러나, 이 방법 역시 문제가 있다. 전역계수기를 사용하면 노드 분할을 할 때 현재 노드를 분할하기 전에 먼저 상위 노드에 잠금을 획득하고 분할을 진행해야 한다. 이외에도 회복 목적을 위해 분할이 끝날 때까지 분할에 참여하는 모든 노드들에 잠금을 유지한다. 이로 인해 보다 더 오랜 시간 동안 탐색연산이 지연될 수 있다.When a node is partitioned, the node is given the node serial number value of the original node and the original node is assigned a new node serial number value. At this time, the tree traversal operation remembers the value of the global counter when visiting the node and compares the value of the global counter remembered when visiting the lower node with the node serial number of the current node. It determines that the partition is not reflected in the upper node, and moves along the right link. When a node encounters a node with a node serial number smaller than the global counter value it remembers, it stops moving to the neighbor node and continues to traverse to the lower node. However, this method also has a problem. When using the global counter, when dividing a node, it is necessary to acquire a lock on the parent node and proceed with partitioning before partitioning the current node. In addition, for recovery purposes, a lock is held on all nodes participating in the partition until the partition is finished. This may delay the search operation for a longer time.

따라서, 본 발명은 전역계수기로 로그일련번호를 사용하여 단말 노드의 엔트리에 노드일련번호가 포함되어 저장 효율을 떨어뜨리는 문제를 방지하고, 재 삽입을 위하여 트리에서 삭제한 엔트리를 특정노드(재 삽입 노드)에 보관하여 탐색연산이 이를 참조할 수 있도록 하는 동시성 제어방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 그 목적이 있다.Therefore, the present invention prevents the problem of lowering the storage efficiency by including the node serial number in the entry of the terminal node using the log serial number as a global counter, and inserting the entry deleted from the tree for reinsertion into a specific node (reinsertion). It is an object of the present invention to provide a method for controlling concurrency so that a search operation can refer to it and a computer readable recording medium storing a program for realizing the method.

또한, 본 발명은 래치와 잠금을 혼용하여 색인노드에 대한 잠금은 탐색연산에 전혀 영향을 미치지 않도록 하는 동시성 제어방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 다른 목적이 있다.The present invention also provides a concurrency control method in which a lock on an index node does not affect search operations at all by using a latch and a lock, and a computer-readable recording medium recording a program for realizing the method. There is a purpose.

또한, 본 발명은 탐색 연산이 수행될 때 접근하려는 노드에 공유모드의 래치만 획득하므로 노드에 대한 삽입 또는 삭제 연산의 잠금으로 인한 지연이 발생하지 않아 높은 탐색 성능을 제공하는 동시성 제어방법 및 상기 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 또 다른 목적이 있다.In addition, the present invention obtains only the latch of the shared mode to the node to be accessed when the search operation is performed, there is no delay due to the lock of the insert or delete operation to the node and provides a high search performance and the method It is another object to provide a computer readable recording medium having recorded thereon a program for realizing this.

도 1은 본 발명에 따른 삽입, 삭제 및 재 삽입 연산이 동시에 수행될 경우에 나타나는 경로유실의 문제를 보여주는 트리구성을 나타낸 도면.1 is a diagram illustrating a tree structure showing a problem of path loss when an insert, delete, and reinsert operation is simultaneously performed according to the present invention.

도 2는 본 발명에 따른 삽입 연산을 구성하는 서브 루틴의 구성을 나타낸 도면.2 is a diagram showing the configuration of a subroutine constituting an insert operation according to the present invention;

도 3은 본 발명에 따른 삽입 연산의 동작을 설명하는 순서도.3 is a flow chart illustrating the operation of an insert operation in accordance with the present invention.

도 4는 본 발명에 따른 삽입 연산의 서브 루틴 중 하나인 단말노드를 찾는 연산(FindNode)의 동작을 설명하는 순서도.4 is a flow chart illustrating the operation of a find node (FindNode) that is one of the subroutines of an insert operation according to the present invention.

도 5는 본 발명에 따른 삽입 연산의 서브 루틴 중 하나인 노드의 넘침을 처리하는 연산(TreatOverflow)의 동작을 설명하는 순서도.FIG. 5 is a flowchart illustrating the operation of an operation (TreatOverflow) for handling the overflow of a node which is one of the subroutines of an insert operation according to the present invention. FIG.

도 6은 본 발명에 따른 삽입 연산의 서브 루틴 중 하나인 재 삽입을 위한 연산(Reinsert)의 동작을 설명하는 순서도.6 is a flow chart illustrating the operation of an operation Reinsert for reinsertion, which is one of the subroutines of an insert operation in accordance with the present invention.

도 7은 본 발명에 따른 삽입 연산의 서브 루틴 중 하나인 노드를 분할하는 연산(Split)의 동작을 설명하는 순서도.7 is a flow chart illustrating the operation of Split, which splits a node which is one of the subroutines of an insert operation in accordance with the present invention.

도 8은 본 발명에 따른 비단말 노드에서 넘침 연산 처리시 경로 스택에 있는부모 노드에 조건부 배타잠금을 요청하는 과정을 설명하는 트리 구성을 나타낸 도면.8 is a diagram illustrating a tree structure for explaining a process of requesting a conditional exclusive lock to a parent node in a path stack during a overflow operation in a non-terminal node according to the present invention.

도 9는 본 발명에 따른 탐색(Search) 연산의 동작을 설명하는 순서도.9 is a flow chart illustrating the operation of a Search operation in accordance with the present invention.

도 10은 본 발명에 따른 삭제 연산의 동작을 설명하는 순서도.10 is a flow chart illustrating the operation of the delete operation in accordance with the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

200…삽입 연산의 모듈200... Module of insert operation

상기 목적을 달성하기 위하여, 본 발명은, 큐에 루트 노드를 저장하는 단계; 재 삽입 노드에 공유 잠금을 획득하는 단계; 큐가 비었는지를 판단하여 비어 있지 않으면 큐로부터 하나의 노드를 가져와서 현재 노드로 하고, 큐가 비어 있으면 재 삽입 노드에의 잠금을 해제하고 탐색을 종료하는 단계; 현재 노드에서 공유 래치를 획득하고 질의 범위에 있는 하위 노드들을 선택한 후 큐에 넣는 단계; 상기 큐가 비어있는지 판단하는 단계로 돌아가서 수행하는 단계를 포함하는 것을 특징으로 한다.In order to achieve the above object, the present invention comprises the steps of: storing the root node in a queue; Obtaining a shared lock on the reinsert node; Determining whether the queue is empty and taking one node from the queue as the current node if it is not empty, and if the queue is empty, unlocking the reinsert node and ending the search; Acquiring a shared latch at the current node, selecting subqueues in the query range, and enqueuing; And returning to determining whether the queue is empty.

또한, 본 발명은, 새로운 엔트리를 삽입할 단말노드를 찾는 단계; 상기 찾은 단말노드에 엔트리 삽입시 넘침이 발생하는지 판단하는 단계; 상기 판단 단계의 판단 결과, 넘침이 발생하면 트리잠금을 획득한 후, 상기 삽입할 단말노드의 노드 넘침을 처리하고 트리 잠금을 해제하는 단계 및 상기 판단 단계의 판단 결과, 넘침이 발생하지 않으면 상기 삽입할 단말노드에 새로운 엔트리를 삽입하고, 만약 삽입으로 인해 최소 경계 영역이 변경되었으면 트리 잠금을 획득하고 최소경계영역의 변경을 상위로 전파한 후 트리잠금을 해제하는 단계를 포함하는 것을 특징으로 한다.In addition, the present invention, a step of finding a terminal node to insert a new entry; Determining whether an overflow occurs when an entry is inserted into the found terminal node; As a result of the determination of the determination step, if overflow occurs, a tree lock is obtained, the node overflow of the terminal node to be inserted is processed, the tree lock is released, and as a result of the determination of the determination step, the insertion is not performed. And inserting a new entry into the terminal node to be obtained, and if the minimum boundary region is changed due to the insertion, acquiring the tree lock, propagating the change of the minimum boundary region to the upper side, and then releasing the tree lock.

한편, 본 발명은, 데이터 처리 장치에 의해 판독가능한 구조를 가지며, 큐에 루트 노드를 저장하는 기능; 재 삽입 노드에 공유 잠금을 획득하는 기능; 큐가 비었는지를 판단하여 비어 있지 않으면 큐로부터 하나의 노드를 가져와서 현재 노드로 하고, 큐가 비어 있으면 재 삽입 노드에의 잠금을 해제하고 탐색을 종료하는 기능; 현재 노드에서 공유 래치를 획득하고 질의 범위에 있는 하위 노드들을 선택한 후 큐에 넣는 기능; 상기 큐가 비어있는지 판단하는 기능으로 돌아가서 수행하는 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.On the other hand, the present invention has a structure that is readable by the data processing apparatus, the function of storing the root node in the queue; Obtaining a shared lock on the reinsert node; Determining whether the queue is empty and taking one node from the queue as the current node if it is not empty, and if the queue is empty, unlocking the reinsert node and ending the search; Acquiring a shared latch at the current node, selecting subqueues in the query range, and enqueuing; A computer readable recording medium having recorded thereon a program for realizing a function of returning to the function of determining whether the queue is empty is provided.

또한, 본 발명은, 데이터 처리 장치에 의해 판독가능한 구조를 가지며, 새로운 엔트리를 삽입할 단말노드를 찾는 기능; 상기 찾은 단말노드에 엔트리 삽입시 넘침이 발생하는지 판단하는 기능; 상기 판단 기능의 판단 결과, 넘침이 발생하면 트리잠금을 획득한 후, 상기 삽입할 단말노드의 노드 넘침을 처리하고 트리잠금을 해제하는 기능; 및 상기 판단 기능의 판단 결과, 넘침이 발생하지 않으면 상기 삽입할 단말노드에 새로운 엔트리를 삽입하고, 만약 삽입으로 인해 최소 경계 영역이 변경되었으면 트리 잠금을 획득하고 최소경계영역의 변경을 상위로 전파한 후 트리잠금을 해제하는 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.In addition, the present invention has a structure readable by the data processing apparatus, the function of finding a terminal node to insert a new entry; Determining whether an overflow occurs when an entry is inserted into the found terminal node; A function of processing a node overflow of the terminal node to be inserted and releasing the tree lock after acquiring a tree lock when the overflow occurs as a result of the determination of the determination function; And if it is determined that the overflow does not occur, a new entry is inserted into the terminal node to be inserted. If the minimum boundary region is changed due to the insertion, a tree lock is acquired and the change of the minimum boundary region is propagated upward. A computer readable recording medium having recorded thereon a program for realizing a function of releasing a tree lock is provided.

최근 제안되고 있는 고차원 색인구조(R*-트리, TV-트리, X-트리, SS-트리, CIR-트리)들은 성능을 향상시키기 위하여 노드의 넘침시 그 노드에 포함된 엔트리의 일부를 선택하여 하나씩 색인트리에 재 삽입한다. 이때, 재 삽입을 위해 선택된 엔트리들은 사실상 색인트리에서 삭제된 것이며, 재 삽입 중에 있는 엔트리들은 탐색을 할 수 없게 된다. 일반적으로 재 삽입시간은 매우 긴 시간이며 재 삽입되는 객체들을 이 시간 동안 탐색할 수 없게 된다면 심각한 오류를 발생시킬 것이다.Recently proposed high-dimensional index structures (R * -tree, TV-tree, X-tree, SS-tree, CIR-tree) select some of the entries included in the node when the node overflows to improve performance. Reinsert them into the index tree one by one. At this time, the entries selected for reinsertion are actually deleted from the index tree, and the entries during reinsertion cannot be searched. In general, the reinsertion time is very long and will cause serious errors if the reinserted objects cannot be navigated during this time.

본 발명은 고차원 색인구조에 대한 효과적인 동시성 제어방법에 대한 것으로, 재 삽입 연산 중에도 재 삽입되는 엔트리에 대한 탐색이 가능하도록 하기 위해 재 삽입을 위해 삭제한 엔트리들을 재 삽입노드에 저장한 후 재삽입 노드를 탐색함으로써 탐색을 할 수 있게 한다.The present invention relates to an effective concurrency control method for a high-dimensional index structure. In order to enable retrieval of entries to be reinserted even during a reinsert operation, the reinsert node after storing the deleted entries in the reinsert node Search by allowing to search.

본 발명에서는 R LINK -트리에서 사용하였던 링크기법을 기반으로 한다. 즉, 전역계수기를 사용하여 노드일련번호를 할당하는 방법을 사용함으로써 비단말노드의 엔트리에 논리일련번호가 포함되어 저장효율을 떨어뜨리는 문제를 방지한다. 그러나, 본 발명은 기존의 방법과 다르게 전역계수기로서 로그일련번호를 이용하는 방법을 제공한다. 로그일련번호는 논리일련번호처럼 단조증가하며 절대 감소하지 않는 특성을 갖는다.The present invention is based on the link technique used in the R LINK -tree. In other words, by using a method of assigning a node serial number using a global counter, a logical serial number is included in an entry of a non-terminal node, thereby preventing a problem of reducing storage efficiency. However, the present invention provides a method of using a log serial number as a global counter unlike the existing method. The log serial number is monotonically increasing like the logical serial number and never decreases.

기존의 링크기법을 사용하는 R LINK -트리에서는 트리의 구조를 변경하는 삽입 또는 삭제 연산을 수행할 때에는 R-트리 계열의 구조적 특성상 트리의 일관성을 보장하기 위하여 색인노드에 잠금을 해야한다. 왜냐하면, 색인노드에 잠금을 하지 않으면, 재 삽입 연산이 수행되는 노드를 루트노드로 하는 하부 트리 내에서 수행중인 삽입이나 삭제 연산이 트리를 거슬러 올라가면서 삽입이나 삭제로 인한 최소경계영역 정보를 변경하려고 할 때 경로를 유실할 수 있기 때문이다.In the R LINK -tree using the existing linking technique, when performing an insert or delete operation that changes the structure of the tree, the structure of the R-tree family must lock the index node to ensure the tree consistency. Because, if you do not lock the index node, the insert or delete operation in the subtree that is the root node of the node where the reinsert operation is performed attempts to change the minimum boundary area information due to the insertion or deletion as it goes up the tree. This is because the path can be lost.

본 발명에서는 상기 경로 유실 문제를 해결하기 위해 색인노드에 잠금과 래치를 혼용한다. 색인구조의 노드에 대한 래치는 여러 트랜잭션(또는 프로세스)들이 색인구조의 한 노드를 접근할 때 이들간의 동기화를 이루어주며 노드의 물리적 일관성을 보장하기 위한 것이다. 본 발명에서는 삽입과 삭제를 위해 하위노드로 트리를 순회할 때 거치는 모든 노드에 공유잠금을 획득하고, 트랜잭션이 끝나는 시점에서 상기 공유잠금을 해제한다. 이후, 트리를 거슬러 올라가면서 삽입이나 삭제로 인한 최소경계영역을 변경하려고 하는 과정에서 재 삽입이 발생하면 경로 유실문제가 생길 수 있다. 따라서, 본 발명에서는 상기 재 삽입으로 인한 경로 유실을 막기 위해 재 삽입이 일어나기 전에 재 삽입할 노드에 배타모드의 잠금(이하 배타잠금)을 획득할 것을 요구하고, 배타잠금을 획득하지 못했을 때는 재 삽입을 수행하지 않고 분할을 수행한다. 본 발명에서는 색인 노드에 대한 잠금은 탐색연산에 전혀 영향을 미치지 않는다. 본 발명에서는 탐색연산은 자신이 접근하려는 노드에 공유모드의 래치(이하 공유래치)만 획득하므로 색인노드에 대한 삽입 또는 삭제 연산의 잠금으로 인한 지연은 발생하지 않는다. 본 발명에서 색인노드 중 루트노드에 행하는 잠금은 특별한 의미를 갖는다. 상기 루트잠금은 트리잠금을 구현하기 위해 사용된다. 본 발명이 제공하는 동시성 제어 방법은 넘침처리연산(재 삽입 연산 또는 분할연산을 포함)이나 최소경계영역 변경 연산을 직렬로 수행한다. 이때, 이들을 직렬로 수행시키는 방법으로 트리잠금을 사용한다. 즉, 한 트랜잭션이 삽입연산 수행도중 노드에 넘침을 발생시키고 이를 처리하기 위하여 먼저 쓰기모드의 트리잠금을 획득한다. 상기 트리잠금을 획득하면 상기 트랜잭션이 수행되는 동안 다른 트랜잭션은 넘침이 발생하거나 최소경계영역이 변경되어도 수행하지 않고 기다리게 된다. 기타 넘침을 발생시키지 않는 다른 삽입 연산은 트리잠금을 획득하지 않고도 수행이 가능하며 탐색연산도 수행이 가능하다.In the present invention, in order to solve the path loss problem, a lock and a latch are mixed with an index node. A latch on a node of an index structure is used to ensure synchronization between nodes when multiple transactions (or processes) access a node of an index structure and to ensure physical consistency of the node. In the present invention, a shared lock is obtained at all nodes passing through the tree to insert and delete nodes, and the shared lock is released at the end of the transaction. Subsequently, if a reinsertion occurs while attempting to change the minimum boundary area due to insertion or deletion while going up the tree, a path loss problem may occur. Accordingly, in the present invention, in order to prevent the loss of the path due to the reinsertion, it is required to acquire the exclusive mode lock (hereinafter exclusive lock) to the node to be reinserted before the reinsertion occurs, and when the exclusive lock is not obtained, the reinsertion is performed. Perform the split without doing In the present invention, the lock on the index node does not affect the search operation at all. In the present invention, since the search operation acquires only the latch of the shared mode (hereinafter referred to as the shared latch) to the node to which the node tries to access, there is no delay due to the lock of the insert or delete operation on the index node. In the present invention, the lock on the root node of the index node has a special meaning. The root lock is used to implement a tree lock. The concurrency control method provided by the present invention performs an overflow processing operation (including a reinsert operation or a division operation) or a minimum boundary area change operation in series. At this time, the tree lock is used as a method of performing them in series. In other words, a transaction causes the node to overflow during the execution of the insert operation and first acquires the tree lock in the write mode. Acquiring the tree lock causes other transactions to wait while the transaction is being executed, even if the overflow occurs or the minimum boundary is changed. Other insert operations that do not cause overflow can be performed without acquiring a tree lock, and search operations can also be performed.

본 발명은 재 삽입 노드를 사용하여 동시성이 제어된 재삽입 연산을 제공한다. 재 삽입을 위해 트리에서 삭제한 엔트리들을 일정 영역에 저장하고 이를 탐색연산이 참조할 수 있도록 한다. 본 발명에서는 삭제한 엔트리들을 특정노드(재 삽입노드)에 보관하고 탐색연산이 이를 참조할 수 있도록 하고 있다. 본 발명에서 상기 재 삽입노드는 각 색인 구조마다 하나씩만 할당된다. 왜냐하면, 동시에 발생할 수 있는 넘침처리 연산이나 최소경계영역 변경 연산을 하나로 제한하고 있기 때문이다. 즉, 동시에 발생할 수 있는 재 삽입연산의 수가 하나로 제한되기 때문이다.The present invention provides a reinsert operation with concurrency controlled using a reinsert node. Stores entries deleted from the tree for reinsertion in a given area so that the search operation can refer to them. In the present invention, deleted entries are stored in a specific node (reinsertion node), and the search operation can refer to this. In the present invention, only one reinsert node is allocated to each index structure. This is because an overflow processing operation or a minimum boundary area change operation that can occur at the same time is limited to one. That is, because the number of re-insertion operations that can occur at the same time is limited to one.

본 발명에서는 삽입연산을 수행하는 트랜잭션은 최대 한 레벨(level)의 노드에만 래치를 유지하면 되도록 보장한다. 전역계수기를 사용하여 논리일련번호를 노드에 부여하지만 트리잠금을 통해 분할과 최소경계영역 변경 연산의 수행이 동시에 하나로만 제한되므로 분할을 위해 부모노드에 래치를 미리 획득할 필요가 없다. 이는 탐색연산시 지연시간이 길어지는 것을 막아준다.In the present invention, a transaction performing an insert operation is guaranteed to hold a latch only at a node of at most one level. Although the logical serial number is assigned to the node using the global counter, the tree lock does not need to acquire the latch in advance in the parent node because the partition and the minimum boundary area change operation are limited to one at the same time. This prevents the long delay time during the search operation.

이어서, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.Next, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 삽입(Insert), 삭제(Delete) 및 재 삽입(Reinsert) 연산이 동시에 수행될 경우에 나타나는 경로유실의 문제를 보여주는 트리구성을 나타낸다.1 illustrates a tree structure showing a problem of path loss that occurs when insert, delete, and reinsert operations according to the present invention are performed at the same time.

도 1을 참조하여 살펴보면, 트랜잭션 T1, T2, T3에서 경로 유실이 일어나는 경우를 보여준다. 예를 들어 트랜잭션 T1에서는 P4 노드에 새로운 엔트리를 삽입하고, P4 노드에 대한 엔트리를 수정하기 위해 P2 노드에 접근한다. 그리고, 트랜잭션 T2에서는 P2 노드에 재 삽입 연산을 수행하면서 P4 노드에 대한 엔트리를 삭제한다. 그러면, 트랜잭션 T1에서는 P2 노드에서 P4 노드에 대한 엔트리를 찾을 수 없어 경로가 유실된다.Referring to FIG. 1, a path loss occurs in transactions T1, T2, and T3. For example, transaction T1 inserts a new entry into node P4 and accesses node P2 to modify the entry for node P4. In transaction T2, the entry for the node P4 is deleted while performing the reinsert operation in the node P2. Then, in transaction T1, the entry for the P4 node cannot be found in the P2 node, and the path is lost.

도 2는 본 발명에 따른 삽입 연산의 구성을 나타내는 도면으로서, 삽입 연산을 구성하는 서브 루틴의 구성을 나타낸다.2 is a diagram showing the configuration of an insert operation according to the present invention, and shows the configuration of a subroutine constituting the insert operation.

도 2를 참조하여 살펴보면, 상기 삽입(Insert) 연산은 단말노드찾기(FindNode), 넘침처리(TreatOverflow), 재 삽입(Reinsert), 분할(Split), 재 삽입 연산 중의 분할(SplitAll) 및 최소경계영역 변경(FixMBR) 연산으로 구성된다.Referring to FIG. 2, the Insert operation includes a FindNode, a OverOverflow, a Reinsert, a Split, a SplitAll and a Minimum Boundary Area during a reinsert operation. It consists of a change (FixMBR) operation.

상기 단말노드찾기(FindNode) 연산은 삽입할 엔트리가 위치할 적당한 노드를 찾아 주는 기능을 한다. 상기 넘침처리(TreatOverflow) 연산은 어떤 노드에 넘침이 발생할 때 분할(Split)을 수행할 것인지 재삽입(Reinsert) 연산을 수행할 것인지를 판단해서 이를 수행하는 기능을 한다. 상기 재 삽입(Reinsert) 연산은 넘침처리(TreatOverflow) 연산에서 발생한 넘침을 재 삽입으로 처리하고자 할 때 호출하는 함수이다. 상기 함수에서는 넘침이 발생한 노드에서 재삽입 엔트리들을 선택하여 삭제한 후 색인트리에 삽입한다. 상기 재 삽입 연산 중의 분할(SplitAll) 연산은 재 삽입 도중에 넘침이 발생했을 때 이를 분할로 처리하는 것으로 잠금을 할당받지 않는 것을 제외하면 상기 분할(Split) 연산과 동일하다. 상기 재 삽입 연산 중의 분할(SplitAll) 연산에서 잠금을 할당받지 않아도 되는 이유는 재 삽입 연산과정에서 발생하는 연산이기 때문에 이미 잠금을 얻고 있기 때문이다.The find node operation finds a suitable node to locate an entry to insert. The overflow overflow operation determines whether a node performs a split or a reinsert operation when overflow occurs to a node. The reinsert operation is a function to be called when the overflow generated from the overflowover operation is to be treated as a reinsert. This function selects and deletes reinsert entries from the overflowed node and inserts them into the index tree. The SplitAll operation in the reinsert operation is the same as the Split operation except that when a overflow occurs during the reinsertion, the splitAll operation is treated as a split and is not assigned a lock. The reason why the lock is not allocated in the splitAll operation during the reinsert operation is that the lock is already acquired because the operation occurs during the reinsert operation.

도 3은 본 발명에 따른 삽입(Insert) 연산의 동작을 설명하는 순서도이다.3 is a flow chart illustrating the operation of an Insert operation in accordance with the present invention.

도 3을 참조하면, 삽입(Insert) 알고리즘은 새로운 엔트리를 삽입할 단말노드를 찾는 것부터 시작된다(FindNode)(310). 단계 312에서는 새로 찾은 단말노드에 엔트리를 삽입할 충분한 공간이 있는지를 판단한다. 상기 판단 결과 새로 찾은 단말노드에 충분한 공간이 없으면 단계 314에서 트리잠금을 획득하고 단계 316에서 넘침처리를 수행한다(TreatOverflow). 그리고, 단계 318에서 트리 잠금을 해제한 후, 단계 334에서 획득한 모든 노드에의 잠금을 해제한다. 만약 새로 찾은 단말노드에 엔트리를 삽입할 충분한 공간이 있으면 다음과 같은 처리를 수행한다. 단계 320에서 새로운 엔트리를 단말노드에 삽입한다. 단계 322에서는 단말노드의 최소경계영역이 변경되었는지 판단한다. 최소경계영역이 변경되었으면 단계 324에서 트리잠금을 획득하고, 단계 326에서 단말노드의 배타래치를 해제하며, 단계 328에서 최소경계영역 변경을 수행하고(FixMBR), 단계 330에서 트리잠금을 해제한 후에, 단계 334에서 획득한 모든 노드에의 잠금을 해제하고 삽입 연산을 종료한다. 만약 최소경계영역이 변경되지 않았으면 단계 332에서 단말 노드의 배타래치를 해제한 후에 단계 334에서 획득한 모든 잠금을 해제하고 삽입연산을 종료한다.Referring to FIG. 3, the Insert algorithm begins by finding a terminal node to insert a new entry (FindNode) 310. In step 312, it is determined whether there is enough space to insert an entry in the newly found terminal node. If there is not enough space in the newly found terminal node as a result of the determination, a tree lock is acquired in step 314 and overflow processing is performed in step 316 (TreatOverflow). Then, after unlocking the tree in step 318, all the nodes obtained in step 334 are unlocked. If there is enough space to insert an entry in the newly found terminal node, the following processing is performed. In step 320, a new entry is inserted into the terminal node. In step 322, it is determined whether the minimum boundary area of the terminal node has changed. If the minimum boundary area has been changed, the tree lock is acquired in step 324, the exclusive latch of the terminal node is released in step 326, the minimum boundary area change is performed in step 328 (FixMBR), and the tree lock is released in step 330. In step 334, all the nodes obtained in the lock are released and the insertion operation is terminated. If the minimum boundary area has not been changed, after releasing the exclusive latch of the terminal node in step 332, all locks acquired in step 334 are released and the insertion operation is terminated.

도 4는 새로운 엔트리를 삽입할 단말노드를 찾는 방법(FindNode)(400)을 나타내는 순서도이다.4 is a flowchart illustrating a method (FindNode) 400 for finding a terminal node into which a new entry is to be inserted.

도 4를 참조하면, 상기 방법은 현재노드(CurNode)에서 새로 삽입할 엔트리를 위해 가장 적절한 자식노드(ChildNode)를 찾는 방법을 제공한다. 단계 410에서 현재노드를 루트노드(RootNode)로 설정하고, 현재 노드에 공유 래치를 획득한다. 단계 412에서는 현재노드에서 엔트리를 삽입할 가장 적절한 자식노드를 찾은 후 단계 414에서 현재노드의 공유래치를 해제한다. 단계 416에서 자식노드의 레벨이 찾고자 하는 목표(target) 레벨과 동일한지를 판단한다. 상기 판단결과 동일하면, 단계 418에서 자식노드에 배타래치 및 배타잠금을 획득하고, 상기 판단 결과 동일하지 않으면, 단계 420에서 자식노드에 공유래치 및 공유잠금을 획득한다. 단계 422에서 자식노드의 논리일련번호가 현재노드의 로그일련번호보다 큰지를 판단한다. 상기 판단 결과, 크면 상위로 반영되지 않은 분할이 있는 경우이므로 단계 424에서 자식노드의 오른쪽 링크를 따라가면서 분할된 노드 중 더 적절한 노드를 선택하고, 단계 426에서 선택한 노드를 자식노드로 한 후 배타 래치와 배타 잠금 또는 공유 래치와 공유 잠금을 획득한다. 래치 및 잠금을 획득하는 모드는 단계 416의 판단 결과와 같다. 단계 428에서 자식노드의 레벨이 목표 레벨과 동일한지 판단한다. 상기 판단 결과 동일하지 않으면, 단계 430에서 자식노드를 경로 스택에 넣고, 단계 432에서 현재노드를 자식노드로 설정한 후 단계 412로 되돌아간다. 상기 단계 428의 판단 결과 동일하면 단계 434에서 자식노드 및 경로 스택(path stack)을 반환한다. 상기 단말노드찾기(FindNode) 연산(400)의 수행 결과 반환되는 경로 스택에 들어 있는 루트노드를 제외한 모든 노드에는 잠금이 걸리게 된다. 즉, 단말노드에는 쓰기모드의 잠금이 걸리게 되며, 비단말노드에는 공유모드의 잠금이 걸린다. 또한, 단말 노드에는 배타래치가 걸리게 된다.Referring to FIG. 4, the method provides a method of finding a child node most appropriate for an entry to be newly inserted in a current node CurNode. In step 410, the current node is set as a root node, and a shared latch is obtained at the current node. In step 412, after finding the most appropriate child node to insert an entry in the current node, in step 414, the shared latch of the current node is released. In step 416, it is determined whether the level of the child node is the same as the target level to be found. If the determination result is the same, the exclusive latch and the exclusive lock are obtained at the child node in step 418. If the determination result is not the same, the sharing latch and the sharing lock is acquired at the child node in step 420. In step 422, it is determined whether the logical serial number of the child node is greater than the log serial number of the current node. As a result of the determination, if there is a partition that is not reflected to the upper side, a more appropriate node is selected among the divided nodes while following the right link of the child node in step 424, and the exclusive node is selected after the node selected in step 426 is a child node. Acquire exclusive locks or shared latches and shared locks. The mode of acquiring the latch and the lock is the same as the determination result of step 416. In step 428, it is determined whether the level of the child node is the same as the target level. If the determination is not the same, in step 430, the child node is put in the path stack, in step 432, the current node is set as the child node, and the process returns to step 412. If the determination result of step 428 is the same, the child node and the path stack are returned in step 434. All nodes except the root node included in the path stack returned as a result of performing the find node operation 400 are locked. That is, the terminal node is locked in the write mode, and the non-terminal node is locked in the shared mode. In addition, the terminal node is subjected to exclusive latch.

도 5는 본 발명에 따른 삽입 연산의 서브 루틴 중 하나인 노드의 넘침을 처리하는 연산(TreatOverflow)의 동작을 설명하는 순서도이다.FIG. 5 is a flowchart illustrating an operation of an operation (TreatOverflow) for handling overflow of a node which is one of subroutines of an insert operation according to the present invention.

도 5를 참조하면, 상기 넘침처리 연산(500)은 노드에 새로운 엔트리를 수용할 여유공간이 없을 때 처리하는 방법을 제공한다.Referring to FIG. 5, the overflow processing operation 500 provides a method of processing when a node does not have free space to accommodate a new entry.

단계 510에서 현재노드가 루트노드인지를 판단하고, 상기 판단 결과 루트노드이면 단계 534에서 루트분할을 수행하고, 단계 536에서 넘침을 일으켜 분할을 수행토록 만든 엔트리를 삽입한 후 종료한다. 상기 판단 결과 루트노드가 아니면 단계 512에서 현재노드에 조건부 배타잠금을 요청한다. 단계 514에서는 현재노드가 배타잠금을 획득하였는지를 판단한다. 상기 판단 결과 배타 잠금을 획득하였으면 단계 518에서 재 삽입 연산(600)을 호출하고, 획득하지 못하였으면 단계 516에서 분할(Split) 연산(700)을 호출한다. 단말 노드의 경우 상기 단말노드찾기(FindNode) 연산(400) 수행시 단말노드에는 배타잠금을 획득하기 때문에 모든 넘침은 재 삽입으로 이어진다. 비 단말노드에서는 해당 비 단말노드를 루트노드로 하는 하부 트리내에서 다른 트랜잭션이 삽입이나 삭제연산을 수행하는 경우에는 재 삽입을 수행하지 않고 분할을 수행한다. 만약, 재 삽입 연산(600)을 호출하였다면 상기 재 삽입 연산(600)이 어떻게 종료하였느냐에 따라 다음 수행할 작업을 결정한다. 먼저 단계 520에서 현재노드가 단말노드인지를 판단하여 단말노드이면 현재노드의 배타래치를 해제하고 비 단말노드이면 현재노드의 배타잠금을 해제한다. 이후, 단계 522로 넘어가 만일 상기 재 삽입 연산(600)에서 현재노드에 넘침이 발생하지 않았으면 종료한다. 만약, 현재노드에 넘침이 발생하여 분할(SplitAll)을 수행하였으면 단계 524에서 경로스택에서 부모노드(ParentNode)를 읽어온다. 단계 526에서 상기 부모노드에 분할된 엔트리를 삽입할 여유공간이 있는지를 검사한다. 상기 부모노드에서 분할을 반영할 여유공간이 없으면 단계 528에서 현재노드를 부모노드로 설정한 후 다시 넘침처리 연산(500)의 처음(단계 510)으로 되돌아가서 다시 재 삽입을 할 것인지 분할을 할 것인지를 결정한다. 상기 부모노드에서 분할을 반영할 충분한 여유공간이 있는 경우에는 단계 530에서 상기 부모노드에 상기 분할된 엔트리를 삽입하고, 단계 532에서 상위노드에 그에 대한 최소경계영역 변경 연산을 수행하고, 단계 536에서 넘침을 일으켜 분할을 수행하도록 만든 엔트리를 삽입하고 종료한다.In step 510, it is determined whether the current node is the root node. If it is determined that the root node is the root node, the root split is performed in step 534, and in step 536, the entry made to perform the split is inserted and terminated. If the determination result is not the root node, in step 512, a conditional exclusive lock is requested to the current node. In step 514, it is determined whether the current node has obtained the exclusive lock. If the exclusive lock is obtained as a result of the determination, the reinsert operation 600 is called at step 518, and if not, the split operation 700 is called at step 516. In the case of the terminal node, when the find node operation (FindNode) operation 400 is performed, an exclusive lock is obtained in the terminal node, so that all overflows lead to reinsertion. In the non-terminal node, when another transaction performs an insert or delete operation in a lower tree having the non-terminal node as the root node, the non-terminal node performs partitioning without performing reinsertion. If the reinsert operation 600 is called, the next operation is determined according to how the reinsert operation 600 ends. First, in step 520, it is determined whether the current node is a terminal node, and if it is a terminal node, the exclusive latch of the current node is released, and if it is a non-terminal node, the exclusive lock of the current node is released. Thereafter, the process proceeds to step 522 and ends if the current node has not overflowed in the reinsert operation 600. If the current node overflows and Split is performed, in step 524, a parent node is read from the path stack. In step 526, it is checked whether there is free space for inserting a divided entry in the parent node. If there is no free space to reflect the division in the parent node, in step 528, the current node is set as the parent node, and then the flow returns to the beginning of the overflow processing operation 500 (step 510), and reinsertion or division is performed. Determine. If there is enough free space to reflect the division in the parent node, insert the divided entry in the parent node in step 530, perform a minimum boundary area change operation on the parent node in step 532, and in step 536 Insert and exit the entry that caused the overflow to perform the split.

만약 상기 단계 514에서 현재노드에 잠금을 획득하지 못하여 분할(Split) 연산(700)을 호출하였다면(516) 단계 524에서 경로 스택에서 부모노드를 읽어오고, 분할 결과를 반영하는 단계 526 이하를 수행한다.If the split operation 700 is called because the lock is not acquired on the current node in step 514, the parent node is read from the path stack in step 524, and the following operation 526 is performed to reflect the split result. .

도 6은 본 발명에 따른 삽입 연산 중 하나의 연산인 재 삽입 연산의 동작을 설명하는 순서도이다.6 is a flowchart illustrating an operation of a reinsert operation, which is one operation of an insert operation according to the present invention.

도 6을 참조하면, 상기 재 삽입 연산(600)은 먼저 단계 610에서 색인 구조에 하나씩 할당되어 있는 재 삽입 노드에 조건부 배타잠금을 요청한 후, 상기 요청 결과 배타잠금을 획득하면 재 삽입을 수행하고, 획득하지 못하면 단계 612에서 현재노드에 배타래치를 해제하고 무조건부 배타잠금을 현재노드에 요청하여 획득한 다음 다시 현재노드에 배타래치를 획득하고 재 삽입을 진행한다.Referring to FIG. 6, the reinsert operation 600 first requests conditional exclusive locks to the reinsert nodes allocated to the index structure one by one in step 610, and then performs reinsertion when the exclusive lock is obtained as a result of the request. If not, in step 612, the exclusive latch is released to the current node, and an unconditional exclusive lock is requested to the current node to acquire it, and then the exclusive latch is acquired to the current node and reinsertion is performed.

단계 614에서는 재 삽입 엔트리를 선택하여 이를 현재노드에서 삭제한 후 상기 삭제한 엔트리들을 재 삽입 노드에 기록한다. 이때 재삽입 노드의 첫 번째 레코드에 현재 재 삽입이 발생하고 있는 레벨, 노드의 식별자 및 재 삽입 엔트리들의 최소경계영역을 계산하여 저장한다. 단계 616에서는 현재노드에 상기 삭제된 재 삽입 엔트리들의 개수를 기록한다. 상기 개수는 상기 삭제된 재 삽입 엔트리들을 한개씩 색인트리에 삽입하는데 필요한 카운터의 역할을 한다. 단계 618에서 재 삽입 노드와 현재노드의 배타래치를 해제한다. 단계 620에서 현재노드의 변경된 최소경계영역을 조상노드에 반영한다(즉, FixMBR 연산을 호출한다). 이것이 끝나면 재 삽입 엔트리들을 하나씩 색인 트리에 삽입한다. 단계 622에서 상기 삭제된 엔트리들이 모두 색인 트리에 삽입되었는지를 판단한다. 상기 판단은 현재노드의 재삽입 엔트리 수 필드 값이 0 이 되었는지를 판단함으로써 할 수 있다. 상기 판단 결과 모든 엔트리들이 삽입된 경우에는 단계 640에서 재 삽입노드의 배타 잠금을 해제한 후 재 삽입(ReInsertion) 연산(600)을 종료한다. 상기 판단 결과 모든 엔트리들이 삽입되지 않은 경우에는 단계 624에서 삽입할 엔트리를 위한 적절한 노드를 찾는 연산(FindNode)을 호출한다. 단계 626에서 상기 찾은 페이지에 엔트리를 삽입할 충분한 공간이 있는지를 판단한다. 상기 판단 결과 충분한 공간이 있으면 단계 628에서 찾은 노드에 엔트리를 삽입하고, 단계 630에서 조상 노드에 최소경계영역 변경을 반영한다. 단계 632에서 현재 노드의 재삽입 엔트리 카운트를 하나 감소시킨 후 단계 622로 돌아가서 재삽입 완료를 판단하는 것을 수행한다. 상기 단계 626의 판단 결과 충분한 공간이 없으면 단계 634에서 찾은 노드가 재삽입 연산이 진행 중인 현재노드인지를 판단한다. 상기 634의 판단 결과 현재 노드이면 단계 638에서 현재 노드를 분할하고 단계 640에서 재삽입 노드의 배타 잠금을 해제 후 종료한다. 상기 634의 판단 결과 현재 노드가 아니면 단계 636에서 찾은 노드를 분할하고 분할을 상위로 반영한(FixMBR) 후 엔트리를 삽입하고, 단계 622로 돌아가서 재삽입 완료여부를 판단한다.In step 614, the reinsertion entry is selected, deleted from the current node, and the deleted entries are recorded in the reinsertion node. At this time, the first record of the reinsert node is calculated and stored at the level where the current reinsert occurs, the identifier of the node, and the minimum boundary area of the reinsert entry. In step 616, the number of the deleted reinsert entries is recorded in the current node. The number serves as a counter for inserting the deleted reinsert entries into the index tree one by one. In step 618, the exclusive latch of the reinsert node and the current node is released. In step 620, the changed minimum boundary area of the current node is reflected to the ancestor node (that is, calling the FixMBR operation). When this is done, insert reinsert entries into the index tree one by one. In step 622, it is determined whether all deleted entries have been inserted into the index tree. The determination can be made by determining whether the reinsertion entry number field value of the current node is zero. If all of the entries are inserted as a result of the determination, in step 640, the exclusive lock of the reinsert node is released, and then the reinsertion operation 600 is terminated. If all the entries are not inserted as a result of the determination, the operation FindFindNode is called in step 624 to find an appropriate node for the entry to be inserted. In step 626, it is determined whether there is enough space in the found page to insert an entry. As a result of the determination, if there is enough space, an entry is inserted into the node found in step 628, and the change of the minimum boundary area is reflected in the ancestor node in step 630. In step 632, the reinsertion entry count of the current node is decreased by one, and then the flow returns to step 622 to determine completion of the reinsertion. If there is not enough space as a result of the determination of step 626, it is determined whether the node found in step 634 is the current node that is undergoing the reinsert operation. If it is determined that the node is the current node in step 634, the current node is split in step 638, and in step 640, the exclusive lock of the reinsert node is released and then terminated. If it is determined in step 634 that the node is not the current node, the node found in step 636 is divided, the partition is reflected upward (FixMBR), and then an entry is inserted, and the process returns to step 622 to determine whether reinsertion is completed.

도 7은 본 발명에 따른 삽입 연산의 서브 루틴 중 하나인 노드를 분할하는 연산(Split)의 동작을 설명하는 순서도이다.7 is a flowchart illustrating an operation of splitting a node which is one of subroutines of an insert operation according to the present invention.

도 7을 참조하면, 상기 분할(Split) 연산(700)은 먼저 단계 710에서 새로운 노드(NewNode)를 하나 할당하고 배타래치를 획득한다. 단계 712에서 상기 분할되는 현재노드가 단말노드인지를 판단한다. 상기 판단 결과, 단말노드이면 단계 714에서 상기 새로운 노드에 배타잠금을 획득한다. 단계 716에서는 현재노드에서 새로운 노드로 옮길 엔트리를 선택해 새로운 노드에 삽입하고 현재노드에서 삭제한다. 단계 718에서 새로운 노드의 논리일련번호에 현재노드의 논리일련번호를 할당한다. 단계 720에서 현재노드의 논리일련번호에 새로운 노드의 로그일련번호(LSN)을 할당한다. 단계 722에서 현재 노드의 다음 노드로 새로운 노드를 연결한다. 단계 724에서 현재노드 및 새로운 노드의 배타잠금과 배타래치를 해제한 후 종료한다. 상기 단계 712에서의 판단 결과, 단말노드가 아니면 단계 716으로 진행한다.Referring to FIG. 7, the split operation 700 first allocates a new node NewNode and obtains an exclusive latch in step 710. In step 712, it is determined whether the current node is divided as a terminal node. As a result of the determination, if it is a terminal node, an exclusive lock is obtained at the new node in step 714. In step 716, an entry to be moved from the current node to a new node is selected, inserted into the new node, and deleted from the current node. In step 718, the logical serial number of the current node is assigned to the logical serial number of the new node. In step 720, the log serial number (LSN) of the new node is assigned to the logical serial number of the current node. In step 722, a new node is connected to the next node of the current node. In step 724, the exclusive lock and exclusive latch of the current node and the new node are released and then terminated. If it is determined in step 712 that it is not a terminal node, the flow proceeds to step 716.

도 8은 본 발명에 따른 비단말 노드에서 넘침 연산 처리 시 경로 스택에 있는 부모 노드에 조건부 배타잠금을 요청하는 과정(800)을 설명하는 트리 구성을 나타낸다.FIG. 8 illustrates a tree structure illustrating a process 800 of requesting conditional exclusive lock to a parent node in a path stack during an overflow operation in a non-terminal node according to the present invention.

도 8을 참조하면, 상기 배타잠금을 요청하는 과정(800)은 배타잠금을 획득하게 되면 다시 재 삽입을 수행하고 그렇지 않으면 분할을 수행한다.Referring to FIG. 8, in the request for exclusive lock 800, when the exclusive lock is obtained, the exclusive lock is reinserted, otherwise the split is performed.

상기 T1, T2, T3는 모두 엔트리를 삽입하는 트랜잭션들이다. 먼저 T1이 엔트리를 삽입하기 위해 N5 노드를 거쳐 N3 노드에 도달한다. 이때 N5에는 공유잠금을 획득하고, N3에는 배타잠금을 획득한다. T2와 T3 역시 뒤이어 엔트리를 삽입하기 위해 N5를 거쳐 각각 N2와 N1에 도달한다. 이때, N5에는 T1과 마찬가지로 T2와 T3가 연속으로 공유잠금을 획득한다. 이후에 T1이 N3에 엔트리를 삽입하는 과정에서 넘침이 발생하여 트리잠금을 획득한 후 재 삽입을 수행하고 이어 N3을 분할한다. 다시 이를 상위노드 N5에 반영하는 과정에서 넘침이 발생하고 재 삽입을 수행하기 위해 N5에 조건부 배타잠금을 요청한다. 하지만, T2와 T3가 이미 공유잠금을 획득하고 있기 때문에 배타잠금을 얻지 못하고 분할을 수행한다. 분할을 수행하고 T1은 트리잠금을 해제하고 종료하게 된다. 이후에 T3가 N1에 엔트리를 삽입하고 최소경계영역(MBR)이 변경되어 이를 상위노드에 반영하기 위해 트리잠금을 요청한다. 이 보다 조금 앞서 T2는 N2에 엔트리를 삽입하는 과정에서 넘침이 발생하여 트리잠금을 획득하고 재삽입을 수행한다. 재 삽입을 수행하고 다시 N2를 분할한다. 이를 N5'에 반영하는 과정에서 N5'에 다시 넘침이 발생하여 조건부 배타잠금을 N5에 요청한다. 하지만, T3가 여전히 공유잠금을 N5에 유지하고 있기 때문에 재 삽입을 수행하지 못하고 분할을 수행한다. 만일 이 상황에서 T3가 조건부 배타잠금을 N5'에 요청한다면 T3는 이를 획득할 것이고 N5'에서 재 삽입을 수행할 것이다. 하지만, 이것은 N2가 변경된 최소경계영역을 상위노드에 반영하는 과정에서 경로를 유실할 수 있다.The T1, T2, and T3 are all transactions for inserting an entry. First, T1 arrives at node N3 via node N5 to insert an entry. At this time, N5 acquires a shared lock, and N3 acquires an exclusive lock. T2 and T3 also follow N5 and N1 respectively through N5 to insert an entry. At this time, like T1, T2 and T3 continuously acquire a shared lock in N5. Thereafter, overflow occurs while T1 inserts an entry into N3, acquires a tree lock, reinserts it, and then divides N3. Again, overflow occurs in the process of reflecting this to the upper node N5, and a conditional exclusive lock is requested to N5 to perform reinsertion. However, since T2 and T3 have already acquired the shared lock, they do not obtain the exclusive lock and perform the split. Partitioning is performed and T1 unlocks the tree and ends. Afterwards, T3 inserts an entry into N1 and the minimum boundary area (MBR) is changed to request a tree lock to reflect this to the upper node. A little earlier than this, T2 overflows in the process of inserting an entry into N2 to acquire a tree lock and perform reinsertion. Perform reinsertion and split N2 again. In the process of reflecting this to N5 ', overflow occurs again in N5' and requests N5 for conditional exclusive lock. However, since T3 still holds the shared lock at N5, it does not perform reinsertion and performs partitioning. If T3 requests a conditional exclusive lock on N5 'in this situation, T3 will acquire it and perform reinsertion on N5'. However, this may cause a loss of path in the process of reflecting the minimum boundary region changed by N2 to the upper node.

도 9는 본 발명에 따른 범위(range) 질의에 대한 탐색(Search) 연산(900)의 동작을 설명하는 순서도이다.9 is a flow chart illustrating the operation of a search operation 900 for a range query in accordance with the present invention.

도 9를 참조하면, 상기 탐색(Search) 연산(900)은 수행 중에 항상 한 레벨에 있는 노드에만 공유래치를 유지하고, 링크 기법을 사용하여 현재 방문하는 노드의 하위 노드의 분할을 감지한다.Referring to FIG. 9, the search operation 900 maintains a shared latch only at a node at one level during execution, and detects a division of a lower node of a currently visited node using a link technique.

단계 910에서는 최초의 현재 레벨(CurLevel)에 루트노드의 레벨을 할당하고 루트노드를 큐에 삽입한다. 상기 범위 질의 또는 K-근접점 질의는 모두 탐색을 시작하기 전에 재삽입노드에 공유잠금을 획득한다. 이것은 탐색도중에 재 삽입노드에 변경이 생기는 것을 막기 위해서이다. 탐색 도중 재 삽입 노드에 변경이 생기게 되면 재 삽입 엔트리들을 탐색 대상에서 제외하는 경우가 생기는 데 이를 방지하기 위함이다. 따라서, 단계 912에서 재 삽입 노드에 공유잠금을 요청하여 이를 획득한다. 단계 914에서 큐가 비었는지를 판단한다. 상기 단계 914의 판단결과 큐가 비었으면 재삽입 노드의 공유잠금을 해제 후 결과집합을 반환하며 종료한다. 상기 단계 914의 판단 결과 큐가 비어있지 않으면 단계 916에서 큐에서 노드를 하나 꺼내어 현재노드로 하고 공유래치를 획득한다. 현재노드의 레벨로 레벨을 일치시키기 위해 다음 단계를 수행한다. 단계 918에서 현재노드의 레벨 값과 현재 레벨(CurLevel)의 값의 크기를 비교한다. 상기 비교 결과, 현재노드의 레벨 값이 현재 레벨 값보다 크면 단계 928로 진행하고, 작으면 단계 920에서 현재 레벨에 현재노드의 레벨 값을 할당한 후 단계 922에서 현재 재삽입이 일어나는 레벨과 현재 레벨이 같은 지를 판단하여 판단 결과 같지 않으면 단계 928로 진행하고, 같으면 단계 924에서 재삽입 노드에 공유래치를 획득한 후 질의 범위에 있는 재삽입 노드의 엔트리들을 현재 노드가 단말이면 결과집합에, 비단말이면 큐에 삽입하고 재삽입 노드에의 공유 래치를 해제한다. 단계 928에서 현재노드에 공유래치를 획득한다. 단계 930에서 현재노드가 단말노드(terminal node 또는 leaf node)인지를 판단한다. 상기 판단 결과 단말노드가 아닌 경우에는 단계 932에서 현재노드에서 질의 범위에 있는 자식노드(ChildNode)들을 큐에 넣는다. 한편, 상기 판단 결과 단말노드인 경우에는 단계 934에서 현재노드에서 질의 범위 안에 있는 단말노드의 엔트리들을 검색 결과 집합에 넣는다.In step 910, the root node is assigned a level at the first current level CurLevel, and the root node is inserted into the queue. Both the range query or the K-proximity query acquire a shared lock on the reinsert node before starting the search. This is to prevent changes to the reinsert node during the search. If a change is made to the reinsert node during the search, the reinsert entries are excluded from the search. This is to prevent this. Therefore, in step 912, a shared lock is requested to the reinsertion node to obtain this. In step 914, it is determined whether the queue is empty. If the queue is empty as a result of the determination of step 914, the lock is released and the result set is returned. If the queue is not empty as a result of the determination of step 914, one node is taken out of the queue as the current node in step 916 to obtain a shared latch. To match the level to the level of the current node, follow these steps: In step 918, the level of the current node is compared with the magnitude of the value of the current level (CurLevel). As a result of the comparison, if the level value of the current node is greater than the current level value, the process proceeds to step 928. If the level value is small, the level and current level at which the current reinsertion occurs at step 922 after assigning the level value of the current node to the current level at step 920 are performed. If the result of the determination is not the same, the process proceeds to step 928. If it is the same, the process proceeds to step 924. If the result is a shared latch, the entry of the reinsert node in the query range is performed to the result set if the current node is the terminal. Then queues and releases the shared latch on the reinsert node. In step 928, a shared latch is acquired at the current node. In step 930, it is determined whether the current node is a terminal node or a leaf node. If it is determined that the terminal node is not the terminal node, in step 932, the child nodes in the query range are enqueued at the current node. In the case where the determination result is a terminal node, in step 934, entries of the terminal node within the query range from the current node are included in the search result set.

단계 936에서는 현재노드(CurNode)의 공유래치를 해제하고, 다시 단계 914로 되돌아간다.In step 936, the shared latch of the current node (CurNode) is released, and the process returns to step 914 again.

큐에 자식노드의 엔트리와 부모노드의 로그일련번호를 함께 저장한 후 나중에 단계 932/934에서 엔트리를 삽입한 후 노드의 현재노드의 논리일련번호와 부모 노드의 로그일련번호를 비교하여 분할이 탐지되면 오른쪽 링크를 따라가도록 함으로써 상위로 반영되지 않은 분할에 포함되는 엔트리들도 탐색할 수 있다.After storing the child node's entry and the parent node's log serial number together in the queue, and later inserting an entry in steps 932/934, the partition is detected by comparing the node's current node's logical serial number and the parent node's log serial number. If you follow the right link, you can search for entries included in the partition that is not reflected above.

도 10은 삭제 연산(1000)의 동작을 설명하는 순서도이다.10 is a flowchart illustrating the operation of the delete operation 1000.

도 10을 참조하면, 상기 삭제 연산(1000)의 수행은 가장 먼저 단계 1010에서 삭제할 엔트리가 어느 단말 노드에 위치하는 지부터 파악한 후 배타래치를 획득한다. 삭제할 엔트리가 존재하는 단말노드가 파악되면 단계 1012에서 그 노드에서 삭제할 엔트리를 삭제한다. 단계 1014에서 단말노드의 삭제 후 나머지 엔트리들이 전체의 20% 이상이거나 비어있는지(empty)를 판단한다. 상기 판단 결과 20% 이상인 경우에는 단계 1016에서 트리잠금을 획득하고, 단계 1018에서 단말노드의 배타래치를 해제한다. 단계 1020에서 엔트리 삭제 후 빈 노드가 되는지 판단한다. 상기 판단 결과 빈 노드가 되는 경우에는 단계 1022에서 상위노드의 현재 노드에 대한 최소경계영역을 음수로 변환한다. 탐색 연산에서는 이 음수 최소경계영역을 갖는 엔트리는 탐색 대상에서 제외한다. 왜냐하면, 비어있는 노드를 탐색하는 것을 방지하기 위함이다. 삽입 연산의 경우에는 단말노드찾기(FindNode) 연산(400)에서 음수 최소경계영역의 경우에는 양수로 바꾸어 새로운 엔트리가 삽입될 가능성이 있는 노드로 고려한다. 이렇게 하여 비어 있는 노드가 다시 사용될 수 있는 가능성을 주게 된다.Referring to FIG. 10, the performing of the delete operation 1000 first determines in which terminal node an entry to be deleted is located in step 1010, and then obtains an exclusive latch. If the terminal node in which the entry to be deleted exists is found, the entry to be deleted is deleted at step 1012. In step 1014, it is determined whether the remaining entries after the deletion of the terminal node are more than 20% or empty. If the determination result is 20% or more, the tree lock is acquired in step 1016, and the exclusive latch of the terminal node is released in step 1018. In step 1020, it is determined whether to become an empty node after deleting an entry. If the determination result is an empty node, in step 1022, the minimum boundary area for the current node of the upper node is converted to a negative number. The search operation excludes entries with this negative minimum boundary area from being searched. This is to prevent searching for empty nodes. In the case of the insert operation, in the find node operation 400, the negative minimum boundary area is changed to a positive value and considered as a node in which a new entry may be inserted. This gives the possibility that an empty node can be used again.

또한, 상기 단계 1014와 1020의 판단 결과 20% 이상 남는 경우에는 단계 1024에서 조상노드에 엔트리 삭제로 인해 변경된 최소경계영역을 반영한다. 단계 1026에서 트리잠금을 해제하고 삭제 연산을 종료한다.In addition, if more than 20% is left as a result of the determination of steps 1014 and 1020, the minimum boundary area changed due to deletion of an entry in the ancestor node is reflected in step 1024. In step 1026, the tree is unlocked and the delete operation ends.

상기 단계 1014의 판단 결과 20%이하가 남는 경우에는 최소경계영역 변경을 상위로 반영하지 않고 단계 1028에서 단말 노드에의 배타래치만 해제 후 종료한다.If less than 20% is left as a result of the determination of step 1014, only the exclusive latch to the terminal node is terminated in step 1028 without reflecting the change of the minimum boundary area as an upper level.

본 발명은 상기 실시예에 한정되지 않으며, 많은 변형이 본 발명의 사상 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 가능함은 물론이다.The present invention is not limited to the above embodiments, and many variations are possible by those skilled in the art within the spirit of the present invention.

상술한 바와 같이 본 발명에 따른 데이터베이스의 동시성 제어방법은 전역계수기로 로그일련번호를 사용하여 논리일련번호를 할당하는 방법을 사용함으로써 비단말 노드의 엔트리에 논리일련번호가 포함되어 저장 효율을 떨어뜨리는 문제를 방지한다.As described above, the method for controlling concurrency of a database according to the present invention uses a method of allocating a logical serial number using a log serial number as a global counter to reduce the storage efficiency by including a logical serial number in an entry of a non-terminal node. Prevent problems.

또한, 본 발명에 따른 데이터베이스의 동시성 제어방법은 래치와 잠금을 혼용하여 색인노드에 대한 잠금은 탐색연산에 전혀 영향을 미치지 않고, 탐색 연산이 수행될 때 접근하려는 노드에 공유모드의 래치만 획득하므로 노드에 대한 삽입 또는 삭제 연산의 잠금으로 인한 지연이 발생하지 않아 높은 탐색 성능을 제공할 수 있다.In addition, the concurrency control method of the database according to the present invention uses a combination of a latch and a lock, so that the lock on the index node has no influence on the search operation, and acquires only the latch of the shared mode to the node to be accessed when the search operation is performed. Since there is no delay caused by locking the insert or delete operation on the node, high search performance can be provided.

또한, 본 발명에 따른 데이터베이스의 동시성 제어방법은 재 삽입을 위하여 트리에서 삭제한 엔트리를 특정노드(재 삽입 노드)에 보관하고 탐색연산이 이를 참조할 수 있도록 해 준다.In addition, the method for controlling concurrency of a database according to the present invention keeps entries deleted from a tree for reinsertion in a specific node (reinsertion node) and allows the search operation to refer to them.

Claims (14)

데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어방법에 있어서,In the concurrency control method of a high dimensional index structure applied to a database, 큐에 루트 노드를 저장하는 단계;Storing the root node in a queue; 재 삽입 노드에 공유 잠금을 획득하는 단계;Obtaining a shared lock on the reinsert node; 큐가 비었는지를 판단하여 비어 있지 않으면 큐로부터 하나의 노드를 가져와서 현재 노드로 하고, 큐가 비어 있으면 재 삽입 노드에의 잠금을 해제하고 탐색을 종료하는 단계; 및Determining whether the queue is empty and taking one node from the queue as the current node if it is not empty, and if the queue is empty, unlocking the reinsert node and ending the search; And 현재 노드에서 공유 래치를 획득하고 질의 범위에 있는 하위 노드들을 선택한 후 큐에 넣고 상기 큐가 비어있는지 판단하는 단계부터 반복 수행하는 단계Acquiring a shared latch from the current node, selecting subnodes in the query range, placing the queue, and determining whether the queue is empty 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제1항에 있어서,The method of claim 1, 재 삽입 노드에 있는 질의 범위에 들어가는 엔트리들도 탐색하기 위해, 트리를 순회할 때 접근하고 있는 노드에 대한 레벨 정보를 유지하면서 레벨이 변할 때마다 현재 재삽입이 일어나고 있는 노드의 레벨과 같은지를 판단 후 같으면 재삽입 노드를 탐색하도록 하는 단계To traverse the tree to search for entries that fall within the query scope, determine whether the level is equal to the level of the node currently being reinserted as the level changes, while maintaining the level information about the node being accessed when traversing the tree. To search for reinsert nodes if same 를 더 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of the high-dimensional index structure further comprising. 제1항에 있어서,The method of claim 1, 하위 노드가 가지고 있는 로그일련번호로 된 논리일련번호가 상위노드에 저장되어 있는 로그일련번호로 된 예상 논리일련번호보다 큰지를 판단하여 상위로 반영되지 않은 분할이 탐지되면 이웃노드로 이동하면서 노드를 선택하는 단계It determines whether the logical serial number with the log serial number of the lower node is larger than the expected logical serial number with the log serial number stored in the parent node. Step to choose 를 더 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of the high-dimensional index structure further comprising. 제1항에 있어서,The method of claim 1, 레벨을 현재 노드와 일치시켜 항상 1개의 레벨에 있는 노드에만 공유 래치를 유지하도록 하는 단계Match the level to the current node so that the shared latch is always kept only on nodes at one level 를 더 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of the high-dimensional index structure further comprising. 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어방법에 있어서,In the concurrency control method of a high dimensional index structure applied to a database, 새로운 엔트리를 삽입할 단말노드를 찾는 단계;Finding a terminal node into which a new entry is to be inserted; 상기 찾은 단말노드에 엔트리 삽입시 넘침이 발생하는지 판단하는 단계;Determining whether an overflow occurs when an entry is inserted into the found terminal node; 상기 판단 결과, 넘침이 발생하면 트리잠금을 획득하고 상기 삽입할 단말노드의 노드 넘침을 처리한 후 트리 잠금을 해제하는 단계; 및As a result of the determination, when overflow occurs, acquiring a tree lock and processing a node overflow of the terminal node to be inserted, and then releasing the tree lock; And 상기 판단 결과, 넘침이 발생하지 않으면 상기 삽입할 단말노드에 새로운 엔트리를 삽입하고, 삽입으로 인해 최소경계영역이 변경되었는지를 확인하여 트리 잠금을 획득하고 변경을 상위로 전파한 후 트리 잠금을 해제하는 단계As a result of the determination, if no overflow occurs, a new entry is inserted into the terminal node to be inserted, and the tree boundary is obtained by checking whether the minimum boundary region has changed due to the insertion, propagating the change to a higher level, and releasing the tree lock. step 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제5항에 있어서,The method of claim 5, 상기 새로운 엔트리를 삽입할 단말노드를 찾는 단계는,Finding the terminal node to insert the new entry, 현재 노드의 자식 노드가 단말 노드인지 판단하는 단계;Determining whether a child node of the current node is a terminal node; 상기 판단 결과, 단말 노드이면 자식 노드에 대한 배타 잠금 및 배타 래치를 획득하는 단계;Acquiring an exclusive lock and an exclusive latch on the child node if it is a terminal node; 상기 판단 결과, 비단말 노드이면 상기 자식 노드에 공유 래치 및 공유 잠금을 획득하는 단계;Acquiring a shared latch and a shared lock on the child node if it is a non-terminal node; 자식 노드의 로그일련번호로 된 논리일련번호가 현재 노드의 로그일련번호로 된 예상 논리일련번호보다 큰지를 판단하는 단계;Determining whether the logical serial number as the log serial number of the child node is greater than the expected logical serial number as the log serial number of the current node; 상기 예상 논리일련번호보다 큰지 여부의 판단 결과, 크면 자식 노드에의 래치 및 잠금을 해제 후 자식 노드의 오른쪽 링크를 따라 가면서 보다 상위로 반영되지 않은 분할된 노드 중 적절한 노드를 선택한 후 래치 및 잠금을 획득하는 단계;As a result of determining whether it is larger than the expected logical serial number, if it is large, the latch and lock on the child node are released, and the right node of the child node is followed, and the appropriate node is selected among the divided nodes not reflected higher, and then latch and lock are performed. Obtaining; 상기 예상 논리일련번호보다 큰지 여부의 판단 결과, 크지 않으면 자식 노드가 단말 노드인지 판단하는 단계;Determining whether a child node is a terminal node if it is not greater than a result of the determination of whether it is greater than the expected logical serial number; 상기 자식 노드가 단말 노드인지 여부의 판단 결과, 단말 노드이면 루트 노드부터 상기 자식 노드까지의 경로를 저장하는 경로 스택과 자식 노드를 반환하는 단계; 및If it is determined that the child node is a terminal node, returning a path stack and a child node storing a path from a root node to the child node if the terminal node is a terminal node; And 상기 자식 노드가 단말 노드인지 여부의 판단 결과, 비단말 노드이면 자식 노드를 현재노드로 하고 상기 자식 노드가 단말 노드인지 판단하는 단계로 되돌아가 다시 수행하는 단계As a result of determining whether the child node is a terminal node, if the non-terminal node is a non-terminal node, returning to the step of determining whether the child node is the current node and performing the process again, and performing the step again. 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제5항에 있어서,The method of claim 5, 상기 노드 넘침을 처리하는 단계는,Processing the node overflow, 현재노드가 루트노드인지를 판단하는 단계;Determining whether the current node is a root node; 상기 현재노드가 루트노드인지 여부의 판단 결과, 루트노드이면 루트 분할을 수행하고 루트노드가 아니면 현재노드에 조건부 배타잠금을 요청하는 단계;As a result of determining whether the current node is a root node, performing a root split if the root node is requested and requesting conditional exclusive lock on the current node if the root node is not the root node; 상기 현재노드에 조건부 배타잠금을 요청한 결과 현재노드가 배타잠금을 획득했는지 판단하는 단계;Determining whether the current node has obtained the exclusive lock as a result of requesting the conditional exclusive lock on the current node; 상기 현재노드가 배타잠금을 획득했는지 여부의 판단 결과, 배타잠금을 획득했으면 재 삽입(Reinsert) 함수를 호출하는 단계; 및Calling a reinsert function if the current node acquires an exclusive lock as a result of determining whether the current node has obtained an exclusive lock; And 상기 현재노드가 배타잠금을 획득했는지 여부의 판단 결과, 배타잠금을 획득하지 못하면 분할(Split) 함수를 호출하는 단계Calling a split function if the current node does not acquire the exclusive lock as a result of determining whether the current node has obtained the exclusive lock; 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제7항에 있어서,The method of claim 7, wherein 상기 현재노드에 배타잠금을 획득하지 못해서 분할(Split) 함수를 호출하는 단계는,Calling a split function because the exclusive lock is not obtained at the current node may include: 경로 스택에서 현재노드의 부모노드를 읽어온 후, 부모노드에 분할된 엔트리를 삽입할 여유공간이 있는지를 판단하는 단계;Reading the parent node of the current node from the path stack and determining whether there is free space for inserting a divided entry in the parent node; 상기 부모노드에 분할된 엔트리를 삽입할 여유공간이 있는지 여부의 판단 결과, 여유공간이 없으면 부모노드를 현재노드로 설정한 후 상기 제7항의 현재노드가 루트노드인지를 판단하는 단계로 다시 되돌아간 후 다시 재삽입을 할 것인지 분할을 할 것인지를 결정하는 단계; 및As a result of determining whether there is free space for inserting the divided entry in the parent node, if there is no free space, the parent node is set as the current node and the process returns to the step of determining whether the current node of claim 7 is the root node. Determining whether to reinsert or split again after; And 상기 부모노드에 분할된 엔트리를 삽입할 여유공간이 있는지 여부의 판단 결과, 여유공간이 있으면 상기 부모노드에 상기 분할된 엔트리를 삽입하고 조상노드에 최소경계영역 변경을 반영한 후 넘침 처리를 종료하는 단계As a result of determining whether there is free space for inserting the divided entry in the parent node, if there is free space, inserting the divided entry in the parent node, reflecting the change of the minimum boundary area in the ancestor node, and ending the overflow process; 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제7항에 있어서,The method of claim 7, wherein 상기 현재노드에 배타잠금을 획득하여 재 삽입(Reinsert) 함수를 호출하는 단계는,Acquiring an exclusive lock on the current node and calling a reinsert function may include: 재 삽입노드에 배타잠금을 획득하는 단계;Obtaining an exclusive lock on the reinsert node; 재 삽입 엔트리를 현재노드에서 삭제한 후, 상기 삭제한 엔트리들을 재 삽입노드에 저장하는 단계;Deleting the reinsert entry from the current node and storing the deleted entries in the reinsert node; 상기 현재노드에서의 재삽입 엔트리 삭제로 인해 변경된 최소경계영역을 조상노드에 반영하는 최소경계영역 변경연산을 처리하는 함수를 호출하는 단계;Invoking a function for processing a minimum boundary region change operation that reflects a minimum boundary region changed in an ancestor node due to deletion of a reinsert entry in the current node; 상기 최소경계영역 변경연산을 처리한 후에 재 삽입 노드에 있는 엔트리들을 색인트리에 삽입하는 단계; 및Inserting entries in a reinsert node into an index tree after processing the minimum boundary change operation; And 재 삽입노드에 있는 모든 엔트리들을 색인트리에 삽입한 후에는 재 삽입 연산을 종료하고, 아직 삽입할 엔트리가 남은 경우에는 삽입할 적절한 노드를 찾아 상기 재삽입 노드에 있는 엔트리들을 색인 트리에 삽입하는 단계로 되돌아가 다시 수행하는 단계After all the entries in the reinsert node have been inserted into the index tree, the reinsert operation is terminated, and if there are still entries to insert, finds the appropriate node to insert and inserts the entries in the reinsert node into the index tree. To go back and perform again 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제9항에 있어서,The method of claim 9, 상기 재 삽입 엔트리를 현재노드에서 삭제한 후, 상기 삭제한 엔트리들을 재 삽입노드에 저장하는 단계는,After deleting the reinsert entry in the current node, storing the deleted entries in the reinsert node, 상기 현재노드에 상기 삭제된 엔트리 개수를 기록하는 단계를 더 포함하는 고차원 색인구조의 동시성 제어방법.And recording the number of deleted entries in the current node. 제9항에 있어서,The method of claim 9, 재 삽입노드에 있는 모든 엔트리들을 색인트리에 삽입한 후에는 재 삽입 연산을 종료하고, 아직 삽입할 엔트리가 남은 경우에는 삽입할 적절한 노드를 찾아 상기 재삽입 노드에 있는 엔트리들을 색인 트리에 삽입하는 단계로 되돌아가 다시 수행하는 단계는,After all the entries in the reinsert node have been inserted into the index tree, the reinsert operation is terminated, and if there are still entries to insert, finds the appropriate node to insert and inserts the entries in the reinsert node into the index tree. Returning to and performing again, 상기 삽입할 노드를 찾아 삽입하는 과정에서 삽입할 노드에 넘침이 발생하는지 판단하는 단계;Determining whether an overflow occurs in a node to be inserted in the process of finding and inserting the node to be inserted; 상기 삽입할 노드를 찾아 삽입하는 과정에서 삽입할 노드에 넘침이 발생하는지 여부의 판단 결과, 넘침이 발생한 때에는 상기 삽입할 노드를 분할(SplitAll)하는 연산을 호출하는 단계;Invoking an operation to split the node to be inserted when overflow occurs, as a result of determining whether the node to be inserted is overflowed in the process of finding and inserting the node to be inserted; 상기 삽입할 노드를 찾아 삽입하는 과정에서 삽입할 노드에 넘침이 발생하는지 여부의 판단 결과, 넘침이 발생하지 않은 경우에는 상기 삽입할 노드에 재 삽입 노드에 저장된 엔트리를 삽입한 후 상기 삽입할 노드의 최소경계영역(MBR)의 변경이 있는 경우에 상기 제9항의 현재노드의 변경된 최소경계영역을 조상노드에 반영하는 최소경계영역 변경연산을 처리하는 함수를 호출하는 단계로 되돌아가 다시 수행하는 단계As a result of determining whether or not overflow occurs in the node to be inserted in the process of finding and inserting the node to be inserted, if no overflow occurs, an entry stored in the reinsert node is inserted into the node to be inserted, and then If there is a change in the minimum boundary region (MBR), returning to the step of calling a function for processing the minimum boundary region change operation that reflects the changed minimum boundary region of the current node of claim 9 to the ancestor node, and then performs the process again. 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 제7항 또는 제8항에 있어서,The method according to claim 7 or 8, 상기 현재노드가 배타잠금을 획득했는지 여부의 판단 결과, 배타잠금을 획득하지 못하면 분할(Split) 함수를 호출하는 단계는,If the current node does not acquire the exclusive lock as a result of determining whether the exclusive lock has been acquired, calling the split function may include: 새로운 노드를 하나 할당하여 새로운 노드에 배타래치를 획득하는 단계;Allocating a new node to obtain exclusive latch on the new node; 상기 새로운 노드가 단말노드인지 판단하는 단계;Determining whether the new node is a terminal node; 상기 새로운 노드가 단말노드인지 여부의 판단 결과, 새로운 노드가 단말노드이면 새로운 노드에 배타잠금을 획득하는 단계;As a result of determining whether the new node is a terminal node, if the new node is a terminal node, obtaining an exclusive lock on the new node; 분할될 현재노드에서 분할되는 새로운 노드로 옮길 엔트리를 선택하여 새로운 노드에 삽입하고 상기 옮긴 엔트리는 현재노드에서 삭제하는 단계;Selecting an entry to be moved from the current node to be split to a new node to be split, inserting the entry into the new node and deleting the moved entry from the current node; 현재노드의 노드일련번호를 새로운 노드의 노드일련번호에 할당하고, 현재 노드의 노드 일련 번호에는 새로 할당된 노드의 로그 일련 번호로 할당하는 단계; 및Assigning the node serial number of the current node to the node serial number of the new node, and assigning the node serial number of the current node to the log serial number of the newly assigned node; And 현재노드 및 새로운 노드의 배타래치와 배타잠금을 해제한 후에 분할 연산을 종료하는 단계Terminating the partitioning operation after releasing exclusive latch and exclusive locking of the current node and the new node. 를 포함하는 고차원 색인구조의 동시성 제어방법.Concurrency control method of a high-dimensional index structure comprising a. 프로세서를 구비한 데이터베이스 시스템에,In a database system with a processor, 큐에 루트 노드를 저장하는 기능;Storing the root node in a queue; 재 삽입 노드에 공유 잠금을 획득하는 기능;Obtaining a shared lock on the reinsert node; 큐가 비었는지를 판단하여 비어 있지 않으면 큐로부터 하나의 노드를 가져와서 현재 노드로 하고, 큐가 비어 있으면 재 삽입 노드에의 잠금을 해제하고 탐색을 종료하는 기능; 및Determining whether the queue is empty and taking one node from the queue as the current node if it is not empty, and if the queue is empty, unlocking the reinsert node and ending the search; And 현재 노드에서 공유 래치를 획득하고 질의 범위에 있는 하위 노드들을 선택한 후 큐에 넣고 상기 큐가 비어있는지 판단하는 단계부터 반복 수행하는 기능Acquiring a shared latch from the current node, selecting subnodes in the query range, placing it in a queue, and repeatedly performing the step of determining whether the queue is empty 을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.A computer-readable recording medium having recorded thereon a program for realizing this. 프로세서를 구비한 데이터베이스 시스템에,In a database system with a processor, 새로운 엔트리를 삽입할 단말노드를 찾는 기능;Finding a terminal node into which a new entry is to be inserted; 상기 찾은 단말노드에 엔트리 삽입시 넘침이 발생하는지 판단하는 기능;Determining whether an overflow occurs when an entry is inserted into the found terminal node; 상기 판단 결과, 넘침이 발생하면 트리 잠금을 획득하고 상기 삽입할 단말노드의 노드 넘침을 처리한 후 트리 잠금을 해제하는 기능; 및A function of acquiring a tree lock and processing a node overflow of the terminal node to be inserted and releasing the tree lock when overflow occurs; And 상기 판단 결과, 넘침이 발생하지 않으면 상기 삽입할 단말노드에 새로운 엔트리를 삽입하고, 삽입으로 인해 최소 경계 영역이 변경되었는지를 확인하여 트리 잠금을 획득하고 변경을 상위로 전파한 후 트리 잠금을 해제하는 기능As a result of the determination, if no overflow occurs, a new entry is inserted into the terminal node to be inserted, and the tree boundary is obtained by checking whether the minimum boundary region has changed due to the insertion, propagating the change to the upper level, and then releasing the tree lock. function 을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.A computer-readable recording medium having recorded thereon a program for realizing this.
KR1020000008238A 1999-12-24 2000-02-21 A concurrency control method for high-dimensional index structures KR100349667B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000008238A KR100349667B1 (en) 1999-12-24 2000-02-21 A concurrency control method for high-dimensional index structures

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR19990062171 1999-12-24
KR1019990062171 1999-12-24
KR1020000008238A KR100349667B1 (en) 1999-12-24 2000-02-21 A concurrency control method for high-dimensional index structures

Publications (2)

Publication Number Publication Date
KR20010066737A KR20010066737A (en) 2001-07-11
KR100349667B1 true KR100349667B1 (en) 2002-08-23

Family

ID=26636545

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000008238A KR100349667B1 (en) 1999-12-24 2000-02-21 A concurrency control method for high-dimensional index structures

Country Status (1)

Country Link
KR (1) KR100349667B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100832222B1 (en) * 2001-06-09 2008-05-23 자프 아게 Cache-conscious concurrency control scheme for index structures in main-memory database systems
KR100709275B1 (en) * 2004-11-05 2007-04-19 인하대학교 산학협력단 A concurrency control method for non-blocking search operation based on r-tree
KR101665045B1 (en) * 2014-02-14 2016-10-12 울산과학기술원 Apparatus and method for saving data using multi-version based data structures that improves storage io performance

Also Published As

Publication number Publication date
KR20010066737A (en) 2001-07-11

Similar Documents

Publication Publication Date Title
CN109933570B (en) Metadata management method, system and medium
US4914569A (en) Method for concurrent record access, insertion, deletion and alteration using an index tree
US6792432B1 (en) Database system with methods providing high-concurrency access in B-Tree structures
EP0303231B1 (en) Method and device for enabling concurrent access of indexed sequential data files
CA2537411C (en) A database management system with efficient version control
US5430869A (en) System and method for restructuring a B-Tree
US5276872A (en) Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
US6751617B1 (en) Method, system, and data structures for implementing nested databases
US6144983A (en) Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system
JP2583010B2 (en) Method of maintaining consistency between local index table and global index table in multi-tier index structure
Lomet et al. Concurrency and recovery for index trees
JPH0887511A (en) Method and system for managing b-tree index
US6484172B1 (en) Concurrency control method for high-dimensional index structure using latch and lock
KR100289331B1 (en) Concurrency Control Method of High Dimensional Index Structures
US6647386B2 (en) Method, system, and program for reverse index scanning
CN114282074B (en) Database operation method, device, equipment and storage medium
US6571250B1 (en) Method and system for processing queries in a data processing system using index
KR100349667B1 (en) A concurrency control method for high-dimensional index structures
US7321898B1 (en) Locking mechanism for materialized views in a database system
Wang et al. The concurrent learned indexes for multicore data storage
WO2002010978A9 (en) Method, system and data structures for implementing nested databases
AU2001272863A1 (en) Method, system and data structures for implementing nested databases
US7565217B2 (en) Traversal of empty regions in a searchable data structure
KR100507782B1 (en) Database management system and the method of controlling consistency of system table in DBMS
Krishna et al. Using Cuckoo Filters to Improve Performance in Object Store-based Very Large Databases

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120730

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee