KR102545480B1 - 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법 - Google Patents

존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법 Download PDF

Info

Publication number
KR102545480B1
KR102545480B1 KR1020210099684A KR20210099684A KR102545480B1 KR 102545480 B1 KR102545480 B1 KR 102545480B1 KR 1020210099684 A KR1020210099684 A KR 1020210099684A KR 20210099684 A KR20210099684 A KR 20210099684A KR 102545480 B1 KR102545480 B1 KR 102545480B1
Authority
KR
South Korea
Prior art keywords
zone
flush
storage
level
aggregation
Prior art date
Application number
KR1020210099684A
Other languages
English (en)
Other versions
KR20230018032A (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 KR1020210099684A priority Critical patent/KR102545480B1/ko
Priority to US17/869,908 priority patent/US20230033773A1/en
Publication of KR20230018032A publication Critical patent/KR20230018032A/ko
Application granted granted Critical
Publication of KR102545480B1 publication Critical patent/KR102545480B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/2282Tablespace storage structures; Management thereof
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/0608Saving storage space on storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법이 개시된다. 일 실시예에 따른 키-값 스토어 파일 저장 장치는 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록하는 메모리; 메모리로부터 수신한 데이터를 스토리지에 저장하는 제어부; 및 복수의 존을 포함하는 스토리지를 포함한다.
이때, 제어부는, 메모리로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 스토리지에 저장하는 플러시(Flush) 작업 및 스토리지 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 집약(Compaction) 작업을 수행하되, 복수의 존 중 적어도 일부 존을 플러시 존(Flush zone)으로, 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존(Compaction zone)으로 구별하여, 플러시 존을 이용하여 플러시 작업을 수행하고 집약 존을 이용하여 집약 작업을 수행한다.

Description

존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법{APPARATUS AND METHOD FOR STORING FILE OF KEY VALUE STORE ON ZONED STORAGE}
개시되는 실시예들은 존 스토리지 상에 키-값 스토어를 구현함에 있어서 키-값의 입출력으로 인한 간섭이 경감되도록 파일을 저장하는 기술과 관련된다.
키-값 데이터베이스라고도 하는 키-값 스토어는 자료의 저장, 검색, 관리를 위해 설계된 데이터 저장 형태로서, 대부분 로그 구조 병합 트리(LSM-Tree; Log Structured Merge-Tree) 자료 구조에 기반하여 데이터를 SSTable(Sorted String Table) 파일 형태로 디스크 영역에 저장한다.
이와 관련하여, 최근 키-값 스토어 파일에 대한 저장 공간으로 ZNS SSD(Zoned NameSpace SSD), SMR(Shingled Magnetic Recording) 디스크 등의 존 스토리지(Zoned Storage)가 이용되고 있는데, 이러한 존 스토리지는 전체 저장 공간을 다수의 존으로 나누어 제공한다는 특징을 갖는다.
그런데, 존 스토리지 상에 키-값 스토어를 구현하기 위해서는 메모리 영역으로부터 존 스토리지로 유저 데이터를 기록하는 플러시(Flush) 작업과, 존 스토리지 상에 기록된 데이터들을 합병하는 집약(Compaction) 작업이 필수적이다.
그러나, 현재 키-값 스토어에서는 플러시 작업이 포그라운드(foreground)로, 집약 작업이 백그라운드(background)로 동시에 수행되는 관계로, 데이터의 읽고 쓰는 양이 많고 스토리지의 대역폭을 많이 사용하는 집약 작업으로 인해 플러시 작업의 입출력 성능에 상당한 간섭이 발생한다. 이는 곧 사용자의 응답 시간이 급증하는 문제(Latency spike)를 야기하므로 사용자 경험에도 좋지 않은 영향을 미친다.
대한민국 공개특허공보 제10-2019-0095089호 (2019.08.14. 공개)
개시되는 실시예들은 존 스토리지 상에서 플러시 작업과 집약 작업 간의 입출력 성능 간섭이 경감되도록 키-값 스토어 파일을 저장하기 위한 것이다.
개시되는 일 실시예에 따른 키-값 스토어 파일 저장 장치는, 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록하는 메모리; 상기 메모리로부터 수신한 데이터를 스토리지에 저장하는 제어부; 및 복수의 존을 포함하는 스토리지를 포함하고, 상기 제어부는, 상기 메모리로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 상기 스토리지에 저장하는 플러시(Flush) 작업 및 상기 스토리지 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 집약(Compaction) 작업을 수행하되, 상기 복수의 존 중 적어도 일부 존을 플러시 존(Flush zone)으로, 상기 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존(Compaction zone)으로 구별하여, 상기 플러시 존을 이용하여 상기 플러시 작업을 수행하고 상기 집약 존을 이용하여 상기 집약 작업을 수행한다.
상기 스토리지는, 복수의 채널을 통해 상기 제어부와 연결되며, 상기 복수의 채널별로 할당된 복수의 존을 포함할 수 있고, 상기 제어부는, 상기 플러시 존에 할당된 채널과 상기 집약 존에 할당된 채널이 상이하도록 상기 플러시 존과 상기 집약 존을 구별할 수 있다.
상기 플러시 존은, 존 내부에 가용 용량이 존재하는 활성 플러시 존(Active flush zone) 및 존 내부에 가용 용량이 존재하지 않는 불변 플러시 존(Immutable flush zone)을 포함할 수 있고, 상기 제어부는, 상기 플러시 존에 저장된 복수의 파일을 합병하여 상기 집약 존에 하나의 파일로 기록하는 레벨 0 집약 작업을 수행할 경우, 상기 불변 플러시 존에 저장된 복수의 파일을 대상으로 상기 레벨 0 집약 작업을 수행할 수 있다.
상기 제어부는, 로그 구조 병합 트리(LSM-Tree; Log Structured Merge-Tree) 자료 구조에 기초하여 키-값에 대한 저장을 수행할 수 있다.
상기 단위 공간은, 기 설정된 크기의 멤테이블(Memtable)일 수 있고, 상기 파일은, 기 설정된 크기의 SSTable 파일일 수 있다.
상기 제어부는, 상기 LSM-Tree 자료 구조에 따라 상기 복수의 존을 다층 레벨로 구성하고, 상기 파일 각각의 핫-콜드 특성에 따라 상기 파일 각각에 레벨 정보를 입력하고, 상기 파일 각각을 상기 레벨 정보와 매칭되는 레벨의 존에 저장할 수 있다.
상기 레벨 정보는, 상기 파일 각각의 액세스 빈도 및 업데이트 빈도 중 적어도 하나에 기초하여 결정될 수 있다.
개시되는 일 실시예에 따른 키-값 스토어 파일 저장 방법은, 메모리에서, 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록하는 단계; 제어부에서, 스토리지에 포함된 복수의 존 중 적어도 일부 존을 플러시 존(Flush zone)으로, 상기 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존(Compaction zone)으로 구별하는 단계; 상기 제어부에서, 상기 플러시 존을 이용하여, 상기 메모리로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 상기 스토리지에 저장하는 플러시(Flush) 작업을 수행하는 단계; 및 상기 제어부에서, 상기 집약 존을 이용하여, 상기 스토리지 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 집약(Compaction) 작업을 수행하는 단계를 포함한다.
상기 스토리지는, 복수의 채널을 통해 상기 제어부와 연결되며, 상기 복수의 채널별로 할당된 복수의 존을 포함할 수 있고, 상기 구별하는 단계에서는, 상기 플러시 존에 할당된 채널과 상기 집약 존에 할당된 채널이 상이하도록 상기 플러시 존과 상기 집약 존이 구별될 수 있다.
상기 플러시 존은, 존 내부에 가용 용량이 존재하는 활성 플러시 존(Active flush zone) 및 존 내부에 가용 용량이 존재하지 않는 불변 플러시 존(Immutable flush zone)을 포함할 수 있고, 상기 집약 작업을 수행하는 단계에서는, 상기 플러시 존에 저장된 복수의 파일을 합병하여 상기 집약 존에 하나의 파일로 기록하는 레벨 0 집약 작업이 수행될 경우, 상기 불변 플러시 존에 저장된 복수의 파일을 대상으로 상기 레벨 0 집약 작업이 수행될 수 있다.
상기 제어부는, 로그 구조 병합 트리(LSM-Tree; Log Structured Merge-Tree) 자료 구조에 기초하여 키-값에 대한 저장을 수행할 수 있다.
상기 단위 공간은, 기 설정된 크기의 멤테이블(Memtable)일 수 있고, 상기 파일은, 기 설정된 크기의 SSTable 파일일 수 있다.
상기 제어부는, 상기 LSM-Tree 자료 구조에 따라 상기 복수의 존을 다층 레벨로 구성하고, 상기 파일 각각의 핫-콜드 특성에 따라 상기 파일 각각에 레벨 정보를 입력하고, 상기 파일 각각을 상기 레벨 정보와 매칭되는 레벨의 존에 저장할 수 있다.
상기 레벨 정보는, 상기 파일 각각의 액세스 빈도 및 업데이트 빈도 중 적어도 하나에 기초하여 결정될 수 있다.
개시되는 실시예들에 따르면, 존 스토리지 내 복수의 존에 있어서 플러시(Flush) 작업이 수행되는 존과 집약(Compaction) 작업이 수행되는 존을 구분함으로써, 백그라운드로 수행되는 집약 작업에 의해 플러시 작업의 입출력 성능 상 간섭이 발생하는 것을 경감시킬 수 있다.
또한 개시되는 실시예들에 따르면, 플러시 존을 활성 플러시 존과 불변 플러시 존으로 구분함으로써, 레벨 0 집약 작업 시 발생할 수 있는 간섭을 보다 효과적으로 경감시킬 수 있다.
도 1은 일 실시예에 따른 키-값 스토어 파일 저장 장치를 설명하기 위한 블록도
도 2는 일 실시예에 따른 존 스토리지 내 복수의 존 및 채널 구성을 설명하기 위한 예시도
도 3은 플러시 존 및 집약 존이 구별된 실시예를 나타내는 예시도
도 4는 레벨 0 집약 작업이 수행되는 실시예를 나타내는 예시도
도 5는 일 실시예에 따른 핫-콜드 특성을 고려한 파일 배치를 설명하기 위한 예시도
도 6은 일 실시예에 따른 키-값 스토어 파일 저장 방법을 설명하기 위한 흐름도
도 7은 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 개시되는 실시예들은 이에 제한되지 않는다.
실시예들을 설명함에 있어서, 관련된 공지기술에 대한 구체적인 설명이 개시되는 실시예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 개시되는 실시예들에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
이하의 설명에 있어서, 신호 또는 정보의 "전송", "통신", "송신", "수신" 기타 이와 유사한 의미의 용어는 일 구성요소에서 다른 구성요소로 신호 또는 정보가 직접 전달되는 것뿐만이 아니라 다른 구성요소를 거쳐 전달되는 것도 포함한다.
특히 신호 또는 정보를 일 구성요소로 "전송" 또는 "송신"한다는 것은 그 신호 또는 정보의 최종 목적지를 지시하는 것이고 직접적인 목적지를 의미하는 것이 아니다. 이는 신호 또는 정보의 "수신"에 있어서도 동일하다. 또한 본 명세서에 있어서, 2 이상의 데이터 또는 정보가 "관련"된다는 것은 하나의 데이터(또는 정보)를 획득하면, 그에 기초하여 다른 데이터(또는 정보)의 적어도 일부를 획득할 수 있음을 의미한다.
또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다.
예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
도 1은 일 실시예에 따른 키-값 스토어 파일 저장 장치(100)를 설명하기 위한 블록도이다.
도시된 바와 같이, 일 실시예에 따른 키-값 스토어 파일 저장 장치(100)는 메모리(110), 제어부(120) 및 스토리지(130)를 포함한다.
도시된 실시예에서, 각 구성들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 구성을 포함할 수 있다.
또한, 일 실시예에서, 메모리(110), 제어부(120) 및 스토리지(130)는 물리적으로 구분된 하나 이상의 장치를 이용하여 구현되거나, 하나 이상의 프로세서 또는 하나 이상의 프로세서 및 소프트웨어의 결합에 의해 구현될 수 있으며, 도시된 예와 달리 구체적 동작에 있어 명확히 구분되지 않을 수 있다.
메모리(110)는 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록한다.
제어부(120)는 메모리로부터 수신한 데이터를 복수의 존을 포함하는 스토리지(130)에 저장한다.
구체적으로, 제어부(120)는 (i)메모리(110)로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 스토리지(130)에 저장하는 '플러시(Flush)' 작업 및 (ii)스토리지(130) 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 '집약(Compaction)' 작업을 수행한다.
이때, 제어부(120)는 스토리지(130)에 포함된 복수의 존 중 적어도 일부 존을 플러시 존(Flush zone)으로, 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존(Compaction zone)으로 구별하여, 플러시 존을 이용하여 플러시 작업을 수행하고 집약 존을 이용하여 집약 작업을 수행한다.
보다 상세하게, 이하의 실시예에서 '플러시'는 메모리(110) 영역에 데이터가 저장되다가, 저장된 데이터의 크기가 임계치를 넘게 되면 일련의 데이터들을 키를 기준으로 정렬된 테이블로 변환하여 디스크 영역에 저장하는 작업을 의미할 수 있다.
일 실시예에 따르면, 제어부(120)는 로그 구조 병합 트리(LSM-Tree; Log Structured Merge-Tree) 자료 구조에 기초하여 키-값에 대한 저장을 수행할 수 있다. 이를 통해, 임의쓰기 성능보다 순차쓰기 성능이 높은 스토리지의 특성을 효율적으로 활용할 수 있다.
한편 상술한 LSM-Tree 자료 구조에 따르면, 제어부(120)는 파일을 스토리지(130) 내에 다층 레벨의 트리 구조로 저장할 수 있고, 새로운 키-값에 대응되는 파일을 저장할 경우 해당 파일의 키가 기 저장된 파일의 키와 일치하더라도 기존 키-값을 갱신하지 않고 다층 레벨 트리 구조의 최상층에 새로 저장한다. 이후, 해당 파일이 검색될 경우 다층 레벨 중 최상층 레벨부터 검색이 수행된다.
이러한 LSM-Tree 자료 구조에 따르면, 메모리(110) 내 단위 공간은 기 설정된 크기의 멤테이블(Memtable)을 의미할 수 있고, 스토리지(130)에 저장되는 파일은 기 설정된 크기의 SSTable(Sorted String Table) 파일을 의미할 수 있다.
이하의 실시예에서, 'SSTable 파일'은 키를 기준으로 정렬된 키-값들이 저장된 테이블 형태의 파일로서, 파일 내에는 각기 다른 키 별로 개개의 세그먼트(segment)로 나누어진 공간이 존재한다. 만일 특정 레벨에 저장된 SSTable 파일의 크기가 기 설정된 임계치를 초과하면 상층 레벨의 SSTable 파일이 하층 레벨로 이동되어 키 영역이 중복되는 SSTable 파일끼리 합병 정렬되는 집약 작업이 발생한다.
일 실시예에 따르면, 제어부(120)는 복수의 채널을 통해 스토리지(130)와 연결될 수 있으며, 이때 스토리지(130)는 복수의 채널별로 할당된 복수의 존을 포함할 수 있다. 이와 관련하여, 이하의 도 2를 참조하여 설명하기로 한다.
도 2는 일 실시예에 따른 존 스토리지 내 복수의 존 및 채널 구성을 설명하기 위한 예시도(200)이다.
도 2를 참조하면, 좌측은 존 스토리지(예를 들어, ZNS SSD)에서 복수의 채널을 통한 제어부(120)와 스토리지(130) 내 복수의 존 사이의 연결 구성을 도시한 것이며, 우측은 복수의 존 각각에서 데이터가 기록되는 방식을 개념적으로 도시한 것이다.
먼저 도 2의 좌측에 도시된 대로, 제어부(120)는 복수의 채널을 통해 스토리지(130) 내 복수의 존 각각과 연결될 수 있다. 도 2에서는 제어부(120)와 스토리지(130) 사이에 4개의 채널이 존재하고, 각 채널마다 2개의 존이 연결된 것으로 도시되었으나, 이는 예시적인 것으로, 채널의 개수 및 각 채널마다 연결된 존의 개수는 실시예에 따라 다양하게 설정될 수 있다.
일 실시예에 따르면, 제어부(120)는 스토리지(130)에 기 정의된 형태의 파일을 저장함에 있어서, 해당 파일을 분할하여 스토리지(130) 내 복수의 존 중 적어도 2 이상의 존 각각에 분산 저장할 수 있다.
이 경우, 제어부(120)는 해당 파일의 크기 및 스토리지(130) 내 존 개수에 기초하여 파일의 분할 수를 결정할 수 있다. 예를 들어, 제어부(120)가 저장하고자 하는 SSTable 파일의 크기가 12MB이고 스토리지(130) 내 해당 파일을 저장하는 데 사용될 존 개수가 3개인 경우, 제어부(120)는 SSTable 파일을 3분할하여 각 존마다 4MB씩 분산 저장할 수 있다.
다른 예로서, SSTable 파일이 인덱스 블록, 필터 블록, 데이터 블록으로 구성되는 경우, 제어부(120)는 각 블록별로 SSTable 파일을 3분할하여 각 존마다 분산 저장할 수도 있다.
한편, 제어부(120)는 각 존에 데이터를 기록함에 있어서 쓰기 포인터(WP; Write Pointer)를 이용하여 데이터를 순차 기록할 수 있다.
이와 관련하여, 도 2의 우측은 스토리지(130) 내 8개의 존 중 첫번째 존(Zone 0)에 데이터가 기록되는 과정을 도시한 것으로, WP는 Zone 0의 가용 용량 중 가장 좌측의 용량의 주소부터 가장 우측의 용량의 주소까지 순차적으로 가리키며 데이터가 순차적으로 기록되도록 함을 알 수 있다.
다시 도 1을 참조하면, 제어부(120)와 스토리지(130)가 복수의 채널을 통해 연결되고, 스토리지(130)가 복수의 채널별로 할당된 복수의 존을 포함한다고 가정할 때, 일 실시예에 따른 제어부(120)는 스토리지(130)에 포함된 복수의 존 중 적어도 일부를 플러시 존과 집약 존으로 구분함에 있어서, 플러시 존에 할당된 채널과 집약 존에 할당된 채널이 상이하도록 플러시 존과 집약 존을 구분할 수 있다.
그 결과, 제어부(120)와 스토리지(130)를 연결하는 복수의 채널은, 제어부(120)와 스토리지(130) 내 플러시 존을 연결하는 플러시 채널(Flush Channel)과, 제어부(120)와 스토리지(130) 내 집약 존을 연결하는 집약 채널(Compaction Channel)로 구분될 수 있다. 이와 관련하여, 이하의 도 3을 참조하여 설명하기로 한다.
도 3은 플러시 존 및 집약 존이 구별된 실시예를 나타내는 예시도(300)이다.
도 3을 참조하면, 제어부(120)와 스토리지(130) 사이의 여러 채널별로 플러시 존과 집약 존이 구별되어 할당된 존-채널 구성이 도시되어 있다. 이에, 도시된 대로 제어부(예를 들어, SSD Controller)와 스토리지 사이에서 2개의 파일(예를 들어, SSTable 파일) 각각이 스토리지 내 각 존으로 분산 저장된다고 가정하자.
도 3의 우측에는, 스토리지에 포함된 4개의 존이 각기 다른 채널에 의해 제어부와 연결되어 있다. 구체적으로, 최상단의 존과 위로부터 2번째 존은 각각 플러시 채널 A와 플러시 채널 B를 통해 제어부와 연결된 플러시 존이며, 아래로부터 2번째 존과 최하단의 존은 각각 집약 채널 A와 집약 채널 B를 통해 제어부와 연결된 집약 존이다.
이 경우, 집약 채널 A 및 집약 채널 B를 통해 2개의 집약 존을 이용하여 특정 SSTable 파일에 대한 집약 작업이 수행되는 도중에도 플러시 채널 A 및 플러시 채널 B는 이용 가능하기 때문에, 집약 작업의 수행 여부와 무관하게 2개의 플러시 존을 이용하여 다른 SSTable 파일에 대한 플러시 작업을 수행할 수 있어 사용자의 입출력 요청에 신속한 응답이 가능하게 된다.
다시 도 1을 참조하여 제어부(120)에 의한 집약 작업을 설명한다.
집약 작업은 스토리지 내 하나의 레벨에서 복수의 파일을 읽은 후, 스토리지 내 다른 레벨로 기록하는 작업이므로, 필연적으로 스토리지 내 두 레벨을 대상으로 수행된다. 이하의 실시예에서는, 이러한 집약 작업 중, 스토리지 내 최상단 레벨(레벨 0)의 공간에 저장된 복수의 파일을 읽고 합병하여 그 아래 레벨(레벨 1)의 공간에 기록하는 집약 작업을 '레벨 0 집약 작업'이라 지칭한다.
그런데, 플러시 존과 집약 존으로 구별된 존 스토리지에서는 위와 같은 레벨 0 집약 작업이 플러시 존과 첫번째 레벨의 집약 존 사이에서 수행되어야 하는 바, 레벨 0 집약 작업에 의해 플러시 작업 시 입출력 간섭이 발생할 우려가 있다.
이를 방지하기 위해, 일 실시예에 따른 제어부(120)는 레벨 0 집약 작업이 수행될 시점에서, 해당 시점에 플러시 작업이 수행되지 않는 플러시 존을 이용하여 집약 존과의 사이에서 레벨 0 집약 작업을 수행할 수 있다.
구체적으로, 플러시 존은 존 내부에 가용 용량이 존재하는 활성 플러시 존(Active flush zone) 및 존 내부에 가용 용량이 존재하지 않는 불변 플러시 존(Immutable flush zone)을 포함할 수 있으며, 이때 제어부(120)는 불변 플러시 존에 저장된 복수의 파일을 대상으로 레벨 0 집약 작업을 수행할 수 있다.
즉 다시 말하면, 활성 플러시 존의 경우 존 내부에 가용 용량이 존재하는 관계로 메모리 영역으로부터 플러시 작업이 발생할 수 있다. 따라서 플러시 작업이 발생할 가능성이 없는 불변 플러시 존을 대상으로 레벨 0 집약 작업을 수행할 경우, 레벨 0 집약 작업에 의해 플러시 작업에 입출력 간섭이 발생할 가능성을 원천적으로 차단할 수 있다. 이로 인해, 플러시 작업에 대한 응답 시간이 급증하는 문제(Latency spike)를 방지하여 사용자 경험이 향상될 수 있다.
이와 관련하여, 이하의 도 4를 참조하여 상세히 설명하기로 한다.
도 4는 레벨 0 집약 작업이 수행되는 실시예를 나타내는 예시도(400)이다.
도 4를 참조하면, 좌측은 LSM-Tree 자료 구조에 기초하여 키-값에 대한 저장을 수행하는 존 스토리지에서의 플러시 작업, 레벨 0 집약 작업 및 집약 작업이 수행되는 과정을 개념적으로 도시한 것이고, 우측은 플러시 작업 시 간섭 발생을 방지할 수 있는 일 실시예에 따른 레벨 0 집약 작업 방식을 도시한 것이다.
먼저 도 4의 좌측에 도시된 대로, 메모리(110) 영역에서는 데이터가 기 설정된 크기의 멤테이블(Memtable)에 저장될 수 있으며, 이와 같은 프로세스가 진행됨에 따라 저장된 데이터의 크기가 멤테이블의 용량을 초과하면 불변 멤테이블(Immutable Memtable)로 변환되어 스토리지(130)에 기록되는 플러시 작업이 수행될 수 있다.
한편, 스토리지(130)는 LSM-Tree 자료 구조에 기반하여 다층 레벨로 구성된 저장 공간을 포함할 수 있는 바, 도 4의 좌측에는 최상단 레벨을 L0, 최하단 레벨을 L6으로 하여 총 7층의 레벨로 구성된 저장 공간이 도시되어 있다. 또한, 각 레벨마다의 저장 공간의 용량은 L0에서 8메가바이트(MB), L1에서 10메가바이트, L6에서 1테라바이트(TB) 등으로, 상층에서 하층으로 갈수록 증가한다. 그러나 이는 예시적인 것으로, 스토리지(130)에 포함된 저장 공간의 레벨 층수 및 각 레벨마다의 저장 공간의 용량은 실시예에 따라 다양하게 설정될 수 있음에 유의해야 한다.
이와 같은 스토리지(130) 내 저장 공간의 구조 하에서, 상층 레벨의 저장 공간에 저장된 복수의 파일들이 합병되어 하층 레벨의 저장 공간에 하나의 파일로 기록되는 집약 작업이 수행될 수 있다. 도 4의 좌측에서는 L2의 저장 공간에 각각 저장된 SSTable 파일들이 합병되어 L3의 저장 공간에 하나의 SSTable 파일로 기록되는 집약 작업이 도시되었으나, 이는 예시적인 것으로, 상술한 정의를 고려할 때 집약 작업은 L0의 저장 공간과 L1의 저장 공간 사이에서 수행되거나, L5의 저장 공간과 L6의 저장 공간 사이에서 수행되는 등 서로 다른 레벨의 저장 공간들 사이에서라면 특정 레벨에 한정되지 않고 수행될 수 있다.
그런데, 특히 L0의 저장 공간은 플러시 작업 시에 데이터가 기록되는 저장 공간으로 이용될 뿐만 아니라 집약 작업 시에도 합병될 데이터가 선택되는 저장 공간으로 이용된다는 특수성이 있다. 이에, L0의 저장 공간과 L1의 저장 공간 사이에서 수행되는 집약 작업을 레벨 0 집약 작업으로 세분화할 수 있다.
도 4의 우측을 참조하면, 이러한 레벨 0 집약 작업 수행으로 인한 플러시 작업에의 성능 간섭을 방지하기 위해, 활성 플러시 존과 불변 플러시 존으로 구분된 플러시 존이 도시되어 있다.
구체적으로, 데이터가 아직 기록되지 않아 가용 용량이 존재하는 1열의 플러시 존은 활성 플러시 존으로 설정되었으며, 데이터가 이미 기록되어 가용 용량이 존재하지 않는 2열의 플러시 존은 불변 플러시 존으로 설정되었다.
도 4의 우측에 도시된 대로, 레벨 0 집약 작업은 불변 플러시 존에 저장된 파일들을 합병 대상으로 하여, 합병된 파일을 집약 존에 기록하는 형태로 수행된다.
일 실시예에서, 복수의 플러시 존 각각의 종류를 활성 플러시 존 또는 불변 플러시 존으로 설정하는 '플러시 존의 구분'은 제어부(120)에 의해 수행될 수 있다. 이 경우, 제어부(120)는 실시간 또는 기 설정된 주기마다 각 플러시 존의 가용 용량을 모니터링하여 활성 플러시 존 중 가용 용량이 없어진 플러시 존을 불변 플러시 존으로 변경 설정하고, 불변 플러시 존 중 가용 용량이 확보된 플러시 존을 활성 플러시 존으로 변경 설정할 수 있다.
그러나, '플러시 존의 구분'을 수행하는 주체가 반드시 제어부(120)에 한정된 것은 아니며, 실시예에 따라서는 키-값 스토어 파일 저장 장치(100) 내 별도의 모듈(미도시) 또는 키-값 스토어 파일 저장 장치(100) 외부의 별도 장치(미도시)가 '플러시 존의 구분'을 수행할 수도 있다.
다시 도 1을 참조하면, 일 실시예에 따른 제어부(120)는 스토리지(130)에 저장될 파일 또는 기 저장된 파일 각각의 핫-콜드 특성을 구분하고, 구분된 핫-콜드 특성에 기초하여 각 파일을 배치 또는 재배치할 수 있다.
구체적으로, 제어부(120)는 기 설정된 임계치 이상의 액세스 빈도를 갖는 핫 파일과 임계치 미만의 액세스 빈도를 갖는 콜드 파일을 서로 다른 존에 배치할 수 있다. 이와 관련하여, 이하의 도 5를 참조하면 다음과 같다.
도 5는 일 실시예에 따른 핫-콜드 특성을 고려한 파일 배치를 설명하기 위한 예시도(500)이다.
도 5를 참조하면, 키-값 스토어를 구현함에 있어서 LSM-Tree 자료 구조 상의 레벨에 따라 데이터를 구분하여 저장할 수 있도록 플러시 존(Flush Zones), 핫 존(Hot Zones), 콜드 존(Cold Zones)이 분리될 수 있다.
구체적으로, 제어부(120)는 파일을 각 존에 저장하기에 앞서 파일 각각의 핫-콜드 특성에 기초하여 파일 각각에 레벨 정보를 입력할 수 있다. 이때, 파일 각각의 레벨 정보는 파일 각각에 대한 엑세스 빈도 및 업데이트 빈도 중 적어도 하나에 기초하여 결정될 수 있다.
이에 따라, 특정 기준 이상의 액세스 빈도 및/또는 업데이트 빈도를 갖는 것으로 판단된 핫 파일은 핫 존에, 특정 기준 미만의 액세스 빈도 및/또는 업데이트 빈도를 갖는 것으로 판단된 콜드 파일은 콜드 존에 배치되며, 그 결과 존 스토리지에는 파일들이 분산 저장됨과 동시에 핫-콜드 특성 별로도 구분되게 된다.
이 경우, 도 5에 도시된 것처럼 각 존 별로 유효한 데이터들을 포함하는 블록(valid block)과 유효하지 않은 데이터들을 포함하는 블록(invalid block)의 빈도가 편중되며, 이를 통해 향후 스토리지의 가비지 컬렉션에 소요되는 비용을 최소화하고 존 회수(Zone reclaim) 성능을 향상시킬 수 있다.
상기 몇몇 실시예들에서, 메모리(110), 제어부(120) 및 스토리지(130) 각각은 통신 네트워크를 통해 키-값이나 키-값을 포함하는 파일 등의 데이터를 주고받을 수 있고, 이때 통신 네트워크는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wire area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.
도 6은 일 실시예에 따른 키-값 스토어 파일 저장 방법을 설명하기 위한 흐름도이다.
도 6에 도시된 방법은 예를 들어, 상술한 키-값 스토어 파일 저장 장치(100)에 의해 수행될 수 있다.
우선, 키-값 스토어 파일 저장 장치(100) 내 메모리(110)는 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록한다(610).
이후, 키-값 스토어 파일 저장 장치(100) 내 제어부(120)는 스토리지(130)에 포함된 복수의 존 중 적어도 일부 존을 플러시 존으로, 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존으로 구별한다(620).
이후, 키-값 스토어 파일 저장 장치(100) 내 제어부(120)는 플러시 존을 이용하여, 메모리(110)로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 스토리지(130)에 저장하는 플러시 작업을 수행한다(630).
한편, 키-값 스토어 파일 저장 장치(100) 내 제어부(120)는 집약 존을 이용하여, 스토리지(130) 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 집약 작업을 수행한다(640).
도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
특히, 키-값 스토어 파일 저장 장치(100)에 의해 플러시 작업과 집약 작업은 각각 별개의 존인 플러시 존과 집약 존을 이용하여 수행되는 바, 630 단계 및 640 단계는 어느 한 단계가 나머지 한 단계보다 앞서 수행될 수도 있고, 두 단계가 동시에 수행될 수도 있다.
도 7은 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경(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: 제어부
130: 스토리지

Claims (14)

  1. 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록하는 메모리;
    상기 메모리로부터 수신한 데이터를 스토리지에 저장하는 제어부; 및
    복수의 존을 포함하는 스토리지를 포함하고,
    상기 제어부는, 상기 메모리로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 상기 스토리지에 저장하는 플러시(Flush) 작업 및 상기 스토리지 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 집약(Compaction) 작업을 수행하되, 상기 복수의 존 중 적어도 일부 존을 플러시 존(Flush zone)으로, 상기 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존(Compaction zone)으로 구별하여, 상기 플러시 존을 이용하여 상기 플러시 작업을 수행하고 상기 집약 존을 이용하여 상기 집약 작업을 수행함에 따라 레벨 0 집약 작업이 플러시 존과 첫 번째 레벨의 집약 존 사이에서 수행되도록 하며, 상기 레벨 0 집약 작업이 수행될 시점에서 상기 플러시 작업이 수행되지 않는 플러시 존을 이용하여 집약 존 사이에서 상기 레벨 0 집약 작업을 수행하도록 하는, 키-값 스토어 파일 저장 장치.
  2. 청구항 1항에 있어서,
    상기 스토리지는,
    복수의 채널을 통해 상기 제어부와 연결되며, 상기 복수의 채널별로 할당된 복수의 존을 포함하고,
    상기 제어부는,
    상기 플러시 존에 할당된 채널과 상기 집약 존에 할당된 채널이 상이하도록 상기 플러시 존과 상기 집약 존을 구별하는, 키-값 스토어 파일 저장 장치.
  3. 청구항 1항에 있어서,
    상기 플러시 존은,
    존 내부에 가용 용량이 존재하는 활성 플러시 존(Active flush zone) 및 존 내부에 가용 용량이 존재하지 않는 불변 플러시 존(Immutable flush zone)을 포함하고,
    상기 제어부는,
    상기 플러시 존에 저장된 복수의 파일을 합병하여 상기 집약 존에 하나의 파일로 기록하는 레벨 0 집약 작업을 수행할 경우, 상기 불변 플러시 존에 저장된 복수의 파일을 대상으로 상기 레벨 0 집약 작업을 수행하는, 키-값 스토어 파일 저장 장치.
  4. 청구항 1항에 있어서,
    상기 제어부는,
    로그 구조 병합 트리(LSM-Tree; Log Structured Merge-Tree) 자료 구조에 기초하여 키-값에 대한 저장을 수행하는, 키-값 스토어 파일 저장 장치.
  5. 청구항 4항에 있어서,
    상기 단위 공간은, 기 설정된 크기의 멤테이블(Memtable)이고,
    상기 파일은, 기 설정된 크기의 SSTable 파일인, 키-값 스토어 파일 저장 장치.
  6. 청구항 4항에 있어서,
    상기 제어부는,
    상기 LSM-Tree 자료 구조에 따라 상기 복수의 존을 다층 레벨로 구성하고, 상기 파일 각각의 핫-콜드 특성에 따라 상기 파일 각각에 레벨 정보를 입력하고, 상기 파일 각각을 상기 레벨 정보와 매칭되는 레벨의 존에 저장하는, 키-값 스토어 파일 저장 장치.
  7. 청구항 6항에 있어서,
    상기 레벨 정보는,
    상기 파일 각각의 액세스 빈도 및 업데이트 빈도 중 적어도 하나에 기초하여 결정되는, 키-값 스토어 파일 저장 장치.
  8. 메모리에서, 외부로부터의 데이터 입력 요청에 기초하여 하나 이상의 키-값들을 기 정의된 단위 공간에 기록하는 단계;
    제어부에서, 스토리지에 포함된 복수의 존 중 적어도 일부 존을 플러시 존(Flush zone)으로, 상기 플러시 존을 제외한 나머지 존 중 적어도 일부 존을 집약 존(Compaction zone)으로 구별하는 단계;
    상기 제어부에서, 상기 플러시 존을 이용하여, 상기 메모리로부터 수신한 하나 이상의 키-값들을 기 정의된 형태의 파일로 상기 스토리지에 저장하는 플러시(Flush) 작업을 수행하는 단계; 및
    상기 제어부에서, 상기 집약 존을 이용하여, 상기 스토리지 내 하나의 레벨에 존재하는 복수의 파일을 합병하여 다른 레벨에 하나의 파일로 기록하는 집약(Compaction) 작업을 수행함에 따라 레벨 0 집약 작업이 플러시 존과 첫 번째 레벨의 집약 존 사이에서 수행되도록 하며, 상기 레벨 0 집약 작업이 수행될 시점에서 상기 플러시 작업이 수행되지 않는 플러시 존을 이용하여 집약 존 사이에서 상기 레벨 0 집약 작업을 수행하는 단계를 포함하는, 키-값 스토어 파일 저장 방법.
  9. 청구항 8항에 있어서,
    상기 스토리지는,
    복수의 채널을 통해 상기 제어부와 연결되며, 상기 복수의 채널별로 할당된 복수의 존을 포함하고,
    상기 구별하는 단계는,
    상기 플러시 존에 할당된 채널과 상기 집약 존에 할당된 채널이 상이하도록 상기 플러시 존과 상기 집약 존을 구별하는, 키-값 스토어 파일 저장 방법.
  10. 청구항 8항에 있어서,
    상기 플러시 존은,
    존 내부에 가용 용량이 존재하는 활성 플러시 존(Active flush zone) 및 존 내부에 가용 용량이 존재하지 않는 불변 플러시 존(Immutable flush zone)을 포함하고,
    상기 집약 작업을 수행하는 단계는,
    상기 플러시 존에 저장된 복수의 파일을 합병하여 상기 집약 존에 하나의 파일로 기록하는 레벨 0 집약 작업을 수행할 경우, 상기 불변 플러시 존에 저장된 복수의 파일을 대상으로 상기 레벨 0 집약 작업을 수행하는, 키-값 스토어 파일 저장 방법.
  11. 청구항 8항에 있어서,
    상기 제어부는,
    로그 구조 병합 트리(LSM-Tree; Log Structured Merge-Tree) 자료 구조에 기초하여 키-값에 대한 저장을 수행하는, 키-값 스토어 파일 저장 방법.
  12. 청구항 11항에 있어서,
    상기 단위 공간은, 기 설정된 크기의 멤테이블(Memtable)이고,
    상기 파일은, 기 설정된 크기의 SSTable 파일인, 키-값 스토어 파일 저장 방법.
  13. 청구항 11항에 있어서,
    상기 제어부는,
    상기 LSM-Tree 자료 구조에 따라 상기 복수의 존을 다층 레벨로 구성하고, 상기 파일 각각의 핫-콜드 특성에 따라 상기 파일 각각에 레벨 정보를 입력하고, 상기 파일 각각을 상기 레벨 정보와 매칭되는 레벨의 존에 저장하는, 키-값 스토어 파일 저장 방법.
  14. 청구항 13항에 있어서,
    상기 레벨 정보는,
    상기 파일 각각의 액세스 빈도 및 업데이트 빈도 중 적어도 하나에 기초하여 결정되는, 키-값 스토어 파일 저장 방법.
KR1020210099684A 2021-07-29 2021-07-29 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법 KR102545480B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210099684A KR102545480B1 (ko) 2021-07-29 2021-07-29 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법
US17/869,908 US20230033773A1 (en) 2021-07-29 2022-07-21 Apparatus and method for storing file of key value store on zoned storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210099684A KR102545480B1 (ko) 2021-07-29 2021-07-29 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20230018032A KR20230018032A (ko) 2023-02-07
KR102545480B1 true KR102545480B1 (ko) 2023-06-20

Family

ID=85038500

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210099684A KR102545480B1 (ko) 2021-07-29 2021-07-29 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법

Country Status (2)

Country Link
US (1) US20230033773A1 (ko)
KR (1) KR102545480B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934657B2 (en) * 2022-08-16 2024-03-19 Micron Technology, Inc. Open block management in memory devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211235A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355109B2 (en) * 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
KR102513903B1 (ko) * 2015-12-03 2023-03-28 삼성전자주식회사 불휘발성 메모리 모듈 및 메모리 시스템
US9990150B2 (en) * 2016-03-22 2018-06-05 Toshiba Memory Corporation Method to provide transactional semantics for updates to data structures stored in a non-volatile memory
US11392544B2 (en) 2018-02-06 2022-07-19 Samsung Electronics Co., Ltd. System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system
CN110825794B (zh) * 2018-08-14 2022-03-29 华为云计算技术有限公司 分区合并方法和数据库服务器
US11249899B2 (en) * 2018-09-19 2022-02-15 Cisco Technology, Inc. Filesystem management for cloud object storage
KR102233880B1 (ko) * 2019-02-13 2021-03-30 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법
KR20210077467A (ko) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US11360708B1 (en) * 2020-06-30 2022-06-14 Amazon Technologies, Inc. Storage device write barriers
KR102653133B1 (ko) * 2020-12-11 2024-04-01 단국대학교 산학협력단 Mu-mimo 전송을 위한 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211235A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management

Also Published As

Publication number Publication date
KR20230018032A (ko) 2023-02-07
US20230033773A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
US11082206B2 (en) Layout-independent cryptographic stamp of a distributed dataset
CN106354745B (zh) 用于提供计算机装置的接口的方法和计算机装置
US9542105B2 (en) Copying volumes between storage pools
US9213715B2 (en) De-duplication with partitioning advice and automation
US9256542B1 (en) Adaptive intelligent storage controller and associated methods
US10268716B2 (en) Enhanced hadoop framework for big-data applications
US9665485B2 (en) Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system
EP2869203B1 (en) Computer system, and arrangement of data control method
KR102034833B1 (ko) 플래시 저장장치의 내부 병렬성을 이용하는 키 값 기반의 데이터 액세스 장치 및 방법
US9201787B2 (en) Storage device file system and block allocation
US9842057B2 (en) Storage apparatus, storage system, and data read method
KR20200067962A (ko) Ssd에 데이터를 기록하는 방법 및 장치
WO2019001020A1 (zh) 基于分布式系统的存储空间整理方法、装置及系统
US20140181455A1 (en) Category based space allocation for multiple storage devices
KR101544309B1 (ko) 스트림 기반의 비휘발성 메모리 제어 방법 및 장치
CN113419685B (zh) 基于smr的raid创建、针对raid的数据写入及raid恢复方法
KR102264119B1 (ko) CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치
CN108304142B (zh) 一种数据管理方法和装置
KR102545480B1 (ko) 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법
US10380066B2 (en) File system with multi-class in situ tiered archiving
US10482012B1 (en) Storage system and method of operating thereof
US9507794B2 (en) Method and apparatus for distributed processing of file
US20230409235A1 (en) File system improvements for zoned storage device operations
KR20230017040A (ko) 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법
US10621149B1 (en) Stable File System

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