KR101255391B1 - 데이터베이스 손상 복구 시스템 및 방법 - Google Patents

데이터베이스 손상 복구 시스템 및 방법 Download PDF

Info

Publication number
KR101255391B1
KR101255391B1 KR1020077025111A KR20077025111A KR101255391B1 KR 101255391 B1 KR101255391 B1 KR 101255391B1 KR 1020077025111 A KR1020077025111 A KR 1020077025111A KR 20077025111 A KR20077025111 A KR 20077025111A KR 101255391 B1 KR101255391 B1 KR 101255391B1
Authority
KR
South Korea
Prior art keywords
transaction
data
database
data item
item
Prior art date
Application number
KR1020077025111A
Other languages
English (en)
Other versions
KR20080005387A (ko
Inventor
데이비드 비. 로멧
로저 에스. 바가
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080005387A publication Critical patent/KR20080005387A/ko
Application granted granted Critical
Publication of KR101255391B1 publication Critical patent/KR101255391B1/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터 스토어 손상 복구에 관한 것이다. 구체적으로, 본 발명은 데이터베이스로부터의 유효하거나 일관된 트랜잭션들의 디커미팅 또는 제거를 방지하는 방식으로 손상 데이터를 식별하기 위한 시스템 및 방법에 관한 것이다. 이것은 트랜잭션이 판독하는 데이터 항목들의 식별자들을 기록함으로써 적어도 부분적으로 달성될 수 있다. 또한, 본 발명은 손상된 트랜잭션 및 관련 손상 데이터 항목들에 의해 발생하는 다운 시간 및 데이터베이스 이용 불가를 크게 줄이기 위한 멀티 버전(또는 트랜잭션 시간) 데이터베이스의 이용을 제공한다. 따라서, 백업이 설치될 필요가 없으며, 오리지널 손상 트랜잭션 및 손상 데이터를 판독한 트랜잭션들에 의한 갱신만이 디커미트되거나 제거되는 것이 필요하다.
데이터베이스 관리 시스템, 데이터베이스 손상 복구, 손상 데이터, 손상 트랜잭션, 데이터 항목

Description

데이터베이스 손상 복구 시스템 및 방법{DATABASE CORRUPTION RECOVERY SYSTEMS AND METHODS}
본 발명은 일반적으로 데이터베이스 관리 시스템에 관한 것으로서, 보다 상세하게는 복구 시스템 및 방법에 관한 것이다.
트랜잭션들은 ACID 특성을 갖는 것으로 가정된다. 구체적으로, 트랜잭션들은 원자성을 갖고(atomic), 일관되고, 격리되고, 영속적(durable)이어야 한다. 데이터베이스 메커니즘들은 원자성(atomicity), 격리 및 영속성, 즉 "AID" 특성을 강제한다. 사용자 기입 트랜잭션 코드는 일관성("C")을 책임지는데, 이는 트랜잭션이 이전에 일관된 상태를 취하고 이를 갱신하여 새로운 일관된 상태를 생성해야 한다는 것을 의미한다. 불행하게도, 사용자 트랜잭션들은 결함이 생길 수 있으며, 일관성이 없거나, 유효하지 않거나, 손상된 상태가 될 수 있다.
데이터베이스 시스템들을 이용하는 하나의 유력한 이유는 이들이 저장하는 데이터의 무결성을 보증한다는 점이다. 데이터베이스 시스템들은 모두가 실행되거나 아무 것도 실행되지 않는 것을 보장하는 원자성을 제공하는 트랜잭션들을 구현하며, 따라서 예를 들어 계좌들 간에 송금되도록 의도된 돈이 인출되거나 대변에 기입되지만 이들 둘 다는 이루어지지 않는 부분적인 트랜잭션 실행들을 방지한다. 데이터베이스 시스템들은 재수행(redo) 복구 및 강제 기록을 구현하며, 따라서 데이터베이스가 트랜잭션의 갱신들에 대한 책임을 인정하면, 이들 갱신은 데이터베이스 상태에 포함되는 것이 보증된다. 즉, 갱신들은 영속적이다. 이러한 시스템들은 또한 격리를 구현하며, 따라서 하나의 트랜잭션의 결과들은 다른 트랜잭션의 결과들과 충돌하지 않으며, 이에 따라 트랜잭션들이 순차적으로 연속 실행된다는 환상을 제공하게 된다. 그러나, 이러한 공지 기술들은 데이터 손상의 문제를 직접 다루지 못한다.
데이터는 많은 방법으로 손상될 수 있다. 손상될 수 있는 하나의 방법은 디스크가 완전히 고장나거나 일부 비트들이 손실되는 소프트 고장을 갖는 것이다. 이것은 매체 고장이라고 하며, 그의 처리는 매체 복구라고 한다. 데이터베이스 시스템들이 매체 복구를 제공하는 다양한 방법이 존재한다. 예를 들어, 미러 또는 소정 형태의 RAID(Redundant Array of Independent Disks)를 이용하는 복제는 재구성될 손상 또는 불량 데이터에 대한 충분한 리던던시를 제공할 수 있다. 보다 고전적으로, 데이터베이스 시스템들은 고속 기입 및 판독을 위해 최적화된 특수 형태의 복제본인 정규 백업들(예를 들어, 테이프 백업)을 생성한다. 트랜잭션들은 백업들 간에 실행되고 커미트될 수 있으므로, 매체 복구는 백업의 로딩(복원이라고 함) 및 매체 복구 로그를 이용한 재수행 복구의 적용을 수반한다. 매체 복구 로그는 백업이 취해진 이후의 모든 트랜잭션 갱신을 기록하는 특수 로그이다. 매체 복구 로그는 복원된 백업을 롤 포워드(roll forward)하는 데 사용될 수 있다. 그러나, 이 프로세스는 어려우며, 통상적으로 다소 긴 중단으로 이어진다.
그럼에도, 매체 복구는 잘못된 트랜잭션들의 문제를 직접 다루지 못한다. 잘못된 트랜잭션들에 의해 발생하는 피해는 특히 치명적인데, 이는 이들 트랜잭션에 의해 기입된 데이터가 손상될 뿐만 아니라, 후속적으로 이 데이터를 판독한 모든 트랜잭션에 의해 기입된 데이터도 손상되기 때문이다.
잘못된 트랜잭션들에 의해 발생하는 데이터 손상을 줄이는 데 사용되는 하나의 기술은, 백업이 복원되고 매체 복구 로그가 데이터베이스 상태를 롤 포워드하는 데 사용되는 전술한 매체 복구 기술에 기초한다. 그러나, 무턱대고 적용할 경우, 매체 복구는 단지 손상 데이터를 재구성할 것이다. 이러한 사고를 방지하기 위하여, 매체 복구 프로세스는 통상적으로 데이터베이스의 현재 상태가 복구되기 전에 중지된다. 구체적으로, 매체 복구는 손상 트랜잭션이 실행되기 바로 전까지만 계속되는 것이 허용된다. 이것은 적시 복구(point in time recovery)라고 하며, 사실상 손상 트랜잭션의 효과를 제거한다.
불행하게도, 적시 복구 시스템들은 그것을 사용하는 비용, 및 그것이 데이터베이스, 그의 사용자 및 데이터베이스 관리 담당자에 미치는 영향 양자의 면에서 과감한 수단이다. 적시 복구는 백업이 데이터베이스를 복원하는 데 사용되고 매체 복구 로그가 데이터베이스의 상태를 손상 트랜잭션 바로 이전의 원하는 시간으로 롤 포워드하는 데 사용되는 동안 긴 중단을 유발한다는 점에서 수행에 비용이 많이 든다. 따라서, 이것은 데이터베이스 가용성을 심각하게 손상시킬 수 있다. 더욱이, 손상 트랜잭션보다 나중에 커미트된 모든 트랜잭션이 디커미트된다. 고성능 트랜잭션 애플리케이션에서, 이것은 수백, 심지어 수천의 트랜잭션들이 디커미트되 는 결과를 낳을 수 있다. 이들 트랜잭션은 손상에 의해 발생하는 피해를 제한하는 소정의 방식으로 실행하기 위해 후에 다시 제출된다. 이것은 매우 어려운 프로세스인데, 이는 적어도 부분적으로는 임의의 이들 트랜잭션의 재실행이 그들의 오리지널 실행과 다른 결과를 낳을 수 있기 때문이다.
<발명의 요약>
아래는 본 발명의 소정의 양태들의 기본적인 이해를 제공하기 위하여 본 발명의 간략화된 요약을 제공한다. 이 요약은 본 발명의 외연적인 개요는 아니다. 이는 본 발명의 핵심/중요 요소들을 식별하거나 본 발명의 범위를 기술하고자 하는 의도는 없다. 그의 유일한 목적은 후술하는 상세한 설명에 대한 서문으로서 본 발명의 소정의 개념들을 간략한 형태로 제공하고자 하는 것이다.
요컨대, 본 발명은 손상을 제거하기 위한 시스템 및 방법에 관한 것이다. 본 발명의 일 양태에 따르면, 손상시 유효 트랜잭션들의 디커미팅 및 제거를 크게 줄이거나 방지하는 시스템 및 방법이 제공된다. 구체적으로, 결함이 있거나 손상된 트랜잭션으로부터 결과되는 최초 손상 데이터 항목이 식별될 수 있다. 이어서, 이 초기 손상 데이터 항목은 도출되는 손상 데이터 항목들을 결정하는 데 사용될 수 있는데, 이들은 이들의 초기 손상 데이터 항목들에 대한 종속성에 의해 손상된다. 본 발명의 일 양태에 따르면, 도출된 손상 항목들의 식별을 용이하게 하기 위해 로그가 유지될 수 있다. 이 로그는 트랜잭션이 기입 또는 갱신한 데이터 항목들을 식별하는 통상의 레코드들 외에 트랜잭션이 판독한 데이터 항목들을 식별하는 하나 이상의 레코드를 포함할 수 있다. 이어서, 초기 및 도출 또는 종속 손상 항목들 양자는 이들을 유효 데이터 항목들과 구별하기 위하여 데이터 스토어 상에 무효로서 표기될 수 있다.
본 발명의 일 양태에 따르면, 제공되는 시스템 및 방법은 무효 데이터를 가진 데이터 스토어에 대한 상호작용 및 트랜잭션 처리를 가능하게 한다. 즉, 트랜잭션 처리는 손상된 데이터를 생성하는 손상 또는 결함 있는 트랜잭션에 의해 거의 인터럽트되지 않고 계속될 수 있다.
본 발명의 다른 양태에 따르면, 무효 데이터 항목들은 무효 데이터의 검사 및 가능하다면 변경을 가능하게 하기 위해 쿼리될 수 있다. 예를 들어, 무효 데이터를 식별하는 특수 키워드를 이용하는 SQL 쿼리가 이용될 수 있다.
본 발명의 다른 양태에 따르면, 교정 동작이 생성되고, 데이터 항목은 물론 그의 종속 항목들에 적용되어, 무효 데이터를 다시 한번 유효하게 만들 수 있다.
본 발명의 또 다른 양태에 따르면, 본 발명의 다른 양태들과 함께 멀티 버전 또는 트랜잭션 시간 데이터베이스가 이용될 수 있다. 트랜잭션 시간 데이터베이스는 손상 검출시에 백업 데이터베이스를 검색하고 설치할 필요를 제거하며, 따라서 특히 손상 트랜잭션들에 대처할 수 있는 데이터베이스 시스템의 능력을 크게 향상시킨다.
본 발명의 양태들은, 여러 가지 중에서 구체적으로 손상 후 발생하는 유효 트랜잭션들에 관련된 디커미팅된 트랜잭션들의 수를 크게 줄이는 손상 복구의 향상을 제공한다. 또한, 트랜잭션 시간 데이터베이스를 이용하여 손상 데이터를 처리 하기 위한 프로세스는 현재 통상의 적시 복구에 대한 경우보다 훨씬 더 짧은 중단을 달성한다.
상기 및 관련 목적을 달성하기 위해, 본 발명의 소정의 예시적인 양태들은 아래의 설명 및 첨부 도면들과 관련하여 본 명세서에 설명된다. 이들 양태는 본 발명이 실시될 수 있는 다양한 방법을 나타내는데, 이들 모두는 본 발명에 포함되는 것으로 의도된다. 본 발명의 다른 이점 및 신규한 특징은 첨부된 도면들과 함께 고려될 때 아래의 발명의 상세한 설명으로부터 명백해질 수 있다.
도 1은 본 발명의 일 양태에 따른 손상 복구 시스템의 블록도이다.
도 2는 본 발명의 일 양태에 따른 격리 컴포넌트의 블록도이다.
도 3은 본 발명의 일 양태에 따른 트랜잭션 로그의 블록도이다.
도 4a는 예시적인 손상 복구 시스템과 연관된 데이터 스토어 및 로그의 그래픽 도면이다.
도 4b는 예시적인 손상 복구 시스템과 연관된 데이터 스토어 및 로그의 그래픽 도면이다.
도 5는 본 발명의 일 양태에 따른 손상 복구 시스템의 블록도이다.
도 6은 본 발명의 일 양태에 따른 쿼리 인터페이스 시스템의 블록도이다.
도 7은 본 발명의 일 양태에 따른 손상 복구 시스템의 블록도이다.
도 8은 본 발명의 일 양태에 따른 손상 복구 시스템의 블록도이다.
도 9는 본 발명의 일 양태에 따른 손상 복구를 용이하게 하는 시스템의 블록 도이다.
도 10은 본 발명의 일 양태에 따른 손상 방법의 흐름도이다.
도 11은 본 발명의 일 양태에 따른 손상 복구 시스템의 지원 방법의 흐름도이다.
도 12는 본 발명의 일 양태에 따른 데이터 스토어와 상호작용하는 방법의 흐름도이다.
도 13은 본 발명의 일 양태에 따른 손상 데이터와 상호작용하는 방법의 흐름도이다.
도 14는 본 발명의 일 양태에 따른 적절한 운영 환경을 나타내는 개략 블록도이다.
도 15는 본 발명과 상호작용할 수 있는 샘플 컴퓨팅 환경의 개략 블록도이다.
이제, 첨부 도면들을 참조하여 본 발명을 설명하는데, 도면들 전반에서 동일 번호는 동일하거나 대응하는 요소를 지칭한다. 그러나, 도면들 및 그에 대한 상세한 설명은 본 발명을 개시된 특정 형태로 제한하는 것을 의도하지 않는다는 것을 이해해야 한다. 오히려, 본 발명은 본 발명의 사상 및 범위 내에 있는 모든 변형, 균등물 및 대안들을 포함한다.
본 명세서에서 사용되는 "컴포넌트" 및 "시스템" 등의 용어는 컴퓨터 관련 엔티티, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어 또는 실행중인 소프트웨어를 지칭하는 것을 의도한다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 인스턴스, 실행 가능물, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이에 제한되는 것은 아니다. 예를 들어, 컴퓨터 상에서 실행되는 애플리케이션 및 컴퓨터 양자는 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 상주하거나, 하나의 컴포넌트가 하나의 컴퓨터 상에 국지화되고, 그리고/또는 둘 이상의 컴퓨터 사이에 분산될 수 있다.
"예시적"이라는 단어는 본 명세서에서 사례, 실례 또는 예증으로서 기능함을 의미하는 데 사용된다. 본 명세서에서 "예시적인" 것으로 기술되는 임의의 양태 또는 설계는 다른 양태들 또는 설계들보다 바람직하거나 이로운 것으로 해석될 필요는 없다.
더욱이, 본 발명은 개시되는 발명을 구현하도록 컴퓨터를 제어하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 임의 조합을 생성하기 위하여 표준 프로그래밍 및/또는 엔지니어링 기술들을 이용하는 방법, 장치 또는 제조품으로서 구현될 수 있다. 본 명세서에서 사용되는 "제조품"이라는 용어는 임의의 컴퓨터 판독가능 장치, 반송파 또는 매체로부터 액세스할 수 있는 컴퓨터 프로그램을 포함하는 것을 의도한다. 예를 들어, 컴퓨터 판독가능 매체는 자기 저장 장치(예를 들어, 하드 디스크, 플로피 디스크, 자기 스트립 등), 광 디스크(예를 들어, CD, DVD 등), 스마트 카드 및 플래시 메모리 장치(예를 들어, 카드, 스틱, 키 드라이브 등)를 포함할 수 있지만 이에 제한되는 것은 아니다. 또한, 반송파(carrier wave)는 전자 메일의 송수신 또는 인터넷 또는 LAN과 같은 네트워크의 액세스에 사용되는 것들과 같은 컴퓨터 판독가능 전자 데이터를 반송하는 데 사용될 수 있다는 것을 이해해야 한다. 물론, 이 분야의 전문가들은 본 발명의 범위 또는 사상을 벗어나지 않고도 이러한 구성에 대한 많은 수정이 이루어질 수 있음을 이해할 것이다.
먼저, 도 1을 참조하면, 본 발명의 일 양태에 따른 손상 복구 시스템(100)이 도시되어 있다. 손상 복구 시스템(100)은 손상 검출 컴포넌트(110), 격리 컴포넌트(120), 트랜잭션 로그(130) 및 데이터 스토어(140)를 포함한다. 데이터 손상은 물리적 및/또는 논리적일 수 있다. 예를 들어, 환경적인 영향들은 하나 이상의 데이터 항목을 변경하는 소프트 에러를 유발할 수 있다. 추가적으로 또는 대안으로, 의도하지 않은 결과를 생성하는 트랜잭션이 실행될 수 있다. 따라서, 손상 검출 컴포넌트(110)는 데이터 스토어(140)는 물론 트랜잭션들을 모니터링할 수 있다. 컴포넌트(110)는 수신 입력에 기초하여 하나 이상의 데이터 항목의 손상을 검출하고, 그리고/또는 검출을 용이하게 할 수 있다. 검출된 데이터 손상의 식별자 및 다른 정보가 격리 컴포넌트(120)로 전송될 수 있다. 격리 컴포넌트(120)는 이러한 최초 손상 데이터 항목(들)을 수신하고, 종속 데이터 항목들을 결정할 수 있다. 달리 말하면, 격리 컴포넌트(120)는 최초 손상 데이터로부터 도출되는 추가 데이터 항목들을 식별할 수 있는데, 예를 들어 트랜잭션이 손상 데이터를 판독하고 이 데이터를 이용하여 다른 데이터 항목을 생성하고 저장한다. 저장된 데이터 항목은 또한 그의 손상 항목에 대한 종속성으로 인해 손상된 것으로 보여질 수 있다. 격리 컴포넌트(120)는 트랜잭션 로그(130)를 이용하여 종속 손상 데이터의 식별을 용이하게 할 수 있다. 트랜잭션 로그(130)는 컴퓨터 판독가능 매체 상에 상주하는 데이터 스토어일 수 있다. 로그(130)는 각각의 트랜잭션에 의해 판독되고 기입된 데이터 항목들을 포함할 수 있다. 최초 손상 데이터 항목 및 이로부터 도출된 손상 데이터 항목들의 식별시, 격리 컴포넌트(120)는 이들 손상 데이터 항목을 데이터 스토어(140) 상의 나머지 데이터로부터 격리할 수 있다. 데이터 스토어(140)는 데이터 항목들의 영구 저장을 제공하는 데이터베이스와 같은 제조품 또는 컴퓨터 판독가능 매체이다. 본 발명의 일 양태에 따르면, 데이터 스토어(140)는 후술하는 바와 같은 멀티 버전 또는 트랜잭션 시간 데이터베이스일 수 있다. 본 발명의 일 양태에 따르면, 손상 데이터는 손상 데이터를 무효로서 표기함으로써 격리 컴포넌트(120)를 통해 유효 데이터로부터 격리될 수 있다. 예를 들어, 격리 컴포넌트(120)는 각각의 손상 데이터 항목을 데이터 항목 헤더 또는 다른 관련 메타데이터 내에 무효로서 표기할 수 있다.
도 2를 참조하면, 본 발명의 일 양태에 따른 격리 컴포넌트(120)가 도시되어 있다. 격리 컴포넌트(120)는 검출 컴포넌트(110; 도 1)로부터 손상 트랜잭션의 식별자를 수신하고, 종속 데이터 항목들을 결정하며, 손상 데이터를 유효 데이터로부터 격리한다. 이러한 기능을 용이하게 하기 위하여, 격리 컴포넌트(120)는 종결(closure) 컴포넌트(210) 및 무효자 컴포넌트(220)를 포함할 수 있다. 종결 컴포넌트(210)는 손상 데이터에 의해 영향을 받은 트랜잭션들에 의해 기입된 모든 데이터의 종결을 계산한다. 본질적으로, 이러한 프로세스는 데이터 스토어에서 손상되어 있는 정확한 데이터 항목들 또는 그 버전들을 나타내는 C(DS)의 계산을 수반한다. 이것은 최초 손상 데이터 항목 또는 데이터의 버전 및 손상 데이터를 판독한 하나 이상의 트랜잭션에 의해 기입된 항목들 또는 데이터의 버전들에 의해 표현될 수 있다. 구체적으로, 이것은 C(Tc)=W(Tc)로 표현될 수 있으며, 여기서 Tc는 지금 손상되는 트랜잭션이고, W(Tc)는 Tc에 의해 기입된 정확한 데이터 항목들을 나타낸다. 이 계산은 후술하는 바와 같이 트랜잭션 로그를 통해 용이해질 수 있다. 더욱이, 종결 컴포넌트(210)는 손상된 것으로 알려진 트랜잭션들에 의해 기입되고 이어서 나중에 다른 트랜잭션에 의해 중복 기입된 데이터 항목들을 설명할 수 있다. 이 값은 처음에는 손상되었지만, 손상된 것으로 알려지지 않은 트랜잭션에 의해 중복 기입된 때 다시 유효하게 되었다. 종결 컴포넌트(210)가 최초 손상 항목 및 그로부터 도출된 것들을 포함하는 손상된 모든 데이터 항목을 결정하면, 이러한 정보는 무효자 컴포넌트(220)로 전송될 수 있다. 이어서, 무효자 컴포넌트(220)는 손상 데이터 항목들을 무효로 표기함으로써 이들을 다른 항목들로부터 격리할 수 있다. 예를 들어, 데이터 항목과 연관된 헤더 정보 또는 메타데이터는 그 데이터 항목 또는 그의 버전이 무효라는 것을 지시하도록 표기될 수 있다. 따라서, 이러한 데이터 항목들은 정상 트랜잭션들에게는 보이지 않을 것이다. 따라서, 데이터 스토어(140; 도 1)는 셧다운되고, 백업이 로딩되고, 손상 바로 이전의 시점으로 롤 포워드될 필요가 없다. 더욱이, 완전히 유효한 트랜잭션들은 디커미트되고, 이어서 실행을 위해 다시 제출될 필요가 없다. 여기서, 손상된 트랜잭션들 및 관련 데이터 항목들만이 디커미트된다. 또한, 데이터 스토어는 연장된 기간 동안 셧다운되고 트랜잭션 처리를 위해 이용가능하지 못하게 될 필요가 없다.
도 3은 본 발명의 일 양태에 따른 트랜잭션 로그(130)를 나타낸다. 트랜잭션 로그(130)는 트랜잭션들 및 데이터 항목들 및/또는 버전들에 관한 정보를 포함하는 스토어이다. 로그(130)는 데이터베이스 또는 임의의 다른 컴퓨터 판독가능 매체 또는 제조품에 저장될 수 있다. 도 3에 예시된 바와 같이, 트랜잭션 로그(130)는 판독 레코드(320) 및/또는 기입 레코드(330)를 포함하는 하나 이상의 트랜잭션 엔트리(310)를 포함할 수 있다. 모든 커미트된 트랜잭션은 로그(130)에 기록될 수 있다. 구체적으로, 트랜잭션에 의해 판독된 모든 데이터 항목 또는 버전들은 판독 레코드(들)(320)에 기록된다. 또한, 트랜잭션에 의해 기입 또는 갱신된 모든 데이터 항목 또는 버전들은 기입 또는 갱신 레코드(들)(330)에 표시된다.
"ACID" 트랜잭션들에서 "C"는 일관성을 나타내는데, 이는 트랜잭션 코드의 신뢰성이다. 트랜잭션 전체가 실행될 때, 이것은 본질적으로 하나의 일관된 데이터 스토어 상태에서 다른 상태로의 전이를 행하는 것을 약속한다. 따라서, 트랜잭션이 잘못되어, 데이터 스토어 상태를 손상시키는 경우에는, 필연적으로 트랜잭션의 전체 결과가 손상을 표시한다. 따라서, 트랜잭션은 데이터 스토어를 손상시키거나 손상시키지 않는다.
트랜잭션은 그 전체가 손상되거나 일관되므로, 트랜잭션의 동작들, 즉 판독 및 기입 양자는 전체로서 처리될 수 있다. 결과적으로, 트랜잭션 내에서 판독이 언제 발생하였는지를 기록 및/또는 기억할 필요가 없다. 임의의 손상 데이터를 판독하는 트랜잭션은, 손상 데이터가 갱신이 이루어진 후에 판독될 때에도 손상된 갱신을 생성할 것이다. 손상 판독 전에 발생한 갱신을 그 판독 후에 발생한 갱신과 구별하려고 시도할 경우 일관된 결과를 생성하는 것은 전혀 가능하지 않다. 따라서, 트랜잭션 판독이 트랜잭션 갱신과 관련하여 언제 발생하는지를 기억하는 것은 중요하지 않다. 이것은 트랜잭션에 대한 모든 판독 정보를 트랜잭션 커미트 바로 전에 기입될 수 있는 단일 로그 레코드로 통합하는 것을 허가한다. 로그 레코드가 너무 커서 쉽게 관리될 수 없는 경우, 로그 레코드는 다수의 레코드로 분할될 수 있다. 대안으로, 단일 판독 로그 레코드가 사용될 수 있다.
모든 레코드가 로그(130)에 기록될 필요는 없다는 점에 유의해야 한다. 생리학적 로그 동작들을 이용하는 복구 방법에서, 이들 동작은 변경된 데이터를 기록하지만, 모든 경우에 변경 데이터가 기입되기 전에 판독되는 것으로 가정한다. 따라서, 판독 로그 레코드에 갱신 데이터의 판독들을 포함시키는 것은 불필요할 수 있다. 트랜잭션에 의해 갱신되지 않은 데이터의 판독들만이 포함될 필요가 있다. 갱신 데이터에 대한 판독들은 이미 그들의 갱신 또는 기입 로그 레코드를 통해 기록된다.
도 1을 다시 참조하면, 데이터 스토어 컴포넌트(140)는 본 발명의 일 양태에 따른 트랜잭션 시간 또는 멀티 버전 데이터베이스일 수 있다. 트랜잭션 시간 데이터베이스는 데이터베이스의 모든 이전 상태를 저장하고 액세스 가능하게 한다. 각각의 트랜잭션 실행은 새로운 데이터베이스 상태를 생성한다. 따라서, 저장할 다수의 상태가 존재한다. 그러나, 트랜잭션들은 통상적으로 데이터베이스 상태의 매우 작은 부분만을 변경하므로, 데이터의 대부분은 많은 상태 사이에 공유될 수 있다. 본질적으로, 각각의 데이터베이스 갱신은 변경되는 데이터의 새로운 버전을 도입한다. 이어서, 그러한 각각의 버전은 트랜잭션의 시간으로 타임스탬핑될 수 있다. 이러한 유형의 데이터베이스에 대한 한 유형의 쿼리는 소정의 선택 시간 당시에 데이터베이스의 상태를 묻는 "당시(as of)" 쿼리이다. 이 쿼리는 "당시" 시간에 선행하는 최종 타임스탬프를 가진 데이터를 찾음으로써 회답된다. 쿼리를, 요청 시간 당시에 데이터베이스 상태를 구성하는 바로 그 데이터로 지향시키는 데이터에 대한 시간 기반 인덱스를 구성하는 것이 가능하다.
트랜잭션 시간 데이터베이스는 데이터베이스의 모든 이전 상태를 포함하므로, 백업의 기능을 제공할 수 있다. 즉, 이것은 통상적으로 행해지는 바와 같이 현재의 데이터베이스 상태를 재구성하도록 상태를 롤 포워드하기 위해 매체 복구 로그가 사용될 수 있는 데이터베이스의 이전 상태를 제공한다. 그러나, "백업"은 어떠한 복원 프로세스도 필요로 하지 않는데, 이는 과거 상태들이 항상 온라인이기 때문이다. 따라서, 큰 가용성 중지가 즉시 회피된다. 이러한 방법의 추가적인 이점은 "백업"이 "당시" 쿼리 및 소정 기간 동안 데이터베이스 내의 소정의 레코드들의 이력을 묻는 시간 여행 쿼리와 같은 다양한 시간 쿼리를 이용하여 쿼리될 수 있다는 것이다.
통상의 백업에서와 같이, 트랜잭션 시간 데이터베이스 백업도 "적시" 복구를 제공하는 데 사용될 수 있으며, 따라서 데이터 손상으로부터 결과되는 임의의 중지 기간을 크게 줄일 수 있다는 것을 이해해야 한다. 이것은 손상이 발생한 후에 도입된 모든 데이터 버전을 제거함으로써 달성될 수 있다. 그러나, 이것 단독으로는 디커미트된 트랜잭션들의 수를 줄이는 것과 관련하여 아무것도 하지 못한다.
본 명세서에 기술되는 본 발명의 양태들은 특히 트랜잭션 판독들을 기록함으로써 디커미트된 트랜잭션들의 수를 줄이는 시스템 및 방법을 제공한다. 또한, 손상된 데이터 항목들이 제거되거나, 적어도 정상적인 쿼리에 보여지지 않게 될 수 있다. 트랜잭션 시간 데이터베이스의 백업으로서의 이용과 결합된 이러한 기술 혁신의 결과는 손상으로부터 복구를 제공하는 중지 기간이 거의 제거되거나 디커미트된 트랜잭션들의 수가 손상된 데이터를 판독하는 바로 그 트랜잭션들로 엄청나게 줄어든다는 것이다.
전술한 바와 같이, 트랜잭션 시간 데이터베이스는 타임스탬프에 의해 각각 식별되는 다수의 데이터 버전을 저장한다. 트랜잭션이 실행될 때, 트랜잭션은 그의 실행을 위한 타임스탬프를 할당받는다. 트랜잭션들의 타임스탬프들은 트랜잭션들의 직렬화 순서와 일치할 수 있다. 트랜잭션의 타임스탬프는, 트랜잭션이 정확하게 언제 그의 버전이 현재 버전으로 되는지를 식별하기 위해 기입하는 데이터의 버전들에 저장될 수 있다. W(T)는 T에 의해 기입되는 데이터의 정확한 버전들, 구체적으로 트랜잭션의 타임스탬프로 스탬핑된 버전들을 나타낸다. 직렬화 가능 트랜잭션들에 대해, 동일한 타임스탬프는 트랜잭션에 의해 판독되는 데이터의 버전들, 즉 트랜잭션의 타임스탬프에 의해 표시되는 현재의 "당시" 시간 버전들을 식별한다.
다른 형태의 동시 실행(concurrency) 제어에 대해, 판독 데이터의 버전들에 대한 시간은 변할 수 있다. 모든 경우에서 정확하게 어느 버전이 판독되는 버전인지를 식별할 필요가 없다. 예를 들어, 스냅샷 격리에 있어서, 이 시간은 트랜잭션의 시작 시간이다. 판독들이 반복 가능할 필요는 없는 등급 2의 트랜잭션들에 대해, 판독되는 데이터의 버전들을 식별하는 데 사용되는 여러 타임스탬프가 존재할 수 있다. 모든 경우에서, R(T)는 트랜잭션 T에 의해 판독되는 데이터의 정확한 버전들을 나타내는 데 사용된다. 판독되는 데이터의 버전들을 식별하는 데 사용되는 시간들은 R(T)를 정확하게 정의하도록 주의 깊게 기록되어야 한다.
도 2를 다시 참조하면, 종결 컴포넌트(210)가 손상 데이터에 의해 영향을 받은 트랜잭션들에 의해 기입된 모든 데이터의 종결을 계산하는 데 사용된다는 점을 상기한다. 이 프로세스는 데이터베이스 내에 손상되어 있는 데이터의 정확한 버전들을 나타내는 C(DB)의 계산을 수반한다. 이것은 데이터의 최초 손상 버전들 및 손상 데이터를 판독한 트랜잭션들에 의해 기입된 데이터의 버전들에 의해 표현될 수 있다. 아래의 수학식들은 데이터베이스 상에 실행되는 예시적인 종결 계산의 양태들을 정의한다.
C(Tc)0=W(Tc)
여기서, Tc는 손상된 것으로 알려진 트랜잭션이다.
C(Tc)i+1=C(Tc)i∪{W(Ti +1)│R(Ti +1)∩C(Tc)i≠φ}
여기서, Ti +1은 TS(Ti +1)의 타임스탬프이며, TS(Ti)<TS(Tj)<TS(Ti +1) 및 R(Tj)∩ C(Tc)i≠φ가 되도록 하는 어떠한 트랜잭션 Tj도 존재하지 않는다.
C(Tc)=C(Tc)j
따라서, TS(Tj)<TS(Tj +1) 및 R(Tj +1)∩C(Tc)j≠φ가 되는 어떠한 트랜잭션 Tj +1도 존재하지 않는다.
데이터 스토어(140; 도 1)는 또한 본 발명의 일 양태에 따라 통상의 데이터베이스일 수 있다. 전술한 동일 계산이 버전 식별자를 간단히 제거함으로써 통상의 데이터베이스에서 잠재적으로 손상된 데이터를 식별하는 데 사용될 수 있다는 점에 유의해야 한다. 이것은 본질적으로 데이터 항목의 모든 손상 버전을 현재 데이터베이스에 존재하는 데이터의 단일 손상 인스턴스로 통합한다. 고려되는 유일한 트랜잭션이 손상 트랜잭션 후에 실행되는 트랜잭션인 한은, 이 계산도 유효할 것이다. 이것은 최초 손상에 의해 영향을 받지 않은 트랜잭션들의 디커미팅을 회피하는 데 이용될 수 있다.
명확화 및 이해를 용이하게 하기 위하여, 도 4a 및 4b와 관련하여 손상 예가 설명된다. 제한적이 아닌 예로서, 도 4a의 예(400a)에 의해 제공되는 바와 같이 손상 데이터를 가진 트랜잭션 시간 데이터베이스(410) 및 이와 연관된 트랜잭션 로그(420)가 존재하는 것으로 가정한다. 이 사례에서, 데이터베이스(410)는 4개의 데이터 항목 또는 변수, 즉 W, X, Y 및 Z는 물론 각 항목의 다수의 버전을 포함한다. 각 항목은 시간 0에서 초기값, 즉 W=10, X=20, Y=30 및 Z=40을 갖는다. 트랜 잭션 로그(420)는 판독 데이터 항목들 및 기입 항목들을 포함하는 리스트 또는 트랜잭션들을 포함한다. 제1 트랜잭션은 시간 1(T1)에서, 시간 0(X0)에서 X의 버전이 판독되었고 시간 1(T1)에서 새로운 버전이 생성되어(X1), X의 새로운 버전이 21임을 표시한다. 시간 2(T2)에서, W의 초기값(W0) 및 Y의 초기값(Y0)을 판독하고 W의 새로운 버전(W2)을 기입하는 트랜잭션이 실행되었다. 로그는 시간 6(T6)까지 계속된다. 시간 T1에서 제1 트랜잭션이 손상된 것으로 결정되는 것으로 가정한다. 따라서, 그의 기입 세트(X1)는 손상되었으며, 어두운 음영 등을 통해 도시된다. 격리 컴포넌트(도 1 및 2)의 종결 컴포넌트(210; 도 2)에 의한 분석은 시간 3(T3)에서 트랜잭션 3도 X1을 판독하고 새로운 값 X3를 기입함에 따라 손상됨을 나타낼 수 있다. 이것은 수평 줄무늬 선으로 도시된 바와 같이 무효자 컴포넌트(220; 도 2)에 의해 손상된 것으로 표기될 수 있다. 또한, 시간 5(T5)에서 트랜잭션 5는 트랜잭션 3에 의해 기입된 X3를 판독하며, 따라서 그의 기입(Z5)도 손상되고, 줄무늬 선으로 표기된다. 마지막으로, 시간 6(T6)에서 트랜잭션 6은 Z5를 판독하고 W6을 기입하며, 따라서 시간 6(T6)에서 W의 버전도 손상되고 줄무늬 선으로 표기된다.
데이터의 손상된 버전들이 무효로 표기된 후, 시스템은 트랜잭션 처리가 재개되는 것을 허가한다. 이러한 실행의 결과는 무효 데이터를 기입하는 트랜잭션들이 결코 실행되지 않은 것 같아야 한다. 즉, 그 의도는 무효 항목들을 생성하는 트랜잭션들을 "디커미트"하여 이들의 효과를 제거하는 것이다. 따라서, 데이터 항 목 d의 무효 버전([I(d)])이 판독될 때, 시스템은 이 버전을 무시하고, d의 버전들을 통해 시간적으로 역 스캐닝하여 유효한 첫 번째의 보다 이른 버전을 찾는다. 이것은 반환되는 d의 값이다.
개념적으로, d의 보다 이른 손상되지 않은 버전의 시간 범위는 d의 모든 연속적으로 이어지는 손상 버전들의 범위를 포함하도록 확장된다. 이것은 도 4b에서 명료화를 위해 위의 도 4a의 예를 이용하여 도시되어 있다. 손상 데이터가 표기될 때, 그 효과는 이들 버전을 논리적으로 제거하는 것이다. 이것은 사실상 진행되는 데이터 항목들 또는 변수들에 대한 값들이 W=12, X=20, Y=34 및 Z=40이라는 것을 의미한다. 이러한 이해와 함께, 데이터베이스 상태를 이용하여, 무효로 표기된 데이터의 버전들을 적소에 배치함으로써 손상(들)을 기록할 수 있는데, 이는 매우 유용한 능력일 수 있다.
갱신이 수행될 때, 각 데이터 항목의 새롭고 유효한 버전이 도입되고 기입된다. 이 버전은 예를 들어 트랜잭션의 커미트에서 트랜잭션에 할당된 시간인 시작 시간으로 타임스탬핑될 수 있다. 갱신 트랜잭션들이 판독할 때, 이들은 손상되지 않은 이전 것들을 판독할 수 있으며, 갱신되는 것은 이들 손상되지 않은 이전 것들이다.
도 5를 참조하면, 본 발명의 일 양태에 따른 손상 복구 시스템(500)이 도시되어 있다. 도 1의 시스템(100)과 마찬가지로, 시스템(500)은 손상 검출 컴포넌트(110), 격리 컴포넌트(120), 트랜잭션 로그(130) 및 데이터 스토어(140)를 포함할 수 있다. 전술한 바와 같이, 손상 검출 컴포넌트(110)는 최초 손상 트랜잭션 및/또는 데이터 항목을 검출하고 그리고/또는 그의 검출을 용이하게 하며, 식별 정보를 격리 컴포넌트(120)에 통신할 수 있다. 격리 컴포넌트(120)는 이 정보를 수신하고, 이 정보와 트랜잭션 로그(130)로부터의 데이터를 이용하여 최초 손상에 대한 종속성으로 인해 또한 손상된 임의의 데이터 항목들이 존재하는지를 결정한다. 또한, 이어서 격리 컴포넌트(120)는 손상 데이터를 데이터 스토어(140)에서 무효로 표기함으로써 이들을 유효 데이터로부터 격리할 수 있다. 이들 컴포넌트 외에, 복구 시스템(500)은 쿼리 컴포넌트(510)를 포함할 수 있다. 쿼리 컴포넌트(510)는 유효는 물론 무효 데이터 항목들에 대한 쿼리를 수신하고 실행하도록 동작한다. 손상 데이터의 명시적 쿼리를 가능하게 하는 것은 매우 유용할 수 있다. 예를 들어, 이러한 데이터는 검사될 수 있고, 어쩌면 심지어 변경되어 다시 한번 유효하게 될 수도 있다. 쿼리 컴포넌트를 특히 손상 데이터를 구체적으로 지정하는 SQL 쿼리와 같은 쿼리와 연관시킴으로써 손상 데이터를 판독할 수도 있다. 예를 들어, SQL 선택 명령문은, 다른 쿼리 제한들을 만족시키는 무효 데이터만이 반환되어야 하거나, 대안으로 쿼리의 목적을 위해 무효 데이터가 유효한 것처럼 처리되어야 한다는 것을 지정하는 특수 "무효" 속성을 포함할 수 있다. 쿼리 컴포넌트(510)를 이용한 데이터 스토어(140)에 대한 쿼리들의 실행은, 그 목적이 감사 또는 관리자가 종종 수행해야 하는 것과 같이 데이터베이스 상에 진행하는 모든 동작을 이해하는 것일 때 특히 참으로 유용하다.
도 6은 본 발명의 일 양태에 따른 쿼리 인터페이스 시스템(600)을 나타낸다. 쿼리 인터페이스 시스템(600)은 사용자 또는 애플리케이션 프로그램과 도 5의 쿼리 실행 컴포넌트(510) 간의 인터페이스일 수 있다. 따라서, 시스템(600)은 애플리케이션 프로그램 인터페이스(API)에 대응할 수 있다. 인터페이스 시스템(600)은 2개의 컴포넌트, 즉 쿼리 인터페이스 컴포넌트(610) 및 데이터 스토어 인터페이스 컴포넌트(620)를 포함할 수 있다. 쿼리 인터페이스 컴포넌트(610)는 사용자 애플리케이션 프로그램, 또는 다른 엔티티로부터 쿼리를 수신하도록 동작한다. 또한, 쿼리 인터페이스 시스템(610)은 무효 또는 손상 데이터에 관한 쿼리를 수신할 수 있다는 점에 유의해야 하고 이해해야 한다. 예를 들어, 이것은 무효 데이터가 반환되어야 한다는 것을 구체적으로 지정하는 SQL 쿼리를 수신할 수 있거나, 대안으로 쿼리는 유효 및 무효 데이터에 기초하여, 또는 유효 데이터에만 기초하여 결과들이 생성되어야 함을 지정할 수 있다. 데이터 스토어 인터페이스(620)는 쿼리 인터페이스 컴포넌트(610)로부터 쿼리를 수신한 후, 쿼리 결과를 쿼리 인터페이스 컴포넌트(610)에 제공한다. 데이터 스토어 인터페이스(620)는 쿼리 컴포넌트 또는 쿼리 실행 엔진과 상호작용하여, 쿼리 인터페이스 컴포넌트(610)로 제공되는 결과들을 검색할 수 있다.
도 7은 본 발명의 일 양태에 따른 손상 복구 시스템(700)을 나타낸다. 복구 시스템(700)은 손상 검출 컴포넌트(110), 격리 컴포넌트(120), 트랜잭션 로그(130), 데이터 스토어(140) 및 보상 컴포넌트(710)를 포함할 수 있다. 시스템(100; 도 1 및 500; 도5)과 관련하여 설명된 바와 같이, 손상 검출 컴포넌트(110)는 최초 트랜잭션 및/또는 관련 데이터 손상을 검출하고, 손상을 식별하는 정보를 격리 컴포넌트(120)에 제공할 수 있다. 격리 컴포넌트(120)는 트랜잭션 로 그(130)에 저장된 정보의 도움과 함께 최초 손상에 대한 종속성에 의해 도출되는 추가 손상들을 결정할 수 있다. 또한, 이어서 격리 컴포넌트(120)는 데이터 스토어(140)에서 무효 또는 손상 데이터를 표기함으로써 손상 및 유효 데이터를 격리할 수 있다. 보상 컴포넌트(710)는 단독으로 또는 사용자 입력과 함께, 표기된 손상 데이터를 분석하고 보상 동작을 생성하고 적용하여 손상을 보정하기 위한 메커니즘을 제공할 수 있다. 이러한 방식으로, 무효 데이터가 유효하게 될 수 있다. 또한, 보상 컴포넌트(710)는 신경망, 베이시안 네트워크 및 전문가 또는 지식 시스템을 포함하지만 이에 제한되지 않는 지능형 및/또는 적응성 시스템 및 방법을 이용하여 보상 동작을 추론할 수 있다는 것을 이해해야 한다. 예를 들어, 잘못된 인출을 전기(posting)함으로써 은행 계좌가 손상될 수 있다. 이것은 차감 잔액이 마이너스가 되고 은행 계좌의 소유자에게 전송되는 명세서에서 요금이 부과되는 결과를 낳을 수 있다. 보상 컴포넌트(710)는 후속 트랜잭션의 재실행을 포함하지만 이에 제한되지 않는 이러한 손상 항목에 대한 보상 동작을 생성하고 적용할 수 있으며, 따라서 마이너스 잔액 및 요금 부과 양자를 방지할 수 있고, 문제가 해결된 것을 보이는 새로운 명세서를 생성할 수 있다.
도 8은 본 발명의 일 양태에 따른 손상 복구 시스템(800)을 나타낸다. 시스템들(100, 500, 700)과 마찬가지로, 시스템(800)은 데이터 항목들을 저장하는 데이터 스토어(140), 최초 손상을 검출하는 손상 검출 컴포넌트(110) 및 트랜잭션 정보를 저장하는 로그 컴포넌트(130)를 포함할 수 있다. 또한, 시스템(800)은, 검출 컴포넌트(110) 및 트랜잭션 로그(130)로부터의 입력을 수신 또는 검색하고 최초 손 상과 연관된 모든 손상 항목을 식별하고 이들을 데이터 스토어(140) 상에서 무효로 표기하거나 격리하는 격리 컴포넌트(120)를 포함할 수 있다. 더욱이, 시스템(800)은 또한 실행 컴포넌트(810)를 포함한다. 실행 컴포넌트(810)는 데이터 스토어(140) 상의 트랜잭션을 실행하거나 처리할 수 있다. 또한, 실행 컴포넌트(810)는, 예를 들어 하나 이상의 로크를 이용하여(예를 들어, 로크 관리자(도시되지 않음)를 통해) 직렬성이라고 하는 트랜잭션 철의 기본 특성에 따르는 것을 보장하는 동시 수행 제어 시스템 및 방법을 구현할 수 있다. 실행 컴포넌트(810)는 또한 하나 이상의 유효 데이터 항목 또는 그의 버전을 포함하는 데이터베이스 상의 트랜잭션의 실행을 용이하게 할 수 있다. 본 발명의 일 양태에 따르면, 실행 컴포넌트(810)는 무효 데이터를 기입하는 트랜잭션들이 결코 실행되지 않은 것처럼 트랜잭션들을 처리할 수 있다. 트랜잭션 시간 데이터베이스와 관련하여, 무효 데이터 상에 실행하려고 하는 트랜잭션은 데이터의 이전 유효 버전 상에 실행할 것이다. 본 발명의 일 양태에 따르면, 실행 컴포넌트(810)는 무효 데이터를 보정하기 위해 디커미트된 트랜잭션들을 재실행할 수 있다. 따라서, 하나 이상의 손상 트랜잭션 및 관련 데이터 항목들은 실행 컴포넌트(810)에 의한 트랜잭션 처리를 중지할 필요가 없다.
도 9는 본 발명의 일 양태에 따른 손상 복구를 용이하게 하는 시스템(900)을 나타낸다. 시스템(900)은 트랜잭션 로그(130)를 유지함으로써 전술한 복구 시스템들에 대한 지원 메커니즘을 제공할 수 있다. 시스템(900)은 트랜잭션 분석 컴포넌트(910), 로그 컴포넌트(920) 및 트랜잭션 로그(130)를 포함할 수 있다. 트랜 잭션 분석 컴포넌트(910)는 이들이 영향을 미치는 트랜잭션들 및 데이터 항목들을 평가할 수 있다. 구체적으로, 분석 컴포넌트(910)는, 예를 들어 커미트 시간에 트랜잭션이 어느 데이터 항목을 판독하는지 그리고 트랜잭션이 어느 데이터 항목을 기입하는지를 결정할 수 있다. 이어서, 이 정보는 로그 컴포넌트(920)로 제공될 수 있다. 로그 컴포넌트(920)는 트랜잭션 분석 컴포넌트(910)에 통신 결합되고, 트랜잭션 로그(130)를 유지한다. 트랜잭션 로그(130)는 데이터 스토어 또는 다른 컴퓨터 판독가능 매체일 수 있다. 로그(130)는 트랜잭션 이벤트들을 기록할 수 있다. 각각의 트랜잭션에 대해, 트랜잭션에 의해 판독된 데이터 항목들을 기록하는 판독 로그 레코드는 물론, 기입된 데이터 항목들을 기록하는 기입 또는 갱신 로그 레코드들이 존재할 수 있다. 트랜잭션 분석 컴포넌트(910)로부터 정보의 수신시, 로그 컴포넌트(920)는 트랜잭션 정보를 트랜잭션 로그(130)에 기입할 수 있다.
소정의 데이터 스토어 애플리케이션들(예를 들어, 트랜잭션 애플리케이션 등)은 데이터베이스 상태의 소정의 훨씬 더 작은 부분을 변경하기 전에 광대한 양의 판독을 행할 것이라는 것을 이해해야 한다. 이것은 판독 로그 레코드의 크기가 매우 커지게 할 수 있다. 또한, 판독 로그가 기입되는 커미트 순간까지 트랜잭션 실행 동안 이 정보를 기억하는 데 필요한 데이터 구조의 크기도 매우 커질 수 있다. 통상적으로, 다수의 자원을 처리하는 것은 곤란하다. 각각의 자원은 명백하게 식별되어야 한다. 이러한 데이터 구조의 유지는 어렵지 않지만, 데이터 스토어 및 데이터 스토어 저장 관리자에게 압박을 가할 수 있으며, 이는 제반 비용에 추가된다.
전술한 문제, 즉 매우 많은 수의 자원들의 문제는 판독들을 기록하는 본 발명에 고유한 것은 아니다. 이것은 트랜잭션 격리를 제공하기 위하여 트랜잭션이 자원들을 로크할 필요가 있을 때에도 발생한다. 따라서, 본 발명은 이 문제를 유사한 방식으로, 즉 다중 입도 자원들을 도입함으로써 이 문제를 처리할 수 있다. 본 발명은 로킹을 위해 행해지는 바와 같이 자원들을 식별하기 위해 동일 또는 유사한 계층 구조를 이용할 수 있다. 로킹 자원 계층 구조를 이용하는 하나의 명확한 이점은, 자원 봉쇄가 어떻게 정의되는지를 즉시 알 수 있고 언제 자원 이용이 충돌하거나 엇갈리는지를 결정하는 방법을 가질 수 있다는 점이다. 따라서, 본 발명은, 자원들이 상이한 레벨의 입도로 기술된 경우에도 언제 트랜잭션이 손상 데이터를 판독했는지를 결정할 수 있다.
트랜잭션 로크 자원 계층 구조는 통상적으로 적어도 테이블, 페이지 및 레코드를 포함한다. 트랜잭션에 의해 너무 많은 작은 입자 자원들이 이용되고 있는 경우에, 입도는 미세 입자에서 보다 큰 입자로 변경된다. 이러한 방식은 트랜잭션이 판독하는 데이터 항목들의 식별자를 기록하는 본 발명의 기술에 적합할 수 있다. 그 용어가 본 명세서에서 정의되는 바와 같이 하나의 컴포넌트일 수 있는 로크 관리자가 이 프로세스에 이용될 수 있다. 예를 들어, 판독 로크들이 트랜잭션의 끝에 유지될 때, 판독된 모든 데이터 항목은 로크 관리자에 의해 효과적으로 기억된다. 커미트 시간에, 본 발명은 이들 자원으로부터 판독 로크들을 릴리스하면서 동시에 이들 자원 식별자를 로그에 기록할 수 있다.
때로는, 예를 들어 등급 2 트랜잭션들이 실행될 때, 판독 로크들은 트랜잭션 들의 끝에 유지되지 않는다. 이 경우, 로크 관리자 자원 "로크 블록"이 "판독(공유)"에서 "판독됨"으로 로크 모드를 변경하는 로크 관리자 충돌 테이블에 남겨질 수 있는데, 이는 충돌들이 관련되는 한은 로크가 전혀 존재하지 않는 것처럼 취급된다. 이것은 그러한 트랜잭션들이 트랜잭션 로그를 트랜잭션에 의해 판독된 모든 자원에 대한 식별자들로 채우기 위해 동일 전략을 이용하는 것을 허가한다.
전술한 시스템들은 여러 컴포넌트 간의 상호작용과 관련하여 설명되었다. 또한, 명료화 및 간략화의 목적으로, 본 발명의 일 양태를 강조하기 위해 다수의 시스템이 제공되고 설명되었다. 이러한 시스템들은 본 명세서에서 지정되는 그러한 컴포넌트들, 지정된 컴포넌트들의 일부 및/또는 다른 시스템들에서 지정되는 추가 컴포넌트들을 포함할 수 있다는 것을 이해해야 한다. 예를 들어, 손상 복구 시스템은 쿼리 컴포넌트, 보상 컴포넌트 및 실행 컴포넌트 또는 이들의 임의 조합을 포함할 수 있다. 또한, 하나 이상의 컴포넌트가 집합적 기능을 제공하는 단일 컴포넌트로 결합되거나 여러 서브 컴포넌트로 분할될 수 있다는 점에 유의해야 한다. 컴포넌트들은 또한, 본 명세서에는 구체적으로 설명되지 않지만 이 분야의 전문가들에게 알려진 하나 이상의 다른 컴포넌트와 상호작용할 수 있다.
또한, 이 분야의 전문가들이 이해하듯이, 위에 개시된 시스템들 및 아래의 방법들의 다양한 부분들은 인공 지능 또는 지식 기반 컴포넌트, 서브 컴포넌트, 프로세스, 수단, 또는 메커니즘(예를 들어, 지원 벡터 머신, 신경망, 전문가 시스템, 베이시안 신뢰망, 퍼지 논리, 데이터 퓨전 엔진, 분류자 등)을 포함하거나 이들로 이루어질 수 있다. 이러한 컴포넌트들은 특히, 그들에 의해 수행되는 소정의 메커 니즘 또는 프로세스를 자동화하여 시스템 및 방법의 부분들이 보다 적응적인 것은 물론 효율적이게 할 수 있다. 예를 들어, 인공 지능 기반 컴포넌트는 데이터 손상의 검출을 용이하게 하는 데 사용될 수 있다. 이러한 컴포넌트는 단독으로 데이터 손상을 검출하기 위해 또는 예를 들어 관리자에 의한 데이터 손상의 수동 식별을 보조하기 위해 사용될 수 있다. 추가적으로 또는 대안으로, 인공 지능 기반 시스템, 방법 등은 데이터 손상의 검출시 보상 동작의 생성 및/또는 적용을 용이하게 하는 데 이용될 수 있다.
전술한 예시적인 시스템들에 비추어, 본 발명에 따라 구현될 수 있는 방법들은 도 10-13의 흐름도를 참조하여 보다 잘 이해될 것이다. 설명의 간략화를 위해 방법들이 일련의 블록들로 도시되고 설명되지만, 일부 블록들은 본 발명에 따라 다른 순서로 그리고/또는 본 명세서에 도시되고 설명된 것과 다른 블록들과 동시에 발생할 수 있으므로, 본 발명은 블록들의 순서에 의해 제한되지 않는다는 것을 이해하고 알아야 한다. 더욱이, 모든 도시된 블록이 본 발명에 따른 방법을 구현하는 데 필요한 것은 아닐 수도 있다.
또한, 이하에 그리고 본 명세서 전반에서 개시되는 방법들은 이러한 방법들을 컴퓨터에 전송하고 전달하는 것을 용이하게 하기 위해 제조품 상에 저장될 수 있다는 것도 알아야 한다. 본 명세서에서 사용되는 "제조품"이라는 용어는 임의의 컴퓨터 판독가능 장치, 반송파 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하는 것을 의도한다.
도 10을 참조하면, 본 발명의 일 양태에 따른 손상 방법(1000)이 도시되어 있다. 방법(1000)은 손상에 대처하기 위한 프로시저를 제공한다. 1010에서, 최초 손상 데이터 항목들이 식별된다. 사용자 또는 관리자는 수동으로, 인공 지능, 지식 기반 시스템 및 방법을 이용하여 자동으로, 또는 이들의 소정 조합으로 손상 데이터 항목들을 식별할 수 있다. 예를 들어, 잘못으로 계좌에 차변 기입하는 트랜잭션과 같이 트랜잭션이 손상되었다는 결정이 이루어진 후, 데이터 항목이 손상된 것으로 식별될 수 있다. 1020에서, 최초 손상 데이터 항목으로부터 도출된 데이터 항목들이 결정된다. 예를 들어, 트랜잭션이 손상 데이터 항목을 판독하고 그 판독이 기초하여 제2 데이터 항목을 기입 또는 갱신하는 경우, 이 제2 데이터 항목도 최초 손상 항목에 대한 그의 종속성으로 인해 손상된다. 이렇게 도출되는 손상 항목들의 식별을 용이하게 하기 위해, 트랜잭션 로그가 참고될 수 있는데, 이는 각 트랜잭션에 대해 판독되고 갱신된 데이터 항목들을 식별한다. 1030에서, 최초 및 도출된 손상 데이터 항목들 양자는 무효로 표기된다. 예를 들어, 데이터 항목 헤더 또는 메타데이터가 그와 같이 표기될 수 있다. 예를 들어, 이들은 참 또는 거짓인 부울 변수 "유효"를 가질 수 있다. 이것인 거짓이면, 데이터는 무효이다.
도 11은 본 발명의 일 양태에 따른 손상 복구 시스템에 대한 지원 방법(1100)이다. 1110에서, 트랜잭션이 수신 또는 식별되는데, 트랜잭션은 하나 이상의 데이터 항목에 대한 동작들을 포함한다. 1120에서, 동작들이 컴퓨터 판독가능 매체에 기록된다. 예를 들어, 트랜잭션의 판독 동작은 트랜잭션에 의해 판독된 데이터 항목들을 식별하는 판독 레코드에 기록될 수 있다. 마찬가지로, 트랜잭션의 기입 또는 갱신 동작은 트랜잭션에 의해 기입된 데이터 항목들을 구체적으로 식 별하는 기입 또는 갱신 레코드에 기록될 수 있다. 이어서, 이 트랜잭션 로그는 손상 트랜잭션 또는 데이터 항목에 종속하는 데이터 항목들을 식별하는 데 사용될 수 있다.
도 12는 본 발명의 일 양태에 따른 데이터 스토어와 상호작용하는 방법(1200)을 나타낸다. 1210에서, 쿼리가 수신된다. 쿼리는 검색될 무효 데이터를 지정할 수 있다. 예를 들어, 쿼리는 무효 데이터가 고려되어야 한다는 것을 지시하는 특수 키워드를 갖는 SQL 선택 쿼리일 수 있다. 1220에서, 선택된 무효 데이터가 지정된 쿼리에 따라 반환된다. 따라서, 방법(1200)은 무효 데이터의 검색을 가능하게 한다. 이것은 그러한 데이터를 다시 한번 유효하게 만들기 위한 데이터의 검사 및 어쩌면 변경을 용이하게 하는 데 매우 유용할 수 있다.
도 13은 손상 데이터와 상호작용하는 방법(1300)을 나타내는 흐름도이다. 전술한 바와 같이, 이것은 무효 데이터를 식별하고 궁극적으로 보정할 수 있는 데 매우 유용하다. 방법(1300)은 하나의 그러한 프로세스를 지정한다. 1310에서, 손상 데이터 항목이 식별된다. 이러한 항목은 예를 들어 무효로 표기된 데이터 항목들에 대해 데이터 스토어에 쿼리함으로써 식별될 수 있다. 예를 들어, 계좌에 잘못 차변 기입한 손상 트랜잭션의 산물로서 데이터 항목이 무효로 인식될 수 있다. 1320에서, 보정 동작을 데이터 항목에 적용하여 항목을 보정 또는 유효화할 수 있다. 전술한 예에서, 이러한 보상 동작은 계좌에 잘못 차변 기입된 양을 대변 기입하는 트랜잭션을 실행하는 것일 수 있다. 이것은 간단한 예이며, 본 발명은 손상의 엄중성 및 정도에 따라 훨씬 더 복잡한 보상 동작을 제공할 수 있다는 것을 알 아야 한다. 또한, 다른 적응성 시스템 및 방법들 중에서 인공 지능 및 지식 기반 시스템 및 방법을 이용하여 보상 동작을 자동으로 생성하고 적용할 수 있다.
본 발명의 다양한 양태들에 대한 문맥을 제공하기 위하여, 도 14 및 15는 물론 아래의 설명은 본 발명의 다양한 양태가 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 일반적인 설명을 제공하는 것을 의도한다. 본 발명은 컴퓨터 및/또는 컴퓨터들 상에서 실행되는 컴퓨터 프로그램의 컴퓨터 실행가능 명령어의 일반적인 문맥으로 전술하였지만, 이 분야의 전문가들은 본 발명이 다른 프로그램 모듈들과 조합하여 구현될 수도 있음을 인식할 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고 그리고/또는 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 더욱이, 이 분야의 전문가들은 본 발명의 방법들이 퍼스널 컴퓨터, 핸드-헬드 컴퓨팅 장치, 마이크로프로세서 기반 또는 프로그램가능한 가전제품 등은 물론 단일 프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니 컴퓨팅 장치, 메인프레임 컴퓨터를 포함하는 다른 컴퓨터 시스템 구성을 이용하여 실시될 수 있음을 이해할 것이다. 예시된 본 발명의 양태들은 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크들이 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 그러나, 본 발명의 양태들의 모두가 아닌 일부는 독립식 컴퓨터 상에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 둘 다에 위치할 수 있다.
도 14를 참조하면, 본 발명의 다양한 양태를 구현하는 예시적인 환경(1400)은 컴퓨터(1412)를 포함한다. 컴퓨터(1412)는 처리 장치(1414), 시스템 메모 리(1416) 및 시스템 버스(1418)를 포함한다. 시스템 버스(1418)는 시스템 메모리(1416)를 포함하지만 이에 제한되지 않는 시스템 컴포넌트들을 처리 장치(1414)에 결합시킨다. 처리 장치(1414)는 임의의 다양한 이용가능 프로세서일 수 있다. 듀얼 마이크로프로세서 및 기타 멀티프로세서 아키텍처도 처리 장치(1414)로 사용될 수 있다.
시스템 버스(1418)는 메모리 버스 또는 메모리 제어기, 주변 버스 또는 외부 버스, 및/또는 11비트 버스, ISA(industry standard architecture) 버스, MCA(micro channel architecture), EISA(Enhanced ISA), IDE(intelligent drive electronics), VESA 로컬 버스(VLB), PCI(peripheral component interconnect), USB(universal serial bus), AGP(advanced graphics port), PCMCIA(personal computer memory card international association bus) 및 SCSI(small computer systems interface)를 포함하지만 이에 제한되지 않는 임의의 다양한 이용가능 버스 아키텍처를 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조(들) 중 어느 것이라도 될 수 있다.
시스템 메모리(1416)는 휘발성 메모리(1420) 및 비휘발성 메모리(1422)를 포함한다. 시동 중과 같은 때에 컴퓨터(1412) 내의 구성요소들 사이의 정보 전송을 위한 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)은 비휘발성 메모리(1422)에 저장된다. 예를 들어, 비휘발성 메모리(1422)는 ROM, PROM, EPROM, EEPROM 또는 플래시 메모리를 포함하지만 이에 제한되는 것은 아니다. 휘발성 메모리(1420)는 외부 캐시 메모리로서 동작하는 RAM을 포함한다. 예를 들어, RAM은 SRAM(synchronous RAM), DRAM, SDRAM(synchoronous DRAM), DDRSDRAM(double data rate SDRAM), ESDRAM(enhanced SDRAM), SLDRAM(Synclink DRAM) 및 DRRAM(direct Rambus RAM)과 같은 다양한 형태로 이용될 수 있지만, 이에 제한되는 것은 아니다.
컴퓨터(1412)는 또한 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 도 14는 예를 들어 디스크 저장 장치(1424)를 도시한다. 디스크 저장 장치(1424)는 자기 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, 째즈 드라이브, 짚 드라이브, LS-100 드라이브, 플래시 메모리 카드, 또는 메모리 스틱과 같은 장치를 포함하지만 이에 제한되는 것은 아니다. 또한, 디스크 저장 장치(1424)는 저장 매체를 개별적으로, 또는 CD-ROM 장치, CD-R 드라이브, CD-RW 드라이브 또는 DVD-ROM 드라이브와 같은 광 디스크 드라이브를 포함하지만 이에 제한되지 않는 다른 저장 매체와 조합하여 포함할 수 있다. 디스크 저장 장치(1424)의 시스템 버스(1418)에 대한 접속을 용이하게 하기 위해, 인터페이스(1426)와 같은 이동식 또는 이동불가식 인터페이스가 일반적으로 사용된다.
도 14는 사용자들과 적절한 컴퓨팅 환경(1410)에서 기술되는 기본 컴퓨터 자원들 간의 매개체로서 작용하는 소프트웨어를 기술하고 있음을 이해해야 한다. 이러한 소프트웨어는 운영 체제(1428)를 포함한다. 디스크 저장 장치(1424)에 저장될 수 있는 운영 체제(1428)는 컴퓨터 시스템(1412)의 자원들을 제어하고 할당하도록 동작한다. 시스템 애플리케이션들(1430)은 시스템 메모리(1416) 또는 디스크 저장 장치(1424)에 저장된 프로그램 모듈(1432) 및 프로그램 데이터(1434)를 통해 운영 체제(1428)에 의한 자원들의 관리를 이용한다. 본 발명은 다양한 운영 체제 또는 운영 체제들의 조합을 이용하여 구현될 수 있음을 이해해야 한다.
사용자는 입력 장치(들)(1436)를 통해 명령 또는 정보를 컴퓨터(1412)에 입력한다. 입력 장치(1436)는 마우스, 트랙볼, 스타일러스, 터치 패드와 같은 포인팅 장치, 키보드, 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너, TV 튜너 카드, 디지털 카메라, 디지털 비디오 카메라, 웹 카메라 등을 포함하지만 이에 제한되는 것은 아니다. 이들 및 기타 입력 장치는 인터페이스 포트(들)(1438)를 경유하여 시스템 버스(1418)를 통해 처리 장치(1414)에 접속된다. 인터페이스 포트(들)(1438)는 예를 들어 직렬 포트, 병렬 포트, 게임 포트 및 USB를 포함한다. 출력 장치(들)(1440)는 입력 장치(들)(1436)와 동일한 유형의 포트들 중 일부를 이용한다. 따라서, 예를 들어, USB 포트가 컴퓨터(1412)에 입력을 제공하고 컴퓨터(1412)에서 출력 장치(1440)로 정보를 출력하는 데 사용될 수 있다. 출력 어댑터(1442)는 다른 출력 장치들(1440) 중에는 표시 장치(예를 들어, 평판 및 CRT), 스피커 및 프린터와 같이 특수 어댑터를 필요로 하는 소정의 출력 장치가 존재한다는 것을 나타내기 위해 제공된다. 출력 어댑터(1442)는 예를 들어 출력 장치(1440)와 시스템 버스(1418) 간의 접속 수단을 제공하는 비디오 및 사운드 카드를 포함하지만 이에 제한되는 것은 아니다. 원격 컴퓨터(1444)와 같은 다른 장치들 및/또는 장치들의 시스템들은 입력 및 출력 능력 양자를 제공한다는 점에 유의해야 한다.
컴퓨터(1412)는 원격 컴퓨터(들)(1444)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨 터(1444)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 워크스테이션, 마이크로프로세서 기반 장치, 피어 장치 또는 다른 공통 네트워크 노드 등일 수 있고, 통상적으로 컴퓨터(1412)와 관련하여 상술된 구성 요소들의 대부분 또는 그 전부를 포함한다. 간략화를 위해, 메모리 저장 장치(1446)만이 원격 컴퓨터(1444)와 함께 도시된다. 원격 컴퓨터(1444)는 네트워크 인터페이스(1448)를 통해 컴퓨터(1412)에 논리 접속된 후, 통신 접속(1450)을 통해 물리적으로 접속된다. 네트워크 인터페이스(1448)는 LAN 및 WAN과 같은 통신 네트워크를 포함한다. LAN 기술은 FDDI(Fiber Distributed Data Interface), CDDI(Copper Distributed Data Interface), 이더넷/IEEE 802.3, 토큰 링/IEEE 802.5 등을 포함한다. WAN 기술은 점대점 링크, ISDN 및 그의 변형과 같은 회선 스위칭 네트워크, 패킷 스위칭 네트워크 및 DSL을 포함하지만 이에 제한되는 것은 아니다.
통신 접속(1450)은 네트워크 인터페이스(1448)를 버스(1418)에 접속하는 데 이용되는 하드웨어/소프트웨어를 지칭한다. 통신 접속(1450)이 설명의 명확화를 위해 컴퓨터(1412) 내부에 도시되어 있지만, 통신 접속은 컴퓨터(1412)의 외부에 있을 수도 있다. 네트워크 인터페이스(1448)의 접속에 필요한 하드웨어/소프트웨어는 예를 들어 정규 전화급 모뎀, 케이블 모뎀, 파워 모뎀 및 DSL 모뎀을 포함하는 모델, ISDN 어댑터 및 이더넷 카드와 같은 내부 및 외부 기술을 포함하지만 이에 제한되는 것은 아니다.
도 15는 본 발명이 상호작용할 수 있는 샘플 컴퓨팅 환경(1500)의 개략적인 블록도이다. 시스템(1500)은 하나 이상의 클라이언트(1510)를 포함한다. 클라이 언트(1510)는 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 시스템(1500)은 또한 하나 이상의 서버(1530)를 포함한다. 서버(1530)는 또한 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버(1530)는 예를 들어 본 발명을 이용하여 변환을 수행하기 위한 스레드를 구비할 수 있다. 클라이언트(1520)와 서버(1530) 간의 하나의 가능한 통신은 두 개 이상의 컴퓨터 프로세스 사이에 전송되는 데이터 패킷의 형태일 수 있다. 시스템(1500)은 클라이언트(1510)와 서버(1530) 간의 통신을 용이하게 하는 데 사용될 수 있는 통신 프레임워크(1550)를 포함한다. 클라이언트(1510)는 클라이언트(1510)에 국한된 정보를 저장하는 데 사용될 수 있는 하나 이상의 클라이언트 데이터 스토어(1560)에 동작적으로 접속된다. 마찬가지로, 서버(1530)는 서버(1530)에 국한된 정보를 저장하는 데 사용될 수 있는 하나 이상의 서버 데이터 스토어(1540)에 동작적으로 접속된다.
전술한 사항은 본 발명의 예들을 포함한다. 물론, 본 발명을 설명하는 목적을 위해 컴포넌트들 또는 방법들의 모든 상상 가능한 조합을 설명하는 것은 불가능하지만, 이 분야의 전문가는 본 발명의 많은 추가적인 조합 및 교환이 가능하다는 것을 인식할 수 있다. 따라서, 본 발명은 첨부된 청구범위의 사상 및 범위 내에 있는 그러한 모든 변경, 수정 및 변형을 포함하는 것으로 의도한다. 더욱이, "포함한다", "구비한다" 및 "구비하는"이라는 용어가 상세한 설명 또는 청구범위에서 사용되는 한도에서, 이러한 용어는 "포함하는"이라는 용어가 청구범위에서 전이구로 사용될 때 해석되는 바와 같이 "포함하는"과 유사한 방식으로 포괄적임을 의도 한다.

Claims (25)

  1. 데이터베이스 손상 복구 시스템으로서,
    컴퓨터 판독 가능한 저장 매체와 상기 컴퓨터 판독 가능한 저장 매체에 저장된 명령어를 실행하기 위한 프로세서를 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때,
    트랜잭션 시간 데이터베이스(a transaction time database) 내의 최초 손상 데이터 항목(an initial corrupt data item)을 식별하기 위한 손상 검출 컴포넌트 - 상기 트랜잭션 시간 데이터베이스는 트랜잭션들 이후의 데이터베이스 상태와 연관된 데이터베이스의 복수 개 버전(multiple versions) 및 상기 트랜잭션들 이전의 데이터베이스의 기본 버전(a basic version)을 저장함 - ; 및
    격리 컴포넌트(a quarantine component)를 구현하며,
    상기 격리 컴포넌트는,
    상기 최초 손상 데이터 항목을 수신하고,
    트랜잭션 로그로부터 종속 또는 파생 데이터 항목을 식별하고 - 상기 종속 또는 파생 데이터 항목은 상기 최초 손상 데이터 항목으로부터 파생되거나 종속됨 - ,
    상기 종속 또는 파생 데이터 항목 중 손상되지 않은 트랜잭션에 의해 다시 기입되는(overwritten) 항목으로 상기 트랜잭션 로그가 가리키는 항목을 식별하고,
    상기 최초 손상 데이터 항목 및 다시 기입되지 않은 종속 또는 파생 데이터 항목을, 상기 최초 손상 데이터 항목 및 상기 다시 기입되지 않은 종속 또는 파생 데이터 항목을 무효(invalid)로 표시하는 것에 의해 격리시키고 - 상기 무효로 표시하는 것은 데이터 항목 헤더에 무효를 나타내는 값을 설정하는 것을 포함함 - ,
    상기 트랜잭션 로그로부터 종속 또는 파생 데이터 항목을 식별하는 것 및 상기 종속 또는 파생 데이터 항목 중 손상되지 않은 트랜잭션에 의해 다시 기입되는(overwritten) 항목으로 상기 트랜잭션 로그가 가리키는 항목을 식별하는 것은, 상기 종속 또는 파생 데이터 항목을 기입 또는 다시 기입하는 트랜잭션과 연관된 타임스탬프(time stamps) 및 판독(reads)에 적어도 기초하여 수행되는,
    데이터베이스 손상 복구 시스템.
  2. 제1항에 있어서,
    상기 격리 컴포넌트는, 손상 데이터에 의해 영향을 받은 트랜잭션들에 의해 기입된 모든 데이터의 종결을 계산하는 종결 컴포넌트(closure component)를 포함하는, 데이터베이스 손상 복구 시스템.
  3. 삭제
  4. 제1항에 있어서,
    무효로 표시된 상기 데이터 항목은 트랜잭션에게 보이지 않는, 데이터베이스 손상 복구 시스템.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 트랜잭션 로그는 각각의 트랜잭션에 대해 판독 및 기입 중 적어도 하나가 이루어진 데이터 항목을 식별하는, 데이터베이스 손상 복구 시스템.
  8. 제7항에 있어서,
    트랜잭션에 의한 데이터 항목 판독은 트랜잭션 커미트(transaction commit) 직전에 기입되는 단일 로그 레코드 안에 통합되는, 데이터베이스 손상 복구 시스템.
  9. 제7항에 있어서,
    데이터 항목은, 로크 관리자(lock manager)에서 사용되는 자원 식별자에 의해 식별되고 상기 자원 식별자와 함께 상기 트랜잭션 로그 상에 기록되는 다중 입자 항목(multi-granular items)이고, 상기 격리 컴포넌트는 손상된 종속 항목을 식별하고, 기입-판독 충돌을 갖는 트랜잭션 내의 판독 로크(read locks)는 이전 트랜잭션에서의 손상 데이터를 수반하여, 상기 트랜잭션이 손상 데이터를 판독하고 결과적으로 또한 손상 데이터를 기입하는, 데이터베이스 손상 복구 시스템.
  10. 제1항에 있어서,
    상기 명령어는 또한,
    트랜잭션을 수신하고 상기 트랜잭션과 상호작용하는 상기 데이터 항목을 결정하는 트랜잭션 분석 컴포넌트; 및
    상기 분석 컴포넌트로부터 상기 트랜잭션과 상호작용하는 상기 데이터 항목에 대한 정보를 수신하고, 상기 수신된 정보를 컴퓨터 판독가능 매체에 저장하는 로그 컴포넌트
    를 더 구현하는, 데이터베이스 손상 복구 시스템.
  11. 제10항에 있어서,
    상기 로그 컴포넌트는 판독 로그 레코드(read log records)에 판독 트랜잭션을 기록하고 갱신 로그 레코드(update log records)에 기입 트랜잭션을 기록하는, 데이터베이스 손상 복구 시스템.
  12. 데이터베이스 손상 복구 시스템으로서,
    트랜잭션 시간 데이터베이스(transaction-time database) 내의 최초 손상 데이터 항목을 식별하기 위한 수단 - 상기 트랜잭션 시간 데이터베이스는 트랜잭션들 이후의 데이터베이스 상태와 연관된 데이터베이스의 복수 개 버전 및 상기 트랜잭션들 이전의 데이터베이스의 기본 버전을 저장함 - ;
    상기 최초 손상 데이터 항목으로부터 파생되는 데이터 항목을 식별하기 위한 수단;
    상기 최초 손상 데이터 항목으로부터 파생되는 데이터 항목 중 손상되지 않은 트랜잭션에 의해 다시 기입되는 항목으로 트랜잭션 로그가 가리키는 항목을 식별하기 위한 수단; 및
    상기 최초 손상 데이터 항목 및 다시 기입되지 않은 상기 파생되는 데이터 항목을 무효(invalid)로 표시하기 위한 수단 - 상기 무효로 표시하는 것은 데이터 항목 헤더에 무효를 나타내는 값을 설정하는 것을 포함함 -
    을 포함하고,
    상기 파생되는 데이터 항목을 식별하는 것 및 상기 최초 손상 데이터 항목으로부터 파생되는 데이터 항목 중 손상되지 않은 트랜잭션에 의해 다시 기입되는 항목으로 트랜잭션 로그가 가리키는 항목을 식별하는 것은, 상기 파생되는 데이터 항목을 기입 또는 다시 기입하는 트랜잭션과 연관된 타임스탬프(times tamps) 및 판독(reads)에 적어도 기초하여 수행되는,
    데이터베이스 손상 복구 시스템.
  13. 삭제
  14. 하나 이상의 프로세서에 의해 실행되는 데이터베이스 손상 복구 방법으로서,
    트랜잭션 시간 데이터베이스(transaction-time database) 내의 최초 손상 데이터 항목을 식별하는 단계 - 상기 트랜잭션 시간 데이터베이스는 트랜잭션들 이후의 데이터베이스 상태와 연관된 데이터베이스의 복수 개 버전 및 상기 트랜잭션들 이전의 데이터베이스의 기본 버전(a basic version)을 저장함 - ;
    상기 최초 손상 데이터 항목으로부터 파생되는 데이터 항목을 식별하는 단계;
    상기 최초 손상 데이터 항목으로부터 파생되는 데이터 항목 중 손상되지 않은 트랜잭션에 의해 다시 기입되는 항목으로 트랜잭션 로그가 가리키는 항목을 식별하는 단계; 및
    상기 최초 손상 데이터 항목 및 다시 기입되지 않은 상기 파생되는 데이터 항목을 무효(invalid)로 표시하는 단계 - 상기 무효로 표시하는 것은 데이터 항목 헤더에 무효를 나타내는 값을 설정하는 것을 포함함 -
    를 포함하고,
    상기 파생되는 데이터 항목을 식별하는 것 및 상기 최초 손상 데이터 항목으로부터 파생되는 데이터 항목 중 손상되지 않은 트랜잭션에 의해 다시 기입되는 항목으로 트랜잭션 로그가 가리키는 항목을 식별하는 것은, 상기 파생되는 데이터 항목을 기입 또는 다시 기입하는 트랜잭션과 연관된 타임스탬프(times tamps) 및 판독(reads)에 적어도 기초하여 수행되는,
    데이터베이스 손상 복구 방법.
  15. 제14항에 있어서,
    로그 내에 트랜잭션들에 대한 데이터 항목의 판독 및 기입을 기록하는 단계를 더 포함하는, 데이터베이스 손상 복구 방법.
  16. 제15항에 있어서,
    상기 파생되는 손상 항목을 식별하는 단계는, 상기 최초 손상 데이터에 의해 영향을 받은 트랜잭션들에 의해 기입된 모든 데이터 항목의 종결(closure)을 계산하는 단계를 포함하는, 데이터베이스 손상 복구 방법.
  17. 삭제
  18. 제14항에 있어서,
    무효화되었고 무시되는 손상 데이터를 포함하는 상기 데이터베이스 상의 트랜잭션들을 실행하는 단계를 더 포함하는, 데이터베이스 손상 복구 방법.
  19. 제18항에 있어서,
    무효 항목 버전 상에 트랜잭션을 실행하는 단계는 상기 항목의 가장 최근으로 알려진 유효 버전을 이용하는 단계를 포함하는, 데이터베이스 손상 복구 방법.
  20. 제14항에 있어서,
    상기 무효로 표시된 데이터 항목을 보상하는 상기 데이터베이스 상의 트랜잭션을 실행하는 단계를 더 포함하는, 데이터베이스 손상 복구 방법.
  21. 제1항에 있어서,
    트랜잭션(a transaction) 이후의 데이터베이스의 상태와 연관된 데이터베이스의 각각의 버전은 상기 트랜잭션에 의해 갱신되거나 기입되는 데이터를 포함하는, 버전과 이전 버전 간의 차이만을 저장하고,
    트랜잭션 이후의 데이터베이스의 상기 상태와 연관된 데이터베이스의 각각의 버전은 상기 트랜잭션의 타임스탬프에 의해 식별되는,
    데이터베이스 손상 복구 시스템.
  22. 제1항에 있어서,
    상기 명령어는 손상 데이터 항목에 대한 복수의 쿼리를 수신하거나 실행하도록 구성된 쿼리 컴포넌트를 더 구현하고, 특정 손상 데이터 항목은 상기 특정 손상 데이터 항목을 비 손상 데이터 항목으로 변환하기 위하여 쿼리 동안에 식별되고, 검사되며, 변경되고, 상기 쿼리는 상기 쿼리에 응답하여 반환되는 데이터 항목에 충족되는 매개변수로 무효성을 명시하는, 데이터베이스 손상 복구 시스템.
  23. 제12항에 있어서,
    상기 데이터베이스에 무효 데이터 항목이 존재하는 동안에 상기 데이터베이스에 대한 트랜잭션에 기초하는 비 복구(non-recovery)를 처리하기 위한 수단; 및
    손상 데이터 항목에 대한 복수의 쿼리를 수신하거나 실행하기 위한 수단 - 특정 손상 데이터 항목은 상기 특정 손상 데이터 항목을 비 손상 데이터 항목으로 변환하기 위하여 쿼리 동안에 식별되고, 검사되며, 변경되고, 상기 쿼리는 상기 쿼리에 응답하여 반환되는 데이터 항목에 충족되는 매개변수로 무효성을 명시함 - ;
    을 더 포함하는 데이터베이스 손상 복구 시스템.
  24. 제14항에 있어서,
    트랜잭션 이후의 데이터베이스의 상태와 연관된 데이터베이스의 각각의 버전은 상기 트랜잭션에 의해 갱신되거나 기입되는 데이터를 포함하는, 버전과 이전 버전 간의 차이만을 저장하는,
    데이터베이스 손상 복구 방법.
  25. 제14항에 있어서,
    손상 데이터 항목에 대한 복수의 쿼리를 수신하고 실행하는 단계 - 특정 손상 데이터 항목은 상기 특정 손상 데이터 항목을 비 손상 데이터 항목으로 변환하기 위하여 쿼리 동안에 식별되고, 검사되며, 변경되고, 상기 쿼리는 상기 쿼리에 응답하여 반환되는 데이터 항목에 충족되는 매개변수로 무효성을 명시함 -
    를 더 포함하는 데이터베이스 손상 복구 방법.
KR1020077025111A 2005-05-10 2006-04-14 데이터베이스 손상 복구 시스템 및 방법 KR101255391B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/125,806 2005-05-10
US11/125,806 US8386440B2 (en) 2005-05-10 2005-05-10 Database corruption recovery systems and methods
PCT/US2006/014266 WO2006121577A2 (en) 2005-05-10 2006-04-14 Database corruption recovery systems and methods

Publications (2)

Publication Number Publication Date
KR20080005387A KR20080005387A (ko) 2008-01-11
KR101255391B1 true KR101255391B1 (ko) 2013-04-17

Family

ID=37397047

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077025111A KR101255391B1 (ko) 2005-05-10 2006-04-14 데이터베이스 손상 복구 시스템 및 방법

Country Status (4)

Country Link
US (1) US8386440B2 (ko)
KR (1) KR101255391B1 (ko)
CN (1) CN101506766B (ko)
WO (1) WO2006121577A2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005792B2 (en) * 2004-05-14 2011-08-23 Oracle International Corporation System and method for managing versions of metadata
US7698310B2 (en) * 2004-05-14 2010-04-13 Oracle International Corporation System for allowing object metadata to be shared between cursors for concurrent read write access
US7555502B2 (en) * 2006-03-10 2009-06-30 Oracle International Corporation Detecting database events using recovery logs
US20080098037A1 (en) * 2006-07-17 2008-04-24 Tim Neil Markup language based database upgrades
US9336066B2 (en) * 2008-06-19 2016-05-10 Intel Corporation Hybrid linear validation algorithm for software transactional memory (STM) systems
US20100241893A1 (en) * 2009-03-18 2010-09-23 Eric Friedman Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment
US8396831B2 (en) * 2009-12-18 2013-03-12 Microsoft Corporation Optimistic serializable snapshot isolation
US8356007B2 (en) 2010-10-20 2013-01-15 Microsoft Corporation Distributed transaction management for database systems with multiversioning
CN102110121B (zh) * 2009-12-24 2015-09-23 阿里巴巴集团控股有限公司 一种数据处理方法及其系统
CN102156720A (zh) * 2011-03-28 2011-08-17 中国人民解放军国防科学技术大学 一种数据恢复的方法、装置和系统
WO2014120137A1 (en) 2013-01-30 2014-08-07 Hewlett-Packard Development Company, L.P. Recovering pages of a database
US8909604B1 (en) 2013-03-06 2014-12-09 Gravic, Inc. Methods for returning a corrupted database to a known, correct state by selectively using redo and undo operations
US10037352B1 (en) 2013-03-18 2018-07-31 The Boston Consulting Group, Inc. Methods for editing hierarchical data
US9477557B2 (en) 2013-03-28 2016-10-25 Microsoft Technology Licensing, Llc Transaction processing using torn write detection
CN103501468B (zh) * 2013-10-17 2017-01-25 珠海迈科智能科技股份有限公司 检测网络视频播放地址是否有效的方法及装置
US9342351B1 (en) * 2013-11-01 2016-05-17 Bmc Software, Inc. Systems and methods for efficient DB2 outage operations
US10430402B2 (en) 2015-01-16 2019-10-01 Red Hat, Inc. Distributed transaction with dynamic form
US10096065B2 (en) 2015-01-16 2018-10-09 Red Hat, Inc. Distributed transactions with extended locks
US9830223B1 (en) * 2015-01-26 2017-11-28 Intel Corporation Methods for repairing a corrupted database to a new, correct state
US9804935B1 (en) 2015-01-26 2017-10-31 Intel Corporation Methods for repairing a corrupted database to a new, correct state by selectively using redo and undo operations
US10083075B1 (en) * 2015-04-30 2018-09-25 Amdocs Development Limited System, method, and computer program for automatic discard of corrupt memory segments
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10289706B2 (en) * 2015-06-03 2019-05-14 International Business Machines Corporation Repairing corrupted references
US10241856B2 (en) * 2016-09-09 2019-03-26 Oracle International Corporation Memory quarantine
US10225078B2 (en) 2017-02-09 2019-03-05 International Business Machines Corporation Managing a database management system using a blockchain database
US10579613B2 (en) * 2017-08-08 2020-03-03 International Business Machines Corporation Database recovery using persistent address spaces
US10795780B2 (en) 2018-06-29 2020-10-06 International Business Machines Corporation Data breach source and timeline analysis
US10929249B2 (en) 2018-06-29 2021-02-23 International Business Machines Corporation Optimized data corruption source and timeline analysis
US11182363B2 (en) 2018-06-29 2021-11-23 International Business Machines Corporation Data validation in copy repositories
US10929248B2 (en) 2018-06-29 2021-02-23 International Business Machines Corporation Data corruption source and timeline analysis
US10691448B2 (en) 2018-08-18 2020-06-23 Dell Products, L.P. Method and apparatus to execute BIOS firmware before committing to flash memory
US10990470B2 (en) * 2018-12-11 2021-04-27 Rovi Guides, Inc. Entity resolution framework for data matching
CN114005293B (zh) * 2021-12-30 2022-04-26 浙江国利网安科技有限公司 一种交通信号机的冲突表篡改监测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374264B1 (en) * 1998-09-04 2002-04-16 Lucent Technologies Inc. Method and apparatus for detecting and recovering from data corruption of a database via read prechecking and deferred maintenance of codewords
US20030149845A1 (en) * 2002-02-07 2003-08-07 Fu Peter L. Dirty data protection for cache memories

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5065311A (en) * 1987-04-20 1991-11-12 Hitachi, Ltd. Distributed data base system of composite subsystem type, and method fault recovery for the system
US5212788A (en) * 1990-05-22 1993-05-18 Digital Equipment Corporation System and method for consistent timestamping in distributed computer databases
US5893117A (en) * 1990-08-17 1999-04-06 Texas Instruments Incorporated Time-stamped database transaction and version management system
DE19525149A1 (de) * 1995-07-11 1997-01-16 Telefunken Microelectron Verfahren zum selbsttätigen Erkennen und Korrigieren eines ungültigen Datensatzes und System zu seiner Durchführung
US20050187872A1 (en) * 2002-09-06 2005-08-25 Mike Schmidt Interactive electronic bill payment system
US7254752B1 (en) * 2003-03-25 2007-08-07 Emc Corporation Protecting database records against a failed write operation
US20050097141A1 (en) * 2003-10-30 2005-05-05 International Business Machines Corporation Autonomic filesystem recovery

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374264B1 (en) * 1998-09-04 2002-04-16 Lucent Technologies Inc. Method and apparatus for detecting and recovering from data corruption of a database via read prechecking and deferred maintenance of codewords
US20030149845A1 (en) * 2002-02-07 2003-08-07 Fu Peter L. Dirty data protection for cache memories

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging", C. MOHAN, ACM Transactions on Database Systems, Vol 17, No. 1, (1992.03.) *
"ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging", C. MOHAN, ACM Transactions on Database Systems, Vol 17, No. 1, (1992.03.)*

Also Published As

Publication number Publication date
WO2006121577A3 (en) 2009-04-30
US8386440B2 (en) 2013-02-26
KR20080005387A (ko) 2008-01-11
US20060259518A1 (en) 2006-11-16
CN101506766A (zh) 2009-08-12
WO2006121577A2 (en) 2006-11-16
CN101506766B (zh) 2011-10-05

Similar Documents

Publication Publication Date Title
KR101255391B1 (ko) 데이터베이스 손상 복구 시스템 및 방법
US8095511B2 (en) Database data recovery system and method
US6578041B1 (en) High speed on-line backup when using logical log operations
EP2951694B1 (en) Recovering pages of a database
CA2933790C (en) Apparatus and method for creating a real time database replica
US7801846B2 (en) Generating log sequence identifiers to apply a transaction to a storage system
US8108343B2 (en) De-duplication and completeness in multi-log based replication
US6185699B1 (en) Method and apparatus providing system availability during DBMS restart recovery
US7552150B2 (en) Reason-based database changes
US7552147B2 (en) System and method for minimizing data outage time and data loss while handling errors detected during recovery
US8296269B2 (en) Apparatus and method for read consistency in a log mining system
US5740434A (en) System for maintenance of database integrity
CN115145697B (zh) 数据库事务的处理方法、装置及电子设备
Lomet et al. Recovery from" bad" user transactions
Lomet et al. Logical logging to extend recovery to new domains
KR100501414B1 (ko) 파일 시스템의 메타 데이터 회복을 위한 로깅과 회복 방법및 장치
Zhou et al. FoundationDB: A Distributed Key Value Store
Ozsu Notes on Database System Reliability
CN117632591A (zh) 数据恢复方法、装置、计算机设备及存储介质
JP2000163297A (ja) ファイル装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 5