KR20190100537A - Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof - Google Patents

Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof Download PDF

Info

Publication number
KR20190100537A
KR20190100537A KR1020180016169A KR20180016169A KR20190100537A KR 20190100537 A KR20190100537 A KR 20190100537A KR 1020180016169 A KR1020180016169 A KR 1020180016169A KR 20180016169 A KR20180016169 A KR 20180016169A KR 20190100537 A KR20190100537 A KR 20190100537A
Authority
KR
South Korea
Prior art keywords
data
key
list
stored
memory cells
Prior art date
Application number
KR1020180016169A
Other languages
Korean (ko)
Other versions
KR102034833B1 (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 KR1020180016169A priority Critical patent/KR102034833B1/en
Priority to PCT/KR2018/012252 priority patent/WO2019156309A1/en
Publication of KR20190100537A publication Critical patent/KR20190100537A/en
Application granted granted Critical
Publication of KR102034833B1 publication Critical patent/KR102034833B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Abstract

The present invention discloses a key value-based data access device, in particular, a data access device in which data input / output performance is improved by fully utilizing the parallelism of a flash memory-based storage device. The key value-based data access device of the present invention comprises: a server for receiving a key list including at least one key value based on a user′s input, and outputting data accessed according to the key list; a storage unit including a storage area divided into a plurality of nonvolatile memory cells for storing the data; and a control unit for requesting and receiving location information of the data stored in the memory cells in parallel, generating a stored data list from the received location information, and accessing the data stored in the memory cells by comparing the generated stored data list with the key list.

Description

플래시 저장장치의 내부 병렬성을 이용하는 키 값 기반의 데이터 액세스 장치 및 방법 {Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof}Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method

본 발명은 데이터 액세스 장치 및 방법에 관한 것이다. 보다 상세하게는 플래시 메모리 기반 저장 장치에서 데이터를 액세스 하는 장치에 관한 것이다.The present invention relates to data access apparatus and methods. More specifically, the present invention relates to a device for accessing data in a flash memory based storage device.

클라우드 컴퓨팅 및 복수의 데이터 센터들에 의하여 저장되고 처리되는 거대한 양의 빅 데이터를 처리하는 기술이 활발하게 연구되고 있다. 빅 데이터를 처리함에 있어서, 빠른 데이터의 검색, 빠른 웹서비스들, NoSQL 데이터 베이스들 기타 키-벨류(Key-Value) 저장소들은 그 연구 분야의 중심에 있다. Technologies for processing large amounts of big data stored and processed by cloud computing and multiple data centers are being actively researched. In dealing with big data, fast data retrieval, fast web services, NoSQL databases and other key-value repositories are at the center of the research field.

예를 들어, 페이스북 및 기타 SNS 제공자들은 빅 데이터를 이용하여 서비스를 효과적으로 제공하기 위하여 운영하는 자사의 데이터베이스에 저장된 데이터들에 빠르게 액세스 하기 위한 기술 및 자사의 데이터베이스에 저장된 데이터들을 효율적으로 저장하고 관리하기 위한 기술들을 활용한다.For example, Facebook and other SNS providers use big data to efficiently store and manage data stored in their databases and technologies for quick access to data stored in their databases that operate to effectively deliver services. Use techniques to

키-벨류 스토어(Key-Value Store)는 NoSQL 데이터 베이스의 일종으로, Dynamo, Level DB, Rocks DB, Cassandra, HB BASE 등이 있다. 키 벨류 스토어는 관계형 데이터베이스보다 빅 데이터를 처리함에 있어 데이터를 더 유연하고 효율적으로 관리할 수 있는데, 키-벨류 스토어는 향상된 데이터 관리 성능을 위하여 메인 스토리지로 솔리드 스테이트 드라이버(Solid State Driver, SSD)를 사용하는 경우가 많다. 키-벨류 스토어 중 대표적인 예로, 오픈 소스 키-벨류 기반의 데이터베이스인 페이스 북의 RocksDB는 Get method의 반복적인 호출로 인한 오버헤드를 제거하기 위한 Multi get Method를 제공한다. 이를 이용하여 Rocks DB는 데이터 액세스 속도를 향상시킬 수 있다. Key-Value Store is a kind of NoSQL database, including Dynamo, Level DB, Rocks DB, Cassandra, and HB BASE. The key value store can manage data more flexibly and efficiently when dealing with big data than a relational database. The key value store uses a solid state driver (SSD) as the main storage for improved data management. Often used. For example, RocksDB on Facebook, an open source key-value based database, provides a multi-get method to eliminate the overhead of repetitive calls to Get methods. This allows Rocks DB to speed up data access.

하지만, 종래의 데이터 액세스 방법은 내부적으로 get Method를 단순히 반복하는데 그치고, 낸드 플래시 메모리 기반의 SSD의 내부 병렬성을 완전히 이용하지 못하여 데이터 I/O 성능 향상에 한계가 있었다. However, the conventional data access method merely repeats the get method internally, and has not limited the improvement of data I / O performance because the internal parallelism of the NAND flash memory-based SSD cannot be fully utilized.

플래시 메모리 기반 SSD(Solid State Drive)는 내부에 복수의 플래시 메모리 칩의 병렬성(Parallel)으로 인하여 데이터를 병렬적으로 처리하는 특성이 있는데, 이를 이용하여 키 벨류 스토어에서 데이터 액세스 기술 개발이 요구되고 있다.The flash memory based solid state drive (SSD) has a characteristic of processing data in parallel due to the parallelism of a plurality of flash memory chips, and it is required to develop a data access technology in a key value store. .

한국 공개 특허 제 10-2010-0121389 (공개)Korean Unexamined Patent No. 10-2010-0121389 (Public)

본 발명은 상기한 문제점을 해결하기 위하여 안출된 것으로서, 키 값 기반의 데이터 액세스 장치를 개시한다. 특히, 플래시 메모리에 저장된 데이터를 액세스 하는 장치를 개시한다.The present invention has been made to solve the above problems, and discloses a key value based data access apparatus. In particular, an apparatus for accessing data stored in a flash memory is disclosed.

본 발명은 상기한 목적을 달성하기 위해 안출된 것으로서, 본 발명의 키 값 기반의 데이터 액세스 장치는 사용자의 입력에 기초하여 적어도 하나 이상의 키 값들을 포함하는 키 리스트를 입력 받고, 상기 키 리스트에 따라 액세스된 데이터를 출력하는 서버; 상기 데이터를 저장하기 위한 복수의 비휘발성 메모리 셀들로 구분되는 저장영역을 포함하는 저장부; 및 상기 메모리 셀들에 저장된 데이터의 위치 정보를 병렬적으로 요청하여 수신하고, 상기 수신된 위치 정보로부터 저장 데이터 리스트를 생성하며, 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스 하는 제어부; 를 포함한다.The present invention has been made to achieve the above object, the key value-based data access apparatus of the present invention receives a key list including at least one key value based on a user input, according to the key list A server for outputting the accessed data; A storage unit including a storage area divided into a plurality of nonvolatile memory cells for storing the data; And requesting and receiving position information of data stored in the memory cells in parallel, generating a stored data list from the received position information, comparing the generated stored data list with the key list, and storing the stored data in the memory cells. A control unit for accessing data; It includes.

본 발명에서 상기 서버는 상기 키 값들을 기반으로 동작하는 적어도 하나의 인터페이스(Key Value Operations Interface)를 이용하여 상기 키 리스트를 입력 받을 수 있다.In the present invention, the server may receive the key list using at least one Key Value Operations Interface operating based on the key values.

본 발명에서 상기 메모리 셀들은 상기 데이터 전송을 위한 멀티 채널이 마련된 낸드(nand)형 플래시 메모리를 포함하고, 상기 플래시 메모리는 상기 키 값들의 크기에 따른 키 범위(Key Range)가 미리 할당되어 상기 데이터를 구분하여 저장하는 복수의 블록을 포함할 수 있다.In the present invention, the memory cells include a nand type flash memory provided with a multi-channel for the data transmission, and the flash memory is pre-assigned a key range according to the size of the key values. It may include a plurality of blocks for storing separately.

본 발명에서 상기 저장부는 상기 데이터를 계층적으로 처리하는 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 상기 메모리 셀들에 저장하고, 상기 메모리 셀들에 저장된 데이터들은 적어도 하나의 계층들로 구분되어 상기 계층간 압축(compaction)을 통하여 관리될 수 있다.In the present invention, the storage unit stores the data in the memory cells in a log structure merged tree (Log Structure Merged Tree) method for processing the data hierarchically, and the data stored in the memory cells are divided into at least one layer and the hierarchical layer. It can be managed through liver compression.

본 발명에서 상기 제어부는 상기 위치 정보를 이용하여 상기 로그 구조 병합 트리 방식으로 상기 메모리 셀들에 저장된 데이터의 하위 계층으로부터 순차적으로 상기 저장 데이터 리스트를 생성하는 저장 데이터 리스트 생성부; 를 더 포함하고, 상기 생성된 저장 데이터 리스트를 이용하여 상기 메모리 셀들에 저장된 데이터를 액세스할 수 있다.According to an embodiment of the present invention, the control unit may further include a storage data list generation unit configured to sequentially generate the storage data list from a lower layer of data stored in the memory cells in the log structure merging tree method using the position information; The apparatus may further include accessing data stored in the memory cells by using the generated stored data list.

본 발명에서 상기 제어부는 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 상기 데이터의 하위 계층으로부터 순차적으로 비교하여 상기 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장하는 반환 데이터 리스트 저장부; 를 더 포함하고, 상기 계층 중 최상위 계층까지 비교 후 상기 반환 데이터 리스트를 상기 서버로 전송할 수 있다.In the present invention, the control unit sequentially compares the generated stored data list and the key list from a lower layer of the data, and returns the data stored at the position indicated by the position information corresponding to the key list in a return data list. A data list storage unit; The apparatus may further include and transmit the returned data list to the server after comparing to the highest layer of the layers.

본 발명에서 상기 제어부는 상기 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface)를 이용하여 일괄 수신하고, 상기 오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트 중 적어도 하나를 포함할 수 있다.In the present invention, the control unit collectively receives the position information of the data stored in the memory cells using a Parallel Synchronous I / O Interface operating based on an operation variable, wherein the operation variable is a buffer, It may include at least one of an I / O parameter and a set of pointers associated with the key values.

본 발명에서 상기 병렬 동기 I/O 인터페이스를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고, 상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬될 수 있다.In the present invention, the location information collectively received using the parallel synchronous I / O interface includes an I / O request set for requesting input and output of data, and the I / O request set is located at a location of data stored in the memory cells. Can be ordered accordingly.

본 발명에서 상기 블록은 상기 데이터가 블록에 포함되었는지 여부를 해쉬값을 출력으로 가지는 미리 설정된 해쉬 함수를 이용하여 판단하는 블룸 필터 파일 및 상기 블룸 필터 파일에서 데이터가 포함된 것으로 판단되는 경우 상기 데이터가 상기 블록의 어느 위치에 있는지에 관한 오프셋 정보를 출력하는 인덱스 파일을 포함할 수 있다.In the present invention, the block includes a bloom filter file that determines whether the data is included in the block by using a preset hash function having a hash value as an output, and when the data is included in the bloom filter file. It may include an index file for outputting offset information about which position of the block.

본 발명에서 상기 압축(compaction)은 상기 적어도 하나의 계층들에서 병렬로 수행되고, 상기 압축은 스레드 수를 고려하여 주기적으로 수행되며, 상기 저장부는 복수의 키-벨류(Key-Value) 쌍을 이용하여 상기 데이터를 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장할 수 있다.In the present invention, the compression is performed in parallel in the at least one layer, the compression is periodically performed in consideration of the number of threads, and the storage unit uses a plurality of key-value pairs. The data may be stored in a log structure merged tree method.

또한 상기한 목적을 달성하기 위하여 본 발명의 키 값 기반의 데이터 액세스 방법은 사용자의 입력에 기초하여 적어도 하나 이상의 키 값들을 포함하는 키 리스트를 입력 받는 단계; 데이터를 저장하기 위한 복수의 비휘발성 메모리 셀들에 저장된 상기 데이터의 위치 정보를 병렬적으로 요청하는 단계; 상기 위치 정보로부터 상기 메모리 셀들에 저장된 데이터 목록을 나타내는 저장 데이터 리스트를 생성하는 단계; 및 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스 하는 단계; 를 포함한다.In addition, in order to achieve the above object, a key value-based data access method of the present invention comprises: receiving a key list including at least one key value based on a user input; Requesting location information of the data stored in a plurality of nonvolatile memory cells for storing data in parallel; Generating a stored data list representing a data list stored in the memory cells from the location information; Comparing the key list with the generated stored data list to access data stored in the memory cells; It includes.

본 발명에서 상기 키 리스트를 입력 받는 단계는 상기 키 값들을 기반으로 동작하는 적어도 하나의 인터페이스(Key Value Operations Interface)를 이용하여 상기 키 리스트를 입력 받도록 마련될 수 있다.In the present invention, the step of receiving the key list may be provided to receive the key list using at least one Key Value Operations Interface operating based on the key values.

본 발명에서 상기 메모리 셀들은 상기 데이터 전송을 위한 멀티 채널이 마련된 낸드(nand)형 플래시 메모리를 포함하고, 상기 플래시 메모리는 상기 키 값들의 크기에 따른 키 범위(Key Range)가 미리 할당되어 상기 데이터를 구분하여 저장하는 복수의 블록을 포함할 수 있다.In the present invention, the memory cells include a nand type flash memory provided with a multi-channel for the data transmission, and the flash memory is pre-assigned a key range according to the size of the key values. It may include a plurality of blocks for storing separately.

본 발명에서 상기 메모리 셀들은 상기 데이터를 계층적으로 처리하는 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장하고, 상기 저장된 데이터는 적어도 하나의 계층들로 구분되어 상기 계층간 압축(compaction)을 통하여 관리될 수 있다.In the present invention, the memory cells are stored in a log structure merged tree method for processing the data hierarchically, and the stored data is divided into at least one layer to perform the inter-layer compression. Can be managed through

본 발명에서 상기 생성하는 단계는 상기 위치 정보를 이용하여 상기 로그 구조 병합 트리 방식으로 상기 메모리 셀들에 저장된 데이터의 하위 계층으로부터 순차적으로 상기 저장 데이터 리스트를 생성할 수 있다.In the generating of the present invention, the stored data list may be sequentially generated from a lower layer of data stored in the memory cells by the log structure merging tree method using the location information.

본 발명에서 상기 검색하는 단계는 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 상기 데이터의 하위 계층으로부터 순차적으로 비교하는 단계; 및 비교 결과에 따라 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장하는 단계; 를 더 포함하고, 상기 데이터의 최상위 계층까지 비교 후 상기 데이터가 저장된 반환 데이터 리스트를 상기 사용자에게 반환할 수 있다.In the present invention, the retrieving may include sequentially comparing the generated stored data list and the key list from a lower layer of the data; And storing data stored at a location indicated by the location information corresponding to the key list in a return data list according to the comparison result. The apparatus may further include and return to the user a list of return data in which the data is stored after comparing to the uppermost layer of the data.

본 발명에서 상기 생성하는 단계는 상기 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface)를 이용하여 일괄 수신하고, 상기 오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트 중 적어도 하나를 포함할 수 있다.In the generating of the present invention, the location information of the data stored in the memory cells is collectively received using a parallel synchronous I / O interface operating based on an operation variable, and the operation variable is It may include at least one of a buffer, an I / O parameter and a set of pointers associated with the key values.

본 발명에서 상기 병렬 동기 I/O 인터페이스를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고, 상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬될 수 있다.In the present invention, the location information collectively received using the parallel synchronous I / O interface includes an I / O request set for requesting input and output of data, and the I / O request set is located at a location of data stored in the memory cells. Can be ordered accordingly.

본 발명에서 상기 블록은 상기 데이터가 블록에 포함되었는지 여부를 해쉬값을 출력으로 가지는 미리 설정된 해쉬 함수를 이용하여 판단하는 블룸 필터 파일 및 상기 블룸 필터 파일에서 데이터가 포함된 것으로 판단되는 경우 상기 데이터가 상기 블록의 어느 위치에 있는지에 관한 오프셋 정보를 출력하는 인덱스 파일을 포함하고, 상기 메모리 셀들은 복수의 키-벨류(Key-Value) 쌍을 이용하여 상기 데이터를 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장할 수 있다.In the present invention, the block includes a bloom filter file that determines whether the data is included in the block by using a preset hash function having a hash value as an output, and when the data is included in the bloom filter file. And an index file for outputting offset information regarding a location of the block, wherein the memory cells use a plurality of key-value pairs to log the data into a log structure merged tree. Can be stored in the

또한, 본 발명은 컴퓨터에서 상기한 키 값 기반의 데이터 액세스 방법을 실행시키기 위한 컴퓨터에서 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 개시한다.The present invention also discloses a computer program stored in a computer readable recording medium for executing the above key value based data access method on a computer.

본 발명에 따르면, 데이터 액세스 장치의 입출력 성능을 향상 시킬 수 있다.According to the present invention, the input / output performance of the data access device can be improved.

특히, 메모리 셀에 저장된 데이터에 효과적으로 액세스 할 수 있는 잇점이 있다.In particular, there is an advantage that the data stored in the memory cell can be accessed effectively.

도 1은 본 발명의 일 실시 예에 따른 키 값 기반의 데이터 액세스 장치의 블록도이다.
도 2는 도 1의 실시 예에서 저장부에 로그 병합 트리 구조로 저장된 데이터를 나타내는 개념도이다.
도 3은 도 1의 실시예에서 제어부의 확대 블록도이다.
도 4는 플래시 메모리 기반 저장 장치에 저장된 데이터의 구조를 나타내는 개념도이다.
도 5는 종래의 키 값 기반의 데이터 액세스 장치에서 수행되는 데이터 액세스 과정을 나타낸다.
도 6은 본 발명의 일 실시 예에 따른 키 값 기반의 데이터 액세스 장치에서 수행되는 데이터 액세스 과정을 나타낸다.
도 7은 멀티겟 수의 변화에 따라 측정된 키 값 기반의 데이터 검색 장치의 성능을 나타낸다.
도 8은 멀티겟 비율의 변화에 따라 측정된 키 값 기반의 데이터 검색 장치의 성능을 나타낸다.
도 9는 데이터 블록의 사이즈에 따라 측정된 키 값 기반의 데이터 검색 장치의 성능을 나타낸다.
도 10은 본 발명의 일 실시 예에 따른 키 값 기반의 데이터 검색 방법의 흐름도를 나타낸다.
도 11은 도 10의 실시 예에서 액세스 하는 단계의 확대 흐름도이다.
1 is a block diagram of an apparatus for accessing data based on a key value according to an embodiment of the present invention.
FIG. 2 is a conceptual diagram illustrating data stored in a log merge tree structure in a storage unit in the embodiment of FIG. 1.
3 is an enlarged block diagram of a controller in the embodiment of FIG. 1.
4 is a conceptual diagram illustrating a structure of data stored in a flash memory based storage device.
5 shows a data access procedure performed in a conventional key value based data access apparatus.
6 illustrates a data access process performed in a key value based data access apparatus according to an embodiment of the present invention.
7 illustrates the performance of a key value based data retrieval apparatus measured according to a change in the number of multi-gets.
8 shows the performance of the data retrieval device based on the key value measured according to the change of the multi-get ratio.
9 shows the performance of a key value based data retrieval apparatus measured according to the size of a data block.
10 is a flowchart illustrating a key value based data retrieval method according to an embodiment of the present invention.
FIG. 11 is an enlarged flowchart of accessing in the embodiment of FIG. 10; FIG.

이하, 본 발명의 일 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.Hereinafter, an embodiment of the present invention will be described in detail with reference to the accompanying drawings.

첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.In the description with reference to the accompanying drawings, the same or corresponding components will be given the same reference numerals and redundant description thereof will be omitted.

또한 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략할 수 있다. In describing the present invention, when it is determined that detailed descriptions of related well-known structures or functions may obscure the gist of the present invention, the detailed description may be omitted.

본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 용어를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 이하에서 설명하는 각 단계는 하나 또는 여러 개의 소프트웨어 모듈로도 구비가 되거나 또는 각 기능을 담당하는 하드웨어로도 구현이 가능하며, 소프트웨어와 하드웨어가 복합된 형태로도 가능하다. 각 용어의 구체적인 의미와 예시는 각 도면의 순서에 따라 이하 설명 한다. 이하에서는 본 발명의 실시 예에 따른 키 값 기반의 데이터 액세스 장치(10)의 구성을 관련된 도면을 참조하여 상세히 설명한다. The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of terms. Singular expressions include plural expressions unless the context clearly indicates otherwise. Each step described below may be provided by one or several software modules or may be implemented by hardware that is responsible for each function, or may be a combination of software and hardware. Specific meanings and examples of each term will be described below in the order of the drawings. Hereinafter, a configuration of a key value based data access device 10 according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일 실시 예에 따른 키 값 기반의 데이터 액세스 장치(10)의 블록도이다. 1 is a block diagram of an apparatus 10 for accessing data based on a key value according to an embodiment of the present invention.

키 값 기반의 데이터 액세스 장치(10)는 서버(100), 저장부(200) 및 제어부(300)를 포함한다. 예를 들어, 키 값 기반의 데이터 액세스 장치(10)는 키-벨류 스토어(Key-Valute Store)에 저장된 데이터를 액세스하기 위하여 사용될 수 있다. 본 발명에서 언급되는 키-벨류 스토어는 NoSQL 데이터 베이스의 일종으로 빅 데이터 처리를 위한 비 관계형(NonRelational) 데이터 베이스 관리 시스템 중 키 값 또는 포인터 셋을 이용하여 해당 키 값에 대응되는 데이터인 벨류(Value)를 관리하는 시스템이다. 일반적으로 키-벨류 스토어는 테이블-컬럼과 같은 스키마 없이 분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하기 때문에, 입력요청에 따른 응답 지연 시간(LATENCY)과 데이터 처리율(Throughput)이 우수한 장점이 있다.The key value-based data access device 10 includes a server 100, a storage unit 200, and a controller 300. For example, the key value based data access device 10 may be used to access data stored in a Key-Valute Store. The key-value store referred to in the present invention is a kind of NoSQL database. Value, which is data corresponding to a corresponding key value by using a key value or a pointer set, in a nonrelational database management system for processing big data. ) Is a system for managing. In general, the key-value store optimizes key values for simple retrieval and additional operations in a distributed environment without schemas such as table-column, so the response latency (LATENCY) and data throughput (throughput) according to input request are excellent. There is this.

본 발명의 키 값 기반의 데이터 액세스 장치(10)는 대표적인 키-벨류 스토어로서, 서버 워크로드와 같은 빅 데이터 처리에 적합하고 빠른 플래시 저장 장치에서 높은 성능을 내는 RocksDB 플랫폼에서 구동될 수 있다. RocksDB는 메모리, 플래시, 하드디스크 및 HDFS등 다양한 환경에서 실행이 가능한데, 이는 오픈 소스 프로젝트인 LevelDB를 기반으로 한다. 본 발명에서 언급되는 키-벨류는 순수한 비트 스트림으로서, 본 발명에서 Multi get API(Application Programming Interface)를 통해 호출되고 반환되는 모든 키 벨류는 일관성(Consistent)를 유지한다.The key value-based data access device 10 of the present invention is a representative key-value store and can be operated on a RocksDB platform that is suitable for big data processing such as a server workload and performs high performance in a fast flash storage device. RocksDB can run in a variety of environments, including memory, flash, hard disk, and HDFS. It is based on the open source project LevelDB. Key-values referred to in the present invention are pure bit streams, and in the present invention, all key values called and returned through a multi get application programming interface (API) maintain consistency.

본 발명의 키 값 기반의 데이터 액세스 장치(10)가 구동되는 RocksDB는 복수의 키-벨류 쌍(Key-Value Pairs)을 처리하기 위한 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)로서 Multi-get Method 또는 get Method를 사용한다. Multi-get Method 또는 get Method는 어플리케이션이 RocksDB에서 키를 호출하기 위한 오퍼레이션(Operation)인데, Multi-get은 동시에 복수의 키 값을 호출할 수 있도록 한다. 다만, 종래의 Multi-get은 내부적으로 get method를 반복할 뿐 낸드 플래시 메모리 기반의 SSD의 내부 병렬성(Internal Parallelism)을 제대로 이용하지 못하는 문제점이 있었다. RocksDB in which the key value based data access device 10 of the present invention is driven is an application programming interface (API) for processing a plurality of key-value pairs. Use get method. Multi-get method or get method is an operation for the application to call a key in RocksDB. Multi-get allows multiple key values to be called at the same time. However, the conventional multi-get only repeats the get method internally, and there is a problem in that the internal parallelism of the NAND flash memory-based SSD cannot be properly used.

본 발명의 키 값 기반의 데이터 액세스 장치(10)가 사용되는 키-벨류 스토어는 종래 관계형 데이터 베이스보다 데이터를 더 유연하고 효율적으로 관리할 수 있고, 보다 향상된 성능을 위하여 메인 스토리지로 SSD를 사용하는 경우가 많다. 키 벨류 스토어는 가능한 쓰기 증폭(Write Amplification)을 줄이면서, SSD의 랜덤 I/O 요청 특성을 이용하여 성능을 향상할 수 있다. 본 발명의 키 값 기반의 데이터 액세스 장치는 복수의(Multiple) I/O 요청을 단일의 시스템 콜(Single System Call)에서 전달(Parallel)할 뿐만 아니라, 복수의 I/O 요청을 정렬하여(Sequential) 이용하기 때문에 복수의 플래시 칩을 포함하는 메모리 셀들에 저장된 데이터에 Parallel Sequential 액세스할 수 있고, 플래시 메모리 기반의 저장 장치가 보다 향상된 I/O 성능을 달성할 수 있게 한다. The key-value store in which the key value-based data access device 10 of the present invention is used can manage data more flexibly and efficiently than the conventional relational database, and uses SSD as main storage for improved performance. There are many cases. Key value stores can improve performance by taking advantage of the random I / O request characteristics of SSDs while reducing possible write amplifications. The key value-based data access device of the present invention not only delivers multiple I / O requests in a single system call, but also sorts the plurality of I / O requests. This allows parallel sequential access to data stored in memory cells including a plurality of flash chips, and enables a flash memory based storage device to achieve improved I / O performance.

즉 본 발명의 키 값 기반의 데이터 액세스 장치(10)는 PSYNC I/O를 이용하여, 단일의 PSYNC 시스템 콜에서 메모리 셀들에 저장된 데이터에 대하여 복수의 읽기 접근(Multiple Read Accesses)이 가능하고, 종래 키-벨류 데이터베이스에서 저장된 데이터에 액세스하기 위한 패턴을 반복적 랜덤 액세스(Iterative random access)에서 병렬 시퀀셜 액세스(Parallel Sequential Access)로 변경함으로서 플래시 메모리 기반의 저장 장치의 I/O 성능을 향상시킬 수 있다. 결과적으로 키 값 기반의 데이터 액세스 장치(10)를 이용하는 경우, 보다 빠르게 데이터에 액세스 가능할 뿐만 아니라 SSD의 대역폭(Bandwidth)을 향상시킬 수 있다. That is, the key value-based data access apparatus 10 of the present invention enables multiple read accesses to data stored in memory cells in a single PSYNC system call using PSYNC I / O. By changing a pattern for accessing data stored in a key-value database from iterative random access to parallel sequential access, I / O performance of a flash memory based storage device may be improved. As a result, when using the data access device 10 based on the key value, not only can the data be accessed more quickly, but also the bandwidth of the SSD can be improved.

서버(100)는 사용자(20)의 입력에 기초하여 적어도 하나 이상의 키 값들을 포함하는 키 리스트를 입력 받고, 상기 키 리스트에 따라 액세스된 데이터를 출력한다. 예를 들어, 서버(100)는 저장부(200) 및 제어부(300)와 분리되어 외부에 별도로 마련될 수 있지만, 저장부(200)내에 데이터들을 관리하기 위한 플랫폼으로 구현될 수 있다. 서버(100)는 사용자(20)로부터 키 리스트를 입력 받고, 키 리스트에 대응되어 액세스된 데이터들이 저장된 반환 데이터 리스트를 제어부(300)로부터 전송 받아 출력할 수 있다. 본 발명의 서버(100)가 입력 받는 키 리스트는 저장부(200)에 저장된 데이터들의 위치를 나타내는 이진 시퀀스로 마련도리 수 있다.The server 100 receives a key list including at least one key value based on an input of the user 20, and outputs data accessed according to the key list. For example, the server 100 may be separately provided from the storage unit 200 and the control unit 300, but may be separately provided, but may be implemented as a platform for managing data in the storage unit 200. The server 100 may receive a key list from the user 20 and may receive and output a return data list, in which data accessed corresponding to the key list is stored, from the controller 300. The key list input by the server 100 of the present invention may be provided in a binary sequence indicating the location of data stored in the storage unit 200.

예를 들어, 서버(100)는 키 값들을 기반으로 동작하는 적어도 하나의 인터페이스(Key Value Operations Interface)를 이용하여 상기 키 리스트를 입력 받을 수 있다. 서버(100)가 사용하는 키 값들을 기반으로 동작하는 인터페이스는 복수의 키-벨류 쌍(Key-Value Pairs)을 처리하기 위한 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)를 포함하고, Multi-get Method 또는 get Method로 마련될 수 있다. 서버(100)는 RocksDB에서 키를 호출하기 위한 오퍼레이션(Operation)인 Multi-get Method 또는 get Method를 사용하여 사용자로부터 키 리스트를 입력 받을 수 있다. 도 2를 참조하여 설명한다.For example, the server 100 may receive the key list using at least one Key Value Operations Interface operating based on key values. The interface operating based on key values used by the server 100 includes an application programming interface (API) for processing a plurality of key-value pairs, and includes a multi-get method. Alternatively, it may be provided as a get method. The server 100 may receive a key list from a user by using a multi-get method or a get method, which is an operation for calling a key in RocksDB. It demonstrates with reference to FIG.

저장부(200)는 데이터를 저장하기 위한 복수의 비휘발성 메모리 셀들로 구분되는 저장영역을 포함 한다. 예를 들어, 저장부(200)가 포함하는 메모리 셀들은 데이터 전송을 위한 멀티 채널이 마련된 낸드(nand)형 플래시 메모리를 포함하고, 상기 플래시 메모리는 상기 키 값들의 크기에 따른 키 범위(Key Range)가 미리 할당되어 상기 데이터를 구분하여 저장하는 복수의 블록을 포함할 수 있다. 또한, 상기 블록은 상기 데이터가 블록에 포함되었는지 여부를 해쉬값(Hashvalue)을 출력으로 가지는 미리 설정된 해쉬 함수(Hashfunction)를 이용하여 판단하는 블룸 필터(Bloomfilter) 파일 및 상기 블룸 필터 파일에서 데이터가 포함된 것으로 판단되는 경우 상기 데이터가 상기 블록의 어느 위치에 있는지에 관한 오프셋 정보를 출력하는 인덱스 파일을 포함한다.The storage unit 200 includes a storage area divided into a plurality of nonvolatile memory cells for storing data. For example, the memory cells included in the storage unit 200 include a NAND flash memory provided with a multi-channel for data transmission, and the flash memory includes a key range according to the size of the key values. ) May be pre-allocated and include a plurality of blocks for classifying and storing the data. The block may include data from a bloomfilter file and a bloom filter file that determine whether the data is included in the block by using a preset hash function having a hash value as an output. And an index file for outputting offset information on which position of the block the data is located.

저장부(200)는 복수의 메모리 셀들에 저장된 데이터를 로그 구조 병합 트리 방식(LSM 트리)으로 관리함은 전술한 바와 같다. LSM 트리는 LevelDB, RocksDB 및 Hbase 와 같은 키 벨류 스토어에서 사용되는 베이스 트리(BaseTree) 알고리즘으로서, 쓰기 집중 데이터 워크로드(Write Intensive Data Workload)를 위해 설계된 데이터 구조이며, 낮은 쓰기 레이턴시(Latency)를 유지할 수 있다. The storage unit 200 manages data stored in the plurality of memory cells in a log structure merge tree (LSM tree) as described above. LSM Tree is a BaseTree algorithm used in key value stores such as LevelDB, RocksDB, and Hbase. It is a data structure designed for Write Intensive Data Workload, and can maintain low write latency. have.

예를 들어, 데이터가 계층적으로 관리되는 로그 구조 병합 트리(LSM 트리)는 메모리가 가득 차는 경우에 한해 디스크 스토리지(Disk Storage)로 플러싱하기 때문에 낮은 쓰기 레이턴시(Latency)를 달성할 수 있다. LSM 트리는 낮은 쓰기 레이턴시를 위하여, 데이터를 업데이트하거나 삭제하지 않는 대신, 삭제된 데이터 항목을 따로 표지(mark)하는 톰스톤 엔트리(Tombstone entries)를 이용하여 삭제된 데이터에 액세스하는 것을 피할 수 있다. For example, a log structure merge tree (LSM tree) in which data is hierarchically managed is flushed to disk storage only when memory is full, thereby achieving low write latency. The LSM tree may avoid accessing deleted data using Tomstone entries that separately mark deleted data items, instead of updating or deleting the data for low write latency.

본 발명의 저장부(200)에 마련된 메모리 셀들에 저장된 데이터들의 삭제는 LSM 트리의 계층간 합병(Merge)동작에 의하여 수행될 수 있다. LSM 트리는 계층간 트리 성분(TreeComponent)에 저장된 데이터의 크기가 미리 설정된 임계치(threshold)이상인 경우 상위 계층의 트리 성분을 하위 계층의 트리 성분으로 합병(Merge)하여 실제 트리 성분에 저장된 데이터를 삭제할 수 있다.Deletion of data stored in memory cells provided in the storage unit 200 of the present invention may be performed by an inter-layer merge operation of the LSM tree. The LSM tree may delete the data stored in the actual tree component by merging the tree component of the upper layer into the tree component of the lower layer when the size of the data stored in the tree component between layers is greater than or equal to a preset threshold. .

일 실시 예에 따른 로그 병합 트리 구조에서 데이터의 이동을 설명하면, 먼저, In-Memory 영역에 속하는 C0 레벨에서 데이터를 입력 받고, C0레벨에 포함된 memtable이 모두 차면 Immutable Memtable을 거쳐 디스크 영역으로 플러싱 된다. 디스크 영역에 포함된 로그 병합 트리 구조 레벨 중에서 C1레벨은 C0레벨에서 플러싱된 데이터를 저장하고, C0레벨에서 저장된 데이터의 사이즈가 미리 설정된 크기 이상인 경우, C1레벨로 트리 성분을 합병(Merge)한다. 마찬가지로, C1레벨에 저장된 데이터의 크기가 미리 설정된 임계치 이상인 경우, C1레벨의 데이터는 C2 레벨로 합병(Merge)될 수 있다. Referring to the movement of data from the log merge tree structure according to the embodiment, first, the disk area receives the data from the C 0 level belonging to the In-Memory area, through the difference plane Immutable Memtable all of the memtable included in C 0 level Flushed. If in the log merge tree structure levels included in the disk area C 1 level stores the data flushed from C 0 level, and larger than the size of data stored in the C 0 level previously set, merge tree component in C 1 level ( Merge). Similarly, when the size of data stored at the C 1 level is greater than or equal to a preset threshold, the C 1 level data may be merged to the C 2 level.

전술한 계층간 트리 성분들의 합병(Merge) 동작에서 합병 커서(merge cursor)가 삭제된 데이터 항목을 표지하는 톰스톤 데이터 표지를 인식하는 경우, 데이터의 삭제가 일어날 수 있다. 일반적으로 많은 키 벨류 스토어들이 빠른 쓰기 속도를 달성하기 위하여 LSM 트리를 이용하여 저장된 데이터를 관리하지만, LSM 트리 특성상 다층 계층으로 인한 한계로 인하여 쓰기 레이턴시의 감쇠없이 읽기 성능을 향상시키기 위한 bLSM, LSM-trie 및 SILT와 같은 기술들이 개발되었다. 본 발명에서 전술한 메모리와 디스크 스토리지(Disk Storage)는 저장부(200)에 포함되어 구현될 수 있지만, 메모리는 저장부(200)와 별도로서, 제어부(300)상의 RocksDB 프로세서상에서 구현될 수 있음은 물론이다. When the merge cursor recognizes the tomstone data mark that marks the deleted data item in the above-described merge operation of the inter-layer tree components, deletion of data may occur. In general, many key value stores use the LSM tree to manage stored data to achieve fast write speeds, but due to the limitations of the multi-layered nature of the LSM tree, bLSM, LSM- to improve read performance without attenuation of write latency. Techniques like trie and SILT have been developed. In the present invention, the above-described memory and disk storage may be implemented by being included in the storage 200, but the memory may be implemented separately from the storage 200 and on a RocksDB processor on the controller 300. Of course.

본 발명의 키 값 기반의 데이터 액세스 장치(10)가 구동되는 RocksDB는 LevelDB에 기초하고, 키-벨류 스토어의 성능을 최적화 하기 위하여 SSD의 특성을 이용한다. 따라서, RocksDB는 플래시 메모리 기반 저장 장치에서 작동되므로 데이터 쓰기 집중에 효율적이다. 또한, RocksDB는 읽기 성능을 향상하기 위하여 블룸 필터 및 전술한 LSM트리에서 계층간 합병(Merge)에 상응하는 병렬 압축(Compaction)을 이용할 수 있다. RocksDB, in which the key value based data access device 10 of the present invention is driven, is based on LevelDB and uses the characteristics of SSD to optimize the performance of the key-value store. As a result, RocksDB operates on flash memory-based storage, making it more efficient to write data. In addition, RocksDB may use a parallel filter corresponding to a merge between layers in a bloom filter and the aforementioned LSM tree to improve read performance.

예를 들어, 키 값 기반의 데이터 액세스 장치(10)의 데이터 관리 체계로 사용되는 RocksDB는 FIFO(First in first out) 알고리즘이 적용되는 In-Memory table(224, 226)을 포함하여, 저장부(200)에 저장된 데이터들을 LSM 트리 구조로 유지할 수 있다.For example, RocksDB used as a data management scheme of a key value-based data access device 10 includes an in-memory table 224 and 226 to which a first in first out (FIFO) algorithm is applied. Data stored in 200 may be maintained in an LSM tree structure.

본 발명에서 RocksDB는 저장부(200)에 LSM 트리방식으로 저장된 데이터 체계를 의미할 수 있지만, 키 값 기반의 데이터 액세스 장치(10)에서 제어부(300)의 기능을 수행하는 RoclsDB 플랫폼을 의미할 수 있다. 먼저, 키 값 기반의 데이터 액세스 장치(10)는 In-Memory 테이블로 데이터를 입력 받는다. In-Memory 테이블은 memtable(224)과 내부에 저장된 데이터가 데이터의 입력에 의해 영향을 받지 않는 immutable memtable(226)을 포함하는데, memtable에 저장된 데이터의 사이즈가 기 설정된 임계치(threshold)를 초과하는 경우 memtable에 저장된 데이터는 데이터의 입출력에 영향 받지 않는 immutable memtable로 전달된다. 이때 immutable memtable에 저장된 데이터의 사이즈가 미리 설정된 임계치 이상인 경우, 저장부(200)로 플러싱 될 수 있다.In the present invention, RocksDB may mean a data system stored in the storage unit 200 in an LSM tree manner, but may refer to a RoclsDB platform that performs a function of the controller 300 in the data access device 10 based on a key value. have. First, the data access apparatus 10 based on a key value receives data into an in-memory table. The in-memory table includes a memtable (224) and an immutable memtable (226) in which the data stored therein are not affected by the input of the data. When the size of the data stored in the memtable exceeds a predetermined threshold Data stored in memtable is transferred to immutable memtable which is not affected by data input / output. In this case, when the size of data stored in the immutable memtable is greater than or equal to a preset threshold, the data may be flushed to the storage 200.

저장부(200)의 메모리 셀들에 저장된 데이터들은 RocksDB 플랫폼에서 관리될 수 있다. LevelDB 기반의 시스템은 LSM 트리와 같이 데이터를 계층적으로 관리하기 위하여 SST 파일을 사용한다. LevelDB 시스템의 각 레벨(262, 264, 266)은 LSM 트리의 각 트리 성분에 대응되고, 각 레벨의 데이터들은 정렬되어 SST 파일에 저장된다. 본 발명의 저장부(200)의 메모리 셀들은 플래시 기반 메모리 셀들을 포함하고, 따라서, SST 파일을 기반으로 계층적으로 데이터를 관리하는 경우, 효율적인 데이터 쓰기 동작이 가능하다.Data stored in memory cells of the storage unit 200 may be managed by the RocksDB platform. LevelDB based system uses SST file to manage data hierarchically like LSM tree. Each level 262, 264, 266 of the LevelDB system corresponds to each tree component of the LSM tree, and the data of each level is sorted and stored in the SST file. The memory cells of the storage unit 200 of the present invention include flash-based memory cells. Therefore, when data is managed hierarchically based on an SST file, an efficient data writing operation is possible.

LevelDB 기반의 시스템에서 사용하는 SST 파일은 데이터 셋의 최대 최소값을 포함하는 메타 데이터를 포함하고, 메타 데이터는 데이터가 저장된 위치에 관한 정보로서, 블룸 필터 파일과 인덱스 파일을 포함한다. 즉, LevelDB 기반의 시스템은 메모리 셀들에 마련된 특정 블록에 저장된 데이터에 액세스 하기 위하여, 메타 데이터를 인덱스로서 활용하여 액세스 할 수 있다. The SST file used in the LevelDB-based system includes metadata including the maximum minimum value of the data set, and the metadata includes information about a location where the data is stored, and includes a bloom filter file and an index file. That is, a LevelDB-based system can access metadata by using meta data as an index to access data stored in a specific block provided in memory cells.

예를 들어, 저장부(200)는 상기 데이터를 계층적으로 처리하는 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 상기 메모리 셀들에 저장하고, 상기 메모리 셀들에 저장된 데이터들은 적어도 하나의 계층들로 구분되어 상기 계층간 압축(compaction)을 통하여 관리될 수 있다. 키-벨류 스토어에서 압축(compaction)은 상기 적어도 하나의 계층들에서 병렬로 수행되고, 상기 압축은 스레드 수를 고려하여 주기적으로 수행되며, 저장부(200)는 복수의 키-벨류(Key-Value) 쌍을 이용하여 상기 데이터를 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장할 수 있다. For example, the storage unit 200 stores the data in the memory cells in a log structure merged tree method that processes the data hierarchically, and the data stored in the memory cells are stored in at least one layer. It can be divided and managed through the inter-layer compression. In the key-value store, compression is performed in parallel in the at least one layer, and the compression is periodically performed in consideration of the number of threads, and the storage unit 200 includes a plurality of key-values. The data may be stored in a log structure merged tree method using a pair).

본 발명에서 저장부(200)가 복수의 페이지가 마련된 블록들을 포함하는 낸드 플래시 칩 기반의 SSD로 구현되는 경우에, 저장부(200)가 제어부(300)의 제어에 따라 데이터에 액세스하기 위한 블록은 블룸 필터 파일과 인덱스 파일을 포함함은 전술한 바와 같다. 예를 들어, 블룸 필터는 통계적 로직을 이용하여 해당 key의 데이터가 SST파일에 저장되어 있는지 여부를 판단하여 결과를 반환한다. 각 SST 파일의 블룸 필터의 데이터는 메모리에 로딩이 되어있는데, SST 파일에 접근하여 디스크 I/O를 발생시키기 전에 먼저 해당 SST파일에 데이터가 있는지 없는지를 판단한다. 예를 들어, 블룸 필터는 미리 설정된 개수의 해쉬 함수들에서 출력되는 해쉬값들을 이용하여 해당 블록에 요청된 데이터가 있는지 여부를 판단할 수 있다.In the present invention, when the storage unit 200 is implemented as a NAND flash chip-based SSD including a block having a plurality of pages, the storage unit 200 is a block for accessing data under the control of the controller 300. Includes the Bloom filter file and the index file as described above. For example, the bloom filter uses statistical logic to determine whether data of the corresponding key is stored in the SST file and returns the result. The data of the bloom filter of each SST file is loaded into the memory. Before accessing the SST file and generating disk I / O, it is first determined whether there is data in the SST file. For example, the bloom filter may determine whether there is data requested in a corresponding block by using hash values output from a predetermined number of hash functions.

예를 들어, 키 값 기반의 데이터 액세스 장치(10)는 블록 내의 SST 파일에 데이터가 있는 것으로 판단이 되면, 인덱스 파일을 검색한다. 인덱스 파일은 해당 키 값에 해당하는 데이터가 블록 내의 어느 위치에 있는지에 대한 위치 정보(파일 포인터, 오프셋 정보)를 가지고 있다. 즉 저장부(200)의 각 메모리 셀들에 포함된 복수의 블록은 블룸 필터를 포함하고, 제어부(300)로 하여금 각 블록에 요청된 데이터가 있는지 여부를 판단하게 하며, 데이터가 있는 것으로 판단이 되면, 인덱스 파일을 포함하여 제어부(300)로 하여금 블록 내 어느 위치에 데이터가 있는지를 검색하게 할 수 있다.For example, when it is determined that there is data in the SST file in the block, the key value-based data access device 10 searches for the index file. The index file has position information (file pointer and offset information) about where in the block the data corresponding to the key value is located. That is, the plurality of blocks included in each of the memory cells of the storage unit 200 include a bloom filter, and the controller 300 determines whether or not the requested data exists in each block. Including the index file, the control unit 300 may allow the controller 300 to search where the data is located.

저장부(200)내 마련되어 데이터들이 저장된 블록의 SST 파일은 점차 사이즈가 커질 수 있고, 이러한 경우 키 값 기반의 데이터 액세스 장치(10)는 전술한 압축(Compaction)을 이용하여 목표 레벨의 SST 파일을 다음 레벨의 SST 파일(예를 들어, 262에서 264 또는 264에서 266)에 통합하고, 이러한 방식으로 저장부(200)에 저장된 데이터 들의 수와 크기를 조절할 수 있다. 키 값 기반의 데이터 액세스 장치(10)는 전술한 압축(Compaction)을 기반으로 RocksDB 가 데이터에 더욱 빨리 접근할 수 있도록 한다. The SST file of a block provided in the storage unit 200 and storing data may be gradually enlarged. In this case, the data access device 10 based on the key value may use the above-mentioned compression to generate the SST file of the target level. It can be integrated into the next level of SST file (for example, 262 to 264 or 264 to 266), and in this way, the number and size of data stored in the storage 200 can be adjusted. The key value based data access device 10 allows RocksDB to access data faster based on the above-mentioned compression.

특히, 본 발명에서 압축(Compaction)은 major compaction과 major compaction을 복수의 sub-compaction으로 나누어 병렬 처리될 수 있고, 이때 Sub-compaction에서, 압축 범위는 스레드 수로 나누어지고, 각 스레드는 스몰 compaction을 할당된 키-벨류 쌍(KeyValuePairs)로 처리할 수 있다. 저장부(200)에 저장된 데이터를 관리하는 체계로서, RocksDB 는 멀티-스레드된 압축(compaction)과 블록(Block) 기반 데이터 액세스를 통하여 다른 키-벨류 저장 장치보다 뛰어난 성능을 달성할 수 있다. 다만, 전술한 특징에도 불구하고 종래의 RocksDB의 Multi-get은 SSD의 내부 병렬성을 완전히 이용하지 못하는 한계가 있었음은 전술한 바와 같다. 도 3 및 도 4를 참조하여 설명한다.In particular, in the present invention, the compaction may be processed by dividing the major compaction and the major compaction into a plurality of sub-compactions. In this case, in the sub-compaction, the compression range is divided by the number of threads, and each thread is assigned a small compaction. Can be treated as key-value pairs (KeyValuePairs). As a system for managing data stored in the storage unit 200, RocksDB may achieve superior performance than other key-value storage devices through multi-threaded compression and block-based data access. However, despite the above-described features, the conventional RocksDB multi-get has a limitation in that it cannot fully utilize the internal parallelism of the SSD. It demonstrates with reference to FIG. 3 and FIG.

제어부(300)는 저장 데이터 리스트 생성부(320) 및 반환 데이터 리스트 저장부(340)를 포함한다. 예를 들어, 제어부(300)는 메모리 셀들에 저장된 데이터의 위치 정보를 병렬적으로 요청하여 수신하고, 상기 수신된 위치 정보로부터 저장 데이터 리스트를 생성하며, 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스한다. The control unit 300 includes a storage data list generation unit 320 and a return data list storage unit 340. For example, the controller 300 requests and receives location information of data stored in memory cells in parallel, generates a stored data list from the received location information, and stores the generated stored data list and the key list. Compare and access data stored in the memory cells.

예를 들어, 제어부(300)가 사용자로부터 입력받은 키 리스트를 이용하여 액세스 하고자 하는 데이터가 저장된 저장부(200)는 플래시 메모리 기반 저장 장치로서 SSD로 마련될 수 있다. SSD는 복수의 플레인을 포함하는 플래시 칩들, 프로세서 및 램이 마련된 SSD 컨트롤러를 포함한다. 도 3에 도시된 SSD의 구조에서 SSD 컨트롤러는 본 발명의 제어부(300)에, 복수의 플래시 칩들이 마련된 영역은 본 발명의 저장부(200)로 마련될 수 있지만, SSD 컨트롤러는 저장부(200)에 통합되어 구현될 수 있음은 물론이다. For example, the storage unit 200 storing data to be accessed by the controller 300 using a key list input from a user may be provided as an SSD as a flash memory based storage device. The SSD includes a flash chip including a plurality of planes, an SSD controller provided with a processor and a RAM. In the structure of the SSD shown in FIG. 3, the SSD controller may be provided in the controller 300 of the present invention, and an area in which a plurality of flash chips are provided may be provided as the storage unit 200 of the present invention. Of course, it can be integrated into the implementation.

제어부(300)는 통하여 멀티 I/O REQUEST를 저장부(200)에 포함된 복수의 메모리 셀들(플래시 칩, 272 274)으로 전송하고, 메모리 셀들은 멀티플 채널을 이용하여 제어부(300)로 데이터를 전송할 수 있다. 제어부(300)가 액세스 하는 데이터가 저장된 저장부(200)의 일 실시 예로 SSD는 페이지 단위 블록으로 데이터를 저장하며, 각각의 페이지 사이즈는 4~8KB로 마련될 수 있고, 복수의 페이지들은 하나의 블록을 형성한다. 블록 기반의 구조를 가지는 SSD는 페이지 단위로 데이터를 처리할 수 있고, 삭제는 페이지 단위가 아니라 블록단위로만 가능하다. 전술한 SSD의 내부 병렬성으로 인하여 제어부(300)가 저장부(200)에 페이지 기반 데이터 액세스를 시도할 때 시퀀셜(Sequential) 접근이 효율적이다.The control unit 300 transmits the multi I / O REQUEST to a plurality of memory cells (flash chip) 272 274 included in the storage unit 200, and the memory cells transmit data to the control unit 300 using multiple channels. Can transmit According to an embodiment of the storage unit 200 in which data accessed by the control unit 300 is stored, the SSD stores data in page unit blocks, each page size may be provided as 4 to 8 KB, and the plurality of pages may be one Form a block. SSDs with a block-based structure can process data in units of pages, and deletion can only be done in units of blocks, not in units of pages. Due to the internal parallelism of the SSD, sequential access is efficient when the controller 300 attempts to access page-based data to the storage 200.

본 발명에서 제어부(300)는 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface, PSYNC I/O)를 이용하여 일괄 수신한다. 예를 들어, 제어부(300)가 이용하는 오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트 중 적어도 하나를 포함할 수 있다. 또한, 상기 병렬 동기 I/O 인터페이스를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고, 상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬될 수 있다. 도 5를 참조하여 설명한다.In the present invention, the control unit 300 collectively receives the position information of the data stored in the memory cells using a Parallel Synchronous I / O Interface (PSYNC I / O) operating based on an operation variable. For example, the operation variable used by the controller 300 may include at least one of a buffer, an I / O parameter, and a pointer set associated with the key values. In addition, the location information collectively received using the parallel synchronous I / O interface includes an I / O request set for requesting input and output of data, the I / O request set according to the location of data stored in the memory cells. Can be ordered sequentially. It demonstrates with reference to FIG.

종래, 키 값 기반의 데이터 액세스 장치가 사용되는 RocksDB에서 SSD의 내부 병렬성을 이용하기 위해, PSYNC I/O인터페이스를 이용하여 단일의 시스템 콜에서 멀티 I/O요청(I/O Set)을 전송하는 기술들이 연구되었으나, 종래의 기술은 복수의(Multiple) I/O요청을 PSYNC I/O를 이용하여 멀티로 전달할 뿐, SSD의 페이지 기반의 블록들에 데이터 액세스를 시도함에 있어서 랜덤하게 액세스를 시도하였다. 다만 저장부(200)가 플래시 메모리 기반 저장 장치인 경우, 페이지 기반 블록 구조로 데이터를 저장하는 특성상, 시퀀셜 접근이 더 효율적이기 때문에, 종래 기술은 SSD의 내부 병렬성을 완전히 이용하지 않았다. 따라서, 여전히, 블록 기반 데이터 구조에서 읽기 동작의 성능 개선을 위한 여지가 존재함은 전술한 바와 같다.Conventionally, in order to use the internal parallelism of an SSD in RocksDB where a key value based data access device is used, the PSYNC I / O interface is used to transmit multiple I / O requests in a single system call. While the techniques have been studied, the conventional technique merely delivers multiple I / O requests to the multi using PSYNC I / O, and attempts random access in attempting to access data in the page-based blocks of the SSD. It was. However, when the storage unit 200 is a flash memory-based storage device, since the sequential access is more efficient in view of storing data in a page-based block structure, the conventional technology does not fully utilize the internal parallelism of the SSD. Thus, there is still room for improving the performance of read operations in block-based data structures as described above.

종래의 키 값 기반의 데이터 액세스 장치(10)는 목표로 하는 키 리스트에 도달할 때까지 Multiget method를 통하여 get 오퍼레이션(operation)을 반복하여 데이터에 접근하고, Get Method는 바이너리 서치(binary search)를 이용하여 수행되며, Index Iterator 및 Block iterator를 이용하여 전술한 블록 내의 SST파일에 마련된 데이터에 액세스 하였다. 다만, 종래의 종래의 키 값 기반의 데이터 액세스 장치(10)는 한번에 하나의 I/O 요청만을 전송하고, SSD에 저장된 데이터들에 액세스 함에 있어, 하나의 I/O 요청에 따른 수 많은 랜덤 패턴으로 액세스 하였기 때문에, SSD의 성능을 완전히 향상시킬 수 없었다. 특히, 종래의 키 값 기반의 데이터 액세스 장치(10)는 블록 사이즈가 SSD의 페이지 사이즈보다 작은 경우, 작은 사이즈의 데이터로 인한 내부 단편(Internal fragmentation)의 증가 문제 때문에, 비효율성을 야기하였다. The conventional key value-based data access apparatus 10 accesses data by repeating a get operation through a multiget method until the target key list is reached, and the get method performs a binary search. It is performed using the Index Iterator and the Block Iterator to access the data provided in the SST file in the aforementioned block. However, the conventional conventional key value-based data access device 10 transmits only one I / O request at a time and accesses data stored in the SSD, so that a large number of random patterns according to one I / O request are provided. Because of the access, the performance of the SSD could not be fully improved. In particular, the conventional key value-based data access device 10 causes inefficiency due to an increase in internal fragmentation due to small sized data when the block size is smaller than the page size of the SSD.

저장 데이터 리스트 생성부(320)는 수신된 위치 정보를 이용하여 상기 로그 구조 병합 트리 방식으로 상기 메모리 셀들에 저장된 데이터의 하위 계층으로부터 순차적으로 상기 저장 데이터 리스트를 생성한다. 예를 들어, 저장 데이터 리스트 생성부(320)가 이용하는 위치 정보는 저장부(200)의 메모리 셀들에 저장된 데이터의 위치에 관한 정보로서 블룸 필터 파일, 인덱스 파일, 파일 포인터 및 오프셋 정보를 포함할 수 있다. 본 발명의 제어부(300)는 저장 데이터 리스트 생성부(320)를 통하여 저장부(200)의 메모리 셀들에 저장된 전체 데이터 목록인 저장 데이터 리스트를 포함하고, 이를 키 리스트와 비교한다.The stored data list generator 320 sequentially generates the stored data list from the lower layers of the data stored in the memory cells using the log structure merging tree method using the received position information. For example, the location information used by the storage data list generator 320 may include a bloom filter file, an index file, a file pointer, and offset information as information about a location of data stored in memory cells of the storage 200. have. The control unit 300 of the present invention includes a stored data list which is a list of all data stored in the memory cells of the storage unit 200 through the stored data list generation unit 320 and compares the stored data list with the key list.

반환 데이터 리스트 저장부(340)는 생성된 저장 데이터 리스트와 상기 키 리스트를 상기 데이터의 하위 계층으로부터 순차적으로 비교하여 상기 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장한다. 예를 들어, 반환 데이터 리스트 저장부(340)는 저장 데이터 리스트와 키 리스트를 비교함에 있어, 데이터가 계층 구조로 저장된 저장부(200)의 하위 계층에 대응되는 저장 데이터 리스트의 목록부터 비교를 시작하여 최상위 계층에 대응되는 저장 데이터 리스트의 목록까지 순차로 비교할 수 있다. 도 6을 참조하여 설명한다.The return data list storage unit 340 sequentially compares the generated stored data list with the key list from a lower layer of the data and stores the data stored at the position indicated by the position information corresponding to the key list in the return data list. do. For example, in comparing the stored data list and the key list, the return data list storage unit 340 starts the comparison from the list of the stored data list corresponding to the lower layer of the storage unit 200 in which data is stored in a hierarchical structure. Thus, the list of stored data lists corresponding to the top layer may be sequentially compared. It demonstrates with reference to FIG.

본 발명의 키 값 기반의 데이터 액세스 장치(10)는 하기의 Multipath Multiget Method알고리즘들을 이용함으로서, 저장부(200)가 플래시 메모리 기반 저장 장치로 마련되는 경우, 내부 병렬성을 완전히 이용할 수 있다. Multipath Multiget Method 알고리즘들은 하기와 같다.The key value-based data access device 10 of the present invention can fully utilize internal parallelism when the storage unit 200 is provided as a flash memory-based storage device by using the following Multipath Multiget Method algorithms. Multipath Multiget Method algorithms are as follows.

Figure pat00001
Figure pat00001

상기 표1의 알고리즘 1은 PSYNC I/O 과정을 나타내는 알고리즘이다. 여기에서, PSYNC I/O 인터페이스를 위한 오퍼레이션 변수가 미리 마련될 수 있다.Algorithm 1 of Table 1 is an algorithm representing a PSYNC I / O process. Here, operation variables for the PSYNC I / O interface may be prepared in advance.

오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트를 포함한다. The operation variable includes a buffer, an I / O parameter and a set of pointers associated with the key values.

Figure pat00002
Figure pat00002

상기 표2의 알고리즘 2는 본 발명의 키 값 기반의 데이터 액세스 장치(10)가 사용하는 Multipath Multiget Method 과정을 나타낸다. 키 값 기반의 데이터 액세스 장치(10)가 사용하는 상기 표2의 알고리즘 2는 메모리에서 디스크 접근을 위한 메타데이터 수집(7~16 라인), 수집된 메타데이터의 분류(17라인) 및 I/O 요청 알고리즘(18~28 라인)을 포함한다.Algorithm 2 of Table 2 illustrates a multipath multiget method process used by the key value-based data access device 10 of the present invention. Algorithm 2 of Table 2 used by the key value based data access device 10 includes metadata collection for disk access in memory (lines 7 to 16), classification of collected metadata (lines 17), and I / O. Contains the request algorithm (lines 18-28).

먼저 본 발명의 Multipath Multiget Method 알고리즘을 이용하는 제어부(300)는 데이터 액세스를 위한 위치 정보를 수집한다. 데이터 액세스를 위한 위치 정보는 파일 디스크립터, 오프셋, 데이터의 크기에 대한 정보 및 기타 I/O 요청 셋을 포함한다. 본 발명의 저장부(200)의 데이터들은 키 값들의 최소 또는 최대값을 고려한 키 범위(KeyRange)가 미리 할당된 메모리 셀들에 구분되어 미리 저장되며, 보다 상세하게는 메모리 셀들에 마련된 내부 블록의 SST 파일 각각은 키 값의 크기에 따른 키 범위(KeyRange)가 미리 할당되어 있다. First, the controller 300 using the multipath multiget method algorithm of the present invention collects location information for data access. Location information for data access includes file descriptors, offsets, information about the size of the data, and other sets of I / O requests. The data of the storage unit 200 of the present invention are stored in advance by dividing a key range (KeyRange) in consideration of minimum or maximum values of key values into pre-allocated memory cells, and more specifically, SST of an internal block provided in the memory cells. Each file is pre-assigned a key range (KeyRange) according to the size of the key value.

본 발명의 제어부(300)는 일괄 수신된 전술한 파일 디스크립터, 오프셋 및 기타 I/O 요청 정보를 포함하는 위치 정보를 데이터의 위치에 따라 순차로 정렬하여 이용함으로서, 저장부(200)의 메모리 셀들에 저장된 데이터에 순차로 액세스 할 수 있다. 보다 상세하게는 본 발명의 제어부(300)는 PSYNC I/O를 이용하여 일괄 수신된 위치 정보 중 I/O 요청 셋을 데이터의 위치에 따라 순차로 정렬하여 이용함으로서 저장부(200)의 메모리 셀들에 저장된 데이터에 순차로 액세스 할 수 있다.The control unit 300 of the present invention uses the location information including the above-described file descriptors, offsets, and other I / O request information sequentially arranged according to the location of the data, thereby using the memory cells of the storage unit 200. The data stored in can be accessed sequentially. More specifically, the controller 300 of the present invention uses the I / O request set among the location information collectively received using PSYNC I / O in order according to the location of the data to sequentially use the memory cells of the storage unit 200. The data stored in can be accessed sequentially.

도 2는 도 1의 실시 예에서 저장부(200)에 로그 병합 트리 구조로 저장된 데이터를 나타낸다. 본 발명의 저장부(200)는 복수의 메모리 셀들에 저장된 데이터를 계층 구조를 가지는 트리 성분(Tree Component)으로 데이터를 관리하는데, 각 계층간 트리 성분은 각 트리 성분에 저장된 데이터 사이즈의 크기가 미리 설정된 임계치 이상인 경우 하위 트리 성분으로 합병(merge)됨은 전술한 바와 같다. LSM트리를 베이스 트리 알고리즘으로 사용하는 LevelDB 또는 RocksDB와 같은 키-벨류 스토어에서는 In-Memory 영역에서 데이터를 입력 받고, 해당 Immutable Memtable의 데이터가 차면 저장부(200) 또는 디스크 스토리지로 데이터를 플러싱한다. 2 illustrates data stored in the storage 200 in a log merge tree structure in the embodiment of FIG. 1. The storage unit 200 manages data stored in a plurality of memory cells as a tree component having a hierarchical structure, and the size of the data stored in each tree component is preliminary. If the value is equal to or greater than the set threshold, merging into lower tree components is as described above. In a key-value store such as LevelDB or RocksDB, which uses an LSM tree as a base tree algorithm, data is input from an in-memory area, and when data of an immutable memtable is filled, data is flushed to the storage unit 200 or disk storage.

본 발명에서 저장부(200)는 복수의 블록들이 마련된 메모리 셀들을 포함하고, 각각의 블록은 SST파일을 포함하여 데이터를 계층적으로 저장함은 전술한 바와 같다. 저장부(200)의 메모리 셀들은 키 값들의 크기에 따른 키 범위가 미리 할당되어 데이터를 구분하여 저장하는데, 보다 상세하게는 메모리 셀들에 마련된 각각의 블록들은 데이터의 최대 최소값을 고려하여 설정된 키 범위가 미리 할당되어, 데이터를 구분하여 저장할 수 있다. 예를 들어, L1에서 file1로 표기된 SST 파일 1은 100,200의 키 범위(Key Range)를 가질 수 있다. In the present invention, the storage unit 200 includes memory cells in which a plurality of blocks are provided, and each block hierarchically stores data including an SST file as described above. In the memory cells of the storage unit 200, a key range according to the size of key values is pre-assigned to store data separately. More specifically, each block provided in the memory cells is configured in consideration of a maximum minimum value of data. Is pre-assigned, allowing data to be stored separately. For example, the SST file 1 indicated by file1 in L1 may have a key range of 100,200.

도 3은 도 1의 실시예에서 제어부(300)의 확대 블록도이다.3 is an enlarged block diagram of the controller 300 in the embodiment of FIG. 1.

제어부(300)는 저장 데이터 리스트 생성부(320) 및 반환 데이터 리스트 저장부(340)를 포함한다. 예를 들어, 제어부(300)는 메모리 셀들에 저장된 데이터의 위치 정보를 병렬적으로 요청하여 수신하고, 상기 수신된 위치 정보로부터 저장 데이터 리스트를 생성하며, 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스함은 전술한 바와 같으므로 생략한다. The control unit 300 includes a storage data list generation unit 320 and a return data list storage unit 340. For example, the controller 300 requests and receives location information of data stored in memory cells in parallel, generates a stored data list from the received location information, and stores the generated stored data list and the key list. In comparison, accessing data stored in the memory cells is the same as described above, and thus will be omitted.

도 4는 플래시 메모리 기반 저장 장치에서 저장된 데이터의 구조를 나타내는 개념도이다.4 is a conceptual diagram illustrating a structure of data stored in a flash memory based storage device.

SSD는 SSD 컨트롤러(300) 및 복수의 플래시 칩을(272, 274)를 포함할 수 있다. 하지만 본 발명에서 SSD 컨트롤러는 제어부(300), 복수의 플래시 칩이 포함된 영역은 저장부(200)로 구현될 수 있음은 전술한 바와 같다. 저장부(200)의 메모리 셀들은 복수의 블록들을 포함하고, 계층으로 데이터를 구분하여 저장할 수 있다. 예를 들어, 저장부(200)의 메모리 셀들에 포함된 하나의 블록은 SST파일을 포함하고, SST파일은 블룸 필터 파일과 인덱스 파일을 포함하여 블록 내 저장된 데이터에 액세스 할 수 있다.The SSD may include an SSD controller 300 and a plurality of flash chips 272 and 274. However, as described above, in the present invention, the SSD controller may be implemented as the controller 300 and the region including the plurality of flash chips as the storage 200. The memory cells of the storage unit 200 may include a plurality of blocks and may store data in layers. For example, one block included in the memory cells of the storage unit 200 may include an SST file, and the SST file may include a bloom filter file and an index file to access data stored in the block.

도 5는 종래의 키 값 기반의 데이터 액세스 장치에서 수행되는 데이터 액세스 과정을 나타낸다.5 shows a data access procedure performed in a conventional key value based data access apparatus.

종래의 키 값 기반의 데이터 액세스 장치는 사용자(20)로부터 적어도 하나의 키 값을 포함하는 키 리스트를 입력 받고, 입력된 키 리스트를 이용하여 저장부(200)에 저장된 데이터에 단일의 순차 I/O 요청들을 이용하여 반복적인 랜덤 접근 패턴으로 액세스 하였다. SSD는 페이지 기반 블록들을 이용하여 데이터를 저장하기 때문에 데이터에 접근시 시퀀셜(Sequential) 패턴으로 액세스 하는 것이 효율적인데, 종래의 키 값 기반의 데이터 액세스 장치는 단일의 I/O요청을 이용하여 데이터에 접근할 뿐만 아니라, 랜덤 액세스 패턴으로 접근하였기 때문에 SSD의 성능을 온전히 이용할 수 없었음은 전술한 바와 같다. A conventional key value-based data access device receives a key list including at least one key value from a user 20, and uses a single key I / O to store data stored in the storage unit 200 using the input key list. The O requests are used to access a repetitive random access pattern. Since SSD uses page-based blocks to store data, it is efficient to access the data in sequential patterns when accessing data. Conventional key value-based data access devices use a single I / O request to access data. As described above, the performance of the SSD was not fully utilized since the access was performed in a random access pattern.

도 6은 본 발명의 일 실시 예에 따른 키 값 기반의 데이터 액세스 장치에서 수행되는 데이터 액세스 과정을 나타낸다.6 illustrates a data access process performed in a key value based data access apparatus according to an embodiment of the present invention.

본 발명의 키 값 기반의 데이터 액세스 장치(10)는 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface, PSYNC I/O)를 이용하여 일괄 수신한다. 또한, 키 값 기반의 데이터 액세스 장치(10)가 병렬 동기 I/O 인터페이스(PSYNC I/O)를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고, 상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬될 수 있다. The key value-based data access apparatus 10 of the present invention uses a parallel synchronous I / O interface (PSYNC I / O) that operates based on an operation variable of position information of data stored in memory cells. Receive a batch. In addition, the location information received by the key value-based data access device 10 using the parallel synchronous I / O interface (PSYNC I / O) collectively includes an I / O request set for requesting input / output of data. I / O request sets may be sequentially arranged according to positions of data stored in the memory cells.

따라서, 본 발명의 키 값 기반의 데이터 액세스 장치(10)는 RocksDB에서 SSD의 내부 병렬성을 이용하기 위해, PSYNC I/O인터페이스를 이용하여 단일의 시스템 콜에서 멀티 I/O요청(I/O Set)을 전송함과 동시에, SSD의 페이지 기반의 블록들에 데이터 액세스를 시도함에 있어서 시퀀셜 액세스함으로서 키 값 기반의 데이터 액세스 장치의 성능을 향상시킬 수 있다. 키 값 기반의 데이터 액세스 장치(10)는 플래시 메모리 기반 저장 장치를 저장부로 포함하는 경우 페이지 기반 블록 구조로 데이터를 저장하는 특성상, 효율적인 시퀀셜 액세스를 통하여 완전히 SSD의 내부 병렬성을 이용한다. Accordingly, the key value-based data access device 10 of the present invention uses the PSYNC I / O interface to utilize the internal parallelism of the SSD in RocksDB. ), And sequential access in attempting to access data in the page-based blocks of the SSD, it is possible to improve the performance of the key value-based data access device. When the key value-based data access device 10 includes a flash memory-based storage device as a storage unit, the data access device 10 uses the internal parallelism of the SSD completely through efficient sequential access.

도 7은 멀티겟 수의 변화에 따라 측정된 키 값 기반의 데이터 검색 장치(10)의 성능을 나타낸다.7 illustrates the performance of the data retrieval apparatus 10 based on key values measured according to the change in the number of multi-gets.

종래 Original Multiget 방법과 달리 Sequemtial Multiget 방법을 사용하는 키 값 기반의 데이터 액세스 장치(10)의 성능을 RocksDB 벤치마크를 이용하여 측정하였다. 디스크 성능 차이를 구분하기 위하여 측정 시 OS buffer를 disabled로 설정하였고, 구체적인 하드웨어 및 소프트웨어의 설정은 하기와 같다.Unlike the conventional Original Multiget method, the performance of the key value-based data access device 10 using the Sequemtial Multiget method was measured using the RocksDB benchmark. In order to distinguish the disk performance difference, the OS buffer was set to disabled at the time of measurement, and specific hardware and software settings are as follows.

Figure pat00003
Figure pat00003

상기 표 3은 하드웨어 설정을 나타낸다. 키 값 기반의 데이터 액세스 장치(10)의 성능을 측정하기 위하여 CPU는 Interl Core i7-6700K CPU @ 4.00 GHz를 사용하였고, 64 GB의 메모리 및 Samsung 850 Pro 512 GB를 사용하여 측정을 실시 하였다.Table 3 above shows the hardware configuration. In order to measure the performance of the key value-based data access device 10, the CPU used Interl Core i7-6700K CPU @ 4.00 GHz, and measured using 64 GB of memory and Samsung 850 Pro 512 GB.

Figure pat00004
Figure pat00004

상기 표 4는 소프트웨어 설정을 나타낸다. 키 값 기반의 데이터 액세스 장치(10)의 성능을 측정하기 위하여 RocksDB 버전 4.4.1 환경에서 벤치마크 툴을 사용하였고, RocksDB의 성능 측정을 위하여 구체적으로는 fillseq, fillrandom 및 multiget 벤치마크를 사용하였다. 측정을 위하여 키 값은 16 byte 랜덤 정수로 설정하였고, 각 키당 벨류는 512 bytes로 설정하였으며, 플래시 페이지의 사이즈가 8KB임을 고려하여 8KB 사이즈의 블록을 사용하였다. 도 7의 차트들은 multiget 엔트리(entries)의 범위는 1000~1000000으로 설정하였고, fetch 사이즈는 8MB~8GB로 설정하였다. 도 7(a) 및 도 7(c)에서 보면, Sequemtial Multiget(704)을 이용하는 본 발명의 키 값 기반의 데이터 액세스 장치(10)는 종래의 기법(702) 보다 Elapsed timse이 낮게 측정되며, multiget 엔트리가 증가할수록 그 성능차이가 두드러지는 것을 확인할 수 있다. 이러한 성능 차이는 키 값 기반의 데이터 액세스 장치(10)가 정렬된 오프셋 정보를 사용하여 SSD에 시퀀셜 액세스함에 따른 것임은 전술한 바와 같다. 도 7(b) 는 키당 멀티 겟을 분류하는데 걸리는 시간을 나타내는데, 평균적으로 0.1 us가 소모되고 분류하는데 걸리는 시간(sorting cost)에 의한 영향은 데이터량이 증가할수록 미미하다.Table 4 above shows the software settings. In order to measure the performance of the key value based data access device 10, the benchmark tool was used in RocksDB version 4.4.1 environment, and the fillseq, fillrandom, and multiget benchmarks were used to measure the performance of RocksDB. For the measurement, the key value is set to 16 byte random integer, the value for each key is set to 512 bytes, and 8KB block is used considering the size of flash page is 8KB. In the charts of FIG. 7, the range of multiget entries is set to 1000 to 1000000 and the fetch size is set to 8MB to 8GB. 7 (a) and 7 (c), the key value-based data access device 10 of the present invention using the sequemtial multiget 704 has a lower elapsed timse than the conventional technique 702, and has a multiget. As the number of entries increases, the performance difference becomes noticeable. As described above, the difference in performance is due to the sequential access of the key value-based data access device 10 to the SSD using the aligned offset information. FIG. 7 (b) shows the time taken to classify the multi-gets per key. On the average, 0.1 us is consumed and the effect of the sorting cost is negligible as the amount of data increases.

도 8은 멀티겟 비율의 변화에 따라 측정된 키 값 기반의 데이터 검색 장치의 성능을 나타낸다. 도 9는 데이터 블록의 사이즈에 따라 측정된 키 값 기반의 데이터 검색 장치의 성능을 나타낸다.8 shows the performance of the data retrieval device based on the key value measured according to the change of the multi-get ratio. 9 shows the performance of a key value based data retrieval apparatus measured according to the size of a data block.

Figure pat00005
Figure pat00005

여기에서 multiget ratio는 멀티 겟 비율이고, number of multiget keys는 멀티겟(multiget) 키의 수, number of total keys는 총 키의 수를 나타낸다. 키 값 기반의 데이터 액세스 장치(10)의 성능은 멀티 겟 비율(multiget ratio)에 따라 달라질 수 있다. 멀티 겟 비율은 1~100%까지 변화시킴에 있어서, 키 값 기반의 데이터 액세스 장치(10)의 성능은 도 8에 도시된 바와 같다. 벨류 사이즈는 블록 내 페이지의 사이즈와 동일한 8KB로 고정하고, 멀티 겟 비율을 변화시킨 결과, 키 값 기반의 데이터 액세스 장치의 성능을 크게 달라지지 않음을 볼 수 있다. Where multiget ratio is the multi-get ratio, number of multiget keys is the number of multiget keys, and number of total keys is the number of total keys. The performance of the key value based data access device 10 may vary depending on the multiget ratio. In the multi-get ratio varying from 1 to 100%, the performance of the key value based data access device 10 is as shown in FIG. The value size is fixed to 8KB, which is the same as the size of the page in the block, and as a result of changing the multi-get ratio, it can be seen that the performance of the key value-based data access device does not change significantly.

본 발명의 키 값 기반의 데이터 액세스 장치가 이용하는 multi path multi get(MPMG)은 배치(batch)사이즈가 증가할수록, 종래의 multiget 방법을 사용하는 경우보다 더 나은 성능을 나타내었고, 배치(batch) 사이즈가 10000인 경우 본 발명의 MPMG 방법을 이용하는 키 값 기반의 데이터 액세스 장치(10)의 성능을 종래의 multiget 방법을 이용하는 경우보다 100% 향상된 성능을 나타내었다. 본 발명의 키 값 기반의 데이터 액세스 장치(10)는 벨류 사이즈가 256 byte인 경우 종래의 multiget 방법에 비하여 가장 향상된 성능을 나타내었다. 본 발명의 키 값 기반의 데이터 액세스 장치(10)는 많은 수의 멀티플 get operation을 처리하는 경우, 효과적으로 동작하며, 종래의 기법과 달리 multiple batch asynchronous i/o를 이용하기 때문에 플래시 기반 저장 장치의 병렬성을 완전히 이용할 수 있다. 따라서, 키 값 기반의 데이터 액세스 장치(10)는 간단히 디스크 파일에 random 접근 패턴으로 액세스 하던 종래 방법과 달리, 병렬 접근 패턴으로 디스크 파일에 액세스 함으로서, 좀더 많은 수의 multiple i/o 요청을 전송할 수 있는 장점이 있다. 본 발명의 키 값 기반의 데이터 액세스 장치(10)를 이용하는 경우 RocksDB 벤치마크의 쿼리 실행 타임을 80%까지 감소시킬 수 있으며, multiget 엔트리(entry) 사이즈가 클수록 좋은 성능을 나타냄은 전술한 바와 같다.The multipath multi get (MPMG) used by the key value-based data access device of the present invention exhibited better performance than the case of using the conventional multiget method as the batch size increased. Is 10000, the performance of the key value-based data access device 10 using the MPMG method of the present invention is 100% improved compared to the case of using the conventional multiget method. The key value-based data access device 10 of the present invention has the most improved performance compared to the conventional multiget method when the value size is 256 bytes. Key value-based data access device 10 of the present invention operates effectively when processing a large number of multiple get operations, and parallelism of flash-based storage device because it uses multiple batch asynchronous i / o unlike conventional techniques Can be used completely. Accordingly, the key value-based data access device 10 may transmit a larger number of multiple i / o requests by accessing the disk file in a parallel access pattern, unlike the conventional method of simply accessing the disk file in a random access pattern. There is an advantage. When the key value-based data access device 10 of the present invention is used, the query execution time of the RocksDB benchmark can be reduced by 80%, and the larger the multiget entry size, the better the performance is as described above.

도 10은 본 발명의 일 실시 예에 따른 키 값 기반의 데이터 검색 방법의 흐름도를 나타낸다.10 is a flowchart illustrating a key value based data retrieval method according to an embodiment of the present invention.

키 값 기반의 데이터 검색 방법은 키 값 기반의 데이터 검색 장치(10)에서 시계열적으로 수행되는 하기의 단계들을 포함한다. The key value based data retrieval method includes the following steps performed in time series in the key value based data retrieval apparatus 10.

S100에서, 서버(100)는 사용자(20)의 입력에 기초하여 적어도 하나 이상의 키 값들을 포함하는 키 리스트를 입력 받는다. 예를 들어, 서버(100)는 상기 키 값들을 기반으로 동작하는 적어도 하나의 인터페이스(Key Value Operations Interface)를 이용하여 상기 키 리스트를 입력 받을 수 있다. 상기 서버(100)가 이용하는 키 발류 동작 인터페이스는 multiget()으로 마련될 수 있다. 또한, 서버(100)가 입력 받는 키 값들은 저장된 데이터의 위치를 나타내는 이진 시퀀스로 마련될 수 있음은 전술한 바와 같다.In S100, the server 100 receives a key list including at least one key value based on an input of the user 20. For example, the server 100 may receive the key list using at least one Key Value Operations Interface operating based on the key values. The key release operation interface used by the server 100 may be provided by multiget (). In addition, as described above, the key values received by the server 100 may be provided in a binary sequence indicating a location of stored data.

S200에서, 제어부(300)는 데이터를 저장하기 위한 복수의 비휘발성 메모리 셀들에 저장된 상기 데이터의 위치 정보를 병렬적으로 요청한다. 제어부(300)는 복수의 비휘발성 메모리셀들에 저장된 데이터의 위치 정보를 요청함에 있어 PSYNC I/O를 이용할 수 있음은 전술한 바와 같다.In S200, the controller 300 requests position information of the data stored in a plurality of nonvolatile memory cells for storing data in parallel. As described above, the controller 300 may use PSYNC I / O in requesting location information of data stored in the plurality of nonvolatile memory cells.

S300에서, 저장 데이터 리스트 생성부(320)는 위치 정보로부터 상기 메모리 셀들에 저장된 데이터 목록을 나타내는 저장 데이터 리스트를 생성한다. 예를 들어, 저장 데이터 리스트 생성부(320)는 위치 정보를 이용하여 상기 로그 구조 병합 트리 방식으로 상기 메모리 셀들에 저장된 데이터의 하위 계층으로부터 순차적으로 상기 저장 데이터 리스트를 생성할 수 있다. 또한, 저장 데이터 리스트 생성부(320)는 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface)를 이용하여 일괄 수신하고, 상기 오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트 중 적어도 하나를 포함함은 전술한 바와 같다. 여기에서, 병렬 동기 I/O 인터페이스를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고, 상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬될 수 있다.In S300, the storage data list generation unit 320 generates a storage data list indicating a data list stored in the memory cells from the location information. For example, the stored data list generator 320 may sequentially generate the stored data list from lower layers of data stored in the memory cells using the log structure merging tree method using location information. In addition, the storage data list generation unit 320 collectively receives the position information of the data stored in the memory cells using a parallel synchronous I / O interface operating based on an operation variable, and performs the operation. As described above, the variable includes at least one of a buffer, an I / O parameter, and a set of pointers associated with the key values. Here, the location information collectively received using the parallel synchronous I / O interface includes an I / O request set for requesting input and output of data, the I / O request set according to the location of data stored in the memory cells. Can be ordered sequentially.

예를 들어, 본 발명의 메모리 셀들은 상기 데이터 전송을 위한 멀티 채널이 마련된 낸드(nand)형 플래시 메모리를 포함하고, 상기 플래시 메모리는 상기 키 값들의 크기에 따른 키 범위(Key Range)가 미리 할당되어 상기 데이터를 구분하여 저장하는 복수의 블록을 포함할 수 있음은 전술한 바와 같다. 또한, 상기 메모리 셀들은 데이터를 계층적으로 처리하는 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장하고, 상기 저장된 데이터는 적어도 하나의 계층들로 구분되어 상기 계층간 압축(compaction)을 통하여 관리될 수 있음은 전술한 바와 같다.For example, the memory cells of the present invention include a NAND flash memory provided with a multi-channel for the data transfer, and the flash memory is pre-assigned by a key range according to the size of the key values. As described above, it may include a plurality of blocks that classify and store the data. In addition, the memory cells are stored in a log structure merged tree method for processing data hierarchically, and the stored data are divided into at least one layer and managed through the inter-layer compression. It may be as described above.

또한, 상기 블록은 상기 데이터가 블록에 포함되었는지 여부를 해쉬값을 출력으로 가지는 미리 설정된 해쉬 함수를 이용하여 판단하는 블룸 필터 파일 및 상기 블룸 필터 파일에서 데이터가 포함된 것으로 판단되는 경우 상기 데이터가 상기 블록의 어느 위치에 있는지에 관한 오프셋 정보를 출력하는 인덱스 파일을 포함하고, 상기 메모리 셀들은 복수의 키-벨류(Key-Value) 쌍을 이용하여 상기 데이터를 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장할 수 있다. S400에서, 제어부(300)는 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스한다. 제어부(300)가 생성된 저장 데이터 리스트와 키 리스트를 비교하여 저장부(200)에 저장된 데이터에 액세스 하는 구체적인 방법은 전술한 바와 같으므로 생략한다. The block may include the bloom filter file determining whether the data is included in the block using a predetermined hash function having a hash value as an output, and the data is determined to include the data in the bloom filter file. And an index file for outputting offset information regarding a location of a block, wherein the memory cells use a plurality of key-value pairs to log the data into a log structure merged tree. Can be stored in such a way. In S400, the controller 300 compares the generated stored data list with the key list to access data stored in the memory cells. A detailed method of accessing the data stored in the storage 200 by comparing the generated data list with the key list by the controller 300 is as described above, and thus will be omitted.

도 11은 도 10의 실시 예에서 액세스 하는 단계의 확대 흐름도이다.FIG. 11 is an enlarged flowchart of accessing in the embodiment of FIG. 10; FIG.

S420에서, 제어부(300)는 생성된 저장 데이터 리스트와 상기 키 리스트를 상기 데이터의 하위 계층으로부터 순차적으로 비교한다. 예를 들어, 저장부(200)에 저장된 데이터들은 계층 구조로서 LSM트리로 관리되므로, 저장 데이터 리스트 역시 하위 계층에서 상위 계층 방향으로 작성될 수 있다.In S420, the controller 300 sequentially compares the generated stored data list with the key list from a lower layer of the data. For example, since the data stored in the storage unit 200 are managed by the LSM tree as a hierarchical structure, the stored data list may also be created in a lower layer to a higher layer direction.

S440에서, 제어부(300)는 비교 결과에 따라 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장한다. 보다 상세하게는 제어부(300)에 마련된 반환 데이터 리스트 저장부(340)는 비교 결과에 따라 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장한다. 예를 들어, 제어부(300)는 키 리스트와 저장 데이터 리스트를 비교함에 있어 데이터의 최상위 계층까지 비교 후 상기 데이터가 저장된 반환 데이터 리스트를 이용하여 상기 메모리 셀들에 저장된 데이터에 액세스할 수 있다.In S440, the controller 300 stores the data stored at the position indicated by the position information corresponding to the key list in the return data list according to the comparison result. In more detail, the return data list storage unit 340 provided in the control unit 300 stores the data stored at the position indicated by the position information corresponding to the key list in the return data list according to the comparison result. For example, in comparing the key list and the stored data list, the controller 300 may access the data stored in the memory cells by using the return data list in which the data is stored after the comparison to the top layer of the data.

상기 설명된 본 발명의 일 실시예의 방법의 전체 또는 일부는, 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 기록 매체의 형태(또는 컴퓨터 프로그램 제품)로 구현될 수 있다. 여기에서, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)를 포함할 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다.All or part of the method of one embodiment of the present invention described above may be implemented in the form of a computer-executable recording medium (or a computer program product), such as a program module executed by a computer. Here, the computer readable medium may include a computer storage medium (eg, memory, hard disk, magnetic / optical media or solid-state drive, etc.). Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media.

또한, 본 발명의 일 실시예에 따르는 방법의 전체 또는 일부는 컴퓨터에 의해 실행 가능한 명령어를 포함하며, 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다.In addition, all or part of the method according to an embodiment of the present invention includes instructions executable by a computer, the computer program including programmable machine instructions processed by a processor, and a high-level programming language. Language, an object-oriented programming language, an assembly language, or a machine language.

본 명세서에서의 부(means) 또는 모듈(Module)은 본 명세서에서 설명되는 각 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 특정 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수도 있고, 또는 특정 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수 있다. 다시 말해, 부(means) 또는 모듈(Module)은 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다. Means or modules in the present specification may mean hardware capable of performing functions and operations according to each name described in the present specification, and computer program code capable of performing specific functions and operations. It may mean an electronic recording medium, for example, a processor or a microprocessor, on which computer program code capable of performing specific functions and operations may be implemented. In other words, a means or module may mean a functional and / or structural combination of hardware for performing the technical idea of the present invention and / or software for driving the hardware.

따라서 본 발명의 일 실시예에 따르는 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.Thus, a method according to an embodiment of the present invention may be implemented by executing a computer program as described above by a computing device. The computing device may include at least a portion of a processor, a memory, a storage device, a high speed interface connected to the memory and a high speed expansion port, and a low speed interface connected to the low speed bus and the storage device. Each of these components are connected to each other using a variety of buses and may be mounted on a common motherboard or otherwise mounted in a suitable manner.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely illustrative of the technical idea of the present invention, and various modifications, changes, and substitutions may be made by those skilled in the art without departing from the essential characteristics of the present invention. will be. Accordingly, the embodiments disclosed in the present invention and the accompanying drawings are not intended to limit the technical spirit of the present invention but to describe the present invention, and the scope of the technical idea of the present invention is not limited by the embodiments and the accompanying drawings. . The scope of protection of the present invention should be interpreted by the following claims, and all technical ideas within the scope equivalent thereto should be construed as being included in the scope of the present invention.

Claims (20)

사용자의 입력에 기초하여 적어도 하나 이상의 키 값들을 포함하는 키 리스트를 입력 받고, 상기 키 리스트에 따라 액세스된 데이터를 출력하는 서버;
상기 데이터를 저장하기 위한 복수의 비휘발성 메모리 셀들로 구분되는 저장영역을 포함하는 저장부; 및
상기 메모리 셀들에 저장된 데이터의 위치 정보를 병렬적으로 요청하여 수신하고, 상기 수신된 위치 정보로부터 저장 데이터 리스트를 생성하며, 상기 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스 하는 제어부; 를 포함하는 키 값 기반의 데이터 액세스 장치.
A server for receiving a key list including at least one key value based on a user's input and outputting data accessed according to the key list;
A storage unit including a storage area divided into a plurality of nonvolatile memory cells for storing the data; And
Requesting and receiving position information of data stored in the memory cells in parallel, generating a stored data list from the received position information, comparing the generated stored data list with the key list, and storing the stored data in the memory cells A control unit for accessing the control unit; Key value-based data access device comprising a.
제1항에 있어서, 상기 서버는
상기 키 값들을 기반으로 동작하는 적어도 하나의 인터페이스(Key Value Operations Interface)를 이용하여 상기 키 리스트를 입력 받는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 1, wherein the server
And a key list based on at least one Key Value Operations Interface operating based on the key values.
제1항에 있어서,
상기 메모리 셀들은 상기 데이터 전송을 위한 멀티 채널이 마련된 낸드(nand)형 플래시 메모리를 포함하고, 상기 플래시 메모리는 상기 키 값들의 크기에 따른 키 범위(Key Range)가 미리 할당되어 상기 데이터를 구분하여 저장하는 복수의 블록을 포함하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 1,
The memory cells may include a NAND flash memory provided with a multi-channel for data transmission, and the flash memory may be pre-allocated with a key range according to the size of the key values to distinguish the data. Key value-based data access apparatus comprising a plurality of blocks for storing.
제2항에 있어서, 상기 저장부는
상기 데이터를 계층적으로 처리하는 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 상기 메모리 셀들에 저장하고,
상기 메모리 셀들에 저장된 데이터들은 적어도 하나의 계층들로 구분되어 상기 계층간 압축(compaction)을 통하여 관리되는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 2, wherein the storage unit
Storing the data in the memory cells in a log structure merged tree method for hierarchically processing the data;
And data stored in the memory cells are divided into at least one layer and managed through the inter-layer compression.
제4항에 있어서, 상기 제어부는
상기 위치 정보를 이용하여 상기 로그 구조 병합 트리 방식으로 상기 메모리 셀들에 저장된 데이터의 하위 계층으로부터 순차적으로 상기 저장 데이터 리스트를 생성하는 저장 데이터 리스트 생성부; 를 더 포함하고,
상기 생성된 저장 데이터 리스트를 이용하여 상기 메모리 셀들에 저장된 데이터를 액세스하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 4, wherein the control unit
A storage data list generation unit configured to sequentially generate the storage data list from lower layers of data stored in the memory cells in the log structure merging tree manner using the position information; More,
And accessing data stored in the memory cells using the generated stored data list.
제4항에 있어서, 상기 제어부는
상기 생성된 저장 데이터 리스트와 상기 키 리스트를 상기 데이터의 하위 계층으로부터 순차적으로 비교하여 상기 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장하는 반환 데이터 리스트 저장부; 를 더 포함하고,
상기 계층 중 최상위 계층까지 비교 후 상기 반환 데이터 리스트를 상기 서버로 전송하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 4, wherein the control unit
A return data list storage unit for comparing the generated stored data list with the key list sequentially from a lower layer of the data and storing data stored at a position indicated by the position information corresponding to the key list in a return data list; More,
And returning the list of return data to the server after comparing to the highest layer of the layers.
제5항에 있어서, 상기 제어부는
상기 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface)를 이용하여 일괄 수신하고,
상기 오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트 중 적어도 하나를 포함하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 5, wherein the control unit
Collectively receive position information of data stored in the memory cells using a parallel synchronous I / O interface operating based on an operation variable,
And said operation variable comprises at least one of a buffer, an I / O parameter and a set of pointers associated with said key values.
제7항에 있어서,
상기 병렬 동기 I/O 인터페이스를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고,
상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬되는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 7, wherein
The location information collectively received using the parallel synchronous I / O interface includes an I / O request set for requesting input and output of data.
And the I / O request set is sequentially arranged according to the location of data stored in the memory cells.
제3항에 있어서, 상기 블록은
상기 데이터가 블록에 포함되었는지 여부를 해쉬값을 출력으로 가지는 미리 설정된 해쉬 함수를 이용하여 판단하는 블룸 필터 파일 및 상기 블룸 필터 파일에서 데이터가 포함된 것으로 판단되는 경우 상기 데이터가 상기 블록의 어느 위치에 있는지에 관한 오프셋 정보를 출력하는 인덱스 파일을 포함하고,
상기 키 리스트는 상기 데이터의 위치를 나타내는 이진 시퀀스로 마련되는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 3, wherein the block is
If it is determined that the data is included in the bloom filter file and the bloom filter file that determine whether the data is included in the block by using a preset hash function having a hash value as an output, the data is located at any position of the block. Contains an index file that outputs offset information as to whether
And the key list is provided in a binary sequence indicating a position of the data.
제7항에 있어서,
상기 압축(compaction)은 상기 적어도 하나의 계층들에서 병렬로 수행되고, 상기 압축은 스레드 수를 고려하여 주기적으로 수행되며,
상기 저장부는 복수의 키-벨류(Key-Value) 쌍을 이용하여 상기 데이터를 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 장치.
The method of claim 7, wherein
The compaction is performed in parallel in the at least one layers, and the compaction is periodically performed in consideration of the number of threads.
And the storage unit stores the data in a log structure merged tree method using a plurality of key-value pairs.
사용자의 입력에 기초하여 적어도 하나 이상의 키 값들을 포함하는 키 리스트를 입력 받는 단계;
데이터를 저장하기 위한 복수의 비휘발성 메모리 셀들에 저장된 상기 데이터의 위치 정보를 병렬적으로 요청하는 단계;
상기 위치 정보로부터 상기 메모리 셀들에 저장된 데이터 목록을 나타내는 저장 데이터 리스트를 생성하는 단계; 및
상기 생성된 저장 데이터 리스트와 상기 키 리스트를 비교하여 상기 메모리 셀들에 저장된 데이터를 액세스 하는 단계; 를 포함하는 키 값 기반의 데이터 액세스 방법.
Receiving a key list including at least one key value based on a user input;
Requesting location information of the data stored in a plurality of nonvolatile memory cells for storing data in parallel;
Generating a stored data list representing a data list stored in the memory cells from the location information; And
Comparing the generated stored data list with the key list to access data stored in the memory cells; Key value-based data access method comprising a.
제11항에 있어서, 상기 키 리스트를 입력 받는 단계는
상기 키 값들을 기반으로 동작하는 적어도 하나의 인터페이스(Key Value Operations Interface)를 이용하여 상기 키 리스트를 입력 받는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
The method of claim 11, wherein the step of receiving the key list is
And receiving the key list by using at least one Key Value Operations Interface operating based on the key values.
제11항에 있어서,
상기 메모리 셀들은 상기 데이터 전송을 위한 멀티 채널이 마련된 낸드(nand)형 플래시 메모리를 포함하고,
상기 플래시 메모리는 상기 키 값들의 크기에 따른 키 범위(Key Range)가 미리 할당되어 상기 데이터를 구분하여 저장하는 복수의 블록을 포함하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
The method of claim 11,
The memory cells include a nand type flash memory provided with a multi-channel for the data transfer.
The flash memory has a key value-based data access method, characterized in that it comprises a plurality of blocks for pre-allocating the key range according to the size of the key values to store the data separately.
제12항에 있어서, 상기 메모리 셀들은
상기 데이터를 계층적으로 처리하는 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장하고, 상기 저장된 데이터는 적어도 하나의 계층들로 구분되어 상기 계층간 압축(compaction)을 통하여 관리되는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
The method of claim 12, wherein the memory cells
And storing the data hierarchically in a log structure merged tree method, wherein the stored data is divided into at least one layer and managed through the inter-layer compaction. Key value based data access method.
제14항에 있어서, 상기 생성하는 단계는
상기 위치 정보를 이용하여 상기 로그 구조 병합 트리 방식으로 상기 메모리 셀들에 저장된 데이터의 하위 계층으로부터 순차적으로 상기 저장 데이터 리스트를 생성하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
15. The method of claim 14, wherein said generating is
And generating the stored data list sequentially from a lower layer of data stored in the memory cells by using the location information in the log structure merging tree method.
제14항에 있어서, 상기 액세스 하는 단계는
상기 생성된 저장 데이터 리스트와 상기 키 리스트를 상기 데이터의 하위 계층으로부터 순차적으로 비교하는 단계; 및
비교 결과에 따라 키 리스트에 대응되는 상기 위치 정보가 나타내는 위치에 저장된 데이터를 반환 데이터 리스트에 저장하는 단계; 를 더 포함하고,
상기 데이터의 최상위 계층까지 비교 후 상기 데이터가 저장된 반환 데이터 리스트를 이용하여 상기 메모리 셀들에 저장된 데이터에 액세스 하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
15. The method of claim 14 wherein the accessing step is
Sequentially comparing the generated stored data list and the key list from a lower layer of the data; And
Storing data stored at a location indicated by the location information corresponding to the key list in a return data list according to the comparison result; More,
And accessing the data stored in the memory cells by using a return data list in which the data is stored after comparing to the uppermost layer of the data.
제15항에 있어서, 상기 생성하는 단계는
상기 메모리 셀들에 저장된 데이터의 위치 정보를 오퍼레이션 변수를 기반으로 동작하는 병렬 동기 I/O 인터페이스(Parallel Synchronous I/O Interface)를 이용하여 일괄 수신하고,
상기 오퍼레이션 변수는 버퍼, I/O 파라미터 및 상기 키 값들에 연관된 포인터 세트 중 적어도 하나를 포함하는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
The method of claim 15, wherein the generating step
Collectively receive position information of data stored in the memory cells using a parallel synchronous I / O interface operating based on an operation variable,
And said operation variable comprises at least one of a buffer, an I / O parameter and a set of pointers associated with said key values.
제17항에 있어서,
상기 병렬 동기 I/O 인터페이스를 이용하여 일괄 수신된 위치 정보는 데이터의 입출력을 요청하는 I/O 요청 셋을 포함하고,
상기 I/O 요청 셋은 상기 메모리 셀들에 저장된 데이터의 위치에 따라 순차로 정렬되는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
The method of claim 17,
The location information collectively received using the parallel synchronous I / O interface includes an I / O request set for requesting input and output of data.
And the I / O request set is sequentially arranged according to the location of data stored in the memory cells.
제13항에 있어서, 상기 블록은
상기 데이터가 블록에 포함되었는지 여부를 해쉬값을 출력으로 가지는 미리 설정된 해쉬 함수를 이용하여 판단하는 블룸 필터 파일 및 상기 블룸 필터 파일에서 데이터가 포함된 것으로 판단되는 경우 상기 데이터가 상기 블록의 어느 위치에 있는지에 관한 오프셋 정보를 출력하는 인덱스 파일을 포함하고,
상기 메모리 셀들은 복수의 키-벨류(Key-Value) 쌍을 이용하여 상기 데이터를 로그 구조 병합 트리(Log Structure Merged Tree) 방식으로 저장하며,
상기 키 리스트는 상기 데이터의 위치를 나타내는 이진 시퀀스로 마련되는 것을 특징으로 하는 키 값 기반의 데이터 액세스 방법.
The method of claim 13, wherein the block is
If it is determined that the data is included in the bloom filter file and the bloom filter file that determine whether the data is included in the block by using a preset hash function having a hash value as an output, the data is located at any position of the block. Contains an index file that outputs offset information as to whether
The memory cells store the data in a log structure merged tree method using a plurality of key-value pairs.
And the key list is provided as a binary sequence indicating a position of the data.
프로세서에 의해 실행되는 것을 통하여 제11항 내지 제19항 중 어느 한 항에 기재된 키 값 기반의 데이터 액세스 방법을 실현하는 컴퓨터에서 판독 가능한 기록매체에 저장된 프로그램.A program stored in a computer-readable recording medium which realizes the key value-based data access method according to any one of claims 11 to 19 through execution by a processor.
KR1020180016169A 2018-02-09 2018-02-09 Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof KR102034833B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180016169A KR102034833B1 (en) 2018-02-09 2018-02-09 Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof
PCT/KR2018/012252 WO2019156309A1 (en) 2018-02-09 2018-10-17 Key-value-based data access device and method using internal parallelism of flash storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180016169A KR102034833B1 (en) 2018-02-09 2018-02-09 Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof

Publications (2)

Publication Number Publication Date
KR20190100537A true KR20190100537A (en) 2019-08-29
KR102034833B1 KR102034833B1 (en) 2019-10-21

Family

ID=67548949

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180016169A KR102034833B1 (en) 2018-02-09 2018-02-09 Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof

Country Status (2)

Country Link
KR (1) KR102034833B1 (en)
WO (1) WO2019156309A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210058118A (en) * 2019-11-13 2021-05-24 인하대학교 산학협력단 Casedb: low-cost put-intensive key-value store for edge computing
KR102315070B1 (en) * 2020-07-31 2021-10-20 인하대학교 산학협력단 Key-value data orchestration system on edge computing environment
KR20210135776A (en) * 2020-05-06 2021-11-16 인하대학교 산학협력단 Deduplication adapted casedb for edge computing
WO2022065577A3 (en) * 2020-09-25 2022-06-16 연세대학교 산학협력단 Method for offloading disk scan operation to gpu in write-optimized database

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11250015B2 (en) 2020-02-07 2022-02-15 Coupang Corp. Systems and methods for low-latency aggregated-data provision
CN112699092B (en) * 2021-01-13 2023-02-03 浪潮云信息技术股份公司 Method for storing big value data by RocksDB
CN112667644B (en) * 2021-01-20 2023-02-21 浪潮云信息技术股份公司 Hybrid index memory database storage engine management method
US20230017732A1 (en) 2021-07-16 2023-01-19 Samsung Electronics Co., Ltd. Key packing for flash key value store operations
CN113792020A (en) * 2021-08-02 2021-12-14 惠州Tcl云创科技有限公司 Data processing method, device, terminal and storage medium
CN116414304B (en) * 2022-12-30 2024-03-12 蜂巢科技(南通)有限公司 Data storage device and storage control method based on log structured merging tree

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100121389A (en) 2009-05-08 2010-11-17 삼성전자주식회사 Storage device based on a flash memory and user device including the same
KR20140112717A (en) * 2013-03-14 2014-09-24 삼성전자주식회사 Data Storage System based on a key-value and Operating Method thereof
KR20170057821A (en) * 2015-11-17 2017-05-25 삼성전자주식회사 Storage device, database system having the same, and methode for providing interface therof

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332608A1 (en) * 2012-06-06 2013-12-12 Hitachi, Ltd. Load balancing for distributed key-value store

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100121389A (en) 2009-05-08 2010-11-17 삼성전자주식회사 Storage device based on a flash memory and user device including the same
KR20140112717A (en) * 2013-03-14 2014-09-24 삼성전자주식회사 Data Storage System based on a key-value and Operating Method thereof
KR20170057821A (en) * 2015-11-17 2017-05-25 삼성전자주식회사 Storage device, database system having the same, and methode for providing interface therof

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210058118A (en) * 2019-11-13 2021-05-24 인하대학교 산학협력단 Casedb: low-cost put-intensive key-value store for edge computing
KR20210135776A (en) * 2020-05-06 2021-11-16 인하대학교 산학협력단 Deduplication adapted casedb for edge computing
US11514010B2 (en) 2020-05-06 2022-11-29 Inha-Industry Partnership Institute Deduplication-adapted CaseDB for edge computing
KR102315070B1 (en) * 2020-07-31 2021-10-20 인하대학교 산학협력단 Key-value data orchestration system on edge computing environment
WO2022065577A3 (en) * 2020-09-25 2022-06-16 연세대학교 산학협력단 Method for offloading disk scan operation to gpu in write-optimized database

Also Published As

Publication number Publication date
KR102034833B1 (en) 2019-10-21
WO2019156309A1 (en) 2019-08-15

Similar Documents

Publication Publication Date Title
KR102034833B1 (en) Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof
US11238098B2 (en) Heterogenous key-value sets in tree database
Wang et al. An efficient design and implementation of LSM-tree based key-value store on open-channel SSD
KR101938953B1 (en) Flash optimized columnar data layout and data access algorithms for big data query engines
US10114908B2 (en) Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US10374792B1 (en) Layout-independent cryptographic stamp of a distributed dataset
US11874815B2 (en) Key-value storage device and method of operating the same
US10831747B2 (en) Multi stage aggregation using digest order after a first stage of aggregation
US20160350302A1 (en) Dynamically splitting a range of a node in a distributed hash table
KR102440128B1 (en) Memory management divice, system and method for unified object interface
Chai et al. LDC: a lower-level driven compaction method to optimize SSD-oriented key-value stores
Lee et al. ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework
US10515055B2 (en) Mapping logical identifiers using multiple identifier spaces
Tulkinbekov et al. CaseDB: Lightweight key-value store for edge computing environment
US10528284B2 (en) Method and apparatus for enabling larger memory capacity than physical memory size
Xu et al. Enhancing HDFS with a full-text search system for massive small files
US20200019539A1 (en) Efficient and light-weight indexing for massive blob/objects
JP6006740B2 (en) Index management device
Lee et al. Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds
US10795596B1 (en) Delayed deduplication using precalculated hashes
CN114840134A (en) Log merge tree key value storage system, related method and related equipment
Song et al. MultiPath MultiGet: an optimized multiget method leveraging SSD internal parallelism
Ma et al. Tidal-Tree-Mem: Toward Read-Intensive Key-Value Stores With Tidal Structure Based on LSM-Tree
Macyna et al. Bulk Loading of the Secondary Index in LSM-Based Stores for Flash Memory
Hu et al. MCF: Towards Window-Based Multiple Cuckoo Filter in Stream Computing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant