KR20230012412A - 저장 방법, 저장 장치 및 저장 시스템 - Google Patents

저장 방법, 저장 장치 및 저장 시스템 Download PDF

Info

Publication number
KR20230012412A
KR20230012412A KR1020220074336A KR20220074336A KR20230012412A KR 20230012412 A KR20230012412 A KR 20230012412A KR 1020220074336 A KR1020220074336 A KR 1020220074336A KR 20220074336 A KR20220074336 A KR 20220074336A KR 20230012412 A KR20230012412 A KR 20230012412A
Authority
KR
South Korea
Prior art keywords
data block
file
layer
key
database
Prior art date
Application number
KR1020220074336A
Other languages
English (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 삼성전자주식회사
Publication of KR20230012412A publication Critical patent/KR20230012412A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/064Management of blocks
    • 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/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

저장 방법은 데이터베이스에서 병합될 레이어를 결정하는 단계; 상기 데이터 베이스에서 병합될 레이어의 파일을 기초하여 수정될 데이터 블록을 결정하는 단계; 상기 수정될 데이터 블록에 대응하는 키에 따라 메모리에서 해당 데이터 블록을 독출하고 독출된 데이터 블록을 재구성하는 단계; 상기 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 상기 메모리에서의 상기 수정될 데이터 블록을 상기 재구성된 데이터 블록으로 교체하는 단계; 및 상기 재구성된 데이터 블록의 키 및 통계 정보를 상기 데이터베이스의 해당 파일에 저장하는 단계를 포함한다.

Description

저장 방법, 저장 장치 및 저장 시스템 { STORAGE METHOD, STORAGE DEVICE AND STORAGE SYSTEM }
본 발명은 데이터 저장 기술에 관한 것으로, 보다 상세하게는 저장 방법, 저장 장치 및 저장 시스템에 관한 것이다.
현재, 수백 페타바이트(PB)의 데이터를 저장하고 액세스하는 것은 큰 과제이다. 오픈 소스 RocksDB는 수백 페타바이트(PB)의 데이터를 저장하고 액세스하는 데 사용되는 데이터베이스이다. RocksDB는 Facebook의 개방형 저장 데이터베이스이며 C++로 작성된 임베디드 키-밸류 (Key-Value, KV) 데이터베이스이다. RocksDB는 데이터가 저장 장치에서 SST(Sorted Sequence Table) 파일 형태로 존재하는 LSM(Log Structured Merge) 저장 엔진을 사용하여 데이터를 저장한다.
그러나 RocksDB의 관련 기술에서는 압축 과정에서 데이터 블록이 변경되면 SST 파일에서 다음 데이터 블록의 데이터 구조에 영향을 미치며, 다음 파일의 데이터 블록에도 영향을 미치게 된다. 이로 인해 기존 및 변경되지 않은 많은 양의 데이터가 중복 처리되어 기입 증폭이 크게 증가한다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 저장 방법, 저장 장치 및 저장 시스템을 제공한다.
본 발명의 일 실시예에 따르면, 저장 방법은 데이터베이스에서 병합될 레이어를 결정하는 단계; 상기 데이터베이스에서 병합될 레이어의 파일을 기초하여 수정될 데이터 블록을 결정하는 단계; 상기 수정될 데이터 블록에 대응하는 키에 따라, 메모리에서 해당 데이터 블록을 독출하고, 독출된 데이터 블록을 재구성하는 단계; 상기 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 상기 메모리에서 상기 수정될 데이터 블록을 상기 재구성된 데이터 블록으로 교체하는 단계; 및 상기 재구성된 데이터 블록의 키 및 통계 정보를 상기 데이터베이스의 해당 파일에 저장하는 단계를 포함한다.
본 발명의 일 실시예에 따른 저장 장치는, 데이터베이스에 병합될 레이어를 결정하는 제1 결정 유닛; 상기 병합될 레이어의 파일에 기초하여 수정될 데이터 블록을 결정하도록 구성된 제2 결정 유닛; 상기 수정될 데이터 블록에 대응하는 키에 따라, 메모리에서 해당 데이터 블록을 독출하고, 독출된 데이터 블록을 재구성하는 재구성 유닛; 상기 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 상기 메모리에서 상기 수정될 데이터 블록을 상기 재구성된 데이터 블록으로 교체하는 교체 유닛; 및 상기 재구성된 데이터 블록의 키 및 통계 정보를 상기 데이터베이스의 해당 파일에 저장하는 기입 유닛을 포함한다.
본 발명의 다른 실시예에 따르면, 컴퓨터 판독 가능 기록 매체는 컴퓨터 프로그램을 저장한다. 컴퓨터 프로그램은 프로세서에 의해 실행될 때 상술한 저장 방법의 일부 또는 전체를 구현한다.
본 발명의 일 실시예에 따른 저장 시스템은 메모리, 데이터베이스 및 상술한 저장 장치를 포함한다. 메모리는 데이터 블록 및 재구성된 데이터 블록을 저장하도록 구성되고 데이터베이스는 재구성된 데이터 블록의 키 및 통계 정보를 저장하도록 구성된다.
본 발명의 실시예에 따른 저장 방법 및 저장 장치를 제공하여, 데이터베이스의 파일에 원래 저장된 데이터 블록을 메모리에 저장하고, 데이터 블록과 관련된 정보만 후속 호출 및 재구성을 위해 데이터베이스의 파일에 저장한다. 메모리에 저장되는 데이터 블록의 크기가 가변적이기 때문에 데이터 블록이 데이터베이스에 저장될 때와 같이 데이터 블록의 크기가 더 이상 고정되지 않으므로 데이터 블록의 바이트 크기는 일정 범위 내에서 변경될 수 있다. 따라서 데이터베이스의 파일에 대응하는 데이터 블록은 길이가 가변적일 수 있다.
본 개시의 예시적인 실시예의 상기 및 기타 목적 및 특징은 실시예를 예시적으로 도시하는 첨부 도면과 함께 다음의 설명을 통해 명확해질 것이다.
도 1은 RocksDB의 압축 과정에서 데이터를 삽입하는 것을 나타내는 도면이다.
도 2는 LSM 기반 데이터베이스 시스템의 각 레이어에서의 기입 동작 유형의 분포를 비교한 도면이다.
도 3은 본 발명의 일 실시예에 따른 저장 방법을 나타내는 흐름도이다.
도 4는 블록 SSD와 KV SSD 아키텍처의 비교를 나타내는 도면이다.
도 5는 본 발명의 예시적인 실시예에 따른 예시적인 가변 길이 SST 파일의 포맷을 나타내는 제1 도면이다.
도 6은 본 발명의 예시적인 실시예에 따른 예시적인 가변 길이 SST 파일의 포맷을 나타내는 제2 도면이다.
도 7은 본 발명의 예시적인 실시예에 따른, 가변 길이 SST 파일의 압축 과정에서 데이터를 삽입하는 것을 나타내는 도면이다.
도 8은 본 발명의 예시적인 실시예에 따른, KV SSD에 기초한 가변 길이 SST 파일의 압축을 나타내는 흐름도이다.
도 9는 본 발명의 예시적인 실시예에 따른, LSM 기반 데이터베이스 시스템의 최악의 경우의 압축 과정을 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 저장 모듈을 나타내는 블록도이다.
다음의 설명에서, 본 발명의 일반적인 개념(들)의 추가적인 장점이 설명될 것이며, 그 중 일부는 설명을 통해 명확하거나, 본 발명의 일반적인 개념의 구현을 통해 학습될 수 있다.
다음의 특정 구현방식들은 독자가 여기에 설명된 방법, 장치 및/또는 시스템의 포괄적인 이해를 얻는 데 도움이 되도록 제공된다. 그러나, 본 출원의 개시를 이해한 후에, 본 명세서에 기재된 방법, 장치 및/또는 시스템의 다양한 변경, 수정 및 균등물이 명백할 것이다. 예를 들어, 본 문서에 기술된 동작의 순서는 예시일 뿐이며, 이에 한정되지 않으며, 특정한 순서로 수행되어야 하는 동작을 제외하고는 본 출원의 개시 내용을 이해한 후 변경될 수 있다. 또한, 보다 명확하고 간결하게 하기 위하여 해당 기술 분야에 알려진 특징에 대한 설명은 생략될 수 있다. 여기에 설명된 특징은 다른 형태로 구현될 수 있으며 여기에 설명된 예에 제한되는 것으로 해석되지 않는다. 반대로, 여기에 설명된 예는 여기에 설명된 방법, 장치, 및/또는 시스템을 구현하는 많은 가능한 방법 중 일부만을 예시하기 위해 제공되었으며, 이는 본 출원의 개시를 이해한 후에 명확해질 것이다.
본 명세서에서 사용된 용어는 단지 다양한 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하기 위해 사용된 것은 아니다. 문맥상 명백하게 달리 지시하지 않는 한, 단수형은 복수형도 포함하는 것으로 의도된다. "포함하는", "구성하는" 및 "갖는"이라는 용어는 명시된 기능, 번호, 작업, 구성 요소, 요소 및/또는 이들의 조합의 존재를 나타내지만 하나 이상의 다른 기능, 번호, 작업, 구성 요소, 요소 및/또는 이들의 조합의 존재 또는 추가를 배제하지 않는다.
본 명세서에서 사용되는 모든 용어(기술 용어 및 과학 용어 포함)는 달리 정의되지 않는 한, 본 발명을 이해한 후에 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 본 명세서에서 이와 같이 명시적으로 정의되지 않는 한, 용어(예: 일반 사전에 정의된 용어)는 관련 분야의 맥락 및 본 발명에서의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 너무 형식적으로 해석되어서는 안 된다.
또한, 실시예를 설명함에 있어서, 널리 알려진 관련 구조 또는 기능에 대한 구체적인 설명이 본 발명의 설명을 흐릴 수 있는 경우에는 그 상세한 설명을 생략할 수 있다.
관련 기술에서 RocksDB의 SST 파일의 데이터 블록은 고정된 크기 갖으며, 일반적으로 4K이다. 압축과정동안 SST 파일에서의 한 데이터 블록의 변경은 SST 파일에서 후속 데이터 블록의 데이터 구조에 영향을 미치며 심지어 다음 파일의 데이터 블록의 데이터 구조에도 영향을 미친다. 도 1에 도시된 바와 같이 Li+1 레이어의 제i 및 제i+1 파일이 압축에 참여하도록 선택되고 제i 파일의 데이터 블록은 [1 2 4 5], [ 6 7 8 9], [ 10 11 12 13] ...... [50 51 52 53]이고, 제i+1 파일의 데이터 블록은 [54 55 56 57], [58 59 60 61], [62 63] 64 65] ...... [94 95 96 97]이다. SST 파일이 순서대로 있다. 데이터 3은 제i 파일의 제1 데이터 블록에 삽입되어야 한다. 제i 파일의 제1 데이터 블록은 [1 2 3 4]가 되며, SST 파일의 블록은 고정 크기를 갖으므로 재구성 후 제i 파일의 제2 데이터 블록에 데이터 5가 나타난다. 제i 파일의 마지막 데이터는 제i+1 파일의 제1 데이터 블록에 나타날 수 있으며, 이로 인해 제i+1 파일의 데이터가 변경된다. 또한 압축 과정은 SST 파일 단위로 이루어진다. 즉, 압축에 참여하는 Li 레이어 및 Li+1 레이어의 모든 파일은 독출되고, 분석되고, 정렬되고, 재구성되며, 재기입된다.
도 2는 LSM 기반 데이터베이스 시스템의 각 레이어에서 기입 동작 유형의 분포를 비교한 도면이다. 도 2의 LSM 기반 데이터베이스 시스템은 S1, S2 및 S3으로 표기된 3개의 데이터베이스 시스템을 포함한다.
도 2에 도시된 바와 같이, LSM(Log Structured Merge)을 기반으로 하는 3개의 데이터베이스 시스템의 각 레이어의 디스크 기입 동작 분석을 통해, L0 레이어의 파일에 있는 데이터는 메인 메모리에서 가져오고, L0 레이어에는 새 데이터만 있다. L1~L4 레이어의 파일은 압축 동작에 의해 생성되며, LSM 기반 데이터베이스 시스템의 L1~L4 레이어 압축에서 기입 동작의 소모는 주로 많은 기존 및 변경되지 않은 데이터의 복사에서 발생함으로써, 기입 증폭이 크게 증가한다.
상기와 같은 문제점과 관련하여, 본 발명의 일 실시예에 따른 저장 방법의 흐름도는 도 3에 도시된다. 저장 방법은 저장 장치에 적용되며, 전자 장치에 의해 부분적으로 또는 전체적으로 구현되는 저장 프로세스로 수행될 수 있다.
단계(S301)에서, 데이터베이스에서 병합되어야 하는 레이어가 결정된다. 전술한 데이터베이스는 키-밸류 KV 데이터베이스일 수 있다. 예를 들어, 데이터베이스는 RocksDB일 수 있다. 도 3의 저장 방법에 사용되는 데이터베이스는 상술한 데이터베이스에 한정되지 않는다.
본 발명의 이 실시예에서, 데이터베이스에서 병합되어야 하는 레이어를 결정하는 단계는 데이터베이스에 있는 파일의 바이트 크기가 증가하는 것을 감지하는 단계, 데이터베이스에 있는 각 레이어의 바이트 크기를 획득하는 단계, 바이트 임계 값을 초과하는 바이트 크기를 갖는 이전 레이어를 결정하는 단계, 및 이전 레이어와 후속 레이어가 병합되어야 한다고 결정하는 단계를 포함한다. 후속 레이어는 이전 레이어에 인접한 다음 레이어이다. 후속 레이어는 주소 지정을 통해 및/또는 후속 레이어와 이전 레이어가 생성된 시기를 통해 이전 레이어와 논리적으로 인접할 수 있고/있거나 데이터베이스의 저장 위치에서 물리적으로 인접할 수 있다. 해당 실시예를 통해 압축 동작은 편리하고 빠르게 트리거될 수 있다. 상기 바이트 임계 값은 각 레이어의 데이터 블록의 통계 정보에 저장될 수 있다.
예를 들어, 기입된 데이터의 양이 제1 소정의 임계 값과 같은 특정 값에 도달하는 것으로 검출되면, 기입된 데이터를 저장하기 위해 SST 파일이 데이터베이스에 추가될 필요가 있다. 이때, 통계 정보로부터 데이터베이스의 각 계층의 바이트 크기를 얻을 수 있다. 각 레이어는 레이어에 특정한 바이트 임계 값을 가질 수 있다. 임의의 레이어의 바이트 크기가 레이어의 바이트 임계 값을 초과하는 경우 레이어의 바이트 임계 값을 초과하는 바이트 크기를 갖는 해당 레이어는 Li 계층이고 해당 레이어에 인접한 다음 레이어가 Li+1 레이어이다. 또는 데이터가 기입된 파일에 대응하는 레이어(논리 트리의 제0 레이어)를 먼저 결정하고 제0 레이어의 현재 총 바이트 수를 먼저 해당 레이어의 바이트 임계 값과 비교한다. 현재 총 바이트 수가 해당 레이어의 바이트 임계 값보다 큰 경우 제0 레이어가 Li 레이어이고, 해당 레이어와 인접한 다음 레이어(즉, 제1 레이어)가 Li+1 레이어이다. 하나의 압축이 완료된 후 제1 레이어의 현재 총 바이트 수는 계속 해당 레이어의 바이트 해당 임계 값과 비교하여 판단된다. 현재 총 바이트 수가 해당 레이어의 바이트 임계 값보다 크면 제1 레이어가 Li 레이어이고 해당 레이어와 인접한 다음 레이어(즉, 제2 레이어)가 Li+1 레이어이다. 현재 총 바이트 수가 해당 계층의 바이트 임계 값보다 크지 않으면 압축이 중지될 수 있다.
본 실시예에서, 병합에 참여하는 Li 레이어 및 Li+1 레이어의 모든 파일은 적절한 시점에 백그라운드 스레드에 의해 삭제될 수 있다. 삭제 순서는 압축의 순서일 수도 있고 필요에 따라 동적으로 설정되는 순서일 수도 있다.
또한, 최초 병합 후 병합할 레이어도 다음과 같이 결정될 수 있다. SST 파일의 일부를 삭제해야 하는 경우 병합해야 하는 Li 레이어와 Li+1 레이어도 삭제된 파일에 대응하는 레이어의 현재 총 바이트 수 및 해당 레이어의 바이트 임계 값에 따라 결정될 수 있다. 데이터베이스의 각 레이어는 각자의 바이트 임계 값을 가질 수 있으며 바이트 임계 값은 실제 필요에 따라 동적으로 설정할 수 있다.
본 발명의 실시예에서, 임의의 레이어의 기입된 데이터의 바이트 크기가 해당 레이어의 제1 미리 결정된 임계 값을 초과할 때 데이터베이스의 파일 크기의 증가가 검출될 수 있다. 즉, 해당 레이어의 제1 미리 결정된 임계 값을 초과하는 해당 레이어의 기입된 데이터의 바이트 크기를 기반으로 데이터베이스의 파일 크기 증가가 감지될 수 있다.
단계(S302)에서, 데이터베이스에서 병합되어야 하는 레이어의 파일에 기초하여 수정해야 하는 데이터 블록이 결정된다.
본 발명의 일 실시예에서, 병합해야 하는 레이어의 파일을 기반으로 수정해야 하는 데이터 블록을 결정하는 단계는 병합해야 하는 이전 레이어에서의 파일 바이트 크기가 가장 큰 파일 및 미리 결정된 파일을 획득하는 단계를 포함할 수 있다. 미리 결정된 파일은 이전 레이어에서의 파일 바이트 크기가 가장 큰 파일의 사용자 키를 포함하는 파일이고, 사용자 키는 파일의 데이터 블록에 대응하는 키에 포함된다. 사용자 키 범위는 파일 바이트 크기가 가장 큰 파일의 사용자 키 및 미리 결정된 파일의 사용자 키에 기초하여 획득될 수 있다. 사용자 키 범위와 중첩된 사용자 키를 가진 후속 레이어의 데이터 블록이 획득될 수 있다. 사용자 키 범위와 중첩된 사용자 키를 가진 이전 레이어의 데이터 블록이 획득될 수 있다. 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록이 수정이 필요한 데이터 블록으로 결정될 수 있다. 본 실시예를 통해 사용자 키의 중첩에 따라 수정이 필요한 데이터 블록을 결정함으로써 재구성 과정에서 관련 없는 데이터 블록의 재구성을 줄일 수 있다.
예를 들어, 병합되어야 하는 Li 레이어와 Li+1 레이어가 결정된 후, Li 레이어의 파일은 바이트 크기에 따라 정렬되어 제1 순서를 갖는 파일을 얻을 수 있고, 제1 순서를 갖는 파일은 Li 레이어의 다른 파일들과 비교하여 제1 순서를 갖는 파일의 사용자 키를 포함하는 파일, 즉, 상기 미리 결정된 파일을 획득할 수 있다. 그런 다음 제1 순서를 갖는 파일의 사용자 키와 미리 결정된 파일의 사용자 키를 기초로 하여 사용자 키 범위를 획득할 수 있다. Li+1 레이어의 파일에서 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록을 쿼리할 수 있다. Li 레이어의 파일에서 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록을 쿼리할 수 있다. 사용자 키 범위와 중첩된 사용자 키를 갖는 데이터 블록은 수정이 필요한 데이터 블록이다.
단계(S303)에서, 도 3의 방법은 수정해야 하는 데이터 블록에 대응하는 키에 따라 메모리에서 해당 데이터 블록을 독출하고 독출된 데이터 블록을 재구성하는 단계를 포함한다. 위에서 언급한 메모리는 KV 스토리지를 직접 지원하는 솔리드 스테이트 드라이브일 수 있다. 예를 들어, 솔리드 스테이트 드라이브는 키-밸류 솔리드 스테이트 드라이브(KV SSD)일 수 있다. 메모리는 상술한 솔리드 스테이트 디스크에 한정되지 않으며, 메모리가 데이터 블록을 저장할 수 있고 저장된 데이터 블록의 바이트 크기가 가변적이면 본 발명에 적용될 수 있다. 상술한 키는 데이터 블록의 사용자 키 및 일련 번호를 포함할수 있지만 이에 제한되지 않는다. 일련 번호는 동일한 사용자 키가 나타나는 순서를 나타내는 데 사용된다. 사용자 키는 사용자 지향적이며 사용자가 데이터 블록을 호출할 때 사용해야 하는 키이다.
본 발명의 실시예에서, 해당 데이터 블록은 메모리에서 독출될 수 있고, 독출된 데이터 블록은 수정이 필요한 데이터 블록에 대응하는 키에 따라 다음과 같이 재구성될 수 있다. 메모리 내의 해당 데이터 블록은 수정이 필요한 데이터 블록에 대응하는 사용자 키에 따라 독출될 수 있다. 사용자 키는 데이터 블록에 대응하는 키에 포함된다. 각 사용자 키에 대응하는 가장 큰 일련번호에 대응하는 데이터는 해당 데이터 블록에서 선택될 수 있다. 일련 번호는 데이터 블록에 대응하는 키에 포함되어 있으며 동일한 사용자 키가 나타나는 순서를 나타내는 데 사용된다. 선택된 데이터는 사용자 키에 따라 정렬된 후 재구성된 데이터 블록으로 사용된다.
예를 들어, 수정이 필요한 데이터 블록의 사용자 키에 따라 해당 데이터 블록을 KV SSD에서 독출하고, 독출된 데이터 블록에서 동일한 사용자 키에 대응하는 데이터를 쿼리할 수 있다. 동일한 사용자 키에 대응하는 데이터 중 가장 큰 일련 번호에 대응하는 데이터만 유지될 수 있다. 다른 일련 번호에 대응하는 데이터를 삭제한 다음 유지된 데이터는 사용자 키에 따라 정렬되어 재구성된 데이터 블록을 형성한다.
단계(S304)에서, 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 메모리에서 수정이 필요한 데이터 블록을 재구성된 데이터 블록으로 대체한다. 데이터 블록의 바이트 크기는 일정 범위 내에서 가변적이므로 재구성된 데이터 블록이 데이터 블록 길이 임계 값(예: 아래의 제1 기 설정된 값)을 초과하지 않으면 재구성된 후 수정이 필요한 데이터 블록이 메모리의 해당 위치에 직접 저장된다. 변경할 필요가 없는 데이터 블록은 그대로 KV SSD에 유지될 수 있으며, 데이터 블록의 메타 정보는 가변 길이 SST 파일에 저장되는 데 필요한 모든 정보일 수 있다. 상기 제1 기 설정된 값은 실제 필요에 따라 동적으로 설정될 수 있다.
단계(S305)에서, 재구성된 데이터 블록의 키 및 통계 정보는 데이터베이스의 해당 파일에 저장된다.
본 발명의 실시예에서, 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하는 경우, 재구성된 데이터 블록은 제1 기 설정된 값에 따라 분할될 수 있다. 메모리에서 수정해야 하는 데이터 블록은 분할된 데이터 블록으로 교체된다. 즉, 재구성된 데이터 블록은 제1 기 설정된 값을 초과하는 재구성된 데이터 블록의 바이트 크기에 기초하여 제1 기 설정된 값에 따라 분할된다. 재구성된 데이터 블록의 키 및 통계 정보를 데이터베이스의 해당 파일에 저장하는 것은 분할된 데이터 블록의 키 및 통계 정보를 데이터베이스의 해당 파일에 저장하는 것을 포함한다. 따라서, 데이터 블록의 바이트 크기는 너무 크지 않을 것이다.
예를 들어, 재구성된 데이터 블록이 데이터 블록의 길이 임계 값(즉, 제1 기 설정된 값)을 초과하는 경우, 재구성된 데이터 블록은 데이터 블록의 길이 임계 값에 따라 여러 데이터 블록들로 분할될 것이다. 여러 데이터 블록들이 KV SSD에 기입되고 그들의 대응된 메타 정보가 가변 길이 SST 파일에 저장된다. 변경할 필요가 없는 데이터 블록은 그대로 KV SSD에 유지될 수 있으며, 데이터 블록의 메타 정보는 가변 길이 SST 파일에 저장되는 데 필요한 전부일 수 있다. 위에서 언급한 분할 프로세스는 제1 기 설정된 값과 재구성된 데이터 블록의 바이트 크기를 사용한다. 예를 들어, 제1 기 설정된 값이 16이고 재구성된 데이터 블록의 바이트 크기가 33이라고 가정하면 재구성된 데이터 블록은 크기가 16, 16, 1인 3개의 데이터 블록으로 분할될 수 있다.
본 발명의 실시예에서, 재구성된 데이터 블록의 키 및 통계 정보가 데이터베이스의 해당 파일에 저장된 후, 해당 파일의 모든 데이터 블록의 바이트 크기가 제2 기 설정된 값을 초과하는지 여부를 추가로 판단할 수 있다. 판정 결과가 '예'인 경우 해당 파일을 제2 기 설정된 값에 따라 분할하고, 재구성된 데이터 블록의 키 및 통계 정보와 해당 파일의 수정되지 않은 데이터 블록의 키 및 통계 정보를 키의 순서대로 분할된 파일에 각각 저장한다. 판정 결과가 '아니오'인 경우 재구성된 데이터 블록의 키 및 통계 정보는 해당 파일에 저장된다. 상술한 제2 기 설정된 값은 실제 필요에 따라 동적으로 설정될 수 있다. 따라서 판정 결과에 따라 처리 방식이 달라진다.따라서, 하나의 파일에 대응하는 데이터 블록의 총 바이트 크기는 너무 크지 않을 것이다.
예를 들어, 재구성된 데이터 블록의 관련 정보를 SST 파일에 저장한 후 가변 길이 SST 파일에 대응하는 데이터 블록의 총 바이트 크기가 특정 범위를 초과하는 경우, 가변 길이 SST 파일은 여러 파일들로 분할된다. 예를 들어, 제2 기 설정된 값이 100이고 해당 파일의 바이트 크기가 103이라고 가정하면 해당 파일은 크기가 100과 3인 두 개의 파일로 분할될 수 있다. 이와 같이 각 파일에 대응하는 전체 데이터 블록의 바이트 크기는 너무 크지 않을 것이다.
따라서, 압축 과정에서 입도(granularity)가 정제되고, 압축은 SST 파일 단위가 아닌 데이터 블록 단위로 수행된다. 압축과정에서 변경된 데이터 블록의 경우 데이터 블록을 독출하고, 분석하고, 정렬하고, 재구성하고, 재기입하여 특정 범위 내에서 데이터 블록의 크기가 가변적일 수 있다. 압축과정에서 변경되지 않은 데이터 블록은 그대로 KV SSD에 저장되며 변경된 데이터 블록의 영향을 받지 않는다. 이를 통해 불필요한 작업과 IO 소모를 줄여 기입 증폭을 줄이고 기입 성능을 향상시킬 수 있다. 데이터베이스를 RocksDB로, 스토리지를 KV SSD로 하여 압축 과정을 도 4 내지 도8과 함께 자세히 설명할 것이다.
도 4는 블록 SSD 아키텍처(왼쪽에 도시됨)와 KV SSD 아키텍처(오른쪽에 도시됨)의 비교를 나타내는 도면이다. 도4에서 도시된 바와 같이, 앞서 언급한 KV SSD는 새로운 형태의 SSD이며, KV 스토리지를 직접 지원할 수 있는 장치이다. 블록 SSD의 경우, KV 데이터베이스의 기입 및 독출과정은 KV에서 파일로, 파일에서 논리적 블록 주소(LBA)로, LBA에서 물리적 블록 주소(PBA)로의 데이터 변환을 완료해야 한다. 그러나 KV SSD는 KV 스토리지의 핵심 기능 중 일부를 구현하는 향상된 플래시 변환 레이어 (Flash Translation Layer, FTL)을 사용한다. KV SSD는 외부에 KV 인터페이스를 제공하며 호스트 측 애플리케이션의 KV 요청에 직접 응답할 수 있다. 이것은 데이터 독출 및 기입 과정을 간소화하여 데이터 독출 및 기입의 효율성을 향상시킬 뿐만 아니라 호스트 측의 CPU 및 메모리 소모를 크게 줄인다.
KV 저장 엔진 또는 KV 데이터베이스(예: RocksDB)와 함께 KV SSD를 사용하면 여러 측면에서 큰 개선을 가져올 것이다. 따라서 RocksDB의 SST 파일의 데이터 블록은 KV SSD에 저장될 수 있다. 예를 들어, RocksDB의 독출 및 기입 성능은 KV SSD의 장점을 이용하여 확보할 수 있다. 데이터 블록의 크기가 일정 범위 내에서 변경되면 도 5에서 도시된 바와 같이 데이터를 무작위로 독출하고 기입하는 KV SSD의 성능이 안정적이다. 가변 바이트 길이의 데이터 블록은 KV SSD를 통해 저장될 수 있으므로 가변 길이 SST 파일을 구현한다. 다른 예로, 가변 바이트 길이의 데이터 블록은 KV SSD를 통해 저장되어 SST 파일의 각 데이터 블록이 서로 독립적이고 독출 과정과 기입 과정이 서로 영향을 미치지 않도록 할 수 있다. 이것은 후속 압축과정에서 입도를 정제하는데 편리하다.
본 실시예에서, 전술한 데이터 블록에 대응하는 키 및 데이터 블록의 통계 정보가 파일의 메타 정보의 인덱스 블록에 저장될 수 있다. 즉, 메타 정보에서의 인덱스 블록의 데이터 구조를 확장할 수 있고, 데이터 블록의 키와 통계 정보를 추가하여 데이터 블록의 키와 통계 정보를 원래 구조를 기반으로 편리하고 신속하게 저장할 수 있다. 구체적으로, 도 6에서 도시한 바와 같이, SST 파일의 메타 정보에서의 데이터 인덱스 블록의 데이터 구조가 확장되어 원래를 기준으로 하여 KV SSD에서의 키의 관련 필드(SST 파일의 파일 번호와 SST 파일에서의 데이터 블록의 일련 번호)과 데이터 블록의 통계 정보가 추가된다. 다음, KV SSD에서의 키의 관련 필드와 데이터 블록의 통계 정보는 각각 KV SSD를 독출 및 기입하는 과정 및 압축과정에서 사용될 수 있다.
도 7은 본 발명의 예시적인 실시예에 따른 가변 길이 SST 파일의 압축 과정에서 데이터를 삽입하는 것을 나타내는 도면이다. 도 7에서 도시한 바와 같이, 압축 과정에서 데이터 3을 삽입해야 하는 경우 데이터 블록 [1 2 4 5]가 [1 2 3 4 5]로 변경되고 다른 데이터 블록은 변경되지 않은 상태로 유지된다.
도 8은 본 발명의 예시적인 실시예에 따른, KV SSD에 기초한 가변 길이 SST 파일의 압축을 나타내는 흐름도이다. 도 8에서 도시한 바와 같이 압축 과정은 다음과 같다.
먼저, 단계(S810)에서 병합해야 될 Li 레이어와 Li+1 레이어의 SST 파일을 선택한다. 이 과정에서 먼저 기록된 데이터의 바이트 크기를 감지할 수 있다. 바이트 크기가 특정 값(위에서 설명한 제1 미리 설정된 임계 값)에 도달하면 특정 값에 도달한 바이트 크기를 기반으로 SST 파일이 데이터베이스에 추가된 것으로 결정할 수 있다. 이때, 데이터가 기입되는 레이어와 해당 레이어에 인접한 다음 레이어가 병합해야 될 Li 레이어와 Li+1 레이어로 결정된다. 추가된 파일에 대응하는 레이어의 현재 바이트 크기와 레이어의 바이트 임계 값 간의 관계도 모니터링 될 수 있다. 추가된 파일에 대응하는 레이어의 현재 바이트 크기가 레이어의 바이트 임계 값보다 큰 경우 추가된 파일에 대응하는 레이어와 해당 레이어에 인접한 다음 레이어가 병합해야 될 Li 레이어와 Li+1 레이어로 사용된다.
두 번째로, 단계(S820)에서 SST 파일의 데이터 블록이 수정이 필요하는지 여부를 판단한다. 이 과정에서 Li 레이어의 파일을 바이트 크기에 따라 정렬하여 제1 순서를 갖는 파일 및 Li 레이어의 제1 순서의 파일의 사용자 키와 중첩되는 사용자 키를 갖는 파일(즉, 위에서 설명한 미리 결정된 파일)을 획득한다. 제1 순서를 갖는 파일의 사용자 키 및 미리 결정된 파일의 사용자 키를 기반으로, 사용자 키 범위를 획득한다. Li+1 레이어에서 사용자 키 범위와 중첩되는 데이터 블록을 쿼리하고, Li 레이어에서 사용자 키 범위와 중첩되는 데이터 블록을 쿼리한다. 사용자 키 범위와 중첩되는 데이터 블록이 수정이 필요한 데이터 블록으로 결정된다.
또한, 단계(S830)에서 KV SSD로부터 수정이 필요한 데이터 블록을 독출하고 분석하고, 정렬하며 재구성한다.
이후, 단계(S840)에서 재구성된 데이터 블록의 바이트 크기가 데이터 블록 임계 값(전술한 제1 기 설정된 값)을 초과하는지 여부를 판단하고, 데이터 블록 임계 값을 데이터 블록의 통계 정보에 저장할 수 있다.
이후, S850에서 재구성된 데이터 블록의 바이트 크기가 데이터 블록 임계 값을 초과하는 경우(S840, 예), 재구성된 데이터 블록을 데이터 블록 임계 값에 따라 여러 데이터 블록으로 분할한다. 그런 다음, 단계(S860)에서 여러 데이터 블록이 KV SSD에 저장되고 여러 데이터 블록의 관련 정보가 가변 길이 SST 파일에 기입된다. 재구성된 데이터 블록의 바이트 크기가 임계 값을 초과하지 않는 경우(S840, 아니요), 단계(S860)에서 재구성된 데이터 블록을 KV SSD에 직접 저장하고 재구성된 데이터 블록의 관련 정보를 가변 길이 SST 파일에 기입한다.
상기 동작을 완료한 후, 단계(S870)에서, 기입 후 가변 길이 SST 파일에 대응하는 전체 데이터 블록들의 총 바이트 크기가 파일 임계 값(전술한 제2 기 설정된 값)을 초과하는지 여부를 판단한다. 전체 바이트 크기가 파일 임계 값(전술한 제2 기 설정된 값)을 초과하는 경우(S870, 예), SST 파일은 파일 임계 값에 따라 여러 파일로 분할된다. 또는 S880과 같이 총 바이트 크기가 파일 임계 값을 초과하면(S870, 예) 현재 가변 길이 SST 파일도 닫히고 재구성된 데이터 블록의 메타 정보는 다음 가변 길이 SST 파일에 기입된다. 파일 임계 값이 초과되지 않으면(S870, 아니요), 단계(S890)에서 재구성된 데이터 블록의 메타 정보는 현재 가변 길이 SST 파일에 기입된다.
앞서 설명한 압축에 관련된 모든 파일이 삭제되고 재구성된 데이터 블록이 압축에 관련되지 않은 파일에 저장된다. 예를 들어, 위에서 언급한 바와 같이 재구성된 데이터 블록의 메타 정보는 다음 가변 길이 SST 파일에 기입되거나 새로운 SST 파일에 저장될 수도 있다. 파일을 삭제한 후 해당 레이어의 현재 총 바이트 수를 다시 계산한다. 해당 레이어의 현재 총 바이트 수와 해당 레이어의 바이트 임계 값을 비교하여 비교 결과를 획득한다. 획득한 비교 결과는 다음 압축에 사용될 수 있다.
상기 실시예의 유효성을 검증하기 위해, 본 발명은 압축과정에서의 최악의경우를 예로 압축 과정에서 LSM 저장 엔진의 기입 증폭을 계산함으로써 압축 기입 증폭을 감소시키는 것을 보여준다. 최악의 경우에서는 L0 레이어의 파일이 압축을 통해 마지막 레이어까지 진입하게 된다. 표 1에서는 필요한 기본 정의를 제공하고, LSM 기반 데이터베이스 시스템의 최악의 경우의 압축 과정은 도 9에서 도시 된다.
항목 정의 단위
N SST파일에서의 데이터 블록의 수량
T 각 레이어간의 총 데이터 량의 배수
L LSM 트리의 레이어의 수량
L0 레이어의 파일은 압축의 트리거 조건에 도달하고 L1 레이어의 파일과 압축된다. L0 레이어의 데이터는 L1 레이어에 속한다. LSM 트리의 특성에 따르면 다음 레이어의 총 용량은 이전 레이어의 총 용량의 T배이다. 최악의 경우 L0 레이어와 L1 레이어는 T번의 압축을 수행해야 하며 다음 L1 레이어의 데이터는 L2 레이어의 압축 조건을 충족하고 L2 레이어에 속한다. 동일한 최악의 경우, L1 레이어는 L2 레이어의 데이터와 T번의 압축을 수행해야 하며 L2 레이어와 L3 레이어의 압축 조건이 트리거되어 데이터가 L3 레이어에 속한다. L0 레이어의 데이터가 L 레이어에 속할 때 TХL번의 압축이 수행된다. 기입 증폭이 각 레이어의 각 데이터 블록에 할당된 경우 RocksDB의 압축 과정 중 기입 증폭은 다음과 같다.
Figure pat00001
가변 길이 SST 파일의 경우 각 압축에 대해 평균적으로 데이터 블록의 1/T만 변경되고 본 발명의 기입 증폭은 다음과 같다.
Figure pat00002
이론적 분석을 통해, 본 발명의 기입 증폭은 원래의 LSM 기반 데이터베이스 시스템의 기입 증폭에 비해 T배 감소될 수 있다.
본 발명의 다른 실시예에 따르면, 전술한 실시예의 저장 장치에 응용하는 저장 모듈이 제공된다. 도 10을 참조하면, 저장 모듈은 제1 결정 유닛(102), 제2 결정 유닛(104), 재구성 유닛(106), 교체 유닛(108) 및 기입 유닛(1010)을 포함한다.
도 10을 포함하는 본 명세서의 도면은 "유닛", "회로" 또는 "블록"과 같은 레이블이 있는 회로를 나타내고 참조한다는 것이 명백 해야 한다. 본 명세서에 기술된 바와 같이, 예시들은 기술된 기능 또는 기능들을 수행하는 유닛, 회로 및 블록의 관점에서 설명 및 예시될 수 있다. 여기서 제1 결정 유닛, 제2 결정 유닛, 재구성 유닛, 교체 유닛 및 기입 유닛 등으로 지칭될 수 있는 유닛, 회로 및 블록들은 논리 게이트, 집적 회로, 마이크로프로세서, 마이크로컨트롤러, 메모리 회로, 수동 전자 부품, 능동 전자 부품, 광학 장치 및 유선 회로 등과 같은 아날로그 및/또는 디지털 회로에 의해 물리적으로 구현된다. 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 회로는 예를 들어 하나 이상의 반도체 칩 또는 인쇄 회로 기판 등과 같은 기판 지지체에 구현될 수 있다. 유닛, 회로 또는 블록을 구성하는 회로는 전용 하드웨어 또는 프로세서(예: 하나 이상의 프로그래밍된 마이크로프로세서 및 관련 회로)에 의해, 또는 유닛, 회로 또는 블록의 일부 기능을 수행하기 위한 전용 하드웨어와 유닛, 회로 또는 블록의 다른 기능을 수행하는 프로세서의 조합에 의해 구현될 수 있다. 예시의 각 유닛, 회로 또는 블록은 본 발명의 범위를 벗어나지 않는 한 둘 이상의 상호작용하는 이산 회로 또는 블록으로 물리적으로 분리될 수 있다. 마찬가지로, 예시의 유닛, 회로 및 블록은 본 발명의 범위를 벗어나지 않는 한 물리적으로 더 복잡한 유닛, 회로 및 블록으로 결합될 수 있다.
제1 결정 유닛(102)은 데이터베이스에서 병합해야 할 레이어들을 결정하도록 구성된다. 제2 결정 유닛(104)은 병합해야 할 레이어들의 파일에 기초하여 수정해야 할 데이터 블록을 결정하도록 구성된다. 재구성 유닛(106)은 수정해야 할 데이터 블록에 대응하는 키에 따라 메모리에서 대응하는 데이터 블록을 독출하고 독출된 데이터 블록을 재구성하도록 구성된다. 교체 유닛(108)은 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 메모리에서 수정해야 할 데이터 블록을 재구성된 데이터 블록으로 교체하도록 구성된다. 기입 유닛(1010)은 재구성된 데이터 블록의 키 및 통계 정보를 데이터베이스의 해당 파일에 저장하도록 구성된다.
본 발명의 일 실시예에서, 교체 유닛(108)은 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하는 경우, 재구성된 데이터 블록을 제1 기 설정된 값에 따라 분할하고 분할된 데이터 블록으로 메모리에서 수정해야 하는 블록 데이터를 대체하도록 더 구성된다. 기입 유닛(1010)은 분할된 데이터 블록의 키 및 통계 정보를 데이터베이스의 해당 파일에 저장하도록 더 구성된다.
본 발명의 일 실시예에서, 기입 유닛(1010)은 재구성된 데이터 블록의 키 및 통계 정보를 데이터베이스의 해당 파일에 저장한 후, 해당 파일의 모든 데이터 블록의 바이트 크기가 제2 기 설정된 값을 초과하는지 여부를 판단하도록 더 구성된다. 판정 결과가 예인 경우, 기입 유닛(1010)은 제2 기 설정된 값에 따라 해당 파일을 분할하고, 재구성된 데이터 블록의 키 및 통계 정보 및 해당 파일의 수정되지 않은 데이터 블록의 키 및 통계 정보를 키의 순서에 따라 각각 분할된 파일에 저장하도록 구성된다. 판정 결과가 아니오인 경우, 기입 유닛(1010)은 재구성된 데이터 블록의 키 및 통계 정보를 해당 파일에 저장하도록 구성된다.
본 발명의 실시예에서, 제1 결정 유닛(102)은 데이터베이스 내의 파일이 증가하는 것을 검출하도록 더 구성된다. 제1 결정 유닛(102)은 또한 데이터베이스의 각 레이어의 바이트 크기를 획득하고 바이트 임계 값을 초과하는 바이트 크기를 갖는 이전 레이어를 결정(예를 들어, 식별)하도록 구성된다. 제1 결정 유닛(102)은 이전 레이어 및 후속 레이어를 병합해야 할 레이어로 결정하도록 더 구성된다. 후속 레이어는 이전 레이어에 인접한 다음 레이어이다.
본 발명의 실시예에서, 제1 결정 유닛(102)은 기입된 데이터의 바이트 크기가 제1 미리 결정된 임계 값을 초과하는 경우 데이터베이스의 파일이 증가하는 것으로 결정하도록 더 구성된다.
본 발명의 일 실시예에서, 제2 결정 유닛(104)은 병합해야 할 이전 레이어에서의 가장 큰 파일 바이트 크기를 갖는 파일 및 미리 결정된 파일을 획득하도록 더 구성된다. 미리 결정된 파일은 파일 바이트 크기가 가장 큰 파일의 사용자 키를 포함하는 이전 레이어의 파일이고, 사용자 키는 파일의 데이터 블록에 대응하는 키에 포함된다. 제2 결정 유닛(104)은 가장 큰 파일 바이트 크기를 갖는 파일의 사용자 키 및 미리 결정된 파일의 사용자 키에 기초하여 사용자 키 범위를 획득하도록 구성된다. 제2 결정 유닛(104)은 또한 병합해야 할 레이어들 중 후속 레이어의 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록 및 병합해야 할 레이어들 중 이전 레이어의 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록을 획득하도록 구성된다. 제2 결정 유닛(104)은 또한 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록을 수정해야 할 데이터 블록으로 결정하도록 구성된다.
본 발명의 실시예에서, 재구성 유닛(106)은 수정해야 할 데이터 블록에 대응하는 사용자 키에 따라 메모리에서 대응하는 데이터 블록을 독출하도록 더 구성된다. 사용자 키는 데이터 블록에 대응하는 키에 포함된다. 재구성 유닛(106)은 대응하는 데이터 블록에서 각 사용자 키에 대응하는 가장 큰 일련 번호에 대응하는 데이터를 선택하도록 구성되며, 여기서 일련 번호는 데이터 블록에 대응하는 키에 포함되고 동일한 사용자 키가 나타나는 순서를 나타내는데 사용된다. 재구성 유닛(106)은 또한 사용자 키에 따라 정렬된 후 선택된 데이터를 재구성된 데이터 블록으로 사용하도록 구성된다.
본 발명의 다른 실시예에 따르면, 메모리, 데이터베이스 및 전술한 실시예에서 설명한 저장 장치를 포함하는 저장 시스템이 제공된다. 메모리는 데이터 블록을 저장하도록 구성되고 데이터베이스는 데이터 블록의 키 및 통계 정보를 저장하도록 구성된다. 통계 정보에는 바이트 크기, 바이트 임계 값 등과 같은 데이터 블록 재구성과 관련된 정보가 포함된다.
상술한 본 발명의 실시예들은 저장 시스템 및 저장 방법을 제공한다. 예를 들어, 전술한 실시예는 새로운 스토리지 하드웨어 KV SSD를 기반으로 RocksDB를 최적화하기 위한 솔루션을 제공하며, 여기서 RocksDB의 SST 파일의 데이터 블록은 KV SSD에 저장될 수 있고, 데이터 크기가 특정 범위에서 변화할 경우, 데이터를 무작위로 독출하고 기입하는 KV SSD의 성능은 안정적이다. 이것은 RocksDB의 독출 및 기입 성능을 보장하고 가변 길이 SST 파일을 구현할 수 있다. 또한 RocksDB의 압축 과정의 입도를 파일 단위에서 데이터 블록의 단위로 정제하여 압축 과정에서 SST 파일의 데이터 블록 중 일부의 변경으로 인해 모든 데이터 블록의 독출, 분석, 재구성 및 재 기입이 발생하는 것을 방지한다. 이는 불필요한 작업과 IO 소모를 감축하여 기입 증폭을 줄이고 기입 성능을 향상시킨다.
또한, 본 발명은 RocksDB의 압축 과정에서 기입 증폭이
Figure pat00003
에서
Figure pat00004
으로 즉 T배 감소될 수 있는 최적화를 설명한다.
본 발명의 일 실시예에 따른 저장 방법 및 저장 장치의 각 유닛/모듈은 하드웨어 구성요소 및/또는 소프트웨어 구성요소로 구현될 수 있음을 이해해야 한다. 당업자는 각 유닛/모듈에 의해 수행되는 정의된 처리에 따라 필드 프로그래머블 게이트 어레이 (Field Programmable Gate Array, FPGA) 또는 애플리케이션 특정 집적 회로 (Application Specific Integrated Circuit, ASIC)를 사용하여 각 유닛/모듈을 구현할 수 있다.
본 발명의 다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 컴퓨터 프로그램을 저장한다. 컴퓨터 프로그램은 프로세서에 의해 실행될 때 본 발명에서 설명된 저장 방법을 구현한다.
구체적으로, 본 발명의 일 실시예에 따른 저장 방법은 컴퓨터 프로그램, 코드 세그먼트, 명령어 또는 이들의 조합을 이용하여 구현될 수 있다. 임의의 컴퓨터 프로그램, 코드 세그먼트, 명령어 또는 이들의 조합은 하나 이상의 비일시적 컴퓨터 판독 가능 저장 매체(들) 또는 하나 이상의 비일시적 컴퓨터 판독 가능 저장 매체(들)에 기록, 저장 또는 고정될 수 있다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템에 의하여 독출된 데이터를 저장할 수 있는 모든 데이터 저장 장치를 말한다. 컴퓨터 판독 가능 저장 매체의 예로는 읽기 전용 메모리, 랜덤 액세스 메모리, 읽기 전용 광 디스크, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치, 및 인터넷을 통한 유무선 전송 경로를 포함한다.
본 발명의 예시적인 실시예에 따르면, 적어도 하나의 프로세서 및 컴퓨터 실행 가능 명령어들을 저장하는 적어도 하나의 메모리를 포함하는 전자 장치가 제공된다. 컴퓨터 실행 가능 명령어는 적어도 하나의 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금 본 발명에서 설명된 저장 방법을 실행하게 한다.
구체적으로, 전자 장치는 넓게는 태블릿 컴퓨터, 스마트 폰, 스마트 워치, 또는 필요한 계산 및/또는 처리 능력을 갖는 임의의 다른 전자 장치일 수 있다. 본 발명의 실시예에서, 전자 장치는 시스템 버스를 통해 연결된 프로세서, 메모리, 네트워크 인터페이스, 통신 인터페이스 등을 포함할 수 있다. 전자 장치의 프로세서는 필요한 계산, 처리 및/또는 제어 기능을 제공하는 데 사용될 수 있다. 전자 장치의 메모리는 비휘발성 저장 매체 및 내부 메모리를 포함할 수 있다. 비휘발성 저장 매체에는 운영체제, 컴퓨터 프로그램 등이 저장될 수 있다. 내부 메모리는 비휘발성 저장 매체의 운영 체제 및 컴퓨터 프로그램의 동작을 위한 환경을 제공할 수 있다. 전자 장치의 네트워크 인터페이스 및 통신 인터페이스는 네트워크를 통해 외부 장치와 연결 및 통신하는데 사용될 수 있다.
이상, 본 발명의 실시예에 대해 설명하였으며, 이상의 설명은 예시에 불과하며 본 발명이 이에 한정되는 것은 아님을 이해해야 한다. 본 발명의 범위 및 정신을 벗어나지 않은 한 많은 수정 및 변경이 당업자에게 자명하다. 본 발명의 범위는 청구 범위에 의해 정의된다.

Claims (10)

  1. 저장 방법으로서,
    데이터베이스에서 병합될 레이어를 결정하는 단계;
    상기 병합될 레이어의 파일을 기초하여 수정될 데이터 블록을 결정하는 단계;
    상기 수정될 데이터 블록에 대응하는 키에 따라 메모리에서 해당 데이터 블록을 독출하고 독출된 데이터 블록을 재구성하는 단계;
    상기 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 상기 메모리에서의 상기 수정될 데이터 블록을 상기 재구성된 데이터 블록으로 교체하는 단계; 및
    상기 재구성된 데이터 블록의 키 및 통계 정보를 상기 데이터베이스의 해당 파일에 저장하는 단계를 포함하는 것을 특징으로 하는 저장 방법.
  2. 제1항에 있어서,
    상기 재구성된 데이터 블록의 바이트 크기가 상기 제1 기 설정된 값을 초과하는 경우, 상기 재구성된 데이터 블록을 제1 기 설정된 값에 따라 분할하는 단계; 및
    상기 메모리에서의 상기 수정될 데이터 블록을 분할된 데이터 블록으로 교체하는 단계를 더 포함하며,
    상기 재구성된 데이터 블록의 상기 키 및 상기 통계 정보를 상기 데이터베이스의 상기 해당 파일에 저장하는 단계는, 상기 분할된 데이터 블록의 상기 키 및 상기 통계 정보를 상기 데이터베이스의 상기 해당 파일에 저장하는 단계를 포함하는 것을 특징으로 하는 저장 방법.
  3. 제2항에 있어서, 상기 재구성된 데이터 블록의 상기 키 및 상기 통계 정보를 상기 데이터베이스의 상기 해당 파일에 저장한 후,
    상기 해당 파일의 모든 데이터 블록의 바이트 크기가 제2 기 설정된 값을 초과하는지 여부를 판단하는 단계;
    판단 결과 예인 경우, 상기 제2 기 설정된 값에 따라 상기 해당 파일을 분할하고, 상기 재구성된 데이터 블록의 상기 키 및 상기 통계 정보와 상기 해당 파일의 수정되지 않은 데이터 블록의 키 및 통계 정보를 키의 순서에 따라 각각 분할된 파일에 저장하는 단계; 및
    판정 결과가 아니오인 경우, 상기 재구성된 데이터 블록의 상기 키 및 상기통계 정보를 상기 해당 파일에 저장하는 단계를 더 포함하는 것을 특징으로 하는 저장 방법.
  4. 제1항에 있어서,
    상기 데이터베이스에서 병합될 레이어를 결정하는 단계는,
    상기 데이터베이스의 파일이 증가하는 것을 감지하는 단계;
    상기 데이터베이스의 각 레이어의 바이트 크기를 획득하는 단계;
    바이트 크기가 해당 레이어의 바이트 임계 값을 초과하는 레이어를 이전 레이어로 결정하는 단계; 및
    상기 이전 레이어 및 후속 레이어를 병합될 레이어로 결정하는 단계를 포함하며, 상기 후속 레이어는 상기 이전 레이어에 인접한 다음 레이어인 것을 특징으로 하는 저장 방법.
  5. 제4항에 있어서,
    상기 데이터베이스의 파일 증가를 감지하는 단계는,
    기입된 데이터의 바이트 크기가 제1 미리 결정된 임계 값을 초과할 경우 상기 데이터베이스의 파일이 증가하는 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 저장 방법.
  6. 제1항에 있어서, 상기 병합될 레이어의 파일에 기초하여 상기 수정될 데이터 블록을 결정하는 단계는,
    상기 병합될 이전 레이어의 파일 바이트 크기가 가장 큰 파일과 미리 결정된 파일을 획득하며 상기 미리 결정된 파일은 상기 이전 레이어의 상기 파일 바이트 크기가 가장 큰 파일의 사용자 키를 포함하는 파일이고, 상기 사용자 키는 파일의 데이터 블록에 대응하는 키에 포함되는 단계;
    상기 파일 바이트 크기가 가장 큰 파일의 상기 사용자 키와 상기 미리 결정된 파일의 사용자 키를 기반으로 사용자 키 범위를 획득하는 단계;
    상기 병합될 레이어 중 후속 레이어의 상기 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록 및 상기 병합될 레이어 중 이전 레이어의 상기 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록을 획득하는 단계; 및
    상기 사용자 키 범위와 중첩되는 사용자 키를 갖는 데이터 블록을 수정될 데이터 블록으로 결정하는 단계를 포함하는 것을 특징으로 하는 저장 방법.
  7. 제1항에 있어서,
    상기 수정될 데이터 블록에 대응하는 키에 따라 해당 데이터 블록을 독출하고 독출된 데이터 블록을 재구성하는 단계는,
    상기 수정될 데이터 블록에 대응하는 사용자 키에 따라 상기 메모리에서 상기 해당 데이터 블록을 독출하고 상기 사용자 키는 상기 데이터 블록에 대응하는 키에 포함되는 단계;
    상기 해당 데이터 블록으로부터 각 사용자 키에 대응하는 가장 큰 일련 번호에 대응하는 데이터를 선택하며, 상기 일련 번호는 상기 데이터 블록에 대응하는 키에 포함되고 동일한 사용자 키가 나타내는 순서를 나타내는데 사용되는 단계; 및
    선택된 데이터를 상기 사용자 키에 따라 정렬한 후 상기 재구성된 데이터 블록으로 사용하는 단계를 포함하는 것을 특징으로 하는 저장 방법.
  8. 저장 장치에 있어서,
    데이터베이스에서 병합될 레이어를 결정하도록 구성된 제1 결정 유닛;
    상기 병합될 레이어의 파일에 기초하여 수정될 데이터 블록을 결정하도록 구성된 제2 결정 유닛;
    상기 수정될 데이터 블록에 대응하는 키에 따라 메모리에서 해당 데이터 블록을 독출하고, 독출된 데이터 블록을 재구성하도록 구성된 재구성 유닛;
    상기 재구성된 데이터 블록의 바이트 크기가 제1 기 설정된 값을 초과하지 않는 경우, 상기 메모리에서 상기 수정될 데이터 블록을 상기 재구성된 데이터 블록으로 교체하는 교체 유닛; 및
    상기 재구성된 데이터 블록의 키 및 통계 정보를 상기 데이터베이스의 해당 파일에 저장하는 기입 유닛을 포함하는 것을 특징으로 하는 저장 장치.
  9. 저장 시스템에 있어서,
    메모리;
    데이터베이스; 및
    제 8항에 따른 저장 장치를 포함하며,
    상기 메모리는 데이터 블록 및 재구성된 데이터 블록을 저장하도록 구성되고, 상기 데이터베이스는 상기 데이터 블록 및 상기 재구성된 데이터 블록의 키 및 통계 정보를 저장하도록 구성되는 것을 특징으로 하는 저장 시스템.
  10. 프로세서에 의해 실행될 때 상기 프로세서로 하여금 제1항의 저장 방법을 실행하도록 구성된 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
KR1020220074336A 2021-07-15 2022-06-17 저장 방법, 저장 장치 및 저장 시스템 KR20230012412A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110799890.7A CN113688096A (zh) 2021-07-15 2021-07-15 存储方法、存储装置和存储系统
CN202110799890.7 2021-07-15

Publications (1)

Publication Number Publication Date
KR20230012412A true KR20230012412A (ko) 2023-01-26

Family

ID=78577086

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220074336A KR20230012412A (ko) 2021-07-15 2022-06-17 저장 방법, 저장 장치 및 저장 시스템

Country Status (3)

Country Link
US (1) US20230024734A1 (ko)
KR (1) KR20230012412A (ko)
CN (1) CN113688096A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114281775A (zh) * 2021-11-16 2022-04-05 三星(中国)半导体有限公司 数据处理方法和数据处理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448924B2 (en) * 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9836229B2 (en) * 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
CN106682184B (zh) * 2016-12-29 2019-12-20 华中科技大学 一种基于日志合并树结构的轻量级合并方法
US10372681B2 (en) * 2017-09-12 2019-08-06 International Business Machines Corporation Tape drive memory deduplication
CN109522283B (zh) * 2018-10-30 2021-09-21 深圳先进技术研究院 一种重复数据删除方法及系统
US10983975B2 (en) * 2019-06-13 2021-04-20 Ant Financial (Hang Zhou) Network Technology Co., Ltd. Data block storage method and apparatus, and electronic device
CN113094372A (zh) * 2021-04-16 2021-07-09 三星(中国)半导体有限公司 数据存取方法、数据存取控制装置及数据存取系统

Also Published As

Publication number Publication date
US20230024734A1 (en) 2023-01-26
CN113688096A (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
US10037158B2 (en) Vertically integrated storage
TWI506430B (zh) 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
WO2013171792A1 (en) Storage control apparatus and storage control method
US20130227246A1 (en) Management information generating method, logical block constructing method, and semiconductor memory device
US20130073798A1 (en) Flash memory device and data management method
US20160188227A1 (en) Method and apparatus for writing data into solid state disk
JP2017021804A (ja) 不揮発性メモリ装置におけるデータ特性基盤データ配置を活用するためのインターフェイス提供方法及びシステム並びに不揮発性メモリ装置とそのデータ特性基盤データ配置方法
US10445022B1 (en) Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
CN111581126B (zh) 一种基于ssd的日志数据保存方法、装置、设备和介质
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US11204864B2 (en) Data storage devices and data processing methods for improving the accessing performance of the data storage devices
US8984251B2 (en) Hinting of deleted data from host to storage device
US8429339B2 (en) Storage device utilizing free pages in compressed blocks
US11176033B2 (en) Data storage devices and data processing methods
KR102345517B1 (ko) 엣지 컴퓨팅을 위해 데이터중복제거 기술이 적용된 casedb(키 벨류 저장장치)
Wang et al. Temperature-aware persistent data management for LSM-tree on 3-D NAND flash memory
CN116257460B (zh) 基于固态硬盘的Trim命令处理方法及固态硬盘
KR20230012412A (ko) 저장 방법, 저장 장치 및 저장 시스템
US8055835B2 (en) Apparatus, system, and method for migrating wear spots
KR20210012085A (ko) 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치
TW202032547A (zh) 寫入控制方法以及資料儲存裝置及其控制器
CN111026678B (zh) 基于固态硬盘的缓存设计方法、装置及计算机设备
US10713163B2 (en) Set aware system data and mapping tables
US20220121568A1 (en) Method and system of manipulation and redundancy removal for flash memories