KR101242860B1 - 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치 - Google Patents

누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치 Download PDF

Info

Publication number
KR101242860B1
KR101242860B1 KR1020117014433A KR20117014433A KR101242860B1 KR 101242860 B1 KR101242860 B1 KR 101242860B1 KR 1020117014433 A KR1020117014433 A KR 1020117014433A KR 20117014433 A KR20117014433 A KR 20117014433A KR 101242860 B1 KR101242860 B1 KR 101242860B1
Authority
KR
South Korea
Prior art keywords
node
record
moving average
records
cumulative moving
Prior art date
Application number
KR1020117014433A
Other languages
English (en)
Other versions
KR20130009575A (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 엔에이치엔비즈니스플랫폼 주식회사
Publication of KR20130009575A publication Critical patent/KR20130009575A/ko
Application granted granted Critical
Publication of KR101242860B1 publication Critical patent/KR101242860B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

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

Abstract

누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치가 제공된다. 노드에 레코드가 삽입될 때, 삽입된 레코드의 순서에 기반하여 누적 이동 평균이 갱신될 수 있다. 누적 이동 평균의 값이 클 경우, 분할된 노드들 중 좌측의 분할 노드에 보다 많은 레코드들을 저장함으로써 다원 탐색 트리를 위해 사용되는 저장 공간의 효율을 향상시킬 수 있으며, 다원 탐색 트리의 높이를 낮출 수 있다.

Description

누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치{METHOD AND APPARATUS FOR SPLITING NODE OF M-WAY SEARCH TREE BASED ON CUMULATIVE MOVING AVERAGE}
아래의 실시예들은 다원 탐색 트리를 제공하기 위한 방법 및 장치에 관한 것이다.
누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 상기의 방법을 사용하는 다원 탐색 트리를 제공하는 저장 장치가 개시된다.
다원 탐색 트리는 차수(degree)가 2 보다 큰 탐색 트리를 의미한다.
다원 탐색 트리는 동일한 개수의 레코드를 포함하는 이진 트리에 비해 더 낮은 높이를 가질 수 있다.
트리의 높이가 낮아지면, 트리 내에서 특정 레코드를 탐색하기 위해 저장 장치에 접근하는 횟수가 줄어들 수 있고, 탐색, 삽입 및 삭제 등과 같은 다원 탐색 트리의 연산 속도가 더 빨리 수행될 수 있다.
낮은 높이를 갖기 위해, 다원 탐색 트리는 균형을 유지한다. 균형을 유지하기 위해서, 다원 탐색 트리에 레코드가 삽입되거나 다원 탐색 트리 내의 레코드가 삭제될 때, 레코드가 삽입 또는 삭제되는 노드 또는 상기의 노드와 관련된 노드들은 분할 또는 회전할 수 있다.
일반적으로, 노드가 분할될 때 분할되는 노드 내에 저장된 레코드들은 분할에 의해 생성된 2 개의 노드들로 동일한 개수 만큼씩 분배된다.
본 발명의 일 실시예는 노드의 누적 이동 평균에 기반하여 노드를 분할하는 다원 탐색 트리의 노드 분할 방법을 제공할 수 있다.
본 발명의 일 실시예는 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 저장 장치를 제공할 수 있다.
본 발명의 일 측에 따르면, 제1 노드에 레코드를 삽입하는 단계, 상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 단계, 상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하는 단계 및 상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 단계를 포함하는, 다원 탐색 트리의 노드 분할 방법이 제공된다.
상기 위치 값은 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값일 수 있다.
상기 제1 노드의 누적 이동 평균을 계산하는 단계는, 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신하는 단계를 포함할 수 있다.
상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간일 수 있다.
상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치일 수 있다.
상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율로 나누는 위치일 수 있다.
상기 다원 탐색 트리의 레코드들의 길이는 가변일 수 있다.
상기 레코드는 데이터베이스의 인덱스일 수 있다.
상기 다원 탐색 트리는 B 트리 또는 B+ 트리일 수 있다.
본 발명의 다른 일 측에 따르면, 다원 탐색 트리의 제1 노드에 레코드를 삽입하는 삽입 처리부, 상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 누적 이동 평균 계산부 및 상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하고, 상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 분할 처리부를 포함하는, 저장 장치가 제공된다.
상기 누적 이동 평균 계산부는, 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신함으로써 상기 제1 노드의 누적 이동 평균을 계산할 수 있다.
상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간을 상기 분할 위치로서 결정할 수 있다.
상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치를 상기 분할 위치로 결정할 수 있다.
상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율로 나누는 위치를 상기 분할 위치로 결정할 수 있다.
누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할함으로써 다원 탐색 트리에게 할당된 저장 공간을 효율적으로 활용하는 방법 및 장치가 제공된다.
누적 이동 평균에 기반하여 다원 탐색 트리의 노드의 분할 위치를 결정함으로써 노드에 삽입된 레코드들의 값들의 패턴에 따라 노드를 분할하는 다원 탐색 트리의 분할 방법 및 상기의 분할 방법을 사용하는 장치가 제공된다.
도 1 및 도 2는 다원 탐색 트리에 순차적으로 레코드들이 삽입되는 과정을 도시한다.
도 3은 다원 탐색 트리의 노드에 값들이 순차적으로 증가하는 레코드들이 삽입될 경우의 문제점을 나타낸다.
도 4는 본 발명의 일 실시예에 따른 다원 탐색 트리에 레코드를 삽입하는 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 예에 따른 누적 이동 평균을 계산하는 방법을 설명한다.
도 6은 본 발명의 일 예에 따른 노드의 누적 이동 평균에 기반하여 노드의 분할 위치를 결정하는 방법을 설명한다.
도 7은 본 발명의 일 예에 따른 고정 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
도 8은 본 발명의 일 예에 따른 가변 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
도 9는 본 발명의 일 예에 따른 저장 장치(900)의 구조도이다.
발명의 실시를 위한 최선의 형태
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 실시예들 및 예들에서, 다원 탐색 트리는 B-트리, B+ 트리 또는 기타 B-트리에 기반한 트리일 수 있다.
다원 탐색 트리가 B+ 트리인 경우, 본 발명의 실시예들 및 예들에서 설명된 다원 탐색 트리는 데이터 노드를 생략하고, 인덱스 노드만을 나타낸 트리일 수 있다. 예컨대, 다원 탐색 트리에 특정한 레코드들을 연속적으로 삽입하는 동작은, 상기 다원 탐색 트리의 인덱스 노드에 레코드가 삽입될 경우만을 나타낸 것일 수 있다.
또한, 상기의 다원 탐색 트리의 루트(root) 노드는 레코드를 포함하거나 포함하지 않을 수 있다. 루트 노드가 레코드를 포함하지 않을 경우, 루트 노드는 빈 채, 루트 노드의 하위 노드들에만 레코드가 삽입될 수 있다.
본 발명의 실시예들 및 예들에서, 레코드는 키를 포함한 전체 데이터를 의미할 수 있다. 또는, 레코드는 전체 데이터 중 키만을 의미할 수 있다. 즉, 본 발명의 실시예들 및 예들의 레코드는 키로 대체될 수 있다. 또는, 노드에 저장되는 레코드가 키만을 의미할 경우, 키에 대응하는 전체 데이터는 포인터 등을 통해 키로부터 링크될 수 있으며, 키를 통해 접근될 수 있다.
본 발명의 실시예들 및 예들에서, 레코드 또는 키는 데이터베이스의 인덱스(index)일 수 있다. 이 경우, 다원 탐색 트리는 데이터베이스의 특정한 인덱스를 관리하기 위한 것일 수 있다.
도 1 및 도 2는 본 발명의 일 예에 따른 다원 탐색 트리에 순차적으로 레코드들이 삽입되는 과정을 도시한다.
레코드가 다원 탐색 트리에 삽입되기 위해서, 레코드의 값은 다원 탐색 트리의 노드 내에 삽입된 레코드의 값과 비교된다. 도 1 및 도 2에서, 삽입되는 레코드들의 값은 순차적으로 증가한다.
도 1 및 도 2의 다원 탐색 트리의 차수(degree)는 3이다. 즉, 다원 탐색 트리의 노드 내에는 최대 2 개의 레코드들이 삽입될 수 있다. 다원 탐색 트리의 노드는 다원 탐색 트리의 차수가 n 일 때, n - 1 개 만큼의 슬롯들을 갖는다. 레코드는 슬롯들 중 하나에 삽입된다.
도 1의 제1 트리(110)는 빈 다원 탐색 트리에 레코드 "10"이 삽입된 것이다.
도 1의 제2 트리(120)는 제1 트리(110)에 레코드 "20"이 추가로 삽입된 결과를 나타낸다.
도 1의 제3 트리(130)는 제2 트리(120)에 레코드 "30"이 추가로 삽입된 것이다.
제2 트리(120)의 노드(122) 내에는 더 이상 레코드가 삽입될 공간(즉, 슬롯)이 없다. 따라서, 제2 트리(120)의 노드(122)는 2 개의 노드들(134 및 136)로 분할된다. 또한, 분할된 2 개의 노드들(134 및 136)의 부모 노드로서 새로운 루트 노드(132)가 생성된다.
이 때, 제3 트리(130)의 3 개의 노드들(132, 134 및 136)은 각각 하나의 레코드만을 포함한다. 즉, 제3 트리(130)는, 제3 트리(130)가 포함할 수 있는 레코드들의 최대 개수의 단지 절반만큼의 레코드들만을 포함한다. 따라서, 제3 트리(130)를 위해 할당된 저장 공간이 낭비될 수 있다.
도 1의 제4 트리(140)는 제3 트리(130)에 레코드 "40"이 추가로 삽입된 것이다.
다원 탐색 트리의 특성 상, 트리 내의 어떤 레코드보다도 더 큰 값을 갖는 레코드는 상기 다원 탐색 트리의 가장 오른쪽 말단 노드에 삽입된다.
도 2의 제1 트리(210)는 도 1의 제4 트리(140)에 레코드 "50"이 추가로 삽입된 것이다.
레코드 "50"은 제4 트리(140)의 가장 오른쪽 말단 노드(142)에 삽입되어야 하나, 가장 오른쪽 말단 노드(142) 내에는 빈 공간이 없다. 따라서, 가장 오른쪽 말단 노드(142)는 도 2의 제1 트리(210)에서 2 개의 노드들(214 및 216)로 분할된다.
분할된 2 개의 노드들(214 및 216)은 각각 하나의 레코드를 포함하고, 중간 값을 갖는 레코드 "40"은 분할된 2 개의 노드들(214 및 216)의 부모 노드(212)로 전달된다. 부모 노드(212) 내에는 빈 공간이 있으므로, 레코드 "40"은 부모 노드(212) 내에 삽입된다.
도 2의 제2 트리(220)는 도 2의 제1 트리(210)에 레코드 "60"이 추가로 삽입된 것이다.
제1 트리(210)의 가장 오른쪽 말단 노드(216) 내에는 빈 공간이 있으므로, 레코드 "60"은 제2 트리(220)의 가장 오른쪽 말단 노드(224)에 삽입된다.
도 2의 제3 트리(230)는 도 2의 제2 트리(220)에 레코드 "70"이 추가로 삽입된 것이다.
제2 트리(220)의 가장 오른쪽 말단 노드(224) 내에는 빈 공간이 없다.
따라서, 가장 오른쪽 말단 노드(224)는 2 개의 노드들(238 및 240)로 분할된다.
분할된 2 개의 노드들(238 및 240)은 각각 하나의 레코드를 포함하고, 중간 값을 갖는 레코드 "60"은 제2 트리(220)의 가장 오른쪽 말단 노드(224)의 부모 노드(222)에 삽입되어야 한다. 그러나, 부모 노드(222) 내에는 빈 공간이 없기 때문에, 부모 노드(222)는 2 개의 노드들(234 및 236)로 재분할된다.
부모 노드(222)는 루트 노드이기 때문에, 부모 노드(222)가 분할하면서 새로운 루트 노드(232)가 생성된다.
새로운 루트 노드(232)는 부모 노드(222)가 분할됨으로써 생성된 2 개의 노드들(234 및 236)을 자식 노드로 갖는다.
2 개의 노드들(234 및 236)은 각각 하나의 레코드를 포함하고, 부모 노드(220)가 포함하던 1) 레코드 "20" 및 2) 레코드 "40"과, 가장 오른쪽 말단 노드(224)가 분할됨에 따라 부모 노드(220)로 전달된 3) 레코드 "60" 중 중간 값을 갖는 레코드 "40"은 새로운 루트 노드(232)에 삽입된다.
제3 트리(230)의 노드들은 각각 하나의 레코드만을 포함한다. 즉, 제3 트리(230)는, 제3 트리(230)가 포함할 수 있는 레코드들의 최대 개수의 단지 절반만큼의 레코드들만을 포함한다. 따라서, 제3 트리(230)를 위해 할당된 저장 공간이 낭비될 수 있다.
또한, 이후, 제3 트리(230)에 삽입되는 레코드들의 값이 계속적으로 증가하면, 다원 탐색 트리의 특성 상 1) 제3 트리(230)의 각 높이에서의 가장 오른쪽 노드들(232, 236 및 240) 및 2) 상기 가장 오른쪽 노드들(232, 236 및 240)이 분할함으로써 생성된 노드들에만 레코드가 삽입되고, 그 외의 노드들(예컨대, 노드(234))로는 더 이상 레코드가 삽입되지 않는다.
따라서, 예컨대, 다원 탐색 트리의 노드가 분할될 때, 분할에 의해 생성된 2 개의 노드들이 항상 동일한 개수의 레코드들을 갖을 경우(또는, 분할에 의해 생성된 2 개의 노드들이 갖는 레코드들의 개수들이 항상 1만큼만 차이나는 경우), 특정한 패턴을 갖는 레코드들(예컨대, 값이 계속적으로 증가하는 레코드들 또는 값이 계속적으로 감소하는 레코드들)이 다원 탐색 트리에 삽입될 때, 다원 탐색 트리에게 할당된 저장 공간이 낭비될 수 있으며, 다원 탐색 트리의 높이가 필요 이상으로 높아질 수 있다.
도 3은 본 발명의 일 예에 따른 다원 탐색 트리의 노드에 값들이 순차적으로 증가하는 레코드들이 삽입될 경우의 문제점을 나타낸다.
제1 트리(310)의 노드(330) 내에는 레코드들이 삽입되었다. 노드(330) 내에는 빈 공간이 없다.
제2 트리(350)은 제1 트리(310)의 노드(330) 내에 새 레코드 "90"이 삽입된 결과를 나타낸다.
노드(330) 내에는 빈 공간이 없으므로, 새 레코드 "90"이 삽입되기 위해 노드(330)는 분할되어야 한다.
노드(330) 내의 레코드들 및 새 레코드 "90"의 중간 값은 레코드 "50"이다.
따라서, 레코드 "50"을 기준으로, 노드(330)는 제1 분할된 노드(360) 및 제2 분할된 노드(370)로 분할된다. 즉, 제1 분할된 노드(360)는 노드(330) 내의 레코드들 및 새 레코드 "90" 중 중간 값 이하의 값을 갖는 노드들을 포함한다. 또한, 제2 분할된 노드(370)는 노드(330) 내의 레코드들 및 새 레코드 "90" 중 중간 값 이상의 값을 갖는 노드들을 포함한다.
다원 탐색 트리의 차수가 n+1 일 때, 제1 분할된 노드(360) 및 제2 분할된 노드(370)은 각각 n/2 개의 레코드들을 가질 수 있다.
중간 값인 레코드 "50"은 노드(330)의 부모 노드(320)로 삽입을 위해 전달된다. 부모 노드(320) 역시 빈 공간을 가지고 있지 않은 경우, 전술된 것과 같이 부모 노드(320) 또한 분할된다.
이후, 다원 탐색 트리에 삽입되는 레코드들의 값이 계속적으로 증가할 경우, 다원 탐색 트리의 특성 상 제1 분할된 노드(360)로는 더 이상 레코드가 삽입되지 않는다. 따라서, 제1 분할된 노드(360)를 위해 할당된 저장 공간이 낭비될 수 있다.
따라서, 다원 탐색 트리의 노드가 분할될 때, 상기 노드에 삽입되어 온 레코드들이 이루는 특정한 패턴에 기반하여 상기 노드를 분할하는 기준이 되는 레코드를 결정하는 방법이 요구된다.
도 4는 본 발명의 일 실시예에 따른 다원 탐색 트리에 레코드를 삽입하는 방법을 나타내는 흐름도이다.
다원 탐색 트리에 삽입될 레코드를 추가 레코드로 명명한다.
단계(410)에서, 추가 레코드가 삽입될 노드가 검색된다. 검색된 노드를 대상 노드로 명명한다.
단계(420)에서, 대상 노드 내에 추가 레코드를 삽입할 공간이 있는지 여부가 검사된다. 즉, 대상 노드 내의 레코드들의 개수가 노드에 할당된 슬롯의 개수보다 작은지 여부가 검사된다.
대상 노드 내에 추가 레코드를 삽입할 공간이 있으면, 대상 노드에 추가 레코드를 삽입하고, 대상 노드의 누적 이동 평균을 계산하는 단계들(430, 440 및 450)이 수행된다.
대상 노드 내에 추가 레코드를 삽입할 공간이 없으면, 추가 레코드를 다원 탐색 트리에 삽입하기 위하여 대상 노드를 분할하는 단계들(460, 470 및 480)이 수행된다.
우선, 대상 노드 내에 추가 레코드를 삽입할 공간이 있을 경우에 수행되는 단계들(430, 440 및 450)을 설명한다.
레코드 삽입 단계(430)에서, 대상 노드에 추가 레코드가 삽입된다.
추가 레코드의 삽입 후, 하기의 단계들(440 및 450)에서, 추가 레코드의 대상 노드 내의 위치 값에 기반하여 대상 노드의 누적 이동 평균(cumulative moving average)(또는, 이동 평균(running average))이 계산된다.
삽입 위치 계산 단계(440)에서, 추가 레코드가 대상 노드 내에 삽입된 위치에 기반하여 추가 레코드의 대상 노드 내의 위치 값이 계산된다.
추가 레코드의 위치 값은 0 이상 1 이하의 값일 수 있다.
추가 레코드의 위치 값은 추가 레코드가 삽입된 슬롯의 번호(index)를 대상 노드 내의 레코드들(즉, 대상 노드 내에 저장된 레코드들)의 개수로 나눈 값일 수 있다.
슬롯의 번호는 0 또는 1에서부터 시작할 수 있다. 하기의 실시예에서는 슬롯의 번호가 1에서부터 시작하는 것으로 간주한다.
누적 이동 평균 계산 단계(450)에서, 추가 레코드의 위치 값에 기반하여 대상 노드의 누적 이동 평균이 계산된다.
레코드를 포함하지 않은 노드의 누적 이동 평균은 0 또는 1로 초기화될 수 있다.
누적 이동 평균은 하기의 수학식 1에 기반하여 계산될 수 있다.
Figure 112011047649332-pct00001
여기서, CAi-1는 추가 레코드가 삽입되기 전의 대상 노드의 누적 이동 평균이다. 또한, CAi는 추가 레코드가 삽입된 후 갱신된 누적 이동 평균이다.
i는 시퀀스(sequence)이다. 즉, 대상 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수이다. i는 1에서부터 시작할 수 있다.
xi는 추가 레코드의 위치 값이다. xi에서, i는 xi가 대상 노드에 i 번 째로 삽입된 레코드의 위치 값임을 나타낸다. 즉, 대상 노드의 누적 이동 평균을 계산하기 위해 사용된 위치 값들은 순서대로 x1, x2, x3, ..., xn이다.
삭제(delete) 연산 또는 분할(split) 연산에 의해, 대상 노드 내의 레코드들의 개수가 줄어들 수 있다. 이러한 경우, 계속 증가하는 변수인 i가 사용될 경우, 삭제 또는 분할 후 대상 노드에 삽입되는 레코드의 위치 값이 누적 이동 평균을 갱신함에 있어서 과도하게 적게 반영될 수 있다.
따라서, 노드 내의 레코드들의 개수를 반영하여 누적 이동 평균을 갱신하기 위해, 하기의 수학식 2에 기반하여 누적 이동 평균이 계산될 수 있다.
Figure 112011047649332-pct00002
여기서, I는 i 및 대상 노드 내의 레코드들의 개수 n 중 최소값을 의미한다. 즉, I = MIN(i, n)이다.
수학식 1 및 수학식 2를 참조하여 전술된 것처럼, 대상 노드의 누적 이동 평균은 추가 레코드가 삽입된 슬롯의 번호를 대상 노드 내의 레코드들의 개수 n로 나눈 값 xi, 누적 이동 평균 CAi-1, 대상 노드 내의 레코드들의 개수 n 및 대상 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수 i에 기반하여 계산될 수 있다.
하기에서, 레코드들이 삽입됨에 따라 노드의 누적 이동 평균이 계산되는 일 예가 도 5를 참조하여 상세히 설명된다.
누적 이동 평균은 노드의 헤더(header)에 저장될 수 있다. 즉, 대상 노드에 대해 계산된 누적 이동 평균은 대상 노드의 헤더에 저장될 수 있으며, 차후 갱신을 위해 대상 노드의 헤더로부터 추출될 수 있다.
다음으로, 대상 노드 내에 추가 레코드를 삽입할 공간이 없을 경우에 수행되는 단계들(460, 470 및 480)을 설명한다.
분할 위치 계산 단계(460)에서 대상 노드의 누적 이동 평균에 기반하여 분할 대상 레코드들의 분할 위치가 계산된다.
분할 대상 레코드들은 대상 노드가 분할될 때, 상기 분할에 의해 생성되는 2 개의 노드들 중 하나의 노드에 포함될 레코드 및 대상 노드의 부모 노드에게 전달될 레코드를 의미할 수 있다.
즉, 분할 대상 레코드들은 상기 대상 노드 내의 레코드들 및 추가 레코드를 의미할 수 있다. 또는, 분할 대상 레코드는 대상 노드 내의 레코드들을 포함할 수 있다.
상가의 분할 위치는, 분할 대상 레코드들이 오름차순으로 나열된 일련(series) 중 특정한 위치를 나타낼 수 있다..
대상 노드의 분할 위치는, 대상 노드 내의 레코드들 및 추가 레코드 중, 대상 노드가 분할될 때 대상 노드의 부모 노드로 전달될 레코드를 가리킬 수 있다. 즉, 대상 노드의 분할 위치가 계산되면, 계산된 분할 위치에 대응하는 레코드가 분할의 기준이 될 수 있고, 분할의 기준이 된 레코드가 분할을 위해 대상 노드의 부모 노드로 전달될 수 있다.
계산된 분할 위치에 대응하는 레코드를 기준 레코드로 명명한다.
노드의 누적 이동 평균에 기반하여 노드의 분할 위치를 계산하는 구체적인 방법이 도 6 내지 도 8을 참조하여 하기에서 상세히 설명된다.
노드 분할 단계(470)에서, 분할 위치를 기준으로 대상 노드는 좌측 분할 노드 및 우측 분할 노드로 분할된다.
즉, 기준 레코드의 값보다 작은 값을 갖는 레코드들은 좌측 분할 노드에 포함될 수 있고, 기준 레코드의 값보다 큰 값을 갖는 레코드들은 우측 분할 노드에 포함될 수 있다.
또는, 분할 대상 레코드들이 오름차순으로 정렬되었을 때, 분할 대상 레코드 들 중 기준 레코드보다 앞에 위치한 레코드들은 좌측 분할 노드에 포함될 수 있고, 분할 대상 레코드들 중 기준 레코드보다 뒤에 위치한 레코드들은 우측 분할 노드에 포함될 수 있다.
이후, 단계(410)가 재수행됨으로써 기준 레코드는 삽입을 위해 대상 노드의 부모 노드에게 전달될 수 있다.
분할된 노드 초기화 단계(480)에서, 좌측 분할 노드 및 우측 분할 노드는 각각 초기화될 수 있다.
좌측 분할 노드의 누적 이동 평균은 대상 노드의 누적 이동 평균으로 초기화될 수 있다. 또한, 우측 분할 노드의 누적 이동 평균은 대상 노드의 누적 이동 평균으로 초기화될 수 있다.
좌측 분할 노드의 시퀀스 i는 0으로 초기화될 수 있다. 이러한 시퀀스 i의 초기화는, 좌측 분할 노드에 새로 삽입되는 레코드들이 좌측 분할 노드의 누적 이동 평균에 높은 영향을 줄 수 있게 한다. 또한, 우측 분할 노드의 시퀀스 i는 0으로 초기화될 수 있다.
단계들(460, 470 및 480)이 수행되면, 단계(410)가 재수행된다.
재수행되는 단계(410)는, 단계(470)에서 좌측 분할 노드 및 우측 분할 노드에 포함되지 않는 레코드(즉, 기준 레코드)를 대상 노드의 부모 노드에 삽입하는 단계일 수 있다. 즉, 추가 레코드는 단계(470)의 기준 레코드로 변경될 수 있다. 또한, 재수행된 단계(410)에서 검색된 노드는 이전 대상 노드의 부모 노드일 수 있다.
전술된 단계들(410 내지 480)을 포함하는 다원 탐색 트리에 레코드를 삽입하는 방법은, 다원 탐색 트리의 노드 분할 방법으로 간주될 수 있다. 즉, 단계들(430 내지 450)은 분할 대상 노드의 누적 이동 평균을 계산하는 단계들이 될 수 있으며, 단계들(460 내지 480)을 계산된 누적 이동 평균에 기반하여 분할 대상 노드를 분할하는 단계들이 될 수 있다.
도 5는 본 발명의 일 예에 따른 누적 이동 평균을 계산하는 방법을 설명한다.
제1 노드(510)는 공백 노드이다. 공백 노드의 시퀀스 i의 초기 값은 0일 수 있다. 또한, 공백 노드의 초기 누적 이동 평균 CA0은 0 또는 1일 수 있다.
제2 노드(520)는 제1 노드(510)에 레코드 "40"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 1이다.
레코드 "40"은 제2 노드(520) 내의 1 개의 레코드들 중 첫 번째 위치에 삽입되었다. 따라서, 레코드 "40"의 위치 값 x1은 1이다.
시퀀스 i의 값은 1이고, 제2 노드(520) 내에 삽입된 레코드들의 개수는 1이다. 따라서, I의 값은 1이다.
상기의 수학식 2에 따라, 제2 노드(520)의 누적 이동 평균 CA1은 1이다.
제3 노드(530)는 제2 노드(520)에 레코드 "80"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 2이다.
레코드 "80"은 제3 노드(530) 내의 2 개의 레코드들 중 두 번째 위치에 삽입되었다. 따라서, 레코드 "80"의 위치 값 x2은 2/2 = 1이다.
시퀀스 i의 값은 2이고, 제3 노드(530) 내에 삽입된 레코드들의 개수는 2이다. 따라서, I의 값은 2이다.
상기의 수학식 2에 따라, 제3 노드(530)의 누적 이동 평균 CA2은 1이다.
제2 노드(520) 및 제3 노드(530)를 검토하면, 새로 삽입된 레코드가 노드 내의 레코드들 중 가장 뒤에 위치하면(즉, 새로 삽입된 레코드의 값이 노드 내의 레코드들 각각의 값들 이상이면), 노드의 누적 이동 평균은 1로 유지되거나, 1에 더 가까운 값으로 증가하는 것을 알 수 있다.
제4 노드(540)는 제2 노드(520)에 레코드 "20"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 2이다.
레코드 "20"은 제4 노드(540) 내의 2 개의 레코드들 중 첫 번째 위치에 삽입되었다. 따라서, 레코드 "20"의 위치 값 x2은 1/2이다.
시퀀스 i의 값은 2이고, 제4 노드(540) 내에 삽입된 레코드들의 개수는 2이다. 따라서, I의 값은 2이다.
상기의 수학식 2에 따라, 제4 노드(540)의 누적 이동 평균 CA2은 3/4이다.
제5 노드(550)는 제4 노드(540)에 레코드 "10"이 삽입된 노드이다.
새 레코드가 삽입됨에 따라 시퀀스 i는 1 증가한다. 따라서, 이 때 시퀀스 i의 값은 3이다.
레코드 "10"은 제5 노드(550) 내의 3 개의 레코드들 중 첫 번째 위치에 삽입되었다. 따라서, 레코드 "10"의 위치 값 x3은 1/3이다.
시퀀스 i의 값은 3이고, 제5 노드(550) 내에 삽입된 레코드들의 개수는 3이다. 따라서, I의 값은 3이다.
상기의 수학식 2에 따라, 제5 노드(550)의 누적 이동 평균 CA3은 22/36이다.
제2 노드(520), 제4 노드(540) 및 제5 노드(550)를 검토하면, 새로 삽입된 레코드가 노드 내의 레코드들 중 가장 앞에 위치하면(즉, 새로 삽입된 레코드의 값이 노드 내의 레코드들 각각의 값들 이하이면), 노드의 누적 이동 평균은 0에 더 가까운 값으로 감소하는 것을 알 수 있다.
노드 내에 삽입되는 레코드들의 값들이 나타내는 패턴이 점진적인 증가에 가까울수록, 노드의 누적 이동 평균이 1에 가깝게 될 수 있다. 따라서, 노드의 누적 이동 평균이 1에 가까우면, 상기 노드를 분할할 때, 좌측 분할 노드(즉, 낮은 값을 갖는 레코드들이 삽입되는 노드)에 많은 레코드들을 저장하고, 우측 분할 노드(즉, 높은 값을 갖는 레코드들이 삽입되는 노드)에 적은 레코드들을 저장함으로써 좌측 분할 노드 및 우측 분할 노드에게 할당된 저장 장소가 효율적으로 사용되게 할 수 있다.
반대로, 노드의 누적 이동 평균이 0에 가까우면, 상기 노드를 분할할 때, 좌측 분할 노드에 적은 레코드들을 저장하고, 우측 분할 노드에 적은 레코드들을 저장함으로써 좌측 분할 노드 및 우측 분할 노드에게 할당된 저장 장소가 효율적으로 사용되게 할 수 있다.
즉, 노드의 누적 이동 평균에 기반하여 상기 노드를 분할함으로써 분할된 노드들에게 할당된 저장 장소가 효율적으로 사용되게 할 수 있다. 또한, 노드의 누적 이동 평균에 기반하여 상기 노드를 분할함으로써 다원 탐색 트리의 높이가 더 낮아질 수 있다.
도 6은 본 발명의 일 예에 따른 노드의 누적 이동 평균에 기반하여 노드의 분할 위치를 결정하는 방법을 설명한다.
노드의 분할 위치는 노드의 누적 이동 평균에 비례하여 결정될 수 있다.
이하 노드의 누적 이동 평균을 CA(Cumulative moving average)로 약술하고, 노드의 분할 위치를 SP(split point)로 약술한다. 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 TRL(total record length)로 약술한다.
예컨대, CA의 값이 1이면, SP는 TRL의 끝일 수 있다.
여기서, 분할 대상 레코드들은 도 4를 참조하여 전술된 분할 대상 레코드들을 나타낼 수 있다. 즉, 분할 대상 레코드들은 노드(즉, 도 4의 대상 노드) 내에 이미 삽입된 레코드들 및 상기 노드 내에 새로 삽입될 레코드(즉, 도 4의 추가 레코드)를 의미할 수 있다.
즉, CA의 값이 1이면, 분할 대상 레코드들은 모두 좌측 분할 노드에 포함될 수 있고, 우측 분할 노드는 빈 노드일 수 있다.
예컨대, CA 값이 0 또는 0에 매우 가까운 값이면, SP는 TRL의 처음(즉, 0)일 수 있다.
즉, CA의 값이 0이면, 분할 대상 레코드들은 모두 우측 분할 노드에 포함될 수 있고, 좌측 분할 노드는 빈 노드일 수 있다.
또는, CA에 비례하여 오름차순으로 정렬된 분할 대상 레코드들 중 기준 레코드가 결정될 수 있다. 이때, SP는 결정된 기준 레코드를 나타내는 값을 가질 수 있다.
예컨데, CA가 0.5이면, SP는 오름차순으로 정렬된 분할 대상 레코드들 중 중간 값(즉, 상위 50%의 값)을 갖는 레코드를 나타내는 값을 가질 수 있다.
도 6에서 도시된 것처럼, SP는 CA가 속하는 범위에 기반하여 결정될 수 있다.
도 6의 그래프(610)는 CA의 분포를 나타낸다.
CA가 제1 지정된 범위(예컨대, t2 이상이며 t3 이하) 내의 값일 경우, SP는 TRL의 중간을 나타낼 수 있다. 즉, SP의 값은 TRL에 0.5를 곱한 값일 수 있다.
CA가 제2 지정된 범위(예컨대, t1 이상이며 t2 이하, 또는 t3 이상이며 t4이하) 내의 값일 경우, SP는 TRL을 CA의 비율로 나누는 위치를 나타낼 수 있다. 즉, SP의 값은 TRL에 CA를 곱한 값일 수 있다.
CA가 제3 지정된 범위(예컨대, t1 이하 또는 t4 이상) 내의 값일 경우, SP는 TRL을 미리 지정된 비율(예컨대, P1% 또는 P2%)로 나누는 위치를 나타낼 수 있다. SP의 값은 TRL에 P1/100 (또는 P2/100)를 곱한 값일 수 있다. 상기의 P1 및 P2는 예시적인 것이다. 즉, SP의 값은 TRL에 P3을 곱한 값일 수 있다. P3은 0 이상 1 이하의 자연수일 수 있다.
전술된 t1, t2, t3 및 t4는 특정한 값일 수 있다. 예컨대, t1의 값은 0.05일 수 있다. t2의 값은 0.2일 수 있다. t3의 값은 0.8일 수 있다. t4의 값은 0.95일 수 있다.
도 7은 본 발명의 일 예에 따른 고정 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
대상 노드(710)는 4 개의 레코드들(712, 714, 716 및 718)을 포함한다.
대상 노드(710)에 레코드 "40"(720)이 삽입되면, 분할 대상 레코드들(712, 714, 716, 718 및 720)은, 오름차순으로 정렬될 경우, 레코드 "10"(712), 레코드 "20"(714), 레코드 "30"(716), 레코드 "40"(720) 및 레코드 "50"(718)의 순서를 갖는다.
SP가 TRL의 중간일 경우, SP가 가리키는 레코드는 레코드 "30"(716)이다. 따라서, 레코드 "30"(716)이 기준 레코드로 결정된다.
대상 노드(710)가 분할되면, 좌측 분할 노드(740)는 기준 레코드(716)보다 앞에 위치한 레코드들(712 및 714)을 포함하고, 우측 분할 노드(750)는 기준 레코드(716)보다 뒤에 위치한 레코드들(720 및 718)을 포함한다.
기준 레코드(716)는 대상 노드(710)의 부모 노드(730)에 삽입된다.
도 8은 본 발명의 일 예에 따른 가변 길이 레코드들이 SP에 의해 분할되는 방법을 설명한다.
대상 노드(810)는 4 개의 레코드들(812, 814, 816 및 718)을 포함한다. 레코드 "AA"(812)의 길이는 2이다. 레코드 "BBBB"(814)의 길이는 4이다. 레코드 "C"(816)의 길이는 1이다. 레코드 "DD"(818)의 길이는 2이다.
대상 노드(810)에 길이가 2인 레코드 "EE"(820)가 삽입되면, 분할 대상 레코드들(812, 814, 816, 818 및 820)은, 오름차순으로 정렬될 경우, 레코드 "AA"(812), 레코드 "BBBB"(814), 레코드 "C"(816), 레코드 "DD"(718) 및 레코드 "EE"(820)의 순서를 갖는다. 이때, TRL은 11이다.
SP가 TRL의 중간일 경우, SP의 값은 6이다. 따라서, 분할 대상 레코드들의 일련 중 앞에서부터 6만큼 떨어진 위치가 SP가 될 수 있다.
이는 분할 대상 레코드들이 차지하는 저장 공간 중 앞에서부터 6번째의 기억 단위(예컨대, 바이트(byte), 워드(word) 또는 필드(field)를 가리킬 수 있다.
분할 대상 레코드들 중 SP의 값에 대응하는 위치를 차지하는 레코드는 레코드 "BBBB"(814)이다. 따라서, 레코드 "BBBB"(814)가 기준 레코드로 결정된다.
대상 노드(810)가 분할되면, 좌측 분할 노드(840)는 기준 레코드(814)보다 앞에 위치한 레코드(812)를 포함하고, 우측 분할 노드(850)는 기준 레코드(814)보다 뒤에 위치한 레코드들(816, 818 및 820)을 포함한다.
도 9는 본 발명의 일 예에 따른 저장 장치(900)의 구조도이다.
저장 장치(900)는 삽입 처리부(910), 누적 이동 평균 계산부(920), 분할 처리부(930) 및 저장부(940)를 포함할 수 있다.
삽입 처리부(910)는 단계들(410, 420 및 430)을 수행할 수 있다.
예컨대, 삽입 처리부(910)는 다원 탐색 트리의 제1 노드에 레코드를 삽입할 수 있다.
누적 이동 평균 계산부(920)는 단계들(440 및 450)를 수행할 수 있다.
예컨대, 누적 이동 평균 계산부(920)는 삽입된 레코드의 제1 노드 내의 위치 값에 기반하여 제1 노드의 누적 이동 평균을 계산할 수 있다.
위치 값은 레코드가 삽입된 슬롯의 번호를 제1 노드 내의 레코드들의 개수로 나눈 값일 수 있다.
또한, 누적 이동 평균 계산부(920)는 1) 레코드가 삽입된 슬롯의 번호를 제1 노드 내의 레코드들의 개수로 나눈 값, 2) 누적 이동 평균, 3) 제1 노드 내의 레코드들의 개수 및 4) 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 누적 이동 평균을 갱신함으로써 제1 노드의 누적 이동 평균을 계산할 수 있다.
누적 이동 평균 계산부(920)는 전술된 수학식 1 또는 수학식 2에 기반하여 누적 이동 평균을 계산할 수 있다.
분할 처리부(930)는 단계들(460, 470 및 480)을 수행할 수 있다.
예컨대, 분할 처리부(930)는 누적 이동 평균에 기반하여 제1 노드의 분할 위치를 계산할 수 있고, 계산된 분할 위치를 기준으로 제1 노드를 제2 노드 및 제3 노드로 분할할 수 있다.
분할 처리부(930)는, 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이의 중간을 분할 위치로서 결정할 수 있다.
분할 처리부(930)는, 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 미리 지정된 비율로 나누는 위치를 분할 위치로 결정할 수 있다.
분할 처리부(930)는, 누적 이동 평균이 지정된 범위 내의 값일 경우, 오름차순으로 정렬된 분할 대상 레코드들의 총 길이를 누적 이동 평균의 비율로 나누는 위치를 분할 위치로 결정할 수 있다.
저장부(940)는 다원 탐색 트리를 저장할 수 있다.
저장부(940)는 다원 탐색 트리를 구성하는 노드들을 저장할 수 있다.
저장부(940)는 노드의 헤더에 상기 노드의 누적 이동 평균 및 시퀀스를 저장할 수 있다.
앞서 도 1 내지 도 8을 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
상기 구성요소(910, 920 및 930)의 기능은 단일한 제어부(도시되지 않음)에서 수행될 수 있다. 이때, 상기 제어부는 단일(single) 또는 복수(multi) 칩(chip), 프로세서(processor) 또는 코어(core)를 나타낼 수 있다. 상기 구성요소들(910, 920 및 930) 각각은 상기 제어부에서 수행되는 함수(function), 라이브러리(library), 서비스(service), 프로세스(process), 쓰레드(thread) 또는 모듈(module)을 나타낼 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (19)

  1. 저장 장치가 상기 저장 장치 내에 저장된 다원 탐색 트리의 노드를 분할하는 방법에 있어서,
    상기 다원 탐색 트리의 제1 노드에 레코드를 삽입하는 단계;
    상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 단계;
    상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하는 단계; 및
    상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 단계
    를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  2. 제1항에 있어서,
    상기 위치 값은 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값인, 다원 탐색 트리의 노드 분할 방법.
  3. 제1항에 있어서,
    상기 제1 노드의 누적 이동 평균을 계산하는 단계는,
    상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신하는 단계
    를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  4. 제3항에 있어서,
    상기 누적 이동 평균은 하기의 수학식 1에 기반하여 계산되는,
    다원 탐색 트리의 노드 분할 방법.
    [수학식 1]
    Figure 112011053296810-pct00014

    CAi-1는 상기 레코드가 삽입되기 전 상기 제1 노드의 누적 이동 평균임. CAi는 상기 레코드가 삽입된 후 갱신된 상기 누적 이동 평균임. I는 i 및 상기 제1 노드 내의 레코드들의 개수 중 최소값임.
    xi는 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값임. i는 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수임.
  5. 제1항에 있어서,
    상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 분할 대상 레코드들의 총 길이의 중간이고, 상기 분할 대상 레코드들은 상기 제1 노드 내의 레코드 및 상기 레코드를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  6. 제1항에 있어서,
    상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 분할 대상 레코드들의 총 길이를 미리 지정된 비율에 비례하여 나누는 위치이고 상기 분할 대상 레코드들은 상기 제1 노드 내의 레코드 및 상기 레코드를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  7. 제1항에 있어서,
    상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 상기 분할 위치는 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율에 비례하여 위치이고, 상기 분할 대상 레코드들은 상기 제1 노드 내의 레코드 및 상기 레코드를 포함하는, 다원 탐색 트리의 노드 분할 방법.
  8. 제1항에 있어서,
    상기 다원 탐색 트리의 레코드들의 길이는 가변인, 다원 탐색 트리의 노드 분할 방법.
  9. 제1항에 있어서,
    상기 레코드는 데이터베이스의 인덱스인, 다원 탐색 트리의 노드 분할 방법.
  10. 제1항에 있어서,
    상기 다원 탐색 트리는 B 트리 또는 B+ 트리인, 다원 탐색 트리의 노드 분할 방법.
  11. 제1항 내지 제10항 중 어느 한 항의 다원 탐색 트리의 노드 분할 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
  12. 다원 탐색 트리의 제1 노드에 레코드를 삽입하는 삽입 처리부;
    상기 레코드의 상기 제1 노드 내의 위치 값에 기반하여 상기 제1 노드의 누적 이동 평균을 계산하는 누적 이동 평균 계산부; 및
    상기 누적 이동 평균에 기반하여 상기 제1 노드의 분할 위치를 계산하고, 상기 분할 위치를 기준으로 상기 제1 노드를 제2 노드 및 제3 노드로 분할하는 분할 처리부
    를 포함하는, 저장 장치.
  13. 제12항에 있어서,
    상기 위치 값은 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값인, 저장 장치.
  14. 제12항에 있어서,
    상기 누적 이동 평균 계산부는, 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값, 상기 누적 이동 평균, 상기 제1 노드 내의 레코드들의 개수 및 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수에 기반하여 상기 누적 이동 평균을 갱신함으로써 상기 제1 노드의 누적 이동 평균을 계산하는, 저장 장치.
  15. 제12항에 있어서,
    상기 누적 이동 평균 계산부는 하기의 수학식 2에 기반하여 상기 누적 이동 평균을 계산하는, 저장 장치.
    [수학식 2]
    Figure 112011047649332-pct00004

    CAi-1는 상기 레코드가 삽입되기 전 상기 제1 노드의 누적 이동 평균임. CAi는 상기 레코드가 삽입된 후 갱신된 상기 누적 이동 평균임. I는 i 및 상기 제1 노드 내의 레코드들의 개수 중 최소값임.
    xi는 상기 레코드가 삽입된 슬롯의 번호를 상기 제1 노드 내의 레코드들의 개수로 나눈 값임. i는 상기 제1 노드에 임의의 레코드가 삽입될 때마다 1씩 증가하는 정수임.
  16. 제12항에 있어서,
    상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 분할 대상 레코드들의 총 길이의 중간을 상기 분할 위치로서 결정하고, 상기 분할 대상 레코드들은 상기 제1 노드 내의 레코드 및 상기 레코드를 포함하는, 저장 장치.
  17. 제12항에 있어서,
    상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 분할 대상 레코드들의 총 길이를 미리 지정된 비율에 비례하여 나누는 위치를 상기 분할 위치로 결정하고, 상기 분할 대상 레코드들은 상기 제1 노드 내의 레코드 및 상기 레코드를 포함하는, 저장 장치.
  18. 제12항에 있어서,
    상기 분할 처리부는, 상기 누적 이동 평균이 지정된 범위 내의 값일 경우, 분할 대상 레코드들의 총 길이를 상기 누적 이동 평균의 비율에 비례하여 나누는 위치를 상기 분할 위치로 결정하고, 상기 분할 대상 레코드들은 상기 제1 노드 내의 레코드 및 상기 레코드를 포함하는, 저장 장치.
  19. 제12항에 있어서,
    상기 다원 탐색 트리의 레코드들의 길이는 가변인, 저장 장치.
KR1020117014433A 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치 KR101242860B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2011/004213 WO2012169675A1 (ko) 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130009575A KR20130009575A (ko) 2013-01-23
KR101242860B1 true KR101242860B1 (ko) 2013-03-12

Family

ID=47296220

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117014433A KR101242860B1 (ko) 2011-06-08 2011-06-08 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치

Country Status (3)

Country Link
JP (1) JP5774213B2 (ko)
KR (1) KR101242860B1 (ko)
WO (1) WO2012169675A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101477017B1 (ko) * 2013-03-29 2014-12-29 주식회사 알티베이스 공유메모리 내의 인덱스 운용 장치 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102000627B1 (ko) * 2019-01-04 2019-07-16 (주)공간인소프트 데이터 갱신 방법 및 그 장치
KR102031928B1 (ko) * 2019-03-25 2019-10-14 엘아이지넥스원 주식회사 이진 트리를 이용한 고속 펄스열 추출 장치 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124363A (ja) * 1996-10-22 1998-05-15 Fuji Xerox Co Ltd 順編成索引管理方法
KR100233365B1 (ko) * 1996-12-13 1999-12-01 윤덕용 Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법
KR20020049767A (ko) * 2000-12-20 2002-06-26 오길록 접근 빈도에 따른 데이터 구조체계의 재구성 장치 및 그방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
정보과학회논문지(A) 제26권 제1호(1991.1. "일반 트리를 미적으로 도시하기 위한 분할-정복 알고리즘") *
학국정보과학회 봄 학술발표논문집 Vol.31, No.1(2004.4. "다중 클러스터 시스템을 위한 Co-Allcation 알고리즘") *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101477017B1 (ko) * 2013-03-29 2014-12-29 주식회사 알티베이스 공유메모리 내의 인덱스 운용 장치 및 방법
US9411843B2 (en) 2013-03-29 2016-08-09 Altibase Corp. Method and apparatus for managing an index in a shared memory

Also Published As

Publication number Publication date
WO2012169675A1 (ko) 2012-12-13
JP5774213B2 (ja) 2015-09-09
JP2014520323A (ja) 2014-08-21
KR20130009575A (ko) 2013-01-23

Similar Documents

Publication Publication Date Title
JP6028567B2 (ja) データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法
KR101467589B1 (ko) 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체
US8090745B2 (en) K-nearest neighbor search method, k-nearest neighbor search program, and k-nearest neighbor search device
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
US11371850B2 (en) Shortest path engine for warehouse management
CN102402602A (zh) 一种实时数据库的b+树索引方法及装置
KR102005343B1 (ko) 분할 공간 기반의 공간 데이터 객체 질의처리장치 및 방법, 이를 기록한 기록매체
US20150261783A1 (en) Method and apparatus for storing and reading files
CN113094336B (zh) 基于Cuckoo哈希的文件系统目录管理方法及系统
US20110145255A1 (en) Systems and methods for distribution of data in a database index
KR101242860B1 (ko) 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치
JP5790755B2 (ja) データベース管理装置及びデータベース管理方法
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
KR101772333B1 (ko) 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템
US9235578B2 (en) Data partitioning apparatus and data partitioning method
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
KR101693108B1 (ko) 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치
JP6006740B2 (ja) インデックス管理装置
WO2016038858A1 (ja) データ管理システム、データ管理装置、データ管理方法、および、プログラム
EP3196780A1 (en) Information processing device, information processing method, and computer-readable storage medium
US9239886B2 (en) Partitioned list
JP2007048318A (ja) リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置
KR102185703B1 (ko) 공간 지식 베이스 기반의 집단 키워드 질의 처리 방법 및 장치
KR20210100347A (ko) 가시화 플랫폼에서 사전 샘플을 생성하는 방법
CN110019987B (zh) 一种基于决策树的日志匹配方法和装置

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170117

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 8