KR100325688B1 - 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 - Google Patents

해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 Download PDF

Info

Publication number
KR100325688B1
KR100325688B1 KR1019990051585A KR19990051585A KR100325688B1 KR 100325688 B1 KR100325688 B1 KR 100325688B1 KR 1019990051585 A KR1019990051585 A KR 1019990051585A KR 19990051585 A KR19990051585 A KR 19990051585A KR 100325688 B1 KR100325688 B1 KR 100325688B1
Authority
KR
South Korea
Prior art keywords
bucket
entry
directory
last
determination
Prior art date
Application number
KR1019990051585A
Other languages
English (en)
Other versions
KR20010047384A (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 KR1019990051585A priority Critical patent/KR100325688B1/ko
Publication of KR20010047384A publication Critical patent/KR20010047384A/ko
Application granted granted Critical
Publication of KR100325688B1 publication Critical patent/KR100325688B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0684Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based

Abstract

본 발명은 리프 노드(Leaf Node)에 연결된 오버플로우 노드(Overflow Node)를 사용함으로써, 디렉토리의 분할을 지연하는 확장 해슁의 디렉토리 분할 시점 제어 방법 및 그를 이용한 엔트리 삽입, 삭제, 검색 방법을 제공하는데 그 목적이 있다.
본 발명에 따르면, 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법에 있어서, 오버플로우(Overflow)된 리프 노드(Leaf Node)가 새롭게 발생하면, 전체 리프 노드 수에 대한 오버플로우된 리프 노드 수의 비율을 계산하여 상기 계산값이 미리 정하여진 임계값을 초과하는지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 임계값을 초과하면, 디렉토리의 분할을 수행하고, 임계값을 초과하지 아니하면, 리프 노드 뒤에 새로운 오버플로우 노드를 연결시키는 제 2 단계를 포함하여 이루어진 것을 특징으로 하는 확장 해슁 디렉토리 분할 시점 제어 방법이 제공된다.

Description

해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 {A method for controlling directory splits of the extendible hashing}
본 발명은 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing)디렉토리(Directory) 분할 시점 제어 방법 및 그를 이용한 엔트리 삽입, 삭제, 검색 방법에 관한 것이며, 특히, 리프 노드(Leaf Node)에 연결된 오버플로우 노드(Overflow Node)를 사용함으로써, 디렉토리의 분할을 지연하는 확장 해슁의 디렉토리 분할 시점 제어 방법 및 그를 이용한 엔트리 삽입, 삭제, 검색 방법에 관한 것이다.
확장 해슁은 동적 해슁의 하나로서, 루트(Root)인 디렉토리와 리프 노드들의 집합의 이단계 구조를 가진다. 리프 노드는 객체(Object)들을 저장하는 저장 단위이며, 디렉토리는 특정한 키 값을 가지는 객체가 저장된 리프 노드를 찾기 위하여 사용된다.
디렉토리는 항상 2d개의 엔트리(Entry)를 가지는 배열 구조이며, 각 엔트리는 리프 노드의 주소값을 갖는다. 이 때, d는 현재 디렉토리의 깊이이며, 저장되는 객체의 수에 따라 동적으로 변화된다.
확장 해슁에서 사용되는 해쉬 함수(Hash Function)는 키의 도메인 내의 키 값을 해쉬 도메인 {0, 20, 21, 22, ...., 2e} 내의 한 값인 해쉬 값으로 변환한다. 이 때, e는 현재 디렉토리의 깊이 d 이상의 정수이다. 또한, 이진수로 표현된 해쉬 값의 가장 앞쪽의 d 비트 값을 사용하여, 상기 키 값과 연관된 디렉토리 엔트리를 찾을 수 있다.
리프 노드는 지역 깊이(Local Depth) 1을 가지며, 이곳에서 이진수로 표현된 해쉬 값의 가장 앞쪽의 비트 값이 같은 객체들이 저장된다. 따라서, 서로 다른 두개 이상의 디렉토리 엔트리들이 같은 리프 노드의 주소를 가리킬 수 있다.
도 1은 종래 기술에 따른 확장 해슁 구조도를 나타낸 것으로서, 상세히 설명하면 다음과 같다.
현재의 디렉토리 깊이 d는 3이며, 따라서 디렉토리는 8(=23)개의 엔트리들로 구성된다. 도 1의 리프 노드 A(101)는 해쉬 값의 첫 3비트가 000인 객체들을 저장하고, 리프 노드 B(102)는 해쉬 값의 첫 3 비트가 001인 객체들을 저장하고, 리프 노드 C(103)는 해쉬 값의 첫 3 비트가 010으로 시작하는 객체들을 저장하며, 리프 노드 D(104)는 해쉬 값의 첫 3 비트가 100으로 시작하는 객체들을 저장한다.
따라서 이러한 객체들과 대응되는 네 개의 디렉토리 엔트리들이 이 리프 노드의 주소 값을 갖는다.
상기 종래 기술에 따른 확장 해쉬의 문제점은 지역 깊이가 전역 깊이와 같은 한 리프 노드에 오버플로우(Overflow)가 발생하면 디렉토리 분할이 발생한다는 것이다. 이러한 디렉토리 분할은 디렉토리의 크기를 두 배로 증가시키므로, 디렉토리를 위한 저장 공간의 오버헤드(Overhead)가 커진다. 특히, 해쉬 함수가 객체들을 해쉬 공간상에 균일하게 분포시키지 못하는 경우, 디렉토리가 비정상적으로 크게 증가할 수 있다. 물론, 좋은 해쉬 함수를 사용함으로써, 이러한 문제를 어느 정도 완화시킬수 있다. 그러나, 좋은 해쉬 함수를 사용한다 하더라도, 해쉬 공간상에서 객체들의 완벽한 균일 분포를 보장할 수는 없으므로, 이러한 디렉토리 증가를 방지하는 근본적인 대책이 요구되고 있다.
위에서 서술한 종래 기술에 대하여는 R.Fagin, J. Nievergelt, N. pippenger 및 R. Strong이 공동으로 저술하여 'ACM Trans. on Database Systems'에 게재한 논문 'Extendible Hashing : A fast access method for dynamic files'에 상세하게 설명이 되어 있다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 것으로서, 지역 깊이가 전역 깊이와 같은 리프 노드에 오버플로우가 발생할 때마다 디렉토리를 분할하는 것이 아니라 리프 노드에 연결된 오버플로우 노드를 사용함으로써 디렉토리의 분할을 지연하는 확장 해슁의 디렉토리 분할 시점 제어 방법 및 그를 이용한 엔트리 삽입, 삭제, 검색 방법을 제공하는데 그 목적이 있다.
도 1은 종래 기술에 따른 확장 해슁의 구조도이고,
도 2a 및 도 2b는 본 발명의 일 실시예에 따른 확장 해슁의 구조도이고,
도 3은 도 2b에 도시된 디렉토리 분할 시점을 이용하여 구성한 확장 해쉬 인덱스 구조의 엔트리 삽입 방법의 과정을 나타낸 흐름도이고,
도 4a 및 도 4b는 도 2b에 도시된 디렉토리 분할 시점을 이용하여 구성한 확장 해쉬 인덱스 구조의 엔트리 삭제 방법의 과정을 나타낸 흐름도이고,
도 5는 도 2b에 도시된 디렉토리 분할 시점을 이용하여 구성한 확장 해쉬 인덱스 구조의 엔트리 검색 방법의 과정을 나타낸 흐름도이다.
앞서 설명한 바와 같은 목적을 달성하기 위한 본 발명에 따르면, 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법에 있어서, 오버플로우(Overflow)된 리프 노드(Leaf Node)가 새롭게 발생하면, 전체 리프 노드 수에 대한 오버플로우된 리프 노드 수의 비율을 계산하여 상기 계산값이 미리 정하여진 임계값을 초과하는지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 임계값을 초과하면, 디렉토리의 분할을 수행하고, 임계값을 초과하지 아니하면, 리프 노드 뒤에 새로운 오버플로우 노드를 연결시키는 제 2 단계를 포함하여 이루어진 것을 특징으로 하는 확장 해슁 디렉토리 분할 시점 제어 방법이 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 이용한 엔트리(Entry) 삽입 방법에 있어서, 삽입하려는 엔트리를 해슁 함수를 사용하여 디렉토리 크기 만큼의 비트로 된 디렉토리의 인덱스를 계산한 후, 상기 계산한 디렉토리의 인덱스에 연결된 버켓(홈 버켓 : Home Bucket)에 오버플로우 버켓이 존재하는지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 오버플로우 버켓이 존재하지 아니하면, 상기 홈 버켓에 엔트리가 삽입 가능한지 여부를 판단하여, 삽입 가능하지 아니하면, 지역 깊이(Local Depth)가 전역 깊이(Global Depth)보다 더 작은지 여부를 판단하는 제 2 단계와; 상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이보다 더 작으면, 두 개의 버켓을 새로 할당받아 홈 버켓에 있는 엔트리를 재해슁하여 나누어 넣는 제 3 단계와; 상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이와 같으면, 새로 연결된 홈 버켓에 엔트리를 삽입할 수 있는지 여부를 판단하여, 엔트리를 삽입할 수 없으면, 새로운 버켓을 할당받아 엔트리를 삽입한 후, 홈 버켓에 연결하고, 오버플로우된 리프 노드의 수를 하나 증가시키는 제 4 단계와; 홈 버켓의 수와 상기 제 4 단계에서 증가시킨 오버플로우된 리프 노드의 수의 비율을 계산하여 미리 지정한 임계값을 초과하여 디렉토리를 확장하여야 하면, 오버플로우 문제가 해결될 때까지, 오버플로우가 발생한 버켓을 제외하고는 모든 홈 버켓을 가리키는 디렉토리 엔트리가 두 배가 되도록 한 후, 오버플로우가 발생한 버켓은 두 개의 버켓에 엔트리를 분배하는 제 5 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삽입 방법이 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삭제 방법에 있어서, 삭제할 엔트리가 들어 있을 디렉토리 인덱스를 계산하기 위하여 삭제할 엔트리를 해슁하고, 상기 디렉토리 인덱스에 연결되어 있는 버켓에서 삭제할 엔트리의 위치를 찾은 후, 상기 삭제할 엔트리가 있는 버켓에 연결되어 있는 마지막 버켓을 찾아서, 상기 삭제할 엔트리가 마지막 버켓의 마지막 엔트리인지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 마지막 버켓의 마지막 엔트리가 아니면, 상기 삭제할 엔트리의 위치에 마지막 버켓의 마지막 엔트리를 넣고, 마지막 버켓의 마지막 엔트리에 NULL을 넣은 후, 마지막 버켓에 언더플로우가 발생하는지 여부를 판단하는 제 2 단계와; 상기 제 2 단계에서의 판단 결과, 언더플로우가 발생하면, 언더플로우가 발생한 디렉토리 인덱스에 연결된 오버플로우 버켓이 존재하는지 여부를 판단하여, 오버플로우 버켓이 존재하면, 마지막 버켓에 엔트리가 존재하는지 여부를 판단하는 제 3 단계와; 상기 제 3 단계에서의 판단 결과, 마지막 버켓에 엔트리가 존재하면, 종료하고, 마지막 버켓에 엔트리가 존재하지 아니하면, 마지막 버켓을 반환한 후, 상기 반환한 버켓이 홈 버켓에 연결된 오버플로우 버켓인지 여부를 판단하는 제 4 단계와; 상기 제 4 단계에서의 판단 결과, 오버플로우 버켓이면, 오버플로우된 리프 노드의 수를 하나 감소시킨 후, 종료하는 제 5 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삭제 방법이 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 이용한 엔트리 검색 방법에 있어서, 해슁 함수를 이용하여 디렉토리의 인덱스를 계산한 후, 상기 디렉토리에 연결된 버켓을 노드(Node)로 지정하는 제 1 단계와; 상기 제 1 단계에서 지정된 노드에 엔트리가 존재하는지 여부를 판단하는 제 2 단계와; 상기 제 2 단계에서의 판단 결과, 엔트리가 존재하고, 검색하고자 하는 키 값과 노드에 있는 엔트리의 키 값이 같으면, 상기 엔트리의 주소를 저장하는 제 3 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 검색 방법이 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서, 오버플로우된 리프 노드가 새롭게 발생하면, 전체 리프 노드 수에 대한 오버플로우된 리프 노드 수의 비율을 계산하여 상기 계산값이 미리 정하여진 임계값을 초과하는지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 임계값을 초과하면, 디렉토리의 분할을 수행하고, 임계값을 초과하지 아니하면, 리프 노드 뒤에 새로운 오버플로우 노드를 연결시키는 제 2 단계를 포함하여 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삽입 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서, 삽입하려는 엔트리를 해슁 함수를 사용하여 디렉토리 크기 만큼의 비트로 된 디렉토리의 인덱스를 계산한 후, 상기 계산한 디렉토리의 인덱스에 연결된 버켓(홈 버켓 : Home Bucket)에 오버플로우 버켓이 존재하는지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 오버플로우 버켓이 존재하지 아니하면, 상기 홈 버켓에 엔트리가 삽입 가능한지 여부를 판단하여, 삽입 가능하지 아니하면, 지역 깊이가 전역 깊이보다 더 작은지 여부를 판단하는 제 2 단계와; 상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이보다 더 작으면, 두 개의 버켓을 새로 할당받아 홈 버켓에 있는 엔트리를 재해슁하여 나누어 넣는 제 3 단계와; 상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이와 같으면, 새로 연결된 홈 버켓에 엔트리를 삽입할 수 있는지 여부를 판단하여, 엔트리를 삽입할 수 없으면, 새로운 버켓을 할당받아 엔트리를 삽입한 후, 홈 버켓에 연결하고, 오버플로우된 리프 노드의 수를 하나 증가시키는 제 4 단계와; 홈 버켓의 수와 상기 제 4 단계에서 증가시킨 오버플로우된 리프 노드의 수의 비율을 계산하여 미리 지정한 임계값을 초과하여 디렉토리를 확장하여야 하면, 오버플로우 문제가 해결될 때까지, 오버플로우가 발생한 버켓을 제외하고는 모든 홈 버켓을 가리키는 디렉토리 엔트리가 두 배가 되도록 한 후, 오버플로우가 발생한 버켓은 두 개의 버켓에 엔트리를 분배하는 제 5 단계를 포함하여 이루어진 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삭제 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서, 삭제할 엔트리가 들어 있을 디렉토리 인덱스를 계산하기 위하여 삭제할 엔트리를 해슁하고, 상기 디렉토리 인덱스에 연결되어 있는 버켓에서 삭제할 엔트리의 위치를 찾은 후, 상기 삭제할 엔트리가 있는 버켓에 연결되어 있는 마지막 버켓을 찾아서, 상기 삭제할 엔트리가 마지막 버켓의 마지막 엔트리인지 여부를 판단하는 제 1 단계와; 상기 제 1 단계에서의 판단 결과, 마지막 버켓의 마지막 엔트리가 아니면, 상기 삭제할 엔트리의 위치에 마지막 버켓의 마지막 엔트리를 넣고, 마지막 버켓의 마지막 엔트리에 NULL을 넣은 후, 마지막 버켓에 언더플로우가 발생하는지 여부를 판단하는 제 2 단계와; 상기 제 2 단계에서의 판단 결과, 언더플로우가 발생하면, 언더플로우가 발생한 디렉토리 인덱스에 연결된 오버플로우 버켓이 존재하는지 여부를 판단하여, 오버플로우 버켓이 존재하면, 마지막 버켓에 엔트리가 존재하는지 여부를 판단하는 제 3 단계와; 상기 제 3 단계에서의 판단 결과, 마지막 버켓에 엔트리가 존재하면, 종료하고, 마지막 버켓에 엔트리가 존재하지 아니하면, 마지막 버켓을 반환한 후, 상기 반환한 버켓이 홈 버켓에 연결된 오버플로우 버켓인지 여부를 판단하는 제 4 단계와; 상기 제 4 단계에서의 판단 결과, 오버플로우 버켓이면, 오버플로우된 리프 노드의 수를 하나 감소시킨 후, 종료하는 제 5 단계를 포함하여 이루어진 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
또한, 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어 방법을 이용한 엔트리 검색 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서, 해슁 함수를 이용하여 디렉토리의 인덱스를 계산한 후, 상기 디렉토리에 연결된 버켓을 노드로 지정하는 제 1 단계와; 상기 제 1 단계에서 지정된 노드에 엔트리가 존재하는지 여부를 판단하는 제 2 단계와; 상기 제 2 단계에서의 판단 결과, 엔트리가 존재하고, 검색하고자 하는 키 값과 노드에 있는 엔트리의 키 값이 같으면, 상기 엔트리의 주소를 저장하는 제 3 단계를 포함하여 이루어진 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
아래에서, 본 발명에 따른 양호한 일 실시예를 첨부한 도면을 참조로 하여 상세히 설명하겠다.
도 2a 및 도 2b는 본 발명의 일 실시예에 따른 확장 해슁의 구조도로서, 이를 상세히 설명하면 다음과 같다.
디렉토리 분할의 필요성을 결정하는 기준으로는 첫째, 전체 리프 노드 수에 대한 전체 오버플로우 노드 수의 비율, 둘째, 전체 리프 노드 수에 대한 오버플로우된 리프 노드 수의 비율을 고려할 수 있다. 본 발명에서 디렉토리 분할을 시도할 기준을 결정하기 위하여 도 2a와 도 2b를 비교하여 본다.
도 2a와 도 2b는 첫 번째 기준으로 보면, 비율이 동일하지만, 두 번째 기준으로 보면, 도 2a의 값이 훨씬 크다.
예상되는 질의들이 해쉬 공간상에 균일하게 분포한다고 가정하면, 디렉토리를 분할함으로써 얻어지는 검색 성능은 도 2a의 경우는 약 1.5 배인 반면, 도 2b의 경우는 미미하다.
따라서, 본 발명에서는 디렉토리 분할의 필요성을 결정하는 기준으로서, 도 2b의 방법을 사용한다. 즉, 오버플로우된 리프 노드가 새롭게 발생하는 경우, 도 2b에서 제시된 비율값을 새롭게 계산한다. 이 때, 이 값이 미리 정하여진 임계값을 초과하는 경우에는 디렉토리의 분할을 수행하고, 그러하지 아니한 경우에는 리프 노드 뒤에 새로운 오버플로우 노드를 연결함으로써 분할을 지연시킨다.
도 3은 도 2b에 도시된 디렉토리 분할 시점을 이용하여 구성한 확장 해쉬 인덱스 구조의 엔트리 삽입 방법의 흐름을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S301에서, 확장 해쉬에 처음 엔트리가 삽입되는 경우에 발생하게 되는 디렉토리가 NULL인지 여부를 판단한다.
상기 스텝 S302에서의 판단 결과, 디렉토리가 NULL이면, 스텝 S303에서, 새로운 디렉토리를 만든 후, 스텝 S303에서, 삽입하려는 엔트리를 해슁 함수를 사용하여 디렉토리 크기만큼의 비트로 된 디렉토리의 인덱스를 계산하고, 스텝 S304에서, 상기 스텝 S303에서 계산된 디렉토리 인덱스에 연결된 버켓을 홈 버켓으로 한 후, 스텝 S305에서, 상기 계산된 디렉토리 인덱스에 연결된 홈 버켓에 다시 오버 플로우 버켓이 존재하는지 여부를 판단한다.
한편, 상기 스텝 S302에서의 판단 결과, 디렉토리가 NULL이 아니면, 이미 디렉토리가 만들어져 있는 것이 되므로, 상기 스텝 S303을 바로 수행한다.
상기 스텝 S305에서의 판단 결과, 홈 버켓에 오버플로우 버켓이 연결되어 있으면, 스텝 S306에서, 체인으로 연결된 오버플로우 버켓의 마지막 버켓에 엔트리가 삽입 가능한지 여부를 판단한다.
상기 스텝 S306에서의 판단 결과, 삽입 가능하지 아니하면, 스텝 S307에서, 새로운 버켓을 할당하여 체인으로 연결된 오버플로우 버켓의 마지막 버켓에 연결하고, 스텝 S308에서, 엔트리를 마지막 버켓에 삽입한 후, 종료한다.
상기 스텝 S306에서의 판단 결과, 삽입이 가능하면, 상기 스텝 S308을 수행한다.
또한, 상기 스텝 S305에서의 판단 결과, 오버플로우 버켓이 존재하지 아니하면, 스텝 S309에서, 상기 계산된 디렉토리 인덱스에 연결된 홈 버켓에 삽입이 가능하지 여부를 판단한다.
상기 스텝 S309에서의 판단 결과, 삽입이 가능하면, 스텝 S310에서, 상기 홈 버켓에 엔트리를 삽입한 후, 종료한다.
상기 스텝 S309에서의 판단 결과, 삽입이 가능하지 아니하면, 스텝 S311에서, 지역 깊이(Local Depth)가 전역 깊이(Global Depth)보다 작은지 여부를 판단한다.
상기 스텝 S311에서의 판단 결과, 작으면, 스텝 S312에서, 두 개의 버켓을 새로 할당받아 홈 버켓에 있는 엔트리를 재해슁하여 넣고, 스텝 S313에서, 연결된 홈 버켓에 엔트리를 삽입할 수 있는지 여부를 판단한다.
상기 스텝 S313에서의 판단 결과, 삽입이 가능하면, 스텝 S314에서, 홈 버켓에 엔트리를 삽입하고, 종료한다.
상기 스텝 S313에서의 판단 결과, 홈 버켓에 삽입이 가능하지 아니하면, 스텝 S315에서, 새로운 버켓을 할당받아 엔트리를 삽입하여 홈 버켓에 연결하고, 오버플로우된 리프 노드의 수를 하나 증가시킨 후, 스텝 S316에서, 홈 버켓의 수와 오버플로우된 리프 노드의 수의 비율을 계산하여 디렉토리를 확장하여야 하는지 여부를 판단한다. 이 때, 디렉토리 확장 여부는 위에서 서술한 확장 해슁의 디렉토리 분할 시점 제어 방법을 이용한다.
상기 스텝 S316에서의 판단 결과, 디렉토리를 확장하여야 하면, 스텝 S317에서, 오버플로우 문제가 해결될 때까지, 오버플로우가 발생한 버켓을 제외하고는 모든 홈 버켓을 가리키는 디렉토리 엔트리가 두 배가 되도록 하고, 오버플로우가 발생한 버켓은 두 개의 버켓에 엔트리를 분배한 후, 종료한다.
상기 스텝 S316에서의 판단 결과, 디렉토리를 확장할 필요가 없으면, 즉, 오버플로우 문제가 발생하지 아니하면, 종료한다.
도 4a 및 도 4b는 도 2b에 도시된 디렉토리 분할 시점을 이용하여 구성한 확장 해쉬 인덱스 구조의 엔트리 삭제 방법의 흐름을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S401에서, 삭제할 엔트리가 들어 있을 디렉토리 인덱스를 계산하기 위하여 삭제할 엔트리를 해슁한 후, 스텝 S402에서, 상기 디렉토리 인덱스에 연결되어 있는 버켓에서 삭제할 엔트리의 위치를 찾고, 스텝 S403에서, 삭제할 엔트리가 있는지 여부를 판단한다.
상기 스텝 S403에서의 판단 결과, 삭제할 엔트리가 없으면, 종료하고, 삭제할 엔트리가 존재하면, 스텝 S404에서, 삭제할 엔트리가 있는 버켓에 연결되어 있는 마지막 버켓을 찾은 후, 스텝 S405에서, 삭제할 엔트리가 마지막 버켓의 마지막 엔트리인지 여부를 판단한다.
상기 스텝 S405에서의 판단 결과, 마지막 버켓의 마지막 엔트리가 아니면, 스텝 S406에서, 삭제할 엔트리 위치에 마지막 버켓의 마지막 엔트리를 넣고, 마지막 버켓의 마지막 엔트리 위치에 NULL을 넣은 후, 스텝 S408에서, 마지막 버켓에 언더플로우가 발생하는지 여부를 판단한다.
또한, 상기 스텝 S405에서의 판단 결과, 마지막 버켓의 마지막 엔트리이면, 스텝 S407에서, 삭제할 엔트리 위치에 NULL을 넣은 후, 상기 스텝 S408로 진행한다.
상기 스텝 S408에서의 판단 결과, 언더플로우가 발생하지 아니하면, 종료하고, 언더플로우가 발생하면, 스텝 S409에서, 상기 디렉토리 인덱스에 연결된 오버플로우 버켓이 존재하는지 여부를 판단한다.
상기 스텝 S409에서의 판단 결과, 오버플로우 버켓이 존재하지 아니하면, 스텝 S410에서, 병합할 디렉토리 인덱스를 계산한 후, 스텝 S411에서, 병합할 인덱스인지 여부를 판단한다.
상기 스텝 S411에서의 판단 결과, 병합할 인덱스가 아니면, 종료하고, 병합할 인덱스이면, 스텝 S412에서, 언더플로우가 발생한 버켓인지 여부를 판단한다.
상기 스텝 S412에서의 판단 결과, 언더플로우가 발생한 버켓이면, 상기 스텝 S411로 복귀하고, 언더플로우가 발생하지 아니한 버켓이면, 스텝 S413에서, 홈 버켓의 수를 하나 감소시키고, 디렉토리에 연결된 홈 버켓에 있는 엔트리를 언더플로우가 발생한 버켓에 넣는다. 이어서, 스텝 S414에서, 홈 버켓을 반환하고, 그 인덱스에 언더플로우가 발생한 버켓을 연결시킨 후, 상기 스텝 S411로 복귀한다.
한편, 상기 스텝 S409에서의 판단 결과, 오버플로우 버켓이 존재하면, 스텝 S415에서, 마지막 버켓에 엔트리가 존재하는지 여부를 판단한다.
상기 스텝 S415에서의 판단 결과, 마지막 버켓에 엔트리가 존재하지 아니하면, 스텝 S416에서, 마지막 버켓을 반환한 후, 스텝 S417에서, 상기 스텝 S416에서 반환한 버켓이 홈 버켓에 연결된 오버플로우 버켓인지 여부를 판단한다.
상기 스텝 S417에서의 판단 결과, 오버플로우 버켓이 아니면, 종료하고, 오버플로우 버켓이면, 스텝 S418에서, 오버플로우된 리프 노드의 수를 하나 감소시키고, 종료한다.
한편, 상기 스텝 S415에서의 판단 결과, 마지막 버켓에 엔트리가 존재하면, 종료한다.
도 5는 도 2b에 도시된 디렉토리 분할 시점을 이용하여 구성한 확장 해쉬 인덱스 구조의 엔트리 검색 방법의 흐름을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S501에서, 디렉토리가 NULL인지 여부를 판단한다.
상기 스텝 S501에서의 판단 결과, 디렉토리가 NULL이면, 종료하고, NULL이 아니면, 스텝 S502에서, 해슁 함수를 사용하여 디렉토리의 인덱스를 계산하고, 스텝 S503에서, 상기 스텝 S502에서 계산된 디렉토리의 인덱스에 연결된 버켓을 노드(Node)로 지정한 후, 스텝 S504에서, 상기 지정된 노드가 NULL인지 여부를 판단한다.
상기 스텝 S504에서의 판단 결과, NULL이면, 종료하고, NULL이 아니면, 스텝 S505에서, 상기 스텝 S504에서 지정된 노드에 엔트리가 존재하는지 여부를 판단한다.
상기 스텝 S505에서의 판단 결과, 엔트리가 존재하지 아니하면, 스텝 S506에서, 상기 인덱스에 연결된 다음 버켓을 노드로 재지정한 후, 상기 스텝 S504로 복귀한다.
상기 스텝 S505에서의 판단 결과, 엔트리가 존재하면, 스텝 S507에서, 상기 지정된 노드에 있는 엔트리의 키 값과 검색하고자 하는 키 값이 같은지 여부를 판단한다.
상기 스텝 S507에서의 판단 결과, 같지 아니하면, 상기 스텝 S505로 복귀하고, 같으면, 스텝 S508에서, 상기 엔트리를 저장한 후, 종료한다.
상기와 같은 본 발명은 컴퓨터로 읽을 수 있는 기록 매체로 기록되고, 컴퓨터에 의해 처리될 수 있다.
앞서 상세히 설명한 바와 같이 본 발명은 해쉬 인덱스 구조에 있어서, 리프 노드에 연결된 오버플로우 노드를 사용하여 확장 해슁(Extendible Hashing)의 디렉토리 분할을 수행함으로써, 불필요한 디렉토리 분할로 인한 심각한 저장 공간의 낭비 현상을 방지할 수 있는 효과가 있다.
또한, 위에서 서술한 확장 해슁의 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삽입, 삭제, 검색 방법을 추가로 제공함으로써, 저장 공간의 낭비를 줄이고, 보다 빠르고 간단하게 엔트리의 삽입, 삭제 및 검색을 할 수 있는 효과가 있다.
이상에서 본 발명에 대한 기술 사상을 첨부 도면과 함께 서술하였지만 이는 본 발명의 가장 양호한 일 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술 분야의 통상의 지식을 가진 자이면 누구나 본 발명의 기술 사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.

Claims (14)

  1. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법에 있어서,
    오버플로우(Overflow)된 리프 노드(Leaf Node)가 새롭게 발생하면, 전체 리프 노드 수에 대한 오버플로우된 리프 노드 수의 비율을 계산하여 상기 계산값이 미리 정하여진 임계값을 초과하는지 여부를 판단하는 제 1 단계와;
    상기 제 1 단계에서의 판단 결과, 임계값을 초과하면, 디렉토리의 분할을 수행하고, 임계값을 초과하지 아니하면, 리프 노드 뒤에 새로운 오버플로우 노드를 연결시키는 제 2 단계를 포함하여 이루어진 것을 특징으로 하는 확장 해슁 디렉토리 분할 시점 제어 방법.
  2. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법을 이용한 엔트리(Entry) 삽입 방법에 있어서,
    삽입하려는 엔트리를 해슁 함수를 사용하여 디렉토리 크기 만큼의 비트로 된 디렉토리의 인덱스를 계산한 후, 상기 계산한 디렉토리의 인덱스에 연결된 버켓(홈 버켓 : Home Bucket)에 오버플로우 버켓이 존재하는지 여부를 판단하는 제 1 단계와;
    상기 제 1 단계에서의 판단 결과, 오버플로우 버켓이 존재하지 아니하면, 상기 홈 버켓에 엔트리가 삽입 가능한지 여부를 판단하여, 삽입 가능하지 아니하면, 지역 깊이(Local Depth)가 전역 깊이(Global Depth)보다 더 작은지 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이보다 더 작으면, 두 개의 버켓을 새로 할당받아 홈 버켓에 있는 엔트리를 재해슁하여 나누어 넣는 제 3 단계와;
    상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이와 같으면, 새로 연결된 홈 버켓에 엔트리를 삽입할 수 있는지 여부를 판단하여, 엔트리를 삽입할 수 없으면, 새로운 버켓을 할당받아 엔트리를 삽입한 후, 홈 버켓에 연결하고, 오버플로우된 리프 노드의 수를 하나 증가시키는 제 4 단계와;
    홈 버켓의 수와 상기 제 4 단계에서 증가시킨 오버플로우된 리프 노드의 수의 비율을 계산하여 미리 지정한 임계값을 초과하여 디렉토리를 확장하여야 하면, 오버플로우 문제가 해결될 때까지, 오버플로우가 발생한 버켓을 제외하고는 모든 홈 버켓을 가리키는 디렉토리 엔트리가 두 배가 되도록 한 후, 오버플로우가 발생한 버켓은 두 개의 버켓에 엔트리를 분배하는 제 5 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삽입 방법.
  3. 제 2 항에 있어서,
    상기 제 1 단계에서의 판단 결과, 오버플로우 버켓이 존재하면, 상기 오버플로우 버켓의 마지막 버켓에 엔트리가 삽입 가능한지를 조사하는 제 6 단계와;
    상기 제 6 단계에서의 판단 결과, 삽입 가능하지 아니하면, 새로운 버켓을 할당하고 마지막 버켓에 연결한 후, 삽입하고자 하는 엔트리를 마지막 버켓에 삽입하는 제 7 단계와;
    상기 제 6 단계에서의 판단 결과, 삽입 가능하면, 상기 홈 버켓에 엔트리를 삽입하는 제 8 단계를 더 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점을 이용한 엔트리 삽입 방법.
  4. 제 2 항에 있어서,
    상기 제 2 단계는,
    상기 홈 버켓에 엔트리가 삽입 가능하면, 상기 홈 버켓에 엔트리를 삽입하는 서브 단계를 더 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점을 이용한 엔트리 삽입 방법.
  5. 제 2 항에 있어서,
    상기 제 2 단계에서의 판단 결과, 지역 깊이가 전역 깊이보다 크거나 같으면, 상기 제 6 단계로 진행하는 것을 특징으로 하는 디렉토리 분할 시점을 이용한엔트리 삽입 방법.
  6. 제 2 항에 있어서,
    상기 제 4 단계에서의 판단 결과, 새로 연결된 홈 버켓에 엔트리를 삽입할 수 있으면, 상기 홈 버켓에 엔트리를 삽입하는 제 9 단계를 더 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점을 이용한 엔트리 삽입 방법.
  7. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법을 이용한 엔트리(Entry) 삭제 방법에 있어서,
    삭제할 엔트리가 들어 있을 디렉토리 인덱스를 계산하기 위하여 삭제할 엔트리를 해슁하고, 상기 디렉토리 인덱스에 연결되어 있는 버켓에서 삭제할 엔트리의 위치를 찾은 후, 상기 삭제할 엔트리가 있는 버켓에 연결되어 있는 마지막 버켓을 찾아서, 상기 삭제할 엔트리가 마지막 버켓의 마지막 엔트리인지 여부를 판단하는 제 1 단계와;
    상기 제 1 단계에서의 판단 결과, 마지막 버켓의 마지막 엔트리가 아니면, 상기 삭제할 엔트리의 위치에 마지막 버켓의 마지막 엔트리를 넣고, 마지막 버켓의 마지막 엔트리에 NULL을 넣은 후, 마지막 버켓에 언더플로우가 발생하는지 여부를판단하는 제 2 단계와;
    상기 제 2 단계에서의 판단 결과, 언더플로우가 발생하면, 언더플로우가 발생한 디렉토리 인덱스에 연결된 오버플로우 버켓이 존재하는지 여부를 판단하여, 오버플로우 버켓이 존재하면, 마지막 버켓에 엔트리가 존재하는지 여부를 판단하는 제 3 단계와;
    상기 제 3 단계에서의 판단 결과, 마지막 버켓에 엔트리가 존재하면, 종료하고, 마지막 버켓에 엔트리가 존재하지 아니하면, 마지막 버켓을 반환한 후, 상기 반환한 버켓이 홈 버켓에 연결된 오버플로우 버켓인지 여부를 판단하는 제 4 단계와;
    상기 제 4 단계에서의 판단 결과, 오버플로우 버켓이면, 오버플로우된 리프 노드의 수를 하나 감소시킨 후, 종료하는 제 5 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삭제 방법.
  8. 제 7 항에 있어서,
    상기 제 3 단계는,
    오버플로우 버켓이 존재하지 아니하면, 병합할 디렉토리 인덱스를 계산하여, 상기 계산된 디렉토리 인덱스를 기준으로 언더플로우가 발생한 버켓인지 여부를 판단하는 제 1 서브 단계와;
    상기 제 1 서브 단계에서의 판단 결과, 언더플로우가 발생한 버켓이 아니면,홈 버켓의 수를 하나 감소시키고, 디렉토리에 연결된 홈 버켓에 있는 엔트리를 언더플로우가 발생한 버켓에 넣은 후, 홈 버켓을 반환하며, 상기 인덱스에 언더플로우가 발생한 버켓을 연결시키고, 상기 제 1 서브 단계로 복귀하는 제 2 서브 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 삭제 방법.
  9. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법을 이용한 엔트리(Entry) 검색 방법에 있어서,
    해슁 함수를 이용하여 디렉토리의 인덱스를 계산한 후, 상기 디렉토리에 연결된 버켓을 노드(Node)로 지정하는 제 1 단계와;
    상기 제 1 단계에서 지정된 노드에 엔트리가 존재하는지 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서의 판단 결과, 엔트리가 존재하고, 검색하고자 하는 키 값과 노드에 있는 엔트리의 키 값이 같으면, 상기 엔트리의 주소를 저장하는 제 3 단계를 포함하여 이루어진 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 검색 방법.
  10. 제 9 항에 있어서,
    상기 제 1 단계에서의 판단 결과, 엔트리가 존재하지 아니하면, 상기 제 1 단계에서 지정된 노드의 다음에 연결된 버켓을 노드로 재지정한 후, 상기 제 2 단계로 복귀하는 것을 특징으로 하는 디렉토리 분할 시점 제어 방법을 이용한 엔트리 검색 방법.
  11. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서,
    오버플로우(Overflow)된 리프 노드(Leaf Node)가 새롭게 발생하면, 전체 리프 노드 수에 대한 오버플로우된 리프 노드 수의 비율을 계산하여 상기 계산값이 미리 정하여진 임계값을 초과하는지 여부를 판단하는 제 1 단계와;
    상기 제 1 단계에서의 판단 결과, 임계값을 초과하면, 디렉토리의 분할을 수행하고, 임계값을 초과하지 아니하면, 리프 노드 뒤에 새로운 오버플로우 노드를 연결시키는 제 2 단계를 포함하여 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  12. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing)디렉토리(Directory) 분할 시점 제어 방법을 이용한 엔트리(Entry) 삽입 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서,
    삽입하려는 엔트리를 해슁 함수를 사용하여 디렉토리 크기 만큼의 비트로 된 디렉토리의 인덱스를 계산한 후, 상기 계산한 디렉토리의 인덱스에 연결된 버켓(홈 버켓 : Home Bucket)에 오버플로우 버켓이 존재하는지 여부를 판단하는 제 1 단계와;
    상기 제 1 단계에서의 판단 결과, 오버플로우 버켓이 존재하지 아니하면, 상기 홈 버켓에 엔트리가 삽입 가능한지 여부를 판단하여, 삽입 가능하지 아니하면, 지역 깊이(Local Depth)가 전역 깊이(Global Depth)보다 더 작은지 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이보다 더 작으면, 두 개의 버켓을 새로 할당받아 홈 버켓에 있는 엔트리를 재해슁하여 나누어 넣는 제 3 단계와;
    상기 제 2 단계에서의 판단 결과, 홈 버켓의 깊이가 디렉토리 깊이와 같으면, 새로 연결된 홈 버켓에 엔트리를 삽입할 수 있는지 여부를 판단하여, 엔트리를 삽입할 수 없으면, 새로운 버켓을 할당받아 엔트리를 삽입한 후, 홈 버켓에 연결하고, 오버플로우된 리프 노드의 수를 하나 증가시키는 제 4 단계와;
    홈 버켓의 수와 상기 제 4 단계에서 증가시킨 오버플로우된 리프 노드의 수의 비율을 계산하여 미리 지정한 임계값을 초과하여 디렉토리를 확장하여야 하면, 오버플로우 문제가 해결될 때까지, 오버플로우가 발생한 버켓을 제외하고는 모든홈 버켓을 가리키는 디렉토리 엔트리가 두 배가 되도록 한 후, 오버플로우가 발생한 버켓은 두 개의 버켓에 엔트리를 분배하는 제 5 단계를 포함하여 이루어진 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  13. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법을 이용한 엔트리(Entry) 삭제 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서,
    삭제할 엔트리가 들어 있을 디렉토리 인덱스를 계산하기 위하여 삭제할 엔트리를 해슁하고, 상기 디렉토리 인덱스에 연결되어 있는 버켓에서 삭제할 엔트리의 위치를 찾은 후, 상기 삭제할 엔트리가 있는 버켓에 연결되어 있는 마지막 버켓을 찾아서, 상기 삭제할 엔트리가 마지막 버켓의 마지막 엔트리인지 여부를 판단하는 제 1 단계와;
    상기 제 1 단계에서의 판단 결과, 마지막 버켓의 마지막 엔트리가 아니면, 상기 삭제할 엔트리의 위치에 마지막 버켓의 마지막 엔트리를 넣고, 마지막 버켓의 마지막 엔트리에 NULL을 넣은 후, 마지막 버켓에 언더플로우가 발생하는지 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서의 판단 결과, 언더플로우가 발생하면, 언더플로우가 발생한 디렉토리 인덱스에 연결된 오버플로우 버켓이 존재하는지 여부를 판단하여, 오버플로우 버켓이 존재하면, 마지막 버켓에 엔트리가 존재하는지 여부를 판단하는제 3 단계와;
    상기 제 3 단계에서의 판단 결과, 마지막 버켓에 엔트리가 존재하면, 종료하고, 마지막 버켓에 엔트리가 존재하지 아니하면, 마지막 버켓을 반환한 후, 상기 반환한 버켓이 홈 버켓에 연결된 오버플로우 버켓인지 여부를 판단하는 제 4 단계와;
    상기 제 4 단계에서의 판단 결과, 오버플로우 버켓이면, 오버플로우된 리프 노드의 수를 하나 감소시킨 후, 종료하는 제 5 단계를 포함하여 이루어진 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  14. 해쉬 인덱스(Hash Index) 구조의 확장 해슁(Extendible Hashing) 디렉토리(Directory) 분할 시점 제어 방법을 이용한 엔트리(Entry) 검색 방법을 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서,
    해슁 함수를 이용하여 디렉토리의 인덱스를 계산한 후, 상기 디렉토리에 연결된 버켓을 노드(Node)로 지정하는 제 1 단계와;
    상기 제 1 단계에서 지정된 노드에 엔트리가 존재하는지 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서의 판단 결과, 엔트리가 존재하고, 검색하고자 하는 키 값과 노드에 있는 엔트리의 키 값이 같으면, 상기 엔트리의 주소를 저장하는 제 3 단계를 포함하여 이루어진 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1019990051585A 1999-11-19 1999-11-19 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법 KR100325688B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990051585A KR100325688B1 (ko) 1999-11-19 1999-11-19 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990051585A KR100325688B1 (ko) 1999-11-19 1999-11-19 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법

Publications (2)

Publication Number Publication Date
KR20010047384A KR20010047384A (ko) 2001-06-15
KR100325688B1 true KR100325688B1 (ko) 2002-02-25

Family

ID=19620891

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990051585A KR100325688B1 (ko) 1999-11-19 1999-11-19 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법

Country Status (1)

Country Link
KR (1) KR100325688B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101072558B1 (ko) 2009-12-30 2011-10-11 동국대학교 산학협력단 해싱 기반의 데이터 관리 방법 및 장치
KR101340706B1 (ko) 2011-12-08 2013-12-11 한양대학교 에리카산학협력단 플래시 메모리 기반 저장 장치를 위한 하이브리드 해시 인덱스
US9971799B2 (en) 2012-09-28 2018-05-15 Samsung Electronics Co., Ltd. Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100484942B1 (ko) 2002-03-14 2005-04-25 한국전자통신연구원 대용량 파일시스템의 디렉토리 관리방법
KR101123335B1 (ko) * 2009-01-15 2012-03-28 연세대학교 산학협력단 해시 인덱스 구성 방법과 그 장치, 및 상기 장치를 구비하는 데이터 저장 장치, 및 상기 방법을 구현하는 프로그램이 기록된 기록매체
KR102360879B1 (ko) * 2019-02-21 2022-02-10 성균관대학교산학협력단 캐시라인 컨시어스 익스텐더블 해싱 방법 및 장치
KR102388458B1 (ko) * 2019-10-31 2022-04-21 울산과학기술원 데이터 키 값 변환 방법 및 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07168841A (ja) * 1993-12-14 1995-07-04 Shikoku Nippon Denki Software Kk ハッシュテーブル生成方法
JPH07311704A (ja) * 1994-05-19 1995-11-28 Fujitsu Ltd ディレクトリシステム
JPH0991303A (ja) * 1995-09-22 1997-04-04 Fujitsu Ltd データ管理装置
JPH1153199A (ja) * 1997-07-30 1999-02-26 Casio Comput Co Ltd ハッシング制御方法及び装置
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07168841A (ja) * 1993-12-14 1995-07-04 Shikoku Nippon Denki Software Kk ハッシュテーブル生成方法
JPH07311704A (ja) * 1994-05-19 1995-11-28 Fujitsu Ltd ディレクトリシステム
JPH0991303A (ja) * 1995-09-22 1997-04-04 Fujitsu Ltd データ管理装置
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
JPH1153199A (ja) * 1997-07-30 1999-02-26 Casio Comput Co Ltd ハッシング制御方法及び装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101072558B1 (ko) 2009-12-30 2011-10-11 동국대학교 산학협력단 해싱 기반의 데이터 관리 방법 및 장치
KR101340706B1 (ko) 2011-12-08 2013-12-11 한양대학교 에리카산학협력단 플래시 메모리 기반 저장 장치를 위한 하이브리드 해시 인덱스
US9971799B2 (en) 2012-09-28 2018-05-15 Samsung Electronics Co., Ltd. Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program

Also Published As

Publication number Publication date
KR20010047384A (ko) 2001-06-15

Similar Documents

Publication Publication Date Title
US4611272A (en) Key-accessed file organization
US6067547A (en) Hash table expansion and contraction for use with internal searching
US5263160A (en) Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory
US5687361A (en) System for managing and accessing a dynamically expanding computer database
KR100856245B1 (ko) 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법
US7681010B2 (en) Apparatus and method for a managing file system
US6449613B1 (en) Method and data processing system for hashing database record keys in a discontinuous hash table
Lomet Bounded index exponential hashing
KR100325688B1 (ko) 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법
Otoo et al. A mapping function for the directory of a multidimensional extendible hashing
US6961739B2 (en) Method for managing directories of large-scale file system
KR100999408B1 (ko) 해시트리를 이용한 url 검색방법
CN116821127A (zh) kv存储的分布式数据库哈希索引实现方法
Jensen et al. Optimality in external memory hashing
CN103246718A (zh) 文件访问方法、装置和设备
CN104537023A (zh) 一种反向索引记录的存储方法及装置
CN113342706A (zh) 一种基于非易失性内存的写优化可扩展哈希索引结构以及插入、刷新和删除方法
CA2675915C (en) Content addressable storage systems and methods employing searchable blocks
EP0117906B1 (en) Key-accessed file organization
Afshani et al. Cross-referenced dictionaries and the limits of write optimization
Pramanik et al. Multi-directory hashing
JP3164257B2 (ja) 索引方法
KR970002416B1 (ko) 고성능 자료검색을 위한 확장 버켓사슬 해쉬 구조
Chung Indexed extendible hashing
KR101866697B1 (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: 20100201

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee