KR102353141B1 - 트랜잭션 처리 방법, 디바이스 및 장비 - Google Patents

트랜잭션 처리 방법, 디바이스 및 장비 Download PDF

Info

Publication number
KR102353141B1
KR102353141B1 KR1020197036437A KR20197036437A KR102353141B1 KR 102353141 B1 KR102353141 B1 KR 102353141B1 KR 1020197036437 A KR1020197036437 A KR 1020197036437A KR 20197036437 A KR20197036437 A KR 20197036437A KR 102353141 B1 KR102353141 B1 KR 102353141B1
Authority
KR
South Korea
Prior art keywords
transaction
data
partition
write
partitions
Prior art date
Application number
KR1020197036437A
Other languages
English (en)
Other versions
KR20200006098A (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 KR20200006098A publication Critical patent/KR20200006098A/ko
Application granted granted Critical
Publication of KR102353141B1 publication Critical patent/KR102353141B1/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/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/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • 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
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1466Management of the backup or restore process to make the backup process non-disruptive
    • 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/2379Updates performed during online database operations; commit processing

Abstract

본 출원은 트랜잭션 처리 방법, 장치, 및 디바이스를 제공하고, 데이터베이스 기술 분야에 관한 것이다. 본 방법은 다중-파티션 트랜잭션을 수신하는 단계 -다중-파티션 트랜잭션은 적어도 2개의 데이터 파티션에서의 동작을 수행하는 트랜잭션임-; 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계; 및 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여 다중-파티션 트랜잭션에 대응하는 동작을 수행하는 단계를 포함한다. 본 출원에 따르면, 다중-파티션 트랜잭션과 관련된 데이터 파티션들에 대해 일관성을 충족시키는 데이터 스냅샷들이 획득되고, 다중-파티션 트랜잭션에 대응하는 동작이 데이터 스냅샷들에 기초하여 수행된다. 판독 트랜잭션과 기입 트랜잭션의 병렬 실행이 지원되어, 기입 트랜잭션과 판독 트랜잭션 사이의 블로킹을 방지함으로써, 시스템 처리량 및 서비스 레벨을 개선한다.

Description

트랜잭션 처리 방법, 디바이스 및 장비
본 출원은 데이터베이스 기술 분야에 관한 것으로, 특히, 트랜잭션 처리 방법, 장치, 및 디바이스에 관한 것이다.
데이터베이스의 로컬 트랜잭션에 기초한 종래의 솔루션은 단일 서비스에 대한 1회 처리에서만 일관성을 보장할 수 있고, 복수의 분산 서비스 간의 처리 일관성을 보장할 수 없다. 따라서, 다중-버전 동시성 제어(multi-version concurrency control, MVCC)를 구현하기 위해 분산 서비스들에 대한 처리 사이의 조정 메커니즘이 확립될 필요가 있다.
관련 기술에서, 서버는 단일-파티션 트랜잭션(트랜잭션 동작은 단지 하나의 데이터 파티션과 관련됨)을 다중-파티션 트랜잭션(트랜잭션 동작은 복수의 데이터 파티션과 관련됨)과 구별하고, 각각의 데이터 파티션에 대한 트랜잭션 큐를 설정한다. 트랜잭션들을 수신할 때, 서버는 단일-파티션 트랜잭션을 대응하는 데이터 파티션의 트랜잭션 큐에 추가하고, 다중-파티션 트랜잭션을 복수의 대응하는 데이터 파티션의 트랜잭션 큐에 추가한다. 트랜잭션들을 처리할 때, 서버는 트랜잭션 큐들 내의 트랜잭션들을 하나씩 처리한다. 데이터 파티션들 간의 일관성을 보장하기 위해, 서버는 복수의 데이터 파티션에서 동일한 다중-파티션 기입 트랜잭션에 대한 협력 처리를 수행한다.
예를 들어, 도 1을 참조하면, 도 1은 관련 기술에서의 트랜잭션 처리의 개략도를 도시한다. 도 1에서, 데이터 파티션 1은 트랜잭션 큐 1에 대응하고, 데이터 파티션 2는 트랜잭션 큐 2에 대응한다. 트랜잭션 큐 1은 2개의 트랜잭션: 단일-파티션 트랜잭션 1 및 다중-파티션 트랜잭션 2를 포함하고, 트랜잭션 큐 2는 2개의 트랜잭션: 다중-파티션 트랜잭션 2 및 단일-파티션 트랜잭션 3을 포함한다. 트랜잭션 처리 프로세스에서, 서버는 먼저 트랜잭션 큐들에 기초하여 큐 1의 단일-파티션 트랜잭션 1 및 큐 2의 다중-파티션 트랜잭션 2를 추출한다. 이 경우, 서버는 데이터 파티션 1에 대해 단일-파티션 트랜잭션 1을 수행하고, 데이터 파티션 2에 대해 다중-파티션 트랜잭션 2를 수행한다. 단일-파티션 트랜잭션 1에 대한 처리를 완료한 후, 서버는 트랜잭션 큐 1의 다중-파티션 트랜잭션 2를 추출한다. 이 경우, 데이터 파티션 1에 대한 다중-파티션 트랜잭션 2에 대한 처리가 완료되지 않았기 때문에, 데이터 파티션 2에 대한 다중-파티션 트랜잭션 2가 완료되었더라도, 서버는 큐 2의 단일-파티션 트랜잭션 3을 즉시 수행하지 않고, 데이터 파티션 2에 대한 다중-파티션 트랜잭션 2가 완료된 후에 단일-파티션 트랜잭션 3을 수행한다.
다중-파티션 트랜잭션은 통상적으로 긴 트랜잭션이고, 보통 비교적 긴 시간 동안 처리된다. 단일-파티션 트랜잭션은 통상적으로 짧은 트랜잭션이고, 비교적 짧은 시간 동안 처리된다. 관련 기술에서, 상이한 트랜잭션 큐들 내의 동일한 다중-파티션 트랜잭션들이 상이한 처리 진전들을 가질 때, 다중-파티션 트랜잭션에 대한 처리는 단일-파티션 트랜잭션을 차단하여, 낮은 시스템 처리량 및 서비스 레벨을 초래하고, 사용자 경험에 영향을 미친다.
시스템 처리량 및 서비스 레벨을 개선하기 위해, 본 출원의 실시예들은 트랜잭션 처리 방법, 장치 및 디바이스를 제공한다.
제1 양태에 따르면, 트랜잭션 처리 방법이 제공되고, 본 방법은:
처리될 트랜잭션을 수신하는 단계 -처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 동작을 수행하는 트랜잭션임-; 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계; 및 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여, 처리될 트랜잭션에 대응하는 동작을 수행하는 단계를 포함한다.
제1 양태에서 설명된 솔루션에서, 적어도 2개의 데이터 파티션과 관련된 다중-파티션 트랜잭션에 대해, 일관성을 충족시키는 데이터 스냅샷은 다중-파티션 트랜잭션에 관련된 데이터 파티션들에 대해 획득되고, 다중-파티션 트랜잭션에 대응하는 동작은 데이터 스냅샷들에 기초하여 수행된다. 판독 트랜잭션과 기입 트랜잭션의 병렬 실행이 지원되어, 기입 트랜잭션과 판독 트랜잭션 사이의 블로킹을 방지함으로써, 시스템 처리량 및 서비스 레벨을 개선한다.
가능한 설계에서, 처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 판독 동작을 수행하는 트랜잭션이다.
가능한 설계에서, 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계는: 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷, 및 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보를 획득하는 단계; 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보에 기초하여, 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시키는지를 검출하는 단계; 검출 결과가 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시킨다는 것이면, 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들이 성공적으로 획득된 것으로 결정하는 단계를 포함한다.
전술한 가능한 설계 솔루션에서, 다중-파티션 트랜잭션에 대응하는 데이터 스냅샷들이 획득될 때, 데이터 스냅샷들의 버전 정보도 획득되고, 복수의 데이터 파티션에 각각 대응하는 데이터 스냅샷들이 일관성을 충족시키는지의 여부는 데이터 스냅샷들의 획득된 버전 정보에 기초하여 체크되어, 일관성을 충족시키지 않는 스냅샷들을 획득하는 것을 방지한다.
가능한 설계에서, 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계는: 검출 결과가 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시키지 못한다는 것이면, 이전 버전을 갖는 데이터 파티션의 데이터 스냅샷을 재획득하고 재획득된 데이터 스냅샷의 버전 정보를 획득하는 단계; 및 재획득된 데이터 스냅샷의 버전 정보에 기초하여, 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시키는지를 검출하는 단계를 추가로 포함한다.
전술한 가능한 설계 솔루션에서, 획득된 데이터 스냅샷들이 일관성을 충족시키지 못할 때, 이전 데이터 스냅샷 버전을 갖는 데이터 파티션에 대해, 데이터 파티션 및 버전 정보에 대응하는 데이터 스냅샷이 재획득되고, 데이터 스냅샷들이 일관성을 충족시키는지의 여부가 추가로 결정된다.
가능한 설계에서, 본 방법은: 검출 결과가 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 불일치한다는 것이면, 이전 버전을 갖는 데이터 파티션의 획득된 데이터 스냅샷을 삭제하는 단계를 추가로 포함한다.
전술한 가능한 설계 솔루션에서, 데이터 스냅샷의 버전 정보는 데이터 스냅샷이 생성될 때 데이터 스냅샷에 대응하는 데이터 파티션에 최근의 기입을 수행하는 다중-파티션 기입 트랜잭션의 식별자를 포함하고, 다중-파티션 기입 트랜잭션은 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이다.
전술한 가능한 설계 솔루션에서, 다중-파티션 판독 동작 동안 불일치하게 기입된 데이터가 판독되는 것을 방지하고, 데이터 판독 정확도를 보장하기 위해, 최근의 기입을 수행하는 다중-파티션 기입 트랜잭션의 식별자를 데이터 파티션의 버전 정보로서 사용한다.
가능한 설계에서, 처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이고, 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여, 처리될 트랜잭션에 대응하는 동작을 수행하는 단계는:
적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에서의 처리될 트랜잭션에 대응하는 기입 동작을 수행하는 단계; 및 대응하는 데이터 파티션들에 데이터로서, 처리될 트랜잭션에 대응하는 기입 동작이 수행된 후에 획득되는 데이터 스냅샷들을 저장하는 단계를 포함한다.
가능한 설계에서, 처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이고, 본 방법은:
처리될 트랜잭션에 대응하는 기입 동작이 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여 성공적으로 수행된 후에, 적어도 2개의 데이터 파티션에 각각 대응하는 버전 정보를 처리될 트랜잭션의 식별자로 업데이트하는 단계를 추가로 포함한다.
제2 양태에 따르면, 트랜잭션 처리 장치가 제공되고, 여기서 본 장치는 제1 양태 및 제1 양태의 가능한 설계 솔루션들에 따라 트랜잭션 처리 방법을 구현하는 기능을 갖는다. 기능은 하드웨어를 사용하여 구현될 수 있거나, 대응하는 소프트웨어를 실행함으로써 하드웨어에 의해 구현될 수 있다. 하드웨어 또는 소프트웨어는 그 기능에 대응하는 하나 이상의 유닛을 포함한다.
제3 양태에 따르면, 트랜잭션 처리 디바이스가 제공되고, 여기서 본 디바이스는 프로세서, 메모리, 및 통신 인터페이스를 포함하고, 통신 인터페이스는 프로세서에 의해 제어되도록 구성되고; 디바이스 내의 프로세서는 메모리에 저장된 프로그램 또는 명령어를 실행함으로써 제1 양태 및 제1 양태의 가능한 설계 솔루션들에 따라 트랜잭션 처리 방법을 구현하도록 통신 인터페이스를 제어한다.
제4 양태에 따르면, 컴퓨터 판독가능 저장 매체가 제공되고, 여기서 본 컴퓨터 판독가능 저장 매체는 실행가능 프로그램을 저장하고, 실행가능 프로그램은 제1 양태 및 제1 양태의 가능한 설계 솔루션들에 따라 트랜잭션 처리 방법을 구현하기 위해 프로세서에 의해 실행된다.
제5 양태에 따르면, 트랜잭션 처리 시스템이 제공되고, 여기서 본 시스템은 트랜잭션 처리 장치 및 적어도 2개의 데이터 파티션을 포함하고, 여기서 본 트랜잭션 처리 장치는 제1 양태 및 제1 양태의 가능한 설계 솔루션들에 따라 트랜잭션 처리 방법을 구현하도록 구성된다.
도 1은 관련 기술에서의 트랜잭션 처리의 개략도이고;
도 2a는 본 출원의 실시예들에서의 트랜잭션 처리 시스템의 아키텍처 도면이고;
도 2b는 본 출원의 실시예들에서의 다중-파티션 트랜잭션에 대한 처리의 개략적인 흐름도이고;
도 3은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 방법의 방법 흐름도이고;
도 4는 도 3에 도시된 실시예에서의 제2 기입 트랜잭션 큐와 데이터 파티션 사이의 대응관계의 개략도이고;
도 5는 도 3에 도시된 실시예에서의 제2 판독 트랜잭션 큐와 데이터 파티션 사이의 대응관계의 개략도이고;
도 6은 도 3에 도시된 실시예에서의 제1 트랜잭션 큐와 특별 파티션 사이의 대응관계의 개략도이고;
도 7은 본 출원의 예시적인 실시예에 따른 참가자 노드의 개략적인 구성도이고;
도 8은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 디바이스의 개략적인 구현도이고;
도 9는 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 디바이스의 개략적인 구현도이고;
도 10은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 디바이스의 개략적인 구조도이고;
도 11은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 장치의 구조 블록도이며;
도 12는 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 시스템의 시스템 구성도이다.
본 출원의 목적들, 기술적 솔루션들, 및 이점들을 더 명확하게 하기 위해, 이하에서는 첨부 도면들을 참조하여 본 출원의 구현들을 상세하게 설명한다.
도 2a는 본 출원에서의 트랜잭션 처리 시스템의 아키텍처 도면이다. 시스템은 다음의 디바이스들: 트랜잭션 처리 디바이스(210) 및 적어도 하나의 단말 디바이스(220)를 포함한다.
트랜잭션 처리 디바이스(210)는 범용 컴퓨터 또는 워크스테이션일 수 있거나, 트랜잭션 처리 디바이스(210)는 단일 서버, 서버 클러스터, 클라우드 컴퓨팅 센터 등일 수 있다.
본 출원의 일 실시예에서, 트랜잭션 처리 디바이스(210)에 대응하는 데이터는 하나 이상의 데이터 파티션으로 분할될 수 있다. 파티션은 연속적인 값 범위이다. 본 출원의 이 실시예에서, 데이터 파티션은 특정 해시(hash) 알고리즘에 기초하여 데이터 필드(기본 키 필드 또는 비-기본 키 필드)에 대해 해시 계산이 수행된 후에 획득되는 연속적인 간격일 수 있다.
트랜잭션 처리 디바이스(210)는 유선 또는 무선 네트워크를 통해 적어도 하나의 단말 디바이스(220)에 접속된다.
트랜잭션 처리 디바이스(210)는 적어도 하나의 단말 디바이스(220)에 의해 전송된 트랜잭션을 처리하도록 구성된다. 적어도 하나의 단말 디바이스(220)에 의해 전송된 트랜잭션은 단일-파티션 트랜잭션 또는 다중-파티션 트랜잭션일 수 있다. 다른 관점에서, 적어도 하나의 단말 디바이스(220)에 의해 전송된 트랜잭션은 판독 트랜잭션 또는 기입 트랜잭션일 수 있다.
실제 애플리케이션 동안, 동일한 데이터 파티션에 대해, 기입 트랜잭션은 데이터 파티션에 저장된 데이터를 변경하지만, 판독 트랜잭션은 데이터 파티션에 저장된 데이터를 변경하지 않는다. 따라서, 기입 트랜잭션 및 판독 트랜잭션은 실제로 병렬로 수행될 수 있다. 따라서, 도 2b를 참조하면, 도 2b는 본 출원의 실시예들에서의 다중-파티션 트랜잭션에 대한 처리의 개략 흐름도이다. 도 2b에 도시된 바와 같이, 트랜잭션 처리 디바이스(210)가 트랜잭션을 처리할 때, 다중-파티션 트랜잭션에 대한 처리 단계들은 다음과 같다:
단계 21: 처리될 트랜잭션을 수신하고, 여기서 처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 동작을 수행하는 트랜잭션이다.
단계 22: 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득한다.
단계 23: 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여, 처리될 트랜잭션에 대응하는 동작을 수행한다.
구체적으로, 본 출원의 이 실시예에서, 판독 동작 또는 기입 동작을 수행할 때, 트랜잭션 처리 디바이스는 데이터 파티션들에서의 동작을 직접 수행하지 않고, 데이터 파티션들에 대응하는 데이터 스냅샷들에서의 동작을 수행한다. 하나의 데이터 파티션에 대해, 데이터 스냅샷은 하나의 기입 트랜잭션 및 적어도 하나의 판독 트랜잭션에 대해 동시에 제공될 수 있는데, 즉, 하나의 기입 트랜잭션에 대한 처리 및 적어도 하나의 판독 트랜잭션에 대한 처리가 동시에 지원될 수 있다. 구체적으로, 데이터 파티션 상의 기입 트랜잭션 및 판독 트랜잭션은 서로를 차단하지 않고, 그에 의해 시스템 처리량 및 서비스 레벨을 개선한다.
도 3은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 방법의 방법 흐름도이다. 본 방법은 도 2a에 도시된 시스템 내의 트랜잭션 처리 디바이스(210)에 적용될 수 있다. 도 3에 도시된 바와 같이, 트랜잭션 처리 방법은 다음의 단계들을 포함할 수 있다.
단계 301: 단말 디바이스에 의해 전송된 처리될 트랜잭션을 수신하고, 처리될 트랜잭션이 다중-파티션 트랜잭션인 경우 단계 302를 수행하거나, 처리될 트랜잭션이 단일-파티션 트랜잭션인 경우 단계 303을 수행한다.
단일-파티션 트랜잭션은 단일 데이터 파티션에서의 동작을 수행하는 트랜잭션이고, 다중-파티션 트랜잭션은 적어도 2개의 데이터 파티션에서의 동작을 수행하는 트랜잭션이다.
더 구체적으로, 단일-파티션 판독 트랜잭션은 관련 단일 데이터 파티션에서의 판독 동작을 수행하는 트랜잭션이고, 단일-파티션 기입 트랜잭션은 관련 단일 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이다. 이에 대응하여, 다중-파티션 판독 트랜잭션은 적어도 2개의 관련 데이터 파티션에서의 판독 동작을 수행하는 트랜잭션이고, 다중-파티션 기입 트랜잭션은 적어도 2개의 관련 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이다.
본 출원의 이 실시예에서, 단말 디바이스는 트랜잭션 처리 요청을 트랜잭션 처리 디바이스에 전송할 수 있고, 트랜잭션 처리 요청은 처리될 트랜잭션을 포함한다.
트랜잭션 처리 요청은 파티션 표시 정보를 포함할 수 있고, 파티션 표시 정보는 처리될 트랜잭션이 단일-파티션 트랜잭션인지 또는 다중-파티션 트랜잭션인지를 표시할 수 있다.
선택적으로, 트랜잭션 처리 요청은 파티션 표시 정보를 포함하지 않을 수 있고, 파티션 표시 정보는 트랜잭션 처리 요청에서 키 정보를 파싱함으로써 트랜잭션 처리 디바이스에 의해 획득될 수 있다.
단계 302: 다중-파티션 트랜잭션의 트랜잭션 타입에 기초하여 다중-파티션 트랜잭션을 제1 판독 트랜잭션 큐 또는 제1 기입 트랜잭션 큐에 추가한다.
트랜잭션 처리 요청은 트랜잭션의 트랜잭션 타입을 추가로 포함할 수 있거나, 트랜잭션 처리 디바이스는 대응하는 트랜잭션 타입을 결정하기 위해 처리될 트랜잭션에 기초하여 분석을 수행할 수 있다.
본 출원의 이 실시예에서의 트랜잭션 큐들은 2개 레벨의 큐들로 분류될 수 있다. 다중-파티션 트랜잭션을 수신할 때, 트랜잭션 처리 디바이스는 먼저 다중-파티션 트랜잭션을 제1 레벨 큐에 추가하고, 이어서 후속 병렬 처리 프로세스에서 제1 레벨 큐의 다중-파티션 트랜잭션을 제2 레벨 큐에 추가한다. 제1 레벨 큐는 제1 판독 트랜잭션 큐 및 제1 기입 트랜잭션 큐이다. 제2 레벨 큐는 각각의 데이터 파티션에 대응하는 제2 판독 트랜잭션 큐 및 제2 기입 트랜잭션 큐이다.
제1 레벨 큐는 제1 판독 트랜잭션 큐 및/또는 제1 기입 트랜잭션 큐를 포함한다. 트랜잭션 처리 디바이스가 다중-파티션 트랜잭션을 수신할 때, 다중-파티션 트랜잭션의 트랜잭션 타입이 판독 트랜잭션인 경우, 다중-파티션 트랜잭션은 제1 판독 트랜잭션 큐에 추가된다. 그렇지 않고, 다중-파티션 트랜잭션의 트랜잭션 타입이 기입 트랜잭션인 경우, 다중-파티션 트랜잭션은 제1 기입 트랜잭션 큐에 추가된다.
단계 303: 단일-파티션 트랜잭션의 트랜잭션 타입에 기초하여, 단일-파티션 트랜잭션을 대응하는 데이터 파티션의 제2 판독 트랜잭션 큐 또는 제2 기입 트랜잭션 큐에 추가한다.
본 출원의 이 실시예에서, 각각의 데이터 파티션은 단지 하나의 제2 기입 트랜잭션 큐에 대응하지만, 각각의 제2 기입 트랜잭션 큐는 하나 이상의 데이터 파티션에 대응할 수 있다. 트랜잭션 처리 디바이스가 단일-파티션 트랜잭션을 수신할 때, 단일-파티션 트랜잭션이 기입 트랜잭션인 경우, 단일-파티션 트랜잭션은 단일-파티션 트랜잭션에 대응하는 제2 기입 트랜잭션 큐에 추가된다.
예를 들어, 도 4를 참조하면, 도 4는 본 출원의 실시예에서의 제2 기입 트랜잭션 큐와 데이터 파티션 간의 대응관계의 개략도를 도시한다. 도 4의 (a)에 도시된 바와 같이, 데이터 파티션 1 및 데이터 파티션 2는 동일한 제2 기입 트랜잭션 큐(기입 트랜잭션 큐 1)에 대응할 수 있다. 구체적으로, 데이터 파티션 1 상의 단일-파티션 기입 트랜잭션과 데이터 파티션 2 상의 단일-파티션 기입 트랜잭션 둘 다는 기입 트랜잭션 큐 1에 추가된다. 대안적으로, 도 4의 (b)에 도시된 바와 같이, 2개의 데이터 파티션은 각각 하나의 제2 기입 트랜잭션 큐에 대응할 수 있다(구체적으로, 데이터 파티션 1은 기입 트랜잭션 큐 1에 대응하고, 데이터 파티션 2는 기입 트랜잭션 큐 2에 대응한다). 구체적으로, 데이터 파티션 1 상의 단일-파티션 기입 트랜잭션이 기입 트랜잭션 큐 1에 추가되고, 데이터 파티션 2 상의 단일-파티션 기입 트랜잭션이 기입 트랜잭션 큐 2에 추가된다.
데이터 파티션과 제2 판독 트랜잭션 큐 간의 대응관계는 제한되지 않고, 일대일, 또는 다중 대 다중 관계일 수 있다. 트랜잭션 처리 디바이스가 단일-파티션 트랜잭션을 수신할 때, 단일-파티션 트랜잭션이 판독 트랜잭션이면, 단일-파티션 트랜잭션은 단일-파티션 트랜잭션에 대응하는 제2 판독 트랜잭션 큐에 추가된다. 단일-파티션 트랜잭션이 복수의 제2 판독 트랜잭션 큐에 대응할 때, 단일-파티션 트랜잭션은 복수의 대응하는 제2 판독 트랜잭션 큐 중 하나에만 추가된다.
예를 들어, 도 5를 참조하면, 도 5는 본 출원의 실시예에서의 제2 판독 트랜잭션 큐와 데이터 파티션 간의 대응관계의 개략도를 도시한다. 도 5의 (a)에 도시된 바와 같이, 데이터 파티션 1 및 데이터 파티션 2는 동일한 제2 판독 트랜잭션 큐(판독 트랜잭션 큐 1)에 대응할 수 있다. 구체적으로, 데이터 파티션 1 상의 단일-파티션 판독 트랜잭션과 데이터 파티션 2 상의 단일-파티션 판독 트랜잭션 둘 다는 판독 트랜잭션 큐 1에 추가된다. 대안적으로, 도 5의 (b)에 도시된 바와 같이, 2개의 데이터 파티션은 각각 하나의 제2 판독 트랜잭션 큐에 대응할 수 있다(구체적으로, 데이터 파티션 1은 판독 트랜잭션 큐 1에 대응하고, 데이터 파티션 2는 판독 트랜잭션 큐 2에 대응한다). 구체적으로, 데이터 파티션 1 상의 단일-파티션 판독 트랜잭션은 판독 트랜잭션 큐 1에 추가되고, 데이터 파티션 2 상의 단일-파티션 판독 트랜잭션은 판독 트랜잭션 큐 2에 추가된다. 대안적으로, 도 5의 (c)에 도시된 바와 같이, 데이터 파티션 1은 판독 트랜잭션 큐 1 및 판독 트랜잭션 큐 2 둘 다에 대응할 수 있다. 구체적으로, 데이터 파티션 1 상의 단일-파티션 판독 트랜잭션은 판독 트랜잭션 큐 1 또는 판독 트랜잭션 큐 2에 추가될 수 있다. 대안적으로, 도 5의 (d)에 도시된 바와 같이, 데이터 파티션 1은 판독 트랜잭션 큐 1 및 판독 트랜잭션 큐 2 둘 다에 대응할 수 있고, 데이터 파티션 2도 판독 트랜잭션 큐 1 및 판독 트랜잭션 큐 2 둘 다에 대응할 수 있다. 구체적으로, 데이터 파티션 1 상의 단일-파티션 판독 트랜잭션은 판독 트랜잭션 큐 1 또는 판독 트랜잭션 큐 2에 추가될 수 있고, 데이터 파티션 2 상의 단일-파티션 판독 트랜잭션도 판독 트랜잭션 큐 1 또는 판독 트랜잭션 큐 2에 추가될 수 있다.
선택적으로, 데이터 파티션과 제1 트랜잭션 큐 사이에 대응관계가 없지만, 제1 트랜잭션 큐는 특별 플래그를 갖는 특별 파티션을 할당받을 수 있다. 특별 파티션은 데이터를 저장하는데 사용되지 않고, 특별 파티션의 특별 플래그는 데이터 파티션 또는 특별 파티션과 구별하는데 사용된다.
도 6을 참조하면, 도 6은 본 출원의 실시예에서의 제1 트랜잭션 큐와 특별 파티션 사이의 대응관계의 개략도를 도시한다. 도 6의 (a)에 도시된 바와 같이, 특별 파티션은 기입 특별 파티션 및 판독 특별 파티션으로 분할되고, 일대일 대응관계에 있는 하나의 기입 특별 파티션 및 하나의 제1 기입 트랜잭션 큐가 존재한다. 모든 다중-파티션 기입 트랜잭션은 기입 특별 파티션에 대응하는 제1 기입 트랜잭션 큐에 추가된다. 도 6의 (b)에 도시된 바와 같이, 하나 이상의 제1 판독 트랜잭션 큐들(도면에는 2개가 도시되어 있음)이 있고, 각각의 제1 판독 트랜잭션 큐는 하나의 판독 특별 파티션에 대응한다(도면에 도시된 바와 같이, 제1 판독 트랜잭션 큐 1은 판독 특별 파티션 1에 대응하고, 제1 판독 트랜잭션 큐 2는 판독 특별 파티션 2에 대응한다). 다중-파티션 판독 트랜잭션의 경우, 다중-파티션 트랜잭션은 제1 판독 트랜잭션 큐 1에 추가될 수 있거나, 제1 판독 트랜잭션 큐 2에 추가될 수 있다.
기입 특별 파티션에 대응하는 제1 기입 트랜잭션 큐는 제2 기입 트랜잭션 큐에 특별 기입 큐로서 추가될 수 있다는 점에 유의해야 한다.
유사하게, 판독 특별 파티션에 대응하는 제1 판독 트랜잭션 큐는 제2 판독 트랜잭션 큐에 특별 판독 큐로서 추가될 수 있다.
단계 304: 판독 트랜잭션 큐 및 기입 트랜잭션 큐를 병렬로 처리한다.
본 출원의 이 실시예에서, 트랜잭션 처리 디바이스가 단계 302 및 단계 303에서 판독 트랜잭션 큐들 및 기입 트랜잭션 큐들을 병렬로 처리할 때, 트랜잭션 처리 디바이스는 동일한 기입 트랜잭션 큐 내의 기입 트랜잭션들을 직렬로 처리한다. 구체적으로, 기입 트랜잭션 큐 내의 복수의 기입 트랜잭션들에 대해, 트랜잭션 처리 디바이스는 이전 기입 트랜잭션에 대한 처리를 완료한 후에만 기입 트랜잭션 큐 내의 다음 기입 트랜잭션을 처리한다. 트랜잭션 처리 디바이스는 동일한 판독 트랜잭션 큐 내의 판독 트랜잭션들을 직렬로 처리할 수 있거나, 트랜잭션 처리 디바이스는 동일한 판독 트랜잭션 큐 내의 판독 트랜잭션들을 병렬로 처리할 수 있다. 예를 들어, 판독 트랜잭션 큐에 대해, 트랜잭션 처리 디바이스는 복수의 스레드를 사용하여 판독 트랜잭션 큐 내의 복수의 판독 트랜잭션들을 동시에 처리할 수 있다.
본 출원의 이 실시예에서, 트랜잭션 처리 디바이스는 데이터 스냅샷들을 사용하여 트랜잭션들을 처리할 수 있다. 또한, 본 출원의 이 실시예는 다중-파티션 판독 트랜잭션 및 다중-파티션 기입 트랜잭션에 대한 처리에 관한 것이며, 다중-파티션 트랜잭션을 처리하는 프로세스에서 데이터 일관성 원리가 고려될 필요가 있다. 따라서, 본 출원의 이 실시예에서, 트랜잭션들이 데이터 스냅샷들을 사용하여 처리될 때, 획득된 데이터 스냅샷들이 일관성을 충족시키는 것이 보장될 필요가 있다. 구체적인 처리 프로세스는 다음과 같을 수 있다.
1. 단일-파티션 판독 트랜잭션 또는 단일-파티션 기입 트랜잭션에 대한 처리
단일-파티션 판독 트랜잭션 또는 단일-파티션 기입 트랜잭션을 처리할 때, 트랜잭션 처리 디바이스는 단일-파티션 판독 트랜잭션 또는 단일-파티션 기입 트랜잭션에 대응하는 데이터 파티션의 데이터 스냅샷을 획득하고, 데이터 스냅샷을 성공적으로 획득한 후에, 데이터 스냅샷에 기초하여 트랜잭션의 판독 또는 기입을 구현할 수 있다.
구체적으로, 단일-파티션 기입 트랜잭션이 처리될 때, 상기 임의의 제2 기입 트랜잭션 큐에 대해, 트랜잭션 처리 디바이스는 제2 기입 트랜잭션 큐에서의 처리 위치(예를 들어, 처리 위치는 큐의 큐 헤드 위치일 수 있음)에 도달하는 단일-파티션 기입 트랜잭션을 획득하고, 단일-파티션 기입 트랜잭션에 대응하는 데이터 파티션의 데이터 스냅샷을 획득하고, 단일-파티션 기입 트랜잭션에 대응하는 기입 데이터를 획득된 데이터 스냅샷에 기입하며, 대응하는 데이터 파티션에 데이터로서, 데이터를 기입한 후에 획득되는 데이터 스냅샷을 저장한다. 데이터 스냅샷에 데이터를 기입하고 데이터 스냅샷을 데이터 파티션에 데이터로서 저장하는 단계는 기입 트랜잭션을 커밋(commit) 하는 것으로서 지칭될 수 있다.
유사하게, 단일-파티션 판독 트랜잭션이 처리될 때, 상기 임의의 제2 판독 트랜잭션 큐에 대해, 트랜잭션 처리 디바이스는 제2 판독 트랜잭션 큐에서의 처리 위치에 도달하는 단일-파티션 판독 트랜잭션을 획득하고, 단일-파티션 판독 트랜잭션에 대응하는 데이터 파티션의 데이터 스냅샷을 획득하고, 단일-파티션 판독 트랜잭션에 대응하는 데이터를 획득된 데이터 스냅샷으로부터 판독하고, 판독된 데이터를 대응하는 단말 디바이스에 전송하고, 데이터 스냅샷을 삭제한다.
단일-파티션 트랜잭션은 단일 데이터 파티션에만 관련되고, 일관성은 단일 데이터 파티션의 데이터 스냅샷에 대해 고려될 필요가 없다. 따라서, 본 출원의 이 실시예에서, 처리될 트랜잭션이 단지 하나의 데이터 파티션에 관련될 때, 처리될 트랜잭션에 대응하는 획득된 데이터 스냅샷이 일관성을 명확하게 충족시키는 것으로 간주될 수 있다.
2. 다중-파티션 판독 트랜잭션에 대한 처리
판독 트랜잭션 큐 내의 임의의 다중-파티션 트랜잭션에 대해, 트랜잭션 처리 디바이스는 다중-파티션 트랜잭션에 대응하는 데이터 파티션들을 결정하고, 데이터 파티션들에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하고, 데이터 파티션들의 각각의 데이터 스냅샷 상의 다중-파티션 트랜잭션에 대응하는 판독 동작을 수행할 수 있다.
본 발명의 이 실시예에서, 데이터 파티션들에 각각 대응하는 데이터 스냅샷들이 일관성을 충족시킨다는 것은 데이터 파티션들 중 임의의 2개의 데이터 파티션에 대해, 2개의 데이터 파티션의 데이터 스냅샷들이 획득될 때, 2개의 데이터 파티션 둘 다에 관련된 최신의 다중-파티션 기입 트랜잭션의 기입이 2개의 데이터 파티션에서 완료되었다는 것을 의미한다.
구체적으로, 제1 판독 트랜잭션 큐 내의 다중-파티션 트랜잭션들에 대해, 트랜잭션 처리 디바이스는 제1 판독 트랜잭션 큐에서의 처리 위치에 도달하는 다중-파티션 트랜잭션을 획득하고, 획득된 다중-파티션 트랜잭션을 다중-파티션 트랜잭션에 대응하는 제2 판독 트랜잭션 큐에 추가할 수 있다. 다중-파티션 트랜잭션이 제2 판독 트랜잭션 큐에서의 처리 위치에 도달할 때, 트랜잭션 처리 디바이스는 그 후 다중-파티션 트랜잭션에 대응하는 데이터 파티션들의 각각의 데이터 스냅샷을 획득한다. 대안적으로, 제1 판독 트랜잭션 큐에서의 처리 위치에 도달하는 다중-파티션 트랜잭션을 획득한 후에, 트랜잭션 처리 디바이스는 다중-파티션 트랜잭션에 대응하는 데이터 파티션들의 각각의 데이터 스냅샷을 직접 획득할 수 있다.
다중-파티션 판독 트랜잭션은 복수의 데이터 파티션 내의 데이터에 대한 판독 동작을 수행하는 것이고, 본 출원의 이 실시예에서의 판독 트랜잭션 및 기입 트랜잭션은 병렬로 처리되고, 다중-파티션 기입 트랜잭션은 상이한 데이터 파티션들에 대해 명확하게 동일한 커밋 시간을 갖지 않는다. 따라서, 다중-파티션 기입 트랜잭션은 또한 외부에 순차적으로 나타날 수 있고, 특정 순간에, 동일한 다중-파티션 판독 트랜잭션에 대응하는 상이한 데이터 파티션들에 대해 획득된 데이터 스냅샷들은 일관성을 충족시키지 못한다. 이 경우에, 획득된 데이터 스냅샷들에 기초하여 직접 판독되는 데이터는 불일치할 수 있다. 따라서, 본 출원의 이 실시예에서, 다중-파티션 판독 트랜잭션과 관련된 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득할 때, 트랜잭션 처리 디바이스는 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷, 및 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보를 획득하고, 데이터 파티션들의 각각의 데이터 파티션 내의 데이터의 버전 정보에 기초하여, 데이터 파티션들의 각각의 데이터 스냅샷이 일관성을 충족시키는지를 검출하고, 데이터 파티션들의 각각의 데이터 스냅샷이 일관성을 충족시키면, 데이터 파티션들의 각각의 데이터 스냅샷 상의 다중-파티션 트랜잭션에 대응하는 판독 동작을 개별적으로 수행하는 단계를 수행할 수 있다. 그렇지 않고, 데이터 파티션들의 각각의 데이터 스냅샷이 일관성을 충족시키지 못하면, 이전 버전(즉, 최신 버전이 아님)을 갖고 데이터 버전 정보에 대응하는 데이터 파티션에 대해, 트랜잭션 처리 디바이스는 이전 데이터 버전을 갖는 획득된 데이터 스냅샷을 삭제하고, 데이터 파티션의 데이터 스냅샷을 재획득하고, 재획득된 데이터 스냅샷 내의 데이터의 버전 정보에 기초하여, 데이터 파티션들의 데이터 스냅샷들이 일관되는지를 검출한다.
본 출원의 이 실시예에서, 데이터 스냅샷 내의 데이터의 버전 정보는 데이터 스냅샷이 생성될 때 데이터 스냅샷에 대응하는 데이터 파티션에 최근의 기입을 수행하는 다중-파티션 트랜잭션(즉, 다중-파티션 기입 트랜잭션)의 식별자를 포함한다.
다중-파티션 트랜잭션을 수신한 후에, 트랜잭션 처리 디바이스는 대응하는 식별자를 다중-파티션 트랜잭션에 할당할 수 있다. 구체적으로, 다중-파티션 트랜잭션의 식별자는 다중-파티션 트랜잭션의 ID 또는 고유 번호일 수 있다.
또한, 상이한 다중-파티션 트랜잭션들을 처리하는 시퀀스를 구별하기 위해 상이한 다중-파티션 트랜잭션 식별자들이 사용될 수 있다. 예를 들어, 다중-파티션 트랜잭션 식별자는 ID이다. 트랜잭션 처리 디바이스가 트랜잭션 타입들이 기입 트랜잭션인 다중-파티션 트랜잭션에 ID들을 할당할 때, 다중-파티션 트랜잭션에 할당된 ID들은 1로부터 증가한다. 더 작은 ID를 갖는 다중-파티션 트랜잭션은 보다 일찍 처리되고, 이전 데이터 버전에 대응한다. 더 큰 ID를 갖는 다중-파티션 트랜잭션은 나중에 처리되고, 이후 데이터 버전에 대응한다.
3. 다중-파티션 기입 트랜잭션에 대한 처리
기입 트랜잭션 큐 내의 임의의 처리될 트랜잭션(즉, 다중-파티션 기입 트랜잭션)에 대해, 트랜잭션 처리 디바이스는 다중-파티션 기입 트랜잭션에 대응하는 적어도 2개의 데이터 파티션을 결정하고, 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷을 획득하고, 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷 상의 다중-파티션 기입 트랜잭션에 대응하는 기입 동작을 개별적으로 수행하고, 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷 상의 기입 동작을 개별적으로 완료한 후에, 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷을 적어도 2개의 데이터 파티션에 각각의 데이터로서 저장할 수 있다.
본 출원의 이 실시예에서, 트랜잭션 처리 디바이스는 동일한 기입 트랜잭션 큐 내의 기입 트랜잭션들을 직렬로 처리한다. 구체적으로, 기입 트랜잭션 큐 내의 복수의 기입 트랜잭션들에 대해, 트랜잭션 처리 디바이스는 이전 기입 트랜잭션에 대한 처리를 완료한 후에만 기입 트랜잭션 큐 내의 다음 기입 트랜잭션을 처리한다. 즉, 트랜잭션 처리 디바이스가 다중-파티션 기입 트랜잭션을 처리할 때, 다중-파티션 기입 트랜잭션에 대응하는 적어도 2개의 데이터 파티션 각각에 대응하는 이전 기입 트랜잭션에 대한 처리가 완료되었다. 따라서, 이 경우, 적어도 2개의 데이터 파티션에 각각 대응하는 획득된 데이터 스냅샷들은 명확하게 일관성을 충족시킨다. 구체적으로, 다중-파티션 기입 트랜잭션을 처리할 때, 트랜잭션 처리 디바이스는 데이터 스냅샷들에 대응하는 버전 정보를 사용하여, 획득된 데이터 스냅샷들이 일관성을 충족시키는지를 검출할 필요가 없다.
선택적으로, 다중-파티션 기입 트랜잭션(즉, 처리될 트랜잭션)에 대응하는 기입 동작이 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여 성공적으로 수행된 후에, 트랜잭션 처리 디바이스는 적어도 2개의 데이터 파티션에 각각 대응하는 버전 정보를 처리될 트랜잭션의 식별자로 추가로 업데이트한다.
구체적으로는, 제1 기입 트랜잭션 큐 내의 다중-파티션 기입 트랜잭션들에 대해, 트랜잭션 처리 디바이스는 제1 기입 트랜잭션 큐에서의 처리 위치에 도달하는 다중-파티션 기입 트랜잭션을 획득하고, 획득된 다중-파티션 기입 트랜잭션을 다중-파티션 기입 트랜잭션에 관련된 데이터 파티션들에 각각 대응하는 제2 기입 트랜잭션 큐들에 추가할 수 있다. 다중-파티션 기입 트랜잭션이 데이터 파티션들에 각각 대응하는 제2 기입 트랜잭션 큐들에서의 모든 처리 위치에 도달할 때, 트랜잭션 처리 디바이스는 데이터 파티션들의 각각의 데이터 스냅샷들을 획득한다. 데이터 파티션들은 처리될 단일-파티션 기입 트랜잭션 및 다중-파티션 기입 트랜잭션에 동시에 대응할 수 있다. 데이터 불일치를 방지하기 위해, 기입 트랜잭션이 처리될 때, 기입 트랜잭션이 단일-파티션 트랜잭션인지 또는 다중-파티션 트랜잭션인지에 관계없이 동일한 데이터 파티션에 대응하는 모든 기입 트랜잭션이 직렬로 처리될 필요가 있다. 따라서, 본 출원의 이 실시예에서, 제1 기입 트랜잭션 큐 내의 다중-파티션 기입 트랜잭션에 대해, 다중-파티션 기입 트랜잭션을 처리할 때, 트랜잭션 처리 디바이스는 다중-파티션 기입 트랜잭션을 관련된 데이터 파티션들에 각각 대응하는 제2 기입 트랜잭션 큐들 각각에 추가하여, 데이터 파티션들의 각각의 단일-파티션 기입 트랜잭션과 함께 다중-파티션 기입 트랜잭션을 직렬로 시퀀스화한다. 트랜잭션 처리 디바이스는 데이터 파티션들에 대응하는 데이터 스냅샷들을 획득하고, 데이터 파티션들에 각각 대응하는 제2 기입 트랜잭션 큐들 각각이 다중-파티션 기입 트랜잭션의 실행에 도달할 때에만 기입 동작을 수행한다. 대안적으로, 상기 임의의 제2 기입 트랜잭션 큐가 다중-파티션 기입 트랜잭션의 실행에 도달할 때, 트랜잭션 처리 디바이스는 다중-파티션 기입 트랜잭션의 실행에 도달하기 위해 다중-파티션 기입 트랜잭션을 포함하는 다른 제2 기입 트랜잭션 큐를 기다리지 않을 수 있지만, 다중-파티션 기입 트랜잭션의 실행에 도달하는 제2 기입 트랜잭션 큐에 대응하는 데이터 파티션의 데이터 스냅샷을 직접 획득하고, 획득된 데이터 스냅샷에서 기입 동작을 수행할 수 있고; 다중-파티션 기입 트랜잭션에 대응하는 기입 동작이 다중-파티션 기입 트랜잭션과 관련된 모든 데이터 파티션들에 대응하는 데이터 스냅샷들에서 완료된 후에, 다중-파티션 기입 트랜잭션에 대응하는 모든 기입된 데이터 스냅샷들을 각각의 대응하는 데이터 파티션들에 데이터로서 저장할 수 있다.
선택적으로, 제1 기입 트랜잭션 큐 내의 다중-파티션 트랜잭션들에 대해, 트랜잭션 처리 디바이스는 제1 기입 트랜잭션 큐에서의 처리 위치에 도달하는 다중-파티션 트랜잭션을 획득하고, 획득된 다중-파티션 트랜잭션을 기입 특별 파티션에 대응하는 제2 기입 트랜잭션 큐에 추가할 수 있다. 스케줄링(즉, 처리)이 기입 특별 파티션에 대응하는 제2 기입 트랜잭션 큐 내의 트랜잭션에 도달할 때, 트랜잭션 처리 디바이스는 데이터 파티션들의 각각의 데이터 스냅샷을 획득한다. 수행될 때, 기입 특별 파티션에 대응하는 제2 기입 트랜잭션 큐 내의 트랜잭션은 다른 데이터 파티션 상의 단일-파티션 기입 트랜잭션을 차단한다.
실제 애플리케이션 동안, 2개의 데이터 파티션에 대응하는 제2 기입 트랜잭션 큐는 동일한 큐일 수 있고, 트랜잭션 처리 디바이스는 2개의 데이터 파티션에 대응하는 제2 기입 트랜잭션 큐에 다중-파티션 기입 트랜잭션을 한번만 추가한다.
결론적으로, 본 출원의 이 실시예에서 설명된 트랜잭션 처리 방법에 따르면, 다중-파티션 트랜잭션과 관련된 데이터 파티션들에 대해, 트랜잭션 처리 디바이스는 일관성을 충족시키는 데이터 스냅샷들을 획득하고, 데이터 스냅샷들에 기초하여, 다중-파티션 트랜잭션에 대응하는 판독 동작 또는 기입 동작을 수행한다. 판독 트랜잭션과 기입 트랜잭션의 병렬 실행이 지원되어, 동일한 데이터 파티션에 대응하는 기입 트랜잭션과 판독 트랜잭션 사이의 블로킹을 방지하고, 그에 의해 시스템 처리량 및 서비스 레벨을 개선한다.
본 출원의 실시예에서, 도 3에 대응하는 실시예에서의 단계들은 트랜잭션 처리 디바이스 내의 상이한 기능 컴포넌트들에 의해 구현될 수 있다. 이러한 기능 컴포넌트들은 소프트웨어 또는 소프트웨어와 하드웨어의 조합에 의해 구현되는 논리적 기능 컴포넌트들일 수 있다. 예를 들어, 상기 각각의 기능 컴포넌트는 독립적인 기능 노드(예를 들어, 독립적인 가상 머신 또는 프로세스)일 수 있고, 기능 노드들은 트랜잭션 처리를 구현하기 위해 서로 상호작용한다.
구체적으로, 예를 들어, 트랜잭션 처리 디바이스 내의 기능 노드들은 코디네이터 노드 및 참가자 노드라고 지칭될 수 있는 2가지 타입으로 분류될 수 있다. 다중-파티션 트랜잭션에 대한 처리를 조정하는 것을 담당하는 하나의 코디네이터 노드가 있을 수 있다. 선택적으로, 복수의 코디네이터 노드가 존재할 수 있고, 여기서 하나의 코디네이터 노드는 다중-파티션 기입 및/또는 판독 트랜잭션을 처리하도록 구성되고, 다른 코디네이터 노드들은 다중-파티션 판독 트랜잭션을 처리하는 것을 담당하도록 구성된다. 구체적으로, 다중-파티션 기입을 위한 하나의 코디네이터 노드만이 존재하고, 다중-파티션 판독을 위한 복수의 코디네이터 노드가 존재할 수 있다. 복수의 참가자 노드가 존재할 수 있고, 각각의 참가자 노드는 각각의 데이터 파티션에 대응하고, 대응하는 데이터 파티션에 관련된 단일-파티션 트랜잭션을 독립적으로 처리하거나, 코디네이터 노드의 조정 하에서, 대응하는 데이터 파티션과 관련된 다중-파티션 트랜잭션을 처리하는 역할을 한다. 선택적으로, 대응하는 데이터 파티션 이외에, 각각의 참가자 노드는 기입 특별 파티션 및 판독 특별 파티션을 갖는다. 기입 특별 파티션 및 판독 특별 파티션은 코디네이터 노드에 의해 전달되는 다중-파티션 기입 트랜잭션 및 다중-파티션 판독 트랜잭션을 처리하는데 사용된다.
코디네이터 노드는 도 3에 도시된 실시예에서의 제1 판독 트랜잭션 큐 및 제1 기입 트랜잭션 큐를 관리하는 것을 담당하고, 각각의 참가자 노드는 하나 이상의 각각의 데이터 파티션에 대응하는 제2 판독 트랜잭션 큐 및 제2 기입 트랜잭션 큐를 담당한다.
선택적으로, 각각의 참가자 노드가 담당하는 제2 판독 트랜잭션 큐 및 제2 기입 트랜잭션 큐는 판독 특별 파티션 및 기입 특별 파티션에 대응하는 판독 큐 및 기입 큐를 추가로 포함한다.
참가자 노드에 의해 수행되는 단계들은 3개의 기능 모듈들에 의해 각각 구현될 수 있다. 구체적으로, 도 7을 참조하면, 도 7은 본 출원의 예시적인 실시예에 따른 참가자 노드의 개략적인 구성도이다. 도 7에서, 참가자 노드(70)는 시퀀싱 모듈(701), 스케줄링 모듈(702), 및 저장 엔진(703)을 포함한다.
시퀀싱 모듈(701)은 단일-파티션 트랜잭션을 대응하는 제2 판독 트랜잭션 큐/제2 기입 트랜잭션 큐에 추가하는 단계를 구현하도록 구성된다. 대안적으로, 시퀀싱 모듈(701)은 시퀀싱을 위한 대응하는 (제2 기입 트랜잭션 큐 및/또는 제2 판독 트랜잭션 큐를 포함하는) 제2 큐에, (제1 기입 트랜잭션 큐 및/또는 제1 판독 트랜잭션 큐를 포함하는) 제1 큐로부터 코디네이터 노드에 의해 분배되는 다중-파티션 트랜잭션을 추가하는 단계를 구현하도록 구성될 수 있다.
스케줄링 모듈(702)은 제2 판독 트랜잭션 큐/제2 기입 트랜잭션 큐 내의 트랜잭션에 대한 스케줄링 처리를 수행하는 단계를 구현하도록 구성된다.
저장 엔진(703)은 대응하는 데이터 파티션의 데이터 스냅샷을 획득, 저장, 및 삭제하고, 획득된 데이터 스냅샷 내의 데이터의 버전 정보를 유지하는 기능들을 구현하도록 구성된다.
선택적으로, 각각의 참가자 노드(70)에는, 하나의 저장 엔진(703)만이 존재하고, 참가자 노드(70)는 하나 이상의 대응하는 데이터 파티션들을 전체로서 사용함으로써 판독/기입 처리를 수행한다. 구체적으로, 트랜잭션이 프로세싱될 때, 트랜잭션이 참가자 노드에 대응하는 모든 데이터 파티션에 관련되는지에 관계없이, 저장 엔진(703)은 모든 대응하는 데이터 파티션의 데이터 스냅샷들을 획득하고, 모든 데이터 파티션 내의 데이터는 하나의 버전 정보를 공유한다.
대안적으로, 참가자 노드(70) 상에 둘 이상의 데이터 파티션이 있을 때, 참가자 노드(70) 내에 복수의 저장 엔진(703)이 존재할 수 있고, 각각의 저장 엔진(703)은 데이터 파티션들 중 하나 이상의 데이터 스냅샷 및 버전 정보를 저장하는 것을 담당한다. 트랜잭션을 처리할 때, 참가자 노드(70)는 이 노드 상의 데이터 파티션들에 있으며 트랜잭션과 관련되는 일부 데이터 파티션의 데이터 스냅샷들만을 획득할 수 있다.
가능한 구현 시나리오에서, 복수의 데이터 파티션은 동일한 제2 기입 트랜잭션 큐에 대응한다. 구체적으로, 복수의 데이터 파티션과 관련된 단일-파티션 기입 트랜잭션들 및 다중-파티션 기입 트랜잭션들은 모두 동일한 제2 기입 트랜잭션 큐에 추가된다.
선택적으로, 코디네이터 노드는 참가자 노드들과 독립적인 기능 노드이다. 코디네이터 노드는 제1 판독 트랜잭션 큐 및 제1 기입 트랜잭션 큐를 관리하고, 제1 판독 트랜잭션 큐 및 제1 기입 트랜잭션 큐 내의 다중-파티션 트랜잭션들 상의 참가자 노드들에 의한 처리를 조정하는 것을 담당한다.
대안적으로, 코디네이터 노드 또한 참가자 노드이다. 제1 판독 트랜잭션 큐 및 제1 기입 트랜잭션 큐를 관리하는 것과 제1 판독 트랜잭션 큐 및 제1 기입 트랜잭션 큐 내의 다중-파티션 트랜잭션들 상의 참가자 노드들에 의한 처리를 조정하는 것 이외에, 코디네이터 노드는 대응하는 제2 판독 트랜잭션 큐 및 제2 기입 트랜잭션 큐를 관리하고, 대응하는 제2 판독 트랜잭션 큐 및 제2 기입 트랜잭션 큐 내의 트랜잭션들을 처리하는 것을 담당한다.
대안적으로, 코디네이터 노드 또한 참가자 노드이다. 코디네이터 노드의 제1 기입 트랜잭션 큐는 제2 기입 트랜잭션 큐에 있고 기입 특별 파티션에 대응하는 기입 트랜잭션 큐이고, 코디네이터 노드의 제1 판독 트랜잭션 큐는 제2 판독 트랜잭션 큐에 있고 판독 특별 파티션에 대응하는 판독 트랜잭션 큐이다. 다중-파티션 트랜잭션이 먼저 제1 트랜잭션 큐에 추가될 수 있고, 스케줄링이 다중-파티션 트랜잭션에 도달할 때, 다중-파티션 트랜잭션은 데이터 파티션에 대응하는 제2 트랜잭션 큐에 분배된다. 대안적으로, 선택적으로, 다중-파티션 트랜잭션이 먼저 제1 트랜잭션 큐에 추가될 수 있고, 스케줄링이 다중-파티션 트랜잭션에 도달할 때, 다중-파티션 트랜잭션은 그 후 특별 파티션에 대응하는 제2 트랜잭션 큐에 분배된다. 이 노드에 대해, 다중-파티션 트랜잭션은 실행 위치에 도달했으며, 요청은 이 노드의 특별 파티션의 제2 트랜잭션 큐에 추가될 필요가 없다는 것이 고려된다.
대안적으로, 코디네이터 노드 또한 참가자 노드이다. 코디네이터 노드의 제1 기입 트랜잭션 큐는 노드의 제2 기입 트랜잭션 큐와 등가이고, 코디네이터 노드의 제1 판독 트랜잭션 큐는 노드의 제2 판독 트랜잭션 큐와 등가이다. 다중-파티션 기입 트랜잭션은 또한 제2 기입 트랜잭션 큐인 각각의 제1 기입 트랜잭션 큐에 직접 추가되고, 동일한 다중-파티션 기입 트랜잭션이 또한 제2 기입 트랜잭션 큐들인 모든 제1 기입 트랜잭션 큐에서 스케줄링될 때, 요청들은 제2 기입 트랜잭션 큐들에 분배된다. 이 노드에 대해, 다중-파티션 기입 트랜잭션이 실행 위치에 도달했으며, 이 노드의 모든 제2 기입 트랜잭션 큐에 요청이 추가될 필요가 없다는 것이 고려된다. 유사하게, 다중-파티션 판독 트랜잭션은 또한 제2 판독 트랜잭션 큐인 제1 판독 트랜잭션 큐에 직접 추가되고, 스케줄링이 트랜잭션에 도달할 때, 요청은 그 후 제2 판독 트랜잭션 큐에 분배된다. 이 노드에 대해, 다중-파티션 판독 트랜잭션이 실행 위치에 도달했으며, 이 노드의 제2 판독 트랜잭션 큐에 요청이 추가될 필요가 없다는 것이 고려된다.
도 8은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 디바이스의 개략적인 구현도이다. 도 8에서, 트랜잭션 처리 디바이스(80)는 적어도 하나의 참가자 노드(참가자 노드(811) 및 참가자 노드(812)가 도 8에 도시되어 있음) 및 코디네이터 노드(820)를 포함할 수 있다. 각각의 참가자 노드는 하나 이상의 데이터 파티션(데이터 파티션 1 및 데이터 파티션 2를 갖는 참가자 노드(811) 및 데이터 파티션 3을 갖는 참가자 노드(812)가 도 8에 도시되어 있음)을 갖는다. 코디네이터 노드는 참가자 노드들 중 하나일 수 있거나, 코디네이터 노드는 독립적인 노드일 수 있다. 예를 들어, 각각의 참가자 노드는 하나의 기입 트랜잭션 큐 및 하나의 판독 트랜잭션 큐에 대응한다. 도 8에서, 코디네이터 노드(820)는 제1 기입 트랜잭션 큐(851) 및 제1 판독 트랜잭션 큐(852)를 관리하고, 참가자 노드(811)는 제2 기입 트랜잭션 큐(831) 및 제2 판독 트랜잭션 큐(832)를 관리하고, 참가자 노드(812)는 제2 기입 트랜잭션 큐(841) 및 제2 판독 트랜잭션 큐(842)를 관리한다.
도 9는 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 디바이스의 개략적인 구현도이다. 도 9에서, 트랜잭션 처리 디바이스(80)는 적어도 하나의 참가자 노드(참가자 노드(811) 및 참가자 노드(812)가 도 9에 도시되어 있음) 및 적어도 2개의 코디네이터 노드들(820)(3개의 코디네이터 노드(820)가 도 9에 도시되어 있음: 코디네이터 노드(820-1), 코디네이터 노드(820-2), 및 코디네이터 노드(820-3))를 포함할 수 있다. 각각의 참가자 노드는 하나 이상의 데이터 파티션(데이터 파티션 1 및 데이터 파티션 2를 갖는 참가자 노드(811) 및 데이터 파티션 3을 갖는 참가자 노드(812)는 도 9에 도시되어 있음)을 갖는다. 코디네이터 노드는 참가자 노드들 중 하나일 수 있거나, 코디네이터 노드는 독립적인 노드일 수 있다. 예를 들어, 각각의 참가자 노드는 하나의 기입 트랜잭션 큐 및 하나의 판독 트랜잭션 큐에 대응한다. 도 9에서, 3개의 코디네이터 노드들(820) 각각은 하나의 제1 기입 트랜잭션 큐(851) 및 2개의 제1 판독 트랜잭션 큐들(852)을 관리하고(제1 판독 트랜잭션 큐들(852)은 제1 판독 트랜잭션 큐(852-1) 및 제1 판독 트랜잭션 큐(852-2)이고, 여기서 코디네이터 노드(820-2)는 대응하여 제1 판독 트랜잭션 큐(852-1)를 관리하고, 코디네이터 노드(820-3)는 대응하여 제1 판독 트랜잭션 큐(852-2)를 관리한다), 참가자 노드(811)는 제2 기입 트랜잭션 큐(831) 및 제2 판독 트랜잭션 큐(832)를 관리하고, 참가자 노드(812)는 제2 기입 트랜잭션 큐(841) 및 제2 판독 트랜잭션 큐(842)를 관리한다.
단말 디바이스가 트랜잭션 처리 요청을 트랜잭션 처리 디바이스에 전송할 때, 단일-파티션 트랜잭션에 대응하는 요청은 단일-파티션 트랜잭션에 대응하는 참가자 노드에 직접 전송되고, 참가자 노드는 단일-파티션 트랜잭션을 대응하는 기입 트랜잭션 큐 또는 판독 트랜잭션 큐에 추가한다. 예를 들어, 도 8 또는 도 9에서, 단말 디바이스들에 의해 전송된 트랜잭션 처리 요청들을 수신할 때, 참가자 노드(811)는 트랜잭션 처리 요청에 대응하는 단일-파티션 기입 트랜잭션을 기입 트랜잭션 큐(831)에 추가하고, 트랜잭션 처리 요청에 대응하는 단일-파티션 판독 트랜잭션을 판독 트랜잭션 큐(832)에 추가하며; 단말 디바이스들에 의해 전송된 트랜잭션 처리 요청들을 수신할 때, 참가자 노드(812)는 트랜잭션 처리 요청에 대응하는 단일-파티션 기입 트랜잭션을 기입 트랜잭션 큐(841)에 추가하고, 트랜잭션 처리 요청에 대응하는 단일-파티션 판독 트랜잭션을 판독 트랜잭션 큐(842)에 추가한다.
다중-파티션 트랜잭션에 대해, 단말 디바이스는 대응하는 요청을 코디네이터 노드(820)에 전송하고, 코디네이터 노드(820)는 코디네이터 노드(820)에 대응하는 기입 트랜잭션 큐 또는 판독 트랜잭션 큐에 다중-파티션 트랜잭션을 추가한다. 구체적으로, 단말 디바이스들에 의해 전송된 트랜잭션 처리 요청들을 수신한 후에, 코디네이터 노드(820)는 트랜잭션 처리 요청에 대응하는 다중-파티션 기입 트랜잭션을 기입 트랜잭션 큐(851)에 추가하고, 트랜잭션 처리 요청에 대응하는 다중-파티션 판독 트랜잭션을 판독 트랜잭션 큐(852)에 추가한다. 다중-파티션 기입 트랜잭션을 기입 트랜잭션 큐(851)에 추가할 때, 코디네이터 노드(820)는 트랜잭션 ID를 다중-파티션 기입 트랜잭션에 할당할 수 있다.
참가자 노드에 의해 트랜잭션을 처리하는 프로세스는 다음과 같을 수 있다:
1. 단일-파티션 트랜잭션에 대한 처리
단일-파티션 트랜잭션은 트랜잭션에 관련된 데이터 파티션이 위치되는 참가자 노드에 의해 처리된다. 예를 들어, 도 8 또는 도 9의 참가자 노드(811)를 예로서 사용하여, 기입 트랜잭션 큐(831)를 처리할 때, 참가자 노드(811)는 하나의 스레드를 사용하여 기입 트랜잭션 큐(831) 내의 기입 트랜잭션들을 직렬로 처리한다. 예를 들어, 참가자 노드(811)가 큐 시퀀스에 기초하여 기입 트랜잭션 큐(831)로부터 데이터 파티션 1에 관련된 단일-파티션 기입 트랜잭션을 추출한 후에, 참가자 노드(811)는 데이터 파티션 1의 데이터 스냅샷을 획득하고, 추출된 단일-파티션 기입 트랜잭션에 대응하는 기입된 데이터를 획득된 데이터 스냅샷에 기입한 후에, 데이터 파티션 1 내의 데이터로서, 데이터가 기입된 후에 획득된 데이터 스냅샷을 저장한다.
판독 트랜잭션 큐(832)를 처리할 때, 참가자 노드(811)는 하나의 스레드를 사용하여 판독 트랜잭션 큐(832) 내의 단일-파티션 판독 트랜잭션들을 직렬로 처리한다. 구체적으로, 데이터 파티션 1에 관련된 단일-파티션 판독 트랜잭션에 대해, 참가자 노드(811)는 데이터 파티션 1의 데이터 스냅샷을 획득하고, 획득된 데이터 스냅샷으로부터 단일-파티션 판독 트랜잭션에 대응하는 데이터를 판독하고, 판독된 데이터를 단말 디바이스에 전송한 후, 획득된 데이터 스냅샷을 삭제할 수 있다.
2. 다중-파티션 기입 트랜잭션에 대한 처리
코디네이터 노드는 다중-파티션 기입 트랜잭션을 처리하기 위해 참가자 노드들을 조정한다. 예를 들어, 도 8 또는 도 9에 도시된 바와 같이, 코디네이터 노드(820)는 하나의 스레드를 사용하여 기입 트랜잭션 큐(851) 내의 다중-파티션 기입 트랜잭션들을 직렬로 처리한다. 구체적으로, 각각의 다중-파티션 기입 트랜잭션에 대해, 다중-파티션 기입 트랜잭션이 데이터 파티션 1 및 데이터 파티션 3에 데이터를 기입하는 것으로 가정하면, 코디네이터 노드(820)는 다중-파티션 기입 트랜잭션을 참가자 노드(811) 및 참가자 노드(812)에 개별적으로 전송한다. 참가자 노드(811)는 다중-파티션 기입 트랜잭션을 기입 트랜잭션 큐(831)에 추가하고, 참가자 노드(812)는 다중-파티션 기입 트랜잭션을 기입 트랜잭션 큐(841)에 추가한다. 다중-파티션 기입 트랜잭션을 처리할 때, 참가자 노드(811)는 데이터 파티션 1의 데이터 스냅샷을 획득하고, 데이터 스냅샷을 성공적으로 획득한 후에 획득한 성공 응답을 코디네이터 노드로 리턴시키거나, 데이터 스냅샷 획득에 실패한 후에 획득한 실패 응답을 코디네이터 노드로 리턴시킨다. 유사하게, 다중-파티션 기입 트랜잭션을 처리할 때, 참가자 노드(812)는 데이터 파티션 3의 데이터 스냅샷을 획득하고, 데이터 스냅샷이 성공적으로 획득되었는지에 기초하여 획득한 성공 응답 또는 획득한 실패 응답을 코디네이터 노드로 리턴시킨다.
코디네이터 노드(820)가 참가자 노드들 중 하나에 의해 전송된 획득한 실패 응답을 수신하면, 코디네이터 노드(820)는 다른 참가자 노드에 스냅샷 삭제 요청을 전송하여, 다른 참가자 노드에게 성공적으로 획득된 데이터 스냅샷을 삭제하도록 지시한다.
코디네이터 노드(820)가 참가자 노드(811) 및 참가자 노드(812)에 의해 각각 전송된 획득한 성공 응답들이 수신되었다고 결정하면, 코디네이터 노드(820)는 참가자 노드(811) 및 참가자 노드(812)에 트랜잭션 처리 표시를 개별적으로 전송한다. 참가자 노드(811)는 데이터 파티션 1에 대응하는 데이터 스냅샷에 데이터를 기입하고, 기입이 성공적인지의 여부에 기초하여 기입 성공 응답 또는 기입 실패 응답을 코디네이터 노드(820)로 리턴시킨다. 또한, 참가자 노드(812)는 데이터 파티션 3에 대응하는 데이터 스냅샷에 데이터를 기입하고, 기입이 성공적인지의 여부에 기초하여 기입 성공 응답 또는 기입 실패 응답을 코디네이터 노드로 리턴시킨다.
코디네이터 노드(820)가 참가자 노드들 중 하나에 의해 전송된 기입 실패 응답을 수신하면, 코디네이터 노드(820)는 다른 참가자 노드에 스냅샷 삭제 요청을 전송하여, 다른 참가자 노드에게 성공적으로 기입된 데이터 스냅샷을 삭제하도록 지시한다.
코디네이터 노드(820)가 참가자 노드(811) 및 참가자 노드(812)에 의해 각각 전송된 기입 성공 응답들이 수신되었다고 결정하면, 코디네이터 노드(820)는 커밋 표시를 참가자 노드(811) 및 참가자 노드(812)에 개별적으로 전송한다. 참가자 노드(811)는 성공적으로 기입된 데이터 스냅샷을 데이터 파티션 1에 데이터로서 저장하고, 저장을 완료한 후에, 데이터 파티션 1 내의 데이터의 버전 번호를 다중-파티션 기입 트랜잭션의 트랜잭션 ID로 업데이트한다. 참가자 노드(812)는 또한 성공적으로 기입된 데이터 스냅샷을 데이터 파티션 3에 데이터로서 저장하고, 저장을 완료한 후에, 데이터 파티션 3 내의 데이터의 버전 번호를 다중-파티션 기입 트랜잭션의 트랜잭션 ID로 업데이트한다.
3. 다중-파티션 판독 트랜잭션에 대한 처리
코디네이터 노드는 다중-파티션 판독 트랜잭션을 처리하기 위해 참가자 노드들을 조정한다. 예를 들어, 도 8 또는 도 9에 도시된 바와 같이, 코디네이터 노드(820)는 하나의 스레드를 사용하여 판독 트랜잭션 큐(852) 내의 다중-파티션 판독 트랜잭션들을 직렬로 처리한다. 구체적으로, 특정 다중-파티션 판독 트랜잭션에 대해, 다중-파티션 판독 트랜잭션이 데이터 파티션 1 및 데이터 파티션 3으로부터 데이터를 판독하는 것으로 가정하면, 코디네이터 노드(820)는 스냅샷 획득 요청을 참가자 노드(811) 및 참가자 노드(812)에 개별적으로 전송한다. 요청을 수신한 후에, 참가자 노드(811)는 데이터 파티션 1의 데이터 스냅샷을 획득하고, 데이터 스냅샷 내의 데이터의 버전 정보를 코디네이터 노드(820)에 리턴시킨다. 데이터 스냅샷 내의 데이터의 버전 정보는 데이터 파티션 1에서 최근 커밋이 완료된 다중-파티션 기입 트랜잭션의 ID이다. 이에 대응하여, 요청을 수신한 후에, 참가자 노드(812)는 데이터 파티션 3의 데이터 스냅샷을 획득하고, 데이터 스냅샷 내의 데이터의 버전 정보를 코디네이터 노드(820)로 리턴시킨다. 참가자 노드(811)에 의해 전송되는 데이터 파티션 1의 데이터 스냅샷 내의 데이터의 버전 정보, 및 참가자 노드(812)에 의해 전송되는 데이터 파티션 3의 데이터 스냅샷 내의 데이터의 버전 정보를 수신한 후에, 코디네이터 노드(820)는 버전 정보에 기초하여, 데이터 파티션 1의 데이터 스냅샷 및 데이터 파티션 3의 데이터 스냅샷이 일관성을 충족시키는지를 검출한다.
본 발명의 이 실시예에서, 데이터 스냅샷의 버전 정보가 데이터 스냅샷에 대응하는 데이터 파티션에 최근의 기입을 수행하는 다중-파티션 기입 트랜잭션의 식별자일 때, 적어도 2개의 데이터 파티션에 각각 대응하는 데이터 스냅샷이 일관성을 충족시킨다는 것은 적어도 2개의 데이터 파티션에 각각 대응하는 데이터 스냅샷들의 버전 정보가 동일하다는 것을 의미할 수 있다. 대안적으로, 적어도 2개의 데이터 파티션에 각각 대응하는 데이터 스냅샷들이 일관성을 충족시킨다는 것은 적어도 2개의 데이터 파티션 각각에 대해, 데이터 파티션의 획득된 데이터 스냅샷의 버전 정보가 데이터 파티션의 미리 저장된 버전 정보와 동일하다는 것을 의미할 수 있다.
예를 들어, 코디네이터 노드(820)는 버전 정보에 기초하여, 데이터 파티션 1의 데이터 스냅샷 및 데이터 파티션 3의 데이터 스냅샷이 다음 방식들에서 일관성을 충족시키는지를 검출할 수 있다:
(1) 데이터 파티션 1 및 데이터 파티션 3이 다중-파티션 기입이 동시에 수행되는 2개의 데이터 파티션이면(즉, 다중-파티션 기입 트랜잭션이 데이터 파티션 1에 관련되어 있을 때, 다중-파티션 기입 트랜잭션은 명확하게 데이터 파티션 3에도 관련되어 있다), 코디네이터 노드(820)는 2개의 데이터 파티션에 각각 대응하는 버전 정보가 동일한지를 직접 비교할 수 있다. 2개의 데이터 파티션에 각각 대응하는 버전 정보가 동일하면, 2개의 데이터 파티션에 각각 대응하는 데이터 스냅샷들이 일관성을 충족시킨다는 것을 나타낸다. 2개의 데이터 파티션에 각각 대응하는 버전 정보가 상이하면, 코디네이터 노드(820)는 버전 정보에 기초하여, 이전 버전을 갖는 데이터 파티션(즉, 최근 완료된 다중-파티션 기입 트랜잭션의 더 작은 ID에 대응하는 데이터 파티션, 이 데이터 파티션은 비교적 조기 버전을 갖는다)을 추가로 결정할 수 있다.
(2) 데이터 파티션 1 및 데이터 파티션 3이 다중-파티션 기입이 동시에 수행되는 2개의 데이터 파티션이 아니면(즉, 다중-파티션 기입 트랜잭션이 데이터 파티션 1에 관련되어 있을 때, 다중-파티션 기입 트랜잭션은 데이터 파티션 3에 관련되지 않을 수 있다), 이 경우에, 코디네이터 노드(820)는 데이터 파티션에 각각 대응하는 버전 정보를 유지할 수 있다. 다중-파티션 기입 트랜잭션을 처리하는 프로세스에서, 커밋 표시를 참가자 노드에 전송한 후에, 코디네이터 노드(820)는 다중-파티션 기입 트랜잭션에 관련된 데이터 파티션의, 코디네이터 노드(820)에 의해 유지되는 버전 정보를 다중-파티션 기입 트랜잭션의 ID로 업데이트한다. 이에 대응하여, 각각의 참가자 노드도 참가자 노드에 대응하는 데이터 파티션의 버전 정보를 유지한다. 다중-파티션 기입 트랜잭션을 처리하는 프로세스에서, 참가자 노드가 코디네이터 노드(820)에 의해 전송된 커밋 표시를 수신하고, 대응하는 데이터 파티션 내의 데이터로서 기입이 완료된 현재 데이터 스냅샷을 성공적으로 저장한 후에, 참가자 노드는 데이터 파티션의, 참가자 노드에 의해 유지되는 버전 정보를 다중-파티션 기입 트랜잭션의 ID로 업데이트한다. 다중-파티션 판독 트랜잭션에 대한 후속 처리 동안, 참가자 노드는 다중-파티션 판독 트랜잭션에 관련된 데이터 파티션들의 데이터 스냅샷들을 획득하고, 데이터 스냅샷들에 대응하는 버전 정보를 코디네이터 노드(820)에 전송한다. 코디네이터 노드(820)는 그 후 참가자 노드에 의해 전송된 버전 정보를 코디네이터 노드(820)에 의해 유지되고 데이터 파티션들에 대응하는 버전 정보와 비교한다. 다중-파티션 판독 트랜잭션에 대응하는 데이터 스냅샷들의, 참가자 노드에 의해 전송된 버전 정보가 대응하는 데이터 파티션들의, 코디네이터 노드에 의해 유지되는 버전 정보와 동일하면, 다중-파티션 판독 트랜잭션에 대응하는 데이터 파티션들의 획득된 데이터 스냅샷들이 일관성을 충족시킨다는 것을 나타낸다. 다중-파티션 판독 트랜잭션에 대응하는 데이터 스냅샷들의, 참가자 노드에 의해 전송된 버전 정보 내의 하나 이상의 버전 정보가 대응하는 데이터 파티션들의, 코디네이터 노드에 의해 유지되는 버전 정보와 상이하면, 하나 이상의 버전 정보에 대응하는 데이터 스냅샷들이 이전 버전을 갖는다고 결정될 수 있다.
데이터 파티션 1의 데이터 스냅샷 및 데이터 파티션 3의 데이터 스냅샷이 일관성을 충족시키지 못했다고 검출하면, 코디네이터 노드(820)는 버전 정보에 기초하여, 이전 버전을 갖는 데이터 스냅샷에 대응하는 참가자 노드를 결정하고, 결정된 참가자 노드에 데이터 스냅샷 재획득 요청을 전송한다. 데이터 스냅샷 재획득 요청을 수신한 후에, 참가자 노드는 원래의 데이터 스냅샷을 삭제하고, 데이터 스냅샷을 재획득하고, 재획득된 데이터 스냅샷 내의 데이터의 버전 정보를 코디네이터 노드(820)로 리턴시킨다. 코디네이터 노드(820)는 또한, 재획득된 데이터 스냅샷 내의 데이터의 버전 정보에 기초하여, 데이터 파티션 1의 데이터 스냅샷 및 데이터 파티션 3의 데이터 스냅샷이 일관성을 충족시키는지를 검출한다.
데이터 파티션 1의 데이터 스냅샷 및 데이터 파티션 3의 데이터 스냅샷이 일관성을 충족시킨다고 검출하면, 코디네이터 노드(820)는 참가자 노드(811) 및 참가자 노드(812)에게 다중-파티션 판독 요청을 개별적으로 처리하도록 지시하기 위해, 트랜잭션 처리 표시를 참가자 노드(811) 및 참가자 노드(812)에 개별적으로 전송한다. 트랜잭션 처리 표시를 수신한 후에, 참가자 노드(811) 및 참가자 노드(812)는 획득된 데이터 스냅샷들로부터 다중-파티션 판독 요청에 대응하는 데이터를 판독하고, 판독이 성공적인지의 여부에 기초하여 판독 성공 응답 또는 판독 실패 응답을 코디네이터 노드(820)에 전송한다.
참가자 노드(811) 및 참가자 노드(812) 중 어느 하나에 의해 전송된 판독 실패 응답을 수신한 후에, 코디네이터 노드(820)는 다른 참가자 노드에 스냅샷 삭제 요청을 전송하여, 다른 참가자 노드에게 획득된 데이터 스냅샷을 삭제하도록 지시한다.
참가자 노드(811) 및 참가자 노드(812)에 의해 각각 전송된 판독 성공 응답들을 수신한 후에, 코디네이터 노드(820)는 참가자 노드(811) 및 참가자 노드(812)에 스냅샷 삭제 요청을 개별적으로 전송하여, 2개의 참가자 노드에게 획득된 데이터 스냅샷들을 삭제하도록 지시한다.
도 10은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 디바이스(100)의 개략적인 구조도이다. 트랜잭션 처리 디바이스(100)는 도 2a에 도시된 네트워크 환경에서 트랜잭션 처리 디바이스(210)로서 구현될 수 있다. 도 10에 도시된 바와 같이, 트랜잭션 처리 디바이스(100)는 프로세서(101) 및 통신 인터페이스(104)를 포함할 수 있다.
프로세서(101)는 하나 이상의 처리 유닛을 포함할 수 있다. 처리 유닛은 중앙 처리 장치(central processing unit, CPU), 네트워크 프로세서(network processor, NP) 등일 수 있다.
통신 인터페이스(104)는 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스는 단말 디바이스에 접속되도록 구성된다. 구체적으로, 네트워크 인터페이스는 이더넷 인터페이스 또는 섬유 인터페이스와 같은 유선 네트워크 인터페이스를 포함할 수 있거나, 네트워크 인터페이스는 무선 근거리 통신망 인터페이스 또는 셀룰러 모바일 네트워크 인터페이스와 같은 무선 네트워크 인터페이스를 포함할 수 있다. 트랜잭션 처리 디바이스(100)는 네트워크 인터페이스(104)를 통해 단말 디바이스들과 통신할 수 있다.
선택적으로, 트랜잭션 처리 디바이스(100)는 메모리(103)를 추가로 포함할 수 있다. 프로세서(101)는 버스를 통해 메모리(103) 및 통신 인터페이스(104)에 접속될 수 있다.
메모리(103)는 소프트웨어 프로그램을 저장하도록 구성될 수 있다. 소프트웨어 프로그램은 프로세서(101)에 의해 실행될 수 있다. 또한, 메모리(103)는 다양한 서비스 데이터 또는 사용자 데이터를 추가로 저장할 수 있다. 소프트웨어 프로그램은 트랜잭션 수신 모듈, 스냅샷 획득 모듈, 실행 모듈, 업데이트 모듈, 등을 포함할 수 있다.
트랜잭션 수신 모듈은 도 3에 도시된 실시예에서의 단말 디바이스에 의해 전송된 다중-파티션 트랜잭션 및 단일-파티션 트랜잭션을 수신하는 기능을 구현하기 위해, 프로세서(101)에 의해 실행된다.
스냅샷 획득 모듈은 도 3에 도시된 실시예에서의 일관성을 충족시키는 데이터 스냅샷들을 획득하는 기능을 구현하기 위해, 프로세서(101)에 의해 실행된다.
실행 모듈은 도 3에 도시된 실시예에서 판독 동작 또는 기입 동작을 수행하는 기능을 구현하기 위해, 프로세서(101)에 의해 실행된다.
도 3에 도시된 실시예에서의 데이터 파티션에 대응하는 데이터 스냅샷 내의 데이터의 버전 정보를 업데이트하는 기능을 구현하기 위해, 업데이트 모듈이 프로세서(101)에 의해 실행된다.
선택적으로, 트랜잭션 처리 디바이스(100)는 출력 디바이스(105) 및 입력 디바이스(107)를 추가로 포함할 수 있다. 출력 디바이스(105) 및 입력 디바이스(107)는 프로세서(101)에 접속된다. 출력 디바이스(105)는 정보를 디스플레이하도록 구성된 디스플레이, 사운드를 재생하기 위한 전력 증폭 디바이스, 프린터 등일 수 있다. 출력 디바이스(105)는 디스플레이 스크린, 전력 증폭 디바이스 또는 프린터에 출력을 제공하기 위해, 출력 제어기를 추가로 포함할 수 있다. 입력 장치(107)는 마우스, 키보드, 전자 스타일러스 또는 터치 패널과 같은, 정보를 입력하기 위해 사용자에 의해 사용되는 디바이스일 수 있다. 입력 디바이스(107)는 마우스, 키보드, 전자 스타일러스 또는 터치 패널과 같은 디바이스로부터의 입력을 수신하고 처리하기 위해, 입력 제어기를 추가로 포함할 수 있다.
다음은 본 출원의 방법 실시예를 실행하는데 사용될 수 있는 본 출원의 장치 실시예이다. 본 출원의 장치 실시예에 개시되어 있지 않은 세부사항들에 대해서는 본 출원의 방법 실시예를 참조한다.
도 11은 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 장치의 구조 블록도이다. 트랜잭션 처리 장치는 하드웨어 회로 또는 소프트웨어와 하드웨어의 조합을 사용하여 트랜잭션 처리 디바이스의 일부 또는 전부로서 구현될 수 있고, 트랜잭션 처리 디바이스는 도 2a에 도시된 실시예에서의 트랜잭션 처리 디바이스(210)일 수 있다. 트랜잭션 처리 장치는 트랜잭션 수신 유닛(1101), 스냅샷 획득 유닛(1102), 실행 유닛(1103), 및 업데이트 유닛(1104)을 포함할 수 있다.
트랜잭션 수신 유닛(1101)은 도 3에 도시된 실시예에서의 단말 디바이스에 의해 전송된 다중-파티션 트랜잭션 및 단일-파티션 트랜잭션을 수신하는 기능을 구현하기 위해, 프로세서(81)에 의해 실행된다.
스냅샷 획득 유닛(1102)은 도 3에 도시된 실시예에서의 일관성을 충족시키는 데이터 스냅샷들을 획득하는 기능을 구현하도록 구성된다.
실행 유닛(1103)은 도 3에 도시된 실시예에서의 판독 동작 또는 기입 동작을 수행하는 기능을 구현하도록 구성된다.
업데이트 유닛(1104)은 도 3에 도시된 실시예에서의 데이터 파티션에 대응하는 데이터 스냅샷 내의 데이터의 버전 정보를 업데이트하는 기능을 구현하도록 구성된다.
도 12는 본 출원의 예시적인 실시예에 따른 트랜잭션 처리 시스템의 시스템 구성도이다. 도 11에 도시된 바와 같이, 트랜잭션 처리 시스템은 트랜잭션 처리 장치(122) 및 적어도 2개의 데이터 파티션(124)을 포함할 수 있다.
트랜잭션 처리 장치(122)는 도 11에 도시된 트랜잭션 처리 장치로서 구현될 수 있고, 트랜잭션 처리 장치는 도 3에 도시된 실시예에서의 트랜잭션 처리 방법을 구현하도록 구성된다.
전술한 실시예에서 제공되는 트랜잭션 처리 장치가 트랜잭션 처리를 수행할 때, 전술한 기능 유닛들의 분할은 단지 예일뿐이라는 점에 유의해야 한다. 실제 애플리케이션에서, 전술한 기능들은 필요에 따라 구현을 위해 상이한 기능 유닛들에 할당될 수 있으며, 즉, 디바이스의 내부 구조는 전술한 기능들의 전부 또는 일부를 구현하기 위해 상이한 기능 유닛들로 분할된다. 또한, 전술한 실시예 및 트랜잭션 처리 방법의 방법 실시예에서 제공되는 트랜잭션 처리 장치는 동일한 개념에 기초한다. 특정 구현 프로세스에 대한 방법 실시예를 참조하고, 이는 본 명세서에서 다시 설명되지 않는다.
본 출원의 전술한 실시예들의 시퀀스 번호들은 예시의 목적들을 위한 것일 뿐이며, 실시예들의 우선순위들을 표시하려는 의도는 아니다.
본 기술분야의 통상의 기술자는 실시예들의 단계들의 전부 또는 일부가 하드웨어 또는 관련 하드웨어에 지시하는 프로그램에 의해 구현될 수 있다는 것을 이해할 수 있다. 프로그램은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 저장 매체는 판독 전용 메모리, 자기 디스크, 광 디스크 등을 포함할 수 있다.
전술한 설명들은 단지 본 출원의 임의적인 실시예들이지만, 본 출원을 제한하려는 의도는 아니다. 본 출원의 사상 및 원리로부터 벗어나지 않고 이루어지는 임의의 수정, 등가의 대체, 또는 개선은 본 출원의 보호 범위 내에 있어야 한다.

Claims (26)

  1. 트랜잭션 처리 장치에 의해 수행되는 트랜잭션 처리 방법으로서,
    처리될 트랜잭션을 수신하는 단계 -상기 처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 동작을 수행하는 트랜잭션임-;
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계; 및
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 상기 데이터 스냅샷들에 기초하여, 상기 처리될 트랜잭션에 대응하는 동작을 수행하는 단계
    를 포함하고, 상기 처리될 트랜잭션은 상기 처리될 트랜잭션의 트랜잭션 타입에 기초하여 판독 트랜잭션 큐 또는 기입 트랜잭션 큐에 추가되고,
    상기 판독 트랜잭션 큐 및 상기 기입 트랜잭션 큐는 병렬로 처리되는, 트랜잭션 처리 방법.
  2. 제1항에 있어서,
    상기 처리될 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 판독 동작을 수행하는 트랜잭션이고, 상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계는:
    상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷, 및 상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보를 획득하는 단계; 및
    상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보에 기초하여, 상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족하는지를 검출하는 단계를 포함하는 트랜잭션 처리 방법.
  3. 제2항에 있어서,
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하는 단계는:
    상기 검출 결과가 상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시키지 못한다는 것이면, 이전 버전을 갖는 데이터 파티션의 데이터 스냅샷을 재획득하고 상기 재획득된 데이터 스냅샷의 버전 정보를 획득하는 단계를 추가로 포함하는 트랜잭션 처리 방법.
  4. 제2항에 있어서,
    상기 데이터 스냅샷의 버전 정보는 상기 데이터 스냅샷이 생성될 때 상기 데이터 스냅샷에 대응하는 데이터 파티션에 최근의 기입을 수행하는 다중-파티션 기입 트랜잭션의 식별자를 포함하고, 상기 다중-파티션 기입 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션인 트랜잭션 처리 방법.
  5. 제1항에 있어서,
    상기 처리될 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이고, 상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여, 상기 처리될 트랜잭션에 대응하는 동작을 수행하는 단계는:
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에서의 처리될 트랜잭션에 대응하는 기입 동작을 수행하는 단계; 및
    대응하는 데이터 파티션들에 데이터로서, 상기 처리될 트랜잭션에 대응하는 기입 동작이 수행된 후에 획득되는 데이터 스냅샷들을 저장하는 단계를 포함하는 트랜잭션 처리 방법.
  6. 제1항에 있어서,
    상기 처리될 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이고, 상기 방법은:
    상기 처리될 트랜잭션에 대응하는 기입 동작이 상기 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여 성공적으로 수행된 후에, 상기 적어도 2개의 데이터 파티션에 각각 대응하는 버전 정보를 상기 처리될 트랜잭션의 식별자로 업데이트하는 단계를 추가로 포함하는 트랜잭션 처리 방법.
  7. 트랜잭션 처리 장치로서,
    처리될 트랜잭션을 수신하도록 구성되는 트랜잭션 수신 유닛 -상기 처리될 트랜잭션은 적어도 2개의 데이터 파티션에서의 동작을 수행하는 트랜잭션임-;
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들을 획득하도록 구성되는 스냅샷 획득 유닛; 및
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에 기초하여, 상기 처리될 트랜잭션에 대응하는 동작을 수행하도록 구성되는 실행 유닛
    을 포함하고, 상기 처리될 트랜잭션은 상기 처리될 트랜잭션의 트랜잭션 타입에 기초하여 판독 트랜잭션 큐 또는 기입 트랜잭션 큐에 추가되고,
    상기 판독 트랜잭션 큐 및 상기 기입 트랜잭션 큐는 병렬로 처리되는, 트랜잭션 처리 장치.
  8. 제7항에 있어서,
    상기 처리될 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 판독 동작을 수행하는 트랜잭션이고, 상기 스냅샷 획득 유닛은:
    상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷, 및 상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보를 획득하고;
    상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷의 버전 정보에 기초하여, 상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시키는지를 검출하도록 구성되는 트랜잭션 처리 장치.
  9. 제8항에 있어서,
    상기 스냅샷 획득 유닛은:
    상기 검출 결과가 상기 적어도 2개의 데이터 파티션의 각각의 데이터 스냅샷이 일관성을 충족시키지 못한다는 것이면, 이전 버전에 대응하는 데이터 파티션의 데이터 스냅샷을 재획득하고 상기 재획득된 데이터 스냅샷의 버전 정보를 획득하도록 추가로 구성되는 트랜잭션 처리 장치.
  10. 제8항에 있어서,
    상기 데이터 스냅샷의 버전 정보는 상기 데이터 스냅샷이 생성될 때 상기 데이터 스냅샷에 대응하는 데이터 파티션에 최근의 기입을 수행하는 다중-파티션 기입 트랜잭션의 식별자를 포함하고, 상기 다중-파티션 기입 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션인 트랜잭션 처리 장치.
  11. 제7항에 있어서,
    상기 처리될 트랜잭션은 상기 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션이고, 상기 실행 유닛은:
    상기 적어도 2개의 데이터 파티션에 대응하고 일관성을 충족시키는 데이터 스냅샷들에서의 상기 처리될 트랜잭션에 대응하는 상기 기입 동작을 수행하고;
    대응하는 데이터 파티션들에 데이터로서, 상기 처리될 트랜잭션에 대응하는 기입 동작이 수행된 후에 획득되는 데이터 스냅샷들을 저장하도록 구체적으로 구성되는 트랜잭션 처리 장치.
  12. 제7항에 있어서,
    상기 장치는:
    상기 처리될 트랜잭션이 상기 적어도 2개의 데이터 파티션에서의 기입 동작을 수행하는 트랜잭션일 때, 상기 처리될 트랜잭션에 대응하는 상기 기입 동작이 상기 적어도 2개의 데이터 파티션에 각각 대응하고 일관성을 충족시키는 데이터 스냅샷들에 대해 성공적으로 수행된 후에, 상기 적어도 2개의 데이터 파티션에 각각 대응하는 버전 정보를 상기 처리될 트랜잭션의 식별자로 업데이트하도록 구성되는 업데이트 유닛을 추가로 포함하는 트랜잭션 처리 장치.
  13. 트랜잭션 처리 디바이스로서,
    상기 디바이스는: 통신 인터페이스, 프로세서, 및 메모리를 포함하고, 상기 메모리는 상기 프로세서에 의해 실행될 수 있는 프로그램 또는 명령어를 저장하고, 상기 프로세서는 상기 메모리에 저장된 프로그램 또는 명령어를 실행함으로써 제1항 내지 제6항 중 어느 한 항에 따른 트랜잭션 처리 방법을 구현하도록 상기 통신 인터페이스를 제어하는 트랜잭션 처리 디바이스.
  14. 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 저장 매체는 실행가능 프로그램을 저장하고, 상기 실행가능 프로그램은 제1항 내지 제6항 중 어느 한 항에 따른 트랜잭션 처리 방법을 구현하도록 프로세서에 의해 실행되는 컴퓨터 판독가능 저장 매체.
  15. 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램으로서,
    컴퓨터로 하여금 제1항 내지 제6항 중 어느 한 항의 방법을 실행하게 하는, 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020197036437A 2017-06-05 2017-06-05 트랜잭션 처리 방법, 디바이스 및 장비 KR102353141B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/087194 WO2018223262A1 (zh) 2017-06-05 2017-06-05 一种事务处理方法、装置及设备

Publications (2)

Publication Number Publication Date
KR20200006098A KR20200006098A (ko) 2020-01-17
KR102353141B1 true KR102353141B1 (ko) 2022-01-19

Family

ID=64565652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197036437A KR102353141B1 (ko) 2017-06-05 2017-06-05 트랜잭션 처리 방법, 디바이스 및 장비

Country Status (6)

Country Link
US (1) US20200110739A1 (ko)
EP (1) EP3627359B1 (ko)
JP (1) JP6924898B2 (ko)
KR (1) KR102353141B1 (ko)
CN (1) CN110168514B (ko)
WO (1) WO2018223262A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475262B (zh) * 2020-04-02 2024-02-06 百度国际科技(深圳)有限公司 区块链中事务请求处理方法、装置、设备和介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653665B1 (en) 2004-09-13 2010-01-26 Microsoft Corporation Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation
US20130117307A1 (en) 2011-11-08 2013-05-09 Sybase, Inc. Snapshot isolation support for distributed query processing in a shared disk database cluster
US20130124475A1 (en) 2011-11-16 2013-05-16 Sap Ag System and Method of Performing Snapshot Isolation in Distributed Databases
US20140149353A1 (en) 2012-11-29 2014-05-29 Juchang Lee Version Garbage Collection Using Snapshot Lists
US20140351535A1 (en) * 2013-05-23 2014-11-27 Netapp, Inc. Snapshots and versioning of transactional storage class memory
US20160234173A1 (en) 1999-07-16 2016-08-11 Intertrust Technologies Corporation Trusted storage systems and methods
US9632878B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287496A (en) * 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing
US7334004B2 (en) * 2001-06-01 2008-02-19 Oracle International Corporation Consistent read in a distributed database environment
US8949220B2 (en) * 2003-12-19 2015-02-03 Oracle International Corporation Techniques for managing XML data associated with multiple execution units
US8375290B1 (en) * 2004-02-25 2013-02-12 Avaya Inc. Document version marking and access method and apparatus
CN102819615A (zh) * 2012-08-30 2012-12-12 天津火星科技有限公司 一种基于应用快照的数据库持续数据保护方法
CN104461768B (zh) * 2013-09-22 2018-08-14 华为技术有限公司 副本存储装置及副本存储方法
US9779128B2 (en) * 2014-04-10 2017-10-03 Futurewei Technologies, Inc. System and method for massively parallel processing database
US9990224B2 (en) * 2015-02-23 2018-06-05 International Business Machines Corporation Relaxing transaction serializability with statement-based data replication
CN106598992B (zh) * 2015-10-15 2020-10-23 南京中兴软件有限责任公司 数据库的操作方法及装置
CN106610876B (zh) * 2015-10-23 2020-11-03 中兴通讯股份有限公司 数据快照的恢复方法及装置
US20170139980A1 (en) * 2015-11-17 2017-05-18 Microsoft Technology Licensing, Llc Multi-version removal manager

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160234173A1 (en) 1999-07-16 2016-08-11 Intertrust Technologies Corporation Trusted storage systems and methods
US7653665B1 (en) 2004-09-13 2010-01-26 Microsoft Corporation Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation
US20130117307A1 (en) 2011-11-08 2013-05-09 Sybase, Inc. Snapshot isolation support for distributed query processing in a shared disk database cluster
US20130124475A1 (en) 2011-11-16 2013-05-16 Sap Ag System and Method of Performing Snapshot Isolation in Distributed Databases
CN103116596A (zh) * 2011-11-16 2013-05-22 Sap股份公司 在分布式数据库中执行快照隔离的系统和方法
US20140149353A1 (en) 2012-11-29 2014-05-29 Juchang Lee Version Garbage Collection Using Snapshot Lists
US20140351535A1 (en) * 2013-05-23 2014-11-27 Netapp, Inc. Snapshots and versioning of transactional storage class memory
US9632878B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup

Also Published As

Publication number Publication date
KR20200006098A (ko) 2020-01-17
CN110168514B (zh) 2022-06-10
EP3627359A4 (en) 2020-04-22
US20200110739A1 (en) 2020-04-09
WO2018223262A1 (zh) 2018-12-13
JP2020522830A (ja) 2020-07-30
CN110168514A (zh) 2019-08-23
JP6924898B2 (ja) 2021-08-25
EP3627359B1 (en) 2023-10-04
EP3627359A1 (en) 2020-03-25

Similar Documents

Publication Publication Date Title
CN106843749B (zh) 写入请求处理方法、装置及设备
JP5191062B2 (ja) ストレージ制御システム、ストレージ制御システムに関する操作方法、データ・キャリア及びコンピュータ・プログラム
US8812794B2 (en) Resolving messaging deadlock in a distributed shared memory
JP2019008791A (ja) スマートコントラクトライフサイクル管理
JP5952960B2 (ja) 計算機システム、計算機システム管理方法及びプログラム
US8868874B2 (en) Managing remote data replication
US9367261B2 (en) Computer system, data management method and data management program
CN107544999B (zh) 用于检索系统的同步装置及同步方法、检索系统及方法
US10048978B2 (en) Apparatus and method for identifying a virtual machine having changeable settings
CN103179053A (zh) 用于提供数据管理服务的系统和方法
US9514176B2 (en) Database update notification method
CN110520844A (zh) 云管理平台、虚拟机管理方法及其系统
US20140372396A1 (en) Database System Lock Operation Method and Device
JP2012234333A (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
CN113094430A (zh) 一种数据处理方法、装置、设备以及存储介质
WO2014142217A1 (ja) 情報処理システム、及びアプリケーションの移転方法
CN105373563B (zh) 数据库切换方法及装置
CN117321581A (zh) 用于加速sql查询的确定性分布式高速缓存的技术
US20130110782A1 (en) Oportunistic database duplex operations
KR102353141B1 (ko) 트랜잭션 처리 방법, 디바이스 및 장비
CN114356521A (zh) 任务调度方法、装置、电子设备及存储介质
US10127270B1 (en) Transaction processing using a key-value store
US20180267831A1 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
CN112988913B (zh) 一种数据处理方法和相关装置
US20170031809A1 (en) Non-transitory computer-readable storage medium, information controller, and information control method

Legal Events

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