KR100289331B1 - 고차원 색인 구조의 동시성 제어 방법 - Google Patents

고차원 색인 구조의 동시성 제어 방법 Download PDF

Info

Publication number
KR100289331B1
KR100289331B1 KR1019980044943A KR19980044943A KR100289331B1 KR 100289331 B1 KR100289331 B1 KR 100289331B1 KR 1019980044943 A KR1019980044943 A KR 1019980044943A KR 19980044943 A KR19980044943 A KR 19980044943A KR 100289331 B1 KR100289331 B1 KR 100289331B1
Authority
KR
South Korea
Prior art keywords
node
result
determination
new
timestamp
Prior art date
Application number
KR1019980044943A
Other languages
English (en)
Other versions
KR20000027101A (ko
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 KR1019980044943A priority Critical patent/KR100289331B1/ko
Priority to US09/409,814 priority patent/US6480849B1/en
Publication of KR20000027101A publication Critical patent/KR20000027101A/ko
Application granted granted Critical
Publication of KR100289331B1 publication Critical patent/KR100289331B1/ko

Links

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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • 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
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

본 발명은 데이터베이스의 동시성 제어 방법에 관한 것이며, 특히, 노드의 용량이 초과하여 넘침(overflow)이 발생할 때에 노드 내의 일부 객체에 대한 재 삽입을 수행하는 고차원 색인 구조를 위한 동시성 제어 방법을 제공하는 데 그 목적이 있다.
본 발명에 따르면, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 뿌리 노드를 저장하고 있는 큐로부터 엔트리를 가져온 후에, 가져온 엔트리에 대한 객체를 선택하는 제 1 단계; 하위 노드가 가지고 있는 논리일련번호가 상위 노드에 저장되어 있는 예상논리일련번호보다 큰지를 판단하는 제 2 단계; 상기 제 2 단계의 판단 결과, 크면 하위 노드의 이웃 노드로 이동하면서 객체를 선택한 후에, 상기 제 2 단계부터 반복 수행하는 제 3 단계; 및 상기 제 3 단계의 판단 결과, 크지않으면 색인 트리에 대한 검색이 완료됨에 따라 재 삽입 테이블에 존재하는 하위 노드에 해당하는 레벨의 노드로부터 객체를 선택하는 제 4 단계를 포함하여 이루어진 동시성이 제어된 탐색 방법이 제공된다.

Description

고차원 색인 구조의 동시성 제어 방법
본 발명은 데이터베이스의 동시성 제어 방법에 관한 것이며, 특히, 노드의 용량이 초과하여 넘침(overflow)이 발생할 때에 노드 내의 일부 객체에 대한 재 삽입을 수행하는 고차원 색인 구조를 위한 동시성 제어 방법에 관한 것이다.
대부분의 색인 구조는 트리 형태로 표현된다(이하 색인 트리라 부른다). 색인 트리를 이루는 각 구성 요소는 노드라 부르며, 이들은 계층적인 구조로 색인 트리를 구성한다. 색인 트리는 객체의 삽입, 삭제 등의 연산을 통하여 구성되며, 삽입되는 객체는 트리 내의 노드에 일정한 규칙에 의해 삽입되게 된다.
그리고, 색인 트리 내의 각 노드에는 일정한 수만큼의 객체만을 삽입할 수 있으며, 용량 초과 시에 노드에 넘침(overflow)이 발생했다고 한다. 이때 넘침이 발생한 노드내의 일부 객체를 선택하여 이들을 하나씩 색인 트리 내에 재 삽입하여 성능을 향상시킬 수 있다.
한편, 종래의 색인 구조에 대한 동시성 제어 방법에 대한 연구로는 1차원 데이타를 대상으로 하는 B-트리에 대한 것이 주를 이루고 있으며, 고차원 데이터를 관리하는 색인 구조인 R-트리에 대한 동시성 제어 방법이 얼마 전부터 연구되기 시작했다. 이런 종래의 연구로부터 잠금 결합 기법보다는 링크 기법을 사용한 동시성 제어 방법이 그 성능 면에서 우수함이 입증되었다.
하지만, 종래에 연구된 링크 기법을 그대로 고차원 색인 구조에 적용하는 것은 색인 구조들간에 구조적 차이와 삽입 및 분할 방법의 차이로 인해 불가능 하다는 문제점이 있었다.
이하, 본 발명을 이해하는데 도움을 주기 위해 본 발명과 관련이 있는 기술에 대하여 간략하게 설명을 하도록 한다.
먼저, BLink-트리는 B-트리에 동시성 제어 기법을 추가하여 의미적 직렬성을 보장할 수 있도록 하는 색인 구조이다. 종래의 연구된 동시성 제어 기법들 중에 가장 대표적인 것이 잠금 결합 방법이다.
여기서 잠금 결합 방법이란 트리의 일관성을 보장하기 위해 부모 노드에 대한 잠금을 자식 노드에 대한 잠금을 얻을 때까지 유지하는 방법이다.
즉, 뿌리 노드에서부터 단말 노드 방향으로 잠금을 순차적으로 걸면서 트리를 탐색하는 하향식 잠금 방식이다. 상기 방법은 잠금이 입력/출력 연산 수행동안 유지된다는 점과 노드의 분할이나 삭제 연산 중에는 공유모드의 잠금을 해제할 수 없다는 문제점이 있었다.
상기 문제점을 해결하기 위해 링크 기법이 제안되었다. 잠금 결합에 의해 발생하는 잠금 충돌을 피하고, 이때 발생할 수 있는 분할로 인해 발생할 수 있는 잘못된 검색결과를 피하고자 하는 것이 상기 방법의 목적이었다. 그리고, 이를 위해 종래의 B-트리에 약간의 수정을 가했다.
노드에 우측연결(Rightlink)이라는 포인터를 두어 같은 레벨의 오른쪽에 있는 형제 노드를 가리킬 수 있도록 하는 우측연결고리(right link chain)를 형성한다. 즉, 노드가 분할되어 새로운 노드가 오른쪽에 생성될 때 종래의 노드는 이 새로운 노드를 지시하게 되고, 생성된 새로운 노드는 종래의 노드가 지시하던 노드를 지시하게 된다.
BLink-트리는 B-트리와 마찬가지로 색인 트리 각 레벨의 노드들이 노드의 가장 오른쪽에 있는 키 값 즉, 최대 키 값에 의해 항상 정렬되어있다. 그리고, 우측연결(Rightlink) 포인터를 통해 오른쪽으로 이동할 수 있었다. 그리고, 이런 특성 때문에 BLink-트리에서는 잠금 결합을 사용하지 않고도 자유롭게 탐색이 가능하다.
즉, 한 탐색 프로세스가 부모 노드를 검사하고, 해당 자식 노드로 내려갈 때 자식 노드가 분할이 된다면, 이 분할된 내용은 아직 부모 노드에 반영되기 전일 것이다. 탐색 프로세스는 이로 인한 오류를 방지하기 위해 그것이 찾고자 하는 키 값이 그 자식노드의 최대 키 값보다 큰지를 비교한다.
만일 크다면 분할이 발생했다고 판단을 하고 오른쪽 노드로 옮겨가서 다시 찾고자 하는 키 값과 그 노드의 최대 키 값을 비교한다. 이를 찾고자 하는 키 값이 그 노드의 최대 키 값보다 작거나 같을 때까지 반복한다. 마침내 찾고자 하는 키 값을 찾으면 다시 대응하는 자식노드로 내려가면서 탐색을 계속한다.
삽입 프로세스도 새로운 레코드를 삽입 하고자 하는 단말 노드를 찾을 때 위와 같은 방법을 사용할 수 있다.
상기 방법을 사용함으로써 탐색이나 삽입 연산 시 잠금 결합을 사용하지 않아도 되어 잠금 충돌을 효과적으로 줄일 수 있다. 또한, 상기 방법은 교착 상태가 발생하지 않는다는 장점도 가지고 있다.
RLink-트리는 종래의 R-트리에 BLink-트리의 동시성 제어 기법을 도입하여 R-트리에서 BLink-트리와 같은 효과적인 동시성 제어가 가능하도록 한 색인 구조이다.
B-트리와는 달리 R-트리의 노드들은 키 값에 의해서 정렬되지 않기 때문에 BLink-트리의 기법을 그대로 적용하는데는 문제가 있었다. BLink-트리에서는 간단히 키 값을 비교하여 하위 노드의 분할여부와 분할 시에 우측연결(RightLink)고리 검색을 언제 끝내는가를 알아낼 수 있지만 R-트리에서는 이것이 불가능하다는 문제점이 있었다.
그리고, BLink-트리에서 사용한 링크기법을 R-트리에 적용하기 위해 논리일련번호(LSN: Logical Sequence Number)를 도입한다. 이 논리일련번호를 사용하여 자식 노드가 분할 되었는지의 여부와 언제 우측연결(Rightlink)을 따라서 오른쪽 노드로 이동하는 것을 멈출 것인지를 판단한다.
논리일련번호는 그 이름에서 알 수 있듯이 시간에 따라서 증가하는 값이다.
논리일련번호를 추가함으로써 기존의 R-트리의 구조는 물론, 노드, 노드 내의 객체의 구조가 변경되었으며, 이로 인해 탐색 및 삽입 알고리즘이 변경되었다.
논리일련번호를 도입한 RLink-트리의 구조를 살펴보면 한 레벨의 모든 노드들은 우측연결(Rightlink)로 연결된 체인구조를 하고 있으며, 각 노드에는 색인 구조에서 유일한 값인 논리일련번호가 추가적으로 할당된다. 또한 각 노드내의 객체는 다음과 같이 구성되어있다. 노드의 최소경계영역 (MBR: Minimum Bounding Region -- 고차원 색인 구조에서 노드에 포함된 각 객체는 N 차원의 공간 벡터로 표현되며, 노드에 포함된 모든 객체를 포함할 수 있는 영역을 최소경계영역이라 한다), 자식 노드를 지시하는 포인터, 자식 노드가 가지고 있을 것으로 기대하는 예상논리일련번호(expected LSN) 이다.
그리고, 노드에는 오른쪽의 형제 노드를 가리키는 포인터가 추가되었다. (이후 본 발명을 설명하기 위하여 CIR-트리의 노드는 이상에서 설명한 구성 요소를 모두 포함하고 있다고 가정한다.)
노드가 분할되면 새로운 노드에 기존의 노드가 가지고 있던 논리일련번호를 할당하고 기존의 노드에는 새로운 논리일련번호를 할당한다. 따라서 탐색 과정에서 트리를 순회할 때 대응하는 자식 노드의 분할 여부를 이 논리일련번호를 가지고 판단 할 수 있다. 즉, 자식 노드의 논리일련번호와 그 자식 노드와 대응하는 상위 노드의 객체가 가지고 있는 예상논리일련번호를 비교함으로써 분할 여부를 판단 할 수 있다.
그리고, 비교 결과 예상논리일련번호보다 논리일련번호가 크면 노드가 분할된 것으로, 탐색은 우측연결고리를 따라 오른쪽으로 이동하면서 수행된다(예상논리일련번호와 같은 논리일련번호를 가진 노드를 만날 때까지 이동한다).
이런 방법을 통해 BLink-트리가 제공하는 높은 동시성 제어 성능을 R-트리에서도 얻을 수 있다.
하지만, RLink-트리에서는 완전히 잠금 결합을 피할 수 없었으며, 트리의 구조를 변경하는 연산을 수행할 때는 R-트리 계열의 구조적 특성상 트리의 일관성을 보장하기 위해 잠금 결합을 해야 한다는 문제점이 있었다.
본 발명은 앞서 설명한 바와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 것으로서, 데이터베이스의 삽입, 삭제 시에 타임스탬프 순서화 방법을 사용하여 잠금 결합을 피할 수 있도록 하고, 데이터베이스의 탐색을 위해 재 삽입 테이블을 추가하여 데이터베이스 탐색 시에 객체가 재 삽입 되는 경우에도 다른 트랜잭션이 오류 없이 재 삽입되는 객체들을 검색할 수 있도록 하는 고차원 색인 구조의 동시성 제어 방법을 제공하는 데 그 목적이 있다.
도 1은 본 발명에 이용되는 재삽입 테이블의 구성에 대한 설명도이고,
도 2는 본 발명에 이용되는 재삽입 테이블의 엔트리를 삭제하는 시기에 대한 설명도이고,
도 3은 본 발명의 일실시예에 따른 타임스탬프를 이용한 고차원 색인 구조의 동시성 제어 방법의 개략적인 설명도이고,
도 4는 본 발명의 일실시예에 따른 동시성이 제어된 탐색 방법의 흐름도이고,
도 5는 도 4에 도시된 객체 선택 과정의 흐름도이고,
도 6은 본 발명의 일실시예에 동시성이 제어된 삽입 방법의 흐름도이고,
도 7은 도 6에 도시된 단말 노드 찾기 과정의 흐름도이고,
도 8은 도 6에 도시된 최소경계영역 조정 과정의 흐름도이고,
도 9는 도 6에 도시된 노드 넘침 처리 과정의 흐름도이고,
도 10은 도 9에 도시된 재 삽입 과정의 흐름도이고,
도 11은 도 9에 도시된 노드 분리 과정의 흐름도이고,
도 12는 도 11에 도시된 최소경계영역 삽입 과정의 흐름도.
앞서 설명한 바와 같은 목적을 달성하기 위한 본 발명에 따르면, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 뿌리 노드를 저장하고 있는 큐로부터 엔트리를 가져온 후에, 가져온 엔트리에 대한 객체를 선택하는 제 1 단계; 하위 노드가 가지고 있는 논리일련번호가 상위 노드에 저장되어 있는 예상논리일련번호보다 큰지를 판단하는 제 2 단계; 상기 제 2 단계의 판단 결과, 크면 하위 노드의 이웃 노드로 이동하면서 객체를 선택한 후에, 상기 제 2 단계부터 반복 수행하는 제 3 단계; 및 상기 제 3 단계의 판단 결과, 크지않으면 색인 트리에 대한 검색이 완료됨에 따라 재 삽입 테이블에 존재하는 하위 노드에 해당하는 레벨의 노드로부터 객체를 선택하는 제 4 단계를 포함하여 이루어진 동시성이 제어된 탐색 방법이 제공된다.
또한, 본 발명에 따르면, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 객체를 삽입할 단말노드를 찾은 후에, 찾은 삽입 노드에 객체 삽입이 가능한지를 판단하는 제 1 단계; 상기 제 1 단계의 판단 결과, 객체 삽입이 가능하면 삽입 노드에 객체를 삽입한 후에, 최소경계영역을 조정하는 제 2 단계; 및 상기 제 1 단계의 판단 결과, 객체 삽입이 가능하지 않으면 삽입 노드의 노드 넘침을 처리하는 제 3 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법이 제공된다.
또한, 본 발명에 따르면, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 삭제할 객체가 있는 단말노드를 찾는 제 1 단계; 및 단말노드에서 객체를 삭제한 후에, 노드의 변경 내용을 상위 노드에 반영하는 제 2 단계를 포함하여 이루어진 동시성이 제어된 삭제 방법이 제공된다.
또한, 본 발명에 따르면, 컴퓨터에, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 뿌리 노드를 저장하고 있는 큐로부터 엔트리를 가져온 후에, 가져온 엔트리에 대한 객체를 선택하는 제 1 단계; 하위 노드가 가지고 있는 논리일련번호가 상위 노드에 저장되어 있는 예상논리일련번호보다 큰지를 판단하는 제 2 단계; 상기 제 2 단계의 판단 결과, 크면 하위 노드의 이웃 노드로 이동하면서 객체를 선택한 후에, 상기 제 2 단계부터 반복 수행하는 제 3 단계; 및상기 제 3 단계의 판단 결과, 작으면 재 삽입 테이블에 존재하는 하위 노드에 해당하는 레벨의 노드로부터 객체를 선택하는 제 4 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
또한, 본 발명에 따르면, 컴퓨터에, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 객체를 삽입할 단말노드를 찾은 후에, 찾은 삽입 노드에 객체 삽입이 가능한지를 판단하는 제 1 단계; 상기 제 1 단계의 판단 결과, 객체 삽입이 가능하면 삽입 노드에 객체를 삽입한 후에, 최소경계영역을 조정하는 제 2 단계; 및 상기 제 1 단계의 판단 결과, 객체 삽입이 가능하지 않으면 삽입 노드의 노드 넘침을 처리하는 제 3 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
또한, 본 발명에 따르면, 컴퓨터에, 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서, 삭제할 객체가 있는 단말노드를 찾는 제 1 단계; 및 단말노드에서 객체를 삭제한 후에, 노드의 변경 내용을 상위 노드에 반영하는 제 2 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
아래에서, 본 발명에 따른 고차원 색인 구조의 동시성 제어 방법의 양호한 실시예를 첨부한 도면을 참조로 하여 상세히 설명하겠다.
최근 제안되고 있는 고차원 색인 구조(R*-트리, SS-트리, TV-트리, X-트리, CIR-트리)들은 모두 성능을 향상시키기 위해 노드의 넘침 시 그 노드에 포함된 객체의 일부를 선택하여 하나씩 색인 트리에 재 삽입한다. 이때 재 삽입을 위해 선택된 객체들은 사실상 색인 트리에서 삭제된 것이며, 재 삽입 중에 있는 객체들은 탐색을 할 수 없게 된다. 일반적으로 재 삽입 시간은 매우 긴 시간이며 재 삽입되는 객체들을 이 시간 동안에 탐색 할 수 없게 된다면 심각한 탐색 오류를 발생시킬 것이다.
본 발명은 고차원 색인 구조에 대한 효과적인 동시성 제어 방법에 대한 것으로, 재 삽입 연산 중에도 재 삽입되는 객체에 대한 탐색이 가능하도록 하기 위해 재 삽입을 위해 삭제한 객체들을 재 삽입 테이블이라는 자료구조에 보관, 관리하여 탐색자들이 이 테이블에 대해 탐색을 할 수 있게 한다.
본 발명에서는 RLink-트리에서 사용하였던 링크기법을 도입한다. RLink-트리에서 링크 기법을 도입한 이유는 잠금 결합을 수행함으로 해서 발생할 수 있는 동시성의 저하를 피해 보자는 것이다. 하지만, RLink-트리에서는 완전히 잠금 결합을 피할 수 없었다. 트리의 구조를 변경하는 연산을 수행할 때는 R-트리 계열의 구조적 특성상 트리의 일관성을 보장하기 위해 잠금 결합을 해야 한다. 즉, RLink-트리에서 잠금 결합을 사용한 이유는 트리의 구조를 변경하여야 하는 연산들의 상위 노드 접근 순서가 해당 트랜잭션 또는 프로세스들의 발생순서와 일치하지 않을 때 트리의 일관성을 해칠 가능성이 있기 때문이었다 (본 발명서에서 프로세스와 트랜잭션은 서로 대치 가능한 단어로 사용함).
본 발명에서는 타임 스탬프 순서화 방법을 사용하여 트랜잭션들 간의 실행 순서를 정해주어 이런 문제를 해결하고 잠금 결합을 하지 않는다.
이하의 설명에서는 본 발명에서 발명한 동시성 제어 방법을 CIR-트리에 적용시켜 설명한다. 참고로 이 동시성 제어 알고리즘은 R*-트리, SS-트리, TV-트리, X-트리에 약간의 수정으로 적용이 가능하다.
먼저, 재삽입시 재삽입되는 객체에 대하여도 탐색이 가능한 동시성 제어 방법을 살펴보도록 한다.
CIR-트리를 포함한 고차원 색인 구조에서의 재 삽입 연산은 트리의 균형을 조절할 뿐 아니라 보다 군집화된 객체들을 노드에 포함시킴으로써 검색 효율을 향상시킬 수 있다. 그러나, 재 삽입 연산 시에는 선택된 객체들에 대한 정보를 색인 트리에서 삭제하여야 된다. 이렇게 되면 다른 탐색연산은 재 삽입 중인 객체들에 대한 탐색을 거의 할 수 없게되어 정확한 탐색을 보장할 수 없게 된다.
본 발명에서는 재 삽입 중에도 정확한 탐색 연산이 가능하도록 보장한다. 이를 위해 본 발명에서는 재 삽입 테이블을 사용한다. 재 삽입 테이블은 다른 프로세스들이 참조할 수 있도록 공유 메모리 상에 위치시킨다.
도면에서, 도 1은 본 발명에 이용되는 재 삽입 테이블의 구성에 대한 설명도이다.
도면에서, 레벨 3의 재 삽입 대상 노드는 A, B이며, 레벨 1의 재 삽입 대상 노드는 C이며, 이를 근거로 하여 재삽입 테이블을 작성하면 다음 (표 1)과 같다.
레 벨 엔트리 엔트리
4
3 (MBR, TB) (MBR, TA)
2
1 (MBR, TC)
상기(표 1)에서 알 수 있는 바와 같이 노드 A에서 재 삽입을 위하여 삭제된 객체는 임시노드 TA에 저장되며, 노드 B에서 재 삽입을 위하여 삭제된 객체는 임시노드 TB에 저장되고, 노드 C에서 재 삽입을 위하여 삭제된 객체는 임시노드 TC에 저장된다.
그리고, 어떤 노드에 넘침이 발생하여 재 삽입 연산을 수행할 때는 다음과 같은 과정을 거친다.
먼저 그 노드가 포함하고 있는 객체 중 40%를 CIR-트리에서 제안된 방법에 따라 선택한다. 노드에 남아 있는 객체들에 대한 최소경계영역을 (MBR: Minimum Bounding Region) 계산하고 이를 상위 노드에 반영한다. (고차원 색인 구조에서 노드에 포함된 각 객체는 N 차원의 공간 벡터로 표현되며, 노드에 포함된 모든 객체를 포함할 수 있는 영역을 최소경계영역이라 한다).
선택된 객체들을 재 삽입을 위해 임시 노드를 할당받아 그곳에 옮기고, 임시 노드에 포함된 객체들에 대한 최소경계영역을 계산한다. 계산된 최소경계영역과 임시 노드를 한 엔트리로 하여 이를 재 삽입 테이블에 기록한다. 이때 색인 트리에서의 레벨(level) 별로 엔트리가 재 삽입 테이블에 기록된다.
이후 임시 노드에서 객체를 하나씩 꺼내어 삽입 연산을 통해 색인 트리에 삽입을 한다. 이 과정에서 삽입에 성공한 객체를 임시 노드에서 삭제하지 않는데 그 이유는 이 객체를 삭제하게 되면 탐색 연산이 이 객체를 찾아낼 수 없는 경우가 발생할 수 있기 때문이다. 그러므로 임시 노드에 있는 모든 객체들은 재 삽입 연산이 끝날 때까지 삭제하지 않는다. 모든 객체에 대해 삽입이 끝나면, 테이블에 기록했던 엔트리 및 임시 노드를 삭제할 시기를 정해야한다. 그리고, 삭제 시기를 결정하고 이를 삭제하면 재 삽입 연산의 수행이 종료되게 된다.
재 삽입 테이블의 엔트리를 삭제하는 시기는 동시에 수행되던 탐색 연산에 따라 결정된다.
도면에서, 도 2는 본 발명에 이용되는 재삽입 테이블의 엔트리를 삭제하는 시기에 대한 설명도이다.
도면에서 S1, S2, ...는 각각 탐색 연산을 의미한다. 그리고, 이들 탐색 연산들은 재 삽입 연산 ReInsert1과 동시에 수행될 수 있다. 도면에서 S1은 ReInsert1이 시작되기 전에 종료되고, S2는 ReInsert1이 시작되기 전 시작해서 ReInsert1이 종료되기 전에 종료된다.
S3은 ReInsert1이 수행되는 중에 시작해서 종료된다. S4는 ReInsert1이 종료되기 전에 시작해서 ReInsert1이 종료된 후에 종료된다. 마지막으로 S5는 ReInsert1이 종료된 후에 시작된다. 여기서 ReInsert1 연산이 재 삽입 테이블에 저장해 놓은 엔트리를 사용하는 탐색연산은 S2, S3, S4 세 탐색연산이다. 따라서 ReInsert1이 재 삽입 테이블의 엔트리를 삭제하는 시기는 S4가 종료되는 시기가 적당하다. 이상의 설명을 간단히 줄여 보면 엔트리의 삭제 시기는 재 삽입 연산 중 또는 그전에 시작된 탐색 연산들 중 가장 마지막에 종료되는 탐색 연산의 종료 시점이다.
이하, 고차원 색인 구조의 동시성 제어 방법에 대해 상세히 설명하기로 한다.
RLink-트리에서 트리의 구조 변경이 요구되는 연산을 수행할 때 잠금 결합을 수행하는 이유는 트리의 일관성을 보장하기 위한 것이다. 즉, 어떤 노드에 대해 변경 연산을 수행한 프로세스가 그 보다 후에 동일한 노드에 대해 변경 연산을 수행한 프로세스보다 변경된 내용을 상위 노드에 늦게 반영하는 경우 트리의 일관성이 흐트러지기 때문이다. 이 문제를 해결하기 위해 본 발명에서는 타임스탬프 순서화 방법을 사용하여 트랜잭션들간의 순서를 정해준다.
도면에서, 도 3은 본 발명의 일실시예에 따른 타임스탬프를 이용한 고차원 색인 구조의 동시성 제어 방법의 개략적인 설명도이다.
도면에 도시된 바와 같이, 트랜잭션에 대한 타임스탬프의 할당은 어떤 노드의 최소경계영역 정보가 변경되어 이를 상위 노드에 반영하거나, 노드의 분할이 발생할 경우에만 이루어진다. 이 때 각 트랜잭션에 타임스탬프 값을 할당하여 노드의 접근순서를 정한다.
도 3의 (a)는 동일한 노드의 동일 객체를 통해서 하위 노드에 접근한 삽입 연산을 수행하는 두 개의 프로세스 P1과 P2에 의해 최소경계영역의 변경 내용을 상위 노드에 반영하는 경우의 예를 든 것이다.
도면에서 P1과 P2는 모두 노드의 최소경계영역을 변경시키는 연산이며, P1이 P2보자 먼저 최소경계영역을 변경시키는 연산이다. 그리고 노드 A의 타임스탬프 테이블에는 [B, T1], [B, T2]가, 노드 X의 타임스탬프 데이블에는 [Y, T1],[Z,T2]가 저장된다.
한편, 상위 노드에 최소경계영역 정보를 반영하기 위해 잠금을 요청할 경우 상위 노드의 타임스탬프 테이블에 해당 트랜잭션의 타임스탬프와 노드 식별자를 저장한 후에 자신의 노드에 대한 잠금을 해제한다.
만약 상위노드에 잠금을 획득하기 위해 기다리는 트랜잭션이 자신과 같은 노드에서 발생되었다면 타임스탬프 값을 비교하여 자신의 타임스탬프 값이 작으면 노드에 잠금을 요청하고 등록한 타임스탬프와 노드 식별자를 제거한다.
만약 자신의 타임스탬프 값 보다 클 경우에는 일정시간 기다린 후 다시 작업을 재 수행한다.
도 3의 (b)는 상위 노드의 서로 다른 객체에 하위 노드들의 변경 내용을 반영하여야 하는 예를 설명한 것이다. 이런 경우에는 P1과 P2는 서로 독립적으로 수행되더라도 상관이 없다. 왜냐하면 이들은 타임스탬프 테이블 내에서 노드 식별자에 의해 서로 구분되기 때문이다. 따라서 P1과 P2는 도 3의 (a)에서와 같이 자신과 같은 노드에서 발생한 엔트리가 타임스탬프 테이블에 존재하는지를 조사하고 서로 독립적으로 수행될 수 있다.
추가적으로 도 3의 (c)에서는 타임스탬프를 사용하여 트랜잭션들의 순서를 정해 주어도 트리의 일관성이 보장되는 예를 보인다. 도 3의 (c)에서 상황 1은 프로세스 P1이 노드 C 에 객체 E9를 삽입한 후 그 노드에 대한 최소경계영역이 수정되어 이를 상위노드 A에 반영하기 위해 타임스탬프 T1로 등록하고 노드 C에 대한 쓰기 잠금을 해제하는 과정으로, 이미 노드 A를 방문한 탐색 연산도 노드 C의 객체를 정상적으로 탐색 알고리즘을 이용하여 탐색할 수 있다는 것을 보여준다.
도 3의 (c)에서 상황 2는 프로세스 P2가 노드 C에 대한 쓰기 잠금 획득 후 객체 E10을 삽입하여 분할이 발생하여 노드 A의 타임스탬프 테이블에 T4로 등록하였으나, P1이 이미 T1으로 등록한 상태이므로 P1이 노드 A에 대한 연산을 수행할 때까지 기다리는 상황이다.
즉, 먼저 동일한 노드에 대해 타임스탬프가 작은 프로세스의 갱신 연산을 우선적으로 반영하게 되므로 트리의 일관성이 유지된다. 이때 노드 C에 포함된 객체는 물론 분할된 노드에 존재하는 모든 객체들 또한 노드 C의 우측연결고리를 따라 이동하면서 탐색할 수 있다.
도 3의 (c)에서 상황 3은 프로세스 P1은 노드 A에 쓰기 잠금을 얻어 노드 C에 대한 변경 내용을 반영한 후 타임스탬프 테이블에서 타임스탬프 정보를 삭제하고, 프로세스 P2는 노드 A에 쓰기 잠금을 요청하여 노드를 갱신한다. 프로세스 P3은 노드 C에 쓰기 잠금을 획득하여 객체 E11을 삽입한 후, 최소경계영역 변경 내용을 상위 노드에 반영하기 위해 T6으로 등록하지만 [T4, C] 때문에 노드 A에 대한 쓰기 잠금을 요청하지 않고 대기하는 상황이다.
즉, 노드의 동일한 객체를 방문한 연산에 의해 발생된 변경을 상위 노드에 반영할 때는 타임스탬프를 비교함으로써 일관된 정보를 유지할 수 있게 된다. 상황 4는 프로세스 P3이 노드 A에 쓰기 잠금을 요청한 상태로 동일한 객체에 대한 갱신이 아니므로 일관성이 그대로 유지된다. 결과적으로 노드의 갱신이 일어날 수 있는 모든 경우에 대해서 탐색 연산이 정확하게 진행됨을 알 수 있다.
도면에서, 도 4는 본 발명의 일실시예에 따른 동시성이 제어된 탐색 방법의 흐름도이다.
본 탐색 방법에서는 넓이 우선 탐색(breadth first search)을 위해 큐 (queue) 구조를 사용하며, 여기에서 사용되는 큐를 PQ(PathQueue)로 정의한다. 또한 본 탐색 방법을 설명하기 위하여 아래와 같이 용어를 정의한다.
- InsertQ: 큐에 노드 정보를 (노드의 주소, 예상논리일련번호) 삽입한다.
- DeleteQ: 큐에서 하나의 엔트리를 삭제하여 주어진 변수에다 그 엔트리를 저장한다.
도면에 도시된 바와 같이, 본 발명의 일실시예에 따른 동시성이 제어된 탐색 방법은, 먼저, 탐색의 기준이 되는 뿌리 노드 (root node)를 큐에 삽입한 후에(401), 큐가 비었는지(empty)를 판단하여(402), 비었으면 종료하고, 비어 있지 않으면 큐로부터 하나의 엔트리를 가져오고 (DeleteQ)(403), 가져온 엔트리에 근거하여 객체를 선택한다(404). 여기서, 객체 선택 과정은 (도 6)에서 상세히 설명한다.
한편, 고차원의 색인 트리에서 노드는 넘침이 발생하면 분할 될 수 있다. 따라서, 큐에서 가져온 엔트리에 대하여 위에서 기술한 바와 같은 일련의 작업을 수행한 후에, 노드의 분할 여부를 조사하고 이에 대한 조치를 취하여야 한다. 노드의 분할 여부는 노드가 포함하고 있는 논리일련번호(logical sequence number)와 예상논리일련번호를 비교함으로써 알 수 있다.
즉, 논리일련번호보다 예상논리일련번호가 큰지를 판단하여(405), 판단 결과, 노드의 논리일련번호가 예상논리일련번호 보다 크다면, 이는 노드가 분할되었으나 아직 상위 노드에 분할된 내용이 반영되지 않은 노드에 접근하고 있음을 의미함으로, 이때에는 논리일련번호와 예상논리일련번호가 동일할 때까지 노드의 우측연결고리(right link chain)를 따라가면서 이웃 노드로 이동하여(406), 질의 Q와의 겹침 또는 만족 여부에 따라 객체를 선택한 후에(407), 논리일련번호보다 예상논리일련번호가 큰지를 판단하는 과정(405)부터 반복 수행한다.
한편, 판단 결과, 논리일련번호가 예상논리일련번호보다 작으면 색인 트리의 한 레벨에 대한 검색이 완료되었는지를 판단하여(408), 검색이 완료되지 않았으면 큐가 비었는지를 판단하는 과정(402)부터 반복 수행하고, 검색이 완료 되었으면, 재 삽입 테이블의 엔트리를 조사하여, 동일 레벨에 대한 엔트리가 재 삽입 테이블에 존재하는지의 여부를 판단한다(409).
판단 결과, 재 삽입 테이블에 현재 레벨에 해당하는 노드가 없으면 큐가 비었는지를 판단하는 과정(402)부터 반복 수행하고, 재 삽입 테이블에 현재 레벨에 해당하는 노드가 있으면 재 삽입 테이블에 있는 모든 재삽입 노드에 대하여 객체를 선택하고(410), 큐가 비었는지를 판단하는 과정(402)부터 반복 수행한다.
상기 탐색 방법은 다음에 기술하는 노드의 갱신연산에 의해 발생되는 쓰기 잠금 획득 연산과는 충돌할 수 있으나, 그 외 다른 탐색 연산과는 충돌하지 않고 탐색을 수행할 수 있다.
도면에서, 도 5은 도 4에 도시된 객체 선택 과정의 흐름도이다.
도면에 도시된 바와 같이, 객체 선택 과정은, 먼저 노드 N에 대한 읽기 잠금을 획득한 후에(501), 단말 노드인지를 판단한다(501).
판단 결과, 단말 노드이면 그 노드에 포함된 모든 객체들 중 질의 Q를 만족시키는 객체들을 검색결과집합에 삽입한 후에(503), 노드 N에 대한 읽기 잠금을 해제하고 종료한다.
판단 결과, 단말 노드가 아니면, 노드 내에 포함된 모든 객체들을 질의 Q와 비교한다. 여기에서 노드에 포함된 각 객체는 최소경계영역과 자식 노드에 대한 주소 (pointer), 그리고 자식 노드에 대한 예상논리일련번호(expected logical sequence number)를 포함하고 있다. 각 객체가 질의 Q와 비교될 때는 객체의 최소경계영역을 가지고 비교되며, 이때 객체와 질의 Q와의 겹침 영역이 발생하면 그 객체가 가리키는 자식 노드의 정보를 (자식 노드의 주소, 예상논리일련번호) 큐에 삽입한 후에 (InsertQ)(504), 노드 N에 대한 읽기 잠금을 해제하고(505), 종료한다.
도면에서, 도 6은 본 발명의 일실시예에 동시성이 제어된 삽입 방법의 흐름도이다.
도면에 도시된 바와 같이, 본 발명의 일실시예에 따른 동시성이 제어된 삽입 방법은, 객체 삽입을 위해 가장 적당한 단말 노드를 찾고(601), 찾은 노드에 객체 e가 삽입 가능한지를 판단하여(602), 삽입 가능하면 찾은 노드에 객체 e를 삽입하고(603), 최소경계영역을 조정한 후에(604), 종료하며, 삽입이 가능하지 않으면 노드 넘침을 처리한 후에(605), 종료한다.
도면에서, 도 7은 도 6에 도시된 단말 노드 찾기 과정의 흐름도이다.
도면에 도시된 바와 같이, 단말 노드 찾기 과정은, 뿌리 노드로부터 가장 적절한 자식 노드를 선정하고, 선정된 자식 노드가 포함하는 객체들을 조사하고 다시 그 노드의 자식 노드를 선정하는 일련의 반복 작업을 통하여 결국 단말 노드가 선정되는 과정을 보여주고 있다. 본 과정을 통하여 뿌리 노드로부터 선정된 단말 노드에 이르기까지의 경로가 형성되게 되며, 객체의 삽입 후 색인 트리의 재구성 또는 변경 작업을 위해 이 경로에 대한 정보는 스택(PS: PathStack)에 저장된다.
단말 노드를 찾는 과정을 좀더 자세히 설명하면 다음과 같다. 먼저 조사할 노드에 대한 읽기 잠금을 획득하고, 노드에 포함된 모든 객체를 조사하여 객체 e가 삽입되기 가장 적절한 단말 노드를 포함하고 있는 서브 트리를 선정한다, 즉, 현재 노드의 자식 노드를 선정한다. 현재 노드의 분할 여부를 확인하고 노드의 분할이 발생했다면, 그 노드의 우측연결고리를 따라가면서 같은 작업을 반복한다. 이 과정에서 현재 선정된 자식 노드보다 더 적절한 자식 노드가 선정될 수 있으며, 만약에 더 적절한 것이 있다면 단말 노드 찾기는 그 자식 노드를 통하여 계속되게 된다.
자식 노드를 선정했으면, 현재의 노드에 대한 정보를 스택에 삽입하고, 그 노드에 대한 읽기 잠금을 해제한 후, 선정된 자식 노드로부터 단말 노드가 찾아질 때까지 동일한 과정을 반복 수행한다. 가장 적절한 자식 노드가 재 삽입 테이블에 있는 노드 중에도 존재할 수 있으나, 이때는 스택에 저장된 내용을 전부 비우고 그 노드에 있는 객체들의 재 삽입이 완료된 후 단말 노드 찾기를 다시 수행한다. 이런 과정을 통하여 마침내 단말 노드에 이를 수 있다. 그러나 단말 노드 자체도 분할 될 수 있으므로 일단 단말 노드가 선정되었으면 우측이웃노드의 존재 여부를 확인하여야 한다. 만약 있으면 이들 중 현재의 단말 노드보다 더 적절한 것이 있는지를 조사한다.
객체 e를 삽입시킬 가장 적절한 단말 노드가 선정되었으면 그 노드에 대한 쓰기 잠금을 획득하고, 그 노드에 객체 e를 삽입시킬 수 있는지의 여부를 조사한다. 즉, 현재 선정된 단말 노드에 객체 e를 저장시킬 수 있는지, 아니면 객체 e를 저장하면 그 노드에 넘침이 발생할 것인가를 조사한다. 만약 객체 e를 그 노드에 저장시킬 수 있다면, 노드에 객체를 저장한다. 새로운 객체가 어떤 노드에 삽입되면 그것으로 인하여 그 노드의 최소경계영역이 변경될 수 있다. 따라서 객체 e의 삽입 후 최소경계영역이 변경되었다면, 변경 내용을 MBR조정 함수를 통하여 상위 노드에 반영한다. 만약 노드에 넘침이 발생할 시에는 이에 대한 처리를 하여야하며 이는 노드넘침처리 함수를 통하여 설명하도록 한다.
이를 좀더 상세히 설명하면 다음과 같다.
먼저, 노드 N이 단말 노드인지를 판단하여(701), 단말 노드이면 노드 N에 대한 쓰기 잠금을 획득한 후에(702), 논리일련번호가 예상논리일련번호보다 큰지를 판단한다(703).
판단 결과, 작으면 종료하고, 크면 노드 N의 오른쪽 이웃 노드 n의 최소경계영역을 계산하고, n이 더 좋으면 노드 N에 대한 쓰기 잠금을 해제한 후에, n을 N으로 하고(704), 노드 N에 대한 쓰기 잠금을 획득하는 과정(702)부터 반복한다.
한편, 노드 N이 단말 노드인지의 판단 결과, 단말 노드가 아니면 노드 N에 대한 읽기 잠금을 획득한 후에(705), 노드 N에 포함된 객체 중에 가장 적절한 후보 그리고 현재의 후보 c보다 더 적절한 것을 객체 e가 삽입되기에 가장 좋은 장소로 한다(706).
이후에, 논리일련번호가 예상논리일련번호보다 큰지를 판단하여(707), 크면 노드 N에 대한 읽기 잠금을 해제하고, 노드 N의 오른쪽 이웃 노드를 N으로 한 후에, 노드 N에 대한 읽기 잠금을 획득하며(708), 노드 N에 포함된 객체 중에 가장 적절한 후보 그리고 현재의 후보 c보다 더 적절한 것을 객체 e가 삽입되기에 가장 좋은 장소로 하는 과정(706)부터 반복 수행한다.
한편, 논리일련번호가 예상논리일련번호보다 작으면 스택(방문한 노드의 저장소)에 노드 N을 저장한 후에(709), 노드 N에 대한 읽기 잠금을 해제한다(710).
이후에, 색인 트리의 현재 레벨에서 재삽입이 진행중이며, 재삽입 테이블에 있는 객체중 현재의 후보 c보다 더 적절한 것이 존재하는지를 판단한다(719).
판단 결과, 더 적절한 것이 존재하면 스택(방문한 노드의 저장소)의 내용을 전부 비운 후에(713), 재 삽입 종료를 감시하여(714), 종료여부를 판단한다(715).
판단 결과, 종료하지 않았으면 재 삽입 종료를 감시하는 과정(714)부터 반복 수행하고, 종료하였으면 노드 N이 단말 노드인지를 판단하는 과정(701)부터 반복한다.
한편, 색인 트리의 현재 레벨에서 재 삽입이 진행중이며, 재 삽입 테이블에 있는 객체중 현재의 후보 c보다 더 적절한 것이 존재하는지의 판단 결과, 존재하지 않으면 c가 가르키는 노드를 N으로 한 후에, 논리일련번호를 예상논리일련번호로 한 후에(712), 노드 N이 단말 노드인지를 판단하는 과정(701)부터 반복 수행한다.
도면에서, 도 8은 도 6에 도시된 최소경계영역 조정 과정의 흐름도이다.
도면에 도시된 바와 같이, 최소경계영역 조정 과정은, 새로운 객체를 어떤 노드 N에 삽입한 후에 최소경계영역의 변경 유무를 판단하기 위해 그 노드의 최소경계영역을 계산하여(801), 최소경계영역이 변경되었는지를 판단한다(802).
판단 결과, 변경되지 않았으면 노드 N에 대한 쓰기 잠금을 해제하고, 스택(방문한 노드의 저장소)를 비운 후에(803), 종료한다.
판단 결과, 최소경계영역의 변경이 생겼다면 다음과 같은 작업을 통하여 상위 노드에 변경 내용이 반영된다.
먼저, 새로운 타임스탬프 TS를 할당받고, 스택으로부터 노드 N의 상위 노드 p에 대한 정보를 가져온다 (상위 노드에 대한 정보는 단말 노드를 찾는 과정에서 스택 PS에 저장된다)(804).
TS와 노드 N에 대한 정보를 하나의 엔트리로 노드 p의 타임스탬프 테이블에 삽입하고, 노드 N에 대한 쓰기 잠금을 해제한다(805).
이후에, 노드 p의 타임스탬프 테이블에 노드 N에 대한 다른 엔트리가 존재하고 그 엔트리의 타임스탬프가 TS 보다 작은 것이 있는가를 판단한다(806).
판단 결과, 존재한다면 그들 엔트리에 대한 처리가 끝날 때까지 최소경계영역의 변경을 노드 p에 반영하지 않고 기다린 후에(807), 노드 p의 타임스탬프 테이블에 노드 N에 대한 다른 엔트리가 존재하고, 그 엔트리의 타임스탬프가 TS 보다 작은 것이 있는가를 판단하는 과정(806)부터 반복한다.
판단 결과, 존재하지 않으면, 노드 p에 대한 쓰기 잠금을 획득하고(808) 노드 N에 상응하는 객체가 노드 p에 존재하는지를 판단한다(809).
판단 결과, 없으면 노드 p의 타임스탬프 테이블에서 TS와 노드 N에 대한 정보를 삭제한 후에, 노드 p에 대한 쓰기 잠금을 해제하고, 노드 p의 이웃노드들을 조사하여 노드 N에 상응하는 객체를 포함하고 있는 노드 p를 선정한 후에, 그 노드의 타임스탬프 테이블에 TS와 노드 N에 대한 정보를 삽입하고(810), 노드 p의 타임스탬프 테이블에 노드 N에 대한 다른 엔트리가 존재하며 그 엔트리의 타임스탬프가 TS 보다 작은 것이 있는가를 판단하는 과정(806)부터 반복 수행한다.
판단 결과, 존재하면 노드 p에 계산된 최소경계영역을 반영하고, 노드 p의 타임스탬프 테이블에서 [TS, N]을 삭제한 후에(811), p가 뿌리노드인지를 판단한다(812).
판단 결과, 노드 p가 뿌리 노드이면 노드 p에 대한 쓰기 잠금을 해제하고(813) 종료하며, 노드 p가 뿌리 노드가 아니면 노드 p를 노드 N으로 한 후에(814), 노드 N에 대한 최소경계영역을 계산하는 과정(801)부터 반복 수행한다.
도면에서, 도 9는 도 6에 도시된 노드 넘침 처리 과정의 흐름도이다.
도면에 도시된 바와 같이, 노드 넘침 처리는, 크게 두 가지의 과정으로 분리될 수 있다. 즉, 노드 N이 뿌리노드 또는 재 삽입하는 객체에 의한 넘침인가를 판단하여(901), 새로운 객체를 삽입할 때 넘침이 발생했거나 노드가 뿌리 노드가 아닌 경우에는 재 삽입을 수행하고(902), 노드가 뿌리 노드이거나 재 삽입되는 객체에 의해 넘침이 발생한 경우에는 분리를 수행한다(903).
도면에서, 도 10은 도 9에 도시된 재 삽입 과정의 흐름도이다.
도면에 도시된 바와 같이, 도 9에 도시된 재 삽입 과정은, 먼저, 객체를 선택하기 위한 탐색을 통해 노드 N에 재 삽입할 40%의 객체를 선택한다(1001).
다음에, 임시 노드 T를 생성하고, 선택된 40%의 객체를 노드 N에서 삭제하여 노드 T에 저장한다(1002).
이후에, 노드 T에 대한 최소경계영역을 계산하고, 노드 T에 최소경계영역을 재 삽입 테이블에서 삭제한다(1003).
다음에, 최소경계영역을 조정하고(1004), 삽입 함수를 이용하여 노드 T에 있는 모든 객체를 색인 트리에 삽입한 후에(1005), 종료한다.
도면에서, 도 11은 도 9에 도시된 노드 분리 과정의 흐름도이다.
도면에 도시된 바와 같이, 도 9에 도시된 노드 분리 과정은, CIR-트리에서 제안된 분할 방법을 이용하여 최적의 분할을 구하는 것으로부터 시작된다(1101).
그리고, 단말노드가 아니며 수퍼노드로의 확장 조건을 만족하는지를 판단하여(1102), 분리되는 노드 N이 단말 노드가 아니고 수퍼노드로 확장하여야 하는 조건이 만족되면 노드를 분리하지 않고 수퍼노드로 확장한 후에(1103), 노드 N의 최소경계영역 변경 내용을 상위 노드에 최소경계영역(MBR) 조정 함수를 이용하여 반영한다(1104). (색인 트리에서 노드들의 크기는 일정하다. 그러나, 노드를 분할하여 비효율적인 색인 트리가 생성된다면 노드를 분할하지 않고 노드 자체의 크기를 확장하여 모든 객체를 확장된 노드에 수용한다. 이때 가변의 크기를 가지는 노드를 수퍼노드라하며, 수퍼노드로의 확장 조건은 CIR-트리에서 제안되었다.)
판단 결과, 노드 N이 단말 노드이거나 수퍼노드로의 확장 조건이 만족되지 않으면 새로운 노드 new를 생성한 후에, 노드 new에 대한 쓰기 잠금을 획득한다(1105).
다음에, 분할 방법에 의해 선택된 객체들을 노드 N에서 삭제하여 노드 new에 저장하며(1106), 노드 N의 논리일련번호를 노드 new의 논리일련번호에 할당하고 새로운 논리일련번호를 생성하여 노드 N의 논리일련번호로 할당한 후에, 노드 new를 노드 N의 오른쪽 이웃 노드로 연결시키고(1107), 노드 new에 대한 최소경계영역을 계산한다(1108).
이후에, 노드 N이 뿌리노드인지를 판단하여(1109), 노드 N이 뿌리노드이면 노드 N에 대한 최소경계영역을 계산하고, 새로운 뿌리노드 r을 생성 한 후에, 그 노드에 대한 쓰기 잠금을 획득한다(1110).
다음에, 노드 r에 노드 N과 노드 new에 대한 정보를 저장하고, 노드 r에 새로운 논리일련번호를 할당 한 후에(1111), 세 노드에 대한 쓰기 잠금을 해제한다(1112).
한편, 판단 결과, 노드 N이 뿌리 노드가 아니라면 노드 N의 최소경계영역 변경 내용을 상위 노드에 반영함은 물론 새로 생성된 노드 new에 대한 정보를 상위 노드에 저장하고 이를 또한 색인 트리에 반영하여야 한다(1113).
도면에서, 도 12는 도 11에 도시된 최소경계영역 삽입 과정의 흐름도이다.
도면에 도시된 바와 같이, 도 11에 도시된 최소경계영역 삽입 과정은, 먼저 새로운 타임스탬프 TS를 할당 받고 스택으로부터 노드 N의(도면에서는 N1으로 기술됨) 상위 노드 p에 대한 정보를 가져온다(1201).
다음에, TS와 노드 N, 그리고 TS와 노드 new에 (도면에서는 노드 N2로 기술됨) 대한 정보를 각각 하나의 엔트리로 노드 p의 타임스탬프 테이블에 삽입하고, 노드 N과 new에 대한 쓰기 잠금을 해제한다(1202).
이후에, 노드 p의 타임스탬프 테이블에 노드 N에 대한 다른 엔트리가 존재하고, 그 엔트리의 타임스탬프가 TS 보다 작은 것이 있는가를 판단한다(1203).
판단 결과, 존재한다면 그들 엔트리에 대한 처리가 끝날 때까지 노드 N과 new에 대한 정보를 노드 p에 반영하지 않고 기다린 후에(1204), 노드 p의 타임스탬프 테이블에 노드 N에 대한 다른 엔트리가 존재하고 그 엔트리의 타임스탬프가 TS 보다 작은 것이 있는가를 판단하는 과정(1203)부터 반복 수행한다.
판단 결과, 존재하지 않으면 노드 p에 대한 쓰기 잠금을 획득하고(1205), 노드 N에 상응하는 객체가 노드 p에 존재하는지를 판단한다(1206).
판단 결과, 없으면 TS와 노드 N, 그리고 TS와 노드 new에 대한 정보를 노드 p의 타임스탬프 테이블로부터 삭제한 후에, 노드 p에 대한 쓰기 잠금을 해제하고, 노드 p의 이웃노드들을 조사하여 노드 N에 상응하는 객체를 포함하고 있는 노드 p를 선정하여, 그 노드의 타임스탬프 테이블에 TS와 노드 N, 그리고 TS와 노드 new에 대한 정보를 삽입하고(1207), 노드 p의 타임스탬프 테이블에 노드 N에 대한 다른 엔트리가 존재하고 그 엔트리의 타임스탬프가 TS보다 작은 것이 있는가를 판단하는 과정(1203)부터 반복 수행한다.
판단 결과, 존재하면 변경된 최소경계영역을 선정된 노드 p에 반영하고, TS와 노드 N, 그리고 TS와 노드 new에 대한 정보를 노드 p의 타임스탬프 테이블로부터 삭제한다(1208)(노드 p에 대한 쓰기 잠금을 이미 획득했기 때문에 이들 엔트리를 삭제해도 직렬성을 보장한다).
다음에, 노드 new에 대한 정보를 삽입할 수 있는지를 새로운 객체를 색인 트리에 삽입하는 것과 같은 과정으로 판단한다(1209).
판단 결과, 삽입이 가능하면 노드 new에 대한 정보를 노드 p에 삽입하고(1211), 노드 p의 최소경계영역 변경 내용을 상위 노드에 최소경계영역(MBR)조정 함수를 이용하여 반영한다(1212).
판단 결과, 삽입이 가능하지 않으면 노드 넘침 처리 과정을 이용하여 노드 p의 넘침을 처리한다(1210).
한편, 노드에서 객체를 삭제하는 과정은 앞에서 설명한 함수들을 사용하여 구현이 가능하다. 먼저 단말 노드 찾기 과정을 통해 삭제할 객체가 있는 단말노드를 찾은 다음, 단말노드에서 해당 객체를 삭제하고 노드의 변경 내용을 상위 노드에 반영한다. 노드의 최소경계영역이 변경되었으면 최소경계영역(MBR)조정 함수를 이용하여 이를 상위 노드에 반영한다. 반면 노드에 저장되어 있는 객체의 수가 최소로 요구되는 수보다 적을 시는 현재 노드에 포함된 모든 객체를 재 삽입하고 현재의 노드는 삭제한다.
앞서 상세히 설명한 바와 같이 본 발명의 타임스탬프를 이용한 고차원 색인 구조의 동시성 제어 방법은 전혀 잠금 결합을 수행하지 않고서도 동시성 제어를 할 수 있는 기법을 제공하여 기존의 RLink-트리의 문제점을 개선하였으며, 또한 분할 시 재 삽입을 수행하는 고차원 색인 구조들에 적용할 수 있도록 재 삽입을 위해 삭제된 객체들에 대해서도 높은 정확도의 탐색을 수행 할 수 있는 방법을 얻을 수 있게 되는 효과가 있다.
이상에서 본 발명의 타임스탬프를 이용한 고차원 색인 구조의 동시성 제어 방법에 대한 기술사상을 첨부도면과 함께 서술하였지만 이는 본 발명의 가장 양호한 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술분야의 통상의 지식을 가진 자이면 누구나 본 발명의 기술사상의 범주를 이탈하지 않는 범위내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.

Claims (16)

  1. 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서,
    뿌리 노드를 저장하고 있는 큐로부터 엔트리를 가져온 후에, 가져온 엔트리에 대한 객체를 선택하는 제 1 단계;
    하위 노드가 가지고 있는 논리일련번호가 상위 노드에 저장되어 있는 예상논리일련번호보다 큰지를 판단하는 제 2 단계;
    상기 제 2 단계의 판단 결과, 크면 하위 노드의 이웃 노드로 이동하면서 객체를 선택한 후에, 상기 제 2 단계부터 반복 수행하는 제 3 단계; 및
    상기 제 3 단계의 판단 결과, 크지않으면 색인 트리에 대한 검색이 완료됨에 따라 재 삽입 테이블에 존재하는 하위 노드에 해당하는 레벨의 노드로부터 객체를 선택하는 제 4 단계를 포함하여 이루어진 동시성이 제어된 탐색 방법.
  2. 제 1 항에 있어서,
    상기 제 1 단계는,
    탐색의 기준이 되는 뿌리 노드를 큐에 삽입한 후에, 큐로부터 하나의 엔트리를 가져오는 제 5 단계;
    노드에 대한 읽기 잠금을 획득한 후에, 단말 노드인지를 판단하는 제 6 단계;
    상기 제 6 단계의 판단 결과, 단말 노드이면 노드에 포함된 객체 중에 질의를 만족하는 객체들을 검색 결과 집합에 삽입한 후에, 노드에 대한 읽기 잠금을 해제하는 제 7 단계; 및
    상기 제 6 단계의 판단 결과, 단말 노드가 아니면 노드에 포함된 객체 중에 질의와 겹침이 발생하는 객체를 선별하여, 선별된 객체들의 정보를 큐에 삽입한 후에, 노드에 대한 읽기 잠금을 해제하는 제 8 단계를 포함하여 이루어진 동시성이 제어된 탐색 방법.
  3. 제1 항 또는 제 2 항에 있어서,
    상기 제 4 단계는,
    색인 트리의 한 레벨에 대한 검색이 완료되었는지를 판단하는 제 9 단계;
    상기 제 9 단계의 판단 결과, 검색이 완료되지 않았으면 상기 제 1 단계의 큐로부터 엔트리를 가져오는 과정부터 반복 수행하는 제 10 단계;
    상기 제 9 단계의 판단 결과, 검색이 완료되었으면 재 삽입 테이블에 탐색 레벨에 해당하는 노드가 있는지를 판단하는 제 11 단계;
    상기 제 11 단계의 판단 결과, 해당하는 노드가 없으면 상기 제 1 단계의 큐로부터 엔트리를 가져오는 과정부터 반복 수행하는 제 12 단계; 및
    상기 제 11 단계의 판단 결과, 해당하는 노드가 있으면 재 삽입 테이블에 있는 재 삽입 노드에 대하여 객체를 선택하는 제 13 단계를 포함하여 이루어진 동시성이 제어된 탐색 방법.
  4. 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서,
    객체를 삽입할 단말노드를 찾은 후에, 찾은 삽입 노드에 객체 삽입이 가능한지를 판단하는 제 1 단계;
    상기 제 1 단계의 판단 결과, 객체 삽입이 가능하면 삽입 노드에 객체를 삽입한 후에, 최소경계영역을 조정하는 제 2 단계; 및
    상기 제 1 단계의 판단 결과, 객체 삽입이 가능하지 않으면 삽입 노드의 노드 넘침을 처리하는 제 3 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  5. 제 4 항에 있어서,
    상기 제 1 단계의 단말 노드를 찾는 과정은,
    노드가 단말노드인지를 판단하는 제 4 단계;
    상기 제 4 단계의 판단 결과, 단말노드이면 노드에 대한 쓰기 잠금을 획득한 후에, 논리일련번호가 예상논리일련번호보다 큰지를 판단하는 제 5 단계;
    상기 제 5 단계의 판단 결과, 큼에 따라 찾은 단말노드의 이웃 노드에 대한 최소경계영역을 계산한 후에, 삽입 노드로서 이웃노드가 적절함에 따라 찾은 단말노드에 대한 쓰기 잠금을 해제하는 제 6 단계;
    이웃 노드를 삽입 노드로 한 후에, 상기 제 5 단계부터 반복 수행하는 제 7 단계; 및
    상기 제 4 단계의 판단 결과, 단말노드가 아니면 찾은 노드의 하위 노드에서 단말 노드를 찾는 제 8 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  6. 제 5 항에 있어서,
    상기 제 8 단계의 단말 노드를 찾는 과정은,
    삽입 노드에 대한 읽기 잠금을 획득한 후에, 노드에 포함된 객체중에 삽입 후보를 선택하는 제 9 단계;
    선택된 삽입 후보의 논리일련번호가 예상논리일련번호보다 큰지를 판단하는 제 10 단계;
    상기 제 10 단계의 판단 결과, 크면 삽입 노드에 대한 읽기 잠금을 해제하는 제 11 단계;
    오른쪽 이웃 노드를 삽입 노드로 한 후에, 상기 제 9 단계의 노드에 포함된 객체중에 삽입 후보를 선택하는 과정부터 반복 수행하는 제 12 단계;
    상기 제 10 단계의 판단 결과, 작으면 스택에 삽입 노드에 대한 정보를 저장한 후에, 삽입 노드에 대한 읽기 잠금을 해제하는 제 13 단계;
    재삽입 테이블에 있는 객체중 삽입 후보보다 적절한 객체가 있는지를 판단하는 제 14 단계;
    상기 제 14 단계의 판단 결과, 있으면 스택을 비운 후에, 재 삽입이 종료되었는지를 감시하여, 종료됨에 따라 상기 제 9 단계부터 반복 수행하는 제 15 단계; 및
    상기 제 14 단계의 판단 결과, 없으면 삽입 후보 노드를 삽입 노드로 한 후에 논리일련번호를 예상논리일련번호로 하는 제 16 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  7. 제 6 항에 있어서,
    상기 제 2 단계의 최소경계영역을 조정하는 과정은,
    새로운 객체를 삽입 노드에 삽입한 후 최소경계영역을 계산하여, 최소경계영역이 변경되었는지를 판단하는 제 17 단계;
    상기 제 17 단계의 판단 결과, 변경되지 않았으면 삽입 노드에 대한 쓰기 잠금을 해제한 후에, 스택을 비우는 제 18 단계;
    상기 제 17 단계의 판단 결과, 변경되었으면 새로운 타임스탬프를 타임스탬프로 한 후에, 스택으로부터 하나의 상위 노드를 가져오는 제 19 단계;
    새로운 타임스탬프 정보와 노드 정보를 상위 노드의 타임스탬프 테이블에 추가한 후에, 삽입 노드에 대한 쓰기 잠금을 해제하는 제 20 단계;
    상위 노드의 타임스탬프 테이블에 삽입 노드에 대한 다른 엔트리가 존재함에 따라 엔트리의 타임스탬프가 새로운 타임스탬프보다 작은 엔트리가 존재하는 지를 판단하는 제 21 단계;
    상기 제 21 단계의 판단 결과, 존재하면 처리가 끝날 때까지 대기한 후에, 상기 제 21 단계부터 반복 수행하는 제 22 단계;
    상기 제 21 단계의 판단 결과, 존재하지 않으면 상위 노드에 대한 쓰기 잠금을 획득하여 상위 노드에 삽입 노드에 대응하는 객체가 존재하는 지를 판단하는 제 23 단계;
    상기 제 23 단계의 판단 결과, 존재하면 상위 노드에 계산된 최소경계영역을 반영한 후에, 상위 노드의 타임스탬프 테이블에서 새로운 타임스탬프와 노드 정보를 삭제하는 제 24 단계;
    상위 노드가 뿌리 노드인가를 판단하여, 뿌리노드이면 상위 노드에 대한 쓰기 잠금을 해제하며, 뿌리노드가 아니면 상위 노드를 삽입 노드로 한 후에 상기 제 17 단계부터 반복 수행하는 제 25 단계;
    상기 제 23 단계의 판단 결과, 존재하지 않으면 상위 노드에서 새로운 타임스탬프와 노드 정보를 삭제한 후에, 상위 노드에 대한 쓰기 잠금을 해제하는 제 26 단계; 및
    상위 노드의 이웃 노드를 상위 노드로 하고 새로운 타임스탬프와 노드 정보를 상위 노드에 추가한 후에, 상기 제 21 단계부터 반복 수행하는 제 27 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  8. 상기 제 7 항에 있어서,
    상기 제 3 단계의 노드 넘침 처리 과정은,
    삽입 노드가 뿌리노드인지를 판단하여, 뿌리노드이면 노드 분리를 수행하며, 뿌리노드가 아니면 재 삽입하는 객체에 의한 넘침인지를 판단하는 제 28 단계; 및
    상기 제 28 단계의 판단 결과, 객체에 의한 넘침이면 노드 분리를 수행하며, 객체에 의한 넘침이 아니면 재 삽입을 수행하는 제 29 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  9. 제 8 항에 있어서,
    제 28 단계의 노드 분리 과정은,
    최적의 분할을 구하여, 단말노드이며 수퍼노드로의 확장조건을 만족하는 지를 판단하는 제 30 단계;
    상기 제 30 단계의 판단 결과, 만족하면 삽입 노드를 수퍼 노드로 확장한 후에, 최소경계영역을 조정하는 제 31 단계;
    상기 제 30 단계의 판단 결과, 만족하지 않으면 새로운 노드를 생성하여 새로운 노드에 대한 쓰기 잠금을 획득하는 제 32 단계;
    분할에 의해 선택된 객체들을 노드에서 삭제하여 새로운 노드에 저장하는 제 33 단계;
    원래의 노드에 새로운 논리일련번호를 할당하며, 새로운 노드에 노드의 예상논리일련번호를 논리일련번호로 할당한 후에, 원래의 노드와 새로운 노드를 우측 연결하는 제 34 단계;
    새로운 노드의 최소경계영역을 계산한 후에, 원래의 노드가 뿌리노드인지를 판단하는 제 35 단계;
    상기 제 35 단계의 판단 결과, 뿌리노드이면 원래의 노드에 대한 최소경계영역을 계산하는 제 36 단계;
    새로운 뿌리노드를 생성하여 새로운 뿌리노드에 대한 쓰기 잠금을 획득하는 제 37 단계;
    새로운 뿌리노드에 원래의 노드와 새로운 노드에 대한 정보를 저장하며 새로운 논리일련번호를 뿌리노드의 예상논리일련번호로 할당한 후에, 쓰기 잠금을 해제하는 제 38 단계; 및
    상기 제 35 단계의 판단 결과, 뿌리노드가 아니면 최소경계영역을 삽입하는 제 39 단계를 포함하여 이루어진 동시성이 제어된 탐색 방법.
  10. 제 9 항에 있어서,
    상기 제 29 단계의 재 삽입 과정은,
    넘침이 발생한 노드에서 재 삽입할 객체를 선택하는 제 40 단계;
    임시 노드를 생성하여 선택된 객체를 넘침이 발생한 노드에서 삭제한 후에, 임시 노드에 저장하는 제 41 단계;
    임시 노드에 대한 최소경계영역을 계산하여 임시 노드 정보와 계산된 최소경계영역을 재 삽입 테이블에 삽입하는 제 42 단계; 및
    최소경계영역을 조정한 후에, 임시 노드에 있는 객체를 색인 트리에 삽입하는 제 43 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  11. 제 10 항에 있어서,
    제 39 단계의 최소경계영역을 삽입하는 과정은,
    새로운 타임스탬프를 할당 받은 후에, 스택으로부터 원래의 노드에 대한 상위 노드 정보를 가져오는 제 44 단계;
    원래의 노드의 노드 정보와 타임스탬프 및 새로운 노드의 노드 정보와 타임스탬프를 상위 노드의 타임스탬프 테이블에 저장하는 제 44 단계;
    원래의 노드와 새로운 노드에 대한 쓰기 잠금을 해제한 후에, 상위 노드의 타임스탬프 테이블에 원래의 노드에 대한 다른 엔트리가 존재하고 그 엔트리의 타임스탬프가 새로운 타임스탬프보다 작은 것이 존재하는지를 판단하는 제 45 단계;
    상기 제 45 단계의 판단 결과, 존재하면 처리가 끝날 때까지 기다린 후에, 상기 제 45 단계부터 반복 수행하는 제 46 단계;
    상기 제 45 단계의 판단 결과, 존재하지 않으면 상위 노드에 대한 쓰기 잠금을 획득한 후에, 원래 노드에 상응하는 객체가 상위 노드에 존재하는지를 판단하는 제 47 단계;
    상기 제 47 단계의 판단 결과, 존재하지 않으면 원래의 노드 정보와 타임스탬프 및 새로운 노드의 노드 정보와 타임스탬프를 삭제한 후에, 상위 노드에 대한 쓰기 잠금을 해제하는 제 48 단계;
    상위 노드의 이웃노드들을 조사하여 원래의 노드에 상응하는 객체를 포함하고 있는 상위 노드를 선정하여, 선정된 노드의 타임스탬프 테이블에 원래의 노드의 노드 정보와 타임스탬프 및 새로운 노드의 노드 정보와 타임스탬프를 삽입한 후에, 상기 제 45 단계부터 반복 수행하는 제 49 단계;
    상기 제 47 단계의 판단 결과, 존재하면 상위 노드에 원래의 노드의 최소경계영역을 반영한 후에, 상위 노드에서 원래의 노드의 노드 정보와 타임스탬프 및 새로운 노드의 노드 정보와 타임스탬프를 삭제하는 제 50 단계;
    상위 노드에 새로운 노드의 최소경계영역의 삽입이 가능한지를 판단하는 제 51 단계;
    상기 제 51 단계의 판단 결과, 삽입이 가능하면 상위 노드에 대한 새로운 노드의 노드 정보를 삽입한 후에 최소경계영역을 조정하는 제 52 단계; 및
    상기 제 51 단계의 판단 결과, 삽입이 가능하지 않으면 노드 넘침을 처리하는 제 53 단계를 포함하여 이루어진 동시성이 제어된 삽입 방법.
  12. 데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서,
    삭제할 객체가 있는 단말노드를 찾는 제 1 단계; 및
    단말노드에서 객체를 삭제한 후에, 노드의 변경 내용을 상위 노드에 반영하는 제2 단계를 포함하여 이루어진 동시성이 제어된 삭제 방법.
  13. 제 12 항에 있어서,
    상기 제 2 단계의 단말노드에서 객체를 삭제한 후에, 노드에 저장되어 있는 객체의 수가 최소로 요구되는 수보다 작은지를 검사하는 제 3 단계; 및
    상기 제 3 단계의 검사 결과, 작음에 따라 삭제할 객체가 있었던 단말노드에 포함된 모든 객체를 삭제하여 재 삽입을 수행한 후에, 삭제할 객체가 있었던 단말노드를 삭제하는 제 4 단계를 더 포함하여 이루어진 동시성이 제어된 삭제 방법.
  14. 컴퓨터에,
    데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서,
    뿌리 노드를 저장하고 있는 큐로부터 엔트리를 가져온 후에, 가져온 엔트리에 대한 객체를 선택하는 제 1 단계;
    하위 노드가 가지고 있는 논리일련번호가 상위 노드에 저장되어 있는 예상논리일련번호보다 큰지를 판단하는 제 2 단계;
    상기 제 2 단계의 판단 결과, 크면 하위 노드의 이웃 노드로 이동하면서 객체를 선택한 후에, 상기 제 2 단계부터 반복 수행하는 제 3 단계; 및
    상기 제 3 단계의 판단 결과, 작으면 재 삽입 테이블에 존재하는 하위 노드에 해당하는 레벨의 노드로부터 객체를 선택하는 제 4 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  15. 컴퓨터에,
    데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서,
    객체를 삽입할 단말노드를 찾은 후에, 찾은 삽입 노드에 객체 삽입이 가능한지를 판단하는 제 1 단계;
    상기 제 1 단계의 판단 결과, 객체 삽입이 가능하면 삽입 노드에 객체를 삽입한 후에, 최소경계영역을 조정하는 제 2 단계; 및
    상기 제 1 단계의 판단 결과, 객체 삽입이 가능하지 않으면 삽입 노드의 노드 넘침을 처리하는 제 3 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  16. 컴퓨터에,
    데이터베이스에 적용되는 고차원 색인 구조의 동시성 제어 방법에 있어서,
    삭제할 객체가 있는 단말노드를 찾는 제 1 단계; 및
    단말노드에서 객체를 삭제한 후에, 노드의 변경 내용을 상위 노드에 반영하는 제 2 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1019980044943A 1998-10-27 1998-10-27 고차원 색인 구조의 동시성 제어 방법 KR100289331B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019980044943A KR100289331B1 (ko) 1998-10-27 1998-10-27 고차원 색인 구조의 동시성 제어 방법
US09/409,814 US6480849B1 (en) 1998-10-27 1999-09-30 Efficient concurrency control method for high dimensional index structures

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980044943A KR100289331B1 (ko) 1998-10-27 1998-10-27 고차원 색인 구조의 동시성 제어 방법

Publications (2)

Publication Number Publication Date
KR20000027101A KR20000027101A (ko) 2000-05-15
KR100289331B1 true KR100289331B1 (ko) 2001-05-02

Family

ID=19555427

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980044943A KR100289331B1 (ko) 1998-10-27 1998-10-27 고차원 색인 구조의 동시성 제어 방법

Country Status (2)

Country Link
US (1) US6480849B1 (ko)
KR (1) KR100289331B1 (ko)

Families Citing this family (20)

* 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
US6952696B1 (en) * 2000-11-28 2005-10-04 Altera Corporation Data structure and method for sorting using heap-supernodes
JP2002230038A (ja) * 2001-02-02 2002-08-16 Hitachi Ltd データ表示方法
EP1262870A1 (en) * 2001-05-30 2002-12-04 STMicroelectronics Limited Use of an atomic swap instruction for a shared queue
US7124358B2 (en) * 2002-01-02 2006-10-17 International Business Machines Corporation Method for dynamically generating reference identifiers in structured information
WO2004006067A2 (en) * 2002-07-09 2004-01-15 Intelitrac, Inc. System and method for structuring data in a computer system
US6785674B2 (en) * 2003-01-17 2004-08-31 Intelitrac, Inc. System and method for structuring data in a computer system
US7412444B2 (en) * 2004-02-11 2008-08-12 Idx Systems Corporation Efficient indexing of hierarchical relational database records
US7539694B1 (en) 2005-02-04 2009-05-26 Marvell International Ltd. Concurrently searching and manipulating binary trees
CN101212326B (zh) * 2006-12-29 2011-01-12 上海贝尔阿尔卡特股份有限公司 一种在任意播组内对节点配置的方法和辅助方法及装置
US8935256B2 (en) * 2012-03-02 2015-01-13 Cleversafe, Inc. Expanding a hierarchical dispersed storage index
US10417209B1 (en) 2013-03-14 2019-09-17 Roger Lawrence Deran Concurrent index using copy on write
US20150186550A1 (en) * 2013-12-26 2015-07-02 Nandan MARATHE Append-Only B-Tree Cursor
KR101665045B1 (ko) * 2014-02-14 2016-10-12 울산과학기술원 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치
CN109426587B (zh) * 2017-08-25 2020-08-28 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置
US11093497B1 (en) * 2018-03-23 2021-08-17 Amazon Technologies, Inc. Nearest neighbor search as a service
US11055286B2 (en) 2018-03-23 2021-07-06 Amazon Technologies, Inc. Incremental updates for nearest neighbor search
KR102195836B1 (ko) * 2019-02-07 2020-12-28 주식회사 티맥스티베로 인덱스 관리 방법
CN111782659B (zh) * 2020-07-10 2023-10-17 东北大学 数据库索引创建方法、装置、计算机设备和存储介质
CN115174582B (zh) * 2022-09-06 2022-11-18 中国中金财富证券有限公司 数据调度方法及相关装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823310A (en) * 1987-08-10 1989-04-18 Wang Laboratories, Inc. Device for enabling concurrent access of indexed sequential data files
US5276872A (en) 1991-06-25 1994-01-04 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
GB9204450D0 (en) * 1992-03-02 1992-04-15 Ibm Concurrent access to indexed data files
JP3441807B2 (ja) 1994-09-19 2003-09-02 株式会社日立製作所 B木インデクスの管理方法およびシステム
SE510000C2 (sv) * 1997-07-21 1999-03-29 Ericsson Telefon Ab L M Struktur vid databas
US6073129A (en) * 1997-12-29 2000-06-06 Bull Hn Information Systems Inc. Method and apparatus for improving the performance of a database management system through a central cache mechanism

Also Published As

Publication number Publication date
US6480849B1 (en) 2002-11-12
KR20000027101A (ko) 2000-05-15

Similar Documents

Publication Publication Date Title
KR100289331B1 (ko) 고차원 색인 구조의 동시성 제어 방법
AU608872B2 (en) Device for enabling concurrent access of indexed sequential data files
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
KR930002331B1 (ko) 키 레코드를 페치, 삽입 및 삭제하는 방법
US4914569A (en) Method for concurrent record access, insertion, deletion and alteration using an index tree
US5261088A (en) Managing locality in space reuse in a shadow written B-tree via interior node free space list
Willard New trie data structures which support very fast search operations
JP3441807B2 (ja) B木インデクスの管理方法およびシステム
US5089952A (en) Method for allowing weak searchers to access pointer-connected data structures without locking
Lomet et al. Concurrency and recovery for index trees
US20090234802A1 (en) Coupled node tree splitting/conjoining method and program
Taniar et al. A taxonomy of indexing schemes for parallel database systems
US7634487B2 (en) System and method for index reorganization using partial index transfer in spatial data warehouse
US6484172B1 (en) Concurrency control method for high-dimensional index structure using latch and lock
KR100419575B1 (ko) 고차원 색인구조를 위한 벌크 로딩방법
US7539988B1 (en) System and method for deferred rebalancing of a tree data structure
US10558636B2 (en) Index page with latch-free access
JP2001282599A (ja) データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体
Soisalon-Soininen et al. Relaxed balancing in search trees
JPH08123713A (ja) データベース用ファイル格納管理システム
US7565217B2 (en) Traversal of empty regions in a searchable data structure
KR100349667B1 (ko) 고차원 색인구조의 동시성 제어방법
KR100289087B1 (ko) 비플러스트리에다수의키값을추가하기위한방법
KR100709275B1 (ko) 논 블록킹 검색연산을 위한 알-트리 기반의 동시성 제어방법
KR100447330B1 (ko) 부분잠금결합 기반의 다차원 색인구조를 위한 동시성제어방법

Legal Events

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

Payment date: 20130207

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20140206

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee