KR20130064319A - Hybrid hash index for storage device based on flash memory - Google Patents
Hybrid hash index for storage device based on flash memory Download PDFInfo
- Publication number
- KR20130064319A KR20130064319A KR1020110130878A KR20110130878A KR20130064319A KR 20130064319 A KR20130064319 A KR 20130064319A KR 1020110130878 A KR1020110130878 A KR 1020110130878A KR 20110130878 A KR20110130878 A KR 20110130878A KR 20130064319 A KR20130064319 A KR 20130064319A
- Authority
- KR
- South Korea
- Prior art keywords
- bucket
- record
- key
- records
- buckets
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
본 발명은 플래시 메모리 기반 저장 장치에 관한 것이다.The present invention relates to a flash memory based storage device.
해시 인덱스를 사용하여 레코드를 저장하는 버켓들을 관리하는 플래시 메모리 기반 저장 장치가 개시된다. A flash memory based storage device is disclosed that manages buckets storing records using a hash index.
하드 디스크 등의 디스크 기반의 저장 장치를 위해 해시(hash) 인덱스를 비롯한 다양한 인덱스(index) 구조들이 사용될 수 있다.Various index structures, including hash indexes, may be used for disk-based storage devices such as hard disks.
디스크 기반의 확장형 해시 인덱스가 사용될 경우, 디스크 기반의 저장 장치는 버켓(bucket) 오버플로우(overflow)가 발생할 때마다 오버플로우가 발생한 버켓에 대한 분할 연산을 수행한다. 또한, 디스크 기반의 저장 장치는 키 값이 저장된 레코드를 버켓 내에서 삭제할 때, 해당 레코드를 직접적으로 삭제한다.When a disk-based extended hash index is used, the disk-based storage device performs a partition operation on the bucket in which the overflow occurs whenever a bucket overflow occurs. In addition, when a disk-based storage device deletes a record in which a key value is stored in a bucket, the disk-based storage device directly deletes the record.
최근, 플래시(flash) 메모리(memory)는 빠른 접근 속도, 가벼운 무게, 적은 전력소모 및 충격에 강한 내구성 등의 이유로 하드 디스크(hard disk)를 대체할 저장 매체로 주목 받고 있다. 플래시 메모리는 그 물리적 특성 상 읽기, 쓰기 및 소거 등의 연산의 처리 속도의 측면 및 제자리 갱신 연산이 불가능하다는 측면에서 디스크 기반의 저장 장치와는 상이한 특징을 갖는다.'Recently, flash memory has attracted attention as a storage medium to replace a hard disk for reasons of fast access speed, light weight, low power consumption, and shock resistance durability. Flash memory has different characteristics from disk-based storage in terms of its physical characteristics in terms of processing speed of operations such as read, write and erase, and in-place update operations.
플래시 메모리에 기반한 저장 장치에 기존의 해시 인덱스가 사용될 경우, 플래시 메모리에 기반한 저장 장치는, 버켓 오버플로우의 발생으로 인한 분할 연산 또는 레코드에 대한 삭제 연산을 수행할 때, 상기의 분할 연산 또는 삭제 연산에 대응하는 레코드를 직접적으로 삭제해야 한다. 따라서, 플래시 메모리에 기반한 저장 장치는 소거 연산을 피할 수 없다. 또한, 레코드에 대한 갱신 연산에 있어서, 플래시 메모리에 기반한 저장 장치는 쓰기 연산 및 소거 연산을 사용하여 버켓 내에 저장된 레코드를 갱신하여야 한다.When an existing hash index is used for a storage device based on the flash memory, the storage device based on the flash memory may perform the partitioning operation or the deleting operation when performing the partitioning operation or the delete operation on the record due to the bucket overflow. You must directly delete the record corresponding to. Therefore, a storage device based on flash memory cannot avoid an erase operation. In addition, in an update operation on a record, a storage device based on a flash memory must update a record stored in a bucket using a write operation and an erase operation.
이러한 특징으로 인해, 하드 디스크를 위해 구현된 해시 인덱스가 그대로 플래시 메모리를 위해 사용될 경우, 많은 문제가 발생할 수 있다.Due to this feature, many problems may arise when the hash index implemented for the hard disk is used for the flash memory as it is.
특히, 레코드가 빈번하게 삽입, 삭제 및 갱신되면 저장된 데이터에 대한 대량의 논리적인 제자리 갱신이 발생할 수 있다. 이러한 제자리 갱신을 물리적으로 처리하기 위해서, NAND 플래시 메모리 내에서 느린 쓰기 연산 및 소거 연산이 수행된다. 이러한, 느린 쓰기 연산 및 소거 연산은 NAND 플래시 메모리의 성능 및 내구도를 저하시킬 수 있다.In particular, frequent insertions, deletions, and updates of records can result in a large amount of logical in-situ updates to stored data. To physically handle such in situ updates, slow write and erase operations are performed in the NAND flash memory. Such slow write and erase operations can degrade the performance and durability of the NAND flash memory.
한국공개특허 제10-2010-0083976호(공개일 2010년 07월 23일)에는 해시 테이블을 사용하는 플래시 메모리 저장 장치 및 상기의 플래시 메모리 저장 장치의 쓰기 효율 및 수명 향상을 위한 버켓(bucket)을 개시하였다.Korean Patent Publication No. 10-2010-0083976 (published Jul. 23, 2010) discloses a flash memory storage device using a hash table and a bucket for improving the write efficiency and lifetime of the flash memory storage device. Started.
일 실시예는 오버플로우가 발생한 버켓을 위해 오버플로우 버켓을 할당하여 버켓에 대한 분할 연산을 최대한 지연시킴으로써 플래시 메모리의 쓰기 연산 및 소거 연산을 감소시키는 플래시 메모리 저장 장치를 제공할 수 있다.One embodiment may provide a flash memory storage device that allocates an overflow bucket for a bucket in which an overflow has occurred and delays a partitioning operation on the bucket as much as possible, thereby reducing a write operation and an erase operation of the flash memory.
일 실시예는 각 버켓 내의 갱신 레코드 및 삭제 레코드의 비율에 따라 버켓에 대한 오버플로우 버켓들의 개수를 적응적으로 유지함으로써 추가적인 읽기 연산 및 쓰기 연산을 감소시키는 플래시 메모리 저장 장치를 제공할 수 있다.One embodiment may provide a flash memory storage device that reduces additional read and write operations by adaptively maintaining the number of overflow buckets for a bucket according to the ratio of update records and delete records in each bucket.
일 측면에 있어서, 하나 이상의 버켓들을 저장하는 플래시 메모리 및 상기 하나 이상의 버켓들을 관리하는 제어부를 포함하고, 상기 제어부는 해시 함수를 사용하여 키에 대한 해시 인덱스를 획득하고, 상기 하나 이상의 버켓들 중 상기 해시 인덱스에 대응하는 버켓 내에 상기 키 및 데이터를 포함하는 추가 레코드를 저장하고,In one aspect, a flash memory for storing one or more buckets and a control unit for managing the one or more buckets, the control unit uses a hash function to obtain a hash index for the key, the one of the one or more buckets Storing an additional record containing the key and data in a bucket corresponding to a hash index,
상기 버켓 내에 최대 개수의 레코드들이 저장된 경우, 상기 제어부는 상기 버켓 내의 레코드들 중 합병될 수 있는 레코드들의 비율이 기준 값 이상이면 상기 버켓에 대한 합병 연산을 수행하고, 상기 비율이 상기 기준 값보다 작으면 상기 버켓에 대한 합병 연산 및 분할 연산을 수행하는, 플래시 메모리 저장 장치가 제공된다.If the maximum number of records are stored in the bucket, the controller performs a merge operation on the bucket if the ratio of records that can be merged among the records in the bucket is greater than or equal to the reference value, and the ratio is smaller than the reference value. A flash memory storage device is provided which performs a merge operation and a split operation on the bucket.
상기 제어부는 상기 대응하는 버켓 내에 상기 키에 대응하는 레코드가 없는 경우 상기 추가 레코드를 삽입 레코드로서 상기 버켓 내에 저장하고, 상기 대응하는 버켓 내에 상기 키에 대응하는 레코드가 있는 경우 상기 추가 레코드를 갱신 레코드로서 상기 대응하는 버켓 내에 저장할 수 있다.The control unit stores the additional record in the bucket as an insertion record when there is no record corresponding to the key in the corresponding bucket, and updates the additional record when there is a record corresponding to the key in the corresponding bucket. Can be stored in the corresponding bucket.
상기 합병에 의해 제거될 수 있는 레코드들은 갱신 레코드 및 삭제 레코드를 포함하고, 상기 갱신 레코드는 상기 대응하는 버켓 내의 상기 추가 레코드의 이전에 저장된 레코드들 중 상기 키에 대응하는 레코드의 데이터가 갱신됨을 나타내고, 상기 삭제 레코드는 상기 대응하는 버켓 내의 상기 추가 레코드의 이전에 저장된 레코드들 중 상기 키에 대응하는 레코드가 삭제된 것임을 나타낼 수 있다.Records that can be removed by the merging include an update record and a delete record, wherein the update record indicates that data of the record corresponding to the key of the previously stored records of the additional record in the corresponding bucket is updated. The deletion record may indicate that the record corresponding to the key of the previously stored records of the additional record in the corresponding bucket has been deleted.
상기 제어부는 상기 대응하는 버켓 내에 상기 추가 레코드를 저장할 공간이 없는 경우 상기 대응하는 버켓에 오버플로우 버켓을 추가로 할당함으로써 상기 공간을 생성하고, 상기 공간 내에 상기 추가 레코드를 저장할 수 있다.The controller may generate the space by additionally assigning an overflow bucket to the corresponding bucket when there is no space for storing the additional record in the corresponding bucket, and may store the additional record in the space.
상기 제어부는 상기 하나 이상의 버켓들 중 검색 키에 대응하는 버켓 내에서, 상기 키에 대응하는 레코드를 최근에 저장된 순서로 검색함으로써 검색 연산을 수행할 수 있다..The controller may perform a search operation by searching for a record corresponding to the key in a recently stored order in the bucket corresponding to the search key among the one or more buckets.
오버플로우가 발생한 버켓을 위해 오버플로우 버켓을 할당하여 버켓에 대한 분할 연산을 최대한 지연시킴으로써 플래시 메모리의 쓰기 연산 및 소거 연산을 감소시키는 플래시 메모리 저장 장치가 제공된다.A flash memory storage device is provided that allocates an overflow bucket for an overflowed bucket to delay partitioning operations on the bucket as much as possible, thereby reducing the write and erase operations of the flash memory.
각 버켓 내의 갱신 레코드 및 삭제 레코드의 비율에 따라 버켓에 대한 오버플로우 버켓들의 개수를 적응적으로 유지함으로써 추가적인 읽기 연산 및 쓰기 연산을 감소시키는 플래시 메모리 저장 장치가 제공된다.A flash memory storage device is provided that reduces additional read and write operations by adaptively maintaining the number of overflow buckets for a bucket in accordance with the ratio of update and delete records in each bucket.
도 1은 일 실시예에 따른 플래시 메모리 저장 장치의 구조도이다.
도 2는 일 예에 따른 플래시 메모리 저장 장치 내에서 저장된 디렉토리 및 버켓들을 도시한다.
도 3은 일 예에 따른 오버플로우 버켓을 사용한 오버플로우 처리 방법을 설명한다.
도 4는 일 예에 따른 갱신 레코드 및 삭제 레코드를 설명한다.
도 5는 일 예에 따른 버켓의 합병 및 분할의 결과를 설명한다.
도 6은 일 예에 따른 레코드의 삽입 연산의 슈도(pseudo) 알고리즘을 나타낸다.
도 7은 일 예에 따른 합병 기준 값에 따른 오버플로우 버켓의 개수를 나타낸다.
도 8은 일 예에 따른 오버플로우 버캣의 개수에 따른 인덱스 생성 및 검색 시간을 나타낸다.
도 9는 일 예에 따른 해시 인덱스에서의 연산 횟수 및 생성 시간을 나타낸다.
도 10은 일 예에 따른 해시 인덱스의 검색 시간을 나타낸다.1 is a structural diagram of a flash memory storage device according to an exemplary embodiment.
2 illustrates directories and buckets stored in a flash memory storage device according to an example.
3 illustrates an overflow processing method using an overflow bucket according to an example.
4 illustrates an update record and a delete record according to an example.
5 illustrates a result of merging and dividing a bucket according to an example.
6 illustrates a pseudo algorithm of an insert operation of a record according to an example.
7 illustrates the number of overflow buckets according to a merge criterion value according to an example.
8 illustrates index generation and search time according to the number of overflow buckets according to an example.
9 illustrates an operation count and a generation time in a hash index according to an example.
10 illustrates a search time of a hash index according to an example.
이하에서, 실시예들을, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, the present invention is not limited to or limited by the embodiments. Like reference symbols in the drawings denote like elements.
도 1은 일 실시예에 따른 플래시 메모리 저장 장치의 구조도이다.1 is a structural diagram of a flash memory storage device according to an exemplary embodiment.
플래시 메모리 저장 장치(100)는 플래시 메모리(110), 휘발성(volatile) 메모리(120) 및 제어부(130)를 포함할 수 있다.The flash
플래시 메모리(110)는 하나 이상의 버켓들, 각 버켓에 할당된 오버플로우 버켓들 및 디렉토리(directory) 등을 저장할 수 있다.The
휘발성 메모리(120)는 하나 이상의 버켓들, 각 버켓에 할당된 오버플로우 버켓들 및 디렉토리 등을 저장 또는 캐싱(caching)할 수 있다.The
제어부(130)는 플래시 메모리(110) 내에 데이터를 저장하기 위해 하나 이상의 버켓들, 오버플로우 버켓들 및 디렉토리 등을 관리할 수 있으며, 하나 이상의 버켓들, 오버플로우 버켓들 및 디렉토리 등을 휘발성 메모리(120) 내에 캐싱할 수 있다.
The
도 2는 일 예에 따른 플래시 메모리 저장 장치 내에서 저장된 디렉토리 및 버켓들을 도시한다.2 illustrates directories and buckets stored in a flash memory storage device according to an example.
도 2에서, 디렉토리(210) 및 2 개의 버켓들(220 및 230)이 도시되었다. 디렉토리(210) 내의 항목(entry)들은 각각 하나의 해시 인덱스 값을 나타낼 수 있으며, 1 개의 버켓을 가리킬 수 있다.해시 인덱스 값이 "0"인 항목은 0번 버켓(220)을 가리키고, 해시 인덱스 값이 1인 목은 1번 버켓(230)을 가리킨다.In FIG. 2,
도 2에서, 디렉토리(210)는 1 개의 비트의 값만을 사용하여 키에 대응하는 버켓을 구분한다. 즉, 해시 인덱스는 1 비트로 구성된 값을 갖는다. 따라서, 디렉토리(210)의 전역 깊이(global depth)는 1이다. 또한, 0번 버켓(220) 및 1번 버켓(230)은 각각 하나의 해시 인덱스 값에 대응하며, 해시 인덱스의 값을 구성하는 비트들 중 1 비트에 의해 구분된다. 즉, 0번 버켓(220) 및 1번 버켓(230) 각각의 지역 깊이는 1이다.In FIG. 2, the
제어부(130)는 해시 함수를 사용하여 키에 대한 해시 인덱스를 획득할 수 있다. 해시 함수는 키들을 하나 이상의 버켓들 각각으로 고르게 분산시키는 함수일 수 있다. 예컨대, 해시 함수는 키를 구성하는 비트들 중 특정한 개수의 최하위 비트들을 추출하는 모듈러(modular) 함수일 수 있다. 도 2에서, 해시 함수는 키의 최하위 비트를 추출하는 함수일 수 있다.The
버켓은 하나 이상의 레코드들을 저장할 수 있다. 도 2에서, 버켓은 4 개의 레코드들을 저장할 수 있다. 0번 버켓(220) 내에는 각각 키 값이 4, 12 및 10인 레코드들이 저장되었고, 1번 버켓(230) 내에는 각각 키 값이 1, 5, 21 및 16인 레코드들이 저장되었다. 버켓 내의 레코드들의 키 값이 도시되었고, 상기의 키 값의 2 진수 값이 괄호 안에 도시되었다.The bucket can store one or more records. In Figure 2, the bucket can store four records. In the
레코드는 하나 이상의 버켓들 중 레코드의 키에 대응하는 버켓 내에 저장된다. 여기서, 레코드의 키에 대응하는 버켓이란 키에 대한 해시 인덱스에 대응하는 버켓을 의미한다. 즉, 레코드를 추가로 저장할 때, 제어부(130)는 하나 이상의 버켓들 중 키에 대한 해시 인덱스에 대응하는 버켓 내에 상기의 추가 레코드를 저장할 수 있다. 저장되는 레코드는 키 및 데이터를 포함할 수 있다.The record is stored in one of the one or more buckets corresponding to the key of the record. Here, the bucket corresponding to the key of the record means the bucket corresponding to the hash index of the key. That is, when additionally storing the record, the
해시 함수에 의해, 키 값 중 최하위 1 비트가 해시 인덱스로서 추출된다. 따라서, 키 값의 2 진수 표현에 따라, 최하위 비트가 0인 키를 갖는 레코드들은 0번 버켓(220)에 저장되었고, 최하위 비트가 1인 키를 갖는 레코드들은 1번 버켓(230)에 저장되었고,
By the hash function, the least significant one bit of the key value is extracted as the hash index. Thus, according to the binary representation of the key value, records with the key with the least
도 3은 일 예에 따른 오버플로우 버켓을 사용한 오버플로우 처리 방법을 설명한다.3 illustrates an overflow processing method using an overflow bucket according to an example.
제어부(130)가 레코드의 삽입 연산을 수행할 때, 키 값에 대응하는 버캣 내에는 빈 공간이 없을 수 있다. 예컨대, 버켓들의 상태가 도 1에 도시된 것과 같을 때, 1번 버켓(230)은 이미 4 개의 레코드들을 저장하고 있다. 따라서, 키 값이 11인 레코드가 추가로 저장될 경우, 상기의 추가로 저장되는 레코드의 키에 대응하는 1번 버켓(230) 내에는 빈 공간이 없기 때문에 버켓 오버플로우가 발생한다.When the
키에 대응하는 버켓 내에 추가 레코드를 저장할 공간이 없어 버켓 오버플로우가 발생한 경우, 제어부(130)는, 디렉토리 및 하나 이상의 버켓들에 대한 분할 연산을 즉시 수행하는 대신, 상기의 대응하는 버켓에게 오버플로우 버켓(310)을 추가로 할당함으로써 공간을 생성할 수 있다. 제어부(130)는 오버플로우 버켓 내의 공간 내에 추가 레코드를 저장할 수 있다.If a bucket overflow occurs because there is no space to store additional records in the bucket corresponding to the key, the
하나 이상의 버켓들은 각각 자신에게 할당된 오버플로우 버켓을 가리킬 수 있다. 하나의 버켓에 복수 개의 오버플로우 버켓들이 할당될 수도 있다. 버켓 및 상기의 버켓에게 할당된 복수 개의 오버플로우 버켓들은 포인터(pointer) 또는 리스트(list) 구조 등을 통해 상호 간에 일렬로 연결될 수 있다.One or more buckets may each point to an overflow bucket assigned to it. A plurality of overflow buckets may be allocated to one bucket. The bucket and the plurality of overflow buckets allocated to the buckets may be connected in a line to each other through a pointer or list structure.
1번 버켓(230)에게 오버플로우 버켓(310)이 할당되면, 키 값인 11인 추가 레코드는 1번 버켓(230)의 오버플로우 버켓(310) 내에 저장될 수 있다. 이후, 레코드의 삽입 연산에 의해, 키 값이 13인 추가 레코드 및 키 값이 29인 추가 레코드 또한 키에 대응하는 1번 버켓(230)의 오버플로우 버켓(310) 내에 저장될 수 있다.When the
제어부(130)는 버켓 또는 오버플로우 버켓 내에 레코드를 저장할 공간이 있는 동안에는, 상기의 버켓 또는 오버플로우를 휘발성 메모리(130) 내에서만 관리할 수 있다.
The
도 4는 일 예에 따른 갱신 레코드 및 삭제 레코드를 설명한다.4 illustrates an update record and a delete record according to an example.
도 4에서, 1번 버켓(230)에게 2 개의 오버플로우 버켓들이 할당되었다. 1번 버켓(230)에 레코드들이 저장됨에 따라, 버켓 오버플로우가 발생하고, 제어부(130)는 제1 오버플로우 버켓(410) 및 제2 오버플로우 버켓(420)을 1번 버켓(230)에게 할당한다.In FIG. 4,
버켓 내에 저장된 레코드는 삽입 레코드, 삭제 레코드 및 갱신 레코드로 구분될 수 있다. 도 4에서, 제1 삭제 레코드(432), 제2 삭제 레코드(434) 및 제3 삭제 레코드(436)가 도시되었고, 제1 갱신 레코드(442)가 도시되었다.Records stored in the bucket can be divided into insert records, delete records and update records. In FIG. 4, a first
제어부(130)가 추가 레코드를 버켓 내에 삽입할 때, 레코드의 키에 대응하는 버켓 내에는 이미 상기의 키에 대응하는 레코드(즉, 추가 레코드의 키와 동일한 값을 갖는 키를 가진 레코드)가 있을 수 있다. 제어부(130)는 추가 레코드의 키에 대응하는 버켓 내에 상기의 키에 대응하는 레코드가 있는 경우 추가 레코드를 갱신 레코드로서 대응하는 버켓 내에 저장할 수 있다. 즉, 갱신 레코드는 추가 레코드의 키에 대응하는 버켓 내의 추가 레코드의 이전에 저장된 레코드들 중 추가 레코드의 키에 대응하는 레코드가 갱신됨을 나타낼 수 있다. 제1 갱신 레코드(442)는 1번 버켓(230) 내의 키 값이 13인 레코드(454)의 데이터가 갱신되었음을 나타낼 수 있다. 키 값이 13인 레코드(454)의 갱신된 데이터는 제1 갱신 레코드(442) 내에 저장될 수 있다. 따라서, 갱신 레코드가 삽입된 후, 키 13에 대해 유효한 레코드는 키 값이 13인 레코드(454)가 아닌 제1 갱신 레코드(442)가 된다.When the
한편, 제어부(130)가 추가 레코드를 버켓 내에 삽입할 때, 레코드의 키에 대응하는 버켓 내에는 이미 상기의 키에 대응하는 레코드(즉, 추가 레코드의 키와 동일한 값을 갖는 키를 가진 레코드)가 없을 수 있다. 제어부(130)는 추가 레코드의 키에 대응하는 버켓 내에 상기의 키에 대응하는 레코드가 없는 경우 추가 레코드를 삽입 레코드로서 대응하는 버켓 내에 저장할 수 있다.On the other hand, when the
즉, 제어부(130)는 특정한 레코드의 삽입 연산 또는 갱신 연산을, 상기의 특정한 레코드를 대응하는 버켓 내에 추가함으로써 처리할 수 있다. 따라서, 특정한 레코드의 데이터가 갱신되는 경우에도, 제어부(130)는 버켓 내에 이미 저장된 상기의 특정한 레코드의 키에 대응하는 레코드를 물리적으로 갱신할 필요가 없다.That is, the
또한, 제어부(130)는, 일정한 범위 내에서, 레코드의 삽입 연산 및 레코드의 갱신 연산을 동일한 방식으로 처리할 수 있으며, 갱신 레코드 및 삽입 레코드는 동일한 형태를 가질 수 있다. 제어부(130)는 버켓 내에 저장된 동일한 키를 갖는 레코드들 중 가장 뒤에 저장된 레코드를 상기 키에 대한 유효한 레코드로서 처리할 수 있다.In addition, the
전술된 것과 같은 갱신 레코드의 삽입으로 인해, 제어부(130)는 특정한 키를 갖는 레코드의 데이터를 갱신하고자할 때, 상기의 레코드(또는, 버켓)이 저장된 플래시 메모리 내의 블록(block)을 소거하는 연산을 피할 수 있다.Due to the insertion of the update record as described above, the
제어부(130)는 삭제 레코드를 대응하는 버켓 내에 추가함으로써 특정한 레코드를 버켓 내에서 삭제할 수 있다. 즉, 삭제 레코드는 추가 레코드의 키에 대응하는 버켓 내의 추가 레코드 이전에 저장된 레코드들 중 추가 레코드의 키에 대응하는 레코드가 삭제된 것임을 나타낼 수 있다. 예컨대, 도 4에서 도시된 것과 같이, 키 값이 11인 레코드(452)가 1번 버켓(230) 내에 저장된 경우, 제어부(130)는 키 값이 11인 레코드(452)의 삭제를 나타내는 제1 삭제 레코드(432)를 1번 버켓(230) 내에 삽입함으로써 상기의 키 값이 11인 레코드(452)가 삭제되었음을 나타낼 수 있다.The
제어부(130)는 삭제의 대상이 되는 레코드의 키 값을 음수화함으로써 삭제 레코드를 생성할 수 있다. 예컨대, 키 값이 -11인 제1 삭제 레코드(432)는 키 값이 11인 레코드(452)가 삭제되었음을 나타내는 삭제 레코드일 수 있다.The
전술된 것과 같은 삭제 레코드의 추가로 인해, 제어부(130)는 특정한 키를 갖는 레코드를 삭제하고자할 때, 상기의 레코드(또는, 버켓)이 저장된 플래시 메모리 내의 블록(block)을 소거하는 연산을 피할 수 있다.Due to the addition of a deletion record as described above, when the
이후, 키 값이 11인 레코드가 다시 추가될 경우, 제어부(130)는 키 값이 11인 레코드를 다시 1번 버켓(230) 내에 삽입할 수 있다.Then, when the record with the
전술된 갱신 레코드 및 삽입 레코드의 설명에 따라, 도 4의 1번 버켓(230) 내에서 유효한 레코드들은 5 개이고, 각각 키 값 19, 13, 5, 15 또는 21을 갖는다.In accordance with the description of the update record and the insert record described above, there are five valid records in
전술된 갱신 레코드 및 삽입 레코드의 설명에 따르면, 버켓 내에 저장된 동일한(또는, 절대 값이 동일한) 키를 갖는 레코드들 중 가장 뒤에 저장된 레코드가 상기의 키에 대한 유효한 레코드임을 알 수 있다. 따라서, 검색 키를 갖는 레코드가 검색될 때, 제어부(130)는 하나 이상의 버켓들 중 검색 키에 대응하는 버켓 내에서, 키에 대응하는 레코드들 최근에 저장된 순서로 검색함으로써 검색 연산을 수행할 수 있다.
According to the description of the update record and the insert record described above, it can be seen that the record stored at the end of the records having the same (or the same absolute value) key stored in the bucket is a valid record for the key. Therefore, when a record having a search key is searched, the
도 5는 일 예에 따른 버켓의 합병 및 분할의 결과를 설명한다.5 illustrates a result of merging and dividing a bucket according to an example.
오버플로우 버켓 내에 저장되는 레코드들을 포함하여, 하나의 버켓 내에 저장될 수 있는 레코드들의 개수는 제한될 수 있다. 예컨대, 오버플로우 버켓이 할당되지 않은 채 버켓 내에 저장될 수 있는 레코드들의 개수가 4 개이고, 하나의 오버플로우 버켓 내에 저장될 수 있는 레코드들의 개수가 4 개이고, 하나의 버켓에 할당될 수 있는 오버플로우 버켓들의 최대 개수가 2 개이면, 하나의 버켓 내에 저장될 수 있는 레코드들의 최대 개수는 12이다.The number of records that can be stored in one bucket, including records stored in the overflow bucket, can be limited. For example, the number of records that can be stored in a bucket without an overflow bucket being allocated is four, the number of records that can be stored in one overflow bucket is four, and the overflow can be allocated to one bucket. If the maximum number of buckets is two, the maximum number of records that can be stored in one bucket is twelve.
버켓 내에 최대 개수의 레코드들이 저장된 경우, 제어부(130)는 버켓 내의 레코드들에 대한 합병 연산 및 분할 연산을 수행할 수 있다.When a maximum number of records are stored in the bucket, the
합병 연산은 버켓 내의 레코드들을 합병함으로써 버켓 내의 레코드들의 개수를 줄이는 것을 의미할 수 있다. 여기서, 합병될 수 있는 레코드는 갱신 레코드 및 삭제 레코드를 포함할 수 있다. 예컨대, 버켓에 합병 연산이 적용될 때, 제어부(130)는 버켓 내의 특정한 레코드와 상기의 특정한 레코드에 대응하는 삭제 레코드를 삭제할 수 있다. 또한, 버켓에 합병 연산이 적용될 때, 제어부(130)는 버켓 내의 특정한 레코드와 상기의 특정한 레코드에 대응하는 갱신 레코드 중, 상기의 특정한 레코드를 삭제하고 갱신 레코드만을 남길 수 있다. 하니의 특정한 레코드에 대해 복수 개의 갱신 레코드들이 있을 경우, 제어부(130)는 상기의 특정한 레코드 및 복수 개의 갱신 레코드들 중 마지막의 갱신 레코드만을 남길 수 있다.The merge operation may mean reducing the number of records in the bucket by merging the records in the bucket. Here, the record that can be merged may include an update record and a delete record. For example, when a merge operation is applied to a bucket, the
분할 연산은 하나의 버켓 내의 레코드들을 2 개의 버켓들에 분할하여 저장함으로써 각 버켓에 저장된 레코드들의 개수를 줄이는 것을 의미할 수 있다. 제어부(130)는 분할 연산을 통해 하나의 버켓을 2 개의 버켓들로 분할할 수 있다. 제어부(130)는 분할된 버켓 내에 저장되었던 레코드들 각각에 대해, 각 레코드의 키에 해시 함수를 적용함으로써 해시 인덱스를 획득할 수 있고, 각 레코드의 해시 인덱스에 따라 새로 생성된 2 개의 버켓들 중 하나의 버켓 내에 각 레코드를 저장할 수 있다.The partitioning operation may mean reducing the number of records stored in each bucket by dividing and storing records in one bucket into two buckets. The
제어부(130)는 분할에 의해 생성된 버켓들 각각의 지역 깊이의 값을 분할된 버켓의 지역 깊이의 값 보다 1이 더 크게 설정할 수 있다. 또한, 제어부(130)는 분할된 버켓의 지역 깊이의 값이 전역 깊이와 동일한 경우, 디렉토리(210)의 항목이 분할에 의해 생성된 버켓을 가리키게 하기위해 전역 깊이를 1 증가시킬 수 있고, 디렉토리(210)를 분할할 수 있다.The
디렉토리(210)가 분할되지 않는 경우, 제어부(130)는 분할의 대상인 버켓을 가리키던 디렉토리(210) 내의 2 개의 항목들을 각각 분할에 의해 생성된 버켓들 중 하나의 버켓을 가리키게 한다.When the
디렉토리(210)가 분할되는 경우, 제어부(130)는 디렉토리 내의 각 항목들이 각각 분할된 버켓 외의 기존의 버켓 또는 분할에 의해 생성된 새로운 버켓을 가리키게 한다.When the
특정한 버켓 내에 최대 개수의 레코드들이 저장된 경우, 저장된 레코드들 중 합병될 수 있는 레코드들의 비율이 특정한 기준 값 이상이면, 합병에 의해 레코드들의 개수가 충분히 줄 수 있고, 버켓이 분할될 필요가 없을 수 있다. 따라서, 제어부(130)는 버켓 내에 최대 개수의 레코드들이 저장되었고, 버켓 내의 레코드들 중 합병될 수 있는 레코드들의 비율이 기준 값 이상이면 버켓에 대한 합병 연산만을 수행할 수 있다.When the maximum number of records is stored in a particular bucket, if the ratio of records that can be merged among the stored records is above a certain reference value, the number of records may be sufficiently reduced by merging, and the bucket may not need to be divided. . Therefore, the
반면, 상기의 비율이 특정한 기준 값보다 작으면 합병 후에도 상기의 특정한 버켓 내에 많은 레코드들이 남는다. 따라서, 제어부(130)는 버켓 내에 최대 개수의 레코드들이 저장되었고,, 버켓 내의 레코드들 중 합병될 수 있는 레코드들의 비율이 기준 값보다 작으면 우선 버켓에 대한 합병 연산을 수행하고, 다음으로 합병된 버켓에 대한 분할 연산을 수행할 수 있다. 제어부(130)는 합병 후 남은 유효한 레코드들로 분할에 의해 생성된 버켓들을 재구성할 수 있다.On the other hand, if the ratio is less than a certain reference value, many records remain in the particular bucket even after merging. Accordingly, the
여기서, 상기의 비율은 버켓 내에 저장될 수 있는 레코드들의 최대 개수에 대한 삭제 레코드 및 갱신 레코드의 비율일 수 있다. 예컨대, 도 3의 1번 버켓(230) 내에는 12 개의 레코드들이 저장되었고, 이중 삭제 레코드가 3개, 갱신 레코드가 1 개 있다. 따라서, 도 3의 1번 버켓(230)에 있어서, 상기의 비율은 4/12(= 1/3)일 수 있다. 또는, 상기의 비율은 버켓 내에 저장될 수 있는 레코드들의 최대 개수에 대한 합병 후 제거될 레코드들의 개수일 수 있다. 삭제 레코드는 삭제 레코드 자신과 피삭제 레코드 모두를 제거한다. 갱신 레코드는 이전에 저장된 동일한 키를 갖는 레코드들(갱신 레코드를 포함함)을 제거한다. 따라서, 도 3의 1번 버켓(230)에 있어서, 상기의 비율은 7/12일 수 있다. 상기의 기준 값은 합병 기준 값 α로 표현될 수 있다.Here, the ratio may be a ratio of the deletion record and the update record to the maximum number of records that can be stored in the bucket. For example, 12 records are stored in the
제어부(130)는 플래시 메모리의 특성 또는 플래시 메모리 저장 장치(100)가 수행하는 연산들의 특성 등에 기반하여 합병 기준 값 α을 적응적으로 결정할 수 있다.The
전술된 것과 같은 합병 및 분할에 의해, 삭제 레코드 및 갱신 레코드는 버켓 내에서 제거될 수 있다. 또한, 합병 또는 분할이 발생할 때까지 버켓의 레코드들이 저장된 블록에 대한 소거 연산이 지연되어, 플래시 메모리 저장 장치(100)의 성능이 향상될 수 있다.By merging and splitting as described above, the delete record and the update record can be removed in the bucket. In addition, an erase operation may be delayed for a block in which records of a bucket are stored until a merge or split occurs, so that the performance of the flash
예컨대, α의 값이 0.5이고, 비율이 7/12일 때, 제어부(130)는 도 4의 1번 버켓(230)을 합병할 수 있고, 상기의 합병 후 남는 유효한 레코드들(즉, 키 값이 13, 5, 21, 19 또는 15인 레코드들)을 분할함으로써 도 5의 1번 버켓(510) 및 2번 버켓(520)을 생성할 수 있다. 상기의 분할로 인해 디렉토리(210)의 깊이는 2로 증가한다. 디렉토리(210)는 2 개의 비트의 값들을 사용하여 키에 대응하는 버켓을 구분한다. 즉, 해시 인덱스는 2 비트로 구성된 값을 갖게 된다. 각 버켓은 하나의 해시 인덱스 값에 대응하여, 해시 인덱스의 값을 구성하는 비트들 중 1 비트 또는 2 비트들에 의해 구분된다.For example, when the value of α is 0.5 and the ratio is 7/12, the
도 5에서, 0번 버켓(220)은 해시 인덱스 "00" 및 "10"에 대응한다. 즉, 해시 인덱스의 최하위 1 비트의 값이 "0"인 키를 갖는 레코드는 0번 버켓(210) 내에 저장된다. 1번 버켓(510)은 해시 인덱스 "01"에 대응한다. 즉, 해시 인덱스의 최하위 2 비트들의 값이 "01"인 키를 갖는 레코드는 1번 버켓(510) 내에 저장된다. 2번 버켓(520)은 해시 인덱스 "11"에 대응한다. 즉, 해시 인덱스의 최하위 2 비트들의 값이 "11"인 키를 갖는 레코드는 1번 버켓(510) 내에 저장된다. 0번 버켓(220)의 지역 깊이는 1이고, 1번 버켓(510) 및 2번 버켓(520)의 지역 깊이는 2이다. 서로 상이한 지역 깊이를 갖는 버켓들 각각을 위해 서로 상이한 단계의 해시 함수가 사용될 수 있다. 즉, 1번 버켓(510)을 위해 사용되는 제1 해시 함수에 비해 0번 버켓(220)을 위해 사용되는 제2 해시 함수는 한 단계 아래의 해시함수일 수 있다.In FIG. 5,
검색 연산에 대해서, 제어부(130)는 해시 함수를 사용하여 검색 키 값을 해시 인덱스를 나타내는 해시 값으로 변환할 수 있다. 제어부(130)는 디렉토리(210)를 통해 키 값에 대응하는 버켓(또는, 버켓의 주소)을 찾을 수 있다. 제어부(130)는 버켓의 주소를 통해 검색 키 값과 동일한 값을 갖는 키를 포함하는 레코드를 검색할 수 있다. 전술된 것처럼, 삭제 레코드 및 갱신 레코드가 레코드에 대한 소거 연산 대신 버켓 내에 삽입되므로, 제어부(130)는 버켓 내의 가장 최근의 레코드가 저장된 위치부터 가장 오래된 레코드가 저장된 위치로(즉, 역방향으로) 저장된 레코드들의 키를 검사할 수 있다.For a search operation, the
전술된 것과 같은 방법에 의해 사용되는 해시 인덱스를 이하 하이브리드 해시 인덱스로 명명한다.
The hash index used by the same method as described above is referred to as hybrid hash index hereinafter.
도 6은 일 예에 따른 레코드의 삽입 연산의 슈도(pseudo) 알고리즘을 나타낸다.6 illustrates a pseudo algorithm of an insert operation of a record according to an example.
제1 행은 해시 함수의 키 값을 사용함으로써 해시 값을 획득하는 단계를 나타낼 수 있다.The first row may indicate obtaining a hash value by using the key value of the hash function.
제2 행 내지 제5 행은, 전체 깊이와 해시 값에 대응하는 버켓의 사용 깊이가 동일할 때, 해시 값에 대응하는 버켓 내에 레코드를 삽입하는 단계를 나타낼 수 있다.
제6 행 내지 제11 행은, 전체 깊이와 해시 값에 대응하는 버켓의 사용 깊이가 동일하지 않을 때, 한 단계 아래의 해시 함수를 이용하여 키에 대한 새로운 해시 값을 획득하고, 새로운 해시 값에 대응하는 버켓 내에 레코드를 삽입하는 단계를 나타낼 수 있다.
제12 행 내지 제21 행은, 버켓 내에 최대 개수의 레코드들이 삽입되었을 때, 버켓 내의 삭제 레코드 및 갱신 레코드의 비율을 측정하고, 측정된 비율이 합병 기준 값 α 이상일 때 합병 연산 및 분할 연산을 수행하는 단계를 나타낼 수 있다. 이때, 측정된 비율이 합병 기준 값 α보다 작으면, 합병 연산에 의해 획득된 유효한 레코드들을 가지고 버켓이 재구성될 수 있다. 재구성된 버켓이 최대 개수의 레코드들을 저장할 때까지, 상기의 재구성된 버켓에 대한 삽입 연산이 다시 수행될 수 있다.
하기의 도 7 내지 도 10은 각각 일 실시예에 따른 플레시 메모리 저장 장치에 대한 시뮬레이션를 나타낸다. 도 7 내지 도 10을 참조하여 설명된 실험에서, 하나의 블록은 32 개의 페이지로 구성된다. 하나의 블록은 32 개의 키 값들(즉, 레코드들)을 저장할 수 있다. 인덱스의 생성 시간을 측정하기 위해, 10,000 개의 레코드들을 삽입하였을 때의 플래시 메모리의 읽기 연산, 쓰기 연산 및 소거 연산의 횟수가 측정되었다. 최종적인 생성 시간을 계산하기 위해 플래시 메모리의 속도는, 읽기 연산, 쓰기 연산 및 소거 연산에 대해 각각 25μs, 200μs, 1.5ms로 설정되었다.
7 through 10 illustrate simulations of a flash memory storage device, according to an exemplary embodiment. In the experiment described with reference to FIGS. 7 to 10, one block is composed of 32 pages. One block can store 32 key values (ie records). To measure the creation time of the index, the number of read, write and erase operations of the flash memory when 10,000 records were inserted were measured. To calculate the final generation time, the flash memory speed was set to 25 μs, 200 μs and 1.5 ms for read, write and erase operations, respectively.
도 7은 일 예에 따른 합병 기준 값에 따른 오버플로우 버켓의 개수를 나타낸다.7 illustrates the number of overflow buckets according to a merge criterion value according to an example.
제1 그래프(710)는 버켓에 할당되는 오버플로우 버켓의 최대 개수가 2 개일 때, 각 합병 기준 값에 대한 인덱스 생성 시간을 나타낸다.The
제2 그래프(720)는 버켓에 할당되는 오버플로우 버켓의 최대 개수가 8 개일 때, 각 합병 기준 값에 대한 인덱스 생성 시간을 나타낸다.The
합병 기준 값 盼가 0에서 0.9까지 서로 상이하게 설정되면서, 각각의 합병 기준 값에 대해 인덱스 생성 시간이 측정되었다. 각 버켓의 최대 오버플로우 버켓까지 키들(또는, 레코드들)이 삽입되면, 합병 기준 값에 따라 합병 후 분할연산을 수행할 것인지 또는 합병 연산만을 수행할 것인지가 결정된다. 제1 그래프(710) 및 제2 그래프(720)는 각각 갱신 및 삭제 비율이 각각 20%, 50%, 80%인 트레이스들 각각에 대하여 합병 기준 값에 따른 해시 인덱스의 생성 시간을 나타낸다.The index creation time was measured for each merge criterion value as the merge criterion values 盼 were set differently from 0 to 0.9. When keys (or records) are inserted up to the maximum overflow bucket of each bucket, it is determined whether to perform the post-merger division operation or the merge operation only according to the merge criterion value. The
도시된 그래프들에 따르면, 합병 기준 값이 0 이상 0.4 이하일 때에는, 합병 기준 값이 상승함에 따라 인덱스 생성 시간이 감소하지만, 합병 기준 값이 0.4 이상이 되면서 생성 시간 감소의 폭이 둔화된다. 이하, 갱신 및 삭제 비율에 따른 플래시 메모리에서의 연산 횟수 및 전체 성능을 측정하기 위해 합병 기준 값을 0.4로 설정한다.
According to the graphs shown, when the merge criterion value is 0 or more and 0.4 or less, the index generation time decreases as the merge criterion value increases, but the width of the decrease in creation time decreases as the merge criterion value becomes 0.4 or more. Hereinafter, the merge reference value is set to 0.4 in order to measure the number of operations and the overall performance of the flash memory according to the update and delete rates.
도 8은 일 예에 따른 오버플로우 버캣의 개수에 따른 인덱스 생성 및 검색 시간을 나타낸다.8 illustrates index generation and search time according to the number of overflow buckets according to an example.
버켓에 할당될 수 있는 최대 오버플로우 버켓들의 개수를 0 개부터 12 개까지로 각각 설정하였을 때, 해시 인덱스를 생성하기 위한 시간, 삽입된 키를 검색하는데 걸리는 평균 시간 및 버켓 이용률이 측정되었다. 갱신 및 삭제 비율이 각각 20%, 50%, 80%인 트레이스들이 사용되었으며, 합병 기준 값은 0.4로 설정되었다.When the maximum number of overflow buckets that can be allocated to a bucket was set from 0 to 12, the time for generating a hash index, the average time for searching an inserted key, and the bucket utilization were measured. Traces with update and delete rates of 20%, 50%, and 80%, respectively, were used, and the merge baseline was set to 0.4.
제1 그래프(810)는 오버플로우 버켓의 개수에 따른 인덱스 생성 시간을 나타낸다. 제1 그래프(810)는 갱신 및 삭제 비율이 20%인 트레이스는 오버플로우 버켓의 수가 4일 때 인덱스 생성 시간이 가장 빠른 모습을 보이고, 오버플로우 버켓의 개수가 증가함에 따라 인덱스 생성 시간이 서서히 증가하다가 차차 감소하는 모습을 보인다. 이러한 인덱스 생성 시간의 변화는 오버플로우 버켓의 수가 충분히 많이 확보된 상황에서는 소거 연산을 발생 시키는 분할 연산 혹은 합병 연산의 수가 현격히 감소하기 때문에 발생한다.The
갱신 및 삭제 비율이 50% 및 80%인 트레이스들에 대해서, 제1 그래프(810)는 오버플로우 버켓의 개수가 4 또는 8일 때 인덱스 생성 시간이 가장 빠른 모습을 보이며, 그 외의 경우에는 오버플로우 버켓의 수가 4 또는 8개일 때와 유사한 모습을 보인다.For traces with update and delete rates of 50% and 80%, the
제2 그래프(820)는 오버플로우 버켓의 수에 따른 트레이스 별 평균 검색 시간을 나타낸다. 제2 그래프(820)에서는 오버플로우 버켓의 개수가 많아질수록 선형적으로 검색 성능이 저하되는 모습을 보인다. 이러한 성능 저하는 검색 연산 시 할당된 오버플로우 버켓의 모든 레코드들을 순차적으로 검색해야 하기 때문에 발생한다.The
제3 그래프(830)는 오버플로우 버켓의 개수에 따른 각 트레이스 별 버켓 이용률을 나타낸다. 제3 그래프(830)는, 일반적으로 오버플로우 버켓의 개수가 적을 때(즉, 오버플로우 버캣의 개수가 0 또는 1일 때)는, 검색 성능은 향상되지만, 버켓 이용률은 50~60% 수준으로 현저하게 떨어지는 모습을 보인다. 버켓 이용률이 떨어지는 특징은 컴퓨팅 자원이 제한적인 환경에서는 단점으로 작용될 수 있다. 버켓 이용률은 합병 연산이 자주 발생할수록 높아질 수 있다.. 버켓 이용률이 합병 연산이 자주 발생할수록 높아지는 것은 합병 연산이 발생할 경우 해시 인덱스의 전체 깊이가 상승하지 않기 때문에 추가적인 버켓의 할당 없이 기존의 버켓에만 레코드의 삽입이 이루어지기 때문이다. 오버플로우 버켓의 수가 증가하면 분할 연산보다 합병 연산이 발생될 확률이 높아진다. 따라서, 제3 그래프(830)에서 나타난 것과 같이, 오버플로우 버켓의 수가 증가할수록 버켓 이용률은 높아진다. The
상기의 실험에 따르면, 각 버켓에 대한 최대 오버플로우 버켓의 개수가 4 또는 8일 때, 최적의 인덱스 생성 시간이 도출될 수 있다. 그러나, 검색 시간의 측면에서는, 오버플로우 버켓의 개수가 8 개이면, 오버플로우 버켓의 개수가 4 개일 때에 비해, 평균적으로 약 2배 정도의 시간이 소요될 수 있다. 따라서, 인덱스 생성 및 검색 성능을 모두 고려하여, 이하 각 버켓에 대한 최대 오버플로우 버켓의 개수는 4로 설정된다.
According to the above experiment, when the maximum number of overflow buckets for each bucket is 4 or 8, an optimal index generation time can be derived. However, in terms of search time, when the number of overflow buckets is eight, on average, about two times as long as when the number of overflow buckets is four. Therefore, in consideration of both index generation and search performance, the maximum number of overflow buckets for each bucket is set to four.
도 9는 일 예에 따른 해시 인덱스에서의 연산 횟수 및 생성 시간을 나타낸다.9 illustrates an operation count and a generation time in a hash index according to an example.
도 9에서, 플래시 메모리 상에서 사용되는 확장형(extendible) 해시 인덱스 및 본 발명의 하이브리드(hybrid) 해시 인덱스 각각에 대해, 인덱스 생성에 의해 발생하는 읽기 연산, 쓰기 연산 및 소거 연산의 횟수를 각각 측정하여, 해시 인덱스의 생성 시간이 비교된다.In FIG. 9, for each of the extended hash index and the hybrid hash index of the present invention used on the flash memory, the number of read operations, write operations, and erase operations generated by the index generation is measured, respectively. The creation time of the hash indexes is compared.
10,000개의 랜덤한 키를 갖는 레코드들을 0%부터 90%까지의 갱신 및 삭제 비율에 따라 삽입하여, 상기의 삽입에 의한 읽기 연산, 쓰기 연산 및 소거 연산의 횟수가 측정되었고, 최종 생성 시간이 계산되었다. 전술된 것과 같이, 오버플로우 버켓의 개수는 4로, 합병 기준 값은 0.4로 설정되었다.By inserting 10,000 random key records according to the update and delete rate from 0% to 90%, the number of read, write and erase operations by the insert was measured and the final generation time was calculated. . As described above, the number of overflow buckets is set to 4 and the merge criterion value is set to 0.4.
확장형 해시 인덱스는 오버플로우가 발생할 때마다 분할 연산을 수행한다. 따라서, 확장형 해시 인덱스가 사용되면, 분할 연산을 지연하여 수행하는 하이브리드 해시 인덱스가 사용되는 것에 비해 더 많은 읽기 연산, 쓰기 연산 및 소거 연산이 발생할 수 있다. 또한, 갱신 및 삭제 비율이 높을수록 제자리 갱신이 많이 발생할 수 있다. 확장형 해시 인덱스는 제자리 갱신이 발생할 때마다 쓰기-전-소거(erase-before-write) 동작을 피할 수 없다. 따라서, 쓰기 연산 및 소거 연산이 추가적으로 발생할 수 있다. 그러나, 갱신 및 삭제된 키가 거의 없을 경우(예컨대, 0% 내지 10%)에는, 하이브리드 해시 인덱스에서도 각 버켓에 오버플로우 버켓에 대한 분할 연산이 일괄적으로 발생할 수 있다. 따라서, 갱신 및 삭제된 키(또는, 레코드)가 거의 없을 경우 확장형 해시 인덱스에 의해 발생하는 쓰기 연산 및 소거 연산의 횟수는 하이브리드 해시 인덱스가 사용될 때 보다 더 적을 수 있다.Extended hash indexes perform partitioning operations whenever an overflow occurs. Therefore, when the extended hash index is used, more read operations, write operations, and erase operations may occur as compared with the use of the hybrid hash index which delays the split operation. In addition, the higher the update and delete ratio, the more in-place update may occur. Extended hash indexes do not avoid write-before-write operations whenever an in-place update occurs. Thus, write operations and erase operations may additionally occur. However, if there are few keys that have been updated and deleted (e.g., 0% to 10%), even in hybrid hash indexes, partitioning operations for overflow buckets may occur collectively in each bucket. Thus, if there are few keys (or records) updated and deleted, the number of write and erase operations generated by the extended hash index may be less than when the hybrid hash index is used.
제1 그래프(910), 제2 그래프(920), 제3 그래프(930) 및 제4 그래프(940)는 각각 해시 인덱스 별로 발생하는 인덱스의 생성 기간, 읽기 연신의 횟수, 쓰기 연산의 횟수 및 소거 연산의 횟수를 나타낸다. 도시된 그래프들은, 키(또는, 레코드)의 갱신 및 삭제 비율이 높아질수록 확장형 해시 인덱스의 생성 시간 및 연산들 각각의 횟수가 선형적으로 증가하는 것을 나타낸다. 반면, 하이브리드 해시 인덱스에서는 갱신 레코드 및 삭제 레코드가 해당 버켓의 레코드에 그대로 삽입되고, 이후 합병되므로 제자리 갱신 및 제자리 갱신에 수반되는 쓰기-전-소거 동작이 회피될 수 있다. 따라서, 하이브리드 해시 인덱스의 읽기 연산, 쓰기 연산 및 소거 연산의 횟수가 전체적으로 확장형 해시 인덱스의 연산들 각각의 횟수보다 더 적을 수 있다.
The
도 10은 일 예에 따른 해시 인덱스의 검색 시간을 나타낸다.10 illustrates a search time of a hash index according to an example.
생성된 해시 인덱스에 삽입된 모든 키 값을 검색하는 시간이 측정된다. 오버플로우 버켓의 개수는 4, 합병 기준 값은 0.4로 설정되었다.The time to retrieve all the key values inserted into the generated hash index is measured. The number of overflow buckets was set to 4 and the merge criterion was set to 0.4.
그래프(1010)는 갱신 및 삭제 비율에 따른 각 해시 인덱스의 평균 검색 시간을 나타낸다. 확장형 해시 인덱스는 오버플로우가 발생할 때 마다 분할 연산을 수행한다. 따라서, 갱신 및 삭제 비율이 높을수록 검색 시간이 감소할 수 있다.
합병 기준 값이 0.4이기 때문에, 하이브리드 해시 인덱스가 사용될 경우, 각 트레이스의 갱신 및 삭제 비율이 0% 내지 30%이면, 합병 연산만 수행되는 경우에 비해 합병 연산 및 분할 연산이 더 자주 수행될 수 있다. 이때, 트레이스의 갱신 및 삭제 비율이 더 높아질수록 검색 시간이 더 감소할 수 있다. 그러나, 분할 연산에 의해 버켓들이 추가적으로 할당되기 때문에, 페이지 이용률은 더 감소할 수 있다.Since the merge criterion value is 0.4, when the hybrid hash index is used, if the update and delete ratio of each trace is 0% to 30%, the merge operation and the split operation may be performed more frequently than when only the merge operation is performed. . In this case, the higher the update and delete ratio of the trace, the shorter the search time. However, because buckets are additionally allocated by the partitioning operation, the page utilization can be further reduced.
반면, 갱신 및 삭제 비율이 40%이상이면, 분할 연산 없이 합병 연산만이 수행되는 경우가 더 자주 발생할 수 있으며, 페이지 이용률이 상승할 수 있다. 따라서, 검색 성능은 일시적으로 저하될 수 있다. 그러나, 갱신 및 삭제 비율이 50% 내지 90% 정도로 더 높아지면, 버켓 내의 유효한 레코드들의 개수가 더 적어지기 때문에, 높은 페이지 이용률 및 빠른 검색 성능을 동시에 보일 수 있다.On the other hand, if the update and delete ratio is 40% or more, only the merge operation may be performed more often without the split operation, and the page utilization may increase. Thus, search performance may be temporarily degraded. However, if the update and delete rate is higher, such as 50% to 90%, since the number of valid records in the bucket is smaller, high page utilization and fast search performance can be exhibited at the same time.
검색 성능에 있어서, 전체적으로 확장형 해시 인덱스의 검색 성능이 하이브리드 해시 인덱스의 검색 성능보다 더 우수할 수 있다. 그러나, 그래프(1010)에서 나타난 것과 같이, 두 인덱스들 간의 검색 속도 차이는 단지 1ms정도이다. 또한, 플래시 메모리에 있어서, 쓰기 연산 및 소거 연산의 속도에 비해 읽기 연산의 속도는 매우 빠르기 때문에, 검색 연산 시 추가적인 읽기 연산에 의해 증가되는 시간은 검색 연산의 전체 성능에 큰 영향을 미치지 않을 수 있다.
In search performance, the search performance of the extended hash index as a whole may be better than the search performance of the hybrid hash index. However, as shown in
일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예들을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
The method according to one embodiment may be implemented in the form of program instructions that may be executed through various computer means and recorded on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.As described above, the present invention has been described by way of limited embodiments and drawings, but the present invention is not limited to the above embodiments, and those skilled in the art to which the present invention pertains various modifications and variations from such descriptions. This is possible.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined by the equivalents of the claims, as well as the claims.
100: 플래시 메모리 저장 장치
110: 플래시 메모리
120: 휘발성 메모리
130: 제어부
210: 디렉토리
220: 0번 버켓
230: 1번 버켓100: flash memory storage device
110: flash memory
120: volatile memory
130:
210: directory
220:
230:
Claims (5)
상기 하나 이상의 버켓들을 관리하는 제어부
를 포함하고,
상기 제어부는 해시 함수를 사용하여 키에 대한 해시 인덱스를 획득하고, 상기 하나 이상의 버켓들 중 상기 해시 인덱스에 대응하는 버켓 내에 상기 키 및 데이터를 포함하는 추가 레코드를 저장하고,
상기 버켓 내에 최대 개수의 레코드들이 저장된 경우, 상기 제어부는 상기 버켓 내의 레코드들 중 합병될 수 있는 레코드들의 비율이 기준 값 이상이면 상기 버켓에 대한 합병 연산을 수행하고, 상기 비율이 상기 기준 값보다 작으면 상기 버켓에 대한 합병 연산 및 분할 연산을 수행하는, 플래시 메모리 저장 장치.Flash memory for storing one or more buckets; And
Control unit for managing the one or more buckets
Lt; / RTI >
The control unit obtains a hash index for a key using a hash function, stores an additional record including the key and data in a bucket corresponding to the hash index among the one or more buckets,
If the maximum number of records are stored in the bucket, the controller performs a merge operation on the bucket if the ratio of records that can be merged among the records in the bucket is greater than or equal to the reference value, and the ratio is smaller than the reference value. And merge operation and division operation on the bucket.
상기 제어부는 상기 대응하는 버켓 내에 상기 키에 대응하는 레코드가 없는 경우 상기 추가 레코드를 삽입 레코드로서 상기 버켓 내에 저장하고, 상기 대응하는 버켓 내에 상기 키에 대응하는 레코드가 있는 경우 상기 추가 레코드를 갱신 레코드로서 상기 대응하는 버켓 내에 저장하는, 플래시 메모리 저장 장치.The method of claim 1,
The control unit stores the additional record in the bucket as an insertion record when there is no record corresponding to the key in the corresponding bucket, and updates the additional record when there is a record corresponding to the key in the corresponding bucket. Flash memory storage in the corresponding bucket.
상기 합병에 의해 제거될 수 있는 레코드들은 갱신 레코드 및 삭제 레코드를 포함하고, 상기 갱신 레코드는 상기 대응하는 버켓 내의 상기 추가 레코드의 이전에 저장된 레코드들 중 상기 키에 대응하는 레코드의 데이터가 갱신됨을 나타내고, 상기 삭제 레코드는 상기 대응하는 버켓 내의 상기 추가 레코드의 이전에 저장된 레코드들 중 상기 키에 대응하는 레코드가 삭제된 것임을 나타내는, 해시 인덱스를 사용하는 플래시 메모리 저장 장치.The method of claim 1,
Records that can be removed by the merging include an update record and a delete record, wherein the update record indicates that data of the record corresponding to the key of the previously stored records of the additional record in the corresponding bucket is updated. And the deletion record indicates that the record corresponding to the key of the previously stored records of the additional record in the corresponding bucket is deleted.
상기 제어부는 상기 대응하는 버켓 내에 상기 추가 레코드를 저장할 공간이 없는 경우 상기 대응하는 버켓에 오버플로우 버켓을 추가로 할당함으로써 상기 공간을 생성하고, 상기 공간 내에 상기 추가 레코드를 저장하는, 플래시 메모리 저장 장치.The method of claim 1,
And the controller generates the space by additionally assigning an overflow bucket to the corresponding bucket when there is no space to store the additional record in the corresponding bucket, and stores the additional record in the space. .
상기 제어부는 상기 하나 이상의 버켓들 중 검색 키에 대응하는 버켓 내에서, 상기 키에 대응하는 레코드를 최근에 저장된 순서로 검색함으로써 검색 연산을 수행하는, 플래시 메모리 저장 장치.The method of claim 1,
And the control unit performs a search operation by searching for a record corresponding to the key in a recently stored order in a bucket corresponding to a search key among the one or more buckets.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110130878A KR101340706B1 (en) | 2011-12-08 | 2011-12-08 | Hybrid hash index for storage device based on flash memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110130878A KR101340706B1 (en) | 2011-12-08 | 2011-12-08 | Hybrid hash index for storage device based on flash memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130064319A true KR20130064319A (en) | 2013-06-18 |
KR101340706B1 KR101340706B1 (en) | 2013-12-11 |
Family
ID=48861305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110130878A KR101340706B1 (en) | 2011-12-08 | 2011-12-08 | Hybrid hash index for storage device based on flash memory |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101340706B1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569734A (en) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | Method and device for repairing memory overflow during data shuffling |
KR20170093767A (en) * | 2017-07-28 | 2017-08-16 | 영남대학교 산학협력단 | Method for Hash collision detection that is based on the sorting unit of the bucket |
CN107515901A (en) * | 2017-07-24 | 2017-12-26 | 中国科学院信息工程研究所 | A kind of chain type daily record storage organization and its Hash Index Structure, data manipulation method and server, medium |
KR20180121202A (en) * | 2017-04-28 | 2018-11-07 | 한양대학교 에리카산학협력단 | Hybrid hash index for non-volatile memory storage device |
KR20200102337A (en) * | 2019-02-21 | 2020-08-31 | 성균관대학교산학협력단 | Methods and apparatuses for cacheline conscious extendible hashing |
KR20210052148A (en) * | 2019-10-31 | 2021-05-10 | 울산과학기술원 | Method and apparatus for conversing data key value |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100325688B1 (en) | 1999-11-19 | 2002-02-25 | 오길록 | A method for controlling directory splits of the extendible hashing |
KR101123335B1 (en) * | 2009-01-15 | 2012-03-28 | 연세대학교 산학협력단 | Method and apparatus for configuring hash index, and apparatus for storing data having the said apparatus, and the recording media storing the program performing the said method |
-
2011
- 2011-12-08 KR KR1020110130878A patent/KR101340706B1/en not_active IP Right Cessation
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569734A (en) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | Method and device for repairing memory overflow during data shuffling |
CN106569734B (en) * | 2015-10-12 | 2019-04-09 | 北京国双科技有限公司 | The restorative procedure and device that memory overflows when data are shuffled |
KR20180121202A (en) * | 2017-04-28 | 2018-11-07 | 한양대학교 에리카산학협력단 | Hybrid hash index for non-volatile memory storage device |
CN107515901A (en) * | 2017-07-24 | 2017-12-26 | 中国科学院信息工程研究所 | A kind of chain type daily record storage organization and its Hash Index Structure, data manipulation method and server, medium |
CN107515901B (en) * | 2017-07-24 | 2020-12-04 | 中国科学院信息工程研究所 | Chain log storage structure and hash index structure thereof, data operation method, server and medium |
KR20170093767A (en) * | 2017-07-28 | 2017-08-16 | 영남대학교 산학협력단 | Method for Hash collision detection that is based on the sorting unit of the bucket |
KR20200102337A (en) * | 2019-02-21 | 2020-08-31 | 성균관대학교산학협력단 | Methods and apparatuses for cacheline conscious extendible hashing |
KR20210052148A (en) * | 2019-10-31 | 2021-05-10 | 울산과학기술원 | Method and apparatus for conversing data key value |
Also Published As
Publication number | Publication date |
---|---|
KR101340706B1 (en) | 2013-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101340706B1 (en) | Hybrid hash index for storage device based on flash memory | |
US9471500B2 (en) | Bucketized multi-index low-memory data structures | |
US9684462B2 (en) | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory | |
Van Houdt | A mean field model for a class of garbage collection algorithms in flash-based solid state drives | |
KR101982251B1 (en) | Method for storage devices to achieve low write amplification with low over provision | |
US9710397B2 (en) | Data migration for composite non-volatile storage device | |
US8849876B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
US10387045B2 (en) | Apparatus and method for managing buffer having three states on the basis of flash memory | |
CN113094336B (en) | Cuckoo hash-based file system directory management method and system | |
Ahn et al. | μ*-Tree: An ordered index structure for NAND flash memory with adaptive page layout scheme | |
CN106055679A (en) | Multi-level cache sensitive indexing method | |
KR100907477B1 (en) | Apparatus and method for managing index of data stored in flash memory | |
KR101377923B1 (en) | Apparatus and metohd for storing data in flash memory by using b-tree performing delayed update | |
Lee et al. | An efficient buffer management scheme for implementing a B-tree on NAND flash memory | |
Chen et al. | Design of skiplist based key-value store on non-volatile memory | |
CN116627345A (en) | High-performance KV caching method and device applied to massive value key value pairs | |
CN113505130B (en) | Hash table processing method | |
Kim et al. | h-Hash: a hash index structure for flash-based solid state drives | |
KR101020781B1 (en) | A method for log management in flash memory-based database systems | |
KR101970874B1 (en) | Hybrid hash index for non-volatile memory storage device | |
Cui et al. | HashTree: a new hybrid index for flash disks | |
Wang et al. | A new self-adaptive extendible hash index for flash-based DBMS | |
Choi et al. | Pb+-tree: Pcm-aware b+-tree | |
KR100982591B1 (en) | File system, main storage and flash storage for progressive indexing and data management method using the progressive indexing | |
Jin et al. | FlashB-tree: a novel B-tree index scheme for solid state drives |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
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: 20160927 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |