KR101910759B1 - 트랜잭션 처리 방법, 장치 및 컴퓨터 시스템 - Google Patents

트랜잭션 처리 방법, 장치 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR101910759B1
KR101910759B1 KR1020177020304A KR20177020304A KR101910759B1 KR 101910759 B1 KR101910759 B1 KR 101910759B1 KR 1020177020304 A KR1020177020304 A KR 1020177020304A KR 20177020304 A KR20177020304 A KR 20177020304A KR 101910759 B1 KR101910759 B1 KR 101910759B1
Authority
KR
South Korea
Prior art keywords
transaction
state
volatile memory
data
computer system
Prior art date
Application number
KR1020177020304A
Other languages
English (en)
Other versions
KR20170098900A (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 KR20170098900A publication Critical patent/KR20170098900A/ko
Application granted granted Critical
Publication of KR101910759B1 publication Critical patent/KR101910759B1/ko

Links

Images

Classifications

    • 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/1474Saving, restoring, recovering or retrying in transactions
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • 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
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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

Abstract

트랜잭션 처리 방법, 장치 및 컴퓨터 시스템이 개시되고, 상기 방법은 트랜잭션의 트랜잭션 데이터를 갖고 있는 트랜잭션 처리 요구를 수신하는 단계; 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하는 단계 - 트랜잭션의 상태 정보는 트랜잭션 상태, 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 "아직 서브밋되지 않음"임 -; 어드레스에 따라, 트랜잭션 데이터를 비휘발성 메모리에 기입하는 단계; 트랜잭션 식별자에 따라, 트랜잭션의 트랜잭션 상태를 "서브밋됨"으로 수정하는 단계; 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 스토리지에 기입하는 단계; 및 트랜잭션 식별자에 따라, 트랜잭션의 트랜잭션 상태를 "백업"으로 수정하는 단계를 포함한다. 상기 방법은 트랜잭션 데이터의 처리 속도를 증가시킨다.

Description

트랜잭션 처리 방법, 장치 및 컴퓨터 시스템
본 명세서는 트랜잭션 처리 기술들에 관한 것으로, 특히, 트랜잭션 처리 방법, 장치 및 컴퓨터 시스템에 관한 것이다.
많은 대형 및 주요 애플리케이션 프로그램들에서, 컴퓨터는 초마다 대량의 작업을 수행한다. 다수의 작업이 서비스 요건을 완료하기 위해 함께 조합될 때, 서비스 요건을 트랜잭션이라고 한다. 트랜잭션은 원자성(atomicity) 및 일관성(consistency)을 갖는다.
트랜잭션의 원자성 및 일관성을 보장하기 위해, 미리-기입 로깅(영문: Write-Ahead Logging, 약어로 WAL) 방법이 일반적으로 기존의 트랜잭션 처리에서 사용된다. 구체적으로, 기존의 컴퓨터 시스템은 프로세서, 내부 메모리, 및 외부 메모리를 포함하고, 내부 메모리는 다이내믹 랜덤 액세스 메모리(영문: Dynamic Random Access Memory, 약어로 DRAM)이고, 로그 영역은 외부 메모리에 설정된다. 트랜잭션 처리 요구를 수신할 때, 프로세서는 먼저 트랜잭션의 트랜잭션 데이터를 컴퓨터 시스템의 캐시로부터 내부 메모리에 기입하고, 다음에 외부 메모리의 로그 영역에, 내부 메모리에 기입된 트랜잭션 데이터를 기입한다. 트랜잭션의 트랜잭션 데이터 모두가 로그 영역에 기입된 후에, 프로세서는 트랜잭션 데이터를 외부 메모리에 기입하여, 트랜잭션을 커밋(commit)한다.
그러나, 전술한 기존의 트랜잭션 처리 방법에서 모든 트랜잭션 데이터가 로그 영역에 기입되기 전에 내부 메모리에 기입될 필요가 있고, 트랜잭션은 트랜잭션 데이터 모두가 로그 영역에 기입된 후에만 커밋될 수 있다. 즉, 트랜잭션 데이터는 트랜잭션 처리 과정에서 2번 기입될 필요가 있어서, 트랜잭션 처리 속도를 낮추게 한다.
본원은 트랜잭션 데이터 처리 속도가 증가될 수 있도록, 트랜잭션 처리 방법, 장치 및 컴퓨터 시스템을 제공한다.
제1 양태에서, 본 발명의 실시예는 트랜잭션 처리 방법을 제공하고, 방법은 비휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 방법은 트랜잭션 처리 요구를 수신하는 단계 - 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음 -; 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하는 단계 - 트랜잭션의 상태 정보는 트랜잭션 상태, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이고, 커밋되지 않은 상태는 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지는 않은 것을 나타냄 -; 트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리에 기입하는 단계; 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하는 단계 - 커밋된 상태는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지만, 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타냄 -; 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하는 단계; 및 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정하는 단계 - 백업 상태는 트랜잭션의 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입된 것을 나타냄 - 를 포함한다.
제1 양태를 참조하여, 제1 양태의 제1 가능한 실시예에서, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하기 전에, 방법은 컴퓨터 시스템이 재시작하면, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하는 단계, 및 트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제하는 단계를 더 포함한다.
제1 양태 또는 제1 양태의 제1 가능한 실시예를 참조하여, 제1 양태의 제2 가능한 실시예에서, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정한 후에, 방법은 컴퓨터 시스템이 재시작하면, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하는 단계를 더 포함한다.
제1 양태 또는 제1 양태의 제1 또는 제2 가능한 실시예를 참조하여, 제1 양태의 제3 가능한 실시예에서, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정한 후에, 방법은 트랜잭션의 트랜잭션 데이터를 삭제하는 단계를 더 포함한다.
제2 양태에서, 본 발명의 실시예는 트랜잭션 처리 장치를 제공하고, 장치는 비휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 장치는 트랜잭션 처리 요구를 수신하도록 구성된 수신 모듈 - 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음 -; 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하도록 구성된 기록 모듈 - 트랜잭션의 상태 정보는 트랜잭션 식별자, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이고, 커밋되지 않은 상태는 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지는 않은 것을 나타냄 -; 트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리에 기입하도록 구성된 내부 메모리 기입 모듈 - 기록 모듈은 내부 메모리 기입 모듈이 트랜잭션 데이터를 비휘발성 메모리에 기입한 후에 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하도록 더 구성되고, 커밋된 상태는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지만, 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타냄 -; 및 기록 모듈이 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정한 후에 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하도록 구성된 외부 메모리 기입 모듈 - 기록 모듈은 외부 메모리 기입 모듈이 트랜잭션 데이터를 컴퓨터 시스템의 외부 메모리에 기입한 후에 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정하도록 더 구성되고, 백업 상태는 트랜잭션의 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입된 것을 나타냄 - 을 포함한다.
제2 양태를 참조하여, 제2 양태의 제1 가능한 실시예에서, 장치는: 기록 모듈이 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정하기 전에, 컴퓨터 시스템이 재시작하면, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하도록 구성된 상태 결정 모듈; 및 상태 결정 모듈이 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정할 때 트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제하도록 구성된 삭제 모듈을 더 포함한다.
제2 양태의 제1 가능한 실시예를 참조하여, 제2 양태의 제2 가능한 실시예에서, 상태 결정 모듈은 기록 모듈이 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정한 후에, 컴퓨터 시스템이 재시작하면, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 외부 메모리 기입 모듈을 트리거하여 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하도록 더 구성된다.
제2 양태의 제1 또는 제2 가능한 실시예를 참조하여, 제2 양태의 제3 가능한 실시예에서, 삭제 모듈은 기록 모듈이 트랜잭션의 트랜잭션 상태를 백업 상태로 수정한 후에 트랜잭션의 트랜잭션 데이터를 삭제하도록 더 구성된다.
제3 양태에서, 본 발명의 실시예는 컴퓨터 시스템을 제공하고, 컴퓨터 시스템은 프로세서 및 비휘발성 메모리를 포함하고, 비휘발성 메모리는 데이터를 저장하도록 구성되고, 프로세서는 트랜잭션 처리 요구를 수신하고 - 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음 -; 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하고 - 트랜잭션의 상태 정보는 트랜잭션 식별자, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이고, 커밋되지 않은 상태는 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지는 않은 것을 나타냄 -; 트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리에 기입하고; 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하고 - 커밋된 상태는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지만, 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타냄 -; 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하고; 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정하도록 - 백업 상태는 트랜잭션의 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입된 것을 나타냄 - 구성된다.
제3 양태를 참조하여, 제3 양태의 제1 가능한 실시예에서, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하기 전에, 프로세서는 컴퓨터 시스템이 재시작할 때, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하고, 트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제하도록 더 구성된다.
제3 양태 또는 제3 양태의 제1 가능한 실시예를 참조하여, 제3 양태의 제2 가능한 실시예에서, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정한 후에, 프로세서는 컴퓨터 시스템이 재시작할 때, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하도록 더 구성된다.
제3 양태 또는 제3 양태의 제2 또는 제3 가능한 실시예를 참조하여, 제3 양태의 제3 가능한 실시예에서, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정한 후에, 프로세서는 트랜잭션의 트랜잭션 데이터를 삭제하도록 더 구성된다.
본 발명의 실시예들에서 제공된 트랜잭션 처리 방법에서, 비휘발성 메모리가 전원 오프될 때 데이터가 손실되지 않는 특징이 사용되고, 트랜잭션의 트랜잭션 데이터는 비휘발성 메모리에 기입된 후에 외부 메모리에 직접 기입되고, 트랜잭션 데이터는 로그 영역에 기입될 필요가 없다. 그러므로, 트랜잭션 처리 과정이 간단해지고 트랜잭션 처리 속도가 증가된다. 또한, 본 발명의 실시예들에서, 상이한 트랜잭션 상태들이 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되는지 또는 트랜잭션 데이터 모두가 외부 메모리에 기입되는지를 식별하기 위해 비휘발성 메모리에 더 설정되고, 그에 따라서, 컴퓨터 시스템이 트랜잭션 상태에 따라 현재의 트랜잭션의 트랜잭션 데이터의 기입 상태를 결정할 수 있다. 그러므로, 트랜잭션의 원자성 및 일관성이 보장된다.
본 발명의 실시예들에서의 또는 종래 기술에서의 기술적 해결책들을 보다 분명히 설명하기 위해, 다음에 실시예들 또는 종래 기술을 설명하기 위해 요구되는 첨부 도면을 간단히 소개한다. 분명히, 다음의 설명에서의 첨부 도면은 단지 본 발명의 일부 실시예들의 첨부 도면이다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략 구조도.
도 2는 본 발명의 실시예에 따른 트랜잭션 처리 방법의 플로우차트.
도 3a 및 도 3b는 본 발명의 실시예에 따른 또 하나의 트랜잭션 처리 방법의 플로우차트.
도 4는 본 발명의 실시예에 따른 트랜잭션 처리 장치의 개략 구조도.
도 5는 본 발명의 실시예에 따른 또 하나의 트랜잭션 처리 장치의 개략 구조도.
다음의 설명에서, 제한하기보다는 예시하기 위해, 특정한 시스템 구조, 인터페이스, 및 기술과 같은 특정한 상세들이 본원의 철저한 이해를 위해 제공된다. 그러나, 본 기술 분야의 통상의 기술자는 본원이 이들 특정한 상세들 없이 다른 실시예들에서 실시될 수 있다는 것을 알아야 한다. 다른 경우들에서, 널리 공지된 장치들, 회로들, 및 방법들의 상세한 설명들은 생략되어, 본원이 불필요한 상세들에 의해 불명하게 되지 않게 설명된다.
본원의 트랜잭션 처리 방법의 이해를 용이하게 하기 위해, 이 방법을 사용하는 컴퓨터 시스템 및 트랜잭션이 먼저 설명된다. 도 1을 참조하면, 도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 개략 구조도이다. 도 1에 도시한 바와 같이, 컴퓨터 시스템(100)은 프로세서(110), 비휘발성 메모리(120), 및 외부 메모리(130)를 포함한다. 본 발명의 본 실시예에서, 트랜잭션은 비휘발성 메모리(120)를 사용하여 데이터를 외부 메모리(130)에 기입하기 위해 프로세서(110)에 의해 수행되는 동작들을 포함할 수 있고, 외부 메모리에 기입된 데이터는 트랜잭션의 트랜잭션 데이터이다.
비휘발성 메모리(Non-volatile Memory, NVM)(120)는 트랜잭션의 트랜잭션 데이터 및 상태 정보를 일시적으로 저장하도록 구성된다. 구체적으로, 데이터 영역(121) 및 데이터 상태 영역(122)은 비휘발성 메모리(120)에 설정될 수 있다. 데이터 영역(121)은 트랜잭션의 트랜잭션 데이터를 저장하기 위해 사용되고, 데이터 상태 영역(122)은 트랜잭션의 상태 정보를 저장하기 위해 사용된다.
본 발명의 본 실시예에서, 비휘발성 메모리는 내부 메모리가 비휘발성 메모리인 것을 의미한다. 구체적으로, 비휘발성 메모리(120)는 위상 변화 메모리(Phase Change Memory, PCM), 저항 랜덤 액세스 메모리(Resistive Random Access Memory, RRAM), 자기 랜덤 액세스 메모리(Magnetic Random Access Memory, MRAM), 강유전성 랜덤 액세스 메모리(Ferroelectric Random Access Memory, FRAM) 등으로 대표되는 차세대 비휘발성 메모리(Non-Volatile Memory, NVM)를 포함할 수 있다. 차세대 NVM은 높은 액세스 속도를 갖고, 바이트들(Byte)로 어드레스하고 데이터를 비트들(bit)의 단위들로 비휘발성 메모리에 기입할 수 있다. 그러므로, 차세대 비휘발성 메모리는 메모리 버스에 접속되어 CPU에 의해 직접 액세스될 내부 메모리로서 사용될 수 있다. 컴퓨터 시스템(100)이 전원 오프될 때, 비휘발성 메모리(120) 내의 정보는 여전히 존재한다.
외부 메모리(130)는 트랜잭션의 트랜잭션 데이터를 영구적으로 저장하도록 구성된다. 외부 메모리(130)는 하드 디스크 드라이브(영문: Hard Disk Drive, 약어로 HDD)일 수 있고, 고상 드라이브(영문: Solid State Drive, 약어로 SDD), 또는 또 다른 메모리일 수 있다.
프로세서(110)는 비휘발성 메모리(120)를 사용하여 트랜잭션 데이터를 외부 메모리(130)에 기입하기 위해, 본원의 트랜잭션 처리 방법을 수행하도록 구성된다. 프로세서는 CPU를 포함할 수 있거나, 본 발명의 본 실시예를 구현하도록 구성된 또 다른 주문형 집적 회로(Application Specific Integrated Circuit, ASIC) 또는 하나 이상의 집적 회로를 포함할 수 있다.
도 2를 참조하면, 도 2는 본 발명의 실시예에 따른 트랜잭션 처리 방법의 플로우차트이다. 트랜잭션 처리 방법은 도 1에 도시한 컴퓨터 시스템(100)에 적용되고, 컴퓨터 시스템(100) 내의 프로세서(110)에 의해 수행된 트랜잭션 처리 방법은 다음의 단계들을 포함할 수 있다.
201. 프로세서는 트랜잭션 처리 요구를 수신하고, 여기서 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있다.
트랜잭션 처리 요구는 사용자에 의해 입력될 수 있거나 프로세서에 의해 실행된 또 하나의 프로그램, 예를 들어, 사용자에 의해 입력된 기입 명령에 의해 트리거될 수 있다.
트랜잭션 처리 요구를 수신한 후에, 프로세서는 트랜잭션 식별자 및 어드레스를 트랜잭션 처리 요구에 따라 트랜잭션에 할당한다. 트랜잭션 식별자는 상이한 트랜잭션들을 구별하기 위해 사용된다. 어드레스는 트랜잭션의 트랜잭션 데이터가 비휘발성 메모리에 기입될 어드레스이다.
202. 프로세서는 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하고, 여기서 트랜잭션의 상태 정보는 트랜잭션 상태, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이다.
트랜잭션 식별자 및 어드레스를 트랜잭션에 할당한 후에, 프로세서는 트랜잭션에 대한 상태 정보를 생성한다. 트랜잭션의 상태 정보는 트랜잭션 식별자, 트랜잭션 상태, 및 어드레스를 포함할 수 있다. 트랜잭션 상태는 트랜잭션 데이터의 기입 상태를 표시하기 위해 사용되고, 커밋되지 않은 상태, 커밋된 상태, 및 백업 상태로 주로 분류된다. 커밋되지 않은 상태는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지는 않은 것을 나타낸다. 커밋되지 않은 상태는 트랜잭션의 트랜잭션 데이터가 프로세서가 또 하나의 프로그램을 실행하거나 컴퓨터 시스템이 재시작할 때 사용될 수 없다는 것을 나타낸다. 커밋된 상태는, 트랜잭션의 모든 트랜잭션 데이터가 비휘발성 메모리에 기입되지만 트랜잭션 데이터 모두가 외부 메모리에 기입되지는 않은 것을 나타낸다. 커밋된 상태는 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 데이터가 프로세서가 또 하나의 프로그램을 실행하거나 컴퓨터 시스템이 재시작할 때 사용될 수 있다는 것을 나타내기 위해 사용될 수 있다. 백업 상태는 트랜잭션의 모든 트랜잭션 데이터가 외부 메모리에 기입된 것을 나타낸다. 백업 상태는 외부 메모리 내의 트랜잭션의 트랜잭션 데이터가 프로세서가 또 하나의 프로그램을 실행하거나 컴퓨터 시스템이 재시작할 때 사용될 수 있다는 것을 나타내기 위해 사용될 수 있다. 또 하나의 표현 방식으로, 트랜잭션의 트랜잭션 상태가 백업 상태일 때, 그것은 트랜잭션의 처리가 완료한 것을 나타낸다.
예를 들어, 프로세서(110)는 트랜잭션의 상태 정보로서 트랜잭션 데이터, 트랜잭션 식별자, 및 어드레스를 사용하도록, 듀얼 인라인 메모리 모듈(영문: Dual In-line Memory Modules, 약어로 DIMM) 인터페이스 또는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express, 약어로 PCIe)와 같은 인터페이스를 사용하여 비휘발성 메모리의 데이터 상태 영역에 트랜잭션의 트랜잭션 데이터, 트랜잭션 식별자, 및 어드레스를 기입한다. 트랜잭션의 트랜잭션 식별자가 제1 트랜잭션이고, 제1 트랜잭션이 4개의 트랜잭션 데이터를 포함하면, 다음의 표 1이 제1 트랜잭션의 상태 정보를 기록하기 위해 데이터 상태 영역에 생성된다.
Figure 112017069540589-pct00001
물론, 또 하나의 실시예에서, 단지 하나의 상태 정보가 동일한 트랜잭션의 모든 트랜잭션 데이터에 대해 생성될 수 있고, 상태 정보에서의 어드레스는 비휘발성 메모리 내의 트랜잭션의 모든 트랜잭션 데이터의 각각의 어드레스들이다. 그러므로, 트랜잭션의 상태 정보를 기록하는 방식은 본원에서 특정하게 제한되지 않는다. 실제 응용에서, 컴퓨터 시스템은 처리되고 있는 다수의 트랜잭션의 상태 정보를 기록할 수 있다는 점에 주목하여야 한다.
203. 프로세서는 트랜잭션의 트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리에 기입한다.
예를 들어, 트랜잭션의 상태 정보가 제1 트랜잭션의 상태 정보에서의 어드레스에 따라, 데이터 상태 영역 내에 기록된 후에, 프로세서는 DIMM 인터페이스 또는 PCIe 인터페이스와 같은 인터페이스를 사용하여 비휘발성 메모리의 데이터 영역에 트랜잭션 처리 요구에 포함된 제1 트랜잭션의 트랜잭션 데이터를 기입한다.
204. 프로세서는 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정한다.
예를 들어, 제1 트랜잭션의 모든 트랜잭션 데이터를 비휘발성 메모리의 데이터 영역에 기입한 후에, 프로세서는 트랜잭션 식별자가 제1 트랜잭션인 상태 정보에 대한 비휘발성 메모리의 데이터 상태 영역을 찾고, 다음의 표 2에 나타낸 바와 같이, 제1 트랜잭션의 상태 정보의 트랜잭션 상태를 커밋된 상태로 수정한다. 이 경우에, 제1 트랜잭션이 커밋된다.
Figure 112017069540589-pct00002
205. 프로세서는 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입한다.
예를 들어, 제1 트랜잭션이 커밋된 후에, 프로세서는 시리얼 어드밴스트 테크놀로지 어태치먼트(영문: Serial Advanced Technology Attachment, 약어로 SATA) 인터페이스 또는 네트워크 드라이버(영문: Network Driver)와 같은 인터페이스를 사용하여 제1 트랜잭션의 트랜잭션 데이터를 비휘발성 메모리의 데이터 영역으로부터 외부 메모리에 기입한다.
206. 프로세서는 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정한다.
예를 들어, 제1 트랜잭션의 모든 트랜잭션 데이터를 외부 메모리에 기입한 후에, 프로세서는 트랜잭션 식별자가 제1 트랜잭션인 상태 정보에 대한 비휘발성 메모리의 데이터 상태 영역을 찾고, 다음의 표 3에 나타낸 바와 같이, 제1 트랜잭션의 상태 정보의 트랜잭션 상태를 백업 상태로 수정한다. 이 경우에, 제1 트랜잭션의 트랜잭션 데이터가 외부 메모리에 성공적으로 기입되고, 제1 트랜잭션이 종료한다.
Figure 112017069540589-pct00003
실제 응용을 참조하는 설명들은 다음과 같다: 사용자는 컴퓨터 시스템 내에 새로운 파일 A를 생성하고 파일 A 상의 기입 동작을 수행한다. 이 경우에, 프로세서는 사용자의 기입 동작 명령을 수신하고, 파일 A의 외부 메모리의 파일 시스템으로의 기입의 트랜잭션을 처리할 필요가 있다. 구체적으로, 사용자의 기입 명령을 수신할 때, 프로세서는 트랜잭션 식별자 및 어드레스를 트랜잭션에 할당하고, 비휘발성 메모리의 데이터 상태 영역 내에 트랜잭션의 상태 정보를 기록하고, 여기서 상태 정보의 트랜잭션 상태는 커밋되지 않은 상태이다. 트랜잭션의 상태 정보를 생성한 후에, 프로세서는 파일 A를 비휘발성 메모리의 데이터 영역에 기입한다. 파일 A를 기입한 후에, 프로세서는 트랜잭션의 상태 정보의 트랜잭션 상태를 커밋된 상태로 수정한다. 이 경우에, 트랜잭션이 커밋되고, 즉, 사용자의 기입 동작이 구현된다. 이 경우에, 프로세서가 파일 A를 판독하는 명령을 수신하면, 프로세서는 비휘발성 메모리로부터 파일 A를 판독할 수 있지만, 실제로 파일 A는 외부 메모리의 파일 시스템에 기입되지 않고, 즉, 파일 A는 컴퓨터 시스템 내에 영구적으로 저장될 수 없다. 그러므로, 트랜잭션이 커밋된 후에, 데이터 영역 내의 파일 A는 외부 메모리의 파일 시스템에 기입된다. 이 경우에, 트랜잭션이 종료한다.
선택적으로, 비휘발성 메모리의 저장 공간을 절약하기 위해, 트랜잭션의 트랜잭션 상태를 백업 상태로 수정한 후에, 프로세서는 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 데이터를 삭제할 수 있고, 비휘발성 메모리 내에 있는 트랜잭션의 상태 정보를 더 삭제할 수 있다. 트랜잭션의 트랜잭션 데이터와 상태 정보 둘 다가 삭제될 때, 프로세서에 의해 트랜잭션의 트랜잭션 데이터를 삭제하고 트랜잭션의 상태 정보를 삭제하는 순차는 제한되지 않는다.
대안적으로, 비휘발성 메모리가 비교적 충분한 저장 공간을 갖는다면, 트랜잭션의 트랜잭션 상태를 백업 상태로 수정한 후에, 프로세서는 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 데이터를 삭제하지 않을 수 있으므로, 트랜잭션의 트랜잭션 데이터가 후속하여 사용될 필요가 있을 때, 트랜잭션의 트랜잭션 데이터는 외부 메모리로부터 판독될 필요가 없고, 내부 메모리로부터 직접 판독될 수 있어서, 판독 속도를 가속시킨다.
본 발명의 본 실시예에서, 비휘발성 메모리가 전원 오프될 때 데이터가 손실되지 않는 특징이 사용되고, 트랜잭션의 트랜잭션 데이터는 비휘발성 메모리에 기입된 후에 외부 메모리에 직접 기입되고, 트랜잭션 데이터는 로그 영역에 기입될 필요가 없다. 그러므로, 트랜잭션 처리 과정이 간단해지고 트랜잭션 처리 속도가 증가된다. 또한, 본 발명의 본 실시예에서, 상이한 트랜잭션 상태들이 트랜잭션의 모든 트랜잭션 데이터가 비휘발성 메모리에 기입되는지 또는 모든 트랜잭션 데이터가 외부 메모리에 기입되는지를 식별하기 위해 비휘발성 메모리에 더 설정되어, 컴퓨터 시스템은 트랜잭션 상태에 따라 현재의 트랜잭션의 트랜잭션 데이터의 기입 상태를 결정할 수 있다. 그러므로, 트랜잭션의 원자성 및 일관성이 보장된다.
또한, 이전에 저장된 데이터는 데이터가 비휘발성 메모리에 기입될 때 소거될 필요가 없고, 비휘발성 메모리의 데이터 기입/판독 속도는 통상적인 DRAM의 것보다 높다. 그러므로, 비휘발성 메모리가 트랜잭션 데이터가 기입되는 내부 메모리로서 사용될 때, 트랜잭션 데이터를 판독 또는 기입하는 속도는 크게 증가되고, 즉, 트랜잭션 처리 속도는 더욱 증가된다.
최적으로, 본원의 트랜잭션 처리 방법으로, 트랜잭션 회복이 더 구현될 수 있고, 즉, 전술한 트랜잭션 처리 방법을 수행하는 과정에서, 컴퓨터 시스템이 재시작하면, 프로세서는 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 상태에 따라 트랜잭션을 회복할 수 있다.
구체적으로, 도 3a 및 도 3b를 참조하면, 도 3a 및 도 3b는 본 발명의 실시예에 따른 또 하나의 트랜잭션 처리 방법의 플로우차트이다. 본 실시예에서, 방법은 비휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 방법은 컴퓨터 시스템 내의 프로세서에 의해 수행된다. 방법은 다음의 단계들을 포함한다.
301. 프로세서는 트랜잭션 처리 요구를 수신하고, 여기서 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있다.
302. 프로세서는 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하고, 여기서 트랜잭션의 상태 정보는 트랜잭션 상태, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이다.
303. 프로세서는 트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리에 기입한다.
304. 프로세서는 컴퓨터 시스템이 재시작하는지를 결정하고, 컴퓨터 시스템이 재시작하면, 단계 305를 수행하고, 또는 컴퓨터 시스템이 재시작하지 않으면, 단계 307을 수행한다.
305. 프로세서는 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정한다.
예를 들어, 프로세서가 제1 트랜잭션의 트랜잭션 데이터를 비휘발성 메모리에 기입할 때, 컴퓨터 시스템이 전력 장애 또는 사고 후에 재시작하면, 프로세서는 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보에 따라, 제1 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정한다. 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보는 전술한 표 1에 나타내진다.
306. 프로세서는 트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제한다.
예를 들어, 프로세서는 제1 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하여, 컴퓨터 시스템이 재시작하기 전에, 제1 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리의 데이터 영역에 업데이트되지 않는 것을 나타낸다. 그러므로, 비휘발성 메모리 내에 있는 제1 트랜잭션의 트랜잭션 데이터는 트랜잭션의 원자성에 따라 외부 메모리에 업데이트될 수 없다. 그러므로, 프로세서는 비휘발성 메모리의 데이터 영역 내에 있는 제1 트랜잭션의 모든 트랜잭션 데이터를 삭제하고, 데이터 상태 영역 내에 있는 제1 트랜잭션의 상태 정보를 삭제하고, 즉, 전술한 표 1이 삭제되어, 트랜잭션 롤백(rollback)을 구현한다.
307. 프로세서는 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정한다.
308. 프로세서는 컴퓨터 시스템이 재시작하는지를 결정하고, 컴퓨터 시스템이 재시작하면, 단계 309를 수행하고, 또는 컴퓨터 시스템이 재시작하지 않으면, 단계 310을 수행한다.
309. 프로세서는 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 단계 310을 수행한다.
예를 들어, 프로세서가 제1 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정한 후에, 컴퓨터 시스템이 전력 장애 또는 사고 후에 재시작하면, 프로세서는 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보에 따라, 제1 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 또한 컴퓨터 시스템이 재시작하기 전에, 제1 트랜잭션의 모든 트랜잭션 데이터가 비휘발성 메모리의 데이터 영역에 업데이트되는 것을 나타낸다. 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보는 전술한 표 2에 나타내진다. 그러므로, 프로세서는 데이터 영역 내에 있는 제1 트랜잭션의 트랜잭션 데이터를 외부 메모리에 기입하도록, 트랜잭션의 일관성에 따라 단계 310을 수행한다.
310. 프로세서는 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입한다.
311. 프로세서는 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정한다.
312. 프로세서는 트랜잭션의 트랜잭션 데이터를 삭제한다.
프로세서가 트랜잭션의 트랜잭션 상태를 백업 상태로 수정한 후에, 컴퓨터 시스템이 재시작하면, 프로세서는 비휘발성 메모리 내에 있는 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 백업 상태라고 결정하고, 또한 컴퓨터 시스템이 재시작하기 전에, 트랜잭션의 모든 트랜잭션 데이터가 외부 메모리에 업데이트되는 것을 나타낸다. 비휘발성 메모리 내에 있는 트랜잭션의 상태 정보는 전술한 표 3에 나타내진다. 그러므로, 프로세서는 트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제하여, 비휘발성 메모리의 저장 공간을 복구할 수 있다.
도 3a 및 도 3b에 도시한 플로우차트가 단지 본원에서 트랜잭션 회복 과정을 단지 설명하기 위해 사용되었지만, 본원의 방법의 단계들을 제한하는 것으로 이해되어서는 안 된다는 점에 주목하여야 한다. 본질적으로, 프로세서는 컴퓨터 시스템이 재시작하는지를 결정하지 않을 수 있다. 컴퓨터 시스템이 도 3a 및 도 3b에서 재시작하는지를 결정하는, 프로세서에 의해 수행되는 단계는 단지 컴퓨터 시스템의 상태의 설명을 나타내고, 즉, 컴퓨터 시스템이 이 경우에 재시작하면, 프로세서는 도 3a 및 도 3b의 "예"에 대응하는 단계를 수행하고, 컴퓨터 시스템이 이 경우에 재시작하지 않으면, 프로세서는 도 3a 및 도 3b의 "아니오"에 대응하는 단계를 수행하는 것을 나타낸다. 또한, 컴퓨터 시스템이 재시작하는지의 상태는 단계 303 또는 단계 307 이후에 있는 것으로 제한되지 않을 수 있지만, 프로세서가 도 1에 도시한 어느 단계를 수행하기 전 또는 후에, 또는 도 1에 도시한 어느 단계를 수행하는 도중에 나타날 수 있다. 그러나, 컴퓨터 시스템이 재시작하는 단계와 관계없이, 본원의 프로세서는 다음의 원리들에 따라 대응하는 트랜잭션 회복 단계들을 수행한다: 트랜잭션의 트랜잭션 상태가 트랜잭션 식별자에 따라 커밋된 상태로 수정되기 전에, 컴퓨터 시스템이 재시작하면, 프로세서는 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하고, 트랜잭션 회복 단계들 305 및 306을 수행하고; 트랜잭션의 트랜잭션 상태가 트랜잭션 식별자에 따라 커밋된 상태로 수정된 후에, 컴퓨터 시스템이 재시작하면, 프로세서는 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 트랜잭션 회복 단계들 310 및 311을 수행한다.
본 실시예에서, 비휘발성 메모리가 전원 오프될 때 데이터가 손실되지 않는 특징이 사용되고, 트랜잭션 데이터가 비휘발성 메모리 내에 저장되고, 그에 따라서, 컴퓨터 시스템이 트랜잭션 처리 과정에서 재시작할 때, 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 데이터는 손실되지 않고, 트랜잭션의 트랜잭션 데이터는 비휘발성 메모리로부터 직접 회복될 수 있다. 그러므로, 트랜잭션 회복 속도가 증가된다. 또한, 트랜잭션 상태는 트랜잭션의 모든 트랜잭션 데이터가 비휘발성 메모리에 기입되는지 및 모든 트랜잭션 데이터가 외부 메모리에 기입되는지를 식별하기 위해 비휘발성 메모리에 설정된다. 컴퓨터 시스템이 트랜잭션 처리 과정에서 재시작할 때, 트랜잭션의 트랜잭션 데이터의 기입 상태는 트랜잭션 상태에 따라 결정될 수 있다. 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지는 않을 때, 트랜잭션의 트랜잭션 데이터는 외부 메모리에 기입되지 않고, 트랜잭션의 트랜잭션 데이터는 직접 삭제된다. 트랜잭션 데이터는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지만 외부 메모리에 기입되지 않을 때만 외부 메모리에 기입된다. 그러므로, 트랜잭션의 원자성 및 일관성이 보장된다.
도 4를 참조하면, 도 4는 본 발명의 실시예에 따른 트랜잭션 처리 장치의 개략 구조도이다. 본 실시예에서, 장치는 비휘발성 메모리 및 외부 메모리를 포함하는 컴퓨터 시스템에 적용된다. 데이터 영역 및 데이터 상태 영역은 비휘발성 메모리에 설정될 수 있다. 데이터 영역은 트랜잭션의 트랜잭션 데이터를 저장하기 위해 사용되고, 데이터 상태 영역은 트랜잭션의 상태 정보를 저장하기 위해 사용된다. 본원에서, 비휘발성 메모리가 전원 오프될 때 데이터가 손실되지 않는 특징이 사용되어, 트랜잭션 데이터 및 상태 정보의 신뢰성이 보장된다. 트랜잭션 처리 장치(420)는 수신 모듈(423), 기록 모듈(421), 내부 메모리 기입 모듈(422), 및 외부 메모리 기입 모듈(424)을 포함한다.
수신 모듈(423)은 트랜잭션 처리 요구를 수신하도록 구성되고, 여기서 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있다.
트랜잭션 처리 요구는 사용자에 의해 입력될 수 있거나 프로세서에 의해 실행된 또 하나의 프로그램, 예를 들어, 사용자에 의해 입력된 기입 명령에 의해 트리거될 수 있다.
트랜잭션 처리 요구를 수신한 후에, 수신 모듈(423)은 트랜잭션 식별자 및 어드레스를 트랜잭션 처리 요구에 따라 트랜잭션에 더 할당할 수 있다. 트랜잭션 식별자는 상이한 트랜잭션들을 구별하기 위해 사용된다. 어드레스는 트랜잭션의 트랜잭션 데이터가 비휘발성 메모리에 기입될 어드레스이다.
기록 모듈(421)은 트랜잭션의 상태 정보를 비휘발성 메모리 내에 기록하도록 구성되고, 여기서 트랜잭션의 상태 정보는 트랜잭션 식별자, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이다.
수신 모듈(423)이 식별자 및 어드레스를 트랜잭션에 할당할 때, 기록 모듈(421)은 트랜잭션에 대한 상태 정보를 생성한다. 트랜잭션의 상태 정보는 트랜잭션 식별자, 트랜잭션 상태, 및 어드레스를 포함할 수 있다. 트랜잭션 상태는 트랜잭션의 트랜잭션 데이터를 나타내기 위해 사용되고, 커밋되지 않은 상태, 커밋된 상태, 및 백업 상태로 주로 분류된다. 커밋되지 않은 상태는 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지는 않은 것을 나타내고, 즉, 커밋되지 않은 상태는 트랜잭션의 트랜잭션 데이터가 컴퓨터 시스템이 또 하나의 프로그램을 실행하거나 컴퓨터 시스템이 재시작할 때 사용될 수 없다는 것을 나타내기 위해 사용된다. 커밋된 상태는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지만, 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타내고, 즉, 커밋된 상태는 트랜잭션의 트랜잭션 데이터가 컴퓨터 시스템이 또 하나의 프로그램을 실행하거나 컴퓨터 시스템이 재시작할 때 사용될 수 있다는 것을 나타내기 위해 사용된다. 백업 상태는 트랜잭션의 모든 트랜잭션 데이터가 외부 메모리에 기입된 것을 나타내고, 즉, 백업 상태는 외부 메모리 내의 트랜잭션의 트랜잭션 데이터가 컴퓨터 시스템이 또 하나의 프로그램을 실행하거나 컴퓨터 시스템이 재시작할 때 사용될 수 있다는 것을 나타내기 위해 사용되고, 즉, 트랜잭션이 종료한다.
예를 들어, 트랜잭션의 트랜잭션 식별자가 제1 트랜잭션이고, 제1 트랜잭션이 4개의 트랜잭션 데이터를 포함하면, 전술한 표 1이 제1 트랜잭션의 상태 정보를 기록하기 위해 데이터 상태 영역에 생성된다.
물론, 또 하나의 실시예에서, 단지 하나의 상태 정보가 동일한 트랜잭션의 모든 트랜잭션 데이터에 대해 생성될 수 있고, 상태 정보에서의 어드레스는 비휘발성 메모리 내의 트랜잭션의 모든 트랜잭션 데이터의 각각의 어드레스들이다. 그러므로, 트랜잭션의 상태 정보를 기록하는 방식은 본원에서 특정하게 제한되지 않는다.
내부 메모리 기입 모듈(422)은 트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리에 기입하도록 구성된다.
예를 들어, 기록 모듈(421)이 트랜잭션의 상태 정보를 기록한 후에, 내부 메모리 기입 모듈(422)은 트랜잭션 처리 요구 내에 포함된 제1 트랜잭션의 트랜잭션 데이터를 제1 트랜잭션의 상태 정보에서의 어드레스에 따라 비휘발성 메모리의 데이터 영역에 기입한다.
기록 모듈(421)은 내부 메모리 기입 모듈(422)이 트랜잭션 데이터를 비휘발성 메모리에 기입한 후에 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하도록 더 구성된다.
예를 들어, 내부 메모리 기입 모듈(422)이 제1 트랜잭션의 모든 트랜잭션 데이터를 비휘발성 메모리의 데이터 영역에 기입한 후에, 기록 모듈(421)은 트랜잭션 식별자가 제1 트랜잭션인 상태 정보에 대한 비휘발성 메모리의 데이터 상태 영역을 찾고, 전술한 표 2에 나타낸 바와 같이, 제1 트랜잭션의 상태 정보의 트랜잭션 상태를 커밋된 상태로 수정한다. 이 경우에, 제1 트랜잭션이 커밋된다.
외부 메모리 기입 모듈(424)은 기록 모듈(421)이 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정한 후에 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하도록 구성된다.
예를 들어, 제1 트랜잭션이 커밋된 후에, 외부 메모리 기입 모듈(424)은 제1 트랜잭션의 트랜잭션 데이터를 비휘발성 메모리의 데이터 영역으로부터 외부 메모리에 기입한다.
기록 모듈(421)은 외부 메모리 기입 모듈(424)이 트랜잭션 데이터를 컴퓨터 시스템의 외부 메모리에 기입한 후에 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정하도록 더 구성된다.
예를 들어, 외부 메모리 기입 모듈(424)이 제1 트랜잭션의 모든 트랜잭션 데이터를 외부 메모리에 기입한 후에, 기록 모듈(421)은 트랜잭션 식별자가 제1 트랜잭션인 상태 정보에 대한 비휘발성 메모리의 데이터 상태 영역을 찾고, 전술한 표 3에 나타낸 바와 같이, 제1 트랜잭션의 상태 정보의 트랜잭션 상태를 백업 상태로 수정한다. 이 경우에, 제1 트랜잭션의 트랜잭션 데이터는 외부 메모리에 성공적으로 기입되고, 제1 트랜잭션의 처리가 종료된다.
선택적으로, 비휘발성 메모리의 저장 공간을 절약하기 위해, 트랜잭션의 트랜잭션 상태가 백업 상태로 수정된 후에, 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 데이터 및 상태 정보가 삭제될 수 있다. 트랜잭션의 트랜잭션 데이터를 삭제하고 트랜잭션의 상태 정보를 삭제하는 순차는 제한되지 않는다. 대안적으로, 비휘발성 메모리가 비교적 충분한 저장 공간을 갖는다면, 트랜잭션의 트랜잭션 상태가 백업 상태로 수정된 후에, 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 데이터가 삭제되지 않을 수 있으므로, 트랜잭션의 트랜잭션 데이터가 후속하여 사용될 필요가 있을 때, 트랜잭션의 트랜잭션 데이터는 외부 메모리로부터 판독될 필요가 없고, 내부 메모리로부터 직접 판독될 수 있어서, 판독 속도를 가속시킨다.
최적으로, 본원의 트랜잭션 처리 장치는 트랜잭션 회복을 더 구현할 수 있고, 즉, 전술한 트랜잭션 처리 방법을 수행하는 과정에서, 컴퓨터 시스템이 재시작하면, 트랜잭션 처리 장치는 비휘발성 메모리 내에 있는 트랜잭션의 트랜잭션 상태에 따라 트랜잭션을 회복할 수 있다.
구체적으로, 도 5를 참조하면, 도 5는 본 발명의 실시예에 따른 또 하나의 트랜잭션 처리 장치의 개략 구조도이다. 본 실시예에서, 전술한 실시예의 트랜잭션 처리 장치(420)의 처리보다 최적하게, 트랜잭션 처리 장치(520)는 상태 결정 모듈(525) 및 삭제 모듈(526)을 더 포함한다.
상태 결정 모듈(525)은 기록 모듈(421)이 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정하기 전에, 컴퓨터 시스템이 재시작하면, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하도록 구성된다.
예를 들어, 내부 메모리 기입 모듈(422)이 제1 트랜잭션의 트랜잭션 데이터를 비휘발성 메모리에 기입할 때, 컴퓨터 시스템이 전력 장애 또는 사고 후에 재시작하면, 상태 결정 모듈(525)은 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보에 따라, 제1 트랜잭션의 트랜잭션 상태가 커밋되지 않는 상태라고 결정한다. 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보가 전술한 표 1에 나타내진다.
삭제 모듈(526)은 상태 결정 모듈(525)이 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정할 때 트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제하도록 구성된다.
예를 들어, 삭제 모듈(526)은 비휘발성 메모리의 데이터 영역 내에 있는 제1 트랜잭션의 모든 트랜잭션 데이터를 삭제하고, 비휘발성 메모리의 데이터 상태 영역 내에 있는 제1 트랜잭션의 상태 정보를 삭제하고, 즉, 전술한 표 1이 삭제되어, 트랜잭션 롤백을 구현한다.
선택적으로, 상태 결정 모듈(525)은 기록 모듈(421)이 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정한 후에, 컴퓨터 시스템이 재시작한 후에, 비휘발성 메모리 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 외부 메모리 기입 모듈(424)을 트리거하여 트랜잭션 데이터를 비휘발성 메모리로부터 컴퓨터 시스템의 외부 메모리에 기입하도록 더 구성된다.
예를 들어, 기록 모듈(421)이 제1 트랜잭션의 트랜잭션 상태를 커밋된 상태로 수정한 후에, 컴퓨터 시스템이 전력 장애 또는 사고 후에 재시작하면, 상태 결정 모듈(525)은 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보에 따라, 제1 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 비휘발성 메모리 내에 있는 제1 트랜잭션의 트랜잭션 데이터를 외부 메모리에 기입한다. 비휘발성 메모리 내에 있는 제1 트랜잭션의 상태 정보는 전술한 표 2에 나타내진다.
선택적으로, 비휘발성 메모리의 저장 공간을 절약하기 위해, 삭제 모듈(526)은 기록 모듈(421)이 트랜잭션의 트랜잭션 상태를 백업 상태로 수정한 후에 트랜잭션의 트랜잭션 데이터를 삭제하여, 비휘발성 메모리의 저장 공간을 복구하도록 더 구성된다.
또 하나의 실시예에서, 비휘발성 메모리가 비교적 충분한 저장 공간을 갖는다면, 트랜잭션 처리 장치(520)는 트랜잭션의 트랜잭션 상태가 백업 상태로 수정된 후에 동작을 수행하지 않는다는 것을 이해할 수 있다.
본원은 컴퓨터 시스템을 더 제공한다. 도 1을 참조하면, 도 1은 본원의 컴퓨터 시스템의 실시예의 개략 구조도이다. 본 실시예에서, 컴퓨터 시스템(100)은 프로세서(110), 비휘발성 메모리(120), 및 외부 메모리(130)를 포함한다. 프로세서(110)는 DIMM 인터페이스 또는 PCIe 인터페이스와 같은 인터페이스를 사용하여 비휘발성 메모리(120)에 접속될 수 있고, 비휘발성 메모리(120)는 SATA 인터페이스 또는 네트워크 드라이브와 같은 인터페이스를 사용하여 외부 메모리(130)에 접속될 수 있다.
비휘발성 메모리(120)와 외부 메모리(130) 둘 다는 데이터를 저장하도록 구성된다. 구체적으로, 비휘발성 메모리(120)는 프로세서(110)에 의해 처리된 트랜잭션의 트랜잭션 데이터 및 상태 정보와 같은, 프로세서(110)의 처리 데이터를 일시적으로 저장하도록 구성된다. 외부 메모리(130)는 프로세서(110)에 의해 처리된 트랜잭션 데이터와 같은, 컴퓨터 시스템의 데이터를 영구적으로 저장하도록 구성된다.
프로세서(110)는 또한 중앙 처리 장치(Central Processing Unit, CPU)라고도 하고,
트랜잭션 처리 요구를 수신하고 - 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음 -;
트랜잭션의 상태 정보를 비휘발성 메모리(120) 내에 기록하고 - 트랜잭션의 상태 정보는 트랜잭션 식별자, 및 트랜잭션 처리 요구에 따라 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 트랜잭션 상태는 커밋되지 않은 상태이고, 커밋되지 않은 상태는 트랜잭션 데이터 모두가 비휘발성 메모리(120)에 기입되지는 않은 것을 나타냄 -;
트랜잭션 데이터를 어드레스에 따라 비휘발성 메모리(120)에 기입하고;
트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하고 - 커밋된 상태는 트랜잭션의 트랜잭션 데이터 모두가 비휘발성 메모리에 기입되지만, 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리(130)에 기입되지는 않은 것을 나타냄 -;
트랜잭션 데이터를 비휘발성 메모리(120)로부터 컴퓨터 시스템의 외부 메모리(130)에 기입하고;
트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정하도록 - 백업 상태는 트랜잭션의 트랜잭션 데이터 모두가 컴퓨터 시스템의 외부 메모리(130)에 기입된 것을 나타냄 - 구성된다.
선택적으로, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정하기 전에, 프로세서(110)는
컴퓨터 시스템이 재시작할 때, 비휘발성 메모리(120) 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋되지 않은 상태라고 결정하고;
트랜잭션의 트랜잭션 데이터 및 상태 정보를 삭제하도록 구성된다.
선택적으로, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 커밋된 상태로 수정한 후에, 프로세서(110)는
컴퓨터 시스템이 재시작할 때, 비휘발성 메모리(120) 내에 기록된 트랜잭션의 상태 정보에 따라, 트랜잭션의 트랜잭션 상태가 커밋된 상태라고 결정하고, 트랜잭션 데이터를 비휘발성 메모리(120)로부터 컴퓨터 시스템의 외부 메모리(130)에 기입하도록 더 구성된다.
선택적으로, 트랜잭션의 트랜잭션 상태를 트랜잭션 식별자에 따라 백업 상태로 수정한 후에, 프로세서(110)는 트랜잭션의 트랜잭션 데이터를 삭제하도록 더 구성된다.
선택적으로, 비휘발성 메모리(120)는 데이터 영역(121) 및 데이터 상태 영역(122)을 포함할 수 있다. 데이터 영역은 트랜잭션의 트랜잭션 데이터를 저장하기 위해 사용되고, 데이터 상태 영역은 트랜잭션의 상태 정보를 저장하기 위해 사용된다.
본 발명의 본 실시예에서, 프로세서(110)는 집적 회로 칩일 수 있고 단일의 처리 능력을 갖는다. 구현 과정에서, 전술한 방법들의 단계들은 프로세서(110) 내의 하드웨어의 집적된 논리 회로 또는 소프트웨어의 형태의 명령어에 의해 완료될 수 있다. 전술한 프로세서(110)는 일반 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 집적 회로(application-specific integrated circuit, ASIC), 필드 프로그램가능한 게이트 어레이(field programmable gate array, FPGA) 또는 또 하나의 프로그램가능한 논리 소자, 분리 게이트 또는 트랜지스터 논리 소자, 또는 분리 하드웨어 소자일 수 있고, 본 발명의 실시예들에서 개시된 방법들, 단계들, 및 논리 블록도들을 구현 또는 수행할 수 있다. 범용 프로세서는 마이크로프로세서일 수 있고, 또는 프로세서는 임의의 통상적인 프로세서 등일 수 있다. 본 발명의 실시예들을 참조하여 개시된 방법들의 단계들은 하드웨어 디코딩 프로세서에 의해 직접 실행되고 완료될 수 있거나, 디코딩 프로세서 내의 하드웨어 모듈과 소프트웨어 모듈의 조합을 사용하여 실행되고 완료될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 리드 온리 메모리, 프로그램가능한 리드 온리 메모리, 전기적으로 소거가능한 메모리, 또는 레지스터와 같은, 본 기술분야의 발달된 저장 매체(mature storage medium)에 위치할 수 있다. 저장 매체는 외부 메모리(130)에 위치할 수 있다. 프로세서(110)는 외부 메모리(130) 내의 정보를 판독하고 프로세서의 하드웨어와 조합하여 전술한 방법들의 단계들을 완료한다.
전술한 해결책에서, 비휘발성 메모리가 전원 오프될 때 데이터가 손실되지 않는 특징이 사용되고, 트랜잭션의 트랜잭션 데이터는 비휘발성 메모리에 기입된 후에 외부 메모리에 직접 기입되고, 트랜잭션 데이터는 로그 영역에 기입될 필요가 없다. 그러므로, 트랜잭션 처리 과정이 간단해지고 트랜잭션 처리 속도가 증가된다. 또한, 본 발명의 실시예들에서, 상이한 트랜잭션 상태들이 트랜잭션의 모든 트랜잭션 데이터가 비휘발성 메모리에 기입되는지 또는 모든 트랜잭션 데이터가 외부 메모리에 기입되는지를 식별하기 위해 비휘발성 메모리에 더 설정되어, 컴퓨터 시스템은 트랜잭션 상태에 따라 현재의 트랜잭션의 트랜잭션 데이터의 기입 상태를 결정할 수 있다. 그러므로, 트랜잭션의 원자성 및 일관성이 보장된다.
본원에서 제공된 여러 실시예들에서, 개시된 시스템, 장치, 및 방법은 다른 방식들로 구현될 수 있다는 것을 이해하여야 한다. 예를 들어, 설명된 장치 실시예는 단지 예시적이다. 예를 들어, 모듈 또는 유닛 분할은 단지 논리적 기능 분할이고 실제 구현에서 다른 분할일 수 있다. 예를 들어, 복수의 유닛 또는 소자는 또 하나의 시스템에 조합 또는 통합될 수 있거나, 일부 특징들은 무시되거나 수행되지 않을 수 있다. 또한, 도시된 또는 논의된 상호 결합들 또는 직접적 결합들 또는 통신 접속들은 일부 인터페이스들을 사용하여 구현될 수 있다. 장치들 또는 유닛들 간의 간접적 결합들 또는 통신 접속들은 전자적, 기계적, 또는 다른 형태들로 구현될 수 있다.
별도의 부분들로서 설명된 유닛들은 물리적으로 분리되거나 되지 않을 수 있고, 유닛들로서 표시된 부분들은 물리적 유닛들이거나 아닐 수 있고, 한 위치에 배치될 수 있거나, 복수의 네트워크 유닛 상에 할당된 것일 수 있다. 유닛들 중 일부 또는 모두는 실시예들의 해결책들의 목적들을 달성하기 위해 실제 필요들에 따라 선택될 수 있다.
또한, 본원의 실시예들의 기능적 유닛들은 하나의 처리 유닛 내로 통합될 수 있거나, 유닛들 각각은 단독으로 물리적으로 존재할 수 있고, 또는 2개 이상의 유닛이 하나의 유닛 내로 통합된다. 통합된 유닛은 하드웨어의 형태로 구현될 수 있거나, 소프트웨어 기능 유닛들의 형태로 구현될 수 있다.
통합된 유닛이 소프트웨어 기능적 유닛들의 형태로 구현되고 독립 제품으로서 판매되고 사용될 때, 통합된 유닛은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 이러한 이해에 기초하여, 본질적으로 본원의 기술적 해결책들, 또는 종래 기술에 기여하는 부분, 또는 기술적 해결책들의 모두 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 매체 내에 저장되고 본원의 실시예들에서 설명된 방법들의 단계들의 모두 또는 일부를 수행하라고 컴퓨터 디바이스(퍼스널 컴퓨터, 서버, 또는 네트워크 디바이스일 수 있음) 또는 프로세서(processor)에 명령하기 위한 여러 명령어들을 포함한다. 전술한 저장 매체는 USB 플래시 드라이브, 착탈가능 하드 디스크, 리드 온리 메모리(Read-Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크, 또는 광학 디스크와 같은, 프로그램을 저장할 수 있는 임의의 매체를 포함한다.

Claims (13)

  1. 트랜잭션 처리 방법으로서, 상기 방법은 비휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 상기 비휘발성 메모리는 상기 컴퓨터 시스템의 내부 메모리로서 사용되며, 상기 방법은
    트랜잭션 처리 요구를 수신하는 단계 - 상기 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음(carry) -;
    상기 트랜잭션의 상태 정보를 상기 비휘발성 메모리 내에 기록하는 단계 - 상기 트랜잭션의 상기 상태 정보는 트랜잭션 상태, 및 상기 트랜잭션 처리 요구에 따라 상기 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 상기 트랜잭션 상태는 커밋되지 않은 상태(uncommitted state)이고, 상기 커밋되지 않은 상태는 상기 트랜잭션 데이터 모두가 상기 비휘발성 메모리에 기입되지는 않은 것을 나타냄 -;
    상기 트랜잭션 데이터를 상기 어드레스에 따라 상기 비휘발성 메모리에 기입하는 단계;
    상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 커밋된 상태(committed state)로 수정하는 단계 - 상기 커밋된 상태는 상기 트랜잭션의 상기 트랜잭션 데이터 모두가 상기 비휘발성 메모리에 기입되지만, 상기 트랜잭션 데이터 모두가 상기 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타냄 -;
    상기 트랜잭션 데이터를 상기 비휘발성 메모리로부터 상기 컴퓨터 시스템의 상기 외부 메모리에 기입하는 단계; 및
    상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 백업 상태(backup state)로 수정하는 단계 - 상기 백업 상태는 상기 트랜잭션의 상기 트랜잭션 데이터 모두가 상기 컴퓨터 시스템의 상기 외부 메모리에 기입된 것을 나타냄 -
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 커밋된 상태로 수정하기 전에, 상기 방법은
    상기 컴퓨터 시스템이 재시작하면, 상기 비휘발성 메모리 내에 기록된 상기 트랜잭션의 상기 상태 정보에 따라, 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋되지 않은 상태라고 결정하는 단계; 및
    상기 트랜잭션의 상기 트랜잭션 데이터 및 상기 상태 정보를 삭제하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 커밋된 상태로 수정한 후에, 상기 방법은
    상기 컴퓨터 시스템이 재시작하면, 상기 비휘발성 메모리 내에 기록된 상기 트랜잭션의 상기 상태 정보에 따라, 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋된 상태라고 결정하고, 상기 트랜잭션 데이터를 상기 비휘발성 메모리로부터 상기 컴퓨터 시스템의 상기 외부 메모리에 기입하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 백업 상태로 수정한 후에, 상기 방법은
    상기 트랜잭션의 상기 트랜잭션 데이터를 삭제하는 단계를 더 포함하는 방법.
  5. 트랜잭션 처리 장치로서, 상기 장치는 비휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 상기 비휘발성 메모리는 상기 컴퓨터 시스템의 내부 메모리로서 사용되며, 상기 장치는
    트랜잭션 처리 요구를 수신하도록 구성된 수신 모듈 - 상기 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음 -;
    상기 트랜잭션의 상태 정보를 상기 비휘발성 메모리 내에 기록하도록 구성된 기록 모듈 - 상기 트랜잭션의 상기 상태 정보는 트랜잭션 상태, 및 상기 트랜잭션 처리 요구에 따라 상기 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 상기 트랜잭션 상태는 커밋되지 않은 상태이고, 상기 커밋되지 않은 상태는 상기 트랜잭션 데이터 모두가 상기 비휘발성 메모리에 기입되지는 않은 것을 나타냄 -;
    상기 트랜잭션 데이터를 상기 어드레스에 따라 상기 비휘발성 메모리에 기입하도록 구성된 내부 메모리 기입 모듈 - 상기 기록 모듈은 상기 내부 메모리 기입 모듈이 상기 트랜잭션 데이터를 상기 비휘발성 메모리에 기입한 후에 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 커밋된 상태로 수정하도록 더 구성되고, 상기 커밋된 상태는 상기 트랜잭션의 상기 트랜잭션 데이터 모두가 상기 비휘발성 메모리에 기입되지만, 상기 트랜잭션 데이터 모두가 상기 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타냄 -; 및
    상기 기록 모듈이 상기 트랜잭션의 상기 트랜잭션 상태를 상기 커밋된 상태로 수정한 후에 상기 트랜잭션 데이터를 상기 비휘발성 메모리로부터 상기 컴퓨터 시스템의 상기 외부 메모리에 기입하도록 구성된 외부 메모리 기입 모듈 - 상기 기록 모듈은 상기 외부 메모리 기입 모듈이 상기 트랜잭션 데이터를 상기 컴퓨터 시스템의 상기 외부 메모리에 기입한 후에 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 백업 상태로 수정하도록 더 구성되고, 상기 백업 상태는 상기 트랜잭션의 상기 트랜잭션 데이터 모두가 상기 컴퓨터 시스템의 상기 외부 메모리에 기입된 것을 나타냄 -
    을 포함하는 장치.
  6. 제5항에 있어서,
    상기 기록 모듈이 상기 트랜잭션의 상기 트랜잭션 상태를 상기 커밋된 상태로 수정하기 전에, 상기 컴퓨터 시스템이 재시작하면, 상기 비휘발성 메모리 내에 기록된 상기 트랜잭션의 상기 상태 정보에 따라, 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋되지 않은 상태라고 결정하도록 구성된 상태 결정 모듈; 및
    상기 상태 결정 모듈이 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋되지 않은 상태라고 결정할 때 상기 트랜잭션의 상기 트랜잭션 데이터 및 상기 상태 정보를 삭제하도록 구성된 삭제 모듈을 더 포함하는 장치.
  7. 제6항에 있어서, 상기 상태 결정 모듈은 상기 기록 모듈이 상기 트랜잭션의 상기 트랜잭션 상태를 상기 커밋된 상태로 수정한 후에, 상기 컴퓨터 시스템이 재시작하면, 상기 비휘발성 메모리 내에 기록된 상기 트랜잭션의 상기 상태 정보에 따라, 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋된 상태라고 결정하고, 상기 외부 메모리 기입 모듈을 트리거하여 상기 트랜잭션 데이터를 상기 비휘발성 메모리로부터 상기 컴퓨터 시스템의 상기 외부 메모리에 기입하도록 더 구성되는 장치.
  8. 제6항 또는 제7항에 있어서, 상기 삭제 모듈은 상기 기록 모듈이 상기 트랜잭션의 상기 트랜잭션 상태를 상기 백업 상태로 수정한 후에 상기 트랜잭션의 상기 트랜잭션 데이터를 삭제하도록 더 구성되는 장치.
  9. 컴퓨터 시스템으로서, 상기 컴퓨터 시스템은 프로세서 및 비휘발성 메모리를 포함하며, 상기 비휘발성 메모리는 상기 컴퓨터 시스템의 내부 메모리로서 사용되며;
    상기 비휘발성 메모리는 데이터를 저장하도록 구성되고;
    상기 프로세서는
    트랜잭션 처리 요구를 수신하고 - 상기 트랜잭션 처리 요구는 트랜잭션의 트랜잭션 데이터를 갖고 있음 -;
    상기 트랜잭션의 상태 정보를 상기 비휘발성 메모리 내에 기록하고 - 상기 트랜잭션의 상기 상태 정보는 트랜잭션 상태, 및 상기 트랜잭션 처리 요구에 따라 상기 트랜잭션에 할당되는 트랜잭션 식별자 및 어드레스를 포함하고, 상기 트랜잭션 상태는 커밋되지 않은 상태이고, 상기 커밋되지 않은 상태는 상기 트랜잭션 데이터 모두가 상기 비휘발성 메모리에 기입되지는 않은 것을 나타냄 -;
    상기 트랜잭션 데이터를 상기 어드레스에 따라 상기 비휘발성 메모리에 기입하고;
    상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 커밋된 상태로 수정하고 - 상기 커밋된 상태는 상기 트랜잭션의 상기 트랜잭션 데이터 모두가 상기 비휘발성 메모리에 기입되지만, 상기 트랜잭션 데이터 모두가 상기 컴퓨터 시스템의 외부 메모리에 기입되지는 않은 것을 나타냄 -;
    상기 트랜잭션 데이터를 상기 비휘발성 메모리로부터 상기 컴퓨터 시스템의 상기 외부 메모리에 기입하고;
    상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 백업 상태로 수정하도록
    구성되고, 상기 백업 상태는 상기 트랜잭션의 상기 트랜잭션 데이터 모두가 상기 컴퓨터 시스템의 상기 외부 메모리에 기입된 것을 나타내는 컴퓨터 시스템.
  10. 제9항에 있어서, 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 상기 커밋된 상태로 수정하기 전에, 상기 프로세서는
    상기 컴퓨터 시스템이 재시작할 때, 상기 비휘발성 메모리 내에 기록된 상기 트랜잭션의 상기 상태 정보에 따라, 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋되지 않은 상태라고 결정하고;
    상기 트랜잭션의 상기 트랜잭션 데이터 및 상기 상태 정보를 삭제하도록
    더 구성되는 컴퓨터 시스템.
  11. 제9항에 있어서, 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 상기 커밋된 상태로 수정한 후에, 상기 프로세서는
    상기 컴퓨터 시스템이 재시작할 때, 상기 비휘발성 메모리 내에 기록된 상기 트랜잭션의 상기 상태 정보에 따라, 상기 트랜잭션의 상기 트랜잭션 상태가 상기 커밋된 상태라고 결정하고, 상기 트랜잭션 데이터를 상기 비휘발성 메모리로부터 상기 컴퓨터 시스템의 상기 외부 메모리에 기입하도록 더 구성되는 컴퓨터 시스템.
  12. 제9항에 있어서, 상기 트랜잭션의 상기 트랜잭션 상태를 상기 트랜잭션 식별자에 따라 상기 백업 상태로 수정한 후에, 상기 프로세서는
    상기 트랜잭션의 상기 트랜잭션 데이터를 삭제하도록 더 구성되는 컴퓨터 시스템.
  13. 하나 이상의 컴퓨터 실행 가능한 명령어들을 포함하는 컴퓨터 프로그램이 저장된 컴퓨터 판독가능 기록 매체로서, 상기 하나 이상의 컴퓨터 실행 가능한 명령어들은, 컴퓨터 시스템의 프로세서 상에서 실행될 때, 상기 컴퓨터 시스템으로 하여금, 제1항 내지 제4항 중 어느 한 항의 방법을 수행하게 하는 컴퓨터 판독가능 기록 매체.
KR1020177020304A 2014-12-24 2014-12-24 트랜잭션 처리 방법, 장치 및 컴퓨터 시스템 KR101910759B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/094779 WO2016101165A1 (zh) 2014-12-24 2014-12-24 事务处理的方法、装置及计算机系统

Publications (2)

Publication Number Publication Date
KR20170098900A KR20170098900A (ko) 2017-08-30
KR101910759B1 true KR101910759B1 (ko) 2018-12-19

Family

ID=56148902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177020304A KR101910759B1 (ko) 2014-12-24 2014-12-24 트랜잭션 처리 방법, 장치 및 컴퓨터 시스템

Country Status (6)

Country Link
US (1) US10467044B2 (ko)
EP (1) EP3229147A4 (ko)
JP (1) JP6401866B2 (ko)
KR (1) KR101910759B1 (ko)
CN (1) CN106716395B (ko)
WO (1) WO2016101165A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268502B2 (en) * 2017-06-29 2019-04-23 Intel Corporation Methods and apparatus to perform atomic transactions in nonvolatile memory under hardware transactional memory
KR20190046169A (ko) * 2017-10-25 2019-05-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
US10445238B1 (en) * 2018-04-24 2019-10-15 Arm Limited Robust transactional memory
KR102450411B1 (ko) * 2018-05-09 2022-09-30 삼성에스디에스 주식회사 블록체인 기반 트랜잭션 처리 방법, 장치 및 그 시스템
CN111240851A (zh) * 2018-11-29 2020-06-05 优信拍(北京)信息科技有限公司 基于切面编程的事务处理方法、装置、设备及系统
KR102180592B1 (ko) * 2018-12-14 2020-11-18 주식회사 엘지씨엔에스 It 시스템 검증 방법 및 시스템
JP7313458B2 (ja) * 2019-09-18 2023-07-24 華為技術有限公司 ストレージシステム、ストレージノード及びデータ記憶方法
KR102412423B1 (ko) * 2020-01-09 2022-06-23 성균관대학교산학협력단 비휘발성 메모리 장치, 이것을 포함하는 컴퓨팅 시스템 및 이것의 동작 방법
CN113296683B (zh) * 2020-04-07 2022-04-29 阿里巴巴集团控股有限公司 数据存储方法、装置、服务器和存储介质
CN112286909B (zh) * 2020-10-29 2023-09-05 平安科技(深圳)有限公司 执行状态确定方法、装置、服务器及存储介质
WO2023043439A1 (en) * 2021-09-15 2023-03-23 Intel Corporation Routing of memory transactions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4507751A (en) 1982-06-21 1985-03-26 International Business Machines Corporation Method and apparatus for logging journal data using a log write ahead data set
US20070220059A1 (en) * 2006-03-20 2007-09-20 Manyi Lu Data processing node
JP2009026334A (ja) 2001-03-19 2009-02-05 Ricoh Co Ltd 書き込み遅延データベース管理システム、及びプログラム
JP2009282752A (ja) 2008-05-22 2009-12-03 Hitachi Systems & Services Ltd ストレージデバイス及びファイルシステムの記録方法
WO2014142908A1 (en) 2013-03-14 2014-09-18 Hewlett-Packard Development Company, L.P. Multiversioned nonvolatile memory hierarchy for persistent memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5386111A (en) * 1977-01-07 1978-07-29 Toshiba Corp Monitor device
JPH06332777A (ja) * 1993-05-18 1994-12-02 Hitachi Ltd トランザクション処理方式
US5386111A (en) * 1993-10-08 1995-01-31 Zimmerman; H. Allen Optical detection of water droplets using light refraction with a mask to prevent detection of unrefracted light
JP3607658B2 (ja) * 2001-10-05 2005-01-05 株式会社東芝 携帯可能電子装置
CA2422176C (en) * 2003-03-14 2009-07-21 Ibm Canada Limited - Ibm Canada Limitee Method and apparatus for interrupting updates to a database to provide read-only access
CN1205547C (zh) * 2003-05-19 2005-06-08 清华大学 用普通scsi磁盘代替存储光纤网络中光纤磁盘阵列的方法
US8850141B2 (en) * 2003-07-15 2014-09-30 International Business Machines Corporation System and method for mirroring data
CN101089857B (zh) * 2007-07-24 2011-05-11 中兴通讯股份有限公司 一种内存数据库事务管理方法及系统
US20110321015A1 (en) * 2010-06-23 2011-12-29 Yen Hsiang Chew Hardware triggering mechanism for software debugger
FR2991796A1 (fr) * 2012-06-12 2013-12-13 Inside Secure Procede de sauvegarde de donnees, a l'exterieur d'un microcircuit securise
CN102831069B (zh) * 2012-06-30 2016-03-30 华为技术有限公司 内存处理方法、内存管理设备
CN103077222B (zh) * 2012-12-31 2016-01-27 中国科学院计算技术研究所 机群文件系统分布式元数据一致性保证方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4507751A (en) 1982-06-21 1985-03-26 International Business Machines Corporation Method and apparatus for logging journal data using a log write ahead data set
JP2009026334A (ja) 2001-03-19 2009-02-05 Ricoh Co Ltd 書き込み遅延データベース管理システム、及びプログラム
US20070220059A1 (en) * 2006-03-20 2007-09-20 Manyi Lu Data processing node
JP2009282752A (ja) 2008-05-22 2009-12-03 Hitachi Systems & Services Ltd ストレージデバイス及びファイルシステムの記録方法
JP5386111B2 (ja) * 2008-05-22 2014-01-15 株式会社日立ソリューションズ ファイルシステムの記録方法
WO2014142908A1 (en) 2013-03-14 2014-09-18 Hewlett-Packard Development Company, L.P. Multiversioned nonvolatile memory hierarchy for persistent memory

Also Published As

Publication number Publication date
JP6401866B2 (ja) 2018-10-10
EP3229147A1 (en) 2017-10-11
CN106716395A (zh) 2017-05-24
WO2016101165A1 (zh) 2016-06-30
KR20170098900A (ko) 2017-08-30
EP3229147A4 (en) 2017-12-27
CN106716395B (zh) 2019-04-19
US10467044B2 (en) 2019-11-05
JP2018504692A (ja) 2018-02-15
US20170286150A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
KR101910759B1 (ko) 트랜잭션 처리 방법, 장치 및 컴퓨터 시스템
EP3726364B1 (en) Data write-in method and solid-state drive array
US20150331624A1 (en) Host-controlled flash translation layer snapshot
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US9703816B2 (en) Method and system for forward reference logging in a persistent datastore
US10372619B2 (en) Data backup method, data recovery method and storage controller
US20140215277A1 (en) Selective restoration of data from non-volatile storage to volatile memory
CN108431783B (zh) 访问请求处理方法、装置及计算机系统
US10795599B2 (en) Data migration method, host and solid state disk
US11520487B2 (en) Managing write operations during a power loss
US10459803B2 (en) Method for management tables recovery
US9990150B2 (en) Method to provide transactional semantics for updates to data structures stored in a non-volatile memory
TWI693518B (zh) 資料儲存裝置及避免韌體失效之方法
US11740983B2 (en) High availability for persistent memory
US20190278482A1 (en) Data storage device backup
US9983826B2 (en) Data storage device deferred secure delete
KR20110024832A (ko) 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법
US20190227742A1 (en) Task tail abort for queued storage tasks
US20170017406A1 (en) Systems and methods for improving flash-oriented file system garbage collection
TWI792534B (zh) 以局部清理操作來進行垃圾回收的方法與相關控制器和儲存系統
CN107562639B (zh) 擦除块读请求处理方法与装置
CN109491593B (zh) 一种数据存储管理系统及方法
US10872008B2 (en) Data recovery after storage failure in a memory system
WO2018209733A1 (zh) 一种串行闪存数据保护方法和装置

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
GRNT Written decision to grant