KR101797482B1 - 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램 - Google Patents

데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램 Download PDF

Info

Publication number
KR101797482B1
KR101797482B1 KR1020160049366A KR20160049366A KR101797482B1 KR 101797482 B1 KR101797482 B1 KR 101797482B1 KR 1020160049366 A KR1020160049366 A KR 1020160049366A KR 20160049366 A KR20160049366 A KR 20160049366A KR 101797482 B1 KR101797482 B1 KR 101797482B1
Authority
KR
South Korea
Prior art keywords
recovery
block
node
candidate block
master node
Prior art date
Application number
KR1020160049366A
Other languages
English (en)
Other versions
KR20170120889A (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 KR1020160049366A priority Critical patent/KR101797482B1/ko
Priority to US15/168,782 priority patent/US10452492B2/en
Publication of KR20170120889A publication Critical patent/KR20170120889A/ko
Application granted granted Critical
Publication of KR101797482B1 publication Critical patent/KR101797482B1/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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • 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/21Design, administration or maintenance of databases
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • G06F17/30185
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

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

Abstract

데이터베이스 시스템에서 블록을 복구하는 방법이 제공 된다. 데이터베이스 블록을 복구(recovery)하는 방법에 있어서, 영구 저장 매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하는 단계; 상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하는 단계; 및 상기 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록의 복구가 상기 적어도 하나의 복구 대상 블록 각각의 프록시 노드에 의해 병렬적으로 수행되도록 허용하기 위하여, 상기 로그 데이터를 재판독 하는 단계―상기 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록은 상기 적어도 하나의 복구 후보 블록들 각각의 마스터 노드에 의해 결정됨―; 를 포함하는, 데이터베이스 블록 복구 방법이 제공된다.

Description

데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램{METHOD, APPARATUS, AND COMPUTER PROGRAM STORED IN COMPUTER READABLE MEDIUM FOR RECOVERYING BLOCK IN DATABASE SYSTEM}
본 발명은 데이터베이스 시스템에서의 데이터 복구 방법에 대한 것으로, 특히 영구 저장 매체에 저장된 데이터를 효율적으로 복구하기 위한 것이다.
데이터베이스 시스템은 데이터를 수집, 저장, 관리, 분석할 수 있다. 최근에는 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 빅데이터 처리 등 대용량 데이터베이스 시스템에 대한 기술이 발전하고 있다.
데이터베이스 시스템은 데이터베이스 작업(operation)을 수행하는 경우, I/O시간을 감소 시키기 위해 버퍼 캐시를 활용 한다. 예를 들어, 데이터베이스 시스템에 포함된 노드가 영구 저장 매체에 기록된 데이터를 변경하고자 하는 경우, 노드는 영구 저장 매체에서 데이터를 로딩하고, 로딩된 데이터를 버퍼 캐시에 저장하며, 버퍼 캐시에 저장된 객체를 변경한 후, 변경된 데이터를 영구 저장 매체에 반영한다.
데이터베이스 시스템에서는 다양한 오류가 발생할 수 있다. 예를 들어, 데이터베이스 시스템에 포함된 모든 노드가 동작을 하지 않을 수 있다. 또한, 복수의 노드 중 임의의 노드가 작동을 하지 않을 수 있고, 영구 저장 매체의 일부가 작동을 하지 않을 수 있다.
이 경우, 발생된 오류로 인한 데이터의 유실을 방지하기 위해, 블록의 복구가 필요하게 된다. 예를 들어, 노드가 버퍼캐시에서 저장된 객체를 변경한 이후 그리고 변경된 객체를 영구 저장 매체에 반영하기 이전에 노드에 오류가 발생한 경우, 영구 저장 매체에 변경된 객체가 반영되지 않는 오류가 발생할 수 있다. 이 경우, 블록에 변경된 객체를 반영하기 위한 복구가 필요하게 된다.
기존 방식의 데이터 복구는 하나의 노드에 의해 수행되어, 많은 비효율성을 야기시켰다. 이에 효율적인 데이터의 복구 방법에 대한 연구가 필요하다.
미국 등록특허공보 US7111005호
본 발명은 전술한 배경기술에 대응하여 안출된 것으로, 데이터베이스 시스템에서 데이터의 복구를 효율적으로 수행하기 위한 것이다
전술한 과제를 해결하기 위한 본 발명의 실시예들 중 제 1 측면은, 데이터베이스 블록을 복구(recovery)하는 방법에 있어서, 영구 저장 매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하는 단계; 상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하는 단계; 및 상기 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록의 복구가 상기 적어도 하나의 복구 대상 블록 각각의 프록시 노드에 의해 병렬적으로 수행되도록 허용하기 위하여, 상기 로그 데이터를 재판독 하는 단계―상기 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록은 상기 적어도 하나의 복구 후보 블록들 각각의 마스터 노드에 의해 결정됨―; 를 포함하는, 데이터베이스 블록 복구 방법을 제공할 수 있다.
또한, 제 2 측면은, 복수의 노드들을 포함하는 데이터베이스 시스템에 있어서, 상기 복수의 노드들 중 코디네이터(coordinator) 노드는: 영구저장매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하는 복구 후보 블록 결정부; 상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하는 마스터 노드 결정부; 영구저장매체에 기록된 로그 데이터를 재판독함으로써, 적어도 하나의 복구 대상 블록의 복구 데이터를 획득하는 복구 데이터 획득부; 를 포함하고, 상기 복수의 노드들 중 적어도 하나의 마스터 노드들 각각은: 상기 적어도 하나의 복구 후보 블록 중 복구 대상 블록을 결정하는 복구 대상 블록 결정부; 를 포함하고, 상기 복수의 노드들 중 적어도 하나의 프록시 노드들 각각은: 상기 획득한 적어도 하나의 복구 대상 블록의 복구 데이터에 기초하여 복구 대상 블록을 복구하는 복구 수행부; 를 포함하고, 상기 적어도 하나의 복구 대상 블록들 각각의 프록시 노드들은 병렬적으로 복구를 수행하는, 데이터베이스 시스템을 제공할 수 있다.
또한, 제 3 측면은, 컴퓨터-판독가능 매체에 저장되어 노드들로 하여금 이하의 동작들을 수행하도록 하는 명령들을 포함하는 데이터베이스 복구 프로그램으로서, 상기 동작들은: 코디네이터 노드가 영구저장매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하도록 하는 동작; 상기 코디네이터 노드가 상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하도록 하는 동작; 상기 적어도 하나의 복구 후보 블록들 각각의 마스터 노드가 상기 적어도 하나의 복구 후보 블록들 중 적어도 하나의 복구 대상 블록을 결정하도록 하는 동작; 상기 코디네이터 노드가 영구저장매체에 기록된 로그 데이터를 재판독함으로써, 상기 결정된 적어도 하나의 복구 대상 블록의 로그 데이터를 획득하도록 하는 동작; 및 상기 적어도 하나의 복구 대상 블록들 각각의 프록시 노드가 상기 획득한 적어도 하나의 복구 대상 블록의 로그 데이터에 기초하여 복구 대상 블록을 복구하도록 하는 동작; 을 포함하고, 상기 하나 이상의 복구 대상 블록들 각각의 프록시 노드들은 병렬적으로 복구를 수행하는, 컴퓨터-판독가능 매체에 저장된 데이터베이스 복구 프로그램을 제공할 수 있다.
본 발명은 전술한 배경기술에 대응하여 안출된 것으로, 데이터베이스 시스템에서 데이터를 효율적으로 복구하는 방법을 제공한다.
다양한 양상들이 이제 도면들을 참조로 기재되며, 여기서 유사한 참조 번호들은 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예에서, 설명 목적을 위해, 다수의 특정 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위해 제시된다. 그러나, 그러한 양상(들)이 이러한 구체적인 세부사항들 없이 실시될 수 있음은 명백할 것이다. 다른 예시들에서, 공지의 구조들 및 장치들이 하나 이상의 양상들의 기재를 용이하게 하기 위해 블록도 형태로 도시된다.
도 1 은 본 발명의 일 실시예와 관련된 데이터베이스 시스템을 예시적으로 도시한다.
도 2 는 본 발명의 일 실시예와 관련된 데이터베이스 시스템의 컴포넌트들을 예시적으로 도시한다.
도 3 은 본 발명의 일 실시예와 관련된 데이터베이스 시스템이 영구 저장 매체에 저장된 블록을 복구하는 방법을 설명하기 위한 도면이다.
도 4는 마스터 노드가 복구 대상 블록을 결정하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따라 데이터를 복구하기 위한 방법을 설명하기 위한 순서도이다.
도 6 은 본 발명의 다른 실시예에 따라, 블록의 프록시 노드와 마스터 노드가 상이한 경우 블록의 데이터를 복구하는 방법을 설명하기 위한 도면이다.
다양한 실시예들이 이제 도면을 참조하여 설명되며, 전체 도면에서 걸쳐 유사한 도면번호는 유사한 구성요소를 나타내기 위해서 사용된다. 본 명세서에서, 다양한 설명들이 본 발명의 이해를 제공하기 위해서 제시된다. 그러나 이러한 실시예들은 이러한 구체적인 설명 없이도 실행될 수 있음이 명백하다. 다른 예들에서, 공지된 구조 및 장치들은 실시예들의 설명을 용이하게 하기 위해서 블록 다이어그램 형태로 제공된다.
본 명세서에서 사용되는 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 하드웨어, 펌웨어, 소프트웨어, 소프트웨어 및 하드웨어의 조합, 또는 소프트웨어의 실행을 지칭한다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 처리과정, 프로세서, 객체, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되는 것은 아니다. 예를 들어, 컴퓨팅 장치에서 실행되는 애플리케이션 및 컴퓨팅 장치 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세서 및/또는 실행 스레드 내에 상주할 수 있고, 일 컴포넌트는 하나의 컴퓨터 내에 로컬화될 수 있고, 또는 2개 이상의 컴퓨터들 사이에 분배될 수 있다. 또한, 이러한 컴포넌트들은 그 내부에 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능한 매체로부터 실행할 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호(예를 들면, 로컬 시스템, 분산 시스템에서 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터 데이터 및/또는 신호를 통해 다른 시스템과 인터넷과 같은 네트워크를 통한 데이터)에 따라 로컬 및/또는 원격 처리들을 통해 통신할 수 있다.
본 명세서에서, 데이터베이스는 서로 관련된 데이터들을 컴퓨터가 처리할 수 있는 형태로 저장하는 시스템을 의미한다. 데이터베이스는 데이터를 보관하고 사용자의 물음에 대답할 수 있고, 데이터베이스에 저장된 데이터는 변화될 수 있다. 데이터베이스는 새로운 데이터를 저장할 수 있고, 기존의 데이터를 삭제, 변경시키는 작업을 수행할 수 있다.
본 명세서에서, 노드는 정보의 교환이나 데이터베이스 업데이트 등 일련의 작업들을 수행하는 디바이스를 의미한다. 예를 들어, 노드는 서버, 컴퓨터, CPU가 포함된 디바이스 등을 포함할 수 있으며, 이에 한정되지 않는다.
노드는 영구 저장 매체(3000)와 데이터를 주고 받을 수 있다. 예를 들어, 노드는 영구 저장 매체(3000)에 기록된 데이터를 판독하여 판독된 데이터를 캐시 모듈에 저장할 수 있다. 또한, 캐시 모듈에 저장된 데이터를 변경시키고, 변경된 데이터를 영구 저장 매체(3000)에 반영할 수 있다. 또한, 노드는 영구저장 매체에 기록된 데이터를 복구할 수 있다.
본 명세서에서, 노드는 다양한 역할을 수행할 수 있다. 예를 들어, 노드는 코디네이터 노드(1000)의 역할을 수행할 수 있고, 블록의 마스터 노드(2000)의 역할을 수행할 수 있고, 블록의 프록시 노드(4000)의 역할을 수행할 수 있고, 이들의 역할의 조합을 수행할 수 있으며, 이에 한정되지 않는다.
본 명세서에서, 로그 데이터란 데이터베이스 운영중에 트랜잭션 또는 운영정보의 변경등과 같이, 데이터 변경에 관련된 내용을 기록한 데이터를 의미한다. 로그 데이터는 리두 로그 데이터 및 언두 로그 데이터를 포함할 수 있다.
리두 로그 데이터는 데이터베이스에 장애(fail)가 발생한 경우, 이를 복구하기 위해 필요한 데이터를 의미한다.
리두 로그 데이터를 이용하여 수행하는 복구의 유형으로는, 물리적으로 디스크가 손상된때 발생하는 미디어 장애(Media Fail) 발생한때 데이터베이스 복구를 위해 사용되는 미디어 복구(Media Recovery), 인스턴스가 비정상적으로 종료됐을 때 트랜잭션 데이터의 유실에 대비하기 위한 인스턴스 복구(Instance Recovery)등을 포함할 수 있으며, 이에 한정되지 않는다.
본 명세서에서, 블록이란 데이터의 덩어리를 의미할 수 있다. 예를 들어, 블록은 데이터가 저장된 하나의 테이블을 포함할 수 있고, 복수개의 테이블을 포함할 수 있다. 또한, 하나의 테이블에 포함된 데이터는 복수의 블록에 의해 나타내질 수 있다.
블록은 다양한 크기를 가질 수 있다. 예를 들어, 블록은 10kb, 100kb, 1메가 바이트, 2 메가 바이트, 3메가 바이트, 4메가 바이트 등의 크기를 가질 수 있으며, 이에 한정되지 않는다.
본 명세서에서, 프록시(proxy) 노드는 복구 대상 블록의 복구를 수행할 수 있다. 프록시 노드는 블록의 복구를 실질적으로 담당하는 노드를 의미한다. 블록들의 프록시 노드는 미리 결정될 수 있다.
예를 들어, 블록들 각각의 마스터 노드(2000)와 프록시 노드는 동일할 수 있다. 이 경우, 마스터 노드(2000)는 블록의 복구를 수행할 수 있다.
또한, 블록들 각각의 마스터 노드(2000)와 프록시 노드는 상이할 수 있다. 이경우, 블록의 복구는 프록시 노드에 의해 수행될 수 있다.
제시된 실시예들에 대한 설명은 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
이하에서는, 첨부된 도면을 참조하여 본 발명에 따른 실시예들을 상세히 설명하도록 한다.
도 1 은 본 발명의 일 실시예와 관련된 데이터베이스 시스템을 예시적으로 도시한다.
데이터베이스 시스템(10000)은 복수개의 노드(1000, 2000)를 포함할 수 있다. 각각의 노드(1000, 2000)는 마이크로프로세서, 메인프레임 컴퓨터, 디지털 싱글 프로세서, 휴대용 디바이스 및 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다.
노드(1000, 2000)는 메모리(미도시)를 포함할 수 있다. 노드(1000, 2000)는 메모리를 이용하여 데이터베이스 작업을 수행할 수 있다. 예를 들어, 노드(1000, 2000)가 트랜잭션을 수행하는 경우, 노드(1000, 2000)는 영구 저장 매체(3000)로부터 데이터를 로드하여 메모리(미도시)중 적어도 일부에 저장할 수 있다.
노드는 복수의 스레드를 포함할 수 있다. 독립적으로 처리하는 하나의 작업 단위를 의미한다. 예를 들어, 복수의 스레드(thread)들 각각은 독립적으로 하나의 작업을 수행할 수 있다.
메모리(미도시)는 동적 램(DRAM, dynamic random access memory), 정적 램(SRAM, static random access memory) 등의 랜덤 액세스 메모리(RAM)와 같은, 프로세서가 직접 접근하는 주된 저장 장치로서 전원이 꺼지면 저장된 정보가 순간적으로 지워지는 휘발성(volatile) 저장 장치를 의미할 수 있지만, 이들로 한정되는 것은 아니다. 이러한 메모리는 프로세서에 의하여 동작 될 수 있다.
노드(1000, 2000)와 영구 저장 매체(3000)는 네트워크로 연결될 수 있다. 네트워크는 유선 네트워크, 무선 네트워크를 포함할 수 있으며, 이에 한정되지 않는다.
영구 저장 매체(300)는 임의의 데이터를 지속적으로 저장할 수 있는 비-휘발성(non-volatile) 저장 매체를 포함할 수 있다. 예를 들어, 영구 저장 매체(1400)는 디스크, 광학(optical) 디스크 및 광자기(magneto-optical) 저장 디바이스뿐만 아니라 플래시 메모리 및/또는 배터리-백업 메모리에 기초한 저장 디바이스를 포함할 수 있으며, 이에 한정되지 않는다.
복수개의 노드(1000, 2000)는 코디네이터 노드(1000)와 마스터 노드(2000)를 포함할 수 있다. 이 경우, 코디네이터 노드(1000)는 하나일 수 있고, 복수개일 수 있으며, 이에 한정되지 않는다.
마스터 노드(2000)는 영구 저장 매체에 포함된 블록을 관리하는 노드를 의미한다. 예를 들어, 마스터 노드(2000)는 영구 저장 매체(3000)에 포함된 특정 블록의 락(lock)을 관리할 수 있다. 복수의 마스터 노드(2000)들 각각은 영구 저장 매체(3000)에 포함된 하나의 블록을 관리할 수 있고, 영구 저장 매체(3000)에 저장된 복수의 블록을 관리할 수 있으며, 이에 한정되지 않는다. 영구 저장 매체(3000)에 포함된 블록들 각각의 마스터 노드(2000)는 미리 결정될 수 있다.
코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 판독할 수 있다. 또한, 코디네이터 노드(1000)는 로그 데이터를 판독하여 획득한 정보에 기초하여, 적어도 하나의 복구 후보 블록을 결정할 수 있다.
코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각의 마스터 노드(2000)를 결정할 수 있고, 복구 후보 블록 각각의 마스터 노드(2000)에게 복구 후보 블록과 관련된 데이터를 전송할 수 있다.
이 경우, 코디네이터 노드(1000)도 복구 후보 블록의 마스터 노드(2000)가 될 수 있다. 코디네이터 노드(1000)가 복구 후보 블록의 마스터 노드(2000)인 경우, 코디네이터 노드(1000)는 해당 복구 후보 블록과 관련된 데이터를 전송하지 않을 수 있다.
복구 후보 블록 각각의 마스터 노드(2000)는 수신한 복구 후보 블록과 관련된 데이터에 기초하여, 적어도 하나의 복구 후보 블록 중 복구 대상 블록을 결정할 수 있다.
이 경우, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각의 복구 대상 여부를 판단하여, 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
본 발명의 다른 실시예에 따르면, 복구 후보 블록 중 복구 대상 블록은 존재하지 않을 수 있다. 이 경우, 마스터 노드(2000)는 복구 후보 블록 중 복구 대상 블록이 존재하지 않는다고 결정할 수 있다.
코디네이터 노드(1000)는 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록의 로그 데이터, 적어도 하나의 복구 대상 블록의 복구 데이터, 적어도 하나의 복구 후보 블록의 로그 데이터, 적어도 하나의 복구 후보 블록의 복구 데이터, 또는 이들의 조합을 획득할 수 있고, 획득한 데이터를 블록들 각각의 마스터 노드에게 전송할 수 있다.
본 발명의 일 실시예에 따르면, 특정 블록의 프록시 노드는 특정 블록의 마스터 노드(2000)와 동일할 수 있고, 이 경우 특정 블록의 마스터 노드(2000)는 특정 블록의 복구를 수행할 수 있다.
본 발명의 다른 실시예에 따르면, 특정 블록의 프록시 노드는 특정 블록의 마스터 노드(2000)와 상이한 노드일 수 있고, 이 경우 특정 블록의 프록시 노드가 특정 블록의 복구를 수행할 수 있다.
적어도 하나의 복구 대상 블록 각각의 프록시 노드(4000)는 수신한 데이터에 기초하여, 영구 저장 매체(3000)에 기록된 복구 대상 블록의 데이터를 복구할 수 있다. 또한, 복구 대상 블록의 프록시 노드(4000)와 마스터 노드(2000)가 동일한 경우, 마스터 노드(2000)가 복구 대상 블록의 데이터를 복구 할 수 있다.
이 경우, 복수의 프록시 노드(4000) 각각은 복구 대상 블록의 복구를 병렬적으로 수행할 수 있고, 그 결과 데이터 복구의 효율성은 증가될 수 있다. 또한, 프록시 노드(4000)에 포함된 복수의 스레드들 각각은, 복구 대상 블록의 복구를 병렬적으로 수행할 수 있고, 그 결과 데이터 복구의 효율성은 증가될 수 있다.
이 경우, 복구 대상 블록의 마스터 노드(2000)는 영구 저장 매체(3000)에 기록된 테이블 전체에 대해 다른 노드의 접근을 제한하지 않고, 복구 대상 블록에 대한 접근만 제한함으로써, 데이터베이스 관리의 효율성을 증진시킬 수 있다.
도 2 내지 도 5에서, 본 발명의 예시적인 실시예들로서, 블록의 마스터 노드(2000)와 프록시 노드(4000)가 동일한 경우에 대한 설명을 개시한다.
또한, 도 6에서는, 본 발명의 다른 실시예로서, 블록의 마스터 노드(2000)와 프록시 노드(4000)가 상이한 경우에 대한 설명을 개시한다.
도 2 는 본 발명의 일 실시예와 관련된 데이터베이스 시스템의 컴포넌트들을 예시적으로 도시한다.
본 발명의 일 실시예에 따르면, 데이터베이스 시스템(10000)은 영구 저장 매체(3000) 및 복수의 노드를 포함할 수 있다.
영구 저장 매체(persistent storage)(3000)는, 예를 들어 자기(magnetic) 디스크, 광학(optical) 디스크 및 광자기(magneto-optical) 저장 디바이스뿐만 아니라 플래시 메모리 및/또는 배터리-백업 메모리에 기초한 저장 디바이스와 같은, 임의의 데이터를 지속적으로 할 수 있는 비-휘발성(non-volatile) 저장 매체를 의미한다. 이러한 영구 저장 매체(3000)는 다양한 통신 수단을 통하여 노드들의 프로세서 및 메모리와 통신할 수 있다.
복수의 노드는 적어도 하나의 코디네이터 노드(1000)와 적어도 하나의 마스터 노드(2000)를 포함할 수 있다. 복수의 노드 각각은 적어도 하나의 메모리 및 적어도 하나의 프로세서에 의해 구현될 수 있다
코디네이터 노드(1000)는 송수신 모듈(1100), 캐시 모듈(1200), 및 제어부(1300)를 포함할 수 있다.
캐시 모듈(1200)은 데이터를 저장할 수 있다. 예를 들어, 캐시 모듈(1200)은 영구 저장 매체(3000)로부터 판독된 데이터를 저장할 수 있다. 캐시 모듈(1200)은 하나 이상의 메모리에 의해 구현될 수 있다.
여기서, 메모리는 동적 램(DRAM, dynamic random access memory), 정적 램(SRAM, static random access memory) 등의 랜덤 액세스 메모리(RAM)와 같은, 프로세서가 직접 접근하는 주된 저장 장치로서 전원이 꺼지면 저장된 정보가 순간적으로 지워지는 휘발성(volatile) 저장 장치를 의미할 수 있지만, 이들로 한정되는 것은 아니다. 이러한 메모리는 프로세서에 의하여 동작 될 수 있다.
송수신 모듈(1100)은 사용자로부터의 데이터 저장, 조회 및 인덱스 빌드, 조회 요청 등을 수신할 수 있다. 또한, 송수신 모듈(1100)은 데이터를 전송할 수 있고, 데이터를 수신할 수 있다.
코디네이터 노드(1000)의 제어부(1300)는 복구 후보 블록 결정부(1320), 마스터 노드 결정부(1340) 및 복구 데이터 획득부(1360)를 포함할 수 있다. 코디네이터 노드(1000)의 제어부(1300)는 하나의 프로세서에 의해 구현될 수 있고, 복수의 프로세서에 의해 구현될 수 있다.
복구 후보 블록 결정부(1320)는 영구 기록 매체(3000)에 저장된 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다.
복구 후보 블록 결정부(1320)는 영구 저장 매체(3000)에 저장된 로그 데이터를 판독할 수 있다.
로그 데이터는 적어도 하나의 블록에 대한 다양한 정보를 포함할 수 있다.
예를 들어, 로그 데이터는 블록의 변경 시점 정보를 포함할 수 있다. 예를 들어, 로그 데이터는 특정 블록이 어느 시점에 변경되었는지에 대한 정보를 포함할 수 있다.
또한, 로그 데이터는 블록의 기록 시점 정보를 포함할 수 있다. 예를 들어, 로그 데이터는 특정 블록이 영구 저장 매체에 언제 기록되었는지를 나타내는 정보를 포함할 수 있다.
또한, 로그 데이터는 블록의 주소 정보를 포함할 수 있다. 예를 들어, 로그 데이터는 특정 블록이 영구 저장 매체의 어느 부분에 기록되었는지를 나타내는 정보를 포함할 수 있으며, 이에 한정되지 않고 다양한 정보를 포함할 수 있다.
복구 후보 블록 결정부(1320)는 로그데이터를 판독함으로써, 복구 후보 블록을 결정할 수 있다. 예를 들어, 복구 후보 블록 결정부(1320)는 로그데이터에 포함된 블록의 변경 시점 정보, 블록의 기록 시점 정보 및 블록의 주소 정보 중 적어도 일부에 기초하여 복구 후보 블록을 결정할 수 있으며, 이에 한정되지 않는다.
복구 후보 블록 결정부(1320)는 로그 데이터에 포함된 블록 주소 정보에 기초하여, 복구 후보 블록을 결정할 수 있다.
예를 들어, 복구 후보 블록 결정부(1320)는 장애가 발생한 노드에 의해 기록된 로그 데이터를 판독하고, 로그 데이터에 포함된 블록 주소 정보에 기초하여 영구 저장 매체(3000)에 저장된 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다.
또한, 복구 후보 블록 결정부(1320)는 로그데이터에 포함된 블록 변경 시점 정보에 기초하여 복구 후보 블록을 결정할 수 있다.
예를 들어, 복구 후보 블록 결정부(1320)는 로그데이터를 판독함으로써, 복구 후보 블록의 복구 시간 구간을 결정할 수 있다. 예를 들어, 복구 후보 블록 결정부(1320)는 로그데이터에 포함된 변경 시점 정보를 판독하여, 복수의 변경 시점 중 복구가 필요한 변경 최초 시점과 변경 최후 시점을 결정할 수 있고, 변경 최초 시점과 변경 최후 시점 사이의 구간을 복구 시간 구간으로 결정할 수 있다.
이 경우, 복구 후보 블록 결정부(1320)는 복구 시간 구간 동안 발생한 변경들이 존재하는 블록들을 복구 후보 블록으로 결정할 수 있다.
또한, 복구 후보 블록 결정부(1320)는 로그데이터에 포함된 블록 기록 정보를 더 고려하여 복구 후보 블록을 결정할 수 있다.
예를 들어, 복구 후보 블록 결정부(1320)는 블록의 최후 변경 시점 정보가 나타내는 시점이 블록의 기록 시점 정보가 나타내는 시점 이전이라면, 해당 블록을 복구 후보 블록으로 결정하지 않을 수 있다.
또한, 복구 후보 블록 결정부(1320)는 전술한 방법들을 조합하여 복구 후보 블록을 결정할 수 있으며, 이에 한정되지 않고 다양한 방법으로 복구 후보 블록을 결정할 수 있다.
마스터 노드 결정부(1340)는 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다.
마스터 노드 결정부(1340)는 영구 저장 매체에 포함된 블록들 각각의 마스터 노드(2000)를 결정할 수 있다. 예를 들어, 마스터 노드 결정부(1340)는 영구 저장 매체에 포함된 블록들 중 적어도 하나의 복구 후보 블록의 마스터 노드(2000)를 결정할 수 있다.
마스터 노드(2000)란 영구 저장 매체에 포함된 블록을 관리하는 노드를 의미한다. 예를 들어, 마스터 노드(2000)는 영구 저장 매체(3000)에 포함된 특정 블록의 락(lock)을 관리할 수 있다. 또한, 마스터 노드(2000)는 블록의 최후 변경 상태를 캐시 모듈(2200)상에 보유하는 노드에 대한 정보를 보유할 수 있다.
하나의 마스터 노드(2000)는 하나의 블록을 관리할 수 있고, 복수의 블록을 관리할 수 있으며, 이에 한정되지 않는다.
마스터 노드 결정부(1340)는 다양한 방법으로 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 예를 들어, 마스터 노드 결정부(1340)는 복구 후보 블록의 블록 주소 정보에 기초하여 복구 후보 블록의 마스터 노드(2000)를 결정할 수 있다.
예를 들어, 마스터 노드 결정부(1340)는 복구 후보 블록 각각의 블록 주소 정보를 획득할 수 있다. 마스터 노드 결정부(1340)는 로그 데이터로부터 복구 후보 블록 각각의 블록 주소 정보를 획득할 수 있다. 또한, 마스터 노드 결정부(1340)는 복구 후보 블록의 주소 정보를 소정의 함수에 입력하여, 그 결과값을 획득할 수 있고, 결과값이 나타내는 노드를 복구 후보 블록의 마스터 노드(2000)로 결정할 수 있다.
또한, 마스터 노드 결정부(1340)는 블록들 각각의 마스터 노드를 조회할 수 있고, 조회 결과에 기초하여 복구 후보 블록들 각각의 마스터 노드를 결정할 수 있다.
이 경우, 블록들 각각의 마스터 노드는 블록들 각각의 블록 주소 정보에 기초하여 미리 결정될 수 있다. 예를 들어, 블록의 마스터 노드(2000)는 블록 주소 정보가 소정의 함수에 입력되어 발생된 결과값이 나타내는 노드로 미리 결정될 수 있다.
코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 후보 블록 각각의 마스터 노드(2000)에게 복구 후보 블록과 관련된 데이터를 전송할 수 있다.
예를 들어, 코디네이터 노드(1000)는 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 시간 구간에 대한 정보, 및 복구 후보 블록의 식별정보 중 적어도 하나를 전송할 수 있다. 다만, 코디네이터 노드(1000)가 복구 후보 블록의 마스터 노드(2000)인 경우, 코디네이터 노드(1000)는 해당 복구 후보 블록에 대한 정보를 다른 노드에 전송하지 않을 수 있다.
마스터 노드(2000)는 송수신 모듈(2200), 캐시 모듈(2200), 및 제어부(2300)를 포함할 수 있다. 제어부(2300)는 복구 대상 블록 결정부(2320) 및 복구 수행부(2340)를 포함할 수 있다. 마스터 노드(2000)의 제어부(2300)는 하나의 프로세서로 구현될 수 있고, 복수의 프로세서로 구현될 수 있으며, 이에 한정되지 않는다.
마스터 노드(2000)의 송수신 모듈(2100)은 마스터 노드(2000)가 관리하는 적어도 하나의 복구 후보 블록 각각과 관련된 데이터를 수신할 수 있다.
예를 들어, 마스터 노드(2000)의 송수신 모듈(2100)은 마스터 노드(2000)가 관리하는 적어도 하나의 복구 후보 블록 각각의 복구 시간 구간에 대한 정보, 복구 후보 블록의 식별정보, 및 복구 후보 블록의 로그 데이터 중 적어도 하나를 수신할 수 있다.
마스터 노드(2000)의 복구 대상 블록 결정부(2320)는 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
마스터 노드(2000)는 마스터 노드(2000)가 관리하는 블록들 중 적어도 하나의 복구 후보 블록을 식별할 수 있다. 예를 들어, 마스터 노드(2000)는 코디네이터 노드(1000)로부터 수신한 복구 후보 블록의 식별정보에 기초하여 적어도 하나의 복구 후보 블록을 식별할 수 있다.
복구 대상 블록 결정부(2320)는 적어도 하나의 복구 후보 블록 중 복구 대상 블록을 결정할 수 있다.
이 경우, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각의 복구 대상 여부를 판단하여, 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다. 또한, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각의 복구 대상 여부를 판단한때, 복구 대상 블록이 존재하지 않는 경우, 복구 대상 블록을 결정하지 않을 수 있다.
예를 들어, 복구 대상 블록 결정부(2320)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부에 따라 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다. 이 경우, 복구 대상 블록 결정부(2320)는 복구 시간 구간에 대한 정보를 참조할 수 있다.
예를 들어, 복구 대상 블록 결정부(2320)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다. 또한, 복구 대상 블록 결정부(2320)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 없는 경우, 복구 후보 블록을 복구 대상 블록으로 결정하지 않을 수 있다.
다른 예를 들어, 복구 대상 블록 결정부(2320)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 복구 대상 블록 결정부(2320)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 복구 후보 블록을 복구 대상 블록이 아니라고 결정할 수 있다. 또한, 복구 대상 블록 결정부(2320)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
또한, 복구 대상 블록 결정부(2320)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부 및 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 복구 대상 블록 결정부(2320)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있고, 그 변경이 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
복구 대상 블록 결정부(2320)는 복수의 복구 수행부(2340)들 각각이 복구를 수행할 수 있도록, 복수의 복구 수행부(2340) 각각에게 결정된 복수의 복구 대상 블록들을 분배할 수 있다.
예를 들어, 복구 수행부(2340)가 세개이고, 복구 대상 블록이 다섯개인 경우, 복구 대상 블록 결정부(2320)는 제 1 복구 수행부(2340)에게 두개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(2340)에게 두개의 복구 대상블록을 분배할 수 있고, 제 3 복구 수행부(2340)에게 하나의 복구 대상 블록을 분배할 수 있다. 또한, 제 1 복구 수행부(2340)에게 세개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(2340)에게 두개의 복구 대상 블록을 분배할 수 있으며, 이는 한정되지 않는다.
이 경우, 복구 대상 블록 결정부(2320)는 복수의 복구 대상 블록들이 영구 저장 매체(3000)상에 저장된 물리적 위치에 기초하여 복구 대상 블록을 분배할 수 있다.
예를 들어, 복구 대상 블록 결정부(2320)는 인접하게 위치한 복구 대상 블록들을 동일한 복구 수행부(2340)에 분배할 수 있다.
전술한 분배의 기준은 하나의 일 실시예에 불과하며, 본 발명의 복구 대상 블록 결정부(2320)는 전술한 예에 한정되지 않고 다양한 기준에 기초하여 복구 대상 블록들을 분배할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위로 복구대상 블록들이 복구 수행부(2340)에 분배됨으로써, 복수의 복구 수행부(2340)들이 복구를 수행할 때, 복수의 복구 수행부(2340)들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록의 복구의 효율성을 증가시킨다.
본 발명의 추가적인 실시예에 따르면, 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록 할 수 있다.
예를 들어, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록, 다른 노드에게 명령하는 데이터를 전송할 수 있다.
마스터 노드(2000)의 송수신 모듈(2100)은 복구 대상 블록 결정부(2320)의 결정 결과를 코디네이터 노드(1000)에게 선택적으로 전송할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록 결정부(2320)의 결정 결과를 코디네이터 노드(1000)에 전송할 수 있고, 전송하지 않을 수 있으며, 이에 한정되지 않는다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각과 관련된 로그 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 후보 블록 각각과 관련된 로그 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 복구 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 대상 블록 각각과 관련된 복구 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각과 관련된 복구 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 후보 블록 각각과 관련된 복구 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
여기서, 복구 데이터는 복구 대상 블록에 반영 되어야 하는 변경들과 관련된 데이터를 의미한다. 예를 들어, 복구 데이터는 복구 시간 구간 동안에 발생한 변경들 중 복구 대상 블록에 반영되지 않은 변경들에 대한 정보를 포함할 수 있다.
이 경우, 코디네이터 노드(1000)와 마스터 노드(2000)가 동일한 경우, 코디네이터 노드(1000)의 송수신 모듈(1100)은 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 데이터, 또는 이들의 조합을 전송하지 않을 수 있다.
마스터 노드(2000)의 송수신 모듈(2100)은 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터 및 복구 후보 블록의 로그 데이터 중 적어도 하나를 수신할 수 있다.
마스터 노드(2000)의 복구 수행부(2340)는 수신한 복구 대상 블록의 로그 데이터, 수신한 복구 대상 블록의 복구 데이터, 또는 이들의 조합에 기초하여 복구를 수행할 수 있다.
예를 들어, 복구 수행부(2340)는 영구 기록 매체에 기록된 복구 대상 블록에 아직 반영되지 않은 변경들을 반영할 수 있다.
또한, 마스터 노드(2000)의 복구 수행부(2340)는 수신한 복구 후보 블록의 로그 데이터, 수신한 복구 후보 블록의 복구 데이터, 또는 이들의 조합에서 복구 대상 블록의 로그데이터, 복구 대상 블록의 복구 데이터, 또는 이들의 조합을 추출할 수 있다. 또한, 바스터 노드(2000)의 복구 수행부(2340)는 추출한 데이터에 기초하여 복구를 수행할 수 있다.
마스터 노드(2000)의 복구 수행부(2340)가 복구 대상 블록을 복구하는 경우, 마스터 노드(2000)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 제 1 그룹으로 결정하고, 상기 결정된 1 그룹에 포함된 적어도 하나의 복구 대상 블록은 동일한 시간 구간에 복구를 수행할 수 있다. 마스터 노드(2000)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 함께 복구함으로써, 복구의 효율성을 증가시킬 수 있다.
마스터 노드(2000)는 복수의 복구 수행부(2340)를 포함할 수 있고, 복수의 복구 대상 블록에 대해 병렬적으로 복구를 수행할 수 있다.
또한, 복수개의 마스터 노드(2000)는 병렬적으로 복구 대상 블록의 복구를 수행할 수 있다.
마스터 노드(2000)는 복구 대상 블록의 복구가 진행되는 동안, 복구 대상 블록에 대한 다른 노드들의 접근을 제한할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록들의 복구가 진행되는 동안, 복구 대상 블록이 포함된 테이블 전체에 대해 다른 노드들의 접근을 제한하지 않고, 복구가 진행되는 해당 복구 대상 블록에 대해서만 다른 노드들의 접근을 제한할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)는 로그 데이터를 판독함으로써, 적어도 하나의 복구 후보 블록을 결정할 수 있고, 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 마스터 노드(2000)는 결정된 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다. 그 후, 코디네이터 노드(1000)는 로그 데이터를 재판독 함으로써, 복구 대상 블록의 복구 데이터를 획득할 수 있고, 마스터 노드(2000)는 복구 데이터를 이용하여 복구 대상 블록을 복구할 수 있다. 이 경우, 마스터 노드(2000)가 복수인 경우, 각각의 마스터 노드(2000)는 마스터 노드(2000)가 관리하는 복구 대상 블록의 복구를 수행할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)가 로그 데이터를 반복하여 판독함으로써, 복수의 마스터 노드 각각은 병렬적으로 복구 대상 블록을 복구할 수 있고, 영구 저장 매체(3000)에 저장된 블록의 복구 효율은 증진될 수 있다.
이 경우, 복구 대상 블록들이 블록 단위로 복수의 노드에 의해 복구됨으로써, 복수의 노드들이 복구를 수행할 때, 복수의 노드들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록들의 복구의 효율성을 증가시킨다.
또한, 블록마다 해당 블록을 수정하는 노드가 마스터 노드(2000)로 고정될 수 있기 때문에, 코디네이터 노드(1000)와 마스터 노드(2000)는 네트워크를 통해 블록을 송/수신 할 필요 없이, 복구와 관련된 데이터(예를 들어, 로그 데이터, 또는 복구 데이터 등)만 송/수신하게 되어, 네트워크의 데이터 전송량이 감소될 수 있다.
또한, 복수의 노드가 복구에 동참하고, 하나의 블록은 하나의 버퍼에만 존재하므로, 버퍼 캐시 히트 비율이 상승하여, 복구 속도가 더 빨라질 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)는 복수개의 제어부(1300)를 포함할 수 있다. 코디네이터 노드(1000)는 복수개의 제어부(1300)를 통해 전술한 동작들을 병렬적으로 수행할 수 있다.
본 발명의 다른 실시예에 따르면, 마스터 노드(2000)는 복수개의 제어부(2300)를 포함할 수 있다. 마스터 노드(2000)는 복수개의 제어부(2300)를 통해 전술한 동작들을 병렬적으로 수행할 수 있다.
도 3 은 본 발명의 일 실시예와 관련된 데이터베이스 시스템이 영구 저장 매체에 저장된 블록을 복구하는 방법을 설명하기 위한 도면이다.
단계S310에서, 코디네이터 노드(1000)는 영구 기록 매체(3000)에 저장된 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다.
코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 판독할 수 있다.
코디네이터 노드(1000)는 로그데이터를 판독함으로써, 복구 후보 블록을 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 로그데이터에 포함된 블록의 변경 시점 정보, 블록의 기록 시점 정보 및 블록의 주소 정보 중 적어도 일부에 기초하여 복구 후보 블록을 결정할 수 있으며, 이에 한정되지 않는다.
코디네이터 노드(1000)는 로그 데이터에 포함된 블록 주소 정보에 기초하여, 복구 후보 블록을 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 장애가 발생한 노드에 의해 기록된 로그 데이터를 판독하고, 로그 데이터에 포함된 블록 주소 정보에 기초하여 영구 저장 매체(3000)에 저장된 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다.
또한, 코디네이터 노드(1000)는 로그데이터에 포함된 블록 변경 시점 정보에 기초하여 복구 후보 블록을 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 로그데이터를 판독함으로써, 복구 후보 블록의 복구 시간 구간을 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 로그데이터에 포함된 변경 시점 정보를 판독하여, 복수의 변경 시점 중 복구가 필요한 변경 최초 시점과 변경 최후 시점을 결정할 수 있고, 변경 최초 시점과 변경 최후 시점 사이의 구간을 복구 시간 구간으로 결정할 수 있다.
이 경우, 코디네이터 노드(1000)는 복구 시간 구간 동안 발생한 변경들이 존재하는 블록들을 복구 후보 블록으로 결정할 수 있다.
또한, 코디네이터 노드(1000)는 로그데이터에 포함된 블록 기록 정보를 더 고려하여 복구 후보 블록을 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 블록의 최후 변경 시점 정보가 나타내는 시점이 블록의 기록 시점 정보가 나타내는 시점 이전이라면, 해당 블록을 복구 후보 블록으로 결정하지 않을 수 있다.
또한, 코디네이터 노드(1000)는 전술한 방법들을 조합하여 복구 후보 블록을 결정할 수 있으며, 이에 한정되지 않고 다양한 방법으로 복구 후보 블록을 결정할 수 있다.
단계 s320에서, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다.
코디네이터 노드(1000)는 영구 저장 매체에 포함된 블록들 각각의 마스터 노드(2000)를 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 영구 저장 매체에 포함된 블록들 중 적어도 하나의 복구 후보 블록의 마스터 노드(2000)를 결정할 수 있다.
마스터 노드(2000)란 영구 저장 매체에 포함된 블록을 관리하는 노드를 의미한다. 예를 들어, 마스터 노드(2000)는 영구 저장 매체(3000)에 포함된 특정 블록의 락(lock)을 관리할 수 있다. 또한, 마스터 노드(2000)는 블록의 최후 변경 상태를 캐시 모듈(2200)상에 보유하는 노드에 대한 정보를 보유할 수 있다.
하나의 마스터 노드(2000)는 하나의 블록을 관리할 수 있고, 복수의 블록을 관리할 수 있으며, 이에 한정되지 않는다.
코디네이터 노드(1000)는 다양한 방법으로 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 복구 후보 블록의 블록 주소 정보에 기초하여 복구 후보 블록의 마스터 노드(2000)를 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 복구 후보 블록 각각의 블록 주소 정보를 획득할 수 있다. 코디네이터 노드(1000)는 로그 데이터로부터 복구 후보 블록 각각의 블록 주소 정보를 획득할 수 있고, 복구 후보 블록의 주소 정보를 소정의 함수(예를 들어, 미리 설정된 해쉬 함수)에 입력하여, 그 결과값을 획득할 수 있으며, 결과값이 나타내는 노드를 복구 후보 블록의 마스터 노드(2000)로 결정할 수 있다.
또한, 코디네이터 노드(1000)는 블록들 각각의 마스터 노드를 조회할 수 있고, 조회 결과에 기초하여 복구 후보 블록들 각각의 마스터 노드를 결정할 수 있다.
이 경우, 블록들 각각의 마스터 노드는 블록들 각각의 블록 주소 정보에 기초하여 미리 결정될 수 있다. 예를 들어, 블록의 마스터 노드(2000)는 블록 주소 정보가 소정의 함수에 입력되어 발생된 결과값이 나타내는 노드로 미리 결정될 수 있다.
코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각의 마스터 노드(2000)에게 복구 후보 블록과 관련된 데이터를 전송할 수 있다.
예를 들어, 코디네이터 노드(1000)는 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 시간 구간에 대한 정보, 및 복구 후보 블록의 식별정보 중 적어도 하나를 전송할 수 있다. 다만, 코디네이터 노드(1000)가 복구 후보 블록의 마스터 노드(2000)인 경우, 코디네이터 노드(1000)는 해당 복구 후보 블록에 대한 정보를 다른 노드에 전송하지 않을 수 있다.
마스터 노드(2000)는 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
마스터 노드(2000)는 마스터 노드(2000)가 관리하는 블록들 중 적어도 하나의 복구 후보 블록을 식별할 수 있다. 예를 들어, 마스터 노드(2000)는 코디네이터 노드(1000)로부터 수신한 복구 후보 블록의 식별정보에 기초하여 적어도 하나의 복구 후보 블록을 식별할 수 있다.
마스터 노드(2000)는 적어도 하나의 복구 후보 블록 중 복구 대상 블록을 결정할 수 있다.
이 경우, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각이 복구 대상 블록인지 여부를 판단함으로써, 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다. 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각의 복구 대상 여부를 판단한때, 복구 대상 블록이 존재하지 않는 경우, 복구 대상 블록을 결정하지 않을 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부에 따라 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다. 이 경우, 마스터 노드(2000)는 복구 시간 구간에 대한 정보를 참조할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다. 또한, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 없는 경우, 복구 후보 블록을 복구 대상 블록으로 결정하지 않을 수 있다.
다른 예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 복구 후보 블록을 복구 대상 블록이 아니라고 결정할 수 있다. 또한, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
또한, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부 및 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있고, 그 변경이 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
마스터 노드(2000)는 복수의 복구 수행부(2340)들 각각이 복구를 수행할 수 있도록, 복수의 복구 수행부(2340) 각각에게 결정된 복수의 복구 대상 블록들을 분배할 수 있다.
예를 들어, 복구 수행부(2340)가 세개이고, 복구 대상 블록이 다섯개인 경우, 마스터 노드(2000)는 제 1 복구 수행부(2340)에게 두개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(2340)에게 두개의 복구 대상블록을 분배할 수 있고, 제 3 복구 수행부(2340)에게 하나의 복구 대상 블록을 분배할 수 있다. 또한, 제 1 복구 수행부(2340)에게 세개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(2340)에게 두개의 복구 대상 블록을 분배할 수 있으며, 이는 한정되지 않는다.
이 경우, 마스터 노드(2000)는 복수의 복구 대상 블록들이 영구 저장 매체(3000)상에 저장된 물리적 위치에 기초하여 복구 대상 블록을 분배할 수 있다.
예를 들어, 마스터 노드(2000)는 인접하게 위치한 복구 대상 블록들을 동일한 복구 수행부(2340)에 분배할 수 있다.
전술한 분배의 기준은 하나의 일 실시예에 불과하며, 본 발명의 마스터 노드(2000)는 전술한 예에 한정되지 않고 다양한 기준에 기초하여 복구 대상 블록들을 분배할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위로 복구대상 블록들이 복구 수행부(2340)에 분배됨으로써, 복수의 복구 수행부(2340)들이 복구를 수행할 때, 복수의 복구 수행부(2340)들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록의 복구의 효율성을 증가시킬 수 있다.
본 발명의 추가적인 실시예에 따르면, 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록 할 수 있다.
예를 들어, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록, 다른 노드에게 명령하는 데이터를 전송할 수 있다.
마스터 노드(2000)는 복구 대상 블록에 대한 결정 결과를 코디네이터 노드(1000)에게 선택적으로 전송할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록에 대한 결정 결과를 코디네이터 노드(1000)에 전송할 수 있고, 전송하지 않을 수 있으며, 이에 한정되지 않는다.
단계 s330에서, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록의 복구가 적어도 하나의 복구 대상 블록 각각의 마스터 노드에 의해 병렬적으로 수행되도록 허용하기 위하여, 로그 데이터를 재판독 할 수 있다.
마스터 노드(2000)의 송수신 모듈(2100)은 복구 대상 블록 결정부(2320)의 결정 결과를 코디네이터 노드(1000)에게 선택적으로 전송할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록 결정부(2320)의 결정 결과를 코디네이터 노드(1000)에 전송할 수 있고, 전송하지 않을 수 있으며, 이에 한정되지 않는다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)는 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각과 관련된 로그 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각과 관련된 로그 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 복구 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)는 적어도 하나의 복구 대상 블록 각각과 관련된 복구 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각과 관련된 복구 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각과 관련된 복구 데이터를 각각의 마스터 노드(2000)에 전송할 수 있다.
코디네이터 노드(1000)는 전술한 예에 한정되지 않고, 복구 대상 블록의 복구와 관련된 다양한 형태의 데이터를 전송할 수 있다.
여기서, 복구 데이터는 복구 대상 블록에 반영 되어야 하는 변경들과 관련된 데이터를 의미한다. 예를 들어, 복구 데이터는 복구 시간 구간 동안에 발생한 변경들 중 복구 대상 블록에 반영되지 않은 변경들에 대한 정보를 포함할 수 있다.
이 경우, 코디네이터 노드(1000)와 마스터 노드(2000)가 동일한 경우, 코디네이터 노드(1000)는 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 데이터 또는 이들의 조합을 전송하지 않을 수 있다.
마스터 노드(2000)는 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터, 및 복구 후보 블록의 로그 데이터 중 적어도 하나를 수신할 수 있다.
마스터 노드(2000)는 복구 대상 블록의 복구를 수행할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록의 로그 데이터 및 복구 대상 블록의 복구 데이터 중 적어도 하나에 기초하여 복구 대상 블록의 복구를 수행할 수 있다.
예를 들어, 마스터 노드(2000)는 영구 기록 매체에 기록된 복구 대상 블록에 아직 반영되지 않은 변경들을 반영할 수 있다.
또한, 마스터 노드(2000)는 수신한 복구 후보 블록의 로그 데이터, 수신한 복구 후보 블록의 복구 데이터, 또는 이들의 조합에서 복구 대상 블록의 로그데이터, 복구 대상 블록의 복구 데이터, 또는 이들의 조합을 추출할 수 있다. 또한, 마스터 노드(2000)는 추출한 데이터에 기초하여 복구를 수행할 수 있다.
마스터 노드(2000)가 복구 대상 블록을 복구하는 경우, 마스터 노드(2000)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 제 1 그룹으로 결정하고, 상기 결정된 1 그룹에 포함된 적어도 하나의 복구 대상 블록은 동일한 시간 구간에 복구를 수행할 수 있다. 마스터 노드(2000)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 함께 복구함으로써, 복구의 효율성을 증가시킬 수 있다.
마스터 노드(2000)는 복수의 복구 대상 블록에 대해 병렬적으로 복구를 수행할 수 있다.
또한, 복수개의 마스터 노드(2000)는 병렬적으로 복구 대상 블록의 복구를 수행할 수 있다.
마스터 노드(2000)는 복구 대상 블록의 복구가 진행되는 동안, 복구 대상 블록에 대한 다른 노드들의 접근을 제한할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록들의 복구가 진행되는 동안, 복구 대상 블록이 포함된 테이블 전체에 대해 다른 노드들의 접근을 제한하지 않고, 복구가 진행되는 해당 복구 대상 블록에 대해서만 다른 노드들의 접근을 제한할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)는 로그 데이터를 판독함으로써, 적어도 하나의 복구 후보 블록을 결정할 수 있고, 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 마스터 노드(2000)는 결정된 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다. 코디네이터 노드(1000)는 로그 데이터를 재판독 함으로써, 복구 대상 블록의 복구 데이터를 획득할 수 있고, 마스터 노드(2000)는 복구 데이터를 이용하여 복구 대상 블록을 복구할 수 있다. 이 경우, 마스터 노드(2000)가 복수인 경우, 각각의 마스터 노드(2000)는 마스터 노드(2000)가 관리하는 복구 대상 블록의 복구를 수행할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)가 로그 데이터를 반복하여 판독함으로써, 복수의 마스터 노드 각각은 병렬적으로 복구 대상 블록을 복구할 수 있고, 영구 저장 매체(3000)에 저장된 블록의 복구 효율은 증진될 수 있다.
도 4는 마스터 노드가 복구 대상 블록을 결정하는 방법을 설명하기 위한 도면이다.
마스터 노드(2000)는 마스터 노드(2000)가 관리하는 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다. 예를 들어, 마스터 노드(2000)는 코디네이터 노드(1000)로부터 수신한 정보에 기초하여 적어도 하나의 복구 후보 블록을 결정할 수 있다. 다른 예를 들어, 마스터 노드(2000)와 코디네이터 노드(1000)가 동일한 경우, 마스터 노드(2000)는 영구 저장 매체(3000)에 저장된 로그 데이터에 기초하여, 적어도 하나의 복구 후보 블록을 결정할 수 있다.
단계 s410에서, 마스터 노드(2000)는 복구 후보 블록과 관련된 데이터를 획득할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록의 로그 데이터를 판독함으로써 복구 후보 블록과 관련된 데이터를 획득할 수 있고, 코디네이터 노드(1000)로부터 복구 후보 블록과 관련된 데이터를 획득할 수 있으며, 이에 한정되지 않는다.
복구 후보 블록과 관련된 데이터는 복구 후보 블록의 기록 시점 정보, 복구 후보 블록의 변경 시점 정보 및 복구 후보 블록의 주소 정보중 적어도 하나를 포함할 수 있으며, 이에 한정되지 않는다.
복구 후보 블록의 변경 시점 정보는 복구 후보 블록이 어느 시점에 변경되었는지에 대한 정보를 의미한다.
복구 후보 블로의 기록 시점 정보는 복구 후보 블록이 영구 저장 매체에 언제 기록되었는지를 나타내는 정보를 의미한다.
복구 후보 블록의 주소 정보는 복구 후보 블록이 영구 저장 매체의 어느 부분에 기록되었는지를 나타내는 정보를 의미한다.
마스터 노드(2000)는 획득한 복구 후보 블록의과 관련된 정보를 획득함으로써, 마스터 노드(2000)가 관리하는 블록들 중 적어도 하나의 복구 후보 블록을 식별할 수 있다. 예를 들어, 마스터 노드(2000)는 코디네이터 노드(1000)로부터 수신한 복구 후보 블록의 주소정보에 기초하여 적어도 하나의 복구 후보 블록을 식별할 수 있다.
단계 S420에서, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부, 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는지 여부 또는 이들의 조합에 기초하여 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
이 경우, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각이 복구 대상 블록인지 여부를 판단함으로써, 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부에 따라 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다. 이 경우, 마스터 노드(2000)는 복구 시간 구간에 대한 정보를 참조할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다. 또한, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 없는 경우, 복구 후보 블록을 복구 대상 블록으로 결정하지 않을 수 있다.
다른 예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 복구 후보 블록을 복구 대상 블록이 아니라고 결정할 수 있다. 또한, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
또한, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부 및 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있고, 그 변경이 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
본 발명의 추가적인 실시예에 따르면, 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록 할 수 있다.
예를 들어, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록, 다른 노드에게 명령하는 데이터를 전송할 수 있다.
본 발명의 일 실시예에 따르면, 마스터 노드(2000)는 복수의 복구 대상 블록을 병렬적으로 복구할 수 있다. 예를 들어, 마스터 노드(2000)는 복수의 복구 수행부(2340)들 각각이 복구를 수행할 수 있도록, 복수의 복구 수행부(2340) 각각에게 결정된 복수의 복구 대상 블록들을 분배할 수 있다.
예를 들어, 복구 수행부(2340)가 세개이고, 복구 대상 블록이 다섯개인 경우, 복구 대상 블록 결정부(2320)는 제 1 복구 수행부(2340)에게 두개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(2340)에게 두개의 복구 대상블록을 분배할 수 있고, 제 3 복구 수행부(2340)에게 하나의 복구 대상 블록을 분배할 수 있다. 또한, 제 1 복구 수행부(2340)에게 세개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(2340)에게 두개의 복구 대상 블록을 분배할 수 있으며, 이는 한정되지 않는다.
이 경우, 마스터 노드(2000)는 복수의 복구 대상 블록들이 영구 저장 매체(3000)상에 저장된 물리적 위치에 기초하여 복구 대상 블록을 분배할 수 있다.
예를 들어, 마스터 노드(2000)는 인접하게 위치한 복구 대상 블록들을 동일한 복구 수행부(2340)에 분배할 수 있다.
전술한 분배의 기준은 하나의 일 실시예에 불과하며, 본 발명의 마스터 노드(2000)는 전술한 예에 한정되지 않고 다양한 기준에 기초하여 복구 대상 블록들을 분배할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위로 복구대상 블록들이 복구 수행부(2340)에 분배됨으로써, 복수의 복구 수행부(2340)들이 복구를 수행할 때, 복수의 복구 수행부(2340)들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록의 복구의 효율성을 증가시킨다.
도 5는 본 발명의 일 실시예에 따라 데이터를 복구하기 위한 방법을 설명하기 위한 순서도이다.
단계 S510에서, 코디네이터 노드(1000)는 로그 데이터를 판독할 수 있다.
예를 들어, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 판독할 수 있다. 또한, 코디네이터 노드(1000)는 외부의 디바이스로부터 수신한 로그 데이터를 판독할 수 있고, 외부의 디바이스에 존재하는 로그 데이터를 판독할 수 있으며, 이에 한정되지 않는다.
이 경우, 코디네이터 노드(1000)는 복수의 스레드(thread)를 포함할 수 있다. 스레드는 독립적으로 처리하는 하나의 작업 단위를 의미한다. 예를 들어, 복수의 스레드(thread)들 각각은 독립적으로 하나의 작업을 수행할 수 있다.
코디네이터 노드(1000)에 포함된 복수의 스레드들은 병렬적으로 로그 데이터를 판독할 수 있다. 예를 들어, 코디네이터 노드(1000)는 복수의 스레드들 각각이 로그 데이터를 판독할 수 있도록, 로그 데이터를 분배할 수 있다. 또한, 복수의 스레드들 각각은 독립적으로 분배된 로그데이터를 판독할 수 있다.
코디네이터 노드(1000)는 복수의 스레드들에게 로그데이터를 분배함으로써, 복수의 스레드들 사이의 의존성을 제거할 수 있다. 또한, 복수의 스레드들 각각이 서로에게 영향받지 않고 로그 데이터를 판독함으로써, 로그 데이터의 판독 효율은 증진될 수 있다.
단계 S520에서, 코디네이터 노드(1000)는 영구 기록 매체(3000)에 저장된 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다.
코디네이터 노드(1000)는 로그데이터를 판독함으로써, 복구 후보 블록을 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 로그데이터에 포함된 블록의 변경 시점 정보, 블록의 기록 시점 정보 및 블록의 주소 정보 중 적어도 일부에 기초하여 복구 후보 블록을 결정할 수 있으며, 이에 한정되지 않는다.
코디네이터 노드(1000)는 로그 데이터에 포함된 블록 주소 정보에 기초하여, 복구 후보 블록을 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 장애가 발생한 노드에 의해 기록된 로그 데이터를 판독하고, 로그 데이터에 포함된 블록 주소 정보에 기초하여 영구 저장 매체(3000)에 저장된 블록들 중 적어도 하나의 복구 후보 블록을 결정할 수 있다.
또한, 코디네이터 노드(1000)는 로그데이터에 포함된 블록 변경 시점 정보에 기초하여 복구 후보 블록을 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 로그데이터를 판독함으로써, 복구 후보 블록의 복구 시간 구간을 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 로그데이터에 포함된 변경 시점 정보를 판독하여, 복수의 변경 시점 중 복구가 필요한 변경 최초 시점과 변경 최후 시점을 결정할 수 있고, 변경 최초 시점과 변경 최후 시점 사이의 구간을 복구 시간 구간으로 결정할 수 있다.
이 경우, 코디네이터 노드(1000)는 복구 시간 구간 동안 발생한 변경들이 존재하는 블록들을 복구 후보 블록으로 결정할 수 있다.
또한, 코디네이터 노드(1000)는 로그데이터에 포함된 블록 기록 정보를 더 고려하여 복구 후보 블록을 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 블록의 최후 변경 시점 정보가 나타내는 시점이 블록의 기록 시점 정보가 나타내는 시점 이전이라면, 해당 블록을 복구 후보 블록으로 결정하지 않을 수 있다.
또한, 코디네이터 노드(1000)는 전술한 방법들을 조합하여 복구 후보 블록을 결정할 수 있으며, 이에 한정되지 않고 다양한 방법으로 복구 후보 블록을 결정할 수 있다.
이 경우, 코디네이터 노드(1000)에 포함된 복수의 스레드들은 병렬적으로 복구 후보 블록을 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 복수의 스레드들 각각이 로그 데이터를 판독할 수 있도록, 로그 데이터를 분배할 수 있다. 또한, 복수의 스레드들은 독립적으로 분배된 로그데이터를 판독하여, 복구 후보 블록을 결정할 수 있다.
코디네이터 노드(1000)는 복수의 스레드들에게 로그데이터를 분배함으로써, 복수의 스레드들 사이의 의존성을 제거할 수 있다. 또한, 복수의 스레드들 각각이 서로에게 영향받지 않고 복구 후보 블록을 결정함으로써, 복구 후보 블록 결정의 효율은 증진될 수 있다.
단계 S530에서, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다.
코디네이터 노드(1000)는 영구 저장 매체에 포함된 블록들 각각의 마스터 노드(2000)를 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 영구 저장 매체에 포함된 블록들 중 적어도 하나의 복구 후보 블록의 마스터 노드(2000)를 결정할 수 있다.
마스터 노드(2000)란 영구 저장 매체에 포함된 블록을 관리하는 노드를 의미한다. 예를 들어, 마스터 노드(2000)는 영구 저장 매체(3000)에 포함된 특정 블록의 락(lock)을 관리할 수 있다. 또한, 마스터 노드(2000)는 블록의 최후 변경 상태를 캐시 모듈(2200)상에 보유하는 노드에 대한 정보를 보유할 수 있다.
하나의 마스터 노드(2000)는 하나의 블록을 관리할 수 있고, 복수의 블록을 관리할 수 있으며, 이에 한정되지 않는다.
코디네이터 노드(1000)는 다양한 방법으로 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 예를 들어, 코디네이터 노드(1000)는 복구 후보 블록의 블록 주소 정보에 기초하여 복구 후보 블록의 마스터 노드(2000)를 결정할 수 있다.
예를 들어, 코디네이터 노드(1000)는 복구 후보 블록 각각의 블록 주소 정보를 획득할 수 있다. 코디네이터 노드(1000)는 로그 데이터로부터 복구 후보 블록 각각의 블록 주소 정보를 획득할 수 있고, 복구 후보 블록의 주소 정보를 소정의 함수(예를 들어, 미리 설정된 해쉬 함수)에 입력하여, 그 결과값을 획득할 수 있으며, 결과값이 나타내는 노드를 복구 후보 블록의 마스터 노드(2000)로 결정할 수 있다.
단계 S520에서, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 각각의 마스터 노드(2000)에게 복구 후보 블록과 관련된 데이터를 전송할 수 있다.
예를 들어, 코디네이터 노드(1000)는 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 시간 구간에 대한 정보(또는, 복구 후보 블록의 변경 시점 정보), 및 복구 후보 블록의 식별정보 중 적어도 하나를 전송할 수 있다. 다만, 코디네이터 노드(1000)가 복구 후보 블록의 마스터 노드(2000)인 경우, 코디네이터 노드(1000)는 해당 복구 후보 블록에 대한 정보를 다른 노드에 전송하지 않을 수 있다.
단계 S 550에서, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
마스터 노드(2000)는 마스터 노드(2000)가 관리하는 블록들 중 적어도 하나의 복구 후보 블록을 식별할 수 있다. 예를 들어, 마스터 노드(2000)는 코디네이터 노드(1000)로부터 수신한 복구 후보 블록의 식별정보에 기초하여 적어도 하나의 복구 후보 블록을 식별할 수 있다.
마스터 노드(2000)는 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
이 경우, 마스터 노드(2000)는 적어도 하나의 복구 후보 블록 각각이 복구 대상 블록인지 여부를 판단함으로써, 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부에 따라 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다. 이 경우, 마스터 노드(2000)는 복구 시간 구간에 대한 정보를 참조할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다. 또한, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 없는 경우, 복구 후보 블록을 복구 대상 블록으로 결정하지 않을 수 있다.
다른 예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 복구 후보 블록을 복구 대상 블록이 아니라고 결정할 수 있다. 또한, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
또한, 마스터 노드(2000)는 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부 및 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하지 여부에 기초하여 복구 후보 블록이 복구 대상 블록인지 여부를 결정할 수 있다.
예를 들어, 마스터 노드(2000)는 복구 시간 구간 이내에 발생한 변경 중 복구 후보 블록에 반영되지 않은 변경이 있고, 그 변경이 다른 노드에 존재하지 않는 경우, 복구 후보 블록을 복구 대상 블록으로 결정할 수 있다.
마스터 노드(2000)는 복수의 스레드를 포함할 수 있다. 마스터 노드(2000)는 복수의 스레드들 각각이 복구를 수행할 수 있도록, 복수의 스레드 각각에게 결정된 복수의 복구 대상 블록들을 분배할 수 있다.
예를 들어, 스레드가 세개이고, 복구 대상 블록이 다섯개인 경우, 마스터 노드(2000)는 제 1 스레드에게 두개의 복구 대상 블록을 분배할 수 있고, 제 2 스레드에게 두개의 복구 대상블록을 분배할 수 있고, 제 3 스레드에게 하나의 복구 대상 블록을 분배할 수 있다. 또한, 제 1 스레드에게 세개의 복구 대상 블록을 분배할 수 있고, 제 2 스레드에게 두개의 복구 대상 블록을 분배할 수 있으며, 이는 한정되지 않는다.
이 경우, 마스터 노드(2000)는 복수의 복구 대상 블록들이 영구 저장 매체(3000)상에 저장된 물리적 위치에 기초하여 복구 대상 블록을 분배할 수 있다.
예를 들어, 마스터 노드(2000)는 인접하게 위치한 복구 대상 블록들을 동일한 스레드에 분배할 수 있다.
전술한 분배의 기준은 하나의 일 실시예에 불과하며, 본 발명의 복구 대상 블록 결정부(2320)는 전술한 예에 한정되지 않고 다양한 기준에 기초하여 복구 대상 블록들을 분배할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위로 복구대상 블록들이 스레드에 분배됨으로써, 복수의 스레드들이 복구를 수행할 때, 복수의 스레드들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록의 복구의 효율성을 증가시킬 수 있다.
본 발명의 추가적인 실시예에 따르면, 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록 할 수 있다.
예를 들어, 마스터 노드(2000)는 상기 다른 노드가 상기 변경을 복구 후보 블록에 반영하도록, 다른 노드에게 명령하는 데이터를 전송할 수 있다.
단계 S560에서, 코디네이터 노드(1000)는 복구 대상 블록에 대한 결정 결과를 선택적으로 획득할 수 있다. 예를 들어, 코디네이터 노드(1000)는 복구 대상 블록에 대한 결정 결과를 획득할 수 있고, 획득하지 않을 수 있다.
단계 570에서, 코디네이터 노드(1000)는 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록의 복구가 적어도 하나의 복구 대상 블록 각각의 마스터 노드에 의해 병렬적으로 수행되도록 허용하기 위하여, 로그 데이터를 재판독 할 수 있다.
코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 획득할 수 있다.
또한, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각의 복구 데이터를 획득할 수 있다.
또한, 또한, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각의 로그 데이터를 획득할 수 있다.
또한, 또한, 코디네이터 노드(1000)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각의 복구 데이터를 획득할 수 있다.
여기서, 복구 데이터는 복구 대상 블록에 반영 되어야 하는 변경들과 관련된 데이터를 의미한다. 예를 들어, 복구 데이터는 복구 시간 구간 동안에 발생한 변경들 중 복구 대상 블록에 반영되지 않은 변경들에 대한 정보를 포함할 수 있다.
단계 580에서, 코디네이터 노드(1000)는 획득한 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 데이터 또는 이들의 조합을 블록들 각각의 마스터 노드(2000)에게 전송할 수 있다.
이 경우, 코디네이터 노드(1000)와 마스터 노드(2000)가 동일한 경우, 코디네이터 노드(1000)는 복구와 관련된 데이터를 전송하지 않을 수 있다.
단계 S590에서, 마스터 노드(2000)는 복구 대상 블록의 복구를 수행할 수 있다. 예를 들어, 마스터 노드(2000)는 수신한 복구 대상 블록의 로그 데이터 및 복구 대상 블록의 복구 데이터 중 적어도 하나에 기초하여 복구 대상 블록의 복구를 수행할 수 있다.
또한, 마스터 노드(2000) 는 수신한 복구 후보 블록의 로그 데이터, 수신한 복구 후보 블록의 복구 데이터, 또는 이들의 조합에서 복구 대상 블록의 로그데이터, 복구 대상 블록의 복구 데이터, 또는 이들의 조합을 추출할 수 있다. 또한, 마스터 노드(2000) 는 추출한 데이터에 기초하여 복구를 수행할 수 있다.
예를 들어, 마스터 노드(2000)는 영구 기록 매체에 기록된 복구 대상 블록에 아직 반영되지 않은 변경들을 반영할 수 있다.
마스터 노드(2000)가 복구 대상 블록을 복구하는 경우, 마스터 노드(2000)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 제 1 그룹으로 결정하고, 상기 결정된 1 그룹에 포함된 적어도 하나의 복구 대상 블록은 동일한 시간 구간에 복구를 수행할 수 있다. 마스터 노드(2000)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 함께 복구함으로써, 복구의 효율성을 증가시킬 수 있다.
마스터 노드(2000)는 복구 대상 블록의 복구가 진행되는 동안, 복구 대상 블록에 대한 다른 노드들의 접근을 제한할 수 있다. 예를 들어, 마스터 노드(2000)는 복구 대상 블록들의 복구가 진행되는 동안, 복구 대상 블록이 포함된 테이블 전체에 대해 다른 노드들의 접근을 제한하지 않고, 복구가 진행되는 해당 복구 대상 블록에 대해서만 다른 노드들의 접근을 제한할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)는 로그 데이터를 판독함으로써, 적어도 하나의 복구 후보 블록을 결정할 수 있고, 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 마스터 노드(2000)는 결정된 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다. 코디네이터 노드(1000)는 로그 데이터를 재판독 함으로써, 복구 대상 블록의 복구 데이터를 획득할 수 있고, 마스터 노드(2000)는 복구 데이터를 이용하여 복구 대상 블록을 복구할 수 있다. 이 경우, 마스터 노드(2000)가 복수인 경우, 각각의 마스터 노드(2000)는 마스터 노드(2000)가 관리하는 복구 대상 블록의 복구를 수행할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)가 로그 데이터를 반복하여 판독함으로써, 복수의 마스터 노드 각각은 병렬적으로 복구 대상 블록을 복구할 수 있고, 영구 저장 매체(3000)에 저장된 블록의 복구 효율은 증진될 수 있다.
이 경우, 복구 대상 블록들이 블록 단위로 복수의 노드에 의해 복구됨으로써, 복수의 노드들이 복구를 수행할 때, 복수의 노드들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록들의 복구의 효율성을 증가시킨다.
또한, 블록마다 해당 블록을 수정하는 노드가 마스터 노드(2000)로 고정되어 있기 때문에, 코디네이터 노드(1000)와 마스터 노드(2000)는 네트워크를 통해 블록을 송/수신 할 필요 없이, 복구와 관련된 데이터(예를 들어, 로그 데이터, 또는 복구 데이터 등)만 송/수신하게 되어, 네트워크의 데이터 전송량이 감소될 수 있다.
또한, 복수의 노드가 복구에 동참하고, 하나의 블록은 하나의 버퍼에만 존재하므로, 버퍼 캐시 히트 비율이 상승하여, 복구 속도가 더 빨라질 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)는 복수개의 제어부(1300)를 포함할 수 있다. 코디네이터 노드(1000)는 복수개의 제어부(1300)를 통해 전술한 동작들을 병렬적으로 수행할 수 있다.
본 발명의 다른 실시예에 따르면, 마스터 노드(2000)는 복수개의 제어부(2300)를 포함할 수 있다. 마스터 노드(2000)는 복수개의 제어부(2300)를 통해 전술한 동작들을 병렬적으로 수행할 수 있다.
도 6 은 본 발명의 다른 실시예에 따라, 블록의 프록시 노드와 마스터 노드가 상이한 경우 블록의 데이터를 복구하는 방법을 설명하기 위한 도면이다.
전술한 도 2 내지 도 5에서는, 복구 예상 블록 및 복구 대상 블록의 마스터 노드(2000)와 프록시 노드가 동일한 경우의 실시예들을 설명하였다.
도 6 에서는 복구 예상 블록 및 복구 대상 블록의 마스터 노드(2000)와 프록시 노드가 상이한 경우의 실시예를 설명한다.
본 발명의 예시적인 실시예에 따라, 도 6 의 코디네이터 노드(1000), 마스터 노드(2000)의 송수신 모듈(2100), 캐시모듈(2200), 복구 대상 블록 결정부(2320), 및 영구 저장 매체(3000)가 수행하는 동작에 대한 자세한 설명은, 도 2 내지 도 5에서 자세히 설명한 바 있다.
본 발명의 일 실시예에 따르면, 프록시 노드(4000)는 제어부(4110)를 포함할 수 있고, 프록시 노드(4000)의 제어부(4110)는 복수의 복구 수행부(4110)를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 프록시 노드(4000)는 복구 대상 블록에 대한 정보를 수신할 수 있다. 예를 들어, 프록시 노드(4000)는 복구 대상 블록에 대한 정보를 마스터 노드(2000)로부터 수신할 수 있고, 코디네이터 노드(1000)로부터 수신할 수 있으며, 이에 한정되지 않는다.
프록시 노드(4000)의 제어부(2300)는 복수의 복구 수행부(4110)들 각각이 복구를 수행할 수 있도록, 복수의 복구 수행부(4110) 각각에게 복수의 복구 대상 블록들을 분배할 수 있다.
예를 들어, 복구 수행부(4110)가 세개이고, 복구 대상 블록이 다섯개인 경우, 프록시 노드(4000)의 제어부(2300)는 제 1 복구 수행부(4110)에게 두개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(4110)에게 두개의 복구 대상블록을 분배할 수 있고, 제 3 복구 수행부(4110)에게 하나의 복구 대상 블록을 분배할 수 있다. 또한, 프록시 노드(4000)의 제어부(2300)는 제 1 복구 수행부(4110)에게 세개의 복구 대상 블록을 분배할 수 있고, 제 2 복구 수행부(4110)에게 두개의 복구 대상 블록을 분배할 수 있으며, 이는 한정되지 않는다.
이 경우, 프록시 노드(4000)의 제어부(2300)는 복수의 복구 대상 블록들이 영구 저장 매체(3000)상에 저장된 물리적 위치에 기초하여 복구 대상 블록을 분배할 수 있다.
예를 들어, 프록시 노드(4000)의 제어부(2300)는 인접하게 위치한 복구 대상 블록들을 동일한 복구 수행부(2340)에 분배할 수 있다.
전술한 분배의 기준은 하나의 일 실시예에 불과하며, 본 발명의 복구 대상 블록 결정부(2320)는 전술한 예에 한정되지 않고 다양한 기준에 기초하여 복구 대상 블록들을 분배할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위로 복구대상 블록들이 복구 수행부(4410)에 분배됨으로써, 복수의 복구 수행부(4410)들이 복구를 수행할 때, 복수의 복구 수행부(4410)들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록의 복구의 효율성을 증가시킨다.
본 발명의 다른 실시예에 따르면, 복구 대상 블록의 분배는 마스터 노드(2000)의 복구 대상 블록 결정부(2320)에 의해 수행될 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 대상 블록 각각과 관련된 로그 데이터를 각각의 프록시 노드(4000)에 전송할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각과 관련된 로그 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 후보 블록 각각과 관련된 로그 데이터를 각각의 프록시 노드(4000)에 전송할 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 대상 블록 각각과 관련된 복구 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 대상 블록 각각과 관련된 복구 데이터를 각각의 프록시 노드(4000)에 전송할 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)의 복구 데이터 획득부(1360)는 영구 저장 매체(3000)에 저장된 로그 데이터를 재판독 함으로써, 적어도 하나의 복구 후보 블록 각각과 관련된 복구 데이터를 획득할 수 있다. 또한, 코디네이터 노드(1000)의 송수신 모듈(1100)은 적어도 하나의 복구 후보 블록 각각과 관련된 복구 데이터를 각각의 프록시 노드(4000)에 전송할 수 있다.
여기서, 복구 데이터는 복구 대상 블록에 반영 되어야 하는 변경들과 관련된 데이터를 의미한다. 예를 들어, 복구 데이터는 복구 시간 구간 동안에 발생한 변경들 중 복구 대상 블록에 반영되지 않은 변경들에 대한 정보를 포함할 수 있다.
이 경우, 코디네이터 노드(1000)와 프록시 노드(4000)가 동일한 경우, 코디네이터 노드(1000)의 송수신 모듈(1100)은 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터, 복구 후보 블록의 복구 데이터, 또는 이들의 조합을 전송하지 않을 수 있다.
프록시 노드(4000)는 복구 대상 블록의 로그 데이터, 복구 대상 블록의 복구 데이터, 복구 후보 블록의 로그 데이터 및 복구 후보 블록의 로그 데이터 중 적어도 하나를 수신할 수 있다.
프록시 노드(4000)의 복구 수행부(4110)는 수신한 복구 대상 블록의 로그 데이터, 수신한 복구 대상 블록의 복구 데이터, 또는 이들의 조합에 기초하여 복구를 수행할 수 있다.
예를 들어, 복구 수행부(4410)는 영구 기록 매체에 기록된 복구 대상 블록에 아직 반영되지 않은 변경들을 반영할 수 있다.
또한, 프록시 노드(4000)의 복구 수행부(4110)는 수신한 복구 후보 블록의 로그 데이터, 수신한 복구 후보 블록의 복구 데이터, 또는 이들의 조합에서 복구 대상 블록의 로그데이터, 복구 대상 블록의 복구 데이터, 또는 이들의 조합을 추출할 수 있다. 또한, 프록시 노드(4000)의 복구 수행부(4110)는 추출한 데이터에 기초하여 복구를 수행할 수 있다.
프록시 노드(4000)의 복구 수행부(4110)가 복구 대상 블록을 복구하는 경우, 프록시 노드(4110)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 제 1 그룹으로 결정하고, 상기 결정된 1 그룹에 포함된 적어도 하나의 복구 대상 블록은 동일한 시간 구간에 복구를 수행할 수 있다. 프록시 노드(4110)는 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 함께 복구함으로써, 복구의 효율성을 증가시킬 수 있다.
프록시 노드(4000)는 복수의 복구 수행부(4110)를 포함할 수 있고, 복수의 복구 대상 블록에 대해 병렬적으로 복구를 수행할 수 있다.
또한, 복수개의 프록시 노드(4000)는 병렬적으로 복구 대상 블록의 복구를 수행할 수 있다.
마스터 노드(2000)는 복구 대상 블록의 복구가 진행되는 동안, 복구 대상 블록에 대한 다른 노드들의 접근을 제한할 수 있다. 예를 들어, 마스터 노드(2000)는 프록시 노드(4000)에 의해 복구 대상 블록들의 복구가 진행되는 동안, 복구 대상 블록이 포함된 테이블 전체에 대해 다른 노드들의 접근을 제한하지 않고, 복구가 진행되는 해당 복구 대상 블록에 대해서만 다른 노드들의 접근을 제한할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)는 로그 데이터를 판독함으로써, 적어도 하나의 복구 후보 블록을 결정할 수 있고, 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정할 수 있다. 마스터 노드(2000)는 결정된 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록을 결정할 수 있다. 그 후, 코디네이터 노드(1000)는 로그 데이터를 재판독 함으로써, 복구 대상 블록의 복구 데이터를 획득할 수 있고, 프록시 노드(4000)는 복구 데이터를 이용하여 복구 대상 블록을 복구할 수 있다. 이 경우, 프록시 노드(4000)가 복수인 경우, 각각의 프록시 노드(2000)는 병렬적으로 복구 대상 블록의 복구를 수행할 수 있다.
본 발명의 일 실시예에 따르면, 코디네이터 노드(1000)가 로그 데이터를 반복하여 판독함으로써, 복수의 프록시 노드 각각은 병렬적으로 복구 대상 블록을 복구할 수 있고, 영구 저장 매체(3000)에 저장된 블록의 복구 효율은 증진될 수 있다.
이 경우, 복구 대상 블록들이 블록 단위로 복수의 노드에 의해 복구됨으로써, 복수의 노드들이 복구를 수행할 때, 복수의 노드들 사이의 의존성이 제거될 수 있으며, 이는 복구 대상 블록들의 복구의 효율성을 증가시킨다.
또한, 블록마다 해당 블록을 수정하는 노드가 프록시 노드(4000)로 고정될 수 있기 때문에, 코디네이터 노드(1000), 마스터 노드(2000) 및 프록시 노드(4000)는 네트워크를 통해 블록을 송/수신 할 필요 없이, 복구와 관련된 데이터(예를 들어, 로그 데이터, 또는 복구 데이터 등)만 송/수신하게 되어, 네트워크의 데이터 전송량이 감소될 수 있다.
또한, 복수의 노드가 복구에 동참하고, 하나의 블록은 하나의 버퍼에만 존재하므로, 버퍼 캐시 히트 비율이 상승하여, 복구 속도가 더 빨라질 수 있다.
본 발명의 다른 실시예에 따르면, 코디네이터 노드(1000)는 복수개의 제어부(1300)를 포함할 수 있다. 코디네이터 노드(1000)는 복수개의 제어부(1300)를 통해 전술한 동작들을 병렬적으로 수행할 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능 기록매체는 일시적 기록매체 및 비-일시적 기록매체를 포함할 수 있다.
또한, 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체 및 컴퓨터 판독가능 통신 매체를 모두 포함할 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 컴퓨터 판독가능 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (11)

  1. 데이터베이스 블록을 복구(recovery)하는 방법에 있어서,
    영구 저장 매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하는 단계;
    상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하는 단계; 및
    상기 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록의 복구가 상기 적어도 하나의 복구 대상 블록 각각의 프록시 노드에 의해 병렬적으로 수행되도록 허용하기 위하여, 상기 로그 데이터를 재판독 하는 단계―상기 적어도 하나의 복구 후보 블록 중 적어도 하나의 복구 대상 블록은 상기 적어도 하나의 복구 후보 블록들 각각의 마스터 노드에 의해 결정됨―;
    를 포함하는,
    데이터베이스 블록 복구 방법.
  2. 제 1 항에 있어서 상기 데이터베이스 블록 복구 방법은,
    상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드에게 복구 후보 블록과 관련된 데이터를 전송하는 단계; 및
    상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드로부터 복구 후보 블록이 복구 대상 블록인지 여부를 나타내는 정보를 선택적으로 수신하는 단계―상기 마스터 노드는 상기 복구 후보 블록과 관련된 데이터에 포함된 정보 중 적어도 일부에 기초하여 상기 복구 후보 블록이 복구 대상 후보인지 여부를 결정함―;
    를 더 포함하는,
    데이터베이스 블록 복구 방법.
  3. 제 2 항에 있어서 상기 마스터 노드는,
    상기 수신한 복구 후보 블록과 관련된 데이터에 포함된 정보 중 적어도 일부를 참조하여, 복구 후보 블록에 반영되어야 하는 변경이 복구 후보 블록에 이미 반영 되었는지 여부 및 복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는지 여부 중 적어도 일부에 기초하여, 복구 후보 블록이 복구 대상 블록인지 여부를 결정하는,
    데이터베이스 블록 복구 방법.
  4. 제 3 항에 있어서 상기 마스터 노드는,
    복구 후보 블록에 반영되어야 하는 변경에 대한 정보가 다른 노드에 존재하는 경우, 상기 다른 노드가 상기 변경을 상기 복구 후보 블록에 반영하도록 하는,
    데이터베이스 블록 복구 방법.
  5. 제 1 항에 있어서, 상기 로그 데이터를 재판독 하는 단계는,
    상기 영구 저장 매체에 기록된 로그 데이터를 재판독하여 복구 대상 블록의 로그 데이터를 획득 하는 단계;
    를 포함하는,
    데이터베이스 블록 복구 방법.
  6. 제 5 항에 있어서 상기 데이터베이스 블록 복구 방법은,
    상기 획득한 복구 대상 블록의 로그 데이터를 상기 복구 대상 블록의 프록시 노드에게 전송하는 단계;
    를 더 포함하고,
    복구 대상 블록의 복구는 복구 대상 블록의 프록시 노드에 의해 수행되는,
    데이터베이스 블록 복구 방법.
  7. 제 1 항에 있어서 적어도 하나의 복구 후보 블록을 결정하는 단계는,
    상기 로그 데이터에 포함된 블록 주소 정보, 상기 로그 데이터에 포함된 블록 변경 시점 정보, 상기 로그 데이터에 포함된 블록 기록 시점 정보 또는 이들의 조합에 기초하여 적어도 하나의 복구 후보 블록을 결정하는,
    데이터베이스 블록 복구 방법.
  8. 제 1 항에 있어서 상기 적어도 하나의 복구 대상 블록 각각의 마스터 노드는,
    영구 저장 매체에 존재하는 복수의 블록들 중 복구 대상 블록에 대해 다른 노드들의 접근을 제한하는,
    데이터베이스 블록 복구 방법.
  9. 제 1 항에 있어서 상기 적어도 하나의 복구 대상 블록 각각의 프록시 노드는,
    상기 영구 저장 매체내에서 인접하게 위치하는 적어도 하나의 복구 대상 블록들을 제 1 그룹으로 결정하고, 상기 결정된 1 그룹에 포함된 적어도 하나의 복구 대상 블록은 동일한 시간 구간에 복구를 수행하는,
    데이터베이스 블록 복구 방법.
  10. 복수의 노드들을 포함하는 데이터베이스 시스템에 있어서,
    상기 복수의 노드들 중 코디네이터(coordinator) 노드는:
    영구저장매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하는 복구 후보 블록 결정부;
    상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하는 마스터 노드 결정부;
    영구저장매체에 기록된 로그 데이터를 재판독함으로써, 적어도 하나의 복구 대상 블록의 복구 데이터를 획득하는 복구 데이터 획득부;
    를 포함하고,
    상기 복수의 노드들 중 적어도 하나의 마스터 노드들 각각은:
    상기 적어도 하나의 복구 후보 블록 중 복구 대상 블록을 결정하는 복구 대상 블록 결정부;
    를 포함하고,
    상기 복수의 노드들 중 적어도 하나의 프록시 노드들 각각은:
    상기 획득한 적어도 하나의 복구 대상 블록의 복구 데이터에 기초하여 복구 대상 블록을 복구하는 복구 수행부;
    를 포함하고,
    상기 적어도 하나의 복구 대상 블록들 각각의 프록시 노드들은 병렬적으로 복구를 수행하는,
    데이터베이스 시스템.
  11. 컴퓨터-판독가능 저장 매체에 저장되어 노드들로 하여금 이하의 동작들을 수행하도록 하는 명령들을 포함하는 데이터베이스 복구 프로그램으로서, 상기 동작들은:
    코디네이터 노드가 영구저장매체에 기록된 로그 데이터를 판독하여 적어도 하나의 복구 후보 블록을 결정하도록 하는 동작;
    상기 코디네이터 노드가 상기 적어도 하나의 복구 후보 블록 각각의 마스터 노드를 결정하도록 하는 동작;
    상기 적어도 하나의 복구 후보 블록들 각각의 마스터 노드가 상기 적어도 하나의 복구 후보 블록들 중 적어도 하나의 복구 대상 블록을 결정하도록 하는 동작;
    상기 코디네이터 노드가 영구저장매체에 기록된 로그 데이터를 재판독함으로써, 상기 결정된 적어도 하나의 복구 대상 블록의 로그 데이터를 획득하도록 하는 동작; 및
    상기 적어도 하나의 복구 대상 블록들 각각의 프록시 노드가 상기 획득한 적어도 하나의 복구 대상 블록의 로그 데이터에 기초하여 복구 대상 블록을 복구하도록 하는 동작;
    을 포함하고,
    상기 하나 이상의 복구 대상 블록들 각각의 프록시 노드들은 병렬적으로 복구를 수행하는,
    컴퓨터-판독가능 저장 매체에 저장된 데이터베이스 복구 프로그램.
KR1020160049366A 2016-04-22 2016-04-22 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램 KR101797482B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160049366A KR101797482B1 (ko) 2016-04-22 2016-04-22 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램
US15/168,782 US10452492B2 (en) 2016-04-22 2016-05-31 Method, apparatus, and computer program stored in computer readable medium for recovering block in database system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160049366A KR101797482B1 (ko) 2016-04-22 2016-04-22 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020170141031A Division KR20170122709A (ko) 2017-10-27 2017-10-27 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램

Publications (2)

Publication Number Publication Date
KR20170120889A KR20170120889A (ko) 2017-11-01
KR101797482B1 true KR101797482B1 (ko) 2017-11-14

Family

ID=60088511

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160049366A KR101797482B1 (ko) 2016-04-22 2016-04-22 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램

Country Status (2)

Country Link
US (1) US10452492B2 (ko)
KR (1) KR101797482B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102085608B1 (ko) * 2018-12-21 2020-03-06 주식회사 티맥스데이터 복구 서버 및 컴퓨터 프로그램
CN109905316B (zh) * 2019-02-28 2022-06-03 努比亚技术有限公司 一种信息恢复的方法、终端及计算机可读存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0465019B1 (en) * 1990-06-29 1997-05-14 Oracle Corporation Method and apparatus for managing state identifiers for efficient recovery
US7415466B2 (en) * 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US7111005B1 (en) 2000-10-06 2006-09-19 Oracle International Corporation Method and apparatus for automatic database encryption
US8234517B2 (en) * 2003-08-01 2012-07-31 Oracle International Corporation Parallel recovery by non-failed nodes
US7266716B2 (en) * 2003-10-23 2007-09-04 Hewlett-Packard Development Company, L.P. Method and recovery of data using erasure coded data from stripe blocks
US7284088B2 (en) * 2003-10-23 2007-10-16 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
US8566326B2 (en) * 2004-11-05 2013-10-22 Oracle International Corporation High-performance log-based processing
US8510334B2 (en) * 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
US8315991B2 (en) * 2010-04-20 2012-11-20 International Business Machines Corporation Detecting inadvertent or malicious data corruption in storage subsystems and recovering data
JP6056453B2 (ja) * 2012-12-20 2017-01-11 富士通株式会社 プログラム、データ管理方法および情報処理装置
US9411815B1 (en) * 2013-09-26 2016-08-09 Emc Corporation System and method for improving data compression in a deduplicated storage system

Also Published As

Publication number Publication date
KR20170120889A (ko) 2017-11-01
US20170308444A1 (en) 2017-10-26
US10452492B2 (en) 2019-10-22

Similar Documents

Publication Publication Date Title
US11537659B2 (en) Method for reading and writing data and distributed storage system
US8161321B2 (en) Virtual machine-based on-demand parallel disaster recovery system and the method thereof
US9715507B2 (en) Techniques for reconciling metadata and data in a cloud storage system without service interruption
US20160321294A1 (en) Distributed, Scalable Key-Value Store
WO2021036253A1 (zh) 在区块链中并发执行交易的方法和装置
CN104965835B (zh) 一种分布式文件系统的文件读写方法及装置
US20030126163A1 (en) Method for file deletion and recovery against system failures in database management system
CN106686095A (zh) 一种基于纠删码技术的数据存储方法及装置
CN107924324A (zh) 数据访问加速器
US10430341B2 (en) Log-structured storage method and server
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
KR101797482B1 (ko) 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램
CN102833273A (zh) 临时故障时的数据修复方法及分布式缓存系统
US20170235781A1 (en) Method, server and computer program stored in computer readable medium for managing log data in database
US20230376470A1 (en) Moving Window Data Deduplication in Distributed Storage
CN107329699B (zh) 一种纠删重写方法及系统
KR101884726B1 (ko) 데이터베이스 시스템에서 블록을 판독하기 위한 방법, 장치 및 컴퓨터 판독가능 매채에 저장된 컴퓨터-프로그램
CN110263060A (zh) 一种erp电子附件管理方法及计算机设备
KR20170122709A (ko) 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램
KR101643278B1 (ko) 데이터베이스 시스템에서 스토리지 서버 관리 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램
CN108268662B (zh) 基于h5页面的社交图谱生成方法、电子装置及存储介质
CN116483284B (zh) 一种读写虚拟硬盘的方法、装置、介质及电子设备
KR20180097220A (ko) 데이터 저장 장치의 동작 방법
US11650961B2 (en) Managing replica unavailability in a distributed file system
CN113742133A (zh) 一种元数据恢复方法、装置、系统及计算机可读存储介质

Legal Events

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