KR20230009018A - 키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법 - Google Patents

키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법 Download PDF

Info

Publication number
KR20230009018A
KR20230009018A KR1020210089557A KR20210089557A KR20230009018A KR 20230009018 A KR20230009018 A KR 20230009018A KR 1020210089557 A KR1020210089557 A KR 1020210089557A KR 20210089557 A KR20210089557 A KR 20210089557A KR 20230009018 A KR20230009018 A KR 20230009018A
Authority
KR
South Korea
Prior art keywords
key
value
grouping
value pairs
input
Prior art date
Application number
KR1020210089557A
Other languages
English (en)
Other versions
KR102660101B1 (ko
Inventor
최종무
이광희
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Priority to KR1020210089557A priority Critical patent/KR102660101B1/ko
Publication of KR20230009018A publication Critical patent/KR20230009018A/ko
Application granted granted Critical
Publication of KR102660101B1 publication Critical patent/KR102660101B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법이 개시된다. 일 실시예에 따른 키-값 쌍 그룹화 장치는 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성하는 그룹핑 모듈; 및 상기 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어하는 입출력 제어 모듈을 포함한다.

Description

키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법{APPARATUS AND METHOD FOR GROUPING KEY-VALUE PAIRS IN KEY-VALUE STORAGE}
개시되는 실시예들은 키-값 스토리지에서의 입출력 기술과 관련된다.
키-값 스토리지는 스토리지 상에서 키-값 스토어 서비스를 제공하는 데 특징이 있으며, 종래의 스토리지와 달리 파일 시스템(File System)을 거치지 않고 키-값 쌍에 대한 입출력 요청이 발생할 때마다 저장장치로의 입출력이 수행된다.
즉, 키-값 스토리지는 개개의 입출력 요청이 발생할 때마다 애플리케이션에서 곧바로 저장장치로 직접적인 액세스가 필요하기 때문에 입출력 횟수가 많아 작업의 수행 시간이 느려지는 단점이 존재했다.
이에, 기존에는 키-값 삽입(쓰기) 시 키-값을 버퍼(Buffer)에 리스트나 트리 구조로 저장해 두었다가 버퍼에서 플러시(Flush)가 발생하는 경우 저장장치에 입력하는 'Write-back 기법'을 이용하고, 키-값 검색(읽기) 시 저장장치로부터 캐시(Cache)로 키-값을 읽어온 후 해당 키-값 검색 시 빠르게 키-값을 제공하는 '캐시 기반 기법'을 이용하여 상술한 단점을 극복하려는 시도가 있었다.
그러나, 'Write-back 기법'의 경우 버퍼 내 키-값이 대부분 중복이 없는 순차 데이터라서 입출력 횟수 개선 측면에서 효과가 떨어지는데다 결함 발생 시 데이터 복구가 어렵다는 한계점이 있고, '캐시 기반 기법'은 키를 순차적으로 읽는 특성 상 캐시에 존재하는 키-값을 단시간 내에 다시 읽는 빈도가 떨어지는 관계로 현실적으로 입출력 횟수를 개선하기 어렵다는 한계점이 있다.
대한민국 공개특허공보 제10-2013-0047042호 (2013.05.08. 공개)
개시되는 실시예들은 키-값 스토리지의 특성과 입출력 대상인 키-값 쌍의 패턴을 반영하여 키-값 스토리지 내 저장장치에 대한 입출력 횟수를 경감시키기 위한 것이다.
또한, 개시되는 실시예들은 키-값 쌍 그룹화 유무에 따른 입출력 비용과 이득을 고려하여 키에 대한 그룹화를 선택적으로 적용하는 수단을 제공하기 위한 것이다.
개시되는 일 실시예에 따른 키-값 쌍 그룹화 장치는, 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성하는 그룹핑 모듈; 및 상기 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어하는 입출력 제어 모듈을 포함한다.
상기 그룹핑 모듈은, 상기 복수의 키-값 쌍 각각을 구성하는 키 정보의 적어도 일부에 기초하여 상기 복수의 키-값 쌍을 그룹화할 수 있다.
상기 그룹핑 모듈은, 상기 복수의 키-값 쌍 각각을 구성하는 키 정보 중 기 설정된 인덱스에 위치한 키 정보가 일치하는 키-값 쌍을 동일한 키-값 셋으로 그룹화할 수 있다.
상기 그룹핑 모듈은, 각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하는 키 정보를 상기 키-값 셋 각각의 그룹 키로 설정하고, 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 전체를 상기 그룹 키에 대응되는 그룹 값으로 설정할 수 있다.
상기 그룹핑 모듈은, 각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하지 않고 상기 각 키-값 셋에 포함된 복수의 키-값 쌍 사이에서 중복되지 않는 키 정보 각각을 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 각각의 개인 키로 설정할 수 있다.
상기 그룹핑 모듈은, 외부로부터 복수의 키-값 쌍에 대한 출력 요청이 있는 경우, 요청된 복수의 키-값 쌍에 대한 그룹화를 수행하기에 앞서 상기 그룹화 유무에 따른 상기 복수의 키-값 쌍의 전송 예상 시간 및 입출력 처리 예상 시간에 기초하여 상기 그룹화 여부를 결정할 수 있다.
상기 그룹핑 모듈은, 상기 그룹화를 수행하지 않은 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합과, 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합을 비교하여 상기 그룹화 여부를 결정할 수 있다.
상기 그룹핑 모듈은, 상기 그룹화에 따른 상기 키-값 셋 각각에 포함된 키-값 쌍의 개수 및 읽기 실패율 중 적어도 하나에 기초하여 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간을 산출할 수 있다.
개시되는 일 실시예에 따른 키-값 쌍 그룹화 방법은, 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성하는 단계; 및 상기 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어하는 단계를 포함한다.
상기 생성하는 단계는, 상기 복수의 키-값 쌍 각각을 구성하는 키 정보의 적어도 일부에 기초하여 상기 복수의 키-값 쌍을 그룹화하는 단계를 포함할 수 있다.
상기 그룹화하는 단계는, 상기 복수의 키-값 쌍 각각을 구성하는 키 정보 중 기 설정된 인덱스에 위치한 키 정보가 일치하는 키-값 쌍을 동일한 키-값 셋으로 그룹화할 수 있다.
상기 그룹화하는 단계는, 각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하는 키 정보를 상기 키-값 셋 각각의 그룹 키로 설정하는 단계; 및 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 전체를 상기 그룹 키에 대응되는 그룹 값으로 설정하는 단계를 포함할 수 있다.
상기 그룹화하는 단계는, 각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하지 않고 상기 각 키-값 셋에 포함된 복수의 키-값 쌍 사이에서 중복되지 않는 키 정보 각각을 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 각각의 개인 키로 설정하는 단계를 포함할 수 있다.
상기 키-값 쌍 그룹화 방법은, 외부로부터 복수의 키-값 쌍에 대한 출력 요청이 있는 경우, 요청된 복수의 키-값 쌍에 대한 그룹화를 수행하기에 앞서 상기 그룹화 유무에 따른 상기 복수의 키-값 쌍의 전송 예상 시간 및 입출력 처리 예상 시간에 기초하여 상기 그룹화 여부를 결정하는 단계를 더 포함할 수 있다.
상기 결정하는 단계는, 상기 그룹화를 수행하지 않은 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합과, 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합을 비교하여 상기 그룹화 여부를 결정할 수 있다.
상기 결정하는 단계는, 상기 그룹화에 따른 상기 키-값 셋 각각에 포함된 키-값 쌍의 개수 및 읽기 실패율 중 적어도 하나에 기초하여 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간을 산출하는 단계를 포함할 수 있다.
개시되는 실시예들에 따르면, 복수의 키-값 쌍을 그룹화한 키-값 셋 단위로 저장장치에 대한 입출력을 수행함으로써, 키-값 스토리지의 입출력 작업 수행 시간을 경감시키고 키-값 스토리지의 성능을 향상시킬 수 있다.
또한 개시되는 실시예들에 따르면, 키-값 쌍 그룹화 유무에 따른 입출력 비용과 이득을 고려하여 키에 대한 그룹화를 선택적으로 적용함으로써, 키-값 쌍(또는 워크로드)의 패턴에 따라 키-값 스토리지의 데이터 저장 방식을 최적화할 수 있다.
도 1은 일 실시예에 따른 키-값 쌍 그룹화 장치를 설명하기 위한 블록도
도 2는 일 실시예에 따른 키-값 쌍의 그룹화 유무에 기인하는 입출력 횟수의 차이를 나타내는 예시도
도 3은 일 실시예에 따른 키-값 쌍의 그룹화가 적용된 호스트 소프트웨어 아키텍처를 나타내는 예시도
도 4는 일 실시예에 따른 키-값 쌍 그룹화 방법을 설명하기 위한 흐름도
도 5는 추가적인 실시예에 따른 키-값 쌍 그룹화 방법을 설명하기 위한 흐름도
도 6은 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 개시되는 실시예들은 이에 제한되지 않는다.
실시예들을 설명함에 있어서, 관련된 공지기술에 대한 구체적인 설명이 개시되는 실시예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 개시되는 실시예들에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
이하의 설명에 있어서, 신호 또는 정보의 "전송", "통신", "송신", "수신" 기타 이와 유사한 의미의 용어는 일 구성요소에서 다른 구성요소로 신호 또는 정보가 직접 전달되는 것뿐만이 아니라 다른 구성요소를 거쳐 전달되는 것도 포함한다.
특히 신호 또는 정보를 일 구성요소로 "전송" 또는 "송신"한다는 것은 그 신호 또는 정보의 최종 목적지를 지시하는 것이고 직접적인 목적지를 의미하는 것이 아니다. 이는 신호 또는 정보의 "수신"에 있어서도 동일하다. 또한 본 명세서에 있어서, 2 이상의 데이터 또는 정보가 "관련"된다는 것은 하나의 데이터(또는 정보)를 획득하면, 그에 기초하여 다른 데이터(또는 정보)의 적어도 일부를 획득할 수 있음을 의미한다.
또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다.
예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하의 실시예들에서, '키-값 스토리지'는 키-값 쌍이 저장되는 저장장치 뿐만 아니라 키-값 쌍의 입출력을 위한 라이브러리(Library), 버퍼(Buffer), 캐시(Cache), 저장장치 드라이버 등의 호스트 소프트웨어(Host Software), 서비스 제공을 위한 애플리케이션을 포함하는 시스템을 의미한다.
도 1은 일 실시예에 따른 키-값 쌍 그룹화 장치(100)를 설명하기 위한 블록도이다.
도시된 바와 같이, 일 실시예에 따른 키-값 쌍 그룹화 장치(100)는 그룹핑 모듈(110) 및 입출력 제어 모듈(120)을 포함한다.
도시된 실시예에서, 각 구성들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 구성을 포함할 수 있다.
또한, 일 실시예에서, 그룹핑 모듈(110) 및 입출력 제어 모듈(120)은 물리적으로 구분된 하나 이상의 장치를 이용하여 구현되거나, 하나 이상의 프로세서 또는 하나 이상의 프로세서 및 소프트웨어의 결합에 의해 구현될 수 있으며, 도시된 예와 달리 구체적 동작에 있어 명확히 구분되지 않을 수 있다.
그룹핑 모듈(110)은 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성한다. 이때, '외부'는 키-값 스토리지 내 호스트 소프트웨어에 포함된 다른 모듈 또는 키-값 스토리지 내 애플리케이션에 포함된 모듈일 수도 있고, 키-값 스토리지 외의 하드웨어 또는 소프트웨어일 수도 있으며, 키-값 스토리지와 인터페이스 모듈을 통해 신호를 주고받는 사용자일 수도 있다.
구체적으로, 그룹핑 모듈(110)은 복수의 키-값 쌍 각각을 구성하는 키 정보의 적어도 일부에 기초하여 복수의 키-값 쌍을 그룹화할 수 있다.
일 실시예에 따르면, 그룹핑 모듈(110)은 복수의 키-값 쌍 각각을 구성하는 키 정보 중 기 설정된 인덱스에 위치한 키 정보가 일치하는 키-값 쌍을 동일한 키-값 셋으로 그룹화할 수 있다.
이때, 그룹화의 기준이 되는 키 정보의 인덱스는 키-값 쌍들의 특성을 반영하여 다양하게 설정될 수 있는데, 예를 들어 키 정보가 숫자와 영문 알파벳을 포함하는 M개의 문자로 구성된 문자열이라 가정할 경우, 키 정보의 인덱스에 대한 몇몇 예시를 기술하면 다음과 같다.
(1) 문자열의 우측 첫째자리를 포함하여, 우측 첫째자리부터 N번째(단, N은 2 이상 M-1 이하의 자연수)자리를 키 정보의 인덱스로 설정
(2) 문자열의 좌측 첫째자리를 포함하여, 좌측 첫째자리부터 N번째(단, N은 2 이상 M-1 이하의 자연수)자리를 키 정보의 인덱스로 설정
(3) 문자열의 좌측 첫째자리부터 L번째(단, L은 2 이상 N-1 이하의 자연수) 자리를 시작으로, 좌측 첫째자리부터 N번째(단, N은 L+1 이상 M-1 이하의 자연수)자리를 끝으로 하여 키 정보의 인덱스를 설정
다만, 키 정보의 인덱스는 키-값 쌍들의 특성에 따라 상술한 예시 (1) 내지 (3) 이외에도 다양하게 설정될 수 있으며, 키 정보 인덱스에 대한 설정 방식 역시 키-값 쌍 그룹화 장치(100)의 개발자에 의한 사전 설정 방식 이외에도 사용자의 조작에 따른 실시간 설정 방식이 적용될 수 있음에 유의해야 한다.
한편, 그룹핑 모듈(110)은 복수의 키-값 쌍을 그룹화하여 복수의 키-값 셋을 생성함에 있어서, 키-값 셋 각각을 식별할 수 있도록 그룹 키를 설정할 수 있고, 설정된 그룹 키에 대응되는 그룹 값 역시 설정할 수 있다. 이를 통해, 향후 입출력 제어 모듈(120)이 키-값 스토리지 내 저장장치를 대상으로 출력 작업을 수행할 경우 원하는 키-값 셋에 곧바로 액세스할 수 있다.
일 실시예에 따르면, 그룹핑 모듈(110)은 각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 기 설정된 인덱스에 위치하는 키 정보를 키-값 셋 각각의 그룹 키로 설정할 수 있다. 이때, '기 설정된 인덱스'는 그룹핑 모듈(110)이 그룹화를 수행함에 있어서 기준이 되는 인덱스를 의미한다.
또한, 일 실시예에 따르면 그룹핑 모듈(110)은 키-값 셋 각각에 포함된 복수의 키-값 쌍 전체를 그룹 키에 대응되는 그룹 값으로 설정할 수 있다.
예를 들어, 사용자의 기기와 연결되어 있는 IoT 기기의 제품 시리얼 넘버를 '키'라 하고, 각 IoT 기기의 좌표 위치를 '값'이라 할 때, 그룹핑 모듈(110)은 각 IoT 기기의 제품 시리얼 넘버 중 우측 마지막 자리를 제외한 문자열이 일치하는 제품 시리얼 넘버들과 그에 대응되는 IoT 기기의 좌표 위치를 그룹화하여 키-값 셋을 생성하고, 이때 서로 일치하는 제품 시리얼 넘버의 문자열 부분을 그룹 키로 설정하고, 해당 키-값 셋을 구성하는 키-값 쌍 전체를 그룹 값으로 설정할 수 있다(이때, 사용자의 기기는 키 그룹화 장치(100)와 연동된 상태인 것으로 가정한다).
한편, 그룹핑 모듈(110)은 복수의 키-값 쌍을 그룹화하여 복수의 키-값 셋을 생성함에 있어서, 동일한 키-값 셋 내에 포함된 복수의 키-값 쌍 각각을 식별할 수 있도록 개인 키를 설정할 수 있다. 이를 통해, 향후 입출력 제어 모듈(120)이 키-값 스토리지 내 저장장치를 대상으로 출력 작업을 수행할 경우 원하는 키-값 쌍에 곧바로 액세스할 수 있다.
일 실시예에 따르면, 그룹핑 모듈(110)은 각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 (1)기 설정된 인덱스에 위치하지 않고 (2)각 키-값 셋에 포함된 복수의 키-값 쌍 사이에서 중복되지 않는 키 정보 각각을 키-값 셋 각각에 포함된 복수의 키-값 쌍 각각의 개인 키로 설정할 수 있다. 이때, '기 설정된 인덱스'는 그룹핑 모듈(110)이 그룹화를 수행함에 있어서 기준이 되는 인덱스를 의미한다.
예를 들어, 사용자의 기기와 연결되어 있는 IoT 기기의 제품 시리얼 넘버를 '키'라 하고, 각 IoT 기기의 좌표 위치를 '값'이라 하여 생성된 키-값 셋에서, 그룹핑 모듈(110)은 각 IoT 기기의 제품 시리얼 넘버 중 그룹 키로 사용된(기 설정된 인덱스에 위치한) 키 정보가 아니며, 나머지 키 정보로서 각 제품 시리얼 넘버를 일 대 일로 구별할 수 있는 키 정보를 복수의 키-값 쌍 각각의 개인 키로 설정할 수 있다.
상술한 실시예들에 따르면, 그룹핑 모듈(110)은 키-값 쌍을 그룹화하여 키-값 셋을 생성함으로써, 키-값 스토리지 내 저장장치에 대한 입출력 횟수를 줄이고 키-값 스토리지의 성능을 향상시킬 수 있다. 이와 관련하여, 이하의 도 2를 참조하여 상세히 후술한다.
도 2는 일 실시예에 따른 키-값 쌍의 그룹화 유무에 기인하는 입출력 횟수의 차이를 나타내는 예시도(200)이다.
도 2의 좌측은 키-값 쌍의 그룹화가 수행되지 않은 경우의 저장장치에 대한 입출력을 나타내며, 도 2의 우측은 키-값 쌍의 그룹화가 수행된 경우의 저장장치에 대한 입출력을 나타낸다. 설명의 편의를 위해, 도 2에서는 키-값 중 '키' 부분만이 도시되었다.
도 2를 참조하면, 사용자의 기기와 연결되어 있는 여러 IoT 기기의 제품 시리얼 넘버가 '키'로서 키-값 스토리지 내 저장장치에 입력된다. 위쪽에서부터 순서대로 'IOT_20210530_ABSQ_12400'은 사용자의 기기에 연결된 첫번째 IoT 기기를, 'IOT_20210530_ABSQ_12401'은 두번째 IoT 기기를, 'IOT_20210530_ABSQ_12449'는 50번째 IoT 기기를 의미하는 제품 시리얼 넘버이다.
만일 도 2의 좌측처럼 키-값 쌍에 대한 그룹화를 수행하지 않고 50개의 키-값 쌍을 저장장치에 입력할 경우, 저장장치에 대한 입력 작업 역시 50번이 이루어져야 한다. 이로 인해 전체 작업 시간이 길어지고, 키-값 스토리지의 성능이 저하되는 문제가 발생한다.
반면, 도 2의 우측처럼 키-값 쌍에 대한 그룹화를 수행하여 제품 시리얼 넘버의 마지막 자리를 개인 키로, 나머지 부분을 그룹 키로 설정할 경우, 개인 키가 0에서 9까지로 다르되 나머지 부분이 동일한 5개의 키-값 셋이 생성된다. 이 결과, 저장장치에 대한 입력 작업은 각 키-값 셋마다 1번씩, 총 5번만이 이루어진다. 이로 인해 전체 작업 시간이 획기적으로 줄어들어, 키-값 스토리지의 성능이 향상되고 사용자에게 훌륭한 사용자 경험(UX)을 제공할 수 있다.
다시 도 1을 참조하면, 일 실시예에 따른 그룹핑 모듈(110)은 외부로부터 복수의 키-값 쌍에 대한 출력 요청이 있는 경우, 요청된 복수의 키-값 쌍에 대한 그룹화를 수행하기에 앞서 그룹화 유무에 따른 복수의 키-값 쌍의 전송 예상 시간 및 입출력 처리 예상 시간에 기초하여 그룹화 여부를 결정할 수 있다.
구체적으로, 그룹핑 모듈(110)은 그룹화를 수행하지 않은 경우의 전송 예상 시간 및 입출력 처리 예상 시간의 합과, 그룹화를 수행한 경우의 전송 예상 시간 및 입출력 처리 예상 시간의 합을 비교하여 그룹화 여부를 결정할 수 있다.
예를 들어, 그룹핑 모듈(110)은 그룹화를 수행한 경우의 전송 예상 시간 및 입출력 처리 예상 시간의 합이 그룹화를 수행하지 않은 경우의 전송 예상 시간 및 입출력 처리 예상 시간의 합보다 작은 경우, 출력 요청된 복수의 키-값 쌍에 대한 그룹화를 수행한다.
한편, 그룹화를 수행한 경우의 전송 예상 시간 및 입출력 처리 예상 시간은 키-값 셋 각각에 포함된 키-값 쌍의 개수 및 읽기 실패율(Miss Ratio) 중 적어도 하나에 기초하여 산출될 수 있다.
일 실시예에 따르면, 외부로부터의 출력 요청이 있는 경우, 그룹핑 모듈(110)은 아래의 수학식 1 내지 3에 의해 그룹화를 수행하지 않은 경우의 전송 예상 시간, 출력 처리 예상 시간 및 그 합을 산출할 수 있고, 아래의 수학식 4 내지 6에 의해 그룹화를 수행한 경우의 전송 예상 시간, 출력 처리 예상 시간 및 그 합을 산출할 수 있다.
[수학식 1]
Figure pat00001
이때,
Figure pat00002
는 그룹화를 수행하지 않은 경우의 전송 예상 시간,
Figure pat00003
은 출력 횟수,
Figure pat00004
는 키-값 쌍의 크기,
Figure pat00005
는 키-값 스토리지의 처리량(대역폭)을 나타낸다.
[수학식 2]
Figure pat00006
이때,
Figure pat00007
는 그룹화를 수행하지 않은 경우의 출력 처리 예상 시간,
Figure pat00008
은 출력 횟수,
Figure pat00009
는 저장장치에 대한 회당 출력 처리 소요 시간을 나타낸다.
[수학식 3]
Figure pat00010
이때,
Figure pat00011
는 그룹화를 수행하지 않은 경우의 출력에 따른 총 소요 시간을 나타낸다.
[수학식 4]
Figure pat00012
이때,
Figure pat00013
는 그룹화를 수행한 경우의 전송 예상 시간,
Figure pat00014
은 출력 횟수,
Figure pat00015
는 키-값 쌍의 크기,
Figure pat00016
는 키-값 스토리지의 처리량(대역폭),
Figure pat00017
는 그룹핑 값(키-값 셋에 포함된 키-값 쌍의 개수),
Figure pat00018
은 읽기 실패율을 나타낸다.
[수학식 5]
Figure pat00019
이때,
Figure pat00020
는 그룹화를 수행한 경우의 출력 처리 예상 시간,
Figure pat00021
은 출력 횟수,
Figure pat00022
는 저장장치에 대한 회당 출력 처리 소요 시간,
Figure pat00023
은 읽기 실패율을 나타낸다.
[수학식 6]
Figure pat00024
이때,
Figure pat00025
는 그룹화를 수행한 경우의 출력에 따른 총 소요 시간을 나타낸다.
이후, 그룹핑 모듈(110)은 아래의 수학식 7에 의해 그룹화에 따른 비용 대비 이득을 산출하고, 비용 대비 이득이 기 설정된 임계치 이상인 경우 그룹화를 수행할 수 있다.
[수학식 7]
Figure pat00026
이때,
Figure pat00027
은 그룹화에 따른 비용 대비 이득을 나타낸다.
Figure pat00028
이 0 이상이면 그룹화를 수행하지 않은 경우에 비해 그룹화를 수행한 경우 출력에 적은 시간이 소요되는 것이므로 그룹화를 수행함으로써 출력에 따른 소요 시간을 줄일 수 있게 된다.
한편, 외부로부터의 입력 요청이 있는 경우, 그룹화를 수행하지 않은 경우의 전송 예상 시간, 입력 처리 예상 시간 및 그 합은 아래의 수학식 8 내지 10에 의해 산출될 수 있고, 그룹화를 수행한 경우의 전송 예상 시간, 입력 처리 예상 시간 및 그 합은 아래의 수학식 11 내지 13에 의해 산출될 수 있다(중복되는 파라미터의 정의는 생략하도록 한다).
[수학식 8]
Figure pat00029
[수학식 9]
Figure pat00030
[수학식 10]
Figure pat00031
이때,
Figure pat00032
은 그룹화를 수행하지 않은 경우의 입력에 따른 총 소요 시간을 나타낸다.
[수학식 11]
Figure pat00033
[수학식 12]
Figure pat00034
[수학식 13]
Figure pat00035
이때,
Figure pat00036
은 그룹화를 수행한 경우의 입력에 따른 총 소요 시간을 나타낸다.
이후, 그룹화에 따른 비용 대비 이득은 아래의 수학식 14에 의해 산출될 수 있다.
[수학식 14]
Figure pat00037
이때,
Figure pat00038
은 그룹화에 따른 비용 대비 이득을 나타낸다.
Figure pat00039
은 항상 양수이므로, 입력 요청의 경우 그룹화를 수행함으로써 입력에 따른 소요 시간을 항상 줄일 수 있음을 알 수 있다.
입출력 제어 모듈(120)은 그룹핑 모듈(110)에 의해 생성된 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어한다.
즉 다시 말하면, 입출력 제어 모듈(120)은 키-값 셋에 포함된 키-값 쌍들 각각마다 입력 또는 출력을 위한 제어를 수행하는 것이 아니라, 키-값 셋을 단위로 하여 저장장치에 대한 입력 또는 출력을 수행한다.
구체적으로, 키-값 셋의 입력과 관련하여, 입출력 제어 모듈(120)은 저장장치에 기록하고자 하는 키-값 셋에 대한 데이터와 입력 작업을 위한 커맨드를 저장장치로 전송할 수 있다. 단, 키-값 셋에 대한 데이터와 입력 작업을 위한 커맨드는 함께 전송될 수도 있고, 실시예에 따라서는 별개로 전송될 수도 있다.
한편, 키-값 셋의 출력과 관련하여, 입출력 제어 모듈(120)은 저장장치로 출력 작업을 위한 커맨드를 전송하여, 저장장치로부터 읽고자 하는 키-값 쌍을 포함하는 키-값 셋에 대한 데이터를 획득한 후 출력 요청의 대상이 된 키-값 쌍 또는 해당 키-값 쌍을 포함하는 키-값 셋 전체를 출력 요청을 송신한 키-값 스토리지 내 모듈로 제공할 수 있다. 이때, 데이터가 제공되는 키-값 스토리지 내 모듈은 호스트 소프트웨어 내 모듈일 수도 있고, 키-값 스토리지 내에서 구동되는 애플리케이션 내 모듈일 수도 있다.
이상의 도 1을 참조하여 설명한 실시예들에서, 그룹핑 모듈(110), 입출력 제어 모듈(120) 및 저장장치를 포함한 키-값 스토리지 내 구성 요소들 간의 데이터 및 신호 전송은 키-값 스토리지 내 통신 채널을 통해 이루어질 수 있으나, 이외에도 통신 네트워크를 통해 이루어질 수도 있다. 이때, 통신 네트워크는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wire area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.
도 3은 일 실시예에 따른 키-값 쌍의 그룹화가 적용된 호스트 소프트웨어 아키텍처를 나타내는 예시도(300)이다.
도 3을 참조하면, 'Write buffer'는 기존의 'Write-back 기법'을 적용하기 위한 버퍼의 기능을 수행하는 모듈이며, 'LRU Cache'는 기존의 '캐시 기반 기법'을 적용하기 위한 캐시의 기능을 수행하는 모듈을 의미한다. 'Write buffer'는 새로운 데이터의 입력을 미루는 방식으로 입력을 위한 액세스가 잦은 키-값 스토리지의 단점을 보완하며, 'LRU Cache'는 출력 요청된 데이터가 캐시 상에 존재할 경우 저장장치가 아닌 캐시에서 곧바로 데이터를 제공하는 방식으로 출력을 위한 액세스가 잦은 키-값 스토리지의 단점을 보완한다.
구체적으로, 'Write buffer' 및 'LRU Cache'는 리스트(list) 구조를 이용하여 데이터를 정렬, 관리한다. 이와 관련하여 도 3에서는 'Write buffer' 및 'LRU Cache'가 Skiplist 알고리즘을 이용하는 것처럼 도시되었으나, Skiplist 알고리즘은 리스트 구조를 이용하는 임의의 알고리즘(예를 들어, 트리 구조 알고리즘)으로 대체될 수도 있다.
한편, 'Workload Monitoring'은 외부로부터의 요청에 대응되는 키-값 쌍(Workload)을 모니터링하는 기능을 수행하는 모듈이며, 'KV Grouping'은 키-값 쌍에 대한 그룹화를 수행하는 모듈이다. 즉, 일 실시예에 따른 키 그룹화 장치(100)는 'Workload Monitoring' 및 'KV Grouping'에 해당하는 모듈을 포함하는 장치로, 호스트 소프트웨어 내 일부 모듈의 기능을 수행하는 장치 또는 호스트 소프트웨어 자체를 구동하는 장치를 의미할 수 있다.
몇몇 실시예들에서, 통신 네트워크는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wire area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.
도 4는 일 실시예에 따른 키-값 쌍 그룹화 방법을 설명하기 위한 흐름도이다.
도 4에 도시된 방법은 예를 들어, 상술한 키-값 쌍 그룹화 장치(100)에 의해 수행될 수 있다.
우선, 키-값 쌍 그룹화 장치(100)는 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성한다(410).
이후, 키-값 쌍 그룹화 장치(100)는 생성된 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어한다(420).
도 5는 추가적인 실시예에 따른 키-값 쌍 그룹화 방법을 설명하기 위한 흐름도이다.
도 5에 도시된 방법은 예를 들어, 상술한 키-값 쌍 그룹화 장치(100)에 의해 수행될 수 있다.
우선, 키-값 쌍 그룹화 장치(100)는 외부로부터 전송된 키-값 쌍에 대한 요청의 종류가 입력 요청인지, 출력 요청인지 판단한다(510).
이후, 외부로부터의 요청이 출력 요청으로 판단된 경우, 키-값 쌍 그룹화 장치(100)는 해당 출력 요청에 대응되는 복수의 키-값 쌍에 대해, 그룹화 유무에 따른 복수의 키-값 쌍의 전송 예상 시간 및 입출력 처리 예상 시간에 기초하여 그룹화 여부를 결정한다(520).
이후, 520 단계를 수행함에 따라 복수의 키-값 쌍에 대한 그룹화가 결정된 경우, 키-값 쌍 그룹화 장치(100)는 해당 출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성한다(530).
한편, 510 단계의 수행 결과 외부로부터의 요청이 입력 요청으로 판단된 경우, 키-값 쌍 그룹화 장치(100)는 520 단계의 수행 없이 곧바로 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 복수의 키-값 셋을 생성할 수 있다. 이는 키-값 쌍을 저장장치에 입력할 경우 그룹화를 수행하는 것이 그룹화를 수행하지 않는 경우에 비해 키-값 스토리지의 성능(처리 시간) 측면에서 항상 이득이기 때문이며, 이에 관한 상세한 설명은 도 1을 참조하여 상술한 바와 같다.
이후, 키-값 쌍 그룹화 장치(100)는 생성된 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어한다(540).
한편, 520 단계의 수행 결과 복수의 키-값 쌍에 대한 그룹화를 하지 않기로 결정된 경우, 키-값 쌍 그룹화 장치(100)는 외부로부터의 출력 요청에 대응되는 복수의 키-값 쌍 각각에 대해 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어한다(550).
상기 도시된 흐름도 도 4 및 도 5에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
도 6은 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 키-값 쌍 그룹화 장치(100)일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 청구범위 뿐만 아니라 이 청구범위와 균등한 것들에 의해 정해져야 한다.
10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
100: 키-값 쌍 그룹화 장치
110: 그룹핑 모듈
120: 입출력 제어 모듈

Claims (16)

  1. 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성하는 그룹핑 모듈; 및
    상기 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어하는 입출력 제어 모듈을 포함하는, 키-값 쌍 그룹화 장치.
  2. 청구항 1항에 있어서,
    상기 그룹핑 모듈은,
    상기 복수의 키-값 쌍 각각을 구성하는 키 정보의 적어도 일부에 기초하여 상기 복수의 키-값 쌍을 그룹화하는, 키-값 쌍 그룹화 장치.
  3. 청구항 2항에 있어서,
    상기 그룹핑 모듈은,
    상기 복수의 키-값 쌍 각각을 구성하는 키 정보 중 기 설정된 인덱스에 위치한 키 정보가 일치하는 키-값 쌍을 동일한 키-값 셋으로 그룹화하는, 키-값 쌍 그룹화 장치.
  4. 청구항 3항에 있어서,
    상기 그룹핑 모듈은,
    각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하는 키 정보를 상기 키-값 셋 각각의 그룹 키로 설정하고, 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 전체를 상기 그룹 키에 대응되는 그룹 값으로 설정하는, 키-값 쌍 그룹화 장치.
  5. 청구항 3항에 있어서,
    상기 그룹핑 모듈은,
    각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하지 않고 상기 각 키-값 셋에 포함된 복수의 키-값 쌍 사이에서 중복되지 않는 키 정보 각각을 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 각각의 개인 키로 설정하는, 키-값 쌍 그룹화 장치.
  6. 청구항 1항에 있어서,
    상기 그룹핑 모듈은,
    외부로부터 복수의 키-값 쌍에 대한 출력 요청이 있는 경우, 요청된 복수의 키-값 쌍에 대한 그룹화를 수행하기에 앞서 상기 그룹화 유무에 따른 상기 복수의 키-값 쌍의 전송 예상 시간 및 입출력 처리 예상 시간에 기초하여 상기 그룹화 여부를 결정하는, 키-값 쌍 그룹화 장치.
  7. 청구항 6항에 있어서,
    상기 그룹핑 모듈은,
    상기 그룹화를 수행하지 않은 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합과, 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합을 비교하여 상기 그룹화 여부를 결정하는, 키-값 쌍 그룹화 장치.
  8. 청구항 6항에 있어서,
    상기 그룹핑 모듈은,
    상기 그룹화에 따른 상기 키-값 셋 각각에 포함된 키-값 쌍의 개수 및 읽기 실패율 중 적어도 하나에 기초하여 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간을 산출하는, 키-값 쌍 그룹화 장치.
  9. 외부로부터의 입출력 요청에 대응되는 복수의 키-값 쌍을 그룹화하여 각각 적어도 하나 이상의 키-값 쌍을 포함하는 복수의 키-값 셋을 생성하는 단계; 및
    상기 복수의 키-값 셋 각각마다 1회의 입력 또는 출력이 수행되도록 키-값 스토리지 내 저장장치를 제어하는 단계를 포함하는, 키-값 쌍 그룹화 방법.
  10. 청구항 9항에 있어서,
    상기 생성하는 단계는,
    상기 복수의 키-값 쌍 각각을 구성하는 키 정보의 적어도 일부에 기초하여 상기 복수의 키-값 쌍을 그룹화하는 단계를 포함하는, 키-값 쌍 그룹화 방법.
  11. 청구항 10항에 있어서,
    상기 그룹화하는 단계는,
    상기 복수의 키-값 쌍 각각을 구성하는 키 정보 중 기 설정된 인덱스에 위치한 키 정보가 일치하는 키-값 쌍을 동일한 키-값 셋으로 그룹화하는, 키-값 쌍 그룹화 방법.
  12. 청구항 11항에 있어서,
    상기 그룹화하는 단계는,
    각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하는 키 정보를 상기 키-값 셋 각각의 그룹 키로 설정하는 단계; 및
    상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 전체를 상기 그룹 키에 대응되는 그룹 값으로 설정하는 단계를 포함하는, 키-값 쌍 그룹화 방법.
  13. 청구항 11항에 있어서,
    상기 그룹화하는 단계는,
    각 키-값 셋에 포함된 복수의 키-값 쌍 각각을 구성하는 키 정보 중 상기 기 설정된 인덱스에 위치하지 않고 상기 각 키-값 셋에 포함된 복수의 키-값 쌍 사이에서 중복되지 않는 키 정보 각각을 상기 키-값 셋 각각에 포함된 복수의 키-값 쌍 각각의 개인 키로 설정하는 단계를 포함하는, 키-값 쌍 그룹화 방법.
  14. 청구항 9항에 있어서,
    외부로부터 복수의 키-값 쌍에 대한 출력 요청이 있는 경우, 요청된 복수의 키-값 쌍에 대한 그룹화를 수행하기에 앞서 상기 그룹화 유무에 따른 상기 복수의 키-값 쌍의 전송 예상 시간 및 입출력 처리 예상 시간에 기초하여 상기 그룹화 여부를 결정하는 단계를 더 포함하는, 키-값 쌍 그룹화 방법.
  15. 청구항 14항에 있어서,
    상기 결정하는 단계는,
    상기 그룹화를 수행하지 않은 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합과, 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간의 합을 비교하여 상기 그룹화 여부를 결정하는, 키-값 쌍 그룹화 방법.
  16. 청구항 14항에 있어서,
    상기 결정하는 단계는,
    상기 그룹화에 따른 상기 키-값 셋 각각에 포함된 키-값 쌍의 개수 및 읽기 실패율 중 적어도 하나에 기초하여 상기 그룹화를 수행한 경우의 상기 전송 예상 시간 및 상기 입출력 처리 예상 시간을 산출하는 단계를 포함하는, 키-값 쌍 그룹화 방법.
KR1020210089557A 2021-07-08 2021-07-08 키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법 KR102660101B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210089557A KR102660101B1 (ko) 2021-07-08 2021-07-08 키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210089557A KR102660101B1 (ko) 2021-07-08 2021-07-08 키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20230009018A true KR20230009018A (ko) 2023-01-17
KR102660101B1 KR102660101B1 (ko) 2024-04-23

Family

ID=85111545

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210089557A KR102660101B1 (ko) 2021-07-08 2021-07-08 키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102660101B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120036317A1 (en) * 2009-03-31 2012-02-09 Takashi Torii Storage system and storage access method and program
KR20130047042A (ko) 2011-10-31 2013-05-08 삼성에스디에스 주식회사 분산 데이터 저장소를 위한 데이터 파티셔닝 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120036317A1 (en) * 2009-03-31 2012-02-09 Takashi Torii Storage system and storage access method and program
KR20130047042A (ko) 2011-10-31 2013-05-08 삼성에스디에스 주식회사 분산 데이터 저장소를 위한 데이터 파티셔닝 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
이광희, 최건희, 최종무.(2019)."키 밸류 저장소의 집약 알고리즘 부하 분석".한국정보과학회 학술 발표논문집,1501-1503.* *

Also Published As

Publication number Publication date
KR102660101B1 (ko) 2024-04-23

Similar Documents

Publication Publication Date Title
EP3404899B1 (en) Adaptive computation and faster computer operation
US10831375B2 (en) Hierarchical pre-fetch pipelining in a hybrid memory server
US8694584B2 (en) Speculative and coordinated data access in a hybrid memory server
US10831541B2 (en) Performance optimization of hardware accelerators
US20210149865A1 (en) SEAMLESSLY MIGRATING DATA AND INDEX IN DISTRIBUTED NoSQL DATABASE SYSTEMS
CN110609796B (zh) 用于存储系统中预取的方法、设备和计算机程序产品
US11829624B2 (en) Method, device, and computer readable medium for data deduplication
US10834228B2 (en) Method to reduce reactivation time of cloud based services
US11579811B2 (en) Method and apparatus for storage device latency/bandwidth self monitoring
US20200250530A1 (en) Deep machine learning modeling of networking device identification
US20210117228A1 (en) Prefetch chaining for optimizing data read-ahead for workflow and analytics
US11467735B2 (en) I/O operations in log structured arrays
KR20230009018A (ko) 키-값 스토리지에서의 키-값 쌍 그룹화 장치 및 방법
KR102545480B1 (ko) 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법
US11687338B2 (en) Computational storage with pre-programmed slots using dedicated processor core
KR20230017040A (ko) 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법
KR20210141875A (ko) 양자 컴퓨팅 클라우드 서비스 방법 및 이를 수행하기 위한 컴퓨팅 장치
KR101790728B1 (ko) 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체
WO2012059976A1 (ja) プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
US20240028519A1 (en) Data processing method, electronic device and computer program product
US11157187B2 (en) Method, device, and computer program product for overwriting data
JP2023554335A (ja) プロセッサにおけるセキュア動作モードの動的制御のためのシステムおよび方法
KR20220114451A (ko) 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 이를 포함한 전자 장치
US20180239717A1 (en) Cache prefetching in offloaded data transfer (odx)
KR20220154472A (ko) 엣지 중요도 산출 장치 및 방법

Legal Events

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