KR102613518B1 - 오버라이트 머지를 위한 트랜잭션 그룹화를 포함하는 데이터 저장 방법 및 시스템 - Google Patents

오버라이트 머지를 위한 트랜잭션 그룹화를 포함하는 데이터 저장 방법 및 시스템 Download PDF

Info

Publication number
KR102613518B1
KR102613518B1 KR1020200096913A KR20200096913A KR102613518B1 KR 102613518 B1 KR102613518 B1 KR 102613518B1 KR 1020200096913 A KR1020200096913 A KR 1020200096913A KR 20200096913 A KR20200096913 A KR 20200096913A KR 102613518 B1 KR102613518 B1 KR 102613518B1
Authority
KR
South Korea
Prior art keywords
transactions
transaction
key value
value updates
key
Prior art date
Application number
KR1020200096913A
Other languages
English (en)
Other versions
KR20210034481A (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 삼성전자주식회사
Publication of KR20210034481A publication Critical patent/KR20210034481A/ko
Application granted granted Critical
Publication of KR102613518B1 publication Critical patent/KR102613518B1/ko

Links

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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • 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
    • 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/235Update request formulation
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Abstract

데이터 저장 방법은, 보류 중인 큐에서 복수의 트랜잭션들을 식별하고, 상기 트랜잭션들은 복수의 키들에 각각 대응하는 하나 이상의 키 밸류 업데이트들을 가지며; 상기 트랜잭션들 중 상이한 것들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 복수의 키들의 공통적으로 관련된 키를 식별하고; 트랜잭션 그룹 ID들에 할당된 각각의 트랜잭션 ID들에 기초하여 트랜잭션들 그룹 ID들을 상기 트랜잭션들에 각각 할당하고; 상기 할당된 트랜잭션 그룹 ID들에 기초하여 복수의 트랜잭션 그룹들의 각각의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 것을 포함하며; 및 상기 트랜잭션 그룹들 중 동일한 하나에 있는 트랜잭션들의 그룹화된 트랜잭션들에 대하여 공통적으로 관련된 키의 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하는 것을 포함한다.

Description

오버라이트 머지를 위한 트랜잭션 그룹화를 포함하는 데이터 저장 방법 및 시스템{DATA STORAGE METHOD AND SYSTEM INCLUDING TRANSACTION GROUPING FOR OVERWRITE MERGE}
본 개시의 실시예들의 하나 이상의 양상들은 일반적으로 데이터 스토리지에 관한 것이다.
키 밸류 저장소의 동작에서, 주어진 키가 여러 번 기록될 수 있고, 다양한 키가 실질적으로 동시에 업데이트될 수 있다. 다양한 키 밸류를 업데이트 하기 위한 여러 트랜잭션이 보류 큐에 배치될 수 있다. 보류 큐 내의 다른 트랜잭션들은 각각 충돌하는 키 밸류 업데이트에 대응할 수 있으며, 충돌하는 키 밸류 업데이트는 모두 공통 키에 대응된다. 예를 들어, 제1 기록 동작, 또는 제1 트랜잭션은, 이후에, 제2 기록 동작/트랜잭션이 동일한 키에 대해 상이한 키 밸류 업데이트를 수행하려고 시도할 때, 키에 대한 키 밸류 업데이트를 수행하려고 시도할 수 있다.
각 트랜잭션이 처리될 때, 각 키 밸류 업데이트가 차례로 처리된다. 따라서, 특정 키는 다른 키 밸류로 곧바로 다시 업데이트 되도록 키 밸류로 업데이트될 수 있다. 즉, 초기 키 밸류 업데이트가 발생하기 전에, 초기 트랜잭션의 키 밸류 업데이트가 이후 트랜잭션과 무관하게 렌더링되지만, 키 밸류 업데이트는 둘다 발생하며, 어느 하나는 불필요할 수 있다. 이러한 시나리오에서 서로 다른 트랜잭션들은 일반적으로 서로 상대적으로 가까운 시간에 발생한다.
본 개시의 해결하고자 하는 과제는 오버라이트 머지에서 잠재적로 발생할 수 있는 문제를 피하고, 충돌시에도 동일한 키에 대한 트랜잭션의 기록을 안정적으로 머지할 수 있는 트랜잭션 그룹화와 오버라이트 머지의 결합을 제공하는 것이다.
본 명세서에 기술 된 실시예는 데이터 저장에 대한 개선을 제공한다.
본 개시의 일 실시예에 따르면, 데이터 저장 방법은, 보류 중인 큐에서 복수의 트랜잭션들을 식별하고, 상기 트랜잭션들은 복수의 키들에 각각 대응하는 하나 이상의 키 밸류 업데이트들을 가지며; 상기 트랜잭션들 중 상이한 것들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 복수의 키들의 공통적으로 관련된 키를 식별하고; 트랜잭션 그룹 ID들에 할당된 각각의 트랜잭션 ID들에 기초하여 트랜잭션들 그룹 ID들을 상기 트랜잭션들에 각각 할당하고; 상기 할당된 트랜잭션 그룹 ID들에 기초하여 복수의 트랜잭션 그룹들의 각각의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 것을 포함하며; 및 상기 트랜잭션 그룹들 중 동일한 하나에 있는 트랜잭션들의 그룹화된 트랜잭션들에 대하여 공통적으로 관련된 키의 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하는 것을 포함한다.
상기 트랜잭션 그룹들의 충돌된 트랜잭션 그룹 내에 상기 트랜잭션들의 충돌된 트랜잭션에서 충돌이 발생하는 경우, 상기 방법은, 상기 충돌된 트랜잭션 그룹 내에, 상기 충돌하는 데이터 기록을 머지하는 것에 기인하여 상기 충돌된 트랜잭션에 연결된 상기 트랜잭션들 중 연결된 것들만을 상기 충돌된 트랜잭션으로 재시도하는 것을 더 포함한다.
상기 방법은 동일한 각각의 키들에 대응하는 하나 이상의 이후 키 밸류 업데이트들에 의해 관련되지 않은 하나 이상의 초기 키 밸류 업데이트들만을 갖는 상기 트랜잭션들 중 하나를 제거하는 것을 더 포함하며, 상기 이후 키 밸류 업데이트들는 트랜잭션들 중 제거된 하나보다 나중에 발생하는 하나 이상의 다른 트랜잭션들이다.
상기 방법은 상기 복수의 키들의 공통 키에 대응하는 임의의 공통적으로 관련된 키 밸류 업데이트들이 결여된 연속적인 트랜잭션들의 쌍을 결정하고; 및 상기 연속적인 트랜잭션들이 상이한 각각의 트랜잭션 그룹들에 위치되도록 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 각각 할당하는 것을 포함함으로써, 상기 데이터 저장 방법을 더 구현한다.
상기 방법은 상기 복수의 키들의 공통 키에 대응하는 가장 적은 수의 공통적으로 관련된 키 밸류 업데이트들을 갖는 연속적인 트랜잭션들의 쌍을 결정하고; 및 상기 연속적인 트랜잭션들이 상이한 각각의 트랜잭션 그룹들에 위치되도록 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 각각 할당하는 것을 포함함으로써, 상기 데이터 저장 방법을 더 구현한다.
상기 트랜잭션 그룹 ID를 할당하는 것은 상이한 트랜잭션들에 걸쳐 공통적으로 관련된 키 밸류 업데이트들의 총 수의 분석에 더 기초한다.
상기 방법은 상기 트랜잭션 그룹들 중 하나의 상기 충돌하는 데이터 기록의 모든 머지된 키 밸류 업데이트들을 하나 이상의 스토리지 디바이스들에 기록하고; 및 상기 머지된 키 밸류 업데이트들이 모두 상기 하나 이상의 스토리지 디바이스들에 기록된 것으로 확인된 경우에만 상기 트랜잭션 그룹들 중 하나의 상기 머지된 키 밸류 업데이트들에 대응하는 메타데이터를 업데이트하는 것을 더 포함한다.
상기 방법은 상기 트랜잭션 ID들을 상기 트랜잭션들에 할당하는 것을 더 포함한다.
본 개시의 일 실시예에 따르면, 트랜?션 그룹화와 머지를 수행하기 위한 시스템은, 트랜잭션 모듈: 보류 중인 큐에서 복수의 트랜잭션들을 식별하고, 상기 트랜잭션들은 복수의 키들에 각각 대응하는 하나 이상의 키 밸류 업데이트들을 가지며; 상기 트랜잭션들 중 상이한 것들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 복수의 키들의 공통적으로 관련된 키를 식별하고; 트랜잭션 그룹 ID들에 할당된 각각의 트랜잭션 ID들에 기초하여 트랜잭션들 그룹 ID들을 상기 트랜잭션들에 각각 할당하고; 및 상기 할당된 트랜잭션 그룹 ID들에 기초하여 복수의 트랜잭션 그룹들의 각각의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 것을 포함하며; 및 상기 트랜잭션 그룹들 중 동일한 하나에 있는 상기 트랜잭션들의 그룹화된 트랜잭션들에 대해 상기 공통적으로 관련된 키의 상기 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하기 위한 머지 모듈을 포함한다.
상기 시스템은, 상기 트랜잭션 그룹들의 충돌된 트랜잭션 그룹 내에 상기 트랜잭션들의 충돌된 트랜잭션에서 충돌이 발생하는 경우, 상기 트랜잭션 모듈은 상기 충돌된 트랜잭션 그룹 내에, 상기 충돌하는 데이터 기록을 머지하는 것에 기인하여 상기 충돌하는 트랜잭션에 연결된 상기 트랜잭션들 중 연결된 것들만을 상기 충돌된 트랜잭션으로 재시도하는 것을 더 포함한다.
상기 머지 모듈은 동일한 각각의 키들에 대응하는 하나 이상의 이후 키 밸류 업데이트들에 의해 관련되지 않은 하나 이상의 초기 키 밸류 업데이트들만을 갖는 상기 트랜잭션들 중 하나를 제거하는 것을 더 포함하며, 상기 이후 키 밸류 업데이트들는 상기 트랜잭션들 중 제거된 하나보다 나중에 발생하는 하나 이상의 다른 트랜잭션들이다.
상기 트랜잭션 모듈은: 복수의 키들의 공통 키에 대응하는 임의의 공통적으로 관련된 키 밸류 업데이트들이 결여된 연속적인 트랜잭션들의 쌍을 결정하고; 및연속적인 트랜잭션들이 상이한 각각의 트랜잭션 그룹들에 위치되도록 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 각각 할당하는 것을 포함한다.
상기 트랜잭션 모듈은: 복수의 키들의 공통 키에 대응하는 임의의 공통적으로 관련된 키 밸류 업데이트들이 결여된 연속적인 트랜잭션들의 쌍을 결정하고; 및 연속적인 트랜잭션들이 상이한 각각의 트랜잭션 그룹들에 위치되도록 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 각각 할당하는 것을 포함한다.
상기 트랜잭션 그룹 ID를 할당하는 것은 상이한 트랜잭션들에 걸쳐 공통적으로 관련된 키 밸류 업데이트들의 총 수의 분석에 더 기초한다.
상기 시스템은 인플라이트 요청 버퍼를 더 포함하며, 상기 인플라이트 요청 버퍼는: 상기 트랜잭션 그룹들 중 하나의 상기 충돌하는 데이터 기록의 모든 머지된 키 밸류 업데이트들을 하나 이상의 스토리지 디바이스들에 기록하고; 및 상기 머지된 키 밸류 업데이트들이 모두 상기 하나 이상의 스토리지 디바이스들에 기록된 것으로 확인된 경우에만 상기 트랜잭션 그룹들 중 하나의 상기 머지된 키 밸류 업데이트들에 대응하는 메타데이터를 업데이트하는 것을 더 포함한다.
상기 트랜잭션 모듈은 상기 트랜잭션 ID를 상기 트랜잭션들에 할당하도록 더 구성된다.
본 개시의 일 실시예에 따르면, 트랜잭션 그룹화와의 머지를 수행하기 위한 시스템 상에 구현된 비-일시적 컴퓨터 판독 가능 매체로서, 프로세서에서 실행될 때, 데이터 저장 방법을 구현하는 컴퓨터 코드를 갖는 비-일시적 컴퓨터 판독 가능 매체는: 보류 중인 큐에서 복수의 트랜잭션들을 식별하고, 상기 트랜잭션들은 복수의 키들에 각각 대응하는 하나 이상의 키 밸류 업데이트들을 가지며; 상기 트랜잭션들 중 상이한 것들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 복수의 키들의 공통적으로 관련된 키를 식별하고; 트랜잭션 그룹 ID들에 할당된 각각의 트랜잭션 ID들에 기초하여 트랜잭션들 그룹 ID들을 상기 트랜잭션들에 각각 할당하고; 상기 할당된 트랜잭션 그룹 ID에 기초하여 복수의 트랜잭션 그룹들의 각각의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 것을 포함하며; 및 상기 트랜잭션 그룹들 중 동일한 하나에 있는 트랜잭션들의 그룹화된 트랜잭션들에 대하여 공통적으로 관련된 키의 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하는 것을 포함한다.
상기 비-일시적 컴퓨터 판독 가능 매체는 상기 트랜잭션 그룹들의 충돌된 트랜잭션 그룹 내에 트랜잭션들의 충돌된 트랜잭션에서 충돌이 발생할 때, 상기 컴퓨터 코드는, 상기 프로세서 상에서 실행될 때, 상기 충돌하는 트랜잭션 그룹 내에, 상기 충돌하는 데이트 기록을 머지하는 것에 기인하여 상기 충돌된 트랜잭션과 연결되는, 상기 트랜잭션들 중 연결된 것들만 상기 충돌된 트랜잭션으로 재시도함으로써, 상기 데이터 저장 방법을 더 구현한다.
상기 컴퓨터 코드는, 상기 프로세서 상에서 실행될 때, 동일한 각각의 키들에 대응하는 하나 이상의 이후 키 밸류 업데이트들에 의해 관련되지 않는 하나 이상의 초기 키 밸류 업데이트들만을 갖는 트랜잭션들 중 하나를 제거함으로써 상기 데이터 저장 방법을 더 구현하며, 상기 이후 키 밸류 업데이트들은 제거된 트랜잭션들 중 하나보다 나중에 발생하는 하나 이상의 다른 트랜잭션들이다.
상기 컴퓨터 코드는, 상기 프로세서 상에서 실행될 때, 복수의 키들의 공통 키에 대응하는 임의의 공통적으로 관련된 키 밸류 업데이트들이 결여된 연속적인 트랜잭션들의 쌍을 결정하고; 및 상기 연속적인 트랜잭션들이 상이한 각각의 트랜잭션 그룹들에 위치되도록 상기 트랜잭션 그룹 ID들을 연속적인 트랜잭션들에 각각 할당하는 것을 포함함으로써, 상기 데이터 저장 방법을 더 구현한다.
따라서, 본 발명의 실시 예의 시스템은 데이터 일관성을 보장하기 위해 시스템 장애 후에 롤백(시스템에 의해 재시도)되어야하는 트랜잭션의 수를 감소시킴으로써 데이터 저장을 개선 할 수있다.
본 실시예의 비-제한적 및 비-완전한 실시예는 다음의 도면들을 참조하여 설명되며, 달리 명시되지 않는 한, 유사한 도면 부호는 다양한 도면 전체에서 유사한 부분을 지칭한다.
도 1은 오버라이트 머지 및 그로부터 발생하는 트랜잭션 의존성을 나타내는 블록 다이어그램이다;
도 2는 본 개시의 일부 실시예에 따른 트랜잭션 그룹화와의 오버라이트 머지를 도시하는 블록 다이어그램이다;
도 3은 본 개시의 실시예들에 따른, 트랜잭션 그룹화와 함께 오버라이트 머지를 도시한 흐름도이다; 그리고
도 4는 본 개시의 실시예들에 따른 워크플로우를 도시하는 블록도이다.
대응하는 참조 부호는 도면들의 여러 관점들에 걸쳐 대응하는 구성 요소를 나타낸다. 당해 분야의 통상의 기술자는 도면의 요소가 단순성 및 명료성을 위해 도시되어 있으며 반드시 비례적으로 도시된 것은 아님을 이해할 것이다. 예를 들어, 도면에서 일부 요소, 층 및 영역의 치수는 다양한 실시예의 명확성 및 이해를 향상시키는 것을 돕기 위해 다른 요소, 층 및 영역에 비해 과장될 수있다. 또한, 이들 다양한 실시예에 대한 덜 방해되는 관점을 용이하게 하고 설명을 명확하게 하기 위해 실시예의 설명과 관련이 없는 일반적이지만 잘 이해되는 요소 및 부분은 도시되지 않을 수 있다.
본 발명의 특징 및 그 달성 방법은 실시예의 상세한 설명 및 첨부 도면을 참조하면 보다 쉽게 이해될 수있다. 이하, 첨부된 도면을 참조하여 실시예를 보다 상세하게 설명한다. 그러나, 설명된 실시예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명된 실시예에만 한정되는 것으로 해석되어서는 안된다. 오히려, 이들 실시예는 예시로서 제공됨으로써, 본 개시가 철저하고 완전해질 수 있으며, 본 발명 개념의 양태 및 특징을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 완전히 전달할 수 있다. 따라서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 필요하지 않은 프로세스, 요소 및 기술은 설명되지 않을 수있다.
달리 언급되지 않는 한, 유사한 참조 부호는 첨부된 도면 및 기재된 설명 전체에 걸쳐 유사한 요소를 나타내므로, 그 설명은 반복되지 않을 것이다. 또한, 실시예들의 설명과 관련이 없는 부분들은 설명을 명확하게 하기 위해 도시되지 않을 수있다. 도면에서, 요소, 층 및 영역의 상대적인 크기는 명확성을 위해 과장될 수있다.
상세한 설명에서, 설명의 목적으로, 다양한 실시예의 철저한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 이러한 특정 세부 사항 없이 또는 하나 이상의 등가의 구성으로 다양한 실시예가 실시될 수 있음이 명백하다. 다른 경우에, 공지된 구조 및 장치는 불필요하게 다양한 실시예를 불명료하게 하지 않기 위해 블록도 형태로 도시된다.
비록 "제1", "제2", "제3" 등의 용어가 본 명세서에서 다양한 요소, 구성 요소, 영역, 층 및/또는 섹션을 설명하는데 사용되더라도, 이들 요소, 구성 요소, 영역, 층들 및/또는 섹션은 이러한 용어들에 의해 제한되지 않아야한다. 이들 용어는 하나의 요소, 구성 요소, 영역, 층 또는 섹션을 다른 요소, 구성 요소, 영역, 층 또는 섹션과 구별하기 위해 사용된다. 따라서, 후술되는 제1 요소, 구성 요소, 영역, 층 또는 섹션은 본 개시의 사상 및 범위를 벗어나지 않으면 서 제2 요소, 구성 요소, 영역, 층 또는 섹션으로 지칭될 수 있다.
본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥 상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서 사용되는 용어 "포함하다(comprises)", "포함하는(comprising)", "갖다(have)", "갖는(having)", "포함하다(includes)" 및 "포함하는(including)"은 언급된 특징, 정수, 단계, 동작, 요소, 및/또는 구성요소의 존재를 명시하는 것이나, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 및/또는 구성요소의 추가 또는 존재를 배제하는 것은 아닌 것으로 이해될 것이다. 본 명세서에서 사용된, 용어 "및/또는" 관련된 열거된 항목들의 하나이상의 임의의 모든 조합들을 포함한다.
본 명세서에서 사용되는, 용어 "실질적으로", "약", "대략" 및 이와 유사한 용어들은 근사의 용어로서 사용되어지며, 정도의 용어로서 사용되는 것이 아니며, 측정되거나 계산된 값의 고유 편차를 설명하기 위한 것으로 당해 분야의 통상의 기술자에게 인식될 수 있다. 본 명세서에서 사용된 "약" 또는 "대략"은 언급된 값을 포함하며, 해당 측정 및 특정 수량의 측정과 관련된 오차(즉, 측정 시스템의 한계)를 고려하여, 당해 분야의 통상의 기술자에 의해 결정된 특정 값에 대한 허용 가능한 편차의 범위 내의 언급된 값 및 평균을 포함한다. 예를 들어, "약"은 하나 이상의 표준 편차 내에서, 또는 명시된 값의 ± 30%, 20%, 10%, 5% 이내를 의미할 수 있다. 또한, 본 개시의 실시예들을 설명할 때 "~일 수 있다(may)"의 사용은 "본 발명의 하나 이상의 실시예들"을 지칭한다.
특정 실시예가 다르게 구현될 때, 특정 프로세스 순서는 설명된 순서와 다르게 수행될 수있다. 예를 들어, 2개의 연속적으로 기술된 프로세스는 실질적으로 동시에 수행되거나 기술된 순서와 반대 순서로 수행될 수있다.
본 명세서에 기술된 본 개시의 실시예들에 따른 전자 또는 전기 장치들 및/또는 다른 관련 장치들 또는 구성 요소들은 임의의 적절한 하드웨어, 펌웨어(예를 들어, 애플리케이션-특정 집적 회로), 소프트웨어, 또는 소프트웨어, 펌웨어, 및 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이들 장치들의 다양한 구성 요소들은 하나의 집적 회로(IC) 칩 또는 별도의 IC 칩들 상에 형성될 수있다. 또한, 이들 장치의 다양한 구성 요소들은 플렉서블 인쇄 회로 필름, 테이프 캐리어 패키지(TCP), 인쇄 회로 기판(PCB) 상에 구현되거나 하나의 기판 상에 형성될 수 있다.
또한, 이들 디바이스의 다양한 구성 요소는 하나 이상의 프로세서 상에서, 하나 이상의 컴퓨팅 디바이스에서 실행되고, 본 명세서에 설명된 다양한 기능을 수행하기 위해 컴퓨터 프로그램 명령을 실행하고 다른 시스템 구성 요소와 상호 작용하는 프로세스 또는 스레드 일 수있다. 컴퓨터 프로그램 명령은, 예를 들어, 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 디바이스를 사용하여 컴퓨팅 다바이스에에서 구현될 수있는 메모리에 저장된다. 컴퓨터 프로그램 명령은 또한 예를 들어 CD-ROM, 플래시 드라이브 등과 같은 다른 비-일시적 컴퓨터 판독 가능 매체에 저장될 수있다. 또한, 본 발명이 속하는 기술분야의 통상의 기술자는, 본 개시의 실시예들의 사상 및 범위를 벗어나지 않으면서 다양한 컴퓨팅 디바이스의 기능이 단일 컴퓨팅 디바이스에 결합되거나 통합될 수 있거나, 특정 컴퓨팅 디바이스의 기능이 하나 이상의 다른 컴퓨팅 다바이스에 걸쳐서 분산될 수 있음을 인식해야한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 또한, 일반적으로 사용되는 사전에 정의된 용어와 같은 용어는 관련 기술 및/또는 본 명세서의 맥락에서 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하고, 본 명세서에서 명시적으로 정의되지 않는 한 이상적이거나 지나치게 공식적인 의미로 해석되어서는 안된다.
키 밸류 업데이트의 수를 줄임으로써 저장 장치의 기록 효율성을 향상시키기 위해, "인라인 오버라이트 머지" 또는 "오버라이트 머지"("인 플레이스 업데이트"라고도 함)는 공통 키에 대응하며 주어진 타임프레임 내에서 발생하는 충돌하는 기록들의 머지(merging)을 가능하게 한다. 충돌하는 기록들은 주어진 타임프레임 내에서 발생하는 서로 다른 각각의 트랜잭션에 대응하므로, 트랜잭션들은 모두 실질적으로 동시에 보류 큐에 존재한다.
따라서, 오버라이트 머지는 동일한 키에 대한 최신 키-밸류 업데이트를 위해 특정 키에 대한 과거의 키 밸류 업데이트를 버리는 것을 허용할 수 있다. 즉, 주어진 타임프레임 내에 발생하는 공통 키에 대한 충돌 보류 기록은 마지막 기록을 위하여 관련없는 초기 기록을 폐기함으로써 "머지(병합)"될 수 있다. 따라서, 총 키 밸류 업데이트/기록 수가 감소될 수있어 시스템 오버 헤드가 줄어든다.
오버라이트 머지의 개념은 다양한 KV 스토리지 방법과 관련하여 기록 축소 방법으로서 적용될 수 있다.(예를 들어, 기존의 영구적인 키-밸류 저장소와 호환되는 키-밸류 솔리드 스테이트 드라이브(KVSSD)와 함께 사용되는 키 밸류 저장소와 관련되며, 예를 들어, 키-밸류 저장소는 FACEBOOK®에 의해 개발된RocksDB, 및 MyRocks와 호환되는 RocksDB 스토리지 엔진일 수 있다.) 예를 들어, 하나의 벤치마크는 멀티스레드 순차 기록에 대한 능력이며, 각 스레드는 다른 스레드의 키와 중복되는 키를 생성한다. 따라서, 간단한 오버라이트 머지에 대한 능력을 추가하는 것이 유리할 수 있고, 플래시 메모리가 스토리지 매체 공간에 적용됨에 따라 기록 증폭의 감소가 유리해질 수 있다.
오버라이트 머지가 사용됨으로써 기록 증폭을 줄일 수 있지만, 일반적으로 오버라이트 머지는 트랜잭션 시스템에만 사용되는 것은 아니다. 예를 들어, 오버라이트 머지/인-플레이스 업데이트는 트랜잭션 일괄 처리와 함께 사용될 때 원하지 않는 영향을 줄 수 있다. 이러한 원치 않는 영향은 트랜잭션 종속성에 기인하는 보류중인 트랜잭션의 롱 테일이 원인일 수 있으며, 이로 인해 잠재적으로 데이터 불일치가 발생할 수 있고, 오버라이트 머지를 비실용적으로 만들 수 있다. 또한, 충돌 일관성이 잠재적으로 손상될 수 있다. 즉, 오버라이트 머지를 사용하면 기록 증폭을 줄일 수 있고, 성능을 향상시킬 수 있지만(예: IOPS(초당 입출력 동작) 향상), 많은 트랜잭션이있는 경우 오버라이트 머지가 수행될 수 없다. 예를 들어, 많은 수의 트랜잭션이있는 경우, 여러 종속연결된/연결된 트랜잭션 중 하나에서 충돌이 발생하면 데이터 일관성이 손상될 수 있다. 또한 여러번 오버라이트가 발생하는 경우, 보류중인 트랜잭션의 롱 테일이 발생할 수 있다.
따라서, 본 개시의 실시예는 인라인 오버라이트 머지를 허용함으로써 캐스케이드된 트랜잭션의 그룹화(예를 들어, 트랜잭션 그룹의 사용)를 가능하게 한다. 개시된 실시예를 달성하기 위해, 대응하는 메타데이터의 기록은 그룹 내의 모든 트랜잭션 동작이 디바이스에 기록될 때까지 지연될 수 있다. 언급된 바와 같이, 제시된 실시예에 따른 인라인 오버라이트 머지가 기록 증폭을 감소시키는데 사용될 수 있지만, 인라인 오버라이트 머지는 트랜잭션 시스템에 단독으로 사용될 수는 없다. 플래시 메모리 기술로 본 개시의 실시예를 수행함으로써, 일부 플래시 디바이스는 개선된 기록 내구성 및 성능 (예를 들어, IOPS(IO operations per second))을 나타낼 수 있다.
도 1은 오버라이트 머지 및 그로부터 발생하는 트랜잭션 의존성을 나타내는 블록 다이어그램이다.
도 1을 참조하면, 도 1에 도시된 바와 같이, 제1 트랜잭션(Trxn1)은 제2 트랜잭션(Trxn2)의 키 밸류 업데이트 (V3)와 오버라이트 머지될 수 있는 키 밸류 업데이트(V2)를 가질 수 있다. 제2 트랜잭션(Trxn2)은 각각 제3 및 제4 트랜잭션(Trxn3 및 Trxn4)의 키 밸류 업데이트(V5 및 V6)와 오버라이트 머지될 수 있는 키 밸류 업데이트(V4)를 가질 수 있다. 제3 트랜잭션(Trxn3)은 또한 제4 트랜잭션(Trxn4)의 키 밸류 업데이트(V8)와 오버라이트 머지될 수 있는 키 밸류 업데이트(V7)를 가질 수 있다. 또한, 제4 트랜잭션(Trxn4)은 제5 트랜잭션(Trxn5)의 키 밸류 업데이트(V10)와 오버라이트 머지될 수 있는 키 밸류 업데이트(V9)를 가질 수 있다.
따라서, 오버라이트 머지 능력을 갖는 키 밸류 업데이트로 인한 다양한 트랜잭션의 상호 의존성으로 인해, 트랜잭션은 그로부터 생성된 상호 의존성의 체인에 의해 서로 연결될 수 있다. 결과적으로, 충돌이 발생하거나 예기치 않은 정전이 발생하는 경우 오버라이트 머지로 인해 원하지 않는 결과가 발생할 수 있다.
본 예에서, 도 1에 도시된 바와 같이, 제4 트랜잭션(Trxn4)의 키 밸류 업데이트(V9) 이후 그리고 제5 트랜잭션 (Trxn5)의 키 밸류 업데이트(V10) 이전에 충돌이 발생하면, 연결된 모든 트랜잭션(Trxn1 내지 Trxn5)이 롤백 될 수 있다. (즉, 유효성과 데이터 일관성을 보장하기 위해 시스템에 의해 재시도될 수 있다). 즉, 충돌로 인해, 제4 트랜잭션(Trxn4)의 키 밸류 업데이트(V9)가 유효한 것으로 판단될 수 없다. 제4 트랜잭션(Trxn4)의 키 밸류 업데이트(V9)가 유효하다고 판단될 수 없기 때문에, 제4 트랜잭션(Trxn4)의 완료가 유효하다고 판단될 수 없다.
또한, 제4 트랜잭션(Trxn4)의 키 밸류 업데이트(V6)가 제2 및 제3 트랜잭션(Trxn2 및 Trxn3)의 키 밸류 업데이트(V4 및 V5)와 머지되어 오버라이트 되기 때문에, 키 밸류 업데이트(V4 및 V5) 중 어느 것도 유효하게 기록된 것으로 확인될 수 없다. 따라서, 제2 및 제3 트랜잭션(Trxn2 및 Trxn3)은 마찬가지로 유효하다고 판단될 수 없다.
마지막으로, 제1 및 제2 트랜잭션(Trxn1 및 Trxn2)의 키 밸류 업데이트(V2 및 V3)가 머지되고, 제2 트랜잭션 (Trxn2)이 유효하다고 판단될 수 없기 때문에, 제1 트랜잭션(Trxn1)은 유효하다고 판단될 수 없고, 또한 롤백되어야 한다.
따라서, 오버라이트 머지로 인해 발생하는 트랜잭션 종속성으로 인해 충돌은 시스템에서 데이터 일관성을 달성하기 위해 비교적 많은 수의 트랜잭션을 요구할 수 있다.
또한, 트랜잭션이 복구 불가능한 충돌 이후의 시나리오가 존재할 수 있다. 예를 들어, 키 밸류 업데이트(V1)의 메타데이터가 스토리지 디바이스에 이미 기록되어 있고, 그리고 임의의 키 밸류 저장 실행에서의 이전 메타데이터의 기록이 없기 때문에(예를 들어, 아래에 더 설명되는 도 3의 S380 및 도 4의 테이블 460 참조) 제1 트랜잭션(Trxn1)이 롤백되지 않는 상황이 존재할 수 있다.
본 개시의 실시예들은 오버라이트 머지를 본 명세서에서 "트랜잭션 그룹화(transaction grouping)"라고하는 개념과 결합함으로써 오버라이트 머지에서 잠재적으로 발생할 수 있는 문제를 피할 수 있다. 즉, 트랜잭션 그룹화를 통해 트랜잭션을 그룹화함으로써 충돌 시에도 동일한 키에 대한 트랜잭션 기록을 안정적으로 머지할 수 있어 기록 효율성이 향상될 수 있다.
도 2는 본 개시의 일부 실시예에 따른 트랜잭션 그룹화와의 오버라이트 머지를 도시하는 블록 다이어그램이다.
예를 들어, 도 2를 참조하면, 각각의 트랜잭션 그룹 ID(예를 들어, Group1 또는 Group2)를 트랜잭션에 할당함으로써 상이한 트랜잭션이 그룹화 될 수있다. 트랜잭션 그룹 ID는 하나 이상의 대응하는 트랜잭션 ID로부터 생성될 수 있다. 또한, 오버라이트 머지가 발생하지 않으면, 새 트랜잭션 그룹 ID가 시작될 수 있다. 예를 들어, 여러 업데이트가 임계 값을 초과하면, 새 트랜잭션 그룹 ID가 시작될 수 있다.
각각의 트랜잭션의 트랜잭션 ID에 기초하여 각각의 트랜잭션에 대한 각각의 트랜잭션 그룹 ID를 생성함으로써, 각각의 트랜잭션 그룹을 분리하는 하나 이상의 트랜잭션 그룹 경계가 결정될 수 있다. 예로서, 본 실시예의 실행에서, 트랜잭션 그룹 ID는 트랜잭션 ID의 최상위 59 비트일 수 있다. 새 트랜잭션 그룹 ID이 사용되는 경우, 다음 트랜잭션 ID가 증가될 수 있다.
도 2에 도시된 예에서, 연속된 트랜잭션은 단일 트랜잭션 그룹에 포함되지만, 개시된 실시예는 이에 제한되지 않는다. 또한, 트랜잭션 그룹 당 트랜잭션의 구체적인 수는 특별히 제한되지 않는다.
도 2에 도시된 예에서, 제1 내지 제3 트랜잭션(Trxn1, Trxn2, 및 Trxn3)은 각각 제1 그룹 "Group1" 내에 배치될 제1 그룹 트랜잭션 ID가 할당되고, 반면에 제4 및 제5 트랜잭션(Trxn4 및 Trxn5)은 제2 그룹 "Group2" 내에 배치될 제2 그룹 트랜잭션 ID가 할당된다. 따라서, 제3 및 제4 트랜잭션(Trxn3 및 Trxn4)은 각각 동일한 각각의 키에 대응하는 각각의 키 밸류 업데이트를 포함할지라도(예를 들어, 키 "C"에 대응하는 키 밸류 업데이트(V5 및 V6) 및 키 "D" 대응하는 키 밸류 업데이트(V7 및 V8)), 이러한 키 밸류 업데이트는 제3 및 제4 트랜잭션(Trxn3 및 Trxn4)이 서로 다른 트랜잭션 그룹 Group1 및 Group2에 각각 속하기 때문에 오버라이트 머지되지 않을 수 있다.
또한, 전술한 바와 같이, 그룹화는 반면에 트랜잭션이 회복될 수 없는 충돌 이후의 시나리오를 해결할 수 있다. 즉, 종래에는, 키 밸류 업데이트(V1)의 메타데이터가 스토리지 디바이스에 이미 기록되어 있고, 어느 키 밸류 저장 실행에서도 이전 메타데이터의 기록이 없기 때문에 제1 트랜잭션(Trxn1)이 롤백될 수 없는 경우, 트랜잭션은 복구 불가능할 수 있다. 그러나, 본 개시의 실시예들에 따른 그룹화는 복구 불가능한 충돌을 피할 수 있는데, 충돌이 발생하는 경우에(예를 들어, 아래에 더 설명되는 도 3의 S380 및 도 4의 테이블 460 참조) 데이터 일관성을 보장하기 위해 업데이트된 키 밸류에 대한 메타데이터가 스토리지 디바이스에 기록될 경우에만 업데이트된 키 밸류들에 대한 메타데이터가 업데이트될 수 있기 때문이다.
따라서, 도 1과 관련하여 전술한 예와 달리, 도 1에서, 제4 트랜잭션(Trxn4)의 키 밸류 업데이트(V9) 이후 및 제5 트랜잭션(Trxn5)의 키 밸류 업데이트(V10) 이전에 충돌이 발생하면, 동일한 트랜잭션 그룹 Group2의 일부인 Trxn4 및 Trxn5의 링크된 트랜잭션만이 롤 백 된다. 제1 트랜잭션 그룹 Group1의 트랜잭션 Trxn1, Trxn2 및 Trxn3이 유효한 것으로 확인되었으므로 충돌로 인해 롤백 할 필요가 없다.
즉, 연속된 트랜잭션들(Trxn3 및 Trxn4)을 상이한 트랜잭션 그룹들으로 분리함으로써, 오버라이트 머지로 인해 발생할 수 있는 다른 연속된 트랜잭션들(Trxn3 및 Trxn4) 사이의 링크는 결여/제거된다. 따라서, 제3 트랜잭션(Trxn3)이 유효한 것으로 판단될 수 있고, 충돌로 인한 비효율성이 감소될 수 있다.
일반적으로, 본 명세서에 개시된 실시예들에 의해 제공되는 오버라이트 머지를 통한 트랜잭션 그룹화의 장점은 충돌이 발생하는 경우 기록 효율을 향상시키는 것을 포함한다. 위에서 설명한 것처럼, 충돌이 발생하면, 시스템은 충돌과 관련된 주어진 트랜잭션 그룹의 시작을 지나 롤백할 필요가 없을 수 있다.
또한, 본 명세서에 개시된 실시예들에 의해 제공되는 오버라이트 머지를 이용한 트랜잭션 그룹화의 장점은, 서로 다른 각각의 트랜잭션 그룹에 속하는 서로 다른 인접한 트랜잭션들 사이의 오버라이트 머지를 방지하는 동시에, 주어진 트랜잭션 그룹 ID에 공통으로 할당된 다른 트랜잭션들에 걸친 오버라이트 머지를 각각의 트랜잭션 그룹 내에 있도록 여전히 허용하는 것일 수 있다.
따라서, 시스템은 트랜잭션 그룹화가 없는 한 롤백하지 않아도 된다. 그러나, 시스템은 키 밸류 업데이트의 일부를 오버라이트 머지 함으로써 오버라이트 머지와 관련된 장점을 여전히 어느 정도까지 달성할 수 있다.
도 2에 도시된 예와 같이, 키 C 및 D에 각각 2회 기록해야 하는 것은 비효율적일 수 있다.(키 C에 대한 키 밸류 업데이트 V5 및 V6, 키 D에 대한 키 밸류 업데이트 V7 및 V8) 따라서, 일부 실시예들에서, 트랜잭션 그룹 경계들은, 만약에 있다면, 어떤 연속적인 트랜잭션들이 서로 오버라이트 머지될 수 있는 키 밸류 업데이트를 전혀 갖지 않는지 평가함으로써 할당될 수 있다. 다른 실시예들에서, 트랜잭션 그룹 경계들은 서로 오버라이트 머지될 수 있는 가장 적은 키 밸류 업데이트들을 갖는 연속적인 트랜잭션들을 평가함으로써 할당될 수 있다.
또한, 본 개시의 다른 실시예에서, 시스템은 상이한 트랜잭션들에 걸친 키 밸류 업데이트들에 대응하는 공통의 각각의 키들의 분석에 기초하여 트랜잭션 그룹 ID의 생성이 조정될 수 있게 한다.
예를 들어, 도 2에 도시된 예에서, 제3 트랜잭션(Trxn3)으로부터의 키 밸류 업데이트들은 사용되지 않는다(Trxn3의 V5 및 V7은 Trxn4의 V6 및 V8에 의해 무관하게 둘다 렌더링 된다). 따라서, 시스템은 제1 트랜잭션 그룹(Group1)으로부터 Trxn3을 제거할 수 있다. 예를 들어, 키 대상은 키 밸류 업데이트들에 대한 링크를 가지며, 각 키 밸류 업데이트 대상은 트랜잭션 ID를 포함한다. 백그라운드 스레드들 또는 "기록 작업자들"을 사용하여 키 밸류 업데이트들을 검사하고, 가능한 오버라이트 머지들을 찾을 수 있다. 이러한 백그라운드 스레드들은 새 트랜잭션 그룹 ID를 생성할 수 있다(예: 여러 업데이트가 임계 값을 초과하는 경우).
도 3은 본 개시의 실시예들에 따른, 트랜잭션 그룹화와 함께 오버라이트 머지를 도시한 흐름도이다.
도 3을 참조하여, 본 개시의 실시예에 따르면, 개시된 시스템은 들어오는 트랜잭션이 트랜잭션 그룹과의 오버라이트 머지를 성공적으로 수행하기에 너무 큰 것이 가능한지 여부를 초기에 판단할 수 있다(S310). 만약 너무 크다면, 트랜잭션 ID 및 후속 트랜잭션 그룹 ID가 트랜잭션에 할당될 수 있다(S320). 만약 그렇지 않다면, 트랜잭션 ID 및 현재 트랜잭션 그룹 ID가 트랜잭션에 할당될 수 있다(S330).
트랜잭션 ID 및 트랜잭션 그룹 ID가 트랜잭션에 할당된 후, 트랜잭션 동작 카운트가 그룹에 추가될 수 있다(S340). 그런다음, 인라인 오버라이트 머지가 들어오는 트랜잭션인 대상 포함하는 트랜잭션들에 대해 수행될 수 있다(S350). 이후, 트랜잭션들에 대응하는 데이터를 하나 이상의 장치에 기록하기 위한 기록 동작이 수행될 수 있다(S360).
그리고, 개시된 시스템들은 그룹 내의 모든 동작이 완료되었는지 판단할 수 있다(S370). 그룹 내의 모든 동작이 완료된 경우, 이에 대응하는 메타데이터는 업데이트 및 플러싱될 수 있다(S380). 그룹 내의 모든 동작이 완료되지 않은 경우, 다음 트랜잭션이 처리될 수 있다(S390)(예를 들어, 그룹 내의 모든 동작이 완료될 때까지).
도 4는 본 개시의 실시예들에 따른 워크플로우를 도시하는 블록도이다.
도 4를 참조하면, 트랜잭션 그룹화와의 오버라이트 머지 수행하기 위해 트랜잭션들(410)이 시스템(400)에 의해 수신될 수 있고, 트랜잭션 모듈(420)로 보내질 수 있다. 트랜잭션 모듈(420)은 트랜잭션 ID 및 트랜잭션 그룹 ID를 각각의 트랜잭션들(410)에 할당할 수 있다. 트랜잭션 모듈(420)은 가장 최근에 수신된 트랜잭션을 최신의 그룹에 추가할 수있다. 가장 최근의 그룹이 가득차면, 트랜잭션 모듈(420)은 후속 트랜잭션들(410)을 위한 새로운 그룹을 생성할 수 있다.
다시 도 2를 참조하면, 그룹 1은 각각 키들 A, B, C 및 D에 대응하는 키 밸류 업데이트들 V1, V2, V3, V4, V5 및 V7을 포함하는 트랜잭션들 Trxn1, Trxn2 및 Trxn3을 포함한다.
트랜잭션 그룹(예를 들어, 그룹 1)이 생성된 후, 머지 모듈(430)은 키 밸류 업데이트의 오버라이트 머지를 수행할 수 있다. 이후, 인플라이트 요청 버퍼(440)는 오버라이트 머지된 키 밸류를 디바이스(예를 들어, KVSSD)(450)에 기록할 수 있다. 트랜잭션 그룹의 모든 머지된 키 밸류들이 디바이스(450)에 성공적으로 기록되면, 디바이스 메타데이터를 포함하는 테이블(460)이 업데이트될 수 있다. 마지막으로, 메타데이터는 테이블(460)로부터 디바이스(450)로 기록될 수 있다.
상기에 따르면, 본 개시의 실시예들은 인라인 오버라이트 머지를 사용하여 캐스케이드된 트랜잭션들을 그룹화할 수 있고, 이에 따라, 관련된 트랜잭션 그룹에서 모든 동작이 대응하는 디바이스들에 기록될 때까지 메타데이터 기록 동작들이 지연됨으로써, 관련된 메타데이터의 플러싱을 지연시킬 수 있다. 따라서, 본 개시의 실시예는 충돌 복구를 달성할 수 있다.
또한, 본 개시의 실시예는 메타데이터 기록 동작과 관련된 부적당한 지연들을 피하면서, 그리고 또한 캐스케이드 되지 않는 트랜잭션들을 상이한 각각의 트랜잭션 그룹들로 분리하면서, 가능한 많은 수의 캐스케이드 트랜잭션들을 갖는 트랜잭션 그룹들을 형성하는 것을 목표로 할 수 있다. 따라서, 개시된 실시예들에 따른 트랜잭션 그룹들의 구현은, 충돌 일관성을 가능하게 하고 보류 중인 트랜잭션들을 감소시키는것과 동시에, 트랜잭션들과 함께 오버라이트 머지 작업을 매끄럽게 만들고, 이를 통해 데이터 스토리지 기술을 향상시킬 수 있다.

Claims (20)

  1. 보류 중인 큐에서 트랜잭션들을 식별하는 단계 - 상기 트랜잭션들은 키들에 대응하는 하나 이상의 키 밸류 업데이트들을 가짐 -;
    상기 트랜잭션들 중 상이한 트랜잭션들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 키들의 공통적으로 관련된 키를 식별하는 단계;
    상이한 트랜잭션들에 걸쳐 공통적으로 관련된 키 밸류 업데이트들의 총 수의 분석에 기초하여, 트랜잭션들 그룹 ID들을 상기 트랜잭션들에 할당하는 단계;
    상기 할당된 트랜잭션 그룹 ID들에 기초하여, 트랜잭션 그룹들의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 단계; 및
    상기 트랜잭션 그룹들 중 동일한 그룹에 있는 트랜잭션들의 그룹화된 트랜잭션들에 대하여 공통적으로 관련된 키의 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하는 단계를 포함하고,
    상기 머지하는 단계는 제1 키에 대한 제1 키 밸류 업데이트 및 상기 제1 키에 대한 제2 키 밸류 업데이트를 결정하고, 상기 제2 키 밸류 업데이트를 수행하는 단계를 포함하는 것을 특징으로 하는 데이터 저장 방법.
  2. 제1항에 있어서,
    상기 트랜잭션 그룹들 중 충돌된 트랜잭션 그룹에 속하는 상기 트랜잭션들 중 충돌된 트랜잭션에 의해 충돌이 발생한 것으로 판단하는 단계; 및
    상기 충돌된 트랜잭션 그룹내의 상기 트랜잭션들 중, 충돌하는 데이터 기록을 머지하는 것에 기인하여 연결된 트랜잭션들과, 상기 충돌된 트랜잭션의 연결을 시도하는 단계를 더 포함하는 데이터 저장 방법.
  3. 제1항에 있어서,
    하나 이상의 제2 키 밸류 업데이트들과 동일한 키에 대응하는 하나 이상의 제1 키 밸류 업데이트들을 포함하는 상기 트랜잭션들 중 하나를 제거하기 위해 트랜잭션 그룹 경계를 할당하는 단계를 더 포함하고,
    상기 제2 키 밸류 업데이트들은, 상기 트랜잭션들 중 상기 경계가 할당된 트랜잭션과 상이한 하나 이상의 다른 트랜잭션들에 포함되는 것을 특징으로 하는 데이터 저장 방법.
  4. 제1항에 있어서,
    상기 키들의 공통 키에 대응하는 별개의 관련된 키 밸류 업데이트들을 갖는 연속적인 트랜잭션들의 쌍을 결정하는 단계; 및
    상기 연속적인 트랜잭션들이 상이한 트랜잭션 그룹들에 할당되도록, 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 할당하는 단계를 포함하는 데이터 저장 방법.
  5. 제1항에 있어서,
    상기 키들의 공통 키에 대응하는 가장 적은 수의 공통적으로 관련된 키 밸류 업데이트들을 갖는 연속적인 트랜잭션들의 쌍을 결정하는 단계; 및
    상기 연속적인 트랜잭션들이 상이한 트랜잭션 그룹들에 위치되도록 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 할당하는 단계를 포함하는 데이터 저장 방법.
  6. 제1항에 있어서,
    상기 트랜잭션 그룹들 중 하나의 상기 충돌하는 데이터 기록의 머지된 키 밸류 업데이트들을 하나 이상의 스토리지 디바이스들에 기록하는 단계; 및
    상기 트랜잭션 그룹들 중 하나의 상기 머지된 키 밸류 업데이트들에 대응하는 메타데이터를 업데이트하는 단계; 및
    상기 머지된 키 밸류 업데이트들이 하나 이상의 스토리지 디바이스들에 존재하는지 여부를 결정하는 단계를 더 포함하는 데이터 저장 방법.
  7. 제1항에 있어서,
    트랜잭션 ID들을 상기 트랜잭션들에 할당하는 단계를 더 포함하는 데이터 저장 방법.
  8. 트랜잭션 모듈 및 머지 모듈을 포함하고,
    상기 트랜잭션 모듈은,
    보류 중인 큐에서 트랜잭션들을 식별하고, 상기 트랜잭션들은 키들에 대응하는 하나 이상의 키 밸류 업데이트들을 가지고,
    상기 트랜잭션들 중 상이한 트랜잭션들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 키들의 공통적으로 관련된 키를 식별하고,
    상이한 트랜잭션에 걸쳐 공통적으로 관련된 키 밸류 업데이트들의 총 수의 분석에 기초하여, 상기 트랜잭션들에 트랜잭션 그룹 ID들을 할당하고,상기 할당된 트랜잭션 그룹 ID들에 기초하여 트랜잭션 그룹들의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 것을 포함하고,
    상기 머지 모듈은,
    상기 트랜잭션 그룹들 중 동일한 그룹에 있는 상기 트랜잭션들의 그룹화된 트랜잭션들에 대해 상기 공통적으로 관련된 키의 상기 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하고,
    제1 키에 대한 제1 키 밸류 업데이트 및 상기 제1 키에 대한 제2 키 값 업데이트를 결정하고, 상기 제2 키 값 업데이트를 수행하는 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  9. 제8항에 있어서,
    상기 트랜잭션 모듈은,
    상기 트랜잭션 그룹들 중 충돌된 트랜잭션 그룹에 속하는 상기 트랜잭션들 중 충돌된 트랜잭션에 의해 충돌이 발생한 것으로 판단하고,
    상기 충돌된 트랜잭션 그룹내의 상기 트랜잭션들 중, 충돌하는 데이터 기록을 머지하는 것에 기인하여 연결된 트랜잭션들과, 상기 충돌된 트랜잭션의 연결을 시도하도록 더 구성된 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  10. 제8항에 있어서,
    상기 머지 모듈은,
    하나 이상의 제2 키 밸류 업데이트들과 동일한 키에 대응하는 하나 이상의 제1 키 밸류 업데이트들을 포함하는 상기 트랜잭션들 중 하나를 제거하기 위해 트랜잭션 그룹 경계를 할당하고,
    상기 제2 키 밸류 업데이트들은, 상기 트랜잭션들 중 상기 경계가 할당된 트랜잭션과 상이한 하나 이상의 다른 트랜잭션들에 포함되도록 구성되는 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  11. 제8항에 있어서,
    상기 트랜잭션 모듈은,
    상기 키들의 공통 키에 대응하는 별개의 관련된 키 밸류 업데이트들을 갖는 연속적인 트랜잭션들의 쌍을 결정하고,
    상기 연속적인 트랜잭션들이 상이한 트랜잭션 그룹들에 할당되도록, 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 할당하도록 더 구성되는 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  12. 제8항에 있어서,
    상기 트랜잭션 모듈은,
    상기 키의 공통 키에 대응하는 공통적으로 관련된 키 밸류 업데이트들의 수가 가장 적은 연속적인 트랜잭션 쌍을 결정하고,
    상기 연속적인 트랜잭션들이 상이한 트랜잭션 그룹들에 할당되도록, 상기 트랜잭션 그룹 ID들을 상기 연속적인 트랜잭션들에 할당하도록 더 구성되는 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  13. 제8항에 있어서,
    인플라이트 요청 버퍼를 더 포함하고,
    상기 인플라이트 요청 버퍼는,
    상기 트랜잭션 그룹들 중 하나의 상기 충돌하는 데이터 기록의 머지된 키 밸류 업데이트들을 하나 이상의 스토리지 디바이스들에 기록하고,
    상기 트랜잭션 그룹들 중 하나의 상기 머지된 키 밸류 업데이트들에 대응하는 메타데이터를 업데이트하고,
    상기 머지된 키 밸류 업데이트들이 하나 이상의 스토리지 디바이스들에 존재하는지를 결정하는 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  14. 제8항에 있어서,
    상기 트랜잭션 모듈은 트랜잭션 ID를 상기 트랜잭션들에 할당하도록 더 구성되는 것을 특징으로 하는 트랜잭션 그룹화와 머지를 수행하기 위한 시스템.
  15. 트랜잭션 그룹화와의 머지를 수행하기 위한 시스템 상에 구현된 비-일시적 컴퓨터 판독 가능 매체로서, 데이터 저장 방법을 구현하는 컴퓨터 코드를 갖는 비-일시적 컴퓨터 판독 가능 매체는:
    보류 중인 큐에서 트랜잭션들을 식별하는 단계 - 상기 트랜잭션들은 키들에 대응하는 하나 이상의 키 밸류 업데이트들을 가짐 -;
    상기 트랜잭션들 중 상이한 트랜잭션들에 속하는 상기 키 밸류 업데이트들의 공통적으로 관련된 키 밸류 업데이트들과 관련된 상기 키들의 공통적으로 관련된 키를 식별하는 단계;
    상이한 트랜잭션들에 걸쳐 공통적으로 관련된 키 밸류 업데이트들의 총 수의 분석에 기초하여 트랜잭션들 그룹 ID들을 상기 트랜잭션들에 할당하는 단계;
    상기 할당된 트랜잭션 그룹 ID들에 기초하여 트랜잭션 그룹들의 트랜잭션 그룹으로 상기 트랜잭션들을 그룹화하는 단계; 및
    상기 트랜잭션 그룹들 중 동일한 그룹에 있는 트랜잭션들의 그룹화된 트랜잭션들에 대하여 공통적으로 관련된 키의 공통적으로 관련된 키 밸류 업데이트들에 대응하는 충돌하는 데이터 기록을 머지하는 단계를 포함하고,
    상기 머지하는 단계는 제1 키에 대한 제1 키 밸류 업데이트 및 상기 제1 키에 대한 제2 키 밸류 업데이트를 결정하고, 상기 제2 키 밸류 업데이트를 수행하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서,
    상기 컴퓨터 코드는,
    상기 트랜잭션 그룹들 중 충돌된 트랜잭션 그룹에 속하는 상기 트랜잭션들 중 충돌된 트랜잭션에 의해 충돌이 발생한 것으로 판단하는 단계; 및
    상기 충돌된 트랜잭션 그룹내의 상기 트랜잭션들 중, 충돌하는 데이터 기록을 머지하는 것에 기인하여 연결된 트랜잭션들과, 상기 충돌된 트랜잭션의 연결을 시도하는 단계를 더 포함하는 비-일시적 컴퓨터 판독 가능 매체.
  17. 제15항에 있어서,
    상기 컴퓨터 코드는,
    하나 이상의 제2 키 밸류 업데이트들과 동일한 키에 대응하는 하나 이상의 제1 키 밸류 업데이트들을 포함하는 상기 트랜잭션들 중 하나를 제거하기 위해 트랜잭션 그룹 경계를 할당하는 단계를 더 포함하고,
    상기 제2 키 밸류 업데이트들은, 상기 트랜잭션들 중 상기 경계가 할당된 트랜잭션과 상이한 하나 이상의 다른 트랜잭션들에 포함되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  18. 제15항에 있어서,
    상기 컴퓨터 코드는,
    상기 키들의 공통 키에 대응하는 별개의 관련된 키 밸류 업데이트들을 갖는 연속적인 트랜잭션들의 쌍을 결정하는 단계; 및
    상기 연속적인 트랜잭션들이 상이한 트랜잭션 그룹들에 할당되도록, 상기 트랜잭션 그룹 ID들을 연속적인 트랜잭션들에 각각 할당하는 단계를 더 포함하는 비-일시적 컴퓨터 판독 가능 매체.
  19. 삭제
  20. 삭제
KR1020200096913A 2019-09-20 2020-08-03 오버라이트 머지를 위한 트랜잭션 그룹화를 포함하는 데이터 저장 방법 및 시스템 KR102613518B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962903662P 2019-09-20 2019-09-20
US62/903,662 2019-09-20
US16/834,231 2020-03-30
US16/834,231 US11429628B2 (en) 2019-09-20 2020-03-30 Transaction grouping for overwrite merge

Publications (2)

Publication Number Publication Date
KR20210034481A KR20210034481A (ko) 2021-03-30
KR102613518B1 true KR102613518B1 (ko) 2023-12-13

Family

ID=74882048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200096913A KR102613518B1 (ko) 2019-09-20 2020-08-03 오버라이트 머지를 위한 트랜잭션 그룹화를 포함하는 데이터 저장 방법 및 시스템

Country Status (4)

Country Link
US (1) US11429628B2 (ko)
JP (1) JP2021051743A (ko)
KR (1) KR102613518B1 (ko)
CN (1) CN112540859A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160171002A1 (en) 2014-12-12 2016-06-16 International Business Machines Corporation Merging database operations for serializable transaction execution
US20180121487A1 (en) 2016-10-31 2018-05-03 Yahoo Holdings, Inc. Method and system for committing transactions in a semi-distributed manner

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818745B2 (en) * 2003-09-29 2010-10-19 International Business Machines Corporation Dynamic transaction control within a host transaction processing system
EP2290562A1 (en) 2009-08-24 2011-03-02 Amadeus S.A.S. Segmented main-memory stored relational database table system with improved collaborative scan algorithm
GB2494867A (en) * 2011-09-19 2013-03-27 Cloudtran Inc Scalable distributed transaction processing method
US9798630B2 (en) * 2013-03-08 2017-10-24 Intel Corporation Hardware-supported memory temporal copy
CN104239357B (zh) * 2013-06-21 2019-01-18 Sap欧洲公司 用于数据库事务的并发请求处理
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US11436353B2 (en) 2017-09-13 2022-09-06 Vmware, Inc. Merge updates for key value stores

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160171002A1 (en) 2014-12-12 2016-06-16 International Business Machines Corporation Merging database operations for serializable transaction execution
US20180121487A1 (en) 2016-10-31 2018-05-03 Yahoo Holdings, Inc. Method and system for committing transactions in a semi-distributed manner

Also Published As

Publication number Publication date
CN112540859A (zh) 2021-03-23
JP2021051743A (ja) 2021-04-01
US20210089549A1 (en) 2021-03-25
TW202113621A (zh) 2021-04-01
KR20210034481A (ko) 2021-03-30
US11429628B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
CN103729442B (zh) 记录事务日志的方法和数据库引擎
CN109725822B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN104021043B (zh) 批量应用程序的中断重入方法及系统
EP2738694A2 (en) Compressed representation of a transaction token
CN101877017B (zh) 使用快速估计技术的有效的采用穷尽法的基于路径的sta
US10866866B2 (en) Query fault processing method and processing apparatus
US8145944B2 (en) Business process error handling through process instance backup and recovery
KR101574451B1 (ko) 트랜잭션 메모리 시스템 내구성 부여
EP2945072A1 (en) Method and apparatus for processing redo data of database
CN111125040A (zh) 管理重做日志的方法、装置及存储介质
CN104899117B (zh) 面向非易失性内存的内存数据库并行日志方法
CN105074656A (zh) 管理并发谓词表达式的方法和装置
CN110609807B (zh) 用于删除快照数据的方法、设备和计算机可读存储介质
US20080320275A1 (en) Concurrent exception handling
KR102613518B1 (ko) 오버라이트 머지를 위한 트랜잭션 그룹화를 포함하는 데이터 저장 방법 및 시스템
US10761940B2 (en) Method, device and program product for reducing data recovery time of storage system
US8381234B2 (en) System and method for managing applications having logical pointer and flag
TWI834912B (zh) 資料儲存方法、於執行具有事務分組的合併的系統及非暫時性電腦可讀媒體
CN108509154B (zh) 一种根据坏块分布动态重组raid的方法和装置
CN107644041A (zh) 保单结算处理方法和装置
CN115348276A (zh) 数据存储方法、装置、计算机设备及存储介质
US20230376226A1 (en) Storage block management information synchronous recording method and system, and terminal and storage medium
CN115760405A (zh) 交易执行方法、装置、计算机设备及介质
US20150212904A1 (en) Method and computing device for recording log entries
CN109791541B (zh) 日志序列号生成方法、装置及可读存储介质

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right