KR20130064319A - Hybrid hash index for storage device based on flash memory - Google Patents

Hybrid hash index for storage device based on flash memory Download PDF

Info

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
Application number
KR1020110130878A
Other languages
Korean (ko)
Other versions
KR101340706B1 (en
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 KR1020110130878A priority Critical patent/KR101340706B1/en
Publication of KR20130064319A publication Critical patent/KR20130064319A/en
Application granted granted Critical
Publication of KR101340706B1 publication Critical patent/KR101340706B1/en

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based

Abstract

PURPOSE: A hybrid hash index for a flash memory-based storage device is provided to reduce the write and elimination operation of a flash memory by maximally delaying the division operation of an overflow bucket. CONSTITUTION: A flash memory(110) stores buckets and a control unit(130) manages the buckets. The control unit obtains a hash index about a key by using hash function and stores the key and an additional record including data in a bucket corresponding to the hash index. If a ratio of records to be merged is higher than a reference value, the control unit performs the merge operation of the bucket. If the ratio is smaller than the reference value, the control unit performs the merge and division operation of the bucket. [Reference numerals] (110) Flash memory; (120) Volatile memory; (130) Control unit

Description

플래시 메모리 기반 저장 장치를 위한 하이브리드 해시 인덱스{HYBRID HASH INDEX FOR STORAGE DEVICE BASED ON FLASH MEMORY}HYBRID HASH INDEX FOR STORAGE DEVICE BASED ON FLASH MEMORY}

본 발명은 플래시 메모리 기반 저장 장치에 관한 것이다.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 memory storage device 100 may include a flash memory 110, a volatile memory 120, and a controller 130.

플래시 메모리(110)는 하나 이상의 버켓들, 각 버켓에 할당된 오버플로우 버켓들 및 디렉토리(directory) 등을 저장할 수 있다.The flash memory 110 may store one or more buckets, overflow buckets allocated to each bucket, a directory, and the like.

휘발성 메모리(120)는 하나 이상의 버켓들, 각 버켓에 할당된 오버플로우 버켓들 및 디렉토리 등을 저장 또는 캐싱(caching)할 수 있다.The volatile memory 120 may store or cache one or more buckets, overflow buckets and directories allocated to each bucket.

제어부(130)는 플래시 메모리(110) 내에 데이터를 저장하기 위해 하나 이상의 버켓들, 오버플로우 버켓들 및 디렉토리 등을 관리할 수 있으며, 하나 이상의 버켓들, 오버플로우 버켓들 및 디렉토리 등을 휘발성 메모리(120) 내에 캐싱할 수 있다.
The controller 130 may manage one or more buckets, overflow buckets, directories, etc. to store data in the flash memory 110, and store one or more buckets, overflow buckets, directories, etc. in a volatile memory ( Caching within 120).

도 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, directory 210 and two buckets 220 and 230 are shown. Entries in directory 210 may each represent one hash index value and may point to one bucket. An entry with a hash index value of "0" points to bucket number 220 and a hash index. A neck with a value of 1 indicates bucket 1 (230).

도 2에서, 디렉토리(210)는 1 개의 비트의 값만을 사용하여 키에 대응하는 버켓을 구분한다. 즉, 해시 인덱스는 1 비트로 구성된 값을 갖는다. 따라서, 디렉토리(210)의 전역 깊이(global depth)는 1이다. 또한, 0번 버켓(220) 및 1번 버켓(230)은 각각 하나의 해시 인덱스 값에 대응하며, 해시 인덱스의 값을 구성하는 비트들 중 1 비트에 의해 구분된다. 즉, 0번 버켓(220) 및 1번 버켓(230) 각각의 지역 깊이는 1이다.In FIG. 2, the directory 210 distinguishes buckets corresponding to keys using only one bit value. In other words, the hash index has a value composed of 1 bit. Thus, the global depth of directory 210 is one. In addition, bucket 0 and bucket 1 230 each correspond to one hash index value, and are divided by one bit among bits constituting the value of the hash index. That is, the local depth of each bucket 0 and bucket 1 230 is 1.

제어부(130)는 해시 함수를 사용하여 키에 대한 해시 인덱스를 획득할 수 있다. 해시 함수는 키들을 하나 이상의 버켓들 각각으로 고르게 분산시키는 함수일 수 있다. 예컨대, 해시 함수는 키를 구성하는 비트들 중 특정한 개수의 최하위 비트들을 추출하는 모듈러(modular) 함수일 수 있다. 도 2에서, 해시 함수는 키의 최하위 비트를 추출하는 함수일 수 있다.The controller 130 may obtain a hash index for the key using a hash function. The hash function may be a function that evenly distributes the keys to each of the one or more buckets. For example, the hash function may be a modular function that extracts a certain number of least significant bits among the bits constituting the key. In FIG. 2, the hash function may be a function that extracts the least significant bit of the key.

버켓은 하나 이상의 레코드들을 저장할 수 있다. 도 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 bucket number 220, records having key values of 4, 12, and 10, respectively, were stored, and in the bucket number 230, records having key values of 1, 5, 21, and 16, respectively, were stored. The key value of the records in the bucket is shown, and the binary value of the key value is shown in parentheses.

레코드는 하나 이상의 버켓들 중 레코드의 키에 대응하는 버켓 내에 저장된다. 여기서, 레코드의 키에 대응하는 버켓이란 키에 대한 해시 인덱스에 대응하는 버켓을 의미한다. 즉, 레코드를 추가로 저장할 때, 제어부(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 controller 130 may store the additional record in the bucket corresponding to the hash index for the key among one or more buckets. Records stored may include keys and data.

해시 함수에 의해, 키 값 중 최하위 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 significant bit 0 are stored in bucket 0, records with the key with the least significant bit 1 are stored in bucket 1 230. ,

도 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 controller 130 performs an insert operation of a record, there may be no empty space in the bucket corresponding to the key value. For example, when the status of the buckets is as shown in FIG. 1, bucket 1 has already stored four records. Accordingly, when an additional record having a key value of 11 is stored, a bucket overflow occurs because there is no empty space in the bucket No. 230 corresponding to the key of the additionally stored record.

키에 대응하는 버켓 내에 추가 레코드를 저장할 공간이 없어 버켓 오버플로우가 발생한 경우, 제어부(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 controller 130 overflows to the corresponding bucket instead of immediately performing a split operation on the directory and one or more buckets. The space may be created by additionally assigning the bucket 310. The controller 130 may store the additional record in the space in the overflow bucket.

하나 이상의 버켓들은 각각 자신에게 할당된 오버플로우 버켓을 가리킬 수 있다. 하나의 버켓에 복수 개의 오버플로우 버켓들이 할당될 수도 있다. 버켓 및 상기의 버켓에게 할당된 복수 개의 오버플로우 버켓들은 포인터(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 overflow bucket 310 is allocated to the bucket bucket 230, an additional record having a key value of 11 may be stored in the overflow bucket 310 of the bucket bucket 230. Subsequently, by an insert operation of the record, an additional record having a key value of 13 and an additional record having a key value of 29 may also be stored in the overflow bucket 310 of the first bucket 230 corresponding to the key.

제어부(130)는 버켓 또는 오버플로우 버켓 내에 레코드를 저장할 공간이 있는 동안에는, 상기의 버켓 또는 오버플로우를 휘발성 메모리(130) 내에서만 관리할 수 있다.
The controller 130 may manage the bucket or the overflow only in the volatile memory 130 while there is a space to store the record in the bucket or the overflow bucket.

도 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, bucket 1 has been allocated two overflow buckets. As records are stored in the first bucket 230, a bucket overflow occurs, and the controller 130 transfers the first overflow bucket 410 and the second overflow bucket 420 to the first bucket 230. Assign.

버켓 내에 저장된 레코드는 삽입 레코드, 삭제 레코드 및 갱신 레코드로 구분될 수 있다. 도 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 delete record 432, a second delete record 434, and a third delete record 436 are shown, and a first update record 442 is shown.

제어부(130)가 추가 레코드를 버켓 내에 삽입할 때, 레코드의 키에 대응하는 버켓 내에는 이미 상기의 키에 대응하는 레코드(즉, 추가 레코드의 키와 동일한 값을 갖는 키를 가진 레코드)가 있을 수 있다. 제어부(130)는 추가 레코드의 키에 대응하는 버켓 내에 상기의 키에 대응하는 레코드가 있는 경우 추가 레코드를 갱신 레코드로서 대응하는 버켓 내에 저장할 수 있다. 즉, 갱신 레코드는 추가 레코드의 키에 대응하는 버켓 내의 추가 레코드의 이전에 저장된 레코드들 중 추가 레코드의 키에 대응하는 레코드가 갱신됨을 나타낼 수 있다. 제1 갱신 레코드(442)는 1번 버켓(230) 내의 키 값이 13인 레코드(454)의 데이터가 갱신되었음을 나타낼 수 있다. 키 값이 13인 레코드(454)의 갱신된 데이터는 제1 갱신 레코드(442) 내에 저장될 수 있다. 따라서, 갱신 레코드가 삽입된 후, 키 13에 대해 유효한 레코드는 키 값이 13인 레코드(454)가 아닌 제1 갱신 레코드(442)가 된다.When the controller 130 inserts the additional record into the bucket, there may already be a record corresponding to the key (that is, a record having a key equal to the key of the additional record) in the bucket corresponding to the key of the record. Can be. If there is a record corresponding to the key in the bucket corresponding to the key of the additional record, the controller 130 may store the additional record in the bucket corresponding to the update record. That is, the update record may represent that the record corresponding to the key of the additional record is updated among the previously stored records of the additional record in the bucket corresponding to the key of the additional record. The first update record 442 may indicate that the data of the record 454 having the key value 13 in the bucket 230 is updated. Updated data of record 454 with key value 13 may be stored in first update record 442. Thus, after the update record is inserted, the valid record for key 13 becomes the first update record 442, not the record 454 with key value 13.

한편, 제어부(130)가 추가 레코드를 버켓 내에 삽입할 때, 레코드의 키에 대응하는 버켓 내에는 이미 상기의 키에 대응하는 레코드(즉, 추가 레코드의 키와 동일한 값을 갖는 키를 가진 레코드)가 없을 수 있다. 제어부(130)는 추가 레코드의 키에 대응하는 버켓 내에 상기의 키에 대응하는 레코드가 없는 경우 추가 레코드를 삽입 레코드로서 대응하는 버켓 내에 저장할 수 있다.On the other hand, when the controller 130 inserts the additional record into the bucket, the record corresponding to the above key in the bucket corresponding to the key of the record (that is, the record having the same value as the key of the additional record). There can be no. If there is no record corresponding to the key in the bucket corresponding to the key of the additional record, the controller 130 may store the additional record as the insert record in the bucket.

즉, 제어부(130)는 특정한 레코드의 삽입 연산 또는 갱신 연산을, 상기의 특정한 레코드를 대응하는 버켓 내에 추가함으로써 처리할 수 있다. 따라서, 특정한 레코드의 데이터가 갱신되는 경우에도, 제어부(130)는 버켓 내에 이미 저장된 상기의 특정한 레코드의 키에 대응하는 레코드를 물리적으로 갱신할 필요가 없다.That is, the controller 130 may process the insert operation or the update operation of the specific record by adding the specific record to the corresponding bucket. Therefore, even when data of a specific record is updated, the controller 130 does not need to physically update the record corresponding to the key of the specific record already stored in the bucket.

또한, 제어부(130)는, 일정한 범위 내에서, 레코드의 삽입 연산 및 레코드의 갱신 연산을 동일한 방식으로 처리할 수 있으며, 갱신 레코드 및 삽입 레코드는 동일한 형태를 가질 수 있다. 제어부(130)는 버켓 내에 저장된 동일한 키를 갖는 레코드들 중 가장 뒤에 저장된 레코드를 상기 키에 대한 유효한 레코드로서 처리할 수 있다.In addition, the controller 130 may process the insert operation of the record and the update operation of the record in the same manner, and the update record and the insert record may have the same form. The controller 130 may process the last stored record among the records having the same key stored in the bucket as a valid record for the key.

전술된 것과 같은 갱신 레코드의 삽입으로 인해, 제어부(130)는 특정한 키를 갖는 레코드의 데이터를 갱신하고자할 때, 상기의 레코드(또는, 버켓)이 저장된 플래시 메모리 내의 블록(block)을 소거하는 연산을 피할 수 있다.Due to the insertion of the update record as described above, the control unit 130 erases a block in the flash memory in which the record (or bucket) is stored when the data of the record having a specific key is to be updated. Can be avoided.

제어부(130)는 삭제 레코드를 대응하는 버켓 내에 추가함으로써 특정한 레코드를 버켓 내에서 삭제할 수 있다. 즉, 삭제 레코드는 추가 레코드의 키에 대응하는 버켓 내의 추가 레코드 이전에 저장된 레코드들 중 추가 레코드의 키에 대응하는 레코드가 삭제된 것임을 나타낼 수 있다. 예컨대, 도 4에서 도시된 것과 같이, 키 값이 11인 레코드(452)가 1번 버켓(230) 내에 저장된 경우, 제어부(130)는 키 값이 11인 레코드(452)의 삭제를 나타내는 제1 삭제 레코드(432)를 1번 버켓(230) 내에 삽입함으로써 상기의 키 값이 11인 레코드(452)가 삭제되었음을 나타낼 수 있다.The controller 130 may delete the specific record in the bucket by adding the deletion record in the corresponding bucket. That is, the deletion record may indicate that the record corresponding to the key of the additional record among the records stored before the additional record in the bucket corresponding to the key of the additional record is deleted. For example, as shown in FIG. 4, when the record 452 with the key value 11 is stored in the bucket 1 230, the controller 130 may display a first deletion of the record 452 with the key value 11. Inserting the deletion record 432 into the bucket 1 may indicate that the record 452 having the key value 11 is deleted.

제어부(130)는 삭제의 대상이 되는 레코드의 키 값을 음수화함으로써 삭제 레코드를 생성할 수 있다. 예컨대, 키 값이 -11인 제1 삭제 레코드(432)는 키 값이 11인 레코드(452)가 삭제되었음을 나타내는 삭제 레코드일 수 있다.The controller 130 may generate the deletion record by negatively keying the key value of the record to be deleted. For example, the first deletion record 432 having a key value of −11 may be a deletion record indicating that the record 452 having a key value of 11 has been deleted.

전술된 것과 같은 삭제 레코드의 추가로 인해, 제어부(130)는 특정한 키를 갖는 레코드를 삭제하고자할 때, 상기의 레코드(또는, 버켓)이 저장된 플래시 메모리 내의 블록(block)을 소거하는 연산을 피할 수 있다.Due to the addition of a deletion record as described above, when the control unit 130 wants to delete a record having a specific key, the control unit 130 avoids an operation of erasing a block in the flash memory in which the record (or bucket) is stored. Can be.

이후, 키 값이 11인 레코드가 다시 추가될 경우, 제어부(130)는 키 값이 11인 레코드를 다시 1번 버켓(230) 내에 삽입할 수 있다.Then, when the record with the key value 11 is added again, the controller 130 may insert the record with the key value 11 into the bucket 230 again.

전술된 갱신 레코드 및 삽입 레코드의 설명에 따라, 도 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 bucket 1 of FIG. 4, each having key values 19, 13, 5, 15 or 21.

전술된 갱신 레코드 및 삽입 레코드의 설명에 따르면, 버켓 내에 저장된 동일한(또는, 절대 값이 동일한) 키를 갖는 레코드들 중 가장 뒤에 저장된 레코드가 상기의 키에 대한 유효한 레코드임을 알 수 있다. 따라서, 검색 키를 갖는 레코드가 검색될 때, 제어부(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 controller 130 may perform a search operation by searching for the records corresponding to the key in the order of recently stored in the bucket corresponding to the search key among one or more buckets. have.

도 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 controller 130 may perform a merge operation and a split operation on the records in the bucket.

합병 연산은 버켓 내의 레코드들을 합병함으로써 버켓 내의 레코드들의 개수를 줄이는 것을 의미할 수 있다. 여기서, 합병될 수 있는 레코드는 갱신 레코드 및 삭제 레코드를 포함할 수 있다. 예컨대, 버켓에 합병 연산이 적용될 때, 제어부(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 controller 130 may delete a specific record in the bucket and a delete record corresponding to the specific record. In addition, when the merge operation is applied to the bucket, the controller 130 may delete the specific record and leave only the update record among the specific record in the bucket and the update record corresponding to the specific record. When there are a plurality of update records for a specific record of the honey, the controller 130 may leave only the last update record among the specific record and the plurality of update records.

분할 연산은 하나의 버켓 내의 레코드들을 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 controller 130 may divide one bucket into two buckets through a split operation. The controller 130 may obtain a hash index by applying a hash function to the key of each record for each record stored in the divided bucket, and among the two buckets newly created according to the hash index of each record. Each record can be stored in one bucket.

제어부(130)는 분할에 의해 생성된 버켓들 각각의 지역 깊이의 값을 분할된 버켓의 지역 깊이의 값 보다 1이 더 크게 설정할 수 있다. 또한, 제어부(130)는 분할된 버켓의 지역 깊이의 값이 전역 깊이와 동일한 경우, 디렉토리(210)의 항목이 분할에 의해 생성된 버켓을 가리키게 하기위해 전역 깊이를 1 증가시킬 수 있고, 디렉토리(210)를 분할할 수 있다.The controller 130 may set the value of the local depth of each of the buckets generated by the division to be greater than the value of the local depth of the divided bucket. In addition, when the value of the local depth of the divided bucket is equal to the global depth, the controller 130 may increase the global depth by 1 so that the entry of the directory 210 may point to the bucket created by the division. 210 may be divided.

디렉토리(210)가 분할되지 않는 경우, 제어부(130)는 분할의 대상인 버켓을 가리키던 디렉토리(210) 내의 2 개의 항목들을 각각 분할에 의해 생성된 버켓들 중 하나의 버켓을 가리키게 한다.When the directory 210 is not divided, the controller 130 causes two items in the directory 210 that pointed to the bucket that is the target of the splitting to point to one bucket among the buckets created by the splitting.

디렉토리(210)가 분할되는 경우, 제어부(130)는 디렉토리 내의 각 항목들이 각각 분할된 버켓 외의 기존의 버켓 또는 분할에 의해 생성된 새로운 버켓을 가리키게 한다.When the directory 210 is divided, the controller 130 allows each item in the directory to point to an existing bucket other than the divided bucket or a new bucket created by the split.

특정한 버켓 내에 최대 개수의 레코드들이 저장된 경우, 저장된 레코드들 중 합병될 수 있는 레코드들의 비율이 특정한 기준 값 이상이면, 합병에 의해 레코드들의 개수가 충분히 줄 수 있고, 버켓이 분할될 필요가 없을 수 있다. 따라서, 제어부(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 controller 130 may store only the maximum number of records in the bucket, and if the ratio of records that can be merged among the records in the bucket is greater than or equal to the reference value, the controller 130 may perform only a merge operation on the bucket.

반면, 상기의 비율이 특정한 기준 값보다 작으면 합병 후에도 상기의 특정한 버켓 내에 많은 레코드들이 남는다. 따라서, 제어부(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 controller 130 stores the maximum number of records in the bucket, and if the ratio of records that can be merged among the records in the bucket is smaller than the reference value, the controller 130 first performs a merge operation on the bucket, and then merges the bucket. You can perform partitioning operations on buckets. The controller 130 may reconstruct the buckets generated by the division into valid records remaining after the merge.

여기서, 상기의 비율은 버켓 내에 저장될 수 있는 레코드들의 최대 개수에 대한 삭제 레코드 및 갱신 레코드의 비율일 수 있다. 예컨대, 도 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 first bucket 230 of FIG. 3, and there are three double deletion records and one update record. Therefore, in the bucket 230 of FIG. 3, the ratio may be 4/12 (= 1/3). Alternatively, the ratio may be the number of records to be removed after merging with respect to the maximum number of records that can be stored in the bucket. The delete record removes both the delete record itself and the deleted record. The update record removes records (including update records) with the same key previously stored. Therefore, in the bucket 230 of FIG. 3, the ratio may be 7/12. The reference value may be expressed by the merge reference value α.

제어부(130)는 플래시 메모리의 특성 또는 플래시 메모리 저장 장치(100)가 수행하는 연산들의 특성 등에 기반하여 합병 기준 값 α을 적응적으로 결정할 수 있다.The controller 130 may adaptively determine the merge reference value α based on the characteristics of the flash memory or the characteristics of the operations performed by the flash memory storage device 100.

전술된 것과 같은 합병 및 분할에 의해, 삭제 레코드 및 갱신 레코드는 버켓 내에서 제거될 수 있다. 또한, 합병 또는 분할이 발생할 때까지 버켓의 레코드들이 저장된 블록에 대한 소거 연산이 지연되어, 플래시 메모리 저장 장치(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 memory storage device 100 may be improved.

예컨대, α의 값이 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 controller 130 may merge the bucket 230 of FIG. 4, and the valid records remaining after the merge (ie, the key value) The first bucket 510 and the second bucket 520 of FIG. 5 may be generated by dividing the records of 13, 5, 21, 19, or 15). Due to this split, the depth of directory 210 increases to two. Directory 210 uses two bit values to distinguish the bucket corresponding to the key. In other words, the hash index has a value composed of 2 bits. Each bucket is divided by one or two bits of the bits constituting the value of the hash index, corresponding to one hash index value.

도 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, bucket 0 corresponds to hash indices “00” and “10”. That is, a record having a key having a value of "0" of the least significant 1 bit of the hash index is stored in the bucket number 210. The first bucket 510 corresponds to the hash index "01". That is, a record having a key whose value of the least significant two bits of the hash index is "01" is stored in the first bucket 510. Bucket number 520 corresponds to hash index " 11 ". That is, a record having a key whose value of the least significant two bits of the hash index is "11" is stored in bucket number 510. The local depth of bucket 0 is 220, and the depth of bucket 1 510 and bucket 520 is 2. Different levels of hash function may be used for each bucket having a different local depth. That is, compared to the first hash function used for the first bucket 510, the second hash function used for the zero bucket 220 may be a hash function one step below.

검색 연산에 대해서, 제어부(130)는 해시 함수를 사용하여 검색 키 값을 해시 인덱스를 나타내는 해시 값으로 변환할 수 있다. 제어부(130)는 디렉토리(210)를 통해 키 값에 대응하는 버켓(또는, 버켓의 주소)을 찾을 수 있다. 제어부(130)는 버켓의 주소를 통해 검색 키 값과 동일한 값을 갖는 키를 포함하는 레코드를 검색할 수 있다. 전술된 것처럼, 삭제 레코드 및 갱신 레코드가 레코드에 대한 소거 연산 대신 버켓 내에 삽입되므로, 제어부(130)는 버켓 내의 가장 최근의 레코드가 저장된 위치부터 가장 오래된 레코드가 저장된 위치로(즉, 역방향으로) 저장된 레코드들의 키를 검사할 수 있다.For a search operation, the controller 130 may convert the search key value into a hash value representing a hash index using a hash function. The controller 130 may find a bucket (or bucket address) corresponding to the key value through the directory 210. The controller 130 may search for the record including the key having the same value as the search key value through the address of the bucket. As described above, since the delete record and the update record are inserted into the bucket instead of the erase operation on the record, the control unit 130 stores the latest record in the bucket from the location where the oldest record is stored (i.e., in the reverse direction). You can check the keys of the records.

전술된 것과 같은 방법에 의해 사용되는 해시 인덱스를 이하 하이브리드 해시 인덱스로 명명한다.
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 행은, 전체 깊이와 해시 값에 대응하는 버켓의 사용 깊이가 동일할 때, 해시 값에 대응하는 버켓 내에 레코드를 삽입하는 단계를 나타낼 수 있다.Rows 2 through 5 may indicate inserting a record into the bucket corresponding to the hash value when the full depth and the use depth of the bucket corresponding to the hash value are the same.

제6 행 내지 제11 행은, 전체 깊이와 해시 값에 대응하는 버켓의 사용 깊이가 동일하지 않을 때, 한 단계 아래의 해시 함수를 이용하여 키에 대한 새로운 해시 값을 획득하고, 새로운 해시 값에 대응하는 버켓 내에 레코드를 삽입하는 단계를 나타낼 수 있다.Rows 6 to 11 obtain a new hash value for the key by using the hash function one step below when the full depth and the bucket depth corresponding to the hash value are not the same, and then apply the new hash value. Inserting a record into a corresponding bucket.

제12 행 내지 제21 행은, 버켓 내에 최대 개수의 레코드들이 삽입되었을 때, 버켓 내의 삭제 레코드 및 갱신 레코드의 비율을 측정하고, 측정된 비율이 합병 기준 값 α 이상일 때 합병 연산 및 분할 연산을 수행하는 단계를 나타낼 수 있다. 이때, 측정된 비율이 합병 기준 값 α보다 작으면, 합병 연산에 의해 획득된 유효한 레코드들을 가지고 버켓이 재구성될 수 있다. 재구성된 버켓이 최대 개수의 레코드들을 저장할 때까지, 상기의 재구성된 버켓에 대한 삽입 연산이 다시 수행될 수 있다.
Rows 12 to 21 measure the ratio of delete records and update records in the bucket when the maximum number of records are inserted in the bucket, and perform the merge and split operations when the measured ratio is equal to or greater than the merge criterion value α. Can be represented. At this time, if the measured ratio is smaller than the merge criterion value α, the bucket can be reconstructed with valid records obtained by the merge operation. The insert operation on the reconstructed bucket can be performed again until the reconstructed bucket has stored the maximum number of records.

하기의 도 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 first graph 710 represents an index generation time for each merge criterion value when the maximum number of overflow buckets allocated to the bucket is two.

제2 그래프(720)는 버켓에 할당되는 오버플로우 버켓의 최대 개수가 8 개일 때, 각 합병 기준 값에 대한 인덱스 생성 시간을 나타낸다.The second graph 720 shows the index generation time for each merge criterion value when the maximum number of overflow buckets allocated to the bucket is eight.

합병 기준 값 盼가 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 first graph 710 and the second graph 720 represent the generation time of the hash index according to the merge criterion value for each of the traces having the update and delete rates of 20%, 50%, and 80%, respectively.

도시된 그래프들에 따르면, 합병 기준 값이 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 first graph 810 shows an index generation time according to the number of overflow buckets. The first graph 810 shows the fastest index creation time when the number of overflow buckets is 4 with the update and delete ratio of 20%, and the index creation time gradually increases as the number of overflow buckets increases. It gradually decreases. This change in index creation time occurs because the number of partition or merge operations that cause an erase operation is significantly reduced when the overflow bucket has a sufficient number of overflow buckets.

갱신 및 삭제 비율이 50% 및 80%인 트레이스들에 대해서, 제1 그래프(810)는 오버플로우 버켓의 개수가 4 또는 8일 때 인덱스 생성 시간이 가장 빠른 모습을 보이며, 그 외의 경우에는 오버플로우 버켓의 수가 4 또는 8개일 때와 유사한 모습을 보인다.For traces with update and delete rates of 50% and 80%, the first graph 810 shows the fastest index creation time when the number of overflow buckets is 4 or 8; otherwise, overflow It looks similar when the number of buckets is 4 or 8.

제2 그래프(820)는 오버플로우 버켓의 수에 따른 트레이스 별 평균 검색 시간을 나타낸다. 제2 그래프(820)에서는 오버플로우 버켓의 개수가 많아질수록 선형적으로 검색 성능이 저하되는 모습을 보인다. 이러한 성능 저하는 검색 연산 시 할당된 오버플로우 버켓의 모든 레코드들을 순차적으로 검색해야 하기 때문에 발생한다.The second graph 820 represents an average search time for each trace according to the number of overflow buckets. In the second graph 820, as the number of overflow buckets increases, search performance decreases linearly. This degradation occurs because all records in the overflow bucket allocated to the search operation must be sequentially searched.

제3 그래프(830)는 오버플로우 버켓의 개수에 따른 각 트레이스 별 버켓 이용률을 나타낸다. 제3 그래프(830)는, 일반적으로 오버플로우 버켓의 개수가 적을 때(즉, 오버플로우 버캣의 개수가 0 또는 1일 때)는, 검색 성능은 향상되지만, 버켓 이용률은 50~60% 수준으로 현저하게 떨어지는 모습을 보인다. 버켓 이용률이 떨어지는 특징은 컴퓨팅 자원이 제한적인 환경에서는 단점으로 작용될 수 있다. 버켓 이용률은 합병 연산이 자주 발생할수록 높아질 수 있다.. 버켓 이용률이 합병 연산이 자주 발생할수록 높아지는 것은 합병 연산이 발생할 경우 해시 인덱스의 전체 깊이가 상승하지 않기 때문에 추가적인 버켓의 할당 없이 기존의 버켓에만 레코드의 삽입이 이루어지기 때문이다. 오버플로우 버켓의 수가 증가하면 분할 연산보다 합병 연산이 발생될 확률이 높아진다. 따라서, 제3 그래프(830)에서 나타난 것과 같이, 오버플로우 버켓의 수가 증가할수록 버켓 이용률은 높아진다. The third graph 830 shows bucket utilization for each trace according to the number of overflow buckets. The third graph 830 generally shows that when the number of overflow buckets is small (i.e. when the number of overflow buckets is 0 or 1), the search performance is improved, but the bucket utilization is 50 to 60%. It shows a marked drop. The low bucket utilization rate may be a disadvantage in an environment where computing resources are limited. Bucket utilization can increase as the number of merge operations occurs more frequently. The increase in bucket utilization as the number of merge operations occurs frequently means that the overall depth of the hash index does not increase when a merge operation occurs, so it records only existing buckets without additional bucket allocation. This is because the insertion is made. Increasing the number of overflow buckets increases the probability that a merge operation will occur rather than a split operation. Therefore, as shown in the third graph 830, as the number of overflow buckets increases, the bucket utilization rate increases.

상기의 실험에 따르면, 각 버켓에 대한 최대 오버플로우 버켓의 개수가 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 first graph 910, the second graph 920, the third graph 930, and the fourth graph 940 each generate a generation period, a number of read and draw operations, a number of write operations, and an erase occurring for each hash index. Indicates the number of operations. The graphs shown linearly increase the creation time of the extended hash index and the number of each of the operations as the update rate of the key (or record) increases. On the other hand, in the hybrid hash index, since the update record and the delete record are inserted into the record of the bucket as they are, and then merged, the pre-write-erase operation accompanying the in-place update and the in-place update can be avoided. Thus, the number of read, write and erase operations of the hybrid hash index may be less than the total number of operations of the extended hash index as a whole.

도 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)는 갱신 및 삭제 비율에 따른 각 해시 인덱스의 평균 검색 시간을 나타낸다. 확장형 해시 인덱스는 오버플로우가 발생할 때 마다 분할 연산을 수행한다. 따라서, 갱신 및 삭제 비율이 높을수록 검색 시간이 감소할 수 있다.Graph 1010 represents the average search time of each hash index according to the update and delete rates. Extended hash indexes perform partitioning operations whenever an overflow occurs. Therefore, the higher the update and delete ratio, the shorter the search time.

합병 기준 값이 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 graph 1010, the search speed difference between the two indices is only 1 ms. In addition, in the flash memory, since the speed of the read operation is very fast compared to the speed of the write operation and the erase operation, the time increased by the additional read operation during the search operation may not significantly affect the overall performance of the search operation. .

일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예들을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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: bucket 0
230: bucket 1

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.
제1항에 있어서,
상기 제어부는 상기 대응하는 버켓 내에 상기 키에 대응하는 레코드가 없는 경우 상기 추가 레코드를 삽입 레코드로서 상기 버켓 내에 저장하고, 상기 대응하는 버켓 내에 상기 키에 대응하는 레코드가 있는 경우 상기 추가 레코드를 갱신 레코드로서 상기 대응하는 버켓 내에 저장하는, 플래시 메모리 저장 장치.
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.
제1항에 있어서,
상기 합병에 의해 제거될 수 있는 레코드들은 갱신 레코드 및 삭제 레코드를 포함하고, 상기 갱신 레코드는 상기 대응하는 버켓 내의 상기 추가 레코드의 이전에 저장된 레코드들 중 상기 키에 대응하는 레코드의 데이터가 갱신됨을 나타내고, 상기 삭제 레코드는 상기 대응하는 버켓 내의 상기 추가 레코드의 이전에 저장된 레코드들 중 상기 키에 대응하는 레코드가 삭제된 것임을 나타내는, 해시 인덱스를 사용하는 플래시 메모리 저장 장치.
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.
제1항에 있어서,
상기 제어부는 상기 대응하는 버켓 내에 상기 추가 레코드를 저장할 공간이 없는 경우 상기 대응하는 버켓에 오버플로우 버켓을 추가로 할당함으로써 상기 공간을 생성하고, 상기 공간 내에 상기 추가 레코드를 저장하는, 플래시 메모리 저장 장치.
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. .
제1항에 있어서,
상기 제어부는 상기 하나 이상의 버켓들 중 검색 키에 대응하는 버켓 내에서, 상기 키에 대응하는 레코드를 최근에 저장된 순서로 검색함으로써 검색 연산을 수행하는, 플래시 메모리 저장 장치.
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.
KR1020110130878A 2011-12-08 2011-12-08 Hybrid hash index for storage device based on flash memory KR101340706B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (8)

* Cited by examiner, † Cited by third party
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
JP5996088B2 (en) Cryptographic hash database
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
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
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
KR101377923B1 (en) Apparatus and metohd for storing data in flash memory by using b-tree performing delayed update
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
Jin et al. FlashB-tree: a novel B-tree index scheme for solid state drives
Yang et al. An efficient dynamic hash index structure for NAND flash memory
CN113505130B (en) Hash table processing method
KR100982591B1 (en) File system, main storage and flash storage for progressive indexing and data management method using the progressive indexing

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