KR101072558B1 - 해싱 기반의 데이터 관리 방법 및 장치 - Google Patents

해싱 기반의 데이터 관리 방법 및 장치 Download PDF

Info

Publication number
KR101072558B1
KR101072558B1 KR1020090134620A KR20090134620A KR101072558B1 KR 101072558 B1 KR101072558 B1 KR 101072558B1 KR 1020090134620 A KR1020090134620 A KR 1020090134620A KR 20090134620 A KR20090134620 A KR 20090134620A KR 101072558 B1 KR101072558 B1 KR 101072558B1
Authority
KR
South Korea
Prior art keywords
data
block
data record
hash bucket
blocks
Prior art date
Application number
KR1020090134620A
Other languages
English (en)
Other versions
KR20110077934A (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 KR1020090134620A priority Critical patent/KR101072558B1/ko
Publication of KR20110077934A publication Critical patent/KR20110077934A/ko
Application granted granted Critical
Publication of KR101072558B1 publication Critical patent/KR101072558B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/41Indexing; Data structures therefor; Storage structures
    • 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/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Abstract

해싱 기반의 데이터 관리 방법 및 장치가 개시된다. 해싱 기반의 데이터 관리 방법은, 저장 공간을 데이터 영역 및 인덱스 영역으로 분할하고, 저장 위치 포인터를 이용하여 데이터 영역에 데이터 레코드를 저장하며, 미리 설정된 해싱 함수를 이용하여 상기 데이터 레코드에 대한 유사 키를 생성하고, 이를 이용하여 상기 해시 디렉토리에서 해시 버킷의 주소를 검색하고, 검색된 해시 버킷의 주소에 상응하는 해시 버킷에 데이터 레코드에 대한 엔트리를 저장할 수 있다.
해싱, hashing, 데이터 인덱싱

Description

해싱 기반의 데이터 관리 방법 및 장치 {Method and apparatus for managing data based on hashing}
본 발명은 데이터 관리에 관한 것으로, 보다 상세하게는 확장 해싱 기반으로 데이터를 저장, 검색할 수 있는 데이터 관리 방법 및 저장 장치에 관한 것이다.
저장 장치에서 데이터의 빠른 검색을 위해 해싱 기반의 인덱스가 사용된다. 일반적으로 해싱 기법에는 정적 해싱(static hashing)과 동적 해싱(dynamic hasing)이 있다. 정적 해싱은 해시 테이블의 크기(예를 들어, 해시 버킷의 크기)가 고정되어 있으며, 동적 해싱은 해시 테이블의 동적인 확장 및 축소가 가능한 방법이다. 그리고, 동적 해싱 방법 중에서 확장 해싱(extendible hasing)이 많이 활용되고 있다.
일반적으로, 탐사용 로봇 등과 같은 모바일용 저장 장치들은 저장 공간이 한정되어 있다. 또한 상황에 따라 (예를 들면, 전체 시스템의 저장 공간이 부족해지는 경우) 데이터 저장 공간의 크기를 축소해야 하는 경우가 발생할 수도 있다. 이에 따라, 해당 저장 장치들에 대한 저장 공간을 보다 효율적으로 사용하기 위한 방 법이 필요하다.
본 발명은 제한된 저장 공간에서 데이터를 효율적으로 저장 및 인덱싱할 수 있는 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 사전에 정해진 저장 공간만을 사용하고, 더 이상의 추가 공간을 사용하지 않을 수 있는 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 저장된 데이터 레코드의 시각 정보를 이용하여 삭제 연산 없이 데이터를 관리할 수 있는 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 현재 사용중인 저장 공간을 삭제 연산 수행 없이 대량으로 반납하여 감축할 수 있는 방법 및 장치를 제공하기 위한 것이다.
본 발명의 일 측면에 따르면, 해싱 기반의 데이터 관리 방법이 제공된다.
본 발명의 실시예에 따르면, 해싱 기반의 데이터 관리 방법에 있어서, 저장 공간을 데이터 영역 및 인덱스 영역으로 분할하는 단계-상기 데이터 영역은 신규 데이터가 기록될 위치에 대한 저장 위치 포인터를 포함함; 신규 데이터에 대한 데이터 레코드를 생성하는 단계; 상기 저장 위치 포인터를 이용하여 상기 데이터 영역에 상기 데이터 레코드를 저장하는 단계; 미리 설정된 해싱 함수를 이용하여 상 기 데이터 레코드에 대한 유사 키를 생성하는 단계; 및 상기 유사키를 이용하여 상기 해시 디렉토리에서 해시 버킷의 주소를 검색하고, 상기 검색된 해시 버킷의 주소에 상응하는 해시 버킷에 상기 데이터 레코드에 대한 엔트리를 저장하는 단계를 포함하는 데이터 관리 방법이 제공될 수 있다.
본 발명의 다른 측면에 따르면, 한정된 저장 공간에서 효율적으로 인덱싱할 수 있는 장치가 제공된다.
본 발명의 실시예에 따르면, 해싱 기반의 데이터를 관리하는 저장 장치에 있어서, 저장 공간을 데이터 영역 및 인덱스 영역으로 분할하는 분할부-상기 데이터 영역은 신규 데이터가 기록될 위치에 대한 저장 위치 포인터를 포함함; 신규 데이터에 대한 데이터 레코드를 생성하고, 상기 저장 위치 포인터를 이용하여 상기 데이터 영역에 상기 데이터 레코드를 저장하는 삽입부; 및 미리 설정된 해싱 함수를 이용하여 상기 데이터 레코드에 대한 유사 키를 생성하는 해시 계산부를 포함하되, 상기 삽입부는 상기 유사키를 이용하여 상기 해시 디렉토리에서 해시 버킷의 주소를 검색하고, 상기 검색된 해시 버킷의 주소에 상응하는 해시 버킷에 상기 데이터 레코드에 대한 엔트리를 저장하는 것을 특징으로 하는 저장 장치가 제공될 수 있다.
본 발명에 따른 해싱 기반의 데이터 관리 방법을 제공함으로써, 제한된 저장 공간에서 데이터를 효율적으로 저장 및 인덱싱할 수 있다.
또한, 본 발명은 사전에 정해진 저장 공간만을 사용하고, 더 이상의 추가 공간을 사용하지 않을 수 있다.
또한, 본 발명은 저장된 데이터에 대한 삭제 연산 수행 없이 데이터를 관리할 수 있다.
또한, 본 발명은 현재 사용중인 저장 공간을 삭제 연산 수행 없이 대량으로 반납하여 감축할 수 있다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것 으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 본 발명의 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다.
본 발명의 실시예에 따른 모바일 센싱 로봇은 한정된 저장 공간을 구비하며, 한정된 저장 공간을 데이터 특성에 맞춰 복수의 영역으로 분할한 후 확장 해싱을 기반으로 데이터를 관리(예를 들어, 저장, 삭제, 검색 등)할 수 있다.
본 발명의 실시예에 따른 데이터 레코드들은 별도의 데이터 영역에 저장되고, 해시 버킷에는 데이터 레코드에 대한 엔트리(즉, 시각 정보, 데이터 블록 아이디(ID)및 블록내 위치(offset))가 저장된다. 즉, 전술한 바와 같이 저장 공간은 인덱스 영역과 데이터 영역으로 구분된다. 여기서, 인덱스 영역은 해시 디렉토리와 해시 버킷이 저장되는 공간이며, 데이터 영역은 데이터 레코드들이 저장되는 공간이다.
본 발명의 실시예에서는전체 저장 공간의 블록 수가 미리 설정되며, 이로부터 해시 디렉토리(directory)의 블록 수, 해시 버킷(bucket)의 블록 수 및 데이터 영역의 블록 수를 계산한다. 그리고, 이에 따라 데이터는 정해진 공간에 맞추어 저장된다. 정해진 저장 공간이 모두 사용되면, 신규 저장 공간의 확보를 위해 데이터를 삭제하지 않고, 오래된 데이터부터 신규 데이터로 덮어쓰는 방식을 통해 신규 데이터를 저장한다. 이를 위해, 본 발명의 실시예에 따른 데이터 영역의 데이터 블록들은 환형 리스트(circular list) 구조로 연결된다. 즉, 환형으로 연결된(처음 블록을 마지막 블록의 다음 블록으로 간주함) 데이터 블록들에 대하여 데이터 레코드들을 순차적으로 저장하며, 데이터 블록들의 저장 공간을 모두 사용하게 되면 가장 오래된 데이터 레코드를 새로운 데이터 레코드로 대체하는 방식으로 환형 리스트를 이동하며 새로운 데이터를 저장할 수 있다.
한편 본 명세서에서의블록(block)은 저장 공간의 기본 단위로 일정 크기의 저장 공간(예를 들어 1 Kbyte, 4 Kbytes, 16 Kbytes 등)을 나타내며, 저장 장치에 따라 페이지(page) 등의 용어를 사용하기도 한다. 따라서 본 명세서의 블록은 경우에 따라 페이지 등의 용어로 대체하여 사용하여도 무방하다.
환형 리스트를 구현하는 방법은 이미 공지되어 있으며, 다양하다. 따라서, 환형 리스트의 구현은 공지된 방법 중 어느 하나가 사용될 수 있다. 예를 들면, 환형 리스트를 연결하기 위해 포인터가 사용될 수도 있으며, 블록의 번호(아이디)들로 환형 리스트가 만들어질 수도 있다. 만일 저장 공간의 연속된 블록들이 사용된다면, 어느 블록이든지 다음 블록의 번호(아이디)는 모듈로(modulo) 연산에 의해 알 수 있다.
또한, 해시 버킷의 엔트리들도 환경 리스트 구조로 유지되고(처음 엔트리 공 간을 마지막 엔트리 공간의 다음 엔트리 공간으로 간주함), 버킷의 엔트리 공간을 모두 사용하게 되면 오래된 엔트리는 신규 엔트리로 대체된다. 해시 버킷의 엔트리는 해당 엔트리가 인덱싱하는 데이터 레코드에 대한 시각 정보(timestamp)와 위치(블록 아이디, 블록내 위치)를 저장한다. 따라서, 해시 버킷의 엔트리에 저장된 시각 정보를 이용하여 해당 데이터 레코드가 획득된 시각을 알 수 있다. 또한, 데이터 레코드가 획득된 순서대로 시각 정보가 증가하므로 해시 버킷에는 엔트리들이 시각 정보 순으로 순차적으로 저장될 수 있으며, 저장 공간을 모두 사용하게 되면 가장 오래된 엔트리에 덮어 쓰는 방식으로 환형 리스트를 이동하며 저장할 수 있다.
또한 각 버킷은 다음에 엔트리가 저장될 위치를 가리키는 포인터를 가질 수 있다. 여기서 해당 버킷의 엔트리 저장 위치에 대한 포인터는 해당 버킷에 빈 공간이 존재할 경우는 다음에 엔트리가 저장될 빈 공간의 위치를 나타내고, 만일 빈 공간이 존재하지 않을 경우(버킷의 엔트리 공간이 모두 사용된 경우)에는 해당 버킷에서 가장 오래된 엔트리에 대한 포인터일 수 있다. 그리고, 환형 리스트는 배열 형태이므로 환형 리스트를 위한 포인터는 필요하지 않다.
[도 1 설명]
도 1은 본 발명의 실시예에 따른 데이터 영역의 블록 및 인덱스 영역의 디렉토리 블록과 해시 버킷의 블록을 예시한 도면이다.
도 1의 (a)는 데이터 영역의 블록을 예시한 것으로, 데이터 블록은 각각 블 록 아이디(식별번호)를 가지며, 전술한 바와 같이, 처음 데이터 블록과 마지막 데이터 블록이 환형 리스트로 연결된 구조이다. 도 1의 (a)는 리스트의 연속된 데이터 블록들(어느 블록과 그 다음 블록)을 저장 공간 상에서 인접한 것으로 도시하였으나, 연속된 블록들은 저장 공간에서 인접될 수도 있고, 인접되지 않을 수도 있다. 즉, 리스트의 연속된 블록들은 논리적으로는 연속되지만 물리적으로는 구현 방법에 따라 인접될 수도 있고 인접되지 않을 수도 있다.
도 1의 (b) 내지 (d)는 디렉토리가 확장되는 과정을 도시한 것이다.
도 1의 (b)는 해시 버킷과 디렉토리 블록의 자료 구조를 예시한 것으로, 해시 버킷은 데이터 블록의 레코드에 대한 엔트리(미도시, 즉, 시각 정보, 데이터 블록 아이디 및 블록내 위치)들을 갖는다. 여기서, 데이터 블록 아이디는 데이터 블록의 식별번호이고, 블록내 위치는 해당 블록에서의 데이터 레코드의 위치(offset)를 나타낸다.
또한, 도 1의 (b)에는 도시되어 있지 않으나, 해시 버킷의 엔트리들은 환형 리스트 구조로써 연결된다. 이에 따라 해시 버킷의 오래된 엔트리는 새로운 엔트리로 대체될 수 있다(즉, 덮어 쓰여질 수 있다). 여기서, 환형 리스트는 배열의 형태로 구성되므로 환형 리스트를 위한 포인터는 필요하지 않다.
[도 2 설명]
도 2는 본 발명의 실시예에 따른 해싱 기반의 데이터를 저장하는 방법을 나타낸 순서도이다. 이하에서 설명되는 각각의 단계는 저장 장치의 내부 구성 요소에 의해 수행되나 이해와 설명의 편의를 도모하기 위해 저장 장치로 통칭하여 설명하기로 한다. 여기서, 저장 장치는 한정된 저장 공간을 구비한 장치일 수 있다.
단계 210에서 저장 장치는 저장 공간을 복수의 영역으로 분할한다.
보다 상세하게, 저장 장치는 저장 공간을 데이터 영역과 인덱스 영역으로 분할할 수 있다. 이하에서 저장 공간의 데이터 영역의 크기 및 인덱스 영역의 크기를 계산하는 방법에 대해 상세히 설명하기로 한다.
이하에서는 사용할 수 있는 저장 공간의 블록들의 수가 일정한 크기(예를 들어, 1,024, 2,048 등)로 정해져 있는 경우 데이터 영역 및 인덱스 영역의 크기를 결정하는 방법에 대해 설명하기로 한다.
또한, 최대 저장 공간은 전체 블록의 수로 주어지며, 저장 공간은 전술한 바와 같이, 데이터 영역과 인덱스 영역으로 구분된다.
일반적으로 해시 버킷의 크기, 디렉토리 블록의 크기, 데이터 블록의 크기는 모두 동일하게 설정된다(예를 들어, 해시 버킷의 크기, 디렉토리 블록의 크기, 데이터 블록의 크기는 1 Kbyte, 4 Kbytes, 16 Kbytes 등으로 설정될 수 있다). 이에 따라, 본 명세서에서도 해시 버킷의 크기, 디렉토리 블록의 크기, 데이터 블록의 크기가 모두 동일하게 설정되는 것을 가정하여 설명하기로 한다. 물론, 시스템에 따라 해시 버킷의 크기, 디렉토리 블록의 크기, 데이터 블록의 크기는 각각 상이하게 설정될 수도 있음은 당연하다. 또한 본 명세서에서는 하나의 버킷은 하나의 블록으로 구성되는 것으로 가정하여 설명한다. 물론 하나의 버킷은 여러 개여 블록들로 구성될 수도 있음은 당연하다.
전체 블록의 수는 전술한 바와 같이 미리 주어진다. 전체 블록의 수는 하기 수학식 1과 같이 데이터 영역의 블록의 수와 인덱스 영역의 블록 수의 합일 수 있다.
Figure 112009081844525-pat00001
여기서, Bf는 데이터 영역의 크기(즉, 데이터 영역의 블록 수)를 나타내고, Bh는 인덱스 영역의 크기(즉, 인덱스 영역의 블록 수)를 나타낸다.
확장 해싱의 공간은 해시 버킷 공간과 해시 디렉토리 공간으로 구분되므로, 인덱스 영역의 블록 수는 하기 수학식 2와 같이 표현될 수 있다.
Figure 112009081844525-pat00002
여기서, Bb는 해시 버킷의 블록 수를 나타내고, Bd는 해시 디렉토리 블록 수를 나타낸다.
디렉토리 블록의 수는 해시 버킷의 블록의 수와 디렉토리 블록의 수의 관계를 이용하여 표현될 수 있다. 예를 들어, 확장 해싱의 경우, 해시 버킷에 오버플로가 발생할 경우, 해싱 버킷이 추가되는 과정에서 디렉토리 엔트리 수가 20일 때, 해시 버킷의 수는 최소 1개이다.
그리고, 도 1의 (b) 내지 (d)에 도시된 것처럼 디렉토리 엔트리 수가 21인 경우, 해시 버킷의 수는 최소 2개이고, 디렉토리 엔트리 수가 22일 때, 해시 버킷의 수는 최소 3개이며, 디렉토리 엔트리 수가 2j일 때, 해시 버킷의 수는 최소 (j+1)개이다.
확장 해싱에서 해시 버킷에 오버플로가 발생할 경우, 해시 버킷이 추가되는 과정에서 디렉토리 엔트리 수와의 관계를 순환 관계식(recursive relation)으로 표현하면, 다음과 같다.
n(2j)은 디렉토리 엔트리 수가 2j일 때, 필요한 최소의 해시 버킷의 수를 나타낸다.
n(20) = 1
n(21) = n(20) + 1 = 2
n(22) = n(21) + 1 = 3
n(23) = n(22) + 1 = 4
n(2j-1) = n(2j-2) + 1 = j
n(2j) = n(2j-1) + 1 = j + 1
즉, n(2j) = j + 1이 됨을 알 수 있다.
결과적으로, 디렉토리 엔트리 수가 2j 인 경우, 최소 필요한 버킷의 수가 (j + 1)개임을 알 수 있다.
이와 같은 예가 도 1의 (b) 내지 (d)에 도시되어 있다. 도 1의 (b) 내지 (d)에서 디렉토리 옆에 표시된 괄호 안의 숫자는 해당 디렉토리에서 사용되는 비트 수를 나타내고, 버킷의 옆에 표시된 괄호 안의 숫자는 해당 버킷을 식별하기 위해 사용되는 비트 수를 나타낸다.
이를 통해 해시 버킷의 수가 (j + 1)일 때, 최대 디렉토리 엔트리 수는 2j이고, 이때 필요한 해시 키의 비트 수는 j임을 알 수 있다.
이에 따라, 디렉토리 블록의 수는 하기 수학식 3과 같이 표현될 수 있다.
Figure 112009081844525-pat00003
여기서,
Figure 112009081844525-pat00004
는 버킷의 블록의 수가 Bb개일 때 필요한 최대 디렉토리 엔트리의 수를 나타내고, Nd는 블록당 최대 디렉토리 엔트리의 수를 나타낸다.
또한,
Figure 112009081844525-pat00005
이다. 여기서, Ed는 디렉토리 엔트리의 크기를 나타내고, B는 블록의 크기를 나타낸다. 각각의 단위는 바이트이다.
수학식 3은 디렉토리 블록의 수(Bd)와 버킷 블록의 수(Bb)의 관계를 나타내며, B와 Ed는 사전에 설정되는 값이다.
이어, 해시 버킷의 블록 수는 하기 수학식 4와 같이 표현될 수 있다.
Figure 112009081844525-pat00006
여기서, Nr은 블록당 최대 데이터 레코드의 수를 나타내고, Nb는 블록당 최대버킷 엔트리의 수를 나타낸다. 그리고, Bf는 데이터 영역의 블록의 수를 나타낸다.
또한,
Figure 112009081844525-pat00007
이다. 여기서, R은 데이터 레코드의 크기(바이트)를 나타낸다.
또한,
Figure 112009081844525-pat00008
이다. 여기서, Eb는 버킷 엔트리의 크기(바이트)를 나타낸다.
최대 버킷 엔트리의 수는 최대 데이터 레코드의 수(Bf X Nr)와 같음을 알 수 있다. 또한, loadfactor(f)는 버킷에 엔트리들을 평균적으로 채우는 비율(즉, 평균 적재 비율)을 나타낸다.
예를 들어, 평균적으로 버킷의 블록당 최대 엔트리 수(Nb)의 80%를 적재한다고 가장하면, loadfactor(f)는 0.8이 된다.
수학식 3은 버킷 블록의 수(Bb)와 데이터 영역의 블록 수(Bf)의 관계를 나타내며, B, R, Eb, loadfactor(f)는 사전에 설정되는 값이다.
따라서, 전체 블록의 수가 주어지면, 데이터 영역의 블록 수, 해시 버킷의 블록 수, 디렉토리 블록 수는 수학식 1 내지 4를 이용하여 산출될 수 있다.
따라서, 데이터 영역과 인덱스 영역의 크기가 결정될 수 있다.
즉, 저장 장치는 결정된 데이터 영역과 인덱스 영역의 크기에 따라 저장 공간을 데이터 영역과 인덱스 영역으로 분할할 수 있다.
단계 215에서 저장 장치는 저장할 데이터에 대한 데이터 레코드를 데이터 영역의 블록에 저장한다. 여기서, 데이터 레코드는 저장할 데이터가 획득된 시각정보 및 저장할 데이터(즉, 필드들의 값)일 수 있다.
예를 들어, 저장 장치가 모바일 센싱 로봇이라고 가정 할 경우, 저장할 데이터는 센싱 로봇에 의해 센싱된 센싱 데이터일 수 있다. 이에 따라, 데이터 레코드는 해당 센싱 데이터가 획득된 시각정보와 센싱 데이터(예를 들어, 온도, 습도, 조도 등의 값)로 구성될 수 있다.
단계 220에서 저장 장치는 데이터 영역의 저장 위치 포인터를 갱신한다.
여기서, 저장 위치 포인터는 다음 데이터 레코드가 저장될 저장 위치를 표시한다. 저장 위치 포인터는 (블록 아이디, 블록내 위치(offset), 대체 후보 시각 정보) 필드들로 구성된다. 즉, 저장 위치 포인터는 다음 레코드가 저장되는 위치를 표시하며, 블록 아이디(식별 번호)에 해당되는 블록의 블록내 위치(offset)를 나타낸다. 대체 후보 시각 정보는 데이터 영역의 블록들에 저장된 가장 오래된 레코드의 시각 정보이며, 저장 공간을 모두 사용한 경우에 가장 오래된 레코드를 새로운 레코드로 대체하기 위해 사용된다. 만일, 저장 공간을 모두 사용하여 새로운 데이터 레코드를 저장할 여유 공간이 없는 경우, 대체 후보 시각 정보는 데이터 블록 아이디에 해당되는 블록에 저장된 가장 오래된 데이터 레코드의 시각 정보이며, 데이터 영역의 블록에 데이터가 모두 기록되어 빈 공간이 없는 경우, 대체할 데이터 레코드에 해당되는 시각 정보를 나타낸다. 물론, 저장 공간에 빈 공간이 남아있을 때도 대체 후보 시각 정보는 데이터 영역에서 가장 오래된 레코드의 시각 정보를 나타낸다.
전술한 바와 같이, 데이터 영역의 블록은 첫번째 데이터 블록과 마지막 데이터 블록이 환형 리스트 구조로 순차적(sequential)으로 연결되어 있다. 또한 블록 내에서도 데이터 레코드들이 순차적(sequential)으로 저장된다. 이에 따라, 마지막 데이터 블록까지 데이터 레코드가 모두 기록된 경우, 다시 처음 데이터 블록부터 데이터 레코드가 기록될 수 있다. 즉, 저장 장치는 가장 오래된 데이터 레코드를 신규 데이터 레코드로 덮어써서 대체할 수 있다. 이때, 대체 후보 시각 정보는 데이터 영역의 블록에서 가장 오래된 데이터 레코드의 시각정보로 다음에 덮어쓸 레코드를 표시한다.
즉, 저장 장치는 데이터 블록에 빈 공간이 없으면, 저장 위치 포인터의 대체 후보 시각 정보에 상응하는 레코드를 신규 레코드로 대체한 후 대체 후보 시각 정 보를 데이터 블록에서 가장 오래된(즉, 삭제된 레코드 다음으로 오래된) 데이터 레코드의 시각 정보로 갱신한다. 이어, 저장 장치는 갱신된 대체 후보 시각 정보에 상응하는 데이터 레코드가 속해있는 데이터 블록이 변경된 경우 데이터 블록 아이디를 갱신한다. 또한, 저장 장치는 블록내 위치를 대체 후보 시각 정보에 상응하는 해당 레코드의 위치(offset)로 갱신한다.
한편, 데이터 블록에 빈 공간이 존재하는 경우, 저장 장치는 저장 위치 포인터가 가리키는 블록의 해당 위치에 신규 데이터 레코드를 저장한다. 그리고, 저장 장치는 저장 위치 포인터의 블록 아이디와 블록내 위치를 데이터 레코드가 다음에 저장될 블록의 위치에 상응하여 변경한다. 이와 같이, 신규 데이터 레코드가 빈 공간에 저장되는 경우에는 대체 후보 시각 정보는 변경되지 않는다. 즉, 가장 오래된 데이터 레코드가 변경되지 않는다.
단계 225에서 저장 장치는 미리 설정된 해시 함수를 이용하여 삽입한 데이터 레코드에 대한 유사키를 생성한다. 즉, 데이터 레코드에서 인덱스 구성을 위해 키로 설정된 하나 이상의 필드의 키값을 해싱 함수의 입력으로 하여 유사키(해싱 함수의 출력)를 생성한다. 여기서, 저장 장치는 생성된 유사키의 처음 비트부터(또는 마지막 비트부터 역순으로) 디렉토리가 사용하는 비트 수만큼의 비트 위치까지의 비트들을 이용하여 디렉토리에서 버킷 주소를 탐색한다. 확장 해싱에서 유사키를 이용하여 디렉토리로부터 해당 버킷을 검색하는 것은 공지의 기술이므로 이를 사용할 수 있다. 또한 해시 함수는 일반적으로 사용되는 해시 함수들을 이용할 수 있다. 즉, 이미 공지된 해시 함수들 중에서 성능이 좋은 해시 함수를 선택하여 이용 할 수 있다.
단계 230에서 저장 장치는 검색된 해시 버킷에 빈 공간이 있는지 여부를 판단한다.
만일 검색된 해시 버킷에 빈 공간이 있으면, 단계 235에서 저장 장치는 최근의 시각 정보를 갖는(즉, 가장 최근에 저장된) 엔트리의 다음 엔트리로 데이터 레코드에 대한 엔트리(즉, 시각 정보, 데이터 블록 아이디, 블록내 위치)를 저장한다.
그러나, 만일 검색된 해시 버킷에 빈 공간이 없는 경우, 단계 240에서 저장 장치는 미사용된 버킷이 존재하는지를 판단한다.
만일 미사용된 버킷이 존재하는 경우, 단계 245에서 저장 장치는 미사용된 버킷을 하나 할당받아 기존의 버킷을 2개로 분할하고, 해당 버킷(분할된 버킷들 중에서 신규 레코드의 엔트리가 저장될 버킷)에 신규 데이터 레코드에 대한 엔트리를 저장한다.
이로 인해, 결과적으로 해시 디렉토리가 확장될 수 있다. 해시 버킷 분할 및 해시 디렉토리를 확장하는 방법은 확장 해싱의 일반적인 방법으로 당업자에게는 자명하므로 별도의 설명은 생략하기로 한다.
그러나 만일 미사용된 버킷이 존재하지 않는 경우에는 단계 250에서 저장 장치는 오버플로 처리를 수행한다. 이에 대해서는 도 5에서 설명하기로 한다.
[도 3 설명]
도 3은 본 발명의 실시예에 따른 데이터를 대량 반납하는 방법을 나타낸 순서도이다.
단계 310에서 저장 장치는 반납이 필요한 데이터 블록의 수를 결정한다.
예를 들어, 저장 장치는 외부로부터 반납이 필요한 데이터 블록의 수를 입력받아 결정할 수 있다. 이하에서는 반납이 필요한 데이터 블록의 수를 반납 블록 개수라 칭하여 설명하기로 한다.
단계 315에서 저장 장치는 가장 오래된 순으로 반납 블록 개수에 상응하는 개수의 블록들의 다음 블록의 가장 오래된 시각 정보로 저장 위치 포인터의 대체 후보 시각 정보를 변경한다. 즉, 저장 장치는 가장 오래된 순으로 반납 블록 개수만큼의 블록들을 반납한다.
이어, 단계 320에서 저장 장치는 저장 위치 포인터의 데이터 블록 아이디를 변경된 대체 후보 시각 정보에 상응하는 데이터 블록 아이디로 변경한다. 또한, 저장 장치는 변경된 대체 후보 시각 정보에 상응하는 데이터 레코드의 블록내 위치(offset)로 저장 위치 포인터의 블록내 위치를 갱신한다.
단계 325에서 저장 장치는 대체 후보 시각 정보보다 오래된 시각 정보를 포함하는 데이터 레코드들을 저장한 반납 블록 개수의 데이터 블록들에 대해 반환 처리한다.
이에 따라, 데이터 레코드들은 삭제 연산 없이, 가장 오래된 데이터 블록으로부터 반납 블록 개수만큼 반납된다.
물론, 백업이 필요한 경우, 반납되는 데이터 블록의 데이터 레코드들이 백업 될 수도 있음은 당연하다.
이 과정에서 인덱스 영역(해시 디렉토리 블록, 해시 버킷 블록)은 전혀 수정이 가해지지 않는다. 데이터 블록의 대체 후보 시각 정보보다 오래된 시각 정보에 상응하는 버킷 엔트리는 반납된 데이터 레코드를 가리키므로 무시된다. 즉, 대체 후보 시각 정보 이후의 시각 정보에 상응하는 버킷 엔트리들만 적합한 엔트리로 인식된다. 여기서, 대체 후보 시각 정보보다 오래된 시각 정보에 상응하는 엔트리의 경우, 신규 엔트리들이 덮어쓰게 된다.
물론, 구현 방법에 따라 저장 장치는 버킷의 적합하지 않은 엔트리들을 정리할 수도 있다. 이로 인해, 일정 크기 이하의 버킷들은 통합될 수도 있다. 이는 해당 저장 장치에 로드가 적은 시간에 처리될 수 있다.
이와 같이, 데이터 블록이 반납된 경우, 저장 장치는 새로운 데이터 블록의 수에 따라 인덱스 영역의 크기를 다시 설정할 수도 있다. 이와 같은 경우, 도 1에서 설명한 방법에 의해 인덱스 영역의 크기를 다시 설정할 수 있으며, 이에 따라 확장 해싱 인덱스를 새로 구성할 수 있다. 이미 전술한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
[도 4 설명]
도 4는 본 발명의 실시예에 따른 데이터 레코드를 검색하는 방법을 나타낸 순서도이다.
단계 410에서 저장 장치는 레코드 검색 명령과 검색할 레코드를 위한 키 값 (이하에서는 검색 키 값이라 칭함)을 제공받는다. 여기서, 검색 키는 확장 해싱 인덱스의 유사키를 생성하기 위해 설정된 하나 이상의 필드의 데이터 레코드의 키와 동일한 키이다.
단계 415에서 저장 장치는 미리 설정된 해시 함수를 이용하여 검색 키 값으로부터 유사키를 생성한다. 여기서, 해시 함수는 도 2의 데이터 저장을 위해 사용된 해시 함수와 동일하다.
단계 420에서 저장 장치는 유사키를 이용하여 검색 비트를 추출한다.
예를 들어, 저장 장치는 디렉토리에 설정된 비트 수만큼의 비트를 유사키의 처음 비트부터(또는 마지막 비트부터) 추출한다.
단계 425에서 저장 장치는 추출된 검색 비트를 이용하여 디렉토리를 검색하여 버킷 주소를 찾는다.
단계 430에서 저장 장치는 검색된 버킷 주소에 상응하는 버킷내에서 엔트리들을 탐색하여 검색할 데이터 레코드의 엔트리를 찾는다.
그리고, 이를 이용하여 단계 435에서 저장 장치는 검색할 데이터 레코드에 상응하는 데이터 블록의 아이디 및 블록내 위치를 인식하여 해당 데이터 레코드를 검색할 수 있다. 전술한 바와 같이 검색 과정에서 저장 위치 포인터의 대체 후보 시각 정보보다 오래된 시각 정보를 갖는 데이터 레코드에 대한 엔트리들은 무시된다. 즉, 저장 위치 포인트의 대체 후보 시각 정보보다 오래된 시각 정보를 갖는 데이터 레코드에 대한 엔트리들은 삭제된 것처럼 취급된다.
한편, 버킷 내에서 오버플로가 발생한 경우에 저장 장치는 오버플로 처리 방 법에 따라 검색한다. 즉, 해당 버킷에 검색하는 레코드의 엔트리가 존재하지 않는 경우, 저장 장치는 오버플로 처리 방법에 따라 해당 버킷에 오버플로 표시(오버플로 플래그(flag))가 되어 있는 경우에는 오버플로 블록을 검색하고, 리해싱 표시(리해싱 플래그(flag))가 되어 있는 경우에는 리해싱을 이용하여 검색할 수 있다.
[도 5 설명]
도 5는 본 발명의 실시예에 따른 데이터 레코드에 대한 엔트리 저장 중에 해시 버킷의 오버플로를 처리하는 하는 방법을 나타낸 순서도이다.
단계 510에서 저장 장치는 해시 버킷에 오버플로가 발생했는지 여부를 판단한다.
만일 오버플로가 발생한 경우, 단계 515에서 저장 장치는 오버플로 블록에 공간이 있는지를 판단한다.
판단 결과 오버플로 블록에 공간에 있는 경우, 단계 520에서 저장 장치는 해당 버킷에 오버플로 표시(오버플로 플래그(flag) 설정)를 한 후 미리 할당해 둔 오버플로 블록에 데이터 레코드를 위한 엔트리를 기록한다. 오버플로 표시는 오버플로 블록에 해당 버킷의 엔트리가 저장되어 있다는 표시로 검색시에 활용된다.
오버플로 블록에는 데이터 레코드를 위한 엔트리가 순차적으로 기록되거나 체인(chain)의 형태로 기록될 수 있다. 오버플로 블록은 해시 버킷과는 별도로 할당된다. 이는 당업자에게는자명한 사항이므로 별도의 설명을 생략하기로 한다.
그러나, 판단 결과 오버플로 블록에 공간이 없는 경우, 단계 525에서 저장 장치는 오버플로가 발생한 블록의 오버플로를 발생시킨 데이터 레코드를 미리 설정된 해싱 함수를 이용하여 리해싱(rehasing)한다. 이 과정에서 사용되는 해싱 함수는 최초 해싱 함수와는 다른 것이 이용된다. 여기서, 리해싱을 위한 데이터 레코드의 키(해상 함수의 입력)는 하나 이상의 필드로 최초 해싱과 동일할(즉, 동일한 필드) 수도 있고, 상이할(상이한 필드) 수도 있다. 즉, 저장 장치는 리해싱에 의해 데이터 레코드에 대한 엔트리를 저장할 버킷을 다시 찾는다. 이때는 최초 해싱 함수와 다른 해싱 함수를 이용하므로, 빈 공간이 존재하는 버킷으로 리해싱 될 수가 있다.
그리고, 단계 530에서 저장 장치는 리해싱에 의해 선택된 해당 버킷에 공간이 있는지를 판단한다.
만일 리해싱에 의해 선택된 해당 버킷에 데이터 레코드의 엔트리를 저장할 수 있는 공간이 있는 경우, 단계 535에서 저장 장치는 최초의 해싱에 의해 선택된 버킷에 엔트리가 리해싱된 것을 나타내는 리해싱 표시(리해싱 플래그(flag) 설정)를 한 후에 해당 엔트리를 리해싱된 버킷에 저장한다.
그러나, 만일 리해싱에 의해 선택된 버킷에 공간이 없는 경우, 단계 540에서 저장 장치는 최초 해싱에 의해 선택된 해시 버킷의 가장 오래된 엔트리를 덮어쓴다. 오버플로 처리 방법에 의해서도 오버플로가 해결되지 못하는 경우(예를 들어, 오버플로 블록에서도 오버플로가 발생하고, 리해싱에서도 오버플로가 발생하는 경우), 저장 장치는 해시 버킷의 데이터 엔트리들을 오래된 순으로 순차적으로 덮어쓸 수 있다. 즉, 저장 장치는 해시 버킷의 가장 오래된 엔트리부터 덮어쓸 수 있 다.
본 실시예에서는단계 520, 525 및 540이 함께 수행되는 것을 가정하여 설명하였으나 구현 방법에 따라 단계 520, 525 및 540중 어느 하나가 단독으로 수행될 수도 있고, 이 중에서 두 가지 이상이 함께 사용될 수도 있다.
[도 6 설명]
도 6은 본 발명의 실시예에 따른 확장 해싱에 의해 데이터를 관리하는 저장 장치의 내부 구성을 개략적으로 도시한 블록도이다.
도 6을 참조하면, 본 발명의 실시예에 따른 저장 장치는 입력부(610), 분할부(615), 메모리(620), 삽입부(625), 검색부(630), 반납부(635), 해시 계산부(640) 및 제어부(645)를 포함하여 구성된다.
입력부(610)는 본 발명의 실시예에 따른 저장 장치를 제어하기 위한 제어 명령을 입력받는다. 예를 들어, 입력부(610)는 저장 공간의 크기, 블록의 크기와 레코드의 크기를 비롯하여 사전에 설정되는 값, 데이터 저장 명령, 데이터 반납 명령, 데이터 검색 명령 등을 입력받을 수 있다.
분할부(615)는 메모리(620)를 복수의 영역으로 분할한다. 예를 들어, 분할부(615)는 메모리(620)를 데이터 영역 및 인덱스 영역으로 분할한다.
분할부(615)는 도 2에서 설명한 방식에 따라 데이터 영역 및 인덱스 영역의 크기를 계산하여 이에 상응하도록 메모리(620)의 저장 공간을 복수의 영역으로 분할할 수 있다. 이는 도 2를 참조하여 설명한 바와 동일하므로 중복되는 설명은 생 략하기로 한다.
메모리(620)는 저장 공간으로, 다양한 데이터가 기록된다. 전술한 바와 같이, 메모리는 분할부(615)에 의해 복수의 영역으로 분할될 수 있다. 이는 이미 설명한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
삽입부(625)는 신규 데이터를 메모리(620)의 데이터 영역에 기록하고, 데이터 검색을 위한 인덱스를 인덱스 영역에 기록하는 기능을 수행한다.
이는 이미 도 2를 참조하여 상세히 설명하였으므로 중복되는 설명은 생략하기로 한다.
검색부(630)는 입력부(610)를 통해 입력된 검색 명령에 상응하는 데이터를 검색하는 기능을 수행한다. 이는 도 4를 참조하여 설명한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
반납부(635)는 입력부(610)를 통해 결정된 필요 개수에 상응하는 데이터 블록을 반납 처리하는 기능을 수행한다. 이는 도 3을 참조하여 설명한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
해시 계산부(640)는 제어부(645)의 제어에 따라 미리 설정된 해시 함수를 이용하여 유사키를 생성하여 삽입부(625) 및 검색부(630)로 출력하는 기능을 수행한다.
제어부(645)는 본 발명의 실시예에 따른 저장 장치의 내부 구성 요소들(예를 들어, 입력부(610), 분할부(615), 메모리(620), 삽입부(625), 검색부(630), 반납부(635), 해시 계산부(640) 등)을 제어하는 기능을 수행한다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을것이다.
도 1은 본 발명의 실시예에 따른 데이터 영역의 블록 및 인덱스 영역의 디렉토리 블록과 해시 버킷의 블록을 예시한 도면.
도 2는 본 발명의 실시예에 따른 해싱 기반의 데이터를 저장하는 방법을 나타낸 순서도.
도 3은 본 발명의 실시예에 따른 데이터를 대량 반납하는 방법을 나타낸 순서도.
도 4는 본 발명의 실시예에 따른 데이터 레코드를 검색하는 방법을 나타낸 순서도.
도 5는 본 발명의 실시예에 따른 데이터 레코드에 대한 엔트리 저장 중에 해시 버킷의 오버플로를 처리하는 하는 방법을 나타낸 순서도.
도 6은 본 발명의 실시예에 따른 확장 해싱에 의해 데이터를 관리하는 저장 장치의 내부 구성을 개략적으로 도시한 블록도.

Claims (20)

  1. 해싱 기반의 데이터 관리 방법에 있어서,
    저장 공간을 데이터 영역 및 인덱스 영역으로 분할하는 단계-상기 데이터 영역은 신규 데이터가 기록될 위치에 대한 저장 위치 포인터를 포함함;
    신규 데이터에 대한 데이터 레코드를 생성하는 단계;
    상기 저장 위치 포인터를 이용하여 상기 데이터 영역에 상기 데이터 레코드를 저장하는 단계;
    미리 설정된 해싱 함수를 이용하여 상기 데이터 레코드에 대한 유사 키를 생성하는 단계; 및
    상기 유사키를 이용하여 해시 디렉토리에서 해시 버킷의 주소를 검색하고, 상기 검색된 주소에 상응하는 해시 버킷에 상기 데이터 레코드에 대한 엔트리를 저장하는 단계를 포함하는 데이터 관리 방법.
  2. 제1 항에 있어서,
    상기 데이터 영역은 데이터 레코드가 기록될 데이터 블록을 포함하며,
    상기 인덱스 영역은 디렉토리 블록과 해시 버킷 블록을 포함하는 것을 특징으로 하는 데이터 관리 방법.
  3. 제2 항에 있어서,
    상기 데이터 블록 및 상기 해시 버킷 블록의 엔트리들은 환형 리스트 구조로 연결되는 것을 특징으로 하는 데이터 관리 방법.
  4. 제1 항에 있어서,
    상기 저장 위치 포인터는 신규 데이터 레코드가 저장될 데이터 블록 식별 정보, 블록내 위치 정보 및 대체 후보 시각 정보를 포함하며,
    상기 대체 후보 시각 정보는 상기 데이터 영역내에 포함된 데이터 블록에서 가장 오래된 데이터 레코드에 포함된 시각 정보인 것을 특징으로 하는 데이터 관리 방법.
  5. 제1 항에 있어서,
    상기 데이터 레코드를 저장하는 단계 이후에,
    상기 저장 위치 포인터를 갱신하는 단계를 더 포함하되,
    상기 저장 위치 포인터의 갱신은 상기 데이터 영역에 포함된 데이터 블록들 중에서 가장 오래된 시각 정보를 포함하는 데이터 레코드의 시각정보, 블록 아이디 및 블록내 위치를 이용하여 갱신하는 것을 특징으로 하는 데이터 관리 방법.
  6. 제1 항에 있어서,
    상기 데이터 영역 및 인덱스 영역으로 분할하는 단계 이전에,
    하기 수학식을 이용하여 상기 데이터 영역 및 상기 인덱스 영역의 크기를 산출하는 단계를 더 포함하는 데이터 관리 방법.
    Bt= Bf + Bh,
    Bh= Bb + Bd
    여기서,
    Figure 112009081844525-pat00009
    이며,
    Figure 112009081844525-pat00010
    이고, Bt는 상기 저장 공간의 전체 블록 수를 나타내며, 상기 Bf는 데이터 영역의 블록의 수를 나타내고, 상기 Bh는 인덱스 영역의 블록의 수를 나타내며, 상기 Bb는 해시 버킷의 블록 수를 나타내고, Bd는 디렉토리 블록의 수를 나타내며,
    Figure 112009081844525-pat00011
    는 해시 버킷의 수가 Bb개일 때 필요한 최대 디렉토리 엔트리의 수를 나타내고, Nd는 블록당 최대 디렉토리 엔트리의 수를 나타내며, 상기 Nr은 블록당 최대 데이터 레코드의 수를 나타내고, Nb는 블록당 최대 버킷 엔트리의 수를 나타내며, loadfactor(f)는 버킷의 평균 적재율을 나타냄.
  7. 제1 항에 있어서,
    데이터 검색 명령 및 검색하는 데이터 레코드에 상응하는 키값을 제공받는 단계;
    상기 해싱 함수를 이용하여 상기 키값에 상응하는 유사키를 생성하는 단계;
    상기 유사키를 이용하여 상기 인덱스 영역의 디렉토리에서 해시 버킷 주소를 검색하는 단계;
    상기 검색된 해시 버킷 주소에 상응하는 해시 버킷에서 상기 데이터 레코드에 상응하는 엔트리를 검색하는 단계; 및
    상기 검색된 엔트리를 이용하여 데이터 레코드를 검색하는 단계를 더 포함하는 데이터 관리 방법.
  8. 제1 항에 있어서,
    반납이 필요한 반납 블록 개수를 입력받는 단계;
    상기 입력된 반납 블록 개수에 상응하여 저장 위치 포인터의 데이터 블록 아이디, 블록내 위치 및 대체 후보 시각 정보를 갱신하는 단계; 및
    상기 대체 후보 시각 정보보다 오래된 시각 정보를 포함하는 데이터 블록들을 반납 처리하는 단계를 더 포함하는 데이터 관리 방법.
  9. 제1 항에 있어서,
    상기 해시 버킷에 오버플로가 발생한 경우, 오버플로 블록에 공간이 있는지를 판단하는 단계;
    상기 오버플로 블록에 공간이 있는 경우, 상기 오버플로 블록에 상기 데이터 레코드를 위한 엔트리를 기록하는 단계;
    상기 오버플로 블록에 공간이 없는 경우, 기설정된 해싱 함수를 이용하여 리해싱하여 상기 리해싱된 해시 버킷에 저장할 수 있는 공간이 있는지를 판단하여 저장할 수 있는 공간이 있는 경우, 상기 리해싱된 해시 버킷에 상기 데이터 레코드를 위한 엔트리를 저장하는 단계를 더 포함하는 데이터 관리 방법.
  10. 제9 항에 있어서,
    상기 리해싱된 해시 버킷에 저장할 수 있는 공간이 없는 경우, 최초 해싱에 의해 선택된 해시 버킷의 가장 오래된 엔트리를 상기 데이터 레코드의 엔트리로 덮어쓰는 단계를 더 포함하는 데이터 관리 방법.
  11. 해싱 기반의 데이터를 관리하는 저장 장치에 있어서,
    저장 공간을 데이터 영역 및 인덱스 영역으로 분할하는 분할부-상기 데이터 영역은 신규 데이터가 기록될 위치에 대한 저장 위치 포인터를 포함함;
    신규 데이터에 대한 데이터 레코드를 생성하고, 상기 저장 위치 포인터를 이용하여 상기 데이터 영역에 상기 데이터 레코드를 저장하는 삽입부; 및
    미리 설정된 해싱 함수를 이용하여 상기 데이터 레코드에 대한 유사 키를 생성하는 해시 계산부를 포함하되,
    상기 삽입부는 상기 유사키를 이용하여 해시 디렉토리에서 해시 버킷의 주소를 검색하고, 상기 검색된 주소에 상응하는 해시 버킷에 상기 데이터 레코드에 대한 엔트리를 저장하는 것을 특징으로 하는 저장 장치.
  12. 제11 항에 있어서,
    상기 데이터 영역은 데이터 레코드가 기록될 데이터 블록을 포함하며,
    상기 인덱스 영역은 디렉토리 블록과 해시 버킷 블록을 포함하는 것을 특징으로 하는 저장 장치.
  13. 제11 항에 있어서,
    상기 데이터 블록 및 상기 해시 버킷 블록의 엔트리들은 환형 리스트 구조로 연결되는 것을 특징으로 하는 저장 장치.
  14. 제11 항에 있어서,
    상기 저장 위치 포인터는 신규 데이터 레코드가 저장될 데이터 블록 식별 정보, 블록내 위치 정보 및 대체 후보 시각 정보를 포함하며,
    상기 대체 후보 시각 정보는 상기 데이터 영역내에 포함된 데이터 블록에서 가장 오래된 데이터 레코드에 포함된 시각 정보인 것을 특징으로 하는 저장 장치.
  15. 제11 항에 있어서,
    상기 삽입부는 상기 데이터 레코드를 저장한 후, 상기 저장 위치 포인터를 갱신하되,
    상기 저장 위치 포인터의 갱신은 상기 데이터 영역에 포함된 데이터 영역의 블록들 중에서 가장 오래된 시각 정보를 포함하는 데이터 레코드의 시각정보, 블록 아이디 및 블록내 위치를 이용하여 갱신하는 것을 특징으로 하는 저장 장치.
  16. 제11 항에 있어서,
    상기 분할부는,
    하기 수학식을 이용하여 상기 데이터 영역 및 상기 인덱스 영역의 크기를 산 출하는 단계를 더 포함하는 저장 장치.
    Bt= Bf + Bh,
    Bh= Bb + Bd
    여기서,
    Figure 112009081844525-pat00012
    이며,
    Figure 112009081844525-pat00013
    이고, Bt는 저장 공간의 전체 블록 수를 나타내며, 상기 Bf는 데이터 영역의 블록의 수를 나타내고, 상기 Bh는 인덱스 영역의 블록의 수를 나타내며, 상기 Bb는 해시 버킷의 블록 수를 나타내고, Bd는 디렉토리 블록의 수를 나타내며,
    Figure 112009081844525-pat00014
    는 해시 버킷의 수가 Bb개일 때 필요한 최대 디렉토리 엔트리의 수를 나타내고, Nd는 블록당 최대 디렉토리 엔트리의 수를 나타내며, 상기 Nr은 블록당 최대 데이터 레코드의 수를 나타내고, Nb는 블록당 최대 버킷 엔트리의 수를 나타내며, loadfactor(f)는 버킷의 평균 적재율을 나타냄.
  17. 제11 항에 있어서,
    데이터 검색 명령 및 검색하는 데이터 레코드에 상응하는 키값을 제공받는 입력부; 및
    상기 해시 계산부를 통해 상기 키값에 상응하는 유사키를 생성하며, 상기 유사키를 이용하여 상기 인덱스 영역의 디렉토리에서 해시 버킷 주소를 검색하고, 상기 검색된 해시 버킷 주소에 상응하는 해시 버킷에서 상기 데이터 레코드에 상응하는 엔트리를 검색하며, 상기 검색된 엔트리를 이용하여 데이터 레코드를 검색하는 검색부를 더 포함하는 저장 장치.
  18. 제17 항에 있어서,
    상기 입력부를 통해 입력된 반납 블록 개수에 상응하여 저장 위치 포인터의 블록 아이디, 블록내 위치 및 대체 후보 시각 정보를 갱신하고, 상기 대체 후보 시각 정보보다 오래된 시각 정보를 포함하는 데이터 블록들을 반납 처리하는 반납부를 더 포함하는 저장 장치.
  19. 제11 항에 있어서,
    상기 삽입부는 상기 해시 버킷에 오버플로가 발생한 경우, 오버플로 블록에 공간이 있는지를 판단하여 상기 오버플로 블록에 공간이 있는 경우, 상기 오버플로 블록에 상기 데이터 레코드를 위한 엔트리를 기록하고,
    상기 오버플로 블록에 공간이 없는 경우, 기설정된 해싱 함수를 이용하여 리해싱하여 상기 리해싱된 해시 버킷에 저장할 수 있는 공간이 있는지를 판단하여 저장할 수 있는 공간이 있는 경우, 상기 리해싱된 해시 버킷에 상기 데이터 레코드를 위한 엔트리를 저장하는 것을 특징으로 하는 저장 장치.
  20. 제19 항에 있어서,
    상기 삽입부는,
    상기 리해싱된 해시 버킷에 저장할 수 있는 공간이 없는 경우, 최초 해싱에 의해 선택된 해시 버킷의 가장 오래된 엔트리를 상기 데이터 레코드의 엔트리로 덮어쓰는 것을 특징으로 하는 저장 장치.
KR1020090134620A 2009-12-30 2009-12-30 해싱 기반의 데이터 관리 방법 및 장치 KR101072558B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090134620A KR101072558B1 (ko) 2009-12-30 2009-12-30 해싱 기반의 데이터 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090134620A KR101072558B1 (ko) 2009-12-30 2009-12-30 해싱 기반의 데이터 관리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20110077934A KR20110077934A (ko) 2011-07-07
KR101072558B1 true KR101072558B1 (ko) 2011-10-11

Family

ID=44917461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090134620A KR101072558B1 (ko) 2009-12-30 2009-12-30 해싱 기반의 데이터 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101072558B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416586B1 (ko) * 2012-10-17 2014-07-08 주식회사 리얼타임테크 해쉬를 이용한 전문 기반 논리 연산 수행 방법
KR101820017B1 (ko) * 2016-10-26 2018-01-18 주식회사 리얼타임테크 데이터베이스 클러스터링 장치 및 그 방법
KR101970874B1 (ko) * 2017-04-28 2019-08-13 한양대학교 에리카산학협력단 비휘발성 메모리 저장 장치를 위한 하이브리드 해시 인덱스

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511190A (en) 1995-01-20 1996-04-23 Tandem Computers, Inc. Hash-based database grouping system and method
KR100325688B1 (ko) 1999-11-19 2002-02-25 오길록 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법
KR100899097B1 (ko) 2007-05-11 2009-05-25 한국과학기술원 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511190A (en) 1995-01-20 1996-04-23 Tandem Computers, Inc. Hash-based database grouping system and method
KR100325688B1 (ko) 1999-11-19 2002-02-25 오길록 해쉬 인덱스 구조의 확장 해슁 디렉토리 분할 시점 제어방법 및 이를 이용한 엔트리 삽입, 삭제, 검색 방법
KR100899097B1 (ko) 2007-05-11 2009-05-25 한국과학기술원 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR20110077934A (ko) 2011-07-07

Similar Documents

Publication Publication Date Title
US7831783B2 (en) Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US10261913B2 (en) Persistent memory for key-value storage
JP3524428B2 (ja) 記憶装置、記憶システム、メモリ管理方法及び記録媒体
US8423594B2 (en) Real-time hash map
US5893120A (en) Methods and apparatus for information storage and retrieval using a hashing technique with external chaining and on-the-fly removal of expired data
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US7987190B2 (en) Filesystem having a filename cache
US7693875B2 (en) Method for searching a data page for inserting a data record
US20130086121A1 (en) Path lookup in a hierarchical file system
CN107577436B (zh) 一种数据存储方法及装置
CN108804510A (zh) 键值文件系统
TW201301030A (zh) 在一記憶體裝置中減少次要位址表檢查之快速轉譯指示器
KR20190019805A (ko) 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체
KR101072558B1 (ko) 해싱 기반의 데이터 관리 방법 및 장치
CN111459885B (zh) 一种数据的处理方法、装置、计算机设备和存储介质
KR102545067B1 (ko) 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
JP6089890B2 (ja) ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム
US6961739B2 (en) Method for managing directories of large-scale file system
CN105512325A (zh) 多版本数据索引的更新、删除与建立方法及装置
Lee et al. An efficient buffer management scheme for implementing a B-tree on NAND flash memory
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
US8285691B2 (en) Binary method for locating data rows in a compressed data block
CN108804571B (zh) 一种数据存储方法、装置以及设备
KR20090119481A (ko) 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법
KR101970874B1 (ko) 비휘발성 메모리 저장 장치를 위한 하이브리드 해시 인덱스

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151005

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170928

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181005

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190911

Year of fee payment: 9