KR102165860B1 - 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치 - Google Patents

슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치 Download PDF

Info

Publication number
KR102165860B1
KR102165860B1 KR1020180174053A KR20180174053A KR102165860B1 KR 102165860 B1 KR102165860 B1 KR 102165860B1 KR 1020180174053 A KR1020180174053 A KR 1020180174053A KR 20180174053 A KR20180174053 A KR 20180174053A KR 102165860 B1 KR102165860 B1 KR 102165860B1
Authority
KR
South Korea
Prior art keywords
slot header
header
slot
transaction
page
Prior art date
Application number
KR1020180174053A
Other languages
English (en)
Other versions
KR20200082949A (ko
Inventor
남범석
Original Assignee
성균관대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교산학협력단 filed Critical 성균관대학교산학협력단
Priority to KR1020180174053A priority Critical patent/KR102165860B1/ko
Priority to US16/729,539 priority patent/US11442929B2/en
Publication of KR20200082949A publication Critical patent/KR20200082949A/ko
Application granted granted Critical
Publication of KR102165860B1 publication Critical patent/KR102165860B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models

Landscapes

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

Abstract

본 발명은 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치에 관한 것으로, 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅 방법은, 슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하는 단계, 상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하는 단계, 및 상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함한다.

Description

슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치{METHOD FOR LOGGING DOUBLE HEADER OF SLOTTED PAGE AND DATABASE APPARAUTUS}
본 발명은 슬로티드 페이지(Slotted page)의 더블 헤더 로깅(Double header logging) 방법 및 데이터베이스 장치에 관한 것이다.
데이터베이스는 많은 양의 데이터를 하드디스크에 효율적으로 저장할 수 있는 구조를 지니고 있어야 하기 때문에, Oracle, MySQL, SQLite 등의 많은 데이터베이스는 슬로티드 페이지 구조(Slotted paged structure)를 페이지 포맷으로 사용하고 있다.
또한, 데이터베이스는 저장된 데이터를 잃어버리는 일이 있어서는 안 된다는 제약을 가지고 있어, 저장된 데이터를 온전히 보존하기 위하여 갑작스런 서버 다운에 대처할 수 있는 복구 대책을 가지고 있어야 한다. 복구 대책은 대표적으로 Undo와 Redo의 두 기법이 쓰이고 있다. 그러나 이 기법들은 데이터베이스의 슬로티드 페이지 구조를 활용하지 못하고 있다.
종래의 슬로티드 페이지 복구 기법을 살펴보기로 한다. 현재 데이터베이스들은 Undo와 Redo라는 두 가지 로깅 기법 중 하나를 사용하고 있다. Undo 로깅 기법은 DB 파일의 슬로티드 페이지를 변경하기 전에 기존 슬로티드 페이지를 로그 파일에 백업본으로 복사한다. 이후, Undo 로깅 기법은 DB 파일의 슬로티드 페이지를 직접 변경하는 방법이다. 즉, Undo 로깅 기법에서 2번의 페이지 쓰기가 발생한다. Redo 로깅 기법은 변경된 페이지를 로그 파일에 우선 쓴다. 이후, Redo 로깅 기법은 DB 파일에 변경된 페이지를 다시 쓰는 방법이다. 이 역시 2번의 페이지 쓰기가 발생한다.
대한민국 공개특허공보 제10-2018-0082753호(2018.07.19. 공개) 대한민국 등록특허공보 제10-1221992호(2013.01.15. 공개)
본 발명의 실시 예들은 더블 헤더를 갖는 슬로티드 페이지 구조를 활용하여 입출력량을 최소화할 수 있는, 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치를 제공하고자 한다.
본 발명의 실시 예들은 각 슬롯 헤더의 메타데이터에 트랜잭션 아이디가 추가된 2개의 슬롯 헤더를 슬로티드 페이지 구조에 사용하여 페이지 복구를 수행함으로써, 페이지 복구를 위한 별도의 로그 파일(예컨대, Undo 또는 Redo 로그 파일)을 사용하지 않고도 페이지 복구를 수행할 수 있는, 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치를 제공하고자 한다.
본 발명의 일 실시 예에 따르면, 데이터베이스 장치에 의해 수행되는 슬로티드 페이지(Slotted page)의 더블 헤더 로깅(Double header logging) 방법에 있어서, 슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하는 단계; 상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하는 단계; 및 상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함하는, 슬로티드 페이지의 더블 헤더 로깅 방법이 제공될 수 있다.
상기 슬롯 헤더를 판단하는 단계는, 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단할 수 있다.
상기 슬롯 헤더를 판단하는 단계는, 제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제2 슬롯 헤더를 유효한 슬롯 헤더로 판단할 수 있다.
상기 유효한 슬롯 헤더를 선택하는 단계는, 상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
상기 유효한 슬롯 헤더를 선택하는 단계는, 제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
상기 방법은, 상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 추가하고자 하는 데이터를 프리 스페이스에 저장하고, 상기 추가하고자 하는 데이터에 대한 데이터 정보를 상기 유효하지 않은 슬롯 헤더에 저장하는 단계를 더 포함할 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 데이터베이스 장치에 의해 수행되는 슬로티드 페이지의 로깅 방법에 있어서, 슬롯 헤더(Slot header)를 선택하고자 하는 슬로티드 페이지를 제공하는 단계; 및 상기 제공된 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함하되, 상기 슬로티드 페이지에는 2개의 슬롯 헤더가 포함되고, 각 슬롯 헤더에 트랜잭션 아이디가 포함되는, 슬로티드 페이지의 더블 헤더 로깅 방법이 제공될 수 있다.
상기 트랜잭션을 수행하는 단계는, 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
상기 트랜잭션을 수행하는 단계는, 제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
상기 방법은, 추가하고자 하는 데이터를 프리 스페이스에 저장하고, 상기 추가하고자 하는 데이터에 대한 데이터 정보를 유효하지 않은 슬롯 헤더로 판단된 슬롯 헤더에 저장하는 단계를 더 포함할 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 데이터베이스 장치에 의해 수행되는 슬로티드 페이지의 더블 헤더 로깅 방법에 있어서, 복구 대상인 페이지의 제1 슬롯 헤더(first slot header) 및 제2 슬롯 헤더(second slot header) 중에서 유효하지 않은 슬롯 헤더를 판단하는 단계; 상기 판단 결과에 따라 유효하지 않은 슬롯 헤더를 무효화시키는 단계; 및 상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함하는, 슬로티드 페이지의 더블 헤더 로깅 방법이 제공될 수 있다.
상기 슬롯 헤더를 판단하는 단계는, 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제1 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단할 수 있다.
상기 슬롯 헤더를 판단하는 단계는, 제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제2 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단할 수 있다.
상기 방법은, 복구 대상인 페이지가 마지막 페이지인지를 확인하고, 마지막 페이지가 아니면 다음 페이지로 이동하는 단계를 더 포함할 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치에 있어서, 페이지로 이루어진 데이터베이스 파일을 저장하는 데이터베이스; 적어도 하나의 명령어를 저장하는 메모리; 및 상기 데이터베이스 및 상기 메모리와 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써, 슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하고, 상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는, 데이터베이스 장치가 제공될 수 있다.
상기 프로세서는, 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단할 수 있다.
상기 프로세서는, 제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제2 슬롯 헤더를 유효한 슬롯 헤더로 판단할 수 있다.
상기 프로세서는, 상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
상기 프로세서는, 제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
상기 프로세서는, 상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 추가하고자 하는 데이터를 상기 데이터베이스의 프리 스페이스에 저장하고, 상기 추가하고자 하는 데이터에 대한 데이터 정보를 상기 유효하지 않은 슬롯 헤더에 저장할 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치에 있어서, 페이지로 이루어진 데이터베이스 파일을 저장하는 데이터베이스; 적어도 하나의 명령어를 저장하는 메모리; 및 상기 데이터베이스 및 상기 메모리와 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써, 복구 대상인 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효하지 않은 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효하지 않은 슬롯 헤더를 무효화시키고, 상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는, 데이터베이스 장치가 제공될 수 있다.
상기 프로세서는, 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제1 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단할 수 있다.
상기 프로세서는, 제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제2 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단할 수 있다.
상기 프로세서는, 복구 대상인 페이지가 마지막 페이지인지를 확인하고, 마지막 페이지가 아니면 다음 페이지로 이동할 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금, 슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하고, 상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체가 제공될 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금, 복구 대상인 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효하지 않은 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효하지 않은 슬롯 헤더를 무효화시키고, 상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체가 제공될 수 있다.
본 발명의 실시 예들은 더블 헤더를 갖는 슬로티드 페이지 구조를 활용하여 입출력량을 최소화할 수 있다.
본 발명의 실시 예들은 각 슬롯 헤더의 메타데이터에 트랜잭션 아이디가 추가된 2개의 슬롯 헤더를 슬로티드 페이지 구조에 사용하여 페이지 복구를 수행함으로써, 페이지 복구를 위한 별도의 로그 파일(예컨대, Undo 또는 Redo 로그 파일)을 사용하지 않고도 페이지 복구를 수행할 수 있다.
도 1은 일반적인 슬로티드 페이지 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 더블 헤더 로깅의 페이지 구조를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 더블 헤더 로깅 방법의 동작 알고리즘을 설명하기 위한 도면이다.
도 4 및 도 5는 본 발명의 일 실시 예에 따른 데이터베이스 장치의 블록 구성을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 슬로티드 페이지의 데이터 저장 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅 방법에서 슬롯 헤더 선택 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅 방법에서 슬로티드 페이지의 복구 방법을 설명하기 위한 순서도이다.
도 9는 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치를 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 일반적인 슬로티드 페이지 구조를 설명하기 위한 도면이다.
도 1은 1024바이트의 크기를 갖는 슬로티드 페이지 구조(Slotted page structure)를 도식화한 것이다. 예를 들면, 슬로티드 페이지는 1KB, 4KB, 8KB 등 임의의 크기를 가질 수 있다. 슬로티드 페이지는 페이지의 메타데이터를 저장하는 슬롯 헤더(Slot Header), 프리 스페이스(Free Space), 그리고 데이터를 저장하는 컨텐츠 영역(Contents Area)으로 나누어진다. 슬롯 헤더는 컨텐츠 영역과 프리 스페이스의 경계인 컨텐츠 영역 시작 주소를 저장한다. 또한, 컨텐츠 영역에 저장된 데이터의 개수를 저장하며, 각 데이터의 시작 주소를 위치 배열(Offset array)로 저장한다.
위치 배열은 페이지 안의 데이터의 위치를 저장하는 배열로서, 데이터가 추가될수록 크기가 늘어난다. 추가된 데이터는 프리 스페이스의 뒷부분 컨텐츠 영역과의 경계 부분에 저장이 되어, 컨텐츠 영역은 페이지 앞으로 크기가 늘어난다. 즉, 도 1에서 새로운 데이터 <40, V4>가 저장되면, 페이지의 960번째 위치하게 되어 컨텐츠 영역은 왼쪽으로 늘어나고, 위치 배열은 오른쪽으로 늘어나 원소 4개를 가지는 배열이 된다. 이때, 컨텐츠 영역의 시작 주소 역시 960으로 갱신되어야 하며, 데이터 개수도 4로 증가되어야 한다.
도 2는 본 발명의 일 실시 예에 따른 더블 헤더 로깅의 페이지 구조를 설명하기 위한 도면이다.
본 발명의 일 실시 예에 따른 더블 헤더 로깅(Doubleheader Logging)을 위한 페이지 구조를 살펴보기로 한다. 본 발명의 일 실시 예에 따른 더블 헤더 로깅은 별도의 Undo나 Redo 로그 파일을 사용하지 않는다. 대신, 도 2에 도시된 바와 같이, 더블 헤더 로깅은 슬로티드 페이지 구조에 2개의 슬롯 헤더를 사용한다. 즉, 더블 헤더 로깅은 컨텐츠 영역에 대한 메타데이터를 제1 슬롯 헤더와 제2 슬롯 헤더에 번갈아가며 저장한다.
더블 헤더 로깅의 페이지 구조는 도 1에 도시된 일반적인 슬로티드 페이지 구조와는 달리 두 개의 슬롯 헤더인 제1 슬롯 헤더와 제2 슬롯 헤더를 가지고 있다. 각 슬롯 헤더의 메타데이터에 트랜잭션 아이디가 추가된다. 이처럼 슬롯 헤더를 하나 추가한 이유는 두 개의 슬롯 헤더 중 하나의 슬롯 헤더만이 유효한 슬롯 헤더이고, 다른 하나의 슬롯 헤더는 로그 역할을 하기 때문이다.
도 3은 본 발명의 일 실시 예에 따른 더블 헤더 로깅 방법의 동작 알고리즘을 설명하기 위한 도면이다.
더블 헤더 로깅은 페이지에 데이터를 추가할 때 한 슬롯 헤더(예컨대, 제1 슬롯 헤더)에는 기존의 메타데이터와 위치배열을 남겨두고, 수정된 메타데이터와 위치배열을 다른 슬롯 헤더(예컨대, 제2 슬롯 헤더)에 적는다. 즉, 더블 헤더 로깅은 현재 유효한 슬롯 헤더를 수정하지 않기 때문에, 유효한 슬롯 헤더를 통해 데이터가 추가되기 이전의 페이지를 확인할 수 있다.
더블 헤더 로깅 방법은 새로운 데이터를 쓰는 경우에는 새로운 데이터를 프리 스페이스 저장한다. 그리고 더블 헤더 로깅 방법은 새로운 데이터의 위치가 포함된 위치 배열 및 데이터 개수 등이 포함된 데이터 정보를 유효하지 않은 슬롯 헤더에 저장하여 슬롯 헤더를 업데이트한다. 슬롯 헤더에 대한 업데이트를 마치면, 기존의 유효한 슬롯 헤더보다 업데이트된 슬롯 헤더의 트랜잭션 아이디 숫자가 더 높게 된다. 이 때문에, 새로운 슬롯 헤더가 최신 슬롯 헤더가 된다. 기존의 유효했던 슬롯 헤더는 오래된 슬롯 헤더가 된다. 데이터베이스의 트랜잭션 아이디가 증가되면, 기존의 유효했던 슬롯 헤더는 유효하지 않은 슬롯 헤더로 변경되고, 기존의 유효한 슬롯 헤더보다 업데이트된 슬롯 헤더가 유효한 슬롯 헤더로 된다.
여기서, 최신 슬롯 헤더가 항상 유효한 슬롯 헤더는 아닐 수 있다. 각 쓰기 트랜잭션은 종료할 때, 자신의 트랜잭션 아이디를 데이터베이스 헤더 위치에 저장한다. 이 트랜잭션 아이디보다 슬롯 헤더의 트랜잭션 아이디가 크다면, 그 슬롯 헤더는 유효하지 않다. 유효한 슬롯 헤더는 데이터베이스 전체의 트랜잭션 아이디보다 작거나 같은 트랜잭션 아이디를 가지는 슬롯 헤더 중에서 최신의 트랜잭션 아이디를 가지는 슬롯 헤더이다.
도 3의 (a) 및 (b)에 도시된 바와 같이, 두 경우는 모두 같은 슬로티드 페이지이다. 그러나 데이터베이스(140) 전체의 트랜잭션 아이디가 2라면, 도 3의 (a)와 같이, 제1 슬롯 헤더가 유효한 슬롯 헤더가 되고, V1, V3 두 개의 데이터만을 볼 수 있다. 만일, 도 3의 (b)와 같이, 데이터베이스(140) 전체의 트랜잭션 아이디가 3이라면 제2 슬롯 헤더가 유효한 슬롯헤더가 되며 V1, V2, V3 전부를 볼 수 있다.
한편, 트랜잭션 3이 롤백(Rollback)을 해서 이 슬로티드 페이지를 이전 상태로 복구를 해야 할 경우를 살펴보기로 한다. 이때, 유효한 페이지를 제1 슬롯 헤더로 되돌림으로써 V1, V3 두 데이터만 저장한 페이지로 되돌릴 수 있다. 따라서, 본 발명의 일 실시 예에 따른 더블 헤더 로깅 방법에서는 따로 백업을 적어 둘 필요가 없다. 즉, 본 발명의 일 실시 예에 따른 더블 헤더 로깅 방법은 하나의 페이지 안에 백업과 수정본을 모두 가지고 있다. 그러므로 본 발명의 일 실시 예에 따른 더블 헤더 로깅 방법은 종래의 Undo나 Redo 로깅 기법처럼 하드디스크에 한 번 더 적을 필요가 없고, 그만큼 뛰어난 성능을 보여줄 수 있다.
도 4 및 도 5는 본 발명의 일 실시 예에 따른 데이터베이스 장치(100)의 블록 구성을 설명하기 위한 도면이다.
도 4에 도시된 바와 같이, 데이터베이스 장치(100)는 다수의 DB 파일이 저장된 데이터베이스(140)를 포함한다. 사용자 단말(101, 102)이 데이터베이스 장치(100)에 저장된 DB 파일을 검색하거나 새로운 데이터를 삽입하도록 할 수 있다. 사용자 단말 1(101)은 데이터베이스 장치(100)에 의해 검색(search)을 요청할 수 있다. 또한, 사용자 단말 2(102)는 데이터베이스 장치(100)에 의해 데이터 삽입(insert)을 요청할 수 있다.
도 5에 도시된 바와 같이, 데이터베이스 장치(100)는 사용자 단말의 검색 요청이나 삽입 요청에 따라 SQLite를 통해 DB 파일을 검색하거나 새로운 데이터를 DB 파일에 삽입시킬 수 있다. 예를 들면, 사용자 단말 1(101)이 데이터베이스 장치(100)에 DB 파일 1에 대해 검색을 요청하면, 데이터베이스 장치(100)는 SQLite를 통해 데이터베이스(140)에 저장된 DB 파일 1에 대해 검색을 수행한다. 사용자 단말 2(102)가 데이터베이스 장치(100)에 DB 파일 2에 새로운 데이터의 삽입을 요청하면, 데이터베이스 장치(100)는 SQLite를 통해 데이터베이스(140)에 저장된 DB 파일 2에 새로운 데이터를 삽입시킬 수 있다.
DB 파일은 DB 헤더와, 다수의 DB 페이지 1 내지 N로 이루어진다. 다수의 DB 페이지는 각각 제1 슬롯 헤더, 제2 슬롯 헤더, 프리 스페이스, 컨텐츠 영역을 포함한다. 여기서, 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 어느 하나의 슬롯 헤더는 데이터베이스(140)의 현재 트랜잭션과 대응되며, 유효한 슬롯 헤더일 수 있다. 다른 하나의 슬롯 헤더는 데이터베이스(140)의 이전 트랜잭션과 대응되어 이전 트랜잭션에 대한 로그 역할을 하며, 현재 유효하지 않은 슬롯 헤더일 수 있다.
도 6은 본 발명의 일 실시 예에 따른 슬로티드 페이지의 데이터 저장 방법을 설명하기 위한 도면이다.
단계 S101에서, 데이터베이스 장치(100)는 제1 데이터를 프리 스페이스에 저장한다.
단계 S102에서, 데이터베이스 장치(100)는 제1 데이터에 대한 제1 데이터 정보를 제1 슬롯 헤더에 저장한다.
이후, 단계 S103에서, 데이터베이스 장치(100)는 페이지에 추가하고자 하는 제2 데이터를 프리 스페이스에 저장한다.
단계 S104에서, 데이터베이스 장치(100)는 제2 데이터에 대한 제2 데이터 정보를 유효하지 않은 제2 슬롯 헤더에 저장한다. 일례로, 제1 데이터 정보가 저장된 슬롯 헤더가 제1 슬롯 헤더이기 때문에, 데이터베이스 장치(100)는 새로운 데이터에 대한 제2 데이터 정보를 제1 슬롯 헤더가 아닌 제2 슬롯 헤더에 저장한다. 이때, 데이터베이스 장치(100)는 제2 슬롯 헤더에 기저장된 데이터 정보를 제2 데이터 정보로 덮어쓴다.
단계 S105에서, 데이터베이스 장치(100)는 파일 변환 카운터를 증가시킨다.
도 7은 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅 방법에서 슬롯 헤더 선택 방법을 설명하기 위한 순서도이다.
더블 헤더 로깅 방법은 한 페이지에 제1 슬롯 헤더와 제2 슬롯 헤더인 두 개의 슬롯 헤더를 가지고 있다. 그러므로 더블 헤더 로깅 방법은 알맞은 즉 유효한 슬롯 헤더를 선택해야 한다. 이를 위해, 더블 헤더 로깅 방법은 도 7에 도시된 순서도와 같은 알고리즘을 수행하여 유효한 슬롯 헤더를 선택할 수 있다.
단계 S201에서, 데이터베이스 장치(100)는 제1 슬롯 헤더의 트랜잭션 아이디 및 제2 슬롯 헤더의 트랜잭션 아이디를 획득하고, 제1 슬롯 헤더의 트랜잭션 아이디 및 제2 슬롯 헤더의 트랜잭션 아이디를 각각 TID1 및 TID2로 지정한다.
단계 S202에서, 데이터베이스 장치(100)는 제1 슬롯 헤더가 유효한지 여부를 확인한다.
단계 S203에서, 데이터베이스 장치(100)는 제1 슬롯 헤더가 유효하면, 제2 슬롯 헤더가 유효한지 여부를 확인한다.
단계 S204에서, 데이터베이스 장치(100)는 제2 슬롯 헤더가 유효하면, 제1 슬롯 헤더의 트랜잭션 아이디(TID1)가 제2 슬롯 헤더의 트랜잭션 아이디(TID2) 이상인지를 확인한다.
단계 S205에서, 데이터베이스 장치(100)는 제1 슬롯 헤더의 트랜잭션 아이디(TID1)가 제2 슬롯 헤더의 트랜잭션 아이디(TID2) 이상이면, 제1 슬롯 헤더를 선택한다.
반면, 단계 S206에서, 데이터베이스 장치(100)는 제1 슬롯 헤더의 트랜잭션 아이디(TID1)가 제2 슬롯 헤더의 트랜잭션 아이디(TID2) 미만이면, 제2 슬롯 헤더를 선택한다.
도 8은 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅 방법에서 슬로티드 페이지의 복구 방법을 설명하기 위한 순서도이다.
본 발명의 일 실시 예에 따른 데이터베이스 장치(100)는, 만일 슬로티드 페이지를 복구해야 한다면, 두 슬롯 헤더 중에 어느 슬롯 헤더가 유효한 슬롯 헤더가 되어야 하는지 판단하는 알고리즘을 수행한다. 도 8의 순서도는 이 알고리즘을 보여준다. 만약 슬롯 헤더의 트랜잭션 아이디가 데이터베이스(140)의 전체 트랜잭션 아이디보다 크다면, 해당 트랜잭션이 종료되기 전에 서버가 다운되었다는 것을 의미하므로 해당 슬롯 헤더를 무효로 만든다. 이 방식은 유효하지 않은 데이터를 삭제하지 않더라도 그 데이터를 접근할 수 없게 함으로써 해당 트랜잭션이 진행되지 않은 것과 같은 효과를 같는다. 이 작업을 파일의 모든 페이지에 대해 진행하면 그 트랜잭션으로 인한 변경사항이 전부 보이지 않게 되므로 이전의 데이터베이스(140)로 되돌아온 것과 같아져서 다음 트랜잭션을 진행할 수 있는 상태가 된다. 이하, 슬로티드 페이지의 복구 방법에 대해서 구체적으로 살펴보기로 한다.
단계 S301에서, 데이터베이스 장치(100)는 현재 페이지를 첫 번째 페이지로 지정한다.
단계 S302에서, 데이터베이스 장치(100)는 파일 변환 카운터, 제1 슬롯 헤더의 트랜잭션 아이디 및 제2 슬롯 헤더의 트랜잭션 아이디를 획득하고, 파일 변환 카운터, 제1 슬롯 헤더의 트랜잭션 아이디 및 제2 슬롯 헤더의 트랜잭션 아이디를 각각 FCC, TID1 및 TID2로 지정한다.
단계 S303에서, 데이터베이스 장치(100)는 제1 슬롯 헤더의 트랜잭션 아이디(TID1)가 파일 변환 카운터(FCC, File conversion counter)를 초과하는지를 확인한다.
단계 S304에서, 데이터베이스 장치(100)는 제1 슬롯 헤더의 트랜잭션 아이디(TID1)가 파일 변환 카운터(FCC)를 초과하면, 제1 슬롯 헤더를 무효화시킨다.
단계 S305에서, 데이터베이스 장치(100)는 제1 슬롯 헤더의 트랜잭션 아이디(TID1)가 파일 변환 카운터(FCC)를 초과하지 않으면, 제2 슬롯 헤더의 트랜잭션 아이디(TID2)가 파일 변환 카운터(FCC)를 초과하는지를 확인한다.
단계 S306에서, 데이터베이스 장치(100)는 제2 슬롯 헤더의 트랜잭션 아이디(TID2)가 파일 변환 카운터(FCC)를 초과하면, 제2 슬롯 헤더를 무효화시킨다.
단계 S307에서, 데이터베이스 장치(100)는 제2 슬롯 헤더의 트랜잭션 아이디(TID2)가 파일 변환 카운터(FCC)를 초과하지 않으면, 현재 페이지가 마지막 페이지인지를 확인한다.
단계 S308에서, 데이터베이스 장치(100)는 현재 페이지가 마지막 페이지가 아니면, 다음 페이지로 이동한다.
도 9는 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치(100)를 설명하기 위한 도면이다.
도 9에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치(100)는 프로세서(110), CPU 캐시(120), 메모리(130) 및 데이터베이스(140)를 포함한다. 그러나 도시된 구성요소 모두가 필수 구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 구현될 수 있다.
우선, 본 발명의 일 실시 예에 따른 슬로티드 페이지의 슬롯 헤더 선택을 위한 데이터베이스 장치(100)의 각 구성요소들의 구체적인 구성 및 동작을 설명한다.
데이터베이스(140)는 페이지로 이루어진 적어도 하나의 데이터베이스(140) 파일을 저장한다.
CPU 캐시(120)는 메모리(130)에서 가장 자주 사용되는 위치의 데이터를 저장한다. 프로세서(110)는 메모리(130)에 직접 접근해서 전송된 데이터를 CPU 캐시(120)에 복사해 넣음으로써, 다음번에 같은 주소에 프로세서(110)가 접근할 때 CPU 캐시(120)에서 직접 읽고 쓸 수 있도록 한다.
메모리(130)는 적어도 하나의 명령어를 저장한다.
프로세서(110)는 CPU 캐시(120), 메모리(130) 및 데이터베이스(140)와 연결된다. 프로세서(110)는, 적어도 하나의 명령어를 실행함으로써, 슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하고, 그 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행한다.
다양한 실시 예에 따르면, 프로세서(110)는 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단할 수 있다.
다양한 실시 예에 따르면, 프로세서(110)는 제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제2 슬롯 헤더를 유효한 슬롯 헤더로 판단할 수 있다.
다양한 실시 예에 따르면, 프로세서(110)는 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
다양한 실시 예에 따르면, 프로세서(110)는 제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택할 수 있다.
다양한 실시 예에 따르면, 프로세서(110)는 상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 추가하고자 하는 데이터를 데이터베이스(140)의 프리 스페이스에 저장하고, 그 추가하고자 하는 데이터에 대한 데이터 정보를 그 유효하지 않은 슬롯 헤더에 저장할 수 있다.
한편, 본 발명의 다른 실시 예에 따른 슬로티드 페이지의 슬롯 헤더 선택을 위한 데이터베이스 장치(100)의 각 구성요소들의 구체적인 구성 및 동작을 설명한다.
프로세서(110)는, 적어도 하나의 명령어를 실행함으로써, 슬롯 헤더(Slot header)를 선택하고자 하는 슬로티드 페이지를 제공하고, 그 제공된 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행한다. 슬로티드 페이지에는 2개의 슬롯 헤더가 포함되고, 각 슬롯 헤더에 트랜잭션 아이디가 포함될 수 있다.
한편, 본 발명의 다른 실시 예에 따른 슬로티드 페이지의 복구를 위한 데이터베이스 장치(100)의 각 구성요소들의 구체적인 구성 및 동작을 설명한다.
데이터베이스(140)는 페이지로 이루어진 데이터베이스(140) 파일을 저장한다.
메모리(130)는 적어도 하나의 명령어를 저장한다.
프로세서(110)는 데이터베이스(140) 및 메모리(130)와 연결된다. 프로세서(110)는, 적어도 하나의 명령어를 실행함으로써, 복구 대상인 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효하지 않은 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효하지 않은 슬롯 헤더를 무효화시키고, 상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행한다.
다양한 실시 예에 따르면, 프로세서(110)는 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제1 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단할 수 있다.
다양한 실시 예에 따르면, 프로세서(110)는 제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제2 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단할 수 있다.
다양한 실시 예에 따르면, 프로세서(110)는 복구 대상인 페이지가 마지막 페이지인지를 확인하고, 마지막 페이지가 아니면 다음 페이지로 이동할 수 있다.
상술한 본 발명의 실시 예들에 따른 슬로티드 페이지의 더블 헤더 로깅 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 본 발명의 실시 예들에 따른 슬로티드 페이지의 더블 헤더 로깅 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금, 복구 대상인 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효하지 않은 슬롯 헤더를 판단하고, 상기 판단 결과에 따라 유효하지 않은 슬롯 헤더를 무효화시키고, 상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체가 제공될 수 있다.
컴퓨터가 읽을 수 있는 기록 매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래시 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터로 판독 가능한 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
구체적으로, 설명된 특징들은 디지털 전자 회로, 또는 컴퓨터 하드웨어, 펌웨어, 또는 그들의 조합들 내에서 실행될 수 있다. 특징들은 예컨대, 프로그래밍 가능한 프로세서에 의한 실행을 위해, 기계 판독 가능한 저장 디바이스 내의 저장장치 내에서 구현되는 컴퓨터 프로그램 제품에서 실행될 수 있다. 그리고 특징들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 설명된 실시예들의 함수들을 수행하기 위한 지시어들의 프로그램을 실행하는 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 설명된 특징들은, 데이터 저장 시스템으로부터 데이터 및 지시어들을 수신하기 위해, 및 데이터 저장 시스템으로 데이터 및 지시어들을 전송하기 위해, 결합된 적어도 하나의 프로그래밍 가능한 프로세서, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍 가능한 시스템 상에서 실행될 수 있는 하나 이상의 컴퓨터 프로그램들 내에서 실행될 수 있다. 컴퓨터 프로그램은 소정 결과에 대해 특정 동작을 수행하기 위해 컴퓨터 내에서 직접 또는 간접적으로 사용될 수 있는 지시어들의 집합을 포함한다. 컴퓨터 프로그램은 컴파일된 또는 해석된 언어들을 포함하는 프로그래밍 언어 중 어느 형태로 쓰여지고, 모듈, 소자, 서브루틴(subroutine), 또는 다른 컴퓨터 환경에서 사용을 위해 적합한 다른 유닛으로서, 또는 독립 조작 가능한 프로그램으로서 포함하는 어느 형태로도 사용될 수 있다.
지시어들의 프로그램의 실행을 위한 적합한 프로세서들은, 예를 들어, 범용 및 특수 용도 마이크로프로세서들 둘 모두, 및 단독 프로세서 또는 다른 종류의 컴퓨터의 다중 프로세서들 중 하나를 포함한다. 또한 설명된 특징들을 구현하는 컴퓨터 프로그램 지시어들 및 데이터를 구현하기 적합한 저장 디바이스들은 예컨대, EPROM, EEPROM, 및 플래쉬 메모리 디바이스들과 같은 반도체 메모리 디바이스들, 내부 하드 디스크들 및 제거 가능한 디스크들과 같은 자기 디바이스들, 광자기 디스크들 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 비휘발성 메모리의 모든 형태들을 포함한다. 프로세서 및 메모리는 ASIC들(application-specific integrated circuits) 내에서 통합되거나 또는 ASIC들에 의해 추가될 수 있다.
이상에서 설명한 본 발명은 일련의 기능 블록들을 기초로 설명되고 있지만, 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
전술한 실시 예들의 조합은 전술한 실시 예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 전술한 실시예들 뿐 아니라 다양한 형태의 조합이 제공될 수 있다.
전술한 실시 예들에서, 방법들은 일련의 단계 또는 블록으로서 순서도를 기초로 설명되고 있으나, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
전술한 실시 예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.
100: 데이터베이스 장치
110: 프로세서
120: CPU 캐시
130: 메모리
140: 데이터베이스

Claims (26)

  1. 데이터베이스 장치에 의해 수행되는 슬로티드 페이지(Slotted page)의 로깅 방법에 있어서,
    슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하는 단계;
    상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하는 단계; 및
    상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함하고,
    상기 슬롯 헤더를 판단하는 단계는, 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 슬롯 헤더를 판단하는 단계는,
    제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제2 슬롯 헤더를 유효한 슬롯 헤더로 판단하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  4. 제1항에 있어서,
    상기 유효한 슬롯 헤더를 선택하는 단계는,
    상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  5. 제1항에 있어서,
    상기 유효한 슬롯 헤더를 선택하는 단계는,
    제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  6. 제1항에 있어서,
    상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 추가하고자 하는 데이터를 프리 스페이스에 저장하고, 상기 추가하고자 하는 데이터에 대한 데이터 정보를 상기 유효하지 않은 슬롯 헤더에 저장하는 단계를 더 포함하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  7. 데이터베이스 장치에 의해 수행되는 슬로티드 페이지의 로깅 방법에 있어서,
    슬롯 헤더(Slot header)를 선택하고자 하는 슬로티드 페이지를 제공하는 단계; 및
    상기 제공된 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함하되,
    상기 슬로티드 페이지에는 2개의 슬롯 헤더가 포함되고, 각 슬롯 헤더에 트랜잭션 아이디가 포함되고,
    상기 트랜잭션을 수행하는 단계는, 상기 제공된 페이지의 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  8. 제7항에 있어서,
    상기 트랜잭션을 수행하는 단계는,
    제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  9. 제7항에 있어서,
    상기 트랜잭션을 수행하는 단계는,
    제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  10. 제7항에 있어서,
    추가하고자 하는 데이터를 프리 스페이스에 저장하고, 상기 추가하고자 하는 데이터에 대한 데이터 정보를 유효하지 않은 슬롯 헤더로 판단된 슬롯 헤더에 저장하는 단계를 더 포함하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  11. 데이터베이스 장치에 의해 수행되는 슬로티드 페이지의 로깅 방법에 있어서,
    복구 대상인 페이지의 제1 슬롯 헤더(first slot header) 및 제2 슬롯 헤더(second slot header) 중에서 유효한 슬롯 헤더 및 유효하지 않은 슬롯 헤더를 판단하는 단계;
    상기 판단 결과에 따라 상기 복구 대상인 페이지를 상기 유효하지 않은 슬롯 헤더로부터 상기 유효한 슬롯 헤더로 되돌려서 상기 유효하지 않은 슬롯 헤더를 무효화시키는 단계; 및
    상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는 단계를 포함하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  12. 제11항에 있어서,
    상기 슬롯 헤더를 판단하는 단계는,
    제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제1 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  13. 제11항에 있어서,
    상기 슬롯 헤더를 판단하는 단계는,
    제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제2 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  14. 제11항에 있어서,
    복구 대상인 페이지가 마지막 페이지인지를 확인하고, 마지막 페이지가 아니면 다음 페이지로 이동하는 단계를 더 포함하는, 슬로티드 페이지의 더블 헤더 로깅 방법.
  15. 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치에 있어서,
    페이지로 이루어진 데이터베이스 파일을 저장하는 데이터베이스;
    적어도 하나의 명령어를 저장하는 메모리; 및
    상기 데이터베이스 및 상기 메모리와 연결되는 프로세서를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써,
    슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하되, 상기 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단하고,
    상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하고,
    상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는, 데이터베이스 장치.
  16. 삭제
  17. 제15항에 있어서,
    상기 프로세서는,
    제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제2 슬롯 헤더를 유효한 슬롯 헤더로 판단하는, 데이터베이스 장치.
  18. 제15항에 있어서,
    상기 프로세서는,
    상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 다른 슬롯 헤더를 유효한 슬롯 헤더로 선택하는, 데이터베이스 장치.
  19. 제15항에 있어서,
    상기 프로세서는,
    제1 슬롯 헤더 및 제2 슬롯 헤더가 유효한 슬롯 헤더로 판단되면, 제1 슬롯 헤더의 트랜잭션 아이디와 제2 슬롯 헤더의 트랜잭션 아이디 중에서 트랜잭션 아이디가 더욱 크거나 같은 슬롯 헤더를 유효한 슬롯 헤더로 선택하는, 데이터베이스 장치.
  20. 제15항에 있어서,
    상기 프로세서는,
    상기 판단 결과에서 어느 하나의 슬롯 헤더가 유효하지 않은 슬롯 헤더로 판단되면, 추가하고자 하는 데이터를 상기 데이터베이스의 프리 스페이스에 저장하고, 상기 추가하고자 하는 데이터에 대한 데이터 정보를 상기 유효하지 않은 슬롯 헤더에 저장하는, 데이터베이스 장치.
  21. 슬로티드 페이지의 더블 헤더 로깅을 위한 데이터베이스 장치에 있어서,
    페이지로 이루어진 데이터베이스 파일을 저장하는 데이터베이스;
    적어도 하나의 명령어를 저장하는 메모리; 및
    상기 데이터베이스 및 상기 메모리와 연결되는 프로세서를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써,
    복구 대상인 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더 및 유효하지 않은 슬롯 헤더를 판단하고,
    상기 판단 결과에 따라 상기 복구 대상인 페이지를 상기 유효하지 않은 슬롯 헤더로부터 상기 유효한 슬롯 헤더로 되돌려서 상기 유효하지 않은 슬롯 헤더를 무효화시키고,
    상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하는, 데이터베이스 장치.
  22. 제21항에 있어서,
    상기 프로세서는,
    제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제1 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단하는, 데이터베이스 장치.
  23. 제21항에 있어서,
    상기 프로세서는,
    제2 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터를 초과하면 제2 슬롯 헤더를 유효하지 않은 슬롯 헤더로 판단하는, 데이터베이스 장치.
  24. 제21항에 있어서,
    상기 프로세서는,
    복구 대상인 페이지가 마지막 페이지인지를 확인하고, 마지막 페이지가 아니면 다음 페이지로 이동하는, 데이터베이스 장치.
  25. 프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금,
    슬롯 헤더(Slot header)를 선택하고자 하는 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더를 판단하되, 상기 제1 슬롯 헤더의 트랜잭션 아이디가 파일 변환 카운터 이하이면 제1 슬롯 헤더를 유효한 슬롯 헤더로 판단하고,
    상기 판단 결과에 따라 유효한 슬롯 헤더를 선택하고,
    상기 선택된 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체.
  26. 프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금,
    복구 대상인 페이지의 제1 슬롯 헤더 및 제2 슬롯 헤더 중에서 유효한 슬롯 헤더 및 유효하지 않은 슬롯 헤더를 판단하고,
    상기 판단 결과에 따라 상기 복구 대상인 페이지를 상기 유효하지 않은 슬롯 헤더로부터 상기 유효한 슬롯 헤더로 되돌려서 상기 유효하지 않은 슬롯 헤더를 무효화시키고,
    상기 판단 결과에 따라 무효화되지 않고 유효한 슬롯 헤더를 기반으로 트랜잭션을 수행하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체.
KR1020180174053A 2018-12-31 2018-12-31 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치 KR102165860B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180174053A KR102165860B1 (ko) 2018-12-31 2018-12-31 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치
US16/729,539 US11442929B2 (en) 2018-12-31 2019-12-30 Double header logging of slotted page structures

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180174053A KR102165860B1 (ko) 2018-12-31 2018-12-31 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치

Publications (2)

Publication Number Publication Date
KR20200082949A KR20200082949A (ko) 2020-07-08
KR102165860B1 true KR102165860B1 (ko) 2020-10-14

Family

ID=71122888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180174053A KR102165860B1 (ko) 2018-12-31 2018-12-31 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치

Country Status (2)

Country Link
US (1) US11442929B2 (ko)
KR (1) KR102165860B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101221992B1 (ko) * 2011-04-26 2013-01-15 삼성탈레스 주식회사 데이터 로깅 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305421B2 (en) * 2001-07-16 2007-12-04 Sap Ag Parallelized redo-only logging and recovery for highly available main memory database systems
WO2014065879A1 (en) * 2012-10-22 2014-05-01 Venkatraman Iyer High performance interconnect physical layer
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
KR101946135B1 (ko) 2017-01-11 2019-02-08 울산과학기술원 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101221992B1 (ko) * 2011-04-26 2013-01-15 삼성탈레스 주식회사 데이터 로깅 장치

Also Published As

Publication number Publication date
KR20200082949A (ko) 2020-07-08
US11442929B2 (en) 2022-09-13
US20200210409A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
US8856469B2 (en) Apparatus and method for logging optimization using non-volatile memory
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
CN107787489B (zh) 包括层级的文件存储系统
US10877898B2 (en) Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
CN105009067B (zh) 管理对存储数据单元的操作
KR20210057835A (ko) 압축한 키-값 저장소 트리 데이터 블록 유출
US8825946B2 (en) Memory system and data writing method
US8370587B2 (en) Memory system storing updated status information and updated address translation information and managing method therefor
US11537582B2 (en) Data access method, a data access control device, and a data access system
KR102262409B1 (ko) 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법
CN106788468B (zh) 一种纠删码更新方法及装置,电子设备
CN112799595A (zh) 数据处理方法、设备及存储介质
US11194720B2 (en) Reducing index operations in a cache
CN115469818B (zh) 一种磁盘阵列写处理方法、装置、设备及介质
KR102165860B1 (ko) 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치
US20230142948A1 (en) Techniques for managing context information for a storage device
KR101946135B1 (ko) 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법
CN110737395A (zh) I/o管理方法、电子设备和计算机可读存储介质
CN114327252A (zh) 使用基于内容的块对齐实现基于块的存储系统中的数据简化
US7536507B1 (en) Methods, systems, and computer program products for preserving atomic writes using leaves and bitmaps
CN108984117B (zh) 一种数据读写方法、介质及设备
CN107506156B (zh) 一种块设备的io优化方法
CN111435331A (zh) 存储卷写数据方法、装置、电子设备及机器可读存储介质
JP2019045974A (ja) 情報処理装置、情報処理プログラム及び情報処理方法
KR101974731B1 (ko) 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant