KR101809679B1 - 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법 - Google Patents

데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법 Download PDF

Info

Publication number
KR101809679B1
KR101809679B1 KR1020160064990A KR20160064990A KR101809679B1 KR 101809679 B1 KR101809679 B1 KR 101809679B1 KR 1020160064990 A KR1020160064990 A KR 1020160064990A KR 20160064990 A KR20160064990 A KR 20160064990A KR 101809679 B1 KR101809679 B1 KR 101809679B1
Authority
KR
South Korea
Prior art keywords
log
compressed
volatile memory
page
database
Prior art date
Application number
KR1020160064990A
Other languages
English (en)
Other versions
KR20170133778A (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 KR1020160064990A priority Critical patent/KR101809679B1/ko
Publication of KR20170133778A publication Critical patent/KR20170133778A/ko
Application granted granted Critical
Publication of KR101809679B1 publication Critical patent/KR101809679B1/ko

Links

Images

Classifications

    • G06F17/30371
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • G06F17/30368
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

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

Abstract

본 발명은 비휘발성 메모리, 휘발성 메모리, 데이터베이스 및 비휘발성 메모리 기반 로그 선행 기입 프로그램이 저장된 스토리지 및 스토리지에 저장된 프로그램을 실행하는 프로세서를 포함하고, 프로세서는 프로그램의 실행에 따라, 휘발성 메모리에 저장된 복수의 페이지 중 데이터베이스에 대응하는 페이지가 변경되면, 변경된 페이지를 압축하고, 압축된 페이지를 비휘발성 메모리에 저장하며, 휘발성 메모리에 변경된 페이지에 대한 로그를 저장한다.

Description

데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법{APPARATUS AND METHOD FOR CONSISTENCY OF DATABASE}
본 발명은 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법에 관한 것이다.
컴퓨팅 장치에서 데이터베이스 시스템(database system; DBMS)은 사용자의 다양한 데이터를 저장하기 위하여 사용된다. 최근에는 데이터베이스 시스템은 스마트 폰 및 태블릿과 같은 모바일 컴퓨팅 환경의 애플리케이션(application)에서 사용되는 데이터를 관리하기 위하여 사용되고 있다.
데이터베이스 시스템은 일반적으로 비휘발성 메모리(Non-volatile memory; NVM)인 디스크(disk)에 데이터를 저장한다. 그리고 데이터베이스 시스템은 전체 데이터베이스 또는 전체 데이터베이스의 일부를 휘발성 메모리(volatile memory)인 메인 메모리(main memory)에 유지한다. 이때, 데이터베이스 시스템은 고정 길이인 페이지(page) 단위로 데이터를 저장하며, 입출력을 수행한다. 이때, 데이터베이스 시스템은 페이지 버퍼(page buffer) 관리자를 통하여, 메인 메모리에 유지되는 페이지를 관리할 수 있다.
페이지 버퍼 관리자의 버퍼 교체 알고리즘에 따라, 데이터베이스 시스템은 작업 중 수정된 페이지를 디스크에 저장할 수 있다. 이때, 데이터베이스 시스템은 수정이 완료되지 않은 트랜잭션(transaction)을 디스크에 저장할 수 있다. 그러므로 데이터베이스 시스템은 이러한 트랙잭션의 복구를 위하여, 취소(undo) 로그(log)를 저장할 수 있다.
또한, 데이터베이스 시스템은 커밋(commit)을 수행한 이후 커밋된 트랜잭션의 수정을 유지(durability)해야 한다. 이를 위하여, 데이터베이스 시스템은 재실행(redo) 로그를 저장할 수 있다.
데이터베이스 시스템은 취소 로그 및 재사용 로그와 같은 로그를 통하여, 데이터가 생성, 삭제 및 업데이트되는 모든 작업을 기록할 수 있다. 또한, 데이터베이스 시스템은 시스템 장애(system failure)가 발생하는 경우, 기록된 로그를 통하여 복구할 수 있다. 그러므로 데이터베이스 시스템은 데이터베이스의 일관성(consistency) 및 지속성(durability)의 유지를 위하여 안전하게 로그를 기록하는 것이 중요하다. 그러나 로그를 기록하는 로깅(logging) 작업은 데이터베이스 시스템이 최대한 안전하게 로그를 기록하기 때문에 오버 헤드가 클 수 있다.
특히, 컴퓨팅 자원이 제한적인 모바일 컴퓨팅 환경에서는 대량의 데이터가 변경되는 경우, 로깅의 오버 헤드가 더욱 커질 수 있다. 그러므로 모바일 컴퓨팅 장치에서는 효율적인 데이터베이스 시스템의 로깅 방법이 필요하다.
이와 관련되어, 한국 등록특허공보 제10-1419428호(발명의 명칭: "모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법")는 트랜잭션의 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 만족하게 하는 로깅 및 회복 기술에 관한 것으로, 특히 컴퓨팅 자원이 제한적인 모바일 환경에서 대량의 데이터베이스 변경으로 구성된 복합 트랜잭션 처리 시 로깅에 따른 처리 속도 및 저장 용량 관점의 효율성을 높일 수 있는 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법을 개시하고 있다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 비휘발성 메모리 및 휘발성 메모리를 이용하며, 바이트 단위로 로그를 저장하고, 재사용 로그의 압축을 통하여, 데이터의 일관성을 유지할 수 있는 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법을 제공한다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치는 비휘발성 메모리, 휘발성 메모리, 데이터베이스 및 비휘발성 메모리 기반 로그 선행 기입 프로그램이 저장된 스토리지 및 스토리지에 저장된 프로그램을 실행하는 프로세서를 포함하고, 프로세서는 프로그램의 실행에 따라, 휘발성 메모리에 저장된 복수의 페이지 중 데이터베이스에 대응하는 페이지가 변경되면, 변경된 페이지를 압축하고, 압축된 페이지를 비휘발성 메모리에 저장하며, 휘발성 메모리에 변경된 페이지에 대한 로그를 저장한다.
또한, 본 발명의 제 2 측면에 따른 컴퓨팅 장치에서의 데이터베이스 일관성 유지 방법에 있어서, 휘발성 메모리에 저장된 복수의 페이지 중 데이터베이스에 대응하는 페이지가 변경되면, 변경된 페이지를 압축하는 단계; 압축된 페이지를 비휘발성 메모리에 저장하는 단계; 및 휘발성 메모리에 변경된 페이지에 대한 로그를 저장하는 단계를 포함한다.
본 발명은 종래의 로그 선행 기입 모드를 확장한 비휘발성 메모리 기반의 로그 선행 기입 모드를 제공한다. 그러므로 본 발명은 바이트 단위 쓰기 및 순차적인 쓰기 패턴을 사용할 수 있으므로 성능을 향상시킬 수 있으며, 입출력 횟수가 제한된 비휘발성 메모리의 수명을 증가시킬 수 있다.
본 발명은 압축 로그 선행 기입 파일을 이용하므로, 스토리지의 입출력 요구를 줄일 수 있으며, 오버헤드를 최소화할 수 있다. 그러므로 본 발명은 효율적으로 데이터베이스의 일관성 및 지속성을 유지할 수 있다.
도 1은 종래의 롤백 저널모드의 수행 과정에 대한 예시도이다.
도 2는 종래의 로그 선행 기입 모드의 수행 과정에 대한 예시도이다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 기반 로그 선행 기입을 위한 컴퓨팅 장치의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 메모리 구조의 예시도이다.
도 5는 본 발명의 일 실시예에 따른 압축 로그 선행 기입 파일 및 비압축 로그 선행 기입 파일의 예시도이다.
도 6은 본 발명의 일 실시예에 따른 컴퓨팅 장치에서의 데이터베이스의 일관성 유지 방법의 순서도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
다음은 도 1 및 도 2를 참조하여, 일반적인 데이터베이스의 일관성 유지 방법을 설명한다.
SQLite는 모바일 환경에서 사용되는 대표적인 데이터베이스이다. SQLite는 스마트 폰 및 태블릿과 같은 모바일 환경에서 사용되는 대부분의 애플리케이션에서 데이터를 저장하고 관리하기 위해서 사용된다.
SQLite는 애플리케이션의 데이터베이스와 로그를 관리하기 위하여, 롤백 저널(roll-back journal; RBJ)과 로그 선행 기입(write-ahead logging; WAL) 모드를 포함하는 파일 시스템(file system)을 사용한다. 이를 통하여, SQLite는 시스템 장애가 발생하는 경우, 데이터베이스의 일관성 및 내구성을 보장할 수 있다.
롤백 저널 모드는 MEMORY, DELETE, TRUNCATE 및 PERSIST 모드를 포함한다.
MEMORY 모드는 동적 임의 접근 메모리(dynamic random access memory; DRAM)와 같은 휘발성 메모리에 저널 파일(journal file)을 유지하는 것이다. 그러므로 MEMORY 모드는 드물게 사용된다. MEMORY 모드는 고성능을 보장하지만, 데이터 일관성 및 내구성을 고려하지 않는다.
PERSIST 모드는 SQLite의 기본 트랜잭션 모드이다. PERSIST 모드는 롤백 저널 모드에서 데이터베이스의 일관성을 유지하기 위하여, 모바일 스토리지에 대한 입출력 요청이 자주 발생된다. 그러므로 PERSIST 모드는 일반적으로 MEMORY 모드에 비하여, 오버 헤드가 클 수 있다. 이는 PERSIST 모드 외에 TRUNCATE 및 PERSIST 모드에도 해당되는 것이다.
SQLite에서 롤백 저널 과정은 1) 저널 기록 단계, 2) 데이터베이스 기록 단계 및 3) 저널 리셋 단계로 구성된다. 그리고 트랜잭션의 원자성(atomicity)을 보존하기 위하여, SQLite는 각 단계가 완료된 이후, 동기화를 위한 시스템 호출을 수행한다. 이때, 동기화를 위한 시스템 호출은 "fsync()" 또는 "fdatasync()"가 될 수 있다.
도 1은 종래의 롤백 저널모드의 수행 과정에 대한 예시도이다.
도 1을 참조하면, 새로운 트랜잭션에 대하여, 첫 번째 단계는 저널 파일을 생성한다. 그리고 첫 번째 단계는 취소(UNDO) 트랜잭션을 위하여, 저널 파일에 저널 헤더를 업데이트 하여, 데이터베이스 페이지의 이전 콘텐츠를 기록한다.
두 번째 단계는 데이터베이스 파일에 새로운 콘텐츠를 기록한다.
그리고 마지막 단계에서는 재사용을 위하여 저널 파일을 리셋하거나, 롤백 저널 모드에 따라 저널 파일을 삭제한다.
DELETE 모드는 트랜잭션이 끝날 때마다 항상 저널 파일을 삭제한다. DELETE 모드는 inode 및 데이터 블록과 같은 새로운 저널 파일을 생성하기 위하여, 스토리지에 대한 지속적인 입출력 요청을 수행한다. 그러므로 DELETE 모드는 롤백 저널 모드에서 최악의 성능을 가질 수 있다.
파일 생성 시에 발생할 수 있는 성능 저하를 해결하기 위하여, TRUNCATE 모드는 저널 리셋 단계에서 마지막 저널 파일을 절단하고, 다음 트랜잭션을 위하여 절단된 마지막 저널 파일을 재사용한다. TRUNCATE 모드는 입출력 요청에 따른 저장의 수를 줄일 수 있지만, 저널 파일을 작성하기 위하여 새로운 데이터 블록을 할당해야 한다.
PERSIST 모드는 트랜잭션이 완료되면, 마지막 저널 파일의 콘텐츠를 단순히 0으로 변경한다. 그러므로 PERSIST 모드는 저널 파일의 새로운 데이터 블록을 사용할 때, 이전에 할당되어, 0으로 변경된 데이터 블록을 다시 사용될 수 있다. 그러므로 PERSIST 모드는 DELETE 모드 및 TRUNCATE 모드를 사용하는 것 보다 더 효율적이다.
도 2는 종래의 로그 선행 기입 모드의 수행 과정에 대한 예시도이다.
한편, 롤백 저널 모드와 달리 로그 선행 기입 모드는 데이터베이스의 원래 콘텐츠를 유지하게 된다. 단, 로그 선행 기입 모드는 재실행(REDO) 트랜잭션에 대한 별도의 로그로 로그 선행 기입(write-ahead logging; WAL) 파일의 페이지에 새로운 콘텐츠를 추가하게 된다. 이때, 체크 포인트(check point)는 로그 선행 기입 파일 또는 로그 선행 기입 파일의 닫기 작업에 대한 사전 정의된 임계 값에 의하여 트리거(trigger)된다.
특히, 로그 선행 기입 모드는 롤백 저널 모드에 비하여, 체크 포인트가 트리거 될 때까지 데이터베이스의 업데이트를 지연시킬 수 있다. 그러므로 로그 선행 기입 모드는 스토리지의 입출력 요청의 수를 줄일 수 있다. 또한, 로그 선행 기입 모드는 해당 페이지를 다시 기록할 때, 로그 선행 기입 파일별로 로그가 무효가 될 수 있기 때문에 해당 입출력 요청을 제거할 수 있다.
다음은 도 3 내지 도 5를 참조하여, 본 발명의 일 실시예에 따른 비휘발성 메모리 기반 로그 선행 기입을 위한 컴퓨팅 장치를 설명한다.
도 3은 본 발명의 일 실시예에 따른 컴퓨팅 장치(300)의 블록도이다.
본 발명의 일 실시예에 따른 컴퓨팅 장치(300)는 데이터베이스(350)의 일관성 및 지속성을 유지하고, 비휘발성 메모리(320)의 내구성을 보장한다. 이때, 컴퓨팅 장치(300)는 모바일 단말일 수 있으나, 이에 한정된 것은 아니다.
컴퓨팅 장치(300)는 휘발성 메모리(310), 비휘발성 메모리(320) 및 프로세서(340)를 포함한다. 또한, 컴퓨팅 장치(300)는 데이터베이스(350)가 저장되는 스토리지(330)를 포함할 수 있다.
이때, 휘발성 메모리(310) 및 비휘발성 메모리(320)는 일반적인 컴퓨팅 장치의 메인 메모리를 대신하는 것일 수 있다. 또한, 휘발성 메모리(310) 및 비휘발성 메모리(320)는 하이브리드 메모리 구조(hybrid memory architecture)에 기초한 하이브리드 메모리(hybrid memory)일 수 있으나, 이에 한정되는 것은 아니다.
또한, 휘발성 메모리(310)는 저장된 정보를 유지하기 위하여 전력이 필요한 메모리이며, 비휘발성 메모리(320)는 전원이 공급되지 않아도 저장된 정보를 계속 유지할 수 있는 메모리이다.
비휘발성 메모리(320)는 지속적인 전원 공급 없이 저장된 데이터를 유지할 수 있으나, 쓰기 횟수가 제한될 수 있다. 예를 들어, 비휘발성 메모리(320)는 저항변환 메모리(resistance random access memory; reRAM), 상변화메모리(phase change random access memory; PRAM), 폴리머 메모리(polymer random access memory) 및 스핀주입자화반전 메모리(spin-transoer torque magnetic random access memory; STT-RAM)일 수 있으나, 이에 한정된 것은 아니다.
휘발성 메모리(310)는 빠른 읽기 및 쓰기 속도를 가질 수 있다. 또한, 휘발성 메모리(310)는 쓰기의 횟수가 제한적인 비휘발성 메모리(320)와 달리, 무한한 쓰기 횟수를 제공한다. 그러나 휘발성 메모리(310)는 저장된 데이터를 유지하기 위하여 지속적인 전원 공급이 필요하다. 예를 들어, 휘발성 메모리(310)는 동적 임의 접근 메모리일 수 있다.
또한, 스토리지(330)는 데이터베이스(350) 및 비휘발성 메모리 기반 로그 선행 기입 프로그램을 저장한다. 이때, 스토리지(330)는 하나의 스토리지(330)로 데이터베이스(350) 및 비휘발성 메모리 기반 로그 선행 기입 프로그램을 저장할 수 있다. 또는 스토리지(330)는 복수의 스토리지(330)를 포함하고, 데이터베이스(350) 및 비휘발성 메모리 기반 로그 선행 기입 프로그램이 각각 저장된 것일 수 있다. 또한, 스토리지(330)는 앞에서 설명한 휘발성 메모리(310) 및 비휘발성 메모리(320)에 비하여 저장 용량이 큰 저장 매체일 수 있다.
또한, 스토리지(330)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 비휘발성 저장장치 및 저장된 정보를 유지하기 위하여 전력이 필요한 휘발성 저장장치를 통칭하는 것이다. 예를 들어, 스토리지(330)는 솔리드 스테이트 드라이버(solid state driver) 및 하드디스크 드라이버(hard disk driver) 등과 같은 저장장치(storage device)이거나, 시큐어 디지털 카드(secure digital card; SD card) 및 콤팩트 플래시(compact flash; CF) 등과 같은 비휘발성 메모리(320) 일 수 있으나, 이에 한정된 것은 아니다.
그리고 데이터베이스(350)는 컴퓨팅 장치(300)에서 생성되거나 사용하는 데이터 또는 컴퓨팅 장치(300)를 사용하는 사용자의 데이터를 저장할 수 있다. 예를 들어, 컴퓨팅 장치(300)가 모바일 단말인 경우, 데이터베이스(350)는 SQLite일 수 있다.
프로세서(340)는 비휘발성 메모리 기반 로그 선행 기입 프로그램의 실행에 따라, 휘발성 메모리(330)에 저장된 복수의 페이지 중 데이터베이스(350)에 대응하는 페이지가 변경되면, 변경된 페이지를 압축한다.
그리고 프로세서(340)는 압축된 페이지를 비휘발성 메모리(320)에 저장한다. 프로세서(340)는 휘발성 메모리(330)에 변경된 페이지에 대응하는 로그를 저장한다.
이때, 프로세서(340)는 종래의 로그 선행 기입 모드를 확장한 비휘발성 메모리 기반 로그 선행 기입 모드를 사용할 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 구조의 예시도이다.
도 4를 참조하면, 프로세서(340)는 비휘발성 메모리(320)에 압축 로그 선행 기입 파일(440)을 저장할 수 있다. 또한, 프로세서(340)는 휘발성 메모리(310)에 비압축 로그 선행 기입 파일(430)을 저장할 수 있다.
즉, 프로세서(340)는 SQLite에서 변경된 페이지(Pager, 410)의 캐시를 압축하여, 비휘발성 메모리(320)에 포함된 압축 로그 선행 기입 파일(440)에 저장할 수 있다. 또한, 휘발성 메모리(310)에 저장되는 비압축 로그 선행 기입 파일(430)은 비휘발성 메모리(320)에 저장된 압축 로그 선행 기입 파일(440)에 대한 보조 로그 선행 기입 파일이 될 수 있다. 압축 로그 선행 기입 파일(440) 및 비압축 로그 선행 기입 파일(430)은 도 5를 참조하여, 상세하게 설명한다.
도 5는 본 발명의 일 실시예에 따른 압축 로그 선행 기입 파일(440) 및 비압축 로그 선행 기입 파일(430)의 예시도이다.
도 5의 (a)를 참조하면, 압축 로그 선행 기입 파일(440)은 로그 선행 기입 헤더(WAL header; WH) 및 하나 이상의 재실행 로그(redo log)를 포함할 수 있다.
로그 선행 기입 헤더는 매직 넘버(magic number), 파일 유형의 정보 및 데이터베이스(350) 페이지 크기 등과 같은 정보를 포함할 수 있다.
또한, 재실행 로그는 트랜잭션을 처리하는 기본 단위이다. 이때, 하나 이상의 재실행 로그는 각각 하나의 프레임 헤더(frame header; FH), 압축 로그 선행 기입 파일(440) 및 압축 로그 선행 기입 파일(440)의 크기를 포함할 수 있다. 프레임 헤더는 로그의 메타데이터를 포함할 수 있다. 예를 들어, 프레임 헤더는 페이지 번호 및 체크 섬(checksum)을 포함할 수 있다.
도 5의 (b)를 참조하면, 비압축 로그 선행 기입 파일(430)은 로그 선행 기입 헤더(WH) 및 하나 이상의 재실행 로그를 포함할 수 있다.
비압축 로그 선행 기입 파일(430)에서 재실행 로그는 압축 로그 선행 기입 파일(440)의 재실행 로그와 상이한 것이다. 그러므로 비압축 로그 선행 기입 파일(430)에서 재실행 로그는 프레임 헤더 및 로그 선행 기입 프레임을 포함할 수 있다. 프레임 헤더는 앞에서 설명한 바와 같이, 로그의 메타 데이터(meta-data)를 포함할 수 있다.
도 5를 참조하면, 압축된 로그의 크기는 로그 파일의 크기에 따라 변할 수 있다. 그러므로 압축 로그 선행 기입 파일(440)의 재실행 로그는 크기가 가변일 수 있다. 그러나 비압축 로그 선행 기입 파일(430)의 재실행 로그는 24byte의 프레임 헤더 및 4,096 byte의 로그 선행 기입 프레임을 포함하는 것으로 크기가 고정이 될 수 있다.
한편, 프로세서(340)는 2단계로 비휘발성 메모리 기반 로그 선행 기입 모드를 수행할 수 있다.
예를 들어, 첫 번째 단계에서 프로세서(340)는 압축 로그 선행 기입 파일(440)에 변경된 페이지를 기록할 수 있다. 첫 번째 단계는 애플리케이션 레벨에서 일관성 및 내구성을 모두 보장하기 위하여 수행되는 것 일 수 있다.
이를 위하여, 프로세서(340)는 데이터베이스(350)의 임의의 페이지가 업데이트 되면 비휘발성 메모리(320)에 압축 로그 선행 기입 파일(440)이 존재하는지 여부를 확인할 수 있다. 그리고 비휘발성 메모리(320)에 압축 로그 선행 기입 파일(440)이 없는 경우, 프로세서(340)는 새로운 압축 로그 선행 기입 파일(440)을 생성할 수 있다. 프로세서(340)는 생성된 압축 로그 선행 기입 파일(440)에 로그 선행 기입 헤더를 추가할 수 있다. 만약, 압축 로그 선행 기입 파일(440)이 존재하는 경우, 프로세서(340)는 기 생성된 압축 로그 선행 기입 파일(440)을 사용할 수 있다.
프로세서(340)는 변경된 페이지를 재실행하기 위하여, 해당 변경된 페이지에 대응하는 재사용 로그를 압축할 수 있다. 그리고 프로세서(340)는 압축된 재사용 로그 및 재사용 로그에 대응하는 메타 데이터를 포함하는 프레임 헤더를 압축 로그 선행 기입 파일(440)에 추가할 수 있다. 이때, 압축 로그 선행 기입 파일(440)에 기저장된 재사용 로그가 존재하는 경우, 프로세서(340)는 가장 최근에 저장된 압축된 재사용 로그 다음에 해당 압축된 재사용 로그에 대한 프레임 헤더, 압축된 재사용 로그 및 압축된 재사용 로그의 크기를 저장할 수 있다.
두 번째 단계에서 프로세서(340)는 휘발성 메모리(310)의 비압축 로그 선행 기입 파일(430)에 변경된 페이지를 기록할 수 있다. 이러한 과정은 체크포인트 절차를 단순화하기 위하여 수행되는 것일 수 있다. 이때, 프로세서(340)는 종래의 로그 선행 기입 모드의 저널링 방법과 유사한 과정을 따를 수 있다.
앞에서 설명한 두 단계를 마무리한 이후, 프로세서(340)는 휘발성 메모리(310)에 저장된 비압축 로그 선행 기입 파일(430)을 이용하여 입출력 요청을 수행하는 것을 통하여, 재사용 로그에 접근할 수 있다. 특히, 체크포인트가 트리거 될 때, 프로세서(340)는 휘발성 메모리(310)에 저장된 비압축 로그 선행 기입 파일(430)의 로그를 읽을 수 있다. 그러므로 프로세서(340)는 시스템 장애가 발생하지 않는 경우, 비휘발성 메모리(320)에 저장된 압축 로그 선행 기입 파일(440)이 아닌 휘발성 메모리(310)에 저장된 비압축 로그 선행 기입 파일(430)을 사용할 수 있다.
한편, 시스템 장애가 발생하면, 프로세서(340)는 비휘발성 메모리(320)의 압축 로그 선행 기입 파일(440)에 저장된 재사용 로그를 사용할 수 있다.
구체적으로 프로세서(340)는 압축 로그 선행 기입 파일(440)에 포함된 복구 정보에 기초하여 데이터 불일치 여부를 감지할 수 있다. 이때, 프로세서(340)는 단순히 압축 로그 선행 기입 파일(440)을 확인하여 데이터 불일치를 감지할 수 있다.
압축 로그 선행 기입 파일(440)에 포함된 복구 정보는 체크포인트 번호, 취소(abort) 기록 및 커밋(commit) 기록 등이 될 수 있다. 이러한 압축 로그 선행 기입 파일(440)에 포함된 복구 정보는 프레임 헤더에 포함된 메타데이터가 될 수 있다. 또는 압축 로그 선행 기입 파일(440)에 포함된 복구 정보는 재사용 로그에 포함된 정보일 수 있다.
예를 들어, 각 트랜잭션의 종료된 이후 커밋 기록이 존재하나, 압축 로그 선행 기입 파일(440)의 마지막에 저장된 기록에 커밋 기록이 없는 경우, 프로세서(340)는 복구 절차를 수행할 수 있다.
프로세서(340)는 먼저 압축 로그 선행 기입 파일(440)에서 압축된 로그의 압축을 해제할 수 있다. 그리고 프로세서(340)는 압축이 해제된 압축 로그 선행 기입 파일(440)에 기초하여, 휘발성 메모리(310)의 비압축 로그 선행 기입 파일(430)을 복구할 수 있다. 이와 같이, 프로세서(340)는 시스템 장애가 발생하면, 압축 로그 선행 기입 파일(440)에 기초하여, 간단하게 시스템 복구를 수행할 수 있다.
다음은 도 6에 기초하여, 본 발명의 일 실시예에 따른 컴퓨팅 장치(300)에서의 데이터베이스(350)의 일관성 유지 방법을 설명한다.
컴퓨팅 장치(300)는 휘발성 메모리에 저장된 복수의 페이지 중 데이터베이스에 대응하는 페이지가 변경되면, 변경된 페이지를 압축한다(S600). 이때, 데이터베이스(350)는 SQLite 일 수 있다.
컴퓨팅 장치(300)는 압축된 페이지를 비휘발성 메모리(320)에 저장한다(S610). 이때, 컴퓨팅 장치(300)는 압축된 페이지를 비휘발성 메모리(320)에 포함된 압축 로그 선행 기입 파일(440)에 저장할 수 있다. 또한, 압축된 페이지는 바이트 단위로 비휘발성 메모리(320)에 저장될 수 있다.
그리고 컴퓨팅 장치(300)는 휘발성 메모리에 변경된 페이지에 대한 로그를 저장한다(S620). 이때, 컴퓨팅 장치(300)는 변경된 페이지에 대한 로그를 휘발성 메모리(310)에 포함된 비압축 로그 선행 기입 파일(430)에 저장할 수 있다.
한편, 컴퓨팅 장치(300)는 데이터베이스(350)에 대응하여 변경된 페이지에 대한 로그를 저장한 이후에, 데이터베이스(350)에 대응하는 시스템 장애가 발생하면, 압축 로그 선행 기입 파일(440)에 기초하여, 복구할 수 있다.
구체적으로 컴퓨팅 장치(300)는 압축 로그 선행 기입 파일(440)의 압축을 해제할 수 있다. 그리고 컴퓨팅 장치(300)는 압축이 해제된 압축 로그 선행 기입 파일(440)에 기초하여, 비압축 로그 선행 기입 파일(430)을 복구할 수 있다.
본 발명의 일 실시예에 따른 데이터베이스(350)의 일관성 유지를 위한 컴퓨팅 장치(300) 및 방법은 종래의 로그 선행 기입 모드를 확장한 비휘발성 메모리(320) 기반의 로그 선행 기입 모드를 제공한다. 그러므로 데이터베이스(350)의 일관성 유지를 위한 컴퓨팅 장치(300) 및 방법은 바이트 단위 쓰기 및 순차적인 쓰기 패턴을 사용할 수 있으므로, 성능을 향상시킬 수 있으며, 입출력 횟수가 제한된 비휘발성 메모리(320)의 수명을 증가시킬 수 있다.
또한, 데이터베이스(350)의 일관성 유지를 위한 컴퓨팅 장치(300) 및 방법은 압축 로그 선행 기입 파일(440)을 이용하므로, 스토리지(330)의 입출력 요구를 줄일 수 있으며, 오버헤드를 최소화할 수 있다. 그러므로 본 발명은 데이터베이스(350)의 일관성 유지를 위한 컴퓨팅 장치(300) 및 방법은 효율적으로 데이터베이스(350)의 일관성 및 지속성을 유지할 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
300: 컴퓨팅 장치
310: 휘발성 메모리
320: 비휘발성 메모리
330: 스토리지
340: 프로세서
350: 데이터베이스

Claims (16)

  1. 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치에 있어서,
    비휘발성 메모리,
    휘발성 메모리,
    데이터베이스 및 비휘발성 메모리 기반 로그 선행 기입 프로그램이 저장된 스토리지 및
    상기 스토리지에 저장된 프로그램을 실행하는 프로세서를 포함하고,
    상기 프로세서는 상기 프로그램의 실행에 따라, 상기 휘발성 메모리에 저장된 복수의 페이지 중 상기 데이터베이스에 대응하는 페이지가 변경되면, 상기 변경된 페이지를 압축하고, 상기 압축된 페이지를 상기 비휘발성 메모리에 저장하며,
    상기 휘발성 메모리에 상기 변경된 페이지에 대한 로그를 저장하는, 컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는 상기 압축된 페이지를 상기 비휘발성 메모리에 포함된 압축 로그 선행 기입 파일에 저장하고,
    상기 변경된 페이지에 대응하는 로그를 상기 휘발성 메모리에 포함된 비압축 로그 선행 기입 파일에 저장하는, 컴퓨팅 장치.
  3. 제 2 항에 있어서,
    상기 프로세서는 상기 데이터베이스에 대응하는 페이지가 변경되면, 상기 압축 로그 선행 기입 파일의 존재 여부를 확인하고, 상기 압축 로그 선행 기입 파일이 존재하지 않는 경우, 상기 비휘발성 메모리에 압축 로그 선행 기입 파일을 생성하고, 상기 생성된 압축 로그 선행 기입 파일에 상기 압축된 페이지를 저장하는, 컴퓨팅 장치.
  4. 제 2 항에 있어서,
    상기 압축 로그 선행 기입 파일은 로그 선행 기입 헤더 및 하나 이상의 재실행(redo) 로그를 포함하고,
    상기 하나 이상의 재실행(redo) 로그는 각각 프레임 헤더, 압축된 로그 및 압축된 로그에 대한 크기를 포함하는, 컴퓨팅 장치.
  5. 제 4 항에 있어서,
    상기 재실행 로그는 크기가 가변인, 컴퓨팅 장치.
  6. 제 2 항에 있어서,
    상기 로그 선행 기입 파일은 로그 선행 기입 헤더 및 하나 이상의 재실행(redo) 로그를 포함하고,
    상기 하나 이상의 재실행(redo) 로그는 프레임 헤더 및 로그 선행 기입 프레임을 포함하는, 컴퓨팅 장치.
  7. 제 6 항에 있어서,
    상기 재실행 로그는 크기가 고정인, 컴퓨팅 장치.
  8. 제 1 항에 있어서,
    상기 프로세서는 상기 데이터베이스에 대응하는 시스템 장애가 발생하면, 압축 로그 선행 기입 파일의 압축을 해제하고, 상기 압축이 해제된 압축 로그 선행 기입 파일에 기초하여, 상기 로그 선행 기입 파일을 복구하는, 컴퓨팅 장치.
  9. 제 1 항에 있어서,
    상기 프로세서는 상기 압축된 페이지를 바이트 단위로 상기 비휘발성 메모리에 저장하는 것인, 컴퓨팅 장치.
  10. 제 1 항에 있어서,
    상기 데이터베이스는 SQLite인, 컴퓨팅 장치.
  11. 컴퓨팅 장치에서의 데이터베이스 일관성 유지 방법에 있어서,
    휘발성 메모리에 저장된 복수의 페이지 중 데이터베이스에 대응하는 페이지가 변경되면, 상기 변경된 페이지를 압축하는 단계;
    상기 압축된 페이지를 비휘발성 메모리에 저장하는 단계; 및
    상기 휘발성 메모리에 상기 변경된 페이지에 대한 로그를 저장하는 단계를 포함하는, 데이터베이스 일관성 유지 방법.
  12. 제 11 항에 있어서,
    상기 압축된 페이지를 비휘발성 메모리에 저장하는 단계는,
    상기 압축된 페이지를 상기 비휘발성 메모리에 포함된 압축 로그 선행 기입 파일에 저장하는 것이며,
    상기 휘발성 메모리에 상기 변경된 페이지에 대한 로그를 저장하는 단계는,
    상기 변경된 페이지에 대한 로그를 상기 휘발성 메모리에 포함된 비압축 로그 선행 기입 파일에 저장하는 것인, 데이터베이스 일관성 유지 방법.
  13. 제 12 항에 있어서,
    상기 휘발성 메모리에 상기 변경된 페이지에 대한 로그를 저장하는 단계 이후에,
    상기 데이터베이스에 대응하는 시스템 장애가 발생하면, 상기 압축 로그 선행 기입 파일의 압축을 해제하는 단계; 및
    상기 압축이 해제된 압축 로그 선행 기입 파일에 기초하여, 상기 비압축 로그 선행 기입 파일을 복구하는 단계를 더 포함하는, 데이터베이스 일관성 유지 방법.
  14. 제 11 항에 있어서,
    상기 압축된 페이지를 비휘발성 메모리에 저장하는 단계는,
    상기 압축된 페이지를 바이트 단위로 상기 비휘발성 메모리에 저장하는 것인, 데이터베이스 일관성 유지 방법.
  15. 제 11 항에 있어서,
    상기 데이터베이스는 SQLite인, 데이터베이스 일관성 유지 방법.
  16. 제 11 항 내지 제 15 항 중 어느 한 항에 기재된 방법을 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020160064990A 2016-05-26 2016-05-26 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법 KR101809679B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160064990A KR101809679B1 (ko) 2016-05-26 2016-05-26 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160064990A KR101809679B1 (ko) 2016-05-26 2016-05-26 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170133778A KR20170133778A (ko) 2017-12-06
KR101809679B1 true KR101809679B1 (ko) 2017-12-15

Family

ID=60922623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160064990A KR101809679B1 (ko) 2016-05-26 2016-05-26 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101809679B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101541532B1 (ko) 2014-09-17 2015-08-06 성균관대학교산학협력단 스토리지 클래스 메모리의 데이터 일관성 유지를 위한 장치 및 방법
US20150317231A1 (en) 2010-03-31 2015-11-05 Cloudera, Inc. Collecting and aggregating log data with fault tolerance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150317231A1 (en) 2010-03-31 2015-11-05 Cloudera, Inc. Collecting and aggregating log data with fault tolerance
KR101541532B1 (ko) 2014-09-17 2015-08-06 성균관대학교산학협력단 스토리지 클래스 메모리의 데이터 일관성 유지를 위한 장치 및 방법

Also Published As

Publication number Publication date
KR20170133778A (ko) 2017-12-06

Similar Documents

Publication Publication Date Title
US10437662B2 (en) Crash recovery using non-volatile memory
US10936441B2 (en) Write-ahead style logging in a persistent memory device
EP2590086B1 (en) Columnar database using virtual file data objects
US9842128B2 (en) Systems and methods for atomic storage operations
US10019320B2 (en) Systems and methods for distributed atomic storage operations
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
EP1503290B1 (en) Transaction consistent copy-on-write database
US11487706B2 (en) System and method for lazy snapshots for storage cluster with delta log based architecture
EP2590078B1 (en) Shadow paging based log segment directory
US9146928B1 (en) Techniques for storing metadata of a filesystem in persistent memory
US20220382651A1 (en) Fast recovery and replication of key-value stores
KR102262409B1 (ko) 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법
CN102541691B (zh) 面向内存数据库oltp应用的日志检查点恢复方法
US11204912B2 (en) Commit coalescing for micro-journal based transaction logging
KR101674176B1 (ko) 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법
US10528436B2 (en) Micro-journal based transaction logging
US9594635B2 (en) Systems and methods for sequential resilvering
CN116595012B (zh) 一种基于非易失内存的时序数据库日志存储方法及系统
KR101809679B1 (ko) 데이터베이스의 일관성 유지를 위한 컴퓨팅 장치 및 방법
Kang et al. S-WAL: Fast and efficient write-ahead logging for mobile devices
Kang et al. LDJ: Version consistency is almost free on commercial storage devices

Legal Events

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