KR100256678B1 - 분할 시그너춰 파일을 위한 디렉토리 관리 방법 - Google Patents

분할 시그너춰 파일을 위한 디렉토리 관리 방법 Download PDF

Info

Publication number
KR100256678B1
KR100256678B1 KR1019970074485A KR19970074485A KR100256678B1 KR 100256678 B1 KR100256678 B1 KR 100256678B1 KR 1019970074485 A KR1019970074485 A KR 1019970074485A KR 19970074485 A KR19970074485 A KR 19970074485A KR 100256678 B1 KR100256678 B1 KR 100256678B1
Authority
KR
South Korea
Prior art keywords
entry
block
signature
current
new
Prior art date
Application number
KR1019970074485A
Other languages
English (en)
Other versions
KR19990054625A (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 KR1019970074485A priority Critical patent/KR100256678B1/ko
Publication of KR19990054625A publication Critical patent/KR19990054625A/ko
Application granted granted Critical
Publication of KR100256678B1 publication Critical patent/KR100256678B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 분할 시그너춰 파일을 위한 디렉토리 관리 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은 대용량 데이타베이스 환경에서의 고속의 검색과, 객체의 삽입과 삭제가 빈번하게 발생하는 동적 환경으로의 적응, 저장 공간의 효율, 및 다목적 저장 엔진과의 통합 등의 요건을 만족하는 분할 시그너춰 파일의 디렉토리 관리 방법을 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은 질의 루틴을 호출하면, 질의 시그너춰에 대하여 접두어 만족성 연산을 충족하는 새로운 엔트리가 가리키는 객체에 대하여 폴스 드랍 해결을 수행하는 단계와, 삭제 루틴을 호출하면, 객체 시그너춰에 대하여 접두어 일치성 연산을 충족함하는 엔트리를 현재 블럭에서 삭제하는 단계, 및 삽입 루틴을 호출하면, 객체 시스너춰와 새로운 블록의 주소를 이용하여 엔트리를 구성하고, 현재 엔트리를 현재 블록에 삽입하는 단계를 포함 함.
4. 발명의 중요한 용도
본 발명은 분할 시그너춰 파일의 디렉토리 관리에 이용됨.

Description

분할 시그너춰 파일을 위한 디렉토리 관리 방법{Method of management directory for the partitioned signature file}
본 발명은 분할 시그너춰 파일을 위한 디렉토리를 효율적으로 관리하기 위한 디렉토리 관리 방법에 관한 것이다.
분할 시그너춰 파일의 디렉토리 관리에 대한 기존의 기법으로는 리(Lee)의 기법과 퀵 필터(quick filter) 기법이 있다.
리(Lee)의 기법에서는 디렉토리를 위한 구조로서 트라이(trie)를 사용한다. 리(Lee)의 기법은 비균형 트리인 트라이를 디렉토리로 사용하므로 비균형의 정도가 심화될수록 빈번한 디스크 액세스로 인한 성능 저하가 발생하게 된는 문제점이 있었다.
퀵 필터 기법에서는 디렉토리를 위한 자료 구조로 전용 디스크(dedicated disk)를 기반으로 하는 선형 해슁(linear hashing)을 사용한다.
따라서, 동적 환경에의 부적합, 저장 공간 효율의 저하, 오버플로우 체인의 발생 등의 문제점이 있었다.
따라서, 본 발명은 상기한 바와 같은 문제점을 해결하기 위하여 안출된 것으로서, 대용량 데이타베이스 환경에서의 고속의 검색과, 객체의 삽입과 삭제가 빈번하게 발생하는 동적 환경으로의 적응과, 저장 공간의 효율과, 다목적 저장 엔진(general-purpose storage engine)과의 통합 등을 고려하여 분할 시그너춰 파일의 디렉토리를 효율적으로 관리하기 위한 디렉토리 관리 방법을 제공하는데 그 목적이 있다.
도 1 은 본 발명이 적용되는 분할 시그너춰 파일을 위한 디렉토리 관리 시스템을 나타낸 예시도.
도 2a 와 도 2b 는 본 발명의 일실시예에 따른 디렉토리 관리를 위해 필요한 시그너춰 검색 과정을 나타낸 흐름도.
도 3a 내지 도 3c 는 본 발명의 일실시예에 따른 디렉토리 관리를 위해 필요한 시그너춰 삭제 과정을 나타낸 흐름도.
도 4a 내지 도 4c 는 본 발명의 일실시예에 따른 디렉토리 관리를 위해 필요한 시그너춰 삽입 과정을 나타낸 흐름도.
도 5 는 본 발명에 따른 디렉토리 관리 방법을 이용하여 구성한 분할 시그너춰 파일의 구성 예시도.
* 도면의 주요 부분에 대한 부호의 설명
110 : 입력 장치 111 : 중앙 처리 장치
112 : 객체 시그너춰 파일 113 : 실제 객체 파일
114 : 출력 장치
상기 목적을 달성하기 위한 본 발명은, 저장 시스템에 적용되는 디렉토리 관리 방법에 있어서, 질의 루틴을 호출하면, 현재 블럭내에 새로운 엔트리를 엑세스하여 새로운 엔트리가 질의 시그너춰에 대하여 접두어 만족성 연산을 충족하는 엔트리가 가리키는 객체에 대하여 폴스 드랍 해결을 수행하는 제 1 단계; 삭제 루틴을 호출하면, 현재 블럭내에 존재하는 새로운 엔트리를 엑세스하여 새로운 엔트리가 객체 시그너춰에 대하여 접두어 일치성 연산을 충족하는 엔트리를 현재 블럭에서 삭제하는 제 2 단계; 및 삽입 루틴을 호출하면, 현재 엔트리가 존재함에 따라 새로운 블록을 할당받아 객체 시스너춰와 새로운 블록의 주소를 이용하여 엔트리를 구성하고, 현재 엔트리를 현재 블록에 삽입하는 제 3 단계를 포함하여 이루어지는 것을 특징으로 한다.
이하, 첨부된 도 1 내지 도 5 를 참조하여 본 발명에 따른 일실시예를 상세히 설명한다.
시그너춰 파일(signature file)은 시그너춰라는 비트 스트링 형태의 객체에 대한 요약 정보를 저장한다. 전체 저장 시스템은 객체가 저장된 데이터 파일과 시그너춰 파일로 구성되며, 필터링 단계(filtering step)와 폴스 드롭 해결 단계(false-drop resolution step)를 통하여 사용자 질의를 처리한다.
시그너춰 파일을 이용한 필터링 단계에서는 시그너춰 파일을 이용하여 질의 조건을 만족할 수 있는 후보 객체들을 미리 파악하여 폴스 드롭 해결 단계에서 직접 액세스해야 하는 객체의 수를 크게 줄여준다.
후보 객체들을 파악하기 위해서는 필터링 단계에서 전체 시그너춰 파일을 액세스해야 한다.
대용량 데이타베이스 환경에서는 시그너춰 파일을 액세스하는 비용 자체가 큰 오버헤드가 되므로, 같은 키값을 갖는 시그너춰들을 블럭 단위로 나누어 저장하고, 각 블럭내의 시그너춰들을 대표하는 키값들을 디렉토리내에서 관리하는 분할 시그너춰 파일이 제안되었다.
디렉토리(directory)란 분할 시그너춰 파일에서 키값과 일치하는 블럭들을 찾기 위한 메타 정보를 유지하는 구조를 의미한다.
이 기법에서는 각 블럭을 디스크로부터 액세스하기 전에 디렉토리내에서 이 블럭과 대응되는 키값을 먼저 조사함으로써 블럭과 대응되는 키값 자체가 질의 조건을 만족하지 않는 블럭들은 액세스하지 않도록 해 준다.
본 발명에서는 대용량 데이타베이스 환경에서의 고속의 검색, 객체의 삽입과 삭제가 빈번하게 발생하는 동적 환경으로의 적응, 저장 공간의 효율, 다목적 저장 엔진(general-purpose storage engine)과의 통합 등의 요건을 만족하는 새로운 디렉토리 관리 기법을 제안한다.
시그너춰들간의 유사성의 정도를 판별하는 방법으로는 공통 접두어(common prefix)의 길이를 사용한다. 즉, 두 시그너춰의 공통 접두어의 비트 수가 많을수록 유사성이 크다고 정의한다.
디렉토리는 (hash_value, block_ptr)의 쌍으로 구성되는 엔트리들의 집합이다. 'block_ptr'은 이 엔트리와 대응되는 시그너춰들이 저장된 블럭의 주소를 나타낸다. 또한, 'hash_value'는 해쉬값으로 표현되는 키값이며, block_ptr이 가리키는 블럭내 시그너춰들의 공통 접두어를 나타낸다.
아래는 여섯 비트로 구성되는 시그너춰들의 집합 001011, 001101, 001110, 010011, 010101, 010110, 011001, 011010, 011011, 011100, 011101, 100011, 100101, 100110, 101001, 101010, 101101, 110001, 110010, 110101을 대상으로 하는 디렉토리 D1의 예를 나타낸 것이다. 블럭 1내에는 00으로 시작되는 접두어를 가지는 시그너춰들이 저장되어 있고, 블럭 4에는 0111로 시작되는 접두어를 가지는 시그너춰들이 저장되어 있다.
D1 = (00, 블럭 1), (010, 블럭 2), (0110, 블럭 3), (0111, 블럭 4), (100, 블럭 5), (101, 블럭 6), (11, 블럭 7)
질의의 처리시 각 엔트리가 가리키는 블럭이 질의를 만족하는 객체 시그너춰를 포함하는가를 조사하기 위하여 접두어 만족성 연산(prefix-qualifying operation)을 사용한다.
접두어 만족성 연산은 엔트리의 해쉬값을 질의 시그너춰중 이 해쉬값과 같은 크기의 접두어와 비교함으로써 이 접두어내의 1로 세트되어 있는 부분과 대응되는 위치의 모든 비트들이 엔트리의 해쉬값에도 1로 세트되어 있는가를 점검하는 연산이다.
예를 들면, 질의 시그너춰 101001에 대한 접두어 만족성 연산의 결과 D1내의 여섯 번째와 일곱 번째 엔트리가 가리키는 블럭들만이 이 질의 시그너춰를 만족하는 후보들을 가짐을 알 수 있다.
만일, 전체 엔트리들이 파일내에서 단순히 연속적으로 저장된다면, 질의 처리시 모든 엔트리들에 대하여 질의 시그너춰와의 접두어 만족성 연산을 수행해야 한다.
제안된 기법에서는 이러한 오버헤드를 피하기 위하여 디렉토리를 다단계 구조로서 관리한다. 즉, 최하위 디렉토리 D1내에서 공통 접두어가 같은 엔트리들을 동일한 블럭내에 저장하고, 이 엔트리들의 공통 접두어와 이 블럭의 주소로 엔트리를 구성하여, 상위 단계 디렉토리 D2내에 유지시킨다.
만일, D2의 엔트리들을 하나의 블럭내에 저장할 수 없는 경우, 같은 방식으로 그 상위에 디렉토리 D3를 두게 되며, 이것은 최상위 디렉토리가 하나의 블럭내에 유지될 때까지 반복된다. 따라서, 전체 구조는 균형 트리의 형태가 된다.
도 1 은 본 발명이 적용되는 분할 시그너춰 파일을 위한 디렉토리 관리 시스템을 나타낸 예시도이다.
도면에 도시된 바와 같이, 분할 시그너춰 파일을 위한 디렉토리 관리 시스템은, 입력 장치(110), 중앙 처리 장치(111), 객체 시그너춰 파일(112), 실제 객체 파일(113) 및 출력 장치(114)를 구비하고 있다.
실제 객체 파일(113)과 실제 각 객체에 대응되는 객체 시그너춰들을 포함하는 객체 시그너춰 파일(112)은 디스크에 저장된다.
질의가 입력 장치(110)를 통해 중앙 처리 장치(111)로 들어오면 중앙 처리 장치(111)는 질의 시그너춰를 생성하고, 디스크에 저장되어 있는 객체 시그너춰 파일(112)들을 블록 단위로 로딩한다.
계속하여, 중앙 처리 장치(111)는 로딩된 객체 시스너춰들을 필터링과 폴스 드랍하여 최종적으로 검색된 객체를 찾아내어 출력 장치(114)로 출력한다.
도 2a 와 도 2b 는 본 발명의 일실시예에 따른 디렉토리 관리를 위해 필요한 시그너춰 검색 방법을 나타낸 흐름도이다.
도면에 도시된 바와 같이, 먼저 질의 시그너춰를 'Signaturequery'로, 현재 블럭으로서 루트 블럭을 'CurrentBlock'으로 놓고(201), 질의 시그너춰(Signaturequery)와 현재 블럭(CurrentBlock)을 인자로 하여 질의(Query) 루틴을 호출한다(202).
질의 루틴에서는 먼저, 현재 블럭(CurrentBlock)이 시그너춰 블럭인지 여부를 판단하여(203), 만약 현재 블럭(CurrentBlock)이 시그너춰 블럭이면, 현재 블럭(CurrentBlock)내에 새로운 엔트리 E를 엑세스한다(204).
이후, 새로운 엔트리 E가 존재하는지를 판단하여(205), E가 존재하지 않으면 리턴하고(208), E가 존재하면 E가 질의 시그너춰(Signaturequery)에 대하여 접두어 만족성 연산을 충족하는지를 검사한다(206).
검사 결과, 접두어 만족성 연산을 충족한다면 E가 가리키는 객체에 대하여 폴스 드롭(false drop) 해결 단계를 수행한 후에(207), 현재 블럭(CurrentBlock)내에 새로운 엔트리 E를 엑세스하는 과정(204)부터 반복 수행하고, 접두어 만족성 연산을 충족하지 못하면 다시 현재 블럭(CurrentBlock)내에 새로운 엔트리 E를 엑세스하는 과정(204)부터 반복 수행한다.
한편, 현재 블럭(CurrentBlock)이 시그너춰 블럭이 아닌 디렉토리 블럭이면, 현재 블럭(CurrentBlock)내에 새로운 엔트리 E를 엑세스한다(209).
이후, 새로운 엔트리 E가 존재하는지를 판단하여(210) E가 존재하지 않으면 리턴하고(208), E가 존재하면 E가 질의 시그너춰(Signaturequery)에 대하여 접두어 만족성 연산을 충족하는지를 검사한다(211).
검사 결과, 접두어 만족성 연산을 충족하면, E가 가리키는 블럭을 다음 블럭(NextBlock)으로 놓고(212), 질의 시그너춰(Signaturequery)와 다음 블럭(NextBlock)을 인자로 하여 질의(Query) 루틴을 재귀적으로 호출하고(213), 다시 현재 블럭(CurrentBlock)내에 새로운 엔트리 E를 엑세스하는 과정(209)부터 반복 수행하고, 만일 접두어 만족성 연산을 충족하지 않으면, 다시 현재 블럭(CurrentBlock)내에 새로운 엔트리 E를 엑세스하는 과정(209)부터 반복 수행한다.
도 3a 내지 도 3c 는 본 발명의 일실시예에 따른 디렉토리 관리를 위한 필요한 시그너춰 삭제 과정을 나타낸 흐름도이다.
도면에 도시된 바와 같이, 먼저 삭제할 객체 시그너춰를 'Signatureobject'로, 현재 블록으로서 루트 블럭을 'CurrentBlock'로, 그리고 언더플로우플래그(UnderflowFlag)를 거짓(FALSE)으로 놓은 후에(301), 객체 시그너춰(Signatureobject), 현재 블럭(CurrentBlock), 언더플로우플래그(UnderflowFlag)를 인자로 하여 삭제(Delete) 루틴을 호출한다(302).
삭제 루틴에서는, 먼저 현재 블럭(CurrentBlock)이 시그너춰 블럭인지 여부를 판단하여(303), 현재 블럭(CurrentBlock)이 시그너춰 블럭이면, 현재 블럭(CurrentBlock)내에 존재하는 새로운 엔트리 E를 엑세스한다(304).
이후, 새로운 엔트리 E가 존재하는지를 판단하여(305), E가 존재하지 않으면 리턴하고(310), E가 존재하면 E가 객체 시그너춰(Signatureobject))에 대하여 접두어 일치성 연산을 충족하는지를 검사한다(306).
검사 결과, 접두어 일치성 연산을 충족하지 못하면 현재 블럭내에 존재하는 새로운 엔트리 E를 엑세스하는 과정(305)부터 반복 수행하고, 접두어 일치성 연산을 충족하면, E를 현재 블럭(CurrentBlock)으로부터 삭제시킨다(307).
이후, 언더플로우가 발생하는지를 판단하여(308), 언더플로우가 발생하지 않으면 리턴하고(310), 언더플로우가 발생하면 언더플로우플래그(UnderflowFlag)를 참(TRUE)으로 놓은 후에(309) 리턴한다(310).
한편, 현재 블럭(CurrentBlock)이 시그너춰 블럭이 아니면, 현재 블럭(CurrentBlock)내에 존재하는 새로운 엔트리 E를 엑세스한다(311).
이후, 새로운 엔트리 E가 존재하는지를 판단하여(305), E가 존재하지 않으면 리턴하고(310), E가 존재하면 E가 객체 시그너춰(Signatureobject)에 대하여 접두어 일치성 연산을 충족하는지를 검사한다(313).
검사 결과, 접두어 일치성 연산을 충족하지 못하면 현재 블럭내에 존재하는 새로운 엔트리 E를 엑세스하는 과정(311)부터 반복하고, 접두어 일치성 연산을 충족한다면, E를 처리중인 현재 엔트리(CurrentEntry)로 놓고(314), E가 가리키는 블럭을 다음 블럭(NextBlock)로(315), 하위 단계 삽입 루틴에서 처리된 후 현단계 루틴으로 올라온 국부언더플로우플래그(LocalUnderflowFlag)를 거짓(FALSE)으로 놓는다(316).
객체 시그너춰(Signatureobject), 다음 블럭(NextBlock), 국부언더플로우플래그(LocalUnderflowFlag)를 인자로 하여 삭제(Delete)루틴을 재귀적으로 호출한다(317).
삭제(Delete)루틴을 재귀적으로 호출한 이후에, 국부언더플로우플래그(LocalUnderflowFlag)가 참(TRUE)인지 여부를 판단하여(318), 국부언더플로우플래그가 참이 아니면 리턴하고(325), 국부언더플로우플래그(LocalUnderflowFlag)가 참(TRUE)이면, 처리중인 엔트리를 나타내는 현재 엔트리(CurrentEntry)와 병합이 가능한 엔트리인 병합될 엔트리(ToBeMergedEntry)가 존재하는지를 검사한다(319). 여기서 한 엔트리 A1과 병합 가능한 엔트리 A2란 A1이 저장될 블록내에서 A1과의 공통 접두어의 길이가 가장 길고, A1과 A2가 가리키는 블록들의 저장 이용율의 합이 100% 미만인 엔트리이다. 단, 같은 블록내 A1과 공통접두어의 길이가 가장 긴 엔트리가 2개 이상인 경우는 병합 가능한 엔트리가 없는 것으로 간주한다.
검사 결과, 병합 가능한 엔트리가 존재하지 않으면 리턴하고(325), 병합 가능한 엔트리(ToBeMergedEntry)가 존재하면, 다음 블럭(NextBlock)과 병합될 엔트리(ToBeMergedEntry)가 가리키는 블럭내의 모든 엔트리들을 다음 블럭(NextBlock)내에 병합시킨 후에(320), 현재 엔트리(CurrentEntry)의 접두어를 현재 엔트리(CurrentEntry)와 병합될 엔트리(ToBeMergedEntry)의 공통 접두어로 대체하며(321), 병합될 엔트리(ToBeMergedEntry)를 현재 블럭(CurrentBlock)내에서 삭제시킨다(322).
현재 블럭(CurrentBlock)내에 언더플로우가 발생하는지를 판단하여(323), 언더플로우가 발생하지 않으면 리턴하고(325), 언더플로우가 발생하면 언더플로우플래그(UndeflowFlag)를 참(TRUE)으로 놓은 후에(324) 리턴한다(325).
상기 과정이 끝난 후, 루트블럭내에 한 블럭만 존재하는지를 판단하여(326), 한 블럭만이 존재하면, 엔트리가 가리키는 블럭을 새로운 루트블럭으로 지정한 후에(327) 종료하고, 그렇지 않으면 바로 종료한다.
도 4a 내지 도 4c 는 본 발명의 일실시예에 따른 디렉토리 관리를 위한 필요한 시그너춰 삽입 과정을 나타낸 흐름도이다.
도면에 도시된 바와 같이, 먼저 삽입할 객체 시그너춰를 'Signatureobject'로, 루트 블럭을 현재 블럭 'CurrentBlock'로, 삽입될 엔트리(ToBeInsertedEntry)를 널(NULL)로, 그리고 오버플로우플래그(OverflowFlag)와 언더플로우플래그(UnderflowFlag)를 거짓(FALSE)으로 놓은 후에(401), 객체 시그너춰(Signatureobject), 현재 블럭(CurrentBlock), 삽입될 엔트리(ToBeInsertedEntry), 오버플로우플래그(OverflowFlag), 언더플로우플래그(UnderflowFlag)를 인자로 하여 삽입(Insert)루틴을 호출한다(402).
삽입 루틴에서, 먼저 현재 블럭(CurrentBlock)이 시그너춰 블럭인지를 판단하여(403), 현재 블럭(CurrentBlock)이 시그너춰 블럭이면, 객체 시그너춰(Signatureobject)와 해당 객체의 주소를 이용하여 구성한 엔트리를 현재 블럭(CurrentBlock)에 삽입한다(404).
이후에, 현재 블럭(CurrentBlock)내에 오버플로우가 발생하는지를 판단하여(405), 현재 블럭(CurrentBlock)내에 오버플로우가 발생하면, 오버플로우플래그(OverflowFlag)를 참(TRUE)으로 놓고 삽입하고자 했던 엔트리를 삽입될 엔트리(ToBeInsertedEntry)로 놓은 후(406) 리턴하고(409), 현재 블럭내에 오버플로우가 발생하지 않으면 다시 현재 블럭내에 언더플로우가 발생하는지를 검사한다(407).
검사 결과, 현재 블럭내에 언더플로우가 발생하지 않으면 리턴하고(409), 현재 블럭내에 언더플로우가 발생하면 언더플로우플래그를 참으로 놓은 후에(408), 리턴한다(409).
한편, 현재 블럭(CurrentBlock)이 시그너춰블럭이 아니면, 현재 블럭(CurrentBlock)내에 존재하는 엔트리를 현재 엔트리(CurrentEntry)로 놓고 이를 엑세스한 후에(410), 현재 엔트리가 존재하는지를 판단한다(411).
판단 결과, 현재 엔트리(CurrentEntry)가 존재하면, 다시 현재 엔트리(CurrentEntry)가 객체 시그너춰(Signatureobject)에 대하여 접두어 일치성 연산을 충족하는지를 판단하며, 접두어 일치성 연산을 충족하지 않으면 현재 블럭내에 존재하는 엔트리를 현재 엔트리로 놓고 엑세스하는 과정(410)을 반복하고, 접두어 일치성 연산을 충족하면 현재 엔트리가 가리키는 블럭을 다음 블럭으로, 국부오버플로우프래그와 국부언더플로우플래그를 각각 거짓으로 놓은 후에 (418), 객체 시그너춰와, 다음 블럭과, 국부삽입될엔트리와, 국부오버플로우플래그, 및 국부언더플로우플래그를 인자로하여 삽입 루틴을 재귀적으로 호출한다(419).
판단 결과, 현재 엔트리(CurrentEntry)가 존재하지 않으면, 새로운 블럭(NewBlock)을 할당받고(413), 객체 시그너춰(Signatureobject)와 새로운 블럭(NewBlock)의 주소를 이용하여 엔트리를 구성하여 현재 엔트리(CurrentEntry)로 놓은 후에(414), 현재 엔트리(CurrentEntry)를 현재 블럭(CurrentBlock)에 삽입하고(415), 현재 블럭내에 오보플로우가 발생하는지를 검사한다(416).
검사 결과, 현재 블럭내에 오버플로우가 발생하면, 현재 엔트리(CurrentEntry)를 삽입될 엔트리(ToBeInsertedEntry)로, 오버플로우플래그(OverflowFlag)를 참(TRUE)으로 한후에(417), 현재 엔트리(CurrentEntry)가 가리키는 블럭을 다음 블럭(NextBlock)으로, 국부오버플로우플래그(LocalOverflowFlag)와 국부언더플로우플래그(LocalUnderflowFlag)를 각각 거짓(FALSE)으로 놓은 후에(418), 객체 시그너춰(Signatureobject)와, 다음 블럭(NextBlock)과, 국부삽입될엔트리(LocalToBeInsertedEntry)와, 국부오버플로우플래그(LocalOverflowFlag), 및 국부언더플로우플래그를 인자로 하여 삽입(Insert)루틴을 재귀적으로 호출한다(419).
검사 결과, 현재 블럭내에 오버플로우가 발생하지 않으면, 현재 엔트리(CurrentEntry)가 가리키는 블럭을 다음 블럭(NextBlock)으로, 국부오버플로우플래그(LocalOverflowFlag)와 국부언더플로우플래그(LocalUnderflowFlag)를 각각 거짓(FALSE)으로 놓은 후에(418), 객체 시그너춰(Signatureobject)와, 다음 블럭(NextBlock)과, 국부삽입될엔트리(LocalToBeInsertedEntry)와, 국부오버플로우플래그(LocalOverflowFlag), 및 국부언더플로우플래그를 인자로 하여 삽입(Insert) 루틴을 재귀적으로 호출한다(419).
삽입 루틴을 재귀적으로 호출한 후에, 국부오버플로우플래그(LocalOverflowFlag)가 참(TRUE)인지를 판단하여(420), 국부오버플로우플래그( LocalOverflowFlag)가 참(TRUE)이면, 현재 엔트리(CurrentEntry)의 접두어에 새로운 비트들을 추가시킴으로써 새로운 두 개의 엔트리를 생성하고(421), 새로운 블럭( NewBlock)을 할당받는다(422).
이후에, 새롭게 생성된 두 엔트리의 해쉬값을 기반으로 현재 블럭(CurrentBlock)내의 모든 엔트리들과 국부삽입될엔트리(LocalToBeInsertedEntry)를 새로운 블럭(NewBlock)과 현재 블럭(CurrentBlock)내에 분산시킨 후(423), 현재 블럭(CurrentBlock)내에서 현재 엔트리(CurrentEntry)를 삭제하고 새롭게 생성된 두 엔트리를 차례로 삽입한 후에(424), 현재 블럭내에 오버플로우가 발생하는지를 검사한다(425).
검사결과, 현재 블럭내에 오버플로우가 발생하지 않으면, 리턴하고(428), 현재 블럭내에 오버플로우가 발생하면, 삽입하지 못한 엔트리를 삽입될 엔트리(ToBeInsertedEntry)로 놓고(426), 오버플로우플래그(OverflowFlag)를 참(TRUE)으로 놓은 후(427) 리턴한다(428).
한편, 국부오버플로우플래그(LocalOverflowFlag)가 참(TRUE)이 아니면, 국부언더플로우플래그가 참(TRUE)인지를 판단하여(429), 국부언더플로우플래그가 참이 아니면 리턴하고(428), 국부언더플로우플래그가 참이면 다시 현재 엔트리와 병합이 가능한 엔트리인 병합될 엔트리가 존재하는지를 검사한다(430).
검사 결과, 현재 엔트리와 병합이 가능한 엔트리인 병합될 엔트리가 존재하지 않으면, 리턴하고(428), 현재 엔트리(CurrentEntry)와 병합이 가능한 엔트리 병합될 엔트리(ToBeMergedEntry)가 존재하면 다음 블럭(NextBlock)과 병합될 엔트리(ToBeMergedEntry)가 가리키는 블럭내의 모든 엔트리들을 다음 블럭(NextBlock)내에 병합시키고(431) 현재 엔트리(CurrentEntry)의 접두어를 현재 엔트리(CurrentEntry)와 병합될 엔트리(ToBeMergedEntry)의 공통 접두어로 대체시킨다(432).
이후, 병합될 엔트리(ToBeMergedEntry)를 현재 블럭(CurrentBlock)내에서 삭제시킨 후에(433), 현재 블럭(CurrentBlock)내에 언더플로우가 발생하는지를 판단하여(434), 현재 블럭(CurrentBlock)내에 언더플로우가 발생하지 않으면 바로 리턴하고(428), 언더플로우가 발생하면, 언더플로우플래그(UnderflowFlag)를 참(TRUE)으로 놓은 후에(435) 리턴한다(428).
위 모든 과정이 끝난 후, 오버플로우가 참인지를 판단하여(436), 오버플로우가 참이 아니면 바로 종료하고, 오버플로우플래그(OverflowFlag)가 참(TRUE)이면, 새로운 두 개의 엔트리를 생성하고(437) 새로운 블럭 (NewBlock)을 할당받은 후에(438), 새롭게 생성된 두 엔트리의 해쉬값을 기반으로 현재 블럭(CurrentBlock)내의 모든 엔트리들과 삽입될 엔트리(ToBeInsertedEntry)를 새로운 블럭(NewBlock)과 현재 블럭(CurrentBlock)내에 분산시킨다(439).
새로운 블럭을 할당받고 새롭게 생성된 두 엔트리를 삽입한 후에, 이 블럭을 루트블럭으로 놓은 후(440) 종료한다.
도 5 는 본 발명에 따른 디렉토리 관리 방법을 이용하여 구성한 분할 시그너춰 파일의 구성 예시도이다.
도면에 도시된 바와 같이, 모든 정보들이 블럭 단위로 유지되며, 전체 구조는 균형 트리 형태를 가짐을 볼 수 있다. 트리 구조내에서 객체 시그너춰를 포함하는 최하위 단계의 블럭들을 시그너춰 블럭(signature block)이라 정의하고, 그 상위의 디렉토리를 위한 블럭들을 디렉토리 블럭(directory block)이라 정의한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.
상기와 같은 본 발명은, 대용량 데이타베이스로의 적용 가능성, 동적인 환경으로의 적용 가능성, 저장 공간 이용의 효율성, 기존의 다목적 데이타 저장 엔진과의 자연스러운 통합 가능성 등의 좋은 특성을 가지는 효율적인 분할 시그너춰 파일을 구성할 수 있으며, 이를 이용하여 효과적인 멀티미디어 데이터베이스 검색을 지원할 수 있는 효과가 있다.

Claims (5)

  1. 저장 시스템에 적용되는 디렉토리 관리 방법에 있어서,
    질의 루틴을 호출하면, 현재 블럭내에 새로운 엔트리를 엑세스하여 새로운 엔트리가 질의 시그너춰에 대하여 접두어 만족성 연산을 충족하는 엔트리가 가리키는 객체에 대하여 폴스 드랍 해결을 수행하는 제 1 단계;
    삭제 루틴을 호출하면, 현재 블럭내에 존재하는 새로운 엔트리를 엑세스하여새로운 엔트리가 객체 시그너춰에 대하여 접두어 일치성 연산을 충족하는 엔트리를 현재 블럭에서 삭제하는 제 2 단계; 및
    삽입 루틴을 호출하면, 현재 엔트리가 존재함에 따라 새로운 블록을 할당받아 객체 시스너춰와 새로운 블록의 주소를 이용하여 엔트리를 구성하고, 현재 엔트리를 현재 블록에 삽입하는 제 3 단계
    를 포함하여 이루어진 분할 시그너춰 파일을 위한 디렉토리 관리 방법.
  2. 제 1 항에 있어서,
    상기 제 1 단계는,
    상기 질의 시그너춰를 나타내는 변수를 설정하고, 루트 블럭중 처리중인 상기 현재 블럭을 나타내는 변수를 설정하는 제 4 단계;
    상기 질의 시그너춰와 상기 현재 블럭을 인자로 하여 상기 질의 루틴을 호출하는 제 5 단계;
    상기 현재 블럭이 상기 시그너춰 블럭인지 여부를 확인하는 제 6 단계;
    상기 제 6 단계의 확인 결과, 상기 현재 블록이 상기 시그너춰 블록이면, 상기 현재 블럭내에 새로운 엔트리를 엑세스하는 제 7 단계;
    상기 새로운 엔트리가 존재하는지를 확인하는 제 8 단계;
    상기 제 8 단계의 확인 결과, 상기 새로운 엔트리가 존재하지 않으면, 리턴하는 제 9 단계;
    상기 제 8 단계의 확인 결과, 상기 새로운 엔트리가 존재하면 상기 질의 시그너춰에 대하여 접두어 만족성 연산을 충족하는지를 검사하는 제 10 단계;
    상기 제 10 단계의 검사 결과, 접두어 만족성 연산을 충족한다면 상기 새로운 엔트리가 가리키는 객체에 대하여 폴스 드롭해결단계를 수행한 후에, 상기 제 7 단계부터 반복하는 제 11 단계;
    상기 제 10 단계 검사 결과, 접두어 만족성을 만족하지 않으면, 상기 제 7 단계부터 반복하는 제 12 단계;
    상기 제 6 단계의 확인 결과, 상기 현재 블럭이 상기 시그너춰 블럭이 아닌 디렉토리 블럭이면, 상기 현재 블럭내에 상기 새로운 엔트리를 엑세스 하는 제 13 단계;
    상기 새로운 엔트리가 존재하는지를 확인하는 제 14 단계;
    상기 제 14 단계의 확인 결과, 상기 새로운 엔트리가 존재하지 않으면, 리턴하는 제 15 단계;
    상기 제 14 단계의 확인 결과, 상기 새로운엔트리가 존재하면, 다시 상기 질의 시그너춰에 대하여 접두어 만족성 연산을 충족하는지를 검사하는 제 16 단계;
    상기 제 16 단계 검사 결과, 접두어 만족성 연산을 충족한다면 상기 새로운 엔트리가 가리키는 블럭을 다음 단계 블럭으로 놓고, 상기 질의 시그너춰와 다음 단계 블럭을 인자로 하여 상기 질의 루틴을 재귀적으로 호출한 후에, 상기 제 13 단계부터 반복하는 제 17 단계; 및
    상기 제 16 단계 검사 결과, 접두어 만족성 연산을 충족하지 않으면, 상기 제 13 단계부터 반복하는 제 18 단계
    를 포함하여 이루어진 분할 시그너춰 파일을 위한 디렉토리 관리 방법.
  3. 제 1 항에 있어서,
    상기 제 2 단계는,
    상기 삭제할 객체 시그너춰를 설정하고, 상기 현재 블럭을 설정하며, 상기 언더플로우 플래그를 거짓으로 놓는 제 4 단계;
    상기 객체 시그너춰, 상기 현재 블럭, 상기 언더플로우플래그를 인자로 하여 삭제(Delete) 루틴을 호출하는 제 5 단계;
    상기 현재 블럭이 상기 시그너춰 블럭인지 여부를 확인하는 제 6 단계;
    상기 제 6 단계의 확인 결과, 상기 현재 블럭이 상기 시그너춰 블럭이면, 상기 현재 블럭내에 존재하는 새로운 엔트리를 엑세스하는 제 7 단계;
    상기 새로운 엔트리가 존재하는지를 확인하는 제 8 단계;
    상기 제 8 단계의 확인 결과, 새로운 엔트리가 존재하지 않으면, 리턴하는 제 9 단계;
    상기 제 8 단계의 확인 결과, 새로운 엔트리가 존재하면 상기 객체 시그너춰에 대하여 접두어 일치성 연산을 충족하는지를 검사하는 제 10 단계;
    상기 제 10 단계의 확인 결과, 접두어 일치성 연산을 충족하지 않으면, 상기 7 단계로부터 반복하는 제 11 단계;
    상기 제 10 단계의 확인 결과, 접두어 일치성 연산을 충족한다면, 상기 새로운 엔트리를 상기 현재 블럭으로부터 삭제하는 제 12 단계;
    언더플로우가 발생하는지를 확인하는 제 13 단계;
    상기 제 13 단계의 확인 결과,언더플로우가 발생하지 않으면,리턴하는 제 14 단계;
    상기 제 13 단계의 확인 결과, 언더플로우가 발생하면 언더플로우플래그를 참으로 놓고 리턴하는 제 15 단계;
    상기 제 6 단계의 확인 결과, 상기 현재 블럭이 시그너춰 블럭이 아니면, 상기 현재 블럭내에 존재하는 상기 새로운 엔트리를 엑세스하는 제 16 단계;
    상기 새로운 엔트리가 존재하는지를 확인하는 제 17 단계;
    상기 제 17 단계의 확인 결과, 새로운 엔트리가 존재하지 않으면 리턴하는 제 18 단계;
    상기 제 17 단계의 확인 결과, 새로운 엔트리가 존재하면, 다시 상기 객체 시그너춰에 대하여 접두어 일치성 연산을 충족하는지를 검사하는 제 19 단계;
    상기 제 19 단계의 검사 결과, 접두어 일치성 연산을 충족하지 않으면, 제 16 단계부터 반복하는 제 20 단계;
    상기 제 19 단계의 검사 결과, 접두어 일치성 연산을 충족한다면, 새로운 엔트리를 처리중인 현재 엔트로 놓고, 블럭을 다음 단계 블럭으로 놓고, 언더플로우플래그변수를 거짓으로 놓는 제 21 단계;
    상기 객체 시그너춰,상기 다음 단계 블럭, 상기 국부언더플로우플래그를 인자로 하여 삭제루틴을 재귀적으로 호출하는 제 22 단계;
    상기 국부언더플로우플래그가 참인지 여부를 확인하는 제 23 단계;
    상기 제 23 단계의 확인 결과, 상기 국부언더플로우플래그가 참이 아니면, 리턴하는 제 24 단계;
    상기 제 23 단계의 확인 결과, 상기 국부언더플로우플래그가 참이면, 상기 병합될 엔트리가 존재하는지를 검사하는 제 25 단계;
    상기 제 25 단계의 검사 결과, 상기 병합될 엔트리가 존재하지 않으면 리턴하는 제 26 단계;
    상기 제 25 단계의 검사 결과, 상기 병합될 엔트리가 존재하면, 상기 다음 블럭과 상기 병합될 엔트리가 가리키는 블럭내의 모든 엔트리들을 다음 블럭내에 병합시키고, 상기 현재 엔트리의 접두어를 공통 접두어로 대체시킨 후, 병합될 엔트리를 삭제시키는 제 27 단계;
    상기 언더플로우가 발생하는지를 확인하는 제 28 단계;
    상기 제 28 단계의 확인 결과, 상기 언더플로우가 발생하지 않으면, 리턴하는 제 29 단계;
    상기 제 28 단계의 확인 결과, 상기 언더 플로우가 발생하면 상기 언더플로우플래그를 참으로 놓은 후에, 리턴하는 제 30 단계;
    루트블럭내에 한 블럭만 존재하는지를 확인하는 제 31 단계;
    상기 제 30 단계의 확인 결과에 따라, 한 블럭만이 존재하면, 엔트리가 가리키는 블럭을 새로운 루트블럭으로 지정하는 제 32 단계
    를 포함하여 이루어진 분할 시그너춰 파일을 위한 디렉토리 관리 방법.
  4. 제 1 항에 있어서,
    상기 제 3 단계는,
    상기 삽입할 객체 시그너춰를 설정하고, 상기 현재 블럭을 설정하며, 상기 삽입될 엔트리를 널로 하고, 상기 오버플로우플래그와 상기 언더플로우플래그를 거짓으로 놓는 제 4 단계;
    상기 객체 시그너춰, 상기 현재 블럭, 상기 삽입될 엔트리, 상기 오보플로우프래그, 상기 언더플로우플래그를 인자로 하여 삽입루틴을 호출하는 제 5 단계;
    상기 삽입 루틴을 호출하면, 상기 현재 엔트리가 존재함에 따라 상기 새로운 블록을 할당받아 상기 객체 시스너춰와 상기 새로운 블록의 주소를 이용하여 엔트리를 구성하고, 상기 현재 엔트리를 상기 현재 블록에 삽입하는 제 6 단계
    상기 오버 플로우플래그가 참인지를 확인하는 제 7 단계;
    상기 제 7 단계의 확인 결과, 상기 오버플로우플래그가 참이 아니면 바로 종료하고, 상기 오보플로우플래그가 참이면, 새로운 두 개의 엔트리를 생성하는 제 8 단계;
    새로운 블럭을 할당받는 제 9 단계;
    새롭게 생성된 두 엔트리의 해쉬값을 기반으로 현재 블럭내의 모든 엔트리들과 상기 삽입될 엔트리를 상기 새로운 블럭과 상기 현재 블럭내에 분산시키는 제 10 단계;
    상기 새로운 블럭을 할당받고 새롭게 생성된 두 엔트리를 삽입하고, 루트블럭으로 놓는 제 11 단계
    를 포함하여 이루어진 분할 시그너춰 파일을 위한 디렉토리 관리 방법.
  5. 제 4 항에 있어서,
    상기 제 6 단계는,
    상기 현재 블럭이 상기 시그너춰 블럭인지를 확인하는 제 12 단계;
    상기 제 12 단계의 확인 결과, 상기 현재 블럭이 상기 시그너춰 블럭이면, 상기 객체 시그너춰와 해당 객체의 주소를 이용하여 구성한 엔트리를 상기 현재 블럭에 삽입하는 제 13 단계;
    상기 현재 블럭내에 오버플로우가 발생하는지를 확인하는 제 14 단계;
    상기 제 14 단계의 확인 결과, 오버플로우가 발생하면, 오버플로우플래그를 참으로 놓고 삽입하고자 했던 엔트리를 상기 삽입될 엔트리로 놓는 제 15 단계;
    상기 제 14 단계의 확인 결과, 오버플로우가 발생하지 않으면, 현재블럭내에 언더플로우가 발생하는지를 확인하는 제 16 단계;
    상기 제 16 단계의 확인 결과, 언더플로우가 발생하면, 현재 블록내에 언더플로우가 발생함에 따라 언더플로우플래그를 참으로 놓은 후에, 리턴하는 제 17 단계;
    상기 제 16 단계의 확인 결과, 언더플로우가 발생하지 않으면 리턴하는 제 18 단계;
    상기 제 12 단계의 확인 결과, 상기 현재 블럭이 상기 시그너춰블럭이 아니면, 상기 현재 블럭내에 존재하는 엔트리를 현재 엔트리로 놓고 이를 엑세스 하는 제 19 단계;
    상기 현재 엔트리가 존재하는지를 확인하는 제 20 단계;
    상기 제 20 단계의 확인 결과, 상기 현재 엔트리가 존재하지 않는 경우에,새로운 블럭을 할당받아, 객체 시그너춰와 새로운 블록의 주소를 이용하여 엔트리를 구성하여, 현재 엔트리를 현재 블록에 삽입하는 제 21 단계;
    상기 제 20 단계의 확인 결과, 상기 현재 엔트리가 존재하는 경우에는, 상기 현재 엔트리가 상기 객체시그너춰에 대하여 접두어 일치성 연산을 충족하는지를 확인하는 제 22 단계;
    상기 제 22 단계의 확인 결과, 상기 현재 엔트리가 상기 객체시그너춰에 대하여 접두어 일치성 연산을 충족하는지 않으면, 상기 제 19 단계부터 반복하는 제 23 단계;
    상기 제 22 단계의 확인 결과, 상기 현재 엔트리가 상기 객체시그너춰에 대하여 접두어 일치성 연산을 충족하면, 삽입(Insert)루틴을 재귀적으로 호출하는 제 24 단계;
    국부오버플로우플래그가 참인지를 확인하는 제 25 단계;
    상기 제 25 단계의 확인 결과, 국부오버플로우플래그가 참이면, 현재 엔트리의 접두어에 새로운 비트들을 추가시킴으로서 새로운 엔트리를 생성하는 제 26 단계;
    새로운 블럭을 할당받는 제 27 단계;
    새롭게 생성된 두 엔트리의 해쉬값을 기반으로 상기 현재 블록내의 모든 엔트리들과 상기 국부삽입될엔트리를 상기 새로운 블록과 상기 현재 블록내에 분산시키는 제 28 단계;
    상기 현재 블록내에서 현재 엔트리를 삭제하고 새롭게 생성된 두 엔트리를 차례로 삽입하는 제 29 단계;
    현재 블록내의 오버플로우가 발생에 따라, 삽입하지 못한 엔트리를 삽입될 엔트리로 놓고, 상기 오버플로우플래그를 참으로 놓은 후에, 리턴하는 제 30 단계;
    상기 제 25 단계의 확인 결과, 상기 국부오버플로우플래그가 참이 아니면, 다시 국부언더플로우플래그가 참인지를 확인하는 제 31 단계;
    상기 제 31 단계의 확인 결과, 상기 국부언더플로우플래그가 참이 아니면 리턴하는 제 32 단계;
    상기 제 31 단계의 확인 결과, 상기 국부언더플로우플래그가 참이면, 상기 현재 엔트리와 병합이 가능한 엔트리가 존재함에 따라, 상기 다음 블록과 삽입될 엔트리가 가리키는 블록내의 모든 엔트리를 다음 블록내에 병합하는 제 33 단계;
    상기 현재 엔트리의 접두어를 상기 현재 엔트리와 상기 삽입될 엔트리의 공통 접두어로 대체시키는 제 34 단계;
    상기 현재 블록내에 언더플로우가 발생하지 않음에 따라, 언더플로우를 참으로 한 후에, 리턴하는 제 35 단계
    를 포함하여 이루어진 분할 시그너춰 파일을 위한 디렉토리 관리 방법.
KR1019970074485A 1997-12-26 1997-12-26 분할 시그너춰 파일을 위한 디렉토리 관리 방법 KR100256678B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970074485A KR100256678B1 (ko) 1997-12-26 1997-12-26 분할 시그너춰 파일을 위한 디렉토리 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970074485A KR100256678B1 (ko) 1997-12-26 1997-12-26 분할 시그너춰 파일을 위한 디렉토리 관리 방법

Publications (2)

Publication Number Publication Date
KR19990054625A KR19990054625A (ko) 1999-07-15
KR100256678B1 true KR100256678B1 (ko) 2000-05-15

Family

ID=19528777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970074485A KR100256678B1 (ko) 1997-12-26 1997-12-26 분할 시그너춰 파일을 위한 디렉토리 관리 방법

Country Status (1)

Country Link
KR (1) KR100256678B1 (ko)

Also Published As

Publication number Publication date
KR19990054625A (ko) 1999-07-15

Similar Documents

Publication Publication Date Title
US6473774B1 (en) Method and apparatus for record addressing in partitioned files
US5263160A (en) Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory
US6411957B1 (en) System and method of organizing nodes within a tree structure
JP4581962B2 (ja) 情報検索システムとインデクス管理方法およびプログラム
US5991862A (en) Modified indirect addressing for file system
US4468728A (en) Data structure and search method for a data base management system
US4611272A (en) Key-accessed file organization
US8027984B2 (en) Systems and methods of reverse lookup
US5664179A (en) Modified skip list database structure and method for access
US7610468B2 (en) Modified buddy system memory allocation
US6275830B1 (en) Compile time variable size paging of constant pools
US5488717A (en) MTree data structure for storage, indexing and retrieval of information
US20040105332A1 (en) Multi-volume extent based file system
US8099421B2 (en) File system, and method for storing and searching for file by the same
US20040254907A1 (en) Versatile indirection in an extent based file system
US5687361A (en) System for managing and accessing a dynamically expanding computer database
EP1265160A2 (en) Data structure
JPH1131096A (ja) データ格納検索方式
De Jonge et al. Two access methods using compact binary trees
JP2001142752A (ja) データベース管理方法
US6961739B2 (en) Method for managing directories of large-scale file system
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
EP1049029A2 (en) File systems with versatile indirection
KR100256678B1 (ko) 분할 시그너춰 파일을 위한 디렉토리 관리 방법
Robinson Order preserving linear hashing using dynamic key statistics

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee