KR100289087B1 - 비플러스트리에다수의키값을추가하기위한방법 - Google Patents

비플러스트리에다수의키값을추가하기위한방법 Download PDF

Info

Publication number
KR100289087B1
KR100289087B1 KR1019970069711A KR19970069711A KR100289087B1 KR 100289087 B1 KR100289087 B1 KR 100289087B1 KR 1019970069711 A KR1019970069711 A KR 1019970069711A KR 19970069711 A KR19970069711 A KR 19970069711A KR 100289087 B1 KR100289087 B1 KR 100289087B1
Authority
KR
South Korea
Prior art keywords
tree
leaf
page
completed
entry
Prior art date
Application number
KR1019970069711A
Other languages
English (en)
Other versions
KR19990050579A (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 KR1019970069711A priority Critical patent/KR100289087B1/ko
Publication of KR19990050579A publication Critical patent/KR19990050579A/ko
Application granted granted Critical
Publication of KR100289087B1 publication Critical patent/KR100289087B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 비 플러스(B+) 트리에 최소한의 시간과 비용으로 다수의 키값을 추가하기 위하여 새로운 트리 구성시 최적의 성능을 보이는 비 플러스(B+) 트리 일괄 구성 기법을 응용하여 삽입되어질 키 값의 엔트리와 이미 존재하는 비 플러스(B+) 트리 리프노드의 키값의 엔트리를 병합하여 새로운 트리를 구성하는 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법을 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은, 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법에 있어서, 삽입되어질 키 값의 엔트리들을 정렬하는 제 1 단계; 상기 정렬된 상태에서 생성된 엔트리들을 각각 차례로 액세스하면서 엔트리 집합간의 병합 연산을 수행할 수 있도록 리프 단계의 페이지화 작업을 수행하는 제 2 단계; 상기 리프 단계의 페이지화 작업 수행 후에 페이지의 완성 여부를 확인하여 상기 완성된 페이지와 대응되는 엔트리를 상위 단계의 내부 페이지에 넘기고, 완성된 리프 페이지를 디스크에 기록하는 제 3 단계; 상기 상위 단계의 내부 페이지가 엔트리를 받아서 자신의 페이지화 작업을 상기 리프 페이지의 페이지화 작업과 유사하도록 반복적으로 수행하는 제 4 단계; 및 모든 리프노드의 페이지화가 완성되었는지를 확인하여 상기 페이지화 중이던 모든 상위 단계의 내부 페이지를 디스크에 기록하여 새로운 트리를 완성하는 제 5 단계를 포함한다.
4. 발명의 중요한 용도
본 발명은 비 플러스(B+) 트리에 다수의 키값을 추가하는 방법에 이용됨.

Description

비 플러스 트리에 다수의 키값을 추가하기 위한 방법{A NEW METOD FOR ADDING MULTIPLE KEYS INTO A-B-CPLS TREE}
본 발명은 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법에 관한 것이다.
일반적으로, 비 플러스(B+) 트리는 화일에 저장된 정보를 빠르게 검색하기 위한 인덱스 방법으로 널리 사용되고 있다. 정보 검색 분야나 웹 서버 등에서는 이미 인덱스를 가지고 있는 화일에 여러 개의 데이터를 한꺼번에 입력하거나 다른 화일을 병합하는 연산이 빈번하게 요구된다.
비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 종래의 기술에는 비 플러스(B+) 트리의 삽입기법을 반복적으로 적용하는 방법이 있다.
그러나, 상기 종래의 방법은 각 키값의 엔트리가 삽입되어질 리프노드를 찾기 위한 탐색에 따른 디스크 액세스와 트리의 균형을 유지하기 위한 노드의 분열 등의 디스크 액세스로 인하여 많은 시간과 비용이 소요되는 문제점이 있었다.
본 발명은, 상기한 바와 같은 문제점을 해결하기 위하여 안출된 것으로, 비 플러스(B+) 트리에 최소한의 시간과 비용으로 다수의 키값을 추가하기 위하여 새로운 트리 구성시 최적의 성능을 보이는 비 플러스(B+) 트리 일괄 구성 기법을 응용하여 삽입되어질 키 값의 엔트리와 이미 존재하는 비 플러스(B+) 트리 리프노드의 키값의 엔트리를 병합하여 새로운 트리를 구성할 수 있도록 하는 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법을 제공하는데 그 목적이 있다.
도 1 은 본 발명의 일실시예에 따른 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법의 흐름도.
도 2 는 상기 도 1 의 본 발명에 따른 비 플러스(B+) 트리에 다수의 키값을 추가하는 방법에 대한 수행 설명도.
* 도면의 주요 부분에 대한 부호의 설명
20 : 키값의 엔트리 21 : 정렬 결과
22 : 병합 23 : 페이지화 작업
24 : 리프노드 24 : 리프 단계
25 : 첫 번째 내부 단계 26 : 루트 내부 단계
상기 목적을 달성하기 위한 본 발명은, 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법에 있어서, 삽입되어질 키 값의 엔트리들을 정렬하는 제 1 단계; 상기 정렬된 상태에서 생성된 엔트리들을 각각 차례로 액세스하면서 엔트리 집합간의 병합 연산을 수행할 수 있도록 리프 단계의 페이지화 작업을 수행하는 제 2 단계; 상기 리프 단계의 페이지화 작업 수행 후에 페이지의 완성 여부를 확인하여 상기 완성된 페이지와 대응되는 엔트리를 상위 단계의 내부 페이지에 넘기고, 완성된 리프 페이지를 디스크에 기록하는 제 3 단계; 상기 상위 단계의 내부 페이지가 엔트리를 받아서 자신의 페이지화 작업을 상기 리프 페이지의 페이지화 작업과 유사하도록 반복적으로 수행하는 제 4 단계; 및 모든 리프노드의 페이지화가 완성되었는지를 확인하여 상기 페이지화 중이던 모든 상위 단계의 내부 페이지를 디스크에 기록하여 새로운 트리를 완성하는 제 5 단계를 포함하여 이루어지는 것을 특징으로 한다.
본 발명에 따른 새로운 삽입기법 전략(이하, 간단히 ″BULK_ADD 전략″이라 함)은 새로운 비 플러스(B+) 트리 구성에 최적의 성능을 보이는 비 플러스(B+) 트리 일괄구성 기법을 응용, 이미 존재하는 비 플러스(B+) 트리 리프노드의 키값 엔트리들과 삽입되어질 키값의 엔트리들을 병합하여 새로운 트리를 구성하는 것이다.
이는, 비 플러스(B+) 트리에 다수의 키값의 엔트리를 삽입하려 할 때 종래 비 플러스(B+) 트리 삽입 기법을 반복적으로 적용하면 각각의 키값 엔트리가 삽입되어질 리프노드를 찾기 위한 탐색 과정에서의 디스크 액세스와 트리의 균형을 유지하기 위해 노드의 분할 등으로 인한 디스크 액세스로 인해 많은 시간이 소요되기 때문이다.
″BULK_ADD″ 전략에서는 비 플러스(B+) 트리 일괄구성 기법을 응용, 이미 존재하는 비 플러스(B+) 트리의 키값의 엔트리들과 삽입되어질 키값의 엔트리들을 병합하여 새로운 트리를 구성함으로서, 최소한의 비용과 시간으로 비 플러스(B+) 트리에 다수의 키값 엔트리를 추가하는 것을 특징으로 한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 일실시예를 상세히 설명한다.
도 1 은 본 발명의 일실시예에 따른 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법의 흐름도이다.
도 1에 도시된 바와 같이, 먼저 삽입되어질 키 값의 엔트리들을 키 값의 순서로 정렬한다(10). 즉, 이미 존재하는 비 플러스(B+) 트리의 리프 노드들 내에는 종래의 키 값을 가지는 엔트리들이 이미 정렬된 상태로 존재하기 때문에, 리프 노드 내의 엔트리들과 삽입되어질 키 값의 엔트리들을 키 값의 순서로 정렬하는 과정(10)에서 생성된 엔트리들을 각각 차례로 액세스하면서 두 엔트리 집합간의 병합 연산을 수행함으로써, 리프 단계의 페이지화 작업을 수행한다(11). 여기서, 병합 연산을 수행하는 목적은 각각 정렬된 두 엔트리 집합을 전체적으로 정렬된 하나의 엔트리 집합으로 만들기 위한 것이다.
이어서, 하나의 페이지가 완성되었는지를 확인한다(12).
확인결과, 현재 페이지화 작업 중인 리프 페이지내에 엔트리들이 가득차지 않아 그 리프 페이지가 완성되지 않았으면 리프 노드를 읽고 삽입되어질 키 값의 엔트리와 병합하면서 리프 단계의 페이지화 작업을 수행하는 과정(11)으로 넘어가고, 완성되었으면 완성된 페이지와 대응되는 키 값의 엔트리를 상위 단계의 내부 페이지에 넘기고(13), 완성된 리프 페이지를 디스크에 기록한다(14).
그러면, 상위 단계의 내부 페이지는 이 엔트리를 받아서 자신의 페이지화 작업을 상기의 리프 페이지의 페이지화 작업과 유사한 형태로 반복적으로 수행한다(15). 이렇게 반복적으로 수행하다가 모든 리프 노드의 페이지화가 완성되었는지를 확인하여(16), 완성되지 않았으면 리프 노드를 읽고 삽입되어질 키 값의 엔트리와 병합하면서 리프 단계의 페이지화 작업을 수행하는 과정(11)부터 반복 수행하고, 완성되었으면 페이지화 중이던 모든 상위 단계의 내부 페이지를 디스크에 기록하여(17) 새로운 트리가 완성되도록 한다. 이때, 병행된 페이지화 작업 중 가장 상위 단계의 내부 페이지가 루트 페이지가 된다.
이러한 방식으로 새로운 트리를 구성하면 새로운 트리 구성에 필요한 수 만큼의 디스크 쓰기가 발생한다.
상기한 바와 같은 본 발명에 따른 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법을 상세히 설명하면 다음과 같다.
이미 존재하는 비 플러스(B+) 트리의 리프노드와 삽입되어질 다수의 키값의 엔트리를 병합하여 새로운 비 플러스(B+) 트리를 구성할 때에 종래의 비 플러스(B+) 트리의 삽입 기법을 반복적으로 적용하면 동일한 페이지를 여러 번 액세스하게 되는 오버헤드가 있다. 이는 삽입되어질 키값의 엔트리가 무작위 순으로 저장되어 있음으로 인하여 발생되는 현상이다. 이러한 디스크 액세스를 최소화하기 위하여 새로운 비 플러스(B+) 트리 구축시 디스크로부터 하나의 페이지를 액세스할 때 이곳에 저장되어야 할 키 값의 엔트리들을 모두 한꺼번에 저장하는 것이다.
이를 위해선 먼저 무작위 순으로 저장되어 있는 키값의 엔트리들을 논리적으로 인접한 키값의 엔트리와 물리적으로 인접하도록 재배치 과정을 수행해야 하는데 이때는 내부정렬과 원병합을 통한 외부정렬을 이용한다. 이때, 리프노드에 있는 키 값의 엔트리는 이미 키 값의 순서대로 정렬되어 있는 상태이므로 정렬할 필요가 없다.
도 2 는 상기 도 1 의 본 발명에 따른 비 플러스(B+) 트리에 다수의 키값을 추가하는 방법에 대한 수행 설명도이다.
도 2에 도시된 바와 같이, 삽입되어질 키값의 엔트리(20)와, 이를 정렬하여 재배치한 결과(21)와, 이를 병합하는 과정(22), 및 새로운 비 플러스(B+) 트리를 구성하기 위한 페이지화 작업을 나타내고 있다.
이제, 본 발명의 실시예에 따른 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법을 상세히 설명하면, 다음과 같다.
종래에 존재하던 비 플러스(B+) 트리의 리프 노드들(24)과 추가로 삽입되어질 데이터(20)가 존재한다. 먼저, 삽입되어질 데이터(20)를 상기 도 1의 삽입되어질 키 값의 엔트리들을 정렬하는 과정(10)과 같이 재배치하여 재배치 작업의 결과로 키 값의 순서로 정렬된 데이터(21)를 얻는다. 정렬된 삽입될 데이터(21)와 이미 존재하는 리프 노드(27)를 병합하면서 도 1의 리프 노드를 읽고 삽입되어질 키 값의 엔트리와 병합하면서 리프 단계의 페이지화 작업을 수행하는 과정(11)과 같이 리프 단계의 페이지화 작업을 수행한다. 이 작업은 병합의 결과로 생성되는 엔트리를 리프 페이지내에 차례로 넣다가 이 리프 페이지가 가득 차게 되어 페이지가 완성되는 경우에 이 페이지를 디스크에 쓰고, 그 완성된 페이지와 엔트리를 상위 단계의 내부 페이지에 넘기는 방식으로 진행한다. 디스크에 쓰여진 이 페이지는 비 플러스(B+) 트리의 리프 단계(24)를 구성하게 된다.
리프 단계의 바로 상위 단계에서는 리프 단계의 페이지화 작업에서 넘겨진 엔트리를 받아 이 단계의 페이지화 작업을 수행한다. 페이지화 작업은 리프 1단계의 페이지화 작업과 동일하게 수행된다. 즉, 리프 단계에서 넘겨지는 엔트리들을 페이지내에 차례로 넣다가 이 페이지가 가득 차게 되어 페이지가 완성되는 경우에 이 페이지를 디스크에 쓰고, 그 완성된 페이지와 대응되는 엔트리를 그 상위 단계의 내부 페이지에 넘기는 방식으로 진행된다. 디스크에 쓰여진 이 페이지는 비 플러스(B+) 트리의 리프 단계의 바로 상위 단계(25)를 구성하게 된다.
이 단계의 상위 단계에서도 마찬가지 방식으로 페이지화 작업이 진행되며, 이러한 작업은 비 플러스(B+) 트리의 루트 단계(26)에까지 재귀적으로 적용된다. 상기 도 1의 모든 리프노드 페이지화가 완성되었는지를 판단하는 과정(16)에서와 같이 모든 리프 노드의 페이지화가 완료되면, 페이지화 작업이 진행 중인 모든 상위 단계 페이지들을 디스크에 쓰고, 작업을 모두 종료한다. 이 결과, 종래의 키들과 추가된 키들을 모두 포함하는 비 플러스(B+) 트리(23)가 새롭게 생성되는 것이다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
상기와 같은 본 발명은, 정보검색시스템이나 웹 서버 등에서 새롭게 수집된 자료의 양에 따라 비 플러스(B+) 트리에 다수의 키값을 최소한의 비용과 시간으로 추가하기 위한 선택의 기준으로 사용할 수 있으며, 많은 자료를 최소한의 비용과 시간으로 추가할 수 있음으로 비 플러스(B+) 트리의 갱신 주기를 단축하여 자료의 최신성을 증가시킬 수 있는 효과가 있다.

Claims (3)

  1. 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법에 있어서,
    삽입되어질 키 값의 엔트리들을 정렬하는 제 1 단계;
    상기 정렬된 상태에서 생성된 엔트리들을 각각 차례로 액세스하면서 엔트리 집합간의 병합 연산을 수행할 수 있도록 리프 단계의 페이지화 작업을 수행하는 제 2 단계;
    상기 리프 단계의 페이지화 작업 수행 후에 페이지의 완성 여부를 확인하여 상기 완성된 페이지와 대응되는 엔트리를 상위 단계의 내부 페이지에 넘기고, 완성된 리프 페이지를 디스크에 기록하는 제 3 단계;
    상기 상위 단계의 내부 페이지가 엔트리를 받아서 자신의 페이지화 작업을 상기 리프 페이지의 페이지화 작업과 유사하도록 반복적으로 수행하는 제 4 단계; 및
    모든 리프노드의 페이지화가 완성되었는지를 확인하여 상기 페이지화 중이던 모든 상위 단계의 내부 페이지를 디스크에 기록하여 새로운 트리를 완성하는 제 5 단계
    를 포함하는 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 제 3 단계는,
    하나의 리프 페이지가 완성되었는지를 확인하는 제 6 단계;
    상기 제 6 단계의 확인결과, 완성되지 않았으면 상기 제 2 단계의 리프노드를 읽고 삽입되어질 키 값의 엔트리와 병합하면서 리프 단계의 페이지화 작업을 수행하는 제 7 단계; 및
    상기 제 6 단계의 확인결과, 완성되었으면 완성된 페이지와 대응되는 키 값의 엔트리를 상위 단계의 내부 페이지에 넘기고, 완성된 리프 페이지를 디스크에 기록하는 제 8 단계
    를 포함하는 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 5 단계는,
    상기 모든 리프노드의 페이지화가 완성되었는지를 확인하는 제 9 단계;
    상기 제 9 단계의 확인결과, 페이지화가 완성되지 않았으면 상기 제 2 단계의 리프노드를 읽고 삽입되어질 키 값의 엔트리와 병합하면서 리프 단계의 페이지화 작업을 수행하는 제 10 단계; 및
    상기 제 9 단계의 확인결과, 페이지화가 완성되었으면 페이지화 중이던 모든
    를 포함하는 비 플러스(B+) 트리에 다수의 키값을 추가하기 위한 방법.
KR1019970069711A 1997-12-17 1997-12-17 비플러스트리에다수의키값을추가하기위한방법 KR100289087B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970069711A KR100289087B1 (ko) 1997-12-17 1997-12-17 비플러스트리에다수의키값을추가하기위한방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970069711A KR100289087B1 (ko) 1997-12-17 1997-12-17 비플러스트리에다수의키값을추가하기위한방법

Publications (2)

Publication Number Publication Date
KR19990050579A KR19990050579A (ko) 1999-07-05
KR100289087B1 true KR100289087B1 (ko) 2001-05-02

Family

ID=37517609

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970069711A KR100289087B1 (ko) 1997-12-17 1997-12-17 비플러스트리에다수의키값을추가하기위한방법

Country Status (1)

Country Link
KR (1) KR100289087B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100878142B1 (ko) * 2006-12-19 2009-01-13 연세대학교 산학협력단 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법
WO2014025097A1 (ko) * 2012-08-10 2014-02-13 영남대학교 산학협력단 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
KR102128037B1 (ko) * 2019-03-18 2020-06-29 주식회사 로그프레소 다계층 메모리 구조에 최적화된 데이터 인덱스 방법 및 그 방법에 의해 인덱스된 데이터의 검색 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000037515A (ko) * 1998-08-19 2000-07-05 윤종용 히스토리 관리용 비플러스 트리 구성 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100878142B1 (ko) * 2006-12-19 2009-01-13 연세대학교 산학협력단 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법
WO2014025097A1 (ko) * 2012-08-10 2014-02-13 영남대학교 산학협력단 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
KR102128037B1 (ko) * 2019-03-18 2020-06-29 주식회사 로그프레소 다계층 메모리 구조에 최적화된 데이터 인덱스 방법 및 그 방법에 의해 인덱스된 데이터의 검색 방법

Also Published As

Publication number Publication date
KR19990050579A (ko) 1999-07-05

Similar Documents

Publication Publication Date Title
CA1214284A (en) Sparse array bit map used in data bases
US6366900B1 (en) Method for analyzing the conditional status of specialized files
EP2069979B1 (en) Dynamic fragment mapping
Comer Analysis of a heuristic for full trie minimization
Bentley Multidimensional binary search trees in database applications
US4677550A (en) Method of compacting and searching a data index
Willard New trie data structures which support very fast search operations
US20100250560A1 (en) Bit string merge sort device, method, and program
KR100289331B1 (ko) 고차원 색인 구조의 동시성 제어 방법
JPH02178730A (ja) 分割法を用いた内部ソート方式
US20020040361A1 (en) Memory based on a digital trie structure
US5806073A (en) Method for the comparison of computer files
KR100289087B1 (ko) 비플러스트리에다수의키값을추가하기위한방법
Vitter An efficient I/O interface for optical disks
US7870138B2 (en) File storage and retrieval method
Valduriez et al. A multikey hashing scheme using predicate trees
Quitzow et al. Space utilization and access path length in B-trees
KR100878142B1 (ko) 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법
Bounif et al. A revisited representation of the red-black tree
JPWO2007032068A1 (ja) データベース管理プログラム
Dekel et al. Parallel external merging
Matsliach Performance analysis of file organizations that use multibucket data leaves with partial expansions
EP1141951A2 (en) A digital memory structure and device, and methods for the management thereof
JPS62287350A (ja) インデツクス一括更新方式
Gudes et al. On evaluating Boolean expressions

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: 20040202

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee