KR101038358B1 - 데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기시스템을 포함하는 컴퓨터 및 네트워크 - Google Patents

데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기시스템을 포함하는 컴퓨터 및 네트워크 Download PDF

Info

Publication number
KR101038358B1
KR101038358B1 KR1020040020824A KR20040020824A KR101038358B1 KR 101038358 B1 KR101038358 B1 KR 101038358B1 KR 1020040020824 A KR1020040020824 A KR 1020040020824A KR 20040020824 A KR20040020824 A KR 20040020824A KR 101038358 B1 KR101038358 B1 KR 101038358B1
Authority
KR
South Korea
Prior art keywords
delete delete
data
level
row
logical record
Prior art date
Application number
KR1020040020824A
Other languages
English (en)
Other versions
KR20040086580A (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 KR20040086580A publication Critical patent/KR20040086580A/ko
Application granted granted Critical
Publication of KR101038358B1 publication Critical patent/KR101038358B1/ko

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F04POSITIVE - DISPLACEMENT MACHINES FOR LIQUIDS; PUMPS FOR LIQUIDS OR ELASTIC FLUIDS
    • F04BPOSITIVE-DISPLACEMENT MACHINES FOR LIQUIDS; PUMPS
    • F04B53/00Component parts, details or accessories not provided for in, or of interest apart from, groups F04B1/00 - F04B23/00 or F04B39/00 - F04B47/00
    • F04B53/16Casings; Cylinders; Cylinder liners or heads; Fluid connections
    • 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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F04POSITIVE - DISPLACEMENT MACHINES FOR LIQUIDS; PUMPS FOR LIQUIDS OR ELASTIC FLUIDS
    • F04BPOSITIVE-DISPLACEMENT MACHINES FOR LIQUIDS; PUMPS
    • F04B15/00Pumps adapted to handle specific fluids, e.g. by selection of specific materials for pumps or pump parts
    • F04B15/02Pumps adapted to handle specific fluids, e.g. by selection of specific materials for pumps or pump parts the fluids being viscous or non-homogeneous
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F04POSITIVE - DISPLACEMENT MACHINES FOR LIQUIDS; PUMPS FOR LIQUIDS OR ELASTIC FLUIDS
    • F04BPOSITIVE-DISPLACEMENT MACHINES FOR LIQUIDS; PUMPS
    • F04B53/00Component parts, details or accessories not provided for in, or of interest apart from, groups F04B1/00 - F04B23/00 or F04B39/00 - F04B47/00
    • F04B53/18Lubricating

Abstract

애플리케이션 정의형 시스템에서 일관성 단위를 복제하는 아키텍처가 개시되어 있다. 소스 복제본에서의 변경에 의해, 변경 단위 및 그에 연관된 일관성 단위의 메타데이터가 변경된다. 목적지 영역의 동기화 요청에 응답하여, 소스 영역은 갱신된 일관성 단위를 열거하고, 일관성 단위의 모든 갱신된 변경 단위를 열거하며, 변경 단위를 분류하고, 목적지 영역으로 전송할 분류된 변경 단위들을 목적지 영역으로 보낸다. 목적지 영역은 충돌을 검출 및 해결한 후, 분류된 변경 단위들을 단일 트랜잭션에서 적용한다. 각각의 변경마다 이러한 처리가 계속된다.
Figure R1020040020824
일관성 단위, 복제, 동기화, 충돌, 논리 레코드

Description

데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기 시스템을 포함하는 컴퓨터 및 네트워크{CONSISTENCY UNIT REPLICATION IN APPLICATION-DEFINED SYSTEMS}
도 1은 본 발명에 따른 복제 흐름을 도시하는 도면.
도 2는 애플리케이션 정의형 일관성 단위에 대한 추가의 논리에 관한 논리 레코드 방법을 설명하기 위한 흐름도.
도 3은 논리 레코드 방법의 일관성 단위를 도시하는 도면.
도 4는 본 발명의 스키마의 일례를 도시하는 도면.
도 5는 도 4의 예에 대한 데이터의 일례를 도시하는 도면.
도 6은 일관성 단위 변경 추적 정보를 테이블에 구별하여 두는 애플리케이션 정의형 복제의 또 다른 방법을 도시하는 도면.
도 7은 개시될 본 발명의 아키텍처를 실행하도록 동작 가능한 컴퓨터의 블럭도.
도 8은 본 발명에 따른 컴퓨팅 환경의 일례를 개략적으로 도시하는 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 소스 영역
102 : 목적지 영역
104 : 소스 복제본
105 : 일관성 단위
106 : 목적지 복제본
110, 114 : 조정 컴포넌트
108, 112 : 변경 식별 컴포넌트
본 발명은 데이터 복제(data replication) 시스템에 관한 것으로서, 보다 상세히는 애플리케이션 정의형(application-defined) 체제(regime)에서의 데이터 복제에 관한 것이다.
인터넷의 출현으로, 여러 이종(disparate) 시스템들의 데이터 셋트들을 복제할 필요가 크게 증대되고 있다. 복제는 장애가 발생하는 경우에 대하여 보다 높은 데이터 중복성(data redundancy)을 제공한다. 또한, 복제는 사용자와 데이터 간의 보다 향상된 데이터 가용성(data availability), 보다 향상된 부하 분산성(load balancing), 보다 향상된 위치적 근접성(geographic proximity)을 제공한다.
상태 기반의(state-based) 복제 시스템은, 일관성이 강고한 데이터 셋트(a set of tightly consistent data)를 정의하는 일관성 단위(consistency unit)라는 표현을 사용한다. "일관성이 강고한(tightly consistent)"이란, 복제본(replica)이 일관성 단위의 데이터를 전부 포함하던지, 아니면 전혀 포함하지 않는 것을 뜻 하며, 이는 데이터의 사용자가 데이터의 일부만이 제공된 경우에 대하여 보정을 행할 필요를 없게 한다.
상태 기반의 복제 시스템에서의 일관성 단위에 대한 아이디어는 새로운 것이 아니다. 상태 기반의 복제 시스템의 대부분은 일관성 단위에 대한 개념을 다소간 정의하고 있다. 그러나, 이러한 시스템들 중 어떤 시스템은 낮은 수준으로 고정되어 있다. 즉, 예컨대 테이블 내의 물리적 행에 포함되어 있는 모든 데이터가 함께 전송되고 함께 적용되는 정도이다. 이러한 시스템에 의하면, 애플리케이션 작성자는 해당 시스템의 데이터를 그 시스템에서 미리 정의된 낮은 수준의 일관성 단위에 맞추려고 변경해야만 하거나(이것도 항상 가능한 것은 아니다), 일관성이 강고하지 않은 복제 데이터의 처리와 같이, 데이터의 비일관성을 검출 및 처리하기 위한 추가의 코드를 작성해야만 한다.
애플리케이션 정의형 일관성 단위는, 그 이름이 시사하는 바와 같이, 복제 시스템에 대해 강고한 일관성의 경계를 규정하기 위한 기능(capability)을 애플리케이션에 부여한다. 그러면, 이 애플리케이션은, 비일관적인 상태를 처리하는 복잡성을 완화시키는 한편, (복제 시스템에 가장 적절할 수 있는 방식이 아니라) 데이터에 가장 적절할 수 있는 임의의 방식에 의해 해당 데이터를 자유롭게 모델링할 수 있게 된다.
일관성 단위와 달리, 변경 단위(change unit)는 충돌의 검출 및 해결이 적용될 데이터의 그래뉼래리티(granularity)이다. 따라서, 그래뉼래리티는 "변경 이력(change history)"을 보유한다. 대부분의 상태 기반의 복제 시스템에서는, 변 경 단위가, 예컨대 물리적 행이나 열과 같이 하나의 그래뉼래리티 혹은 그래뉼래리티 옵션들의 소집단 중에서의 하나로 정해진다.
변경 단위와 일관성 단위를 일치시킨 시스템을 정의하는 것이 가능하더라도, 때로는 이들이 서로 상이하거나, 보다 특정하게는, 일관성 단위가 하나 이상의 변경 단위를 포함하게 하는 것이 바람직할 경우가 있다. 예컨대, Customer, Order, OderDetails라는 데이터베이스들의 제1 복제본 R1과 제2 복제본 R2를 고찰해 본다. 고객 데이터, 주문 데이터, 주문 상세 데이터가 제1 복제본 R1에 생성되어 있는 경우, 이 데이터들이 함께 하나의 단위로서 제2 복제본 R2에 복제 및 적용되어야 하는 것이 바람직하다. 즉, 이러한 시나리오에서, 일관성 단위는 고객 데이터, 고객이 지시한 모든 주문의 데이터, 및 모든 고객 주문에 대한 주문 상세 데이터를 포함한다. 이제, 제1 복제본 R1에서 고객의 청구지 주소가 갱신된 시점의 이후와, 이러한 변경에 대한 복제가 제2 복제본 R2에 발생하기 이전에, 고객의 새로운 주문이 R2에 입력되는 경우를 가정해 본다. 희망하는 결과는, 복제가 정지되었을 때, 복제본 R1, R2 모두가 새로운 청구지 주소와 새로운 주문을 갖는 것이다. 이러한 결과는 상기 2 가지의 갱신 사항이 충돌되지 않을 것을 요건으로 하는 것으로서, 변경 단위 내에서 청구지 주소가 새로운 주문의 청구지 주소와 구별되어 존재해야만 한다. 제한적 복제 폭(limiting replication bandwidth) 등을 포함한, 변경 단위와 일관성 단위의 그래뉼래러티 간을 구별할 필요를 예시하는 다른 예들이 존재한다. 또한, 최근의 몇몇 상태 기반의 복제 시스템들은 일관성 단위가 복수의 변경 단위를 포함할 수 있게 하고 있음을 주목한다.
여러 장소에서 해당 데이터를 갱신하는 것을 허용하는 기존의 복제 방식은, 물리적 테이블 행들의 순 변경분(net change)을 복제하고, 충돌의 검출 및 해결은 물리적 테이블의 행이나 열의 그래뉼래리티에서 있게 되는 것이 통상적이다. 그러나, 의미론적으로 관련되어 있는 행들이 동일 비즈니스 오브젝트(business object)의 일부라면, 이 행들을 복제할 필요가 있다. 목적지 복제본에 순 변경분을 전달하는 종래의 복제 기법은, 비즈니스 논리(business logic)에 의미론적으로 관련된 복수의 테이블 형태의 복수의 행들에 변경분을 전달할 수 있고, 상이한 시점에서 상이한 트랜잭션들 중 일부로서 적용될 수 있다. 그러나, 이러한 방식은 "비즈니스 오브젝트" 레벨로 그룹핑되는 행들의 전반에 대하여 일관성을 보존하는 것을 보장하지는 않는다.
다시, Customers, Orders, Order Details라는 3개의 데이터베이스 테이블의 행들을 포함하는 데이터 셋트의 동기화를 고려해 본다. 사용자 애플리케이션이 새로운 주문 정보 및 새로운 주문 상세 정보와 함께 새로운 고객 정보를 삽입할 것이라고 가정한다. 종래의 복제는 서로 다른 복제본에서 이러한 변경을 적용하는 순서를 보존하는 것을 보장하지는 않지만, Customers 테이블에의 삽입을 전달하고, 그 다음, Orders 테이블에의 삽입을 전달하며, 그 후 마지막으로 Order Details 테이블에의 삽입을 전달할 수는 있다. Orders 변경의 적용과 OrderDetails 변경의 적용 사이에 장애 혹은 중요한 지연이 발생할 경우, Orders 중의 어떤 것은 OrderDetails를 갖지 않는 것처럼 보이거나, 주문 상세 정보의 단지 일부가 Orders의 일부에 보일 수 있다 (이러한 상황은 보통 순식간에 나타날 뿐이어서, 동기화가 성공적으로 완료된 다음에 해결되게 된다). 그러나, 애플리케이션 기반의 일관성 단위에 따른 상술한 정의와 같이, 애플리케이션이, 논리적으로 관련된 모든 레코드가 임의의 장소에서 소정의 시점에 완전히 존재하지 않거나 완전히 존재할 것을 요구하는 경우, 일부 데이터 셋트만이 존재하는 것은 문제가 된다. 또 다른 예로는, 시스템 상에서 실행되는 2개의 애플리케이션(또는 동일 애플리케이션의 2개의 인스턴스)이 존재하는 경우에 - 둘 중 하나는 복제본 R1에 대해 갱신을 수행하고, 다른 하나는 복제본 R2로부터 정보를 판독함 -, 목표는 복제본 R2로부터의 판독을 행하는 애플리케이션이 데이터베이스에서 자신의 비즈니스 오브젝트를 모델링하는 방식에 제한되지 않고 시스템 상에서 비즈니스 오브젝트의 강고한 일관성에 따를 수 있게 하는 것이다.
의미론적으로 관련되어 있는 오브젝트들 사이의 관계 및 순서 제약 조건이 유지되며, "비즈니스 오브젝트" 레벨에서의 일관성이 다른 복제본으로의 전달 시에도 보존되도록, 고도의 가변 시스템이 오브젝트들을 복제하기에 충분한 복제 메커니즘의 애플리케이션 정의형 시스템이 더욱 필요하다. 상술한 바와 같이, 상태 기반의 복제 시스템은 모든 갱신 사항을 소정의 일관성 단위로 함께 전달 및 적용해야만 한다. 이러한 단위에 대한 그래뉼래리티가 고정된 시스템에서는 그 구현이 비교적 용이하다. 그러나, 애플리케이션 정의형 일관성 단위와 함께, 추가의 논리가 요구된다.
본 발명의 특징들에 대한 기본적인 이해를 제공하기 위해, 본 발명에 관한 간략한 개요를 이하에 제공한다. 이 개요는 본 발명의 전체적인 개관이 아니다. 본 발명의 범주를 기술하고 본 발명의 주요/필수 구성 요소들을 나타내고자 하는 것이 아니다. 그 목적은 단지, 본 발명의 일부 개념을, 이후에 설명될 상세한 설명에 대한 도입부와 같은 간단한 형태로 제공하는 것이다.
본 발명은 "비즈니스 오브젝트" 일관성의 보존을 필요로 하는 애플리케이션의 설치를 지원하는 데이터 집합의 복제를 특징으로 한다. 본 발명은, 애플리케이션이, 물리적 행 대신에 비즈니스 오브젝트를 보다 근접하게 모델링하는 동기화 행위를 채용할 수 있게 한다. 본 발명에 따른 애플리케이션은 비즈니스 오브젝트를 모델링하는 한편, 복제의 범위를 정의하여, 복제 처리가 전체 비즈니스 오브젝트를 전달할 수 있게 한다. 이는, 다른 복제본들이 비즈니스 오브젝트의 일부 상(image)에 대하여 가시성(visibility)을 갖지 않는다는 것을 의미한다.
본 발명은 변경된 데이터의 비즈니스 오브젝트가 다른 복제본들에 전부 전달되는 것을 용이하게 한다. 종래 시스템의 그래뉼래리티의 레벨인 행 단위 혹은 열 단위로 변경 사항을 전달하는 것과는 달리, 본 발명은 그래뉼래리티의 최소 레벨을, 의미론적으로 연관되어 있는 데이터를 "비즈니스 오브젝트" 레벨로 그룹핑하는 것으로 끌어 올림으로써 종래의 그래뉼래리티를 개선시킨 것이다. 이하에, 관계형 데이터베이스의 컨텍스트(context)에서의 애플리케이션 정의형 일관성 단위를 지칭할 때, 본 발명의 실시예에서는 "논리 레코드(logical record)"라고도 한다. 일 실시예에서, 일관성 단위를 구성하는 행과 열은 공통의 "부모 행(parent row)"에 링크된다. 부모 행은 한 테이블에서 오직 하나만 있는 행으로서, "부모 테이블(parent table)" 내의 임의의 2개의 행이 동일한 일관성 단위의 일부가 될 수는 없다. 부모 행은 애플리케이션 데이터의 일부이다. 예를 들어, Order Detail들이 한 Order에 링크되고, Order들이 한 Customer에 링크된 경우, Customer를 공통의 "부모 행"으로서 선택한다는 것은, Customer 그 자체와 아울러, (링크들을 트래버싱(traversing)함으로써 정의될 수 있는) Customer의 모든 Order들의 모든 Order Detail들이 단일의 일관성 단위를 구성한다는 것을 의미한다. (앞서의 예들에서, Order Detail의 레코드가 제1 테이블에 있고, Order의 레코드는 제2 테이블에, Customer의 레코드는 제3 테이블에 있다는 것을 상기한다.) (임의의 공통 변경 이력 등의) 일관성 단위의 복제 메타데이터는 "부모 행"에 보유된다. 복제 시스템은, 행들 간의 링크를 분석하여 소정의 일관성 단위의 경계를 결정하고, 어떤 갱신 사항이라도, 일관성 단위를 구성하는 모든 행들에 일제히 전달하며, 목적지 복제본에서의 단일 트랜잭션에서 모든 관련 갱신 사항들을 적용함으로써, 강고한 일관성을 유지한다. 이와 같이 함으로써, 논리적으로 연관된 모든 레코드들이 소정의 장소와 시점에서 완전히 제공되던지 혹은 존재하지 않아야 하는 애플리케이션에서의 일관성 단위의 관련 행들 사이에는 관계 및 순서 제약 조건이 유지된다.
또 다른 실시예에서는, 애플리케이션 데이터의 대부분 혹은 전부가 단일 테이블에 존재할 수 있다. 이러한 경우, 애플리케이션이 일관성 단위로 결합시키고자 하는 데이터는 또 다른 테이블의 애플리케이션 데이터에 공통으로 연계되지 않는다. 이러한 경우는 디렉토리 서비스에서 일반적인 것일 수 있다. 디렉토리 서비스의 경우, 애플리케이션의 소정의 일관성 단위는 디렉토리 오브젝트의 임의의 셋트로 구성되며, 디렉토리 오브젝트 각각은 하나의 공통의 테이블에 완전히 포함된다. 이 경우, 관련 오브젝트들은 공통의 키 값, 예컨대 "consistencyUnitKey"라는 디렉토리 속성 값을 통해 결합될 수 있다. 복제 메타데이터는 디렉토리 복제 시스템에서만 사용되는 전용 테이블(private table)에, 혹은 오브젝트들 중 하나와 함께 저장될 수 있다.
본 발명은 행 또는 열 단위 레벨 뿐만 아니라 일관성 단위 레벨에서 충돌을 검출 및 해결하고, 해결된 데이터를 목적지 복제본으로 수렴(converge)시키는 조정 알고리즘을 사용한다.
상술한 목적과 그 외의 관련된 목적을 달성할 수 있도록, 본 명세서에서는 이하의 설명과 첨부된 도면과 관련하여 본 발명의 예시적인 특징들을 개시한다. 그러나, 이러한 특징들은 본 발명의 원리들이 적용될 수 있는 다양한 방법 중 일부를 나타내는 것이며, 본 발명은 이러한 모든 특징들과 그 균등물들을 포함하도록 의도된 것이다. 본 발명의 다른 이점들과 신규한 특징들은, 도면과 관련하여 이하의 본 발명에 관한 상세한 설명을 참조하면, 더욱 명확하게 이해할 수 있다.
정의
이하의 용어들이 본 명세서의 전반에 걸쳐 사용된다. 이 용어들의 정의는 본 발명의 다양한 특징들을 이해하는 데 도움을 주기 위해 제공되는 것이다.
소스 복제본(source replica) : 변경이 발생되는 데이터 소스(data source)
목적지 복제본(destination replica) : 변경이 전달될 데이터 소스
동기화 처리(synchronization process) : 2개의 복제본으로부터의 데이터 셋트를 최종 수렴 상태에 동기화시키는 처리
충돌(conflict) : 2개의 복제본에서 동일 데이터 요소가 변경된 경우, 복제 시스템은 그 데이터 요소에 대해 충돌이 발생했음을 신호한다.
충돌 검출(conflict detection) : 변경 사항이 충돌된 것인지를 알 수 있도록 소스 복제본과 목적지 복제본의 메타데이터를 문의하는 동기화에서의 처리
충돌 해결(conflict resolution) : 충돌이 발생한 후, 그 충돌에 대한 존속자(winner)와 폐기자(loser)를 판정하는 동기화에서의 처리
행 계통(row lineage) : 한 행의 변경 이력을 캡쳐(capture)한 복제 메타데이터. 이 메타데이터는 행의 개개의 갱신 사항들을 캡쳐하고, 그 버전들의 궤적을 보유한다.
열 버전(column version) : 어떤 복제본에 의해서 어떤 버전의 열이 이루어진 것인지를 캡쳐하는 복제 메타데이터
툼스톤 메타데이터(tombstone metadata) : 행의 삭제를 캡쳐하는 복제 메타데이터
논리 레코드(logical record) : 일관성 단위로서 전달될 필요가 있는 부모 행(parent row)과 자식 행(child row)의 집합
논리 레코드 링크(logical record link) : 복제 처리 동안 보존될 동일 논리 레코드의 일부인 2개의 테이블 간의 관계를 정의하는 것이다. 즉, 2개의 테이블 간의 결합을 지정하는 것과 유사하다. "논리 레코드 링크"는 2개의 테이블의 이름 을 정하고, 이 2개의 테이블 간의 관계를 나타내기 위한 결합 조건을 지정한다. "논리 레코드 링크"는 일반적으로 TABLE1.COLUMN = TABLE2.COLUMN의 형태이다. 이 조건은 TABLE1과 동일한 열 값을 갖는 TABLE2의 모든 행이 "논리 레코드"로서 복제된다는 것을 보증한다. 예를 들면, logical record link Customers.CustomerID = Orders.CustomerID는 소정의 Customers의 행과 이에 관련된 Orders가 이제 동일한 논리 레코드의 일부임을 표시하는 것이다.
최상위 레벨의 부모 행(top-level parent row) : 논리 레코드에서 부모로서 동작하는 행
자식 행(child row) : 논리 레코드의 멤버 행들(member rows)
논리 레코드 재편성(logical record realignment) : 논리 레코드 내의 행들의 멤버 관계에 변경을 야기하는 변동
부모 식별자(parent identifier) : 논리 레코드의 식별자. 이것은 일반적으로 최상위 레벨의 부모의 행 식별자이다.
동기화 앵커(synchronization anchor) : 2개의 복제본이 얼마나 동기화로부터 벗어나 있는지를 판정하는 엔티티(entity)
이제, 도면을 참조하여 본 발명을 설명한다. 도면의 전반에 있어서, 유사한 참조 번호는 유사한 구성 요소를 지칭하는 데 사용된 것이다. 이하의 설명에 있어서, 본 발명에 대한 완전한 이해를 제공하기 위해 여러 특정한 세부적 사항들이 기술되어 있다. 그러나, 본 발명은 이러한 특정한 세부적 사항들 없이도 실시될 수 있다는 것은 명백하다. 다른 실시예들에서는, 본 발명을 용이하게 설명하기 위해 서 공지된 구조와 장치들을 블럭도의 형태로 나타내었다.
본 명세서에 사용된 바와 같이, "컴포넌트(component)"와 "시스템(system)"이라는 용어는 컴퓨터 관련의 엔티티 즉, 하드웨어, 하드웨어와 소프트웨어의 결합물 혹은 실행될 소프트웨어를 지칭하는 것이다. 예를 들어, 컴포넌트는 프로세서에서 실행될 프로세스, 프로세서, 오브젝트, 실행될 스레드(thread), 프로그램, 및/또는 컴퓨터일 수 있으나, 이에 한정되지는 않는다. 예로서, 서버 상에서 실행되는 애플리케이션 및 상기 서버 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 실행되는 스레드 및/또는 프로세스 내에서 상주할 수도 있고, 컴포넌트가 1대의 컴퓨터에 위치하고하/거나 2대 이상의 컴퓨터에 분산되어 있을 수 있다.
본 명세서에 사용된 바와 같이, "추정(inference)"은 일반적으로, 이벤트 및/또는 데이터를 통해 캡쳐되는 관찰 결과의 셋트로부터 시스템, 환경, 및/또는 사용자의 상태에 관하여 추론하거나 추정하는 프로세스를 지칭한다. 추정은 특정한 콘텍스트나 작용을 식별하기 위해 사용될 수 있고, 혹은 예컨대 상태에 관한 확률 분포를 작성할 수 있다. 추정은 가능성에 근거한 것 즉, 데이터와 이벤트에 관한 고려에 기초한 상태에 관한 확률 분포의 산출 결과일 수 있다. 또한, 추정은 이벤트 및/또는 데이터의 셋트로부터 보다 높은 레벨의 이벤트를 구성하기 위해 사용되는 기술들을 지칭할 수도 있다. 이러한 의미의 추정에 의하면, 이벤트들이 시간적으로 매우 근접하게 상관되어 있는지의 여부와 이벤트와 데이터가 하나의 이벤트 및 데이터 소스로부터 발생한 것인지 혹은 수개의 이벤트 및 데이터 소스로부터 발생한 것인지에 관하여 관찰된 이벤트 및/또는 저장된 이벤트/데이터의 셋트로부 터 새로운 이벤트나 작용이 구성된다.
이제 도 1을 참조하면, 본 발명에 따른 복제 흐름도가 나타나 있다. 예로서, 소스 영역(source location)(100)과 목적지 영역(destination location)(102)의 각각에는 적어도 하나의 동종(homogeneous) 데이터 집합의 전부 혹은 일부가 상주하는 것으로 나타나 있다. 본 특정 실시예에서, 소스 영역(100)은 제1 데이터 집합(즉, 소스 복제본)(104)을 포함한다. 제1 데이터 집합은 주기적으로 갱신되는 전형적인 네트워크 데이터베이스일 수 있고, 그 갱신은 원격 데이터 집합(즉, 목적지 복제본)(106)과 동기화된다. 소스 복제본(104)은, 소스 복제본(104)에 변경 사항을 가하는 목적지 복제본(106)의 중복 사본(redundant copy)이거나, 변경 사항이 가해지는 소스 복제본(104)의 서브셋트일 수 있으며, 상기 변경 사항들은 목적지 복제본(106)과 동기화될 필요가 있다. 또한, 동종의 데이터 집합은 디렉토리 서비스 데이터 구조, 및 이종의 데이터 집합들의 전반에 걸쳐 데이터의 지속적인 갱신을 요구하는 임의의 다른 동종의 데이터 집합을 포함할 수 있다.
임의의 적절한 시점에서, 소스 복제본(104)이 모든 변경 사항들을 목적지 복제본(106)으로 전송하도록 소스 영역(100)과 목적지 영역(102)을 조정 즉, "동기화"하는 것이 바람직하다. P2P(peer-to-peer) 환경에서는, 목적지 영역(102)에서 수신된 상기의 변경 사항들이, 목적지 영역(102)으로부터 혹은 소스 영역(100)으로부터 직접, 동기화를 요구하는 다른 원격 데이터 집합으로 전달될 수 있다.
이를 위해, 애플리케이션에 관련된 소스 복제본(104) 즉, 소스 영역(100)은 하나 이상의 갱신 사항을 수신한다. 소스 영역(100)과 목적지 영역(102)에서의 복 제본 데이터의 각각에 메타데이터가 관련되어 있다. 각 변경 사항은 변경 단위 및 그에 관련된 일관성 단위에의 메타데이터 갱신으로 된다. 소스 복제본(104)의 변경된 데이터에 대한 메타데이터는 변경된 데이터의 메타데이터의 일관성 단위(105)를 생성하는 데 사용된다. 상술한 바와 같이, 일관성 단위(105)는 단일의 변경 단위일 수 있다. 그러나, 본 발명의 신규한 특징에 따르면, 일관성 단위(105)는 하나 이상의 변경 단위를 포함하고, 소스 복제본(104)의, 의미론적으로 관련된 변경된 데이터 레코드들을 전부 포함한다.
동작에 있어서, 목적지 영역(102)은 소스 영역(100)과의 동기화를 주기적으로 요청하여, 소스 복제본(104)과 목적지 복제본(106)의 동기화를 용이하게 한다. 소스 영역(100)이 동기화 요청을 수신하면, 소스 영역(100)은 (처음에 소스 복제본(104)의 변경 사항을 포함하는 것으로 표현된) 갱신된 일관성 단위(105)를 열거(enumerate)한다. 다음으로, 소스 영역(100)은 일관성 단위(105)의 모든 갱신된 변경 단위들을 열거하고, 목적지 영역(102)으로 전송할 소정의 일관성 단위(105)의 변경 단위들을 분류(bundle)한다. 목적지 영역(102)은, 갱신된 정보를 수신 및 식별하는 목적지 변경 식별 컴포넌트(108)를 포함한다. 또한, 목적지 영역(102)은, 변경 식별 컴포넌트(108)로부터의 열거된 변경 사항을 수신하고 충돌을 검출 및 해결하며 목적지 복제본(106)에 변경된 데이터를 수렴하는 목적지 조정 컴포넌트(110)를 포함한다. 변경된 데이터는 일관성 단위(105)로서 목적지 영역(102)으로 보내지고, 단일 트랜잭션에서 목적지 복제본(106)으로 전달된다.
복제본에 대해 소스 혹은 목적지라고 명기하는 것은 데이터를 송수신하는 것 에만 관련된 것임을 이해하여야 한다. 따라서, 본 발명의 신규한 특징들을 위해, 목적지 영역(102)은 목적지 애플리케이션으로부터 변경 사항들을 수신할 수 있으며, 동기화가 발생할 경우에 변경 사항들을 소스 영역(100)으로 전달하게 된다. 소스 영역(100)은 복제본 변경 사항의 처리 및 전달을 위해 소스 변경 식별 컴포넌트(112) 및 소스 조정 컴포넌트(114)를 포함한다.
동작에 있어서, 소스 영역(100)은 목적지 영역(102)과의 동기화를 주기적으로 요청하여, 목적지 복제본(106)과 소스 복제본(104)의 동기화를 용이하게 한다. 목적지 영역(102)이 소스 영역(100)으로부터의 동기화 요청을 수신하면, 목적지 영역(102)은 (일관성 단위(105)에 의해서도 표현되지만, 목적지 복제본(106)의 변경 사항을 포함하고, 그 역방향으로 전달되는) 목적지 변경 단위의 갱신된 일관성 단위(105)를 열거하고, 일관성 단위(105)의 모든 갱신된 변경 단위들을 열거하며, 소스 영역(100)으로 전송할 소정의 일관성 단위의 변경 단위들을 분류한다. 소스 변경 식별 컴포넌트(108)는 갱신된 정보를 수신하여 식별한다. 소스 조정 컴포넌트(114)는 변경 식별 컴포넌트(112)로부터 열거된 변경 사항들을 수신하고, 충돌을 검출 및 해결하며, 변경된 데이터를 소스 복제본(104)으로 수렴한다. 변경된 데이터는 소스 영역(100)으로 보내어지고, 단일 트랜잭션에서 소스 복제본(104)으로 전달된다. 동기화 처리가 완료될 때까지 분류된 변경 사항들이 수신 복제본으로 복제되는 것이 반복될 수 있다.
이제 도 2를 참조하면, 애플리케이션 정의형 일관성 단위(105)에 대한 추가의 논리에 관한 논리 레코드 방법의 흐름도가 도시되어 있다. 간명한 설명을 위 해, 그 방법론을 일련의 동작으로서 도시하고 설명하지만, 본 발명은 이러한 동작의 순서에 제한되지 않으며, 본 발명에 따르면 소정의 동작들이 다른 순서로 발생하고/하거나 본 명세서에서 설명하고 도시한 동작과는 다른 동작들과 동시에 발생할 수 있다. 예를 들어, 당업자라면, 그 방법론을 상기한 바와는 달리 상태도와 같이 상호 관련된 일련의 상태나 이벤트로서 나타낼 수도 있다. 또한, 본 발명에 따른 방법론을 구현하는 데에는 예시된 모든 동작들이 필요하지 않을 수도 있다.
본 방법은 변경 단위와 이에 관련된 일관성 단위 간의 연결(또는 상호 관계)을 정의하기 위해 논리 레코드 링크를 사용한다. (종래의 시스템에서는, 이러한 연결이 하드 코딩(hard-coding)되었다 - 예컨대, 변경 단위가 하나의 열이고, 일관성 단위가 하나의 행일 경우에, 소정의 변경 단위에 대한 일관성 단위는 해당 열이 존재하는 행이 된다.) 본 방법의 일관성 단위 각각은 "부모 행"과 일대일 관계를 갖는다. 변경 추적 정보는 각각의 일관성 단위와 관련되며, 부모 행에 기록된다. 따라서, 일관성 단위(105)는 동기화를 위해 선택된 제1 목적지의 데이터 집합의 변경된 레코드의 해당 부모 메타데이터 테이블 및 자식 메타데이터 테이블을 모두 포함한다.
진행은 소스 복제본에서 변경이 발생하는 단계 200에서 시작된다. 각각의 변경 사항은 변경 단위 및 그에 관련된 일관성 단위의 양측 모두에의 메타데이터 갱신으로 된다. 데이터 변경이 사용자 데이터베이스에서 발생할 경우, 사용자 데이터베이스의 변경 추적 메커니즘은 복제 메타데이터의 궤적을 보유하여, 그 변경 사항들을 차후의 적절한 시점에서 다른 복제본과 동기화될 수 있게 한다. 단계 202에서, 목적지 영역은 동기화를 요청한다. 그에 대한 응답으로, 단계 204에 나타낸 바와 같이, 갱신된 변경 단위 각각에 대하여, 소스 영역은 갱신된 일관성 단위를 열거한다. 단계 206에서, 소스 영역은 일관성 단위 내에 있는 모든 갱신된 변경 단위들을 열거하고, 이들을 분류한다. 다음으로, 단계 208에 나타낸 바와 같이, 소스 영역은 주어진 일관성 단위에 대해 분류된 변경 단위(들)를 목적지 영역으로 보낸다. 동기화 처리의 한 단계인 충돌 검출 및 해결이 수행되는데, 여기서는 동기화에 관련된 소스 복제본과 목적지 복제본으로부터의 복제 메타데이터가 비교되어, 어떠한 충돌도 검출 및 해결된다. 단계 210에서, 목적지 영역은 일관성 단위의 메타데이터의 갱신을 포함하여, 분류된 변경 단위들을 단일 트랜잭션에서 적용한다. 동기화 처리의 이러한 단계는, 충돌 검출 및 해결이 수행된 후, 소스 복제본으로부터의 변경 사항들이 목적지 복제본으로 전달된 경우에 발생한다. 단계 212에서, 갱신 사항이 더 있는지의 여부를 판정하기 위한 검사가 수행된다. "예"인 경우, 진행은 후속하는 변경 단위를 처리하기 위해 단계 204의 입력으로 복귀한다. "아니오"인 경우, 진행은 갱신 처리를 종료하는 정지 블럭에 도달한다. 이제 도 3을 참조하면, 논리 레코드 방법의 일관성 단위(300)가 예시되어 있다. 이 오브젝트(300)는 단일의 최상위 레벨의 부모 행(302)과 복수의 자식 행(304)을 포함한다. 제1 레벨의 자식 행(306)은 Child1, …, ChildN이라고 표시되며, 최상위 레벨의 부모 행(302)을 부모로서 갖는다. 제2 레벨의 자식 행(308)은 Child11, …, Child1M 및 ChildN1, …, ChildNZ라고 표시되며, 제1 레벨의 자식 행(306)을 부모로서 갖는다. 데이터 집합 내에 포함된 상세 사항의 개수에 따른 그 다음 레벨의 자식 행들이 존재하지만, 도시되지는 않았다.
논리 레코드 링크(310)를 사용함으로써 상기 레벨들의 행들 각각이 관련되게 된다. 따라서, 논리 레코드 링크(310)는 제1 자식 행(312)과 최상위 레벨 부모(302) 간의 관계를 설정한다. 또 다른 논리 레코드 링크(314)는 제1 레벨의 나머지 자식 행들(306)과 최상위 레벨의 부모(302) 간의 논리적 링크를 제공하는 데 사용된다. 마찬가지로, 각각의 논리 레코드 링크(316)에 의해 제2 레벨의 자식행 각각(308)이 해당 부모(보다 상위에 있는 제1 레벨의 자식 행들(306))에 관련된다. 각각의 자식 행 테이블은 해당 부모와 행 계통 정보와 열 버전 정보를 식별하는 메타데이터를 포함한다.
변경 추적, 변경 열거, 충돌 검출 및 해결, 변경 적용의 4 단계의 복제 처리를 각각 이하에 보다 상세히 설명한다.
논리 레코드에 대한 변경 추적
사용자 데이터베이스(또는 데이터 집합)에서 데이터 변경이 발생하면, 사용자 데이터베이스의 변경 추적 메커니즘은 복제 메타데이터의 궤적을 보유하여, 상기의 변경이 차후의 적절한 시점에서 다른 복제본들과 동기화될 수 있게 한다. 본 발명의 한 가지 가정은, 논리 레코드의 모든 멤버들은 오직 하나의 최상위 레벨의 부모(302)를 갖는다는 것이다. 임의의 자식 행(310, 314, 316)이 주어진 경우, 각각의 논리 레코드는 단일의 최상위 레벨의 부모(302)와 복수의 자식 행들로 구성되므로 최상위 레벨의 부모 행(302)을 명백히 판정할 수가 있다. 복제에 관여하는 모든 행들은 GUID 값인 행 식별자를 갖는다. 그 행이 논리 레코드의 멤버인 경우에는, 이제 새로운 부모 식별자 속성이 정규의 복제 메타데이터와 함께 유지된다. 모든 자식 행들의 부모 식별자는 최상위 레벨의 부모 행의 행 식별자이다. 논리 레코드의 일부인 멤버 행은, 행 및 열 레벨의 충돌 검출을 수행할 수 있게 하는 행 계통과 열 버전을 포함하는 복제 메타데이터를 갖는다. 또한, 새로운 속성인 "논리 레코드 계통"이 최상위 레벨의 부모 행에 보유된다. 이 속성은 전체 논리 레코드의 변경 이력을 포함한다. 행 계통이 <replica_id, row_version> 튜플(tuple)을 사용하여 행을 갱신한 모든 복제본에 대한 엔트리를 보유하는 것과 마찬가지로, 논리 레코드 계통은 <replica_id, logical_record_version> 튜플을 사용하여 논리 레코드를 변경한 모든 복제본의 엔트리를 보유한다.
논리 레코드의 멤버 행이 갱신되면, 자식 행의 갱신된 행 계통은 아래와 같이 정해진다 :
<new row lineage > = <current row lineage> + a new entry with <current replica_id, max version of logical_record_lineage + 1>
마찬가지로, 전체 논리 레코드의 logical_record_lineage는 아래와 같이 정해진다 :
<new logical_record_lineage > = <current logical_record_lineage> + a new entry with <current replica_id, max version of logical_record_lineage + 1>
논리 레코드의 멤버 행들이 삽입, 갱신, 혹은 삭제되는 경우, 변경 추적 메 커니즘이 복제 메타데이터를 변경하는 방법을 이하의 설명으로 예시하고자 한다.
논리 레코드로의 행 삽입에서는, 변경 추적 논리는 우선적으로, 소정의 행에 대한 부모 식별자를 판정한다. "논리 레코드"의 최상위 레벨의 부모에 대한 메타데이터가 아직 메타데이터 테이블에 제공되어 있지 않은 경우에는, 최상위 레벨의 부모 행의 메타데이터가 복제 메타데이터 테이블에 삽입되는 것을 보장하기 위한 검사가 수행되어야 한다. 다음으로, 논리 레코드의 "논리 레코드 계통"은, "현재의 복제본(current replica)" 및 "논리 레코드의 현재 최대 버전 + 1(current max version of the logical record + 1)"을 나타내는 새로운 엔트리를 포함하도록 갱신된다. 상기의 구문은 이러한 개념을 반영한 것이다.
논리 레코드로의 행 갱신에서는, 변경 추적 논리는 우선적으로, 소정의 행에 대한 부모 식별자를 판정한다. 행에 대한 갱신이 "논리 레코드"의 재편성에 의한 것인 경우에는, 이를 기록한다. 이에 관하여는, 갱신에 관련되는 열이 "논리 레코드 링크" 정의의 일부인지의 여부를 조사함으로써 판정된다. 소정의 논리 레코드의 해당 행의 멤버 관계가 갱신에 영향받지 않은 경우, 해당 행의 계통과 최상위 레벨의 부모 행의 "논리 레코드 계통"은 최근의 갱신을 반영하도록 갱신된다. 논리 레코드 재편성이 있었던 경우에는, 멤버 행의 부모가 변경되었다는 것이다. 이러한 재편성을 다른 복제본들에 전달하기 위해서는, 오래된 논리 레코드로부터의 삭제 및 새로운 논리 레코드로의 삽입과 마찬가지로, 그 갱신 사항을 멤버 행에 기록한다. 멤버 행이 논리 레코드의 일부인 자식 행을 갖는 경우에는, 그 재편성을 그 자식 행에도 반영한다.
행 삭제에 있어서, 자식 행이나 부모 행이 복제본에서 삭제될 경우, 추적 논리는 우선적으로, 해당 행에 대한 부모 식별자를 판정한다. 본질적으로, 삭제는 논리 레코드가 재편성되게 한다. 메타데이터는, 논리 레코드에 대한 다른 변경 사항과 함께 삭제를 처리하는 방식으로 갱신된다. 삭제는 정확한 부모 식별자를 갖는 툼스톤으로서 기록된다. 논리 레코드의 최상위 레벨의 부모의 삭제가 발생된 경우에는, 전체 논리 레코드가 다른 복제본으로부터 제거될 필요가 있는 것으로 처리될 필요가 있다.
논리 레코드 재편성
이제 도 4를 참조하면, 본 발명의 스키마의 일례가 나타나 있다. 논리 레코드의 재편성은, 논리 레코드의 의미론(semantics)을 보존하는 방식으로, 재편성이 목적지 복제본에 전달되도록, 메타데이터를 갱신하는 변경 추적 메커니즘을 요구한다. 도 4의 예에서는, CustomerID 열로 고유하게 식별되는 Customers 행을 갖는 Customers 테이블(400)이 나타나 있다. 또한, Customers 테이블(400)은 FirstName, LastName, Address라고 명명된 3개의 열을 포함한다. Orders 테이블(402)은 OrderID 열에 의해 고유하게 식별된다. 또한, Orders 테이블(402)은 그 부모인 Customers 테이블(100)에 맵핑하기 위한, CustomersID라고 명명된 제 1열과, EmployeeID라고 명명된 제2 열과, OrderDate라고 명명된 마지막 열의 3개의 열을 포함한다. 제3 테이블인 OrderDetails 테이블(404)은 OrderDetailID 열에 의해 고유하게 식별된다. OrderDetails 테이블(404)은 그 부모인 Orders 테이블(402)에 맵핑하기 위한, OrderID라고 명명된 제1 열과, ProductID라고 명명 된 제2 열과, UnitPrice라고 명명된 제3 열과, Quantity라고 명명된 마지막 열의 4개의 열을 포함한다.
제1 논리 레코드 링크(404)는 Customers 테이블(400)과 Orders 테이블(402) 사이에 설정되어, "Customers.CustomerID = Orders.CustomerID"라고 정의되어 있다. 마찬가지로, 제2 논리 레코드 링크(408)는 Orders 테이블(402)과 OrderDetails 테이블(404) 사이에 설정되어, "Orders.OrderID = OrderDetails.OrderID"라고 정의되어 있다. Orders 테이블(402)은, Orders 테이블(402)을 역으로 그 부모인 Customers 테이블(400)에 맵핑하기 위한 CustomerID를 포함하여, 적어도 2개의 데이터 열을 갖는다. 주문 정보에 관한 다른 가능한 행들은 도시되지 않았다. 마찬가지로, OrderDetails 테이블(404)은, Orders 테이블(402)을 역으로 그 부모인 Customers 테이블(400)에 맵핑하기 위한 CustomerID와 OrderDetails 테이블(400)을 역으로 그 부모인 Orders 테이블(402)에 맵핑하기 위한 OrderID를 포함하여, 적어도 3개의 데이터 열을 갖는다. 주문 상세 정보에 관한 다른 가능한 열들은 도시되지 않았다.
이제 도 5를 참조하면, 도 4의 예에 대한 데이터의 일례가 나타나 있다. 데이터 셋트는 "Alfred"라는 이름을 가진 고객에 관한 고객 정보, 주문 정보, 주문 상세 정보를 포함한다. 최상위 레벨의 테이블(500)은 Customer1 "Alfred"에 대한 행 데이터를 나타내는 것으로, "Alfred"라는 이름을 갖는 CustomerID 열을 포함한다. 고객 "Alfred"는 그와 연관된 3개의 주문 즉, Order_1의 행 데이터를 나타내는 제1 주문 테이블 Order_1(502)과, Order_2의 행 데이터를 나타내는 제2 주문 테 이블 Order_2(504)와, Order_3의 행 데이터를 나타내는 제3 주문 테이블 Order_3(506)을 갖는다. 제1 주문 테이블(502)은 주문 Order_1과 연관된 4개의 주문 상세 테이블(OrderDetail1, OrderDetail2, OrderDetail3, OrderDetail4)의 행 데이터를 각각 나타내는 4개의 자식 테이블(508, 510, 512, 514)을 갖는다.
제2 주문 테이블(504)은 주문 Order_2와 연관된 1개의 주문 상세 테이블의 행 데이터를 나타내는 1개의 자식 주문 상세 테이블(OrderDetail5)(516)을 갖는다. 제3 주문 테이블(506)은 주문 Order_3과 연관된 1개의 주문 상세 테이블의 행 데이터를 나타내는 1개의 자식 주문 상세 테이블(OrderDetail6)(518)을 갖는다.
도 4와 도 5의 데이터를 사용하여, CustomerID가 이전에는 "Alfred"였지만 이제는 "David"가 되도록, 제1 주문 테이블(502)의 Order_1 행의 CustomerID 열을 갱신하는 것을 고려해 본다. 이 갱신은, CustomerID = "Alfred"에서 근본이 되는 "논리 레코드"의 Order_1 행의 멤버 관계를 변경하는 것이 필수이다. 이제, Orders 행인 Order_1과, 대응하는 테이블들(508, 510, 512, 514)의 대응하는 OrderDetails 행들(OrderDetail1, OrderDetail2, OrderDetail3, OrderDetail4)은 CustomerID = "David"에서 근본이 되는 다른 "논리 레코드"에 속하게 된다. 변경 추적 논리는, Order_1과 그 자식 행인 OrderDetail1, OrderDetail2, OrderDetail3, OrderDetail4에 대한 변경을, 이전의 부모 식별자 "Alfred"를 삭제하고 새로운 부모 식별자 "David"를 삽입하는 것으로서 전달한다.
논리 레코드에 대한 변경 열거
변경 열거는 동기화 처리의 단계로서, 소스 복제본과 목적지 복제본 간의 이 전의 동기화로 인해 현재 복제본에 발생했던 변경 사항들이 열거된다.
논리 레코드에 대한 변경의 열거에 관한 두드러진 특징은, 갱신, 삽입, 삭제를 포함한 여러 변경들이, 논리 레코드의 다른 멤버 행들에 행하여져 하나의 그룹 내에 열거되어야 한다는 것이다. 이를 달성하기 위해, 변경 열거 알고리즘은, 서로 다른 멤버 테이블들의 행들이 논리 레코드 링크 정의에 따라 열거되는 것을 보장하기 위한 데이터베이스 뷰(view)를 이용한다.
도 4의 스키마 예에서, Orders 테이블(402)의 행들의 멤버 관계는 Orders 테이블과 Customers 테이블 간의 "논리 레코드 링크" 정의(406)를 사용하여 예측된 Customers 테이블(400)의 행들의 멤버 관계에 기초한다. 마찬가지로, OrderDetails 테이블(404)의 행들의 멤버 관계는 OrderDetails 테이블과 Orders 테이블 간의 "논리 레코드 링크" 정의(408)를 사용하여 예측된 Orders 테이블(402)의 행들의 멤버 관계에 기초한다. 이를 반영하기 위해, 자식 테이블들의 참조 뷰용으로 생성된 데이터베이스 뷰는 바로 위의 부모에 관하여 이루어진다. 이 스키마 예에서, Orders 테이블(402)의 뷰는 Customers 테이블(400)의 뷰를 참조한다. 마찬가지로, OrderDetails 테이블(404)의 뷰는 Orders 테이블(402)의 뷰를 참조한다.
아래에 기술된 스키마 예의 뷰 정의는 예시를 위하여 제공되는 것이다.
View definition for the Customers Table (view logical record Customers)
select [Customers].*, logical_record_parent_identifier =
[Customers].[rowguid] from Customers
View definition for the Orders Table (view logical record Orders)
select [Orders].*, logical_record_parent_rowguid =
[Customers].logical_record_parent_rowguid from [Orders],
[view_logical_record_Customers][Customers] where (Orders.CustomerID = Customers.CustomerID)
View definition for the OrderDetails Table (view logical record OrderDetails)
select [Order_Details].*, logical_record_parent_rowguid =
[Orders].logical_record_parent_rowguid from [Order_Details],
[view_logical_record_Orders][Orders] where (Order_Details.OrderID = Orders.OrderID)
상기의 뷰를 사용하여, 변경 열거 알고리즘은 Customers 테이블(400), Orders 테이블(402), OrderDetails 테이블(404)의 행들을 열거한다. 논리 레코드의 임의의 행에 대한 삭제 사항은, 삭제 사항의 부모 식별자가, 열거된 논리 레코드의 부모 식별자와 일치하는 경우의 복제 메타데이터 테이블로부터 열거된다. 목적지 복제본에서 보여지지 않는 소스 복제본으로부터의 점증적인(incremental) 변경을 처리하기만 하도록, 변경 열거는 소스 복제본과 목적지 복제본 사이에서 협상되는 동기화 앵커에 기초한다.
충돌 검출 및 해결
충돌 검출 및 해결은 동기화에 관련된 소스 복제본과 목적지 복제본으로부터의 복제 메타데이터가 비교되어 임의의 충돌이 검출 및 해결되는 동기화 처리의 단 계이다. 논리 레코드의 사용에 관한 이 신규한 특징에 의하면, 동기화 처리가 행 레벨 또는 열 레벨 외에도 논리 레코드 레벨에서 충돌을 검출할 수 있게 된다. 또한, 충돌 해결에 대한 선택은 논리 레코드 레벨이나 행 레벨에서 이루어질 수 있다. 어떤 충돌 검출 정책과 충돌 해결 정책이 사용될지에 관한 결정은 애플리케이션의 선택에 따른다. 이는 어떤 정책이 적절한지를 결정하는 데 있어 애플리케이션이 가장 바람직한 위치에 있기 때문이다.
충돌 검출 및 해결 - 논리 레코드 레벨
충돌 검출이 논리 레코드 레벨에서 이루어지는 경우, 소스 복제본의 논리 레코드 L1에 속하는 행 R1의 열 C1에서의 변경은 목적지 복제본의 동일한 논리 레코드 L1에 속하는 행 R2의 열 C2에서의 변경과 충돌된다. 소스 복제본과 목적지 복제본으로부터의 논리 레코드 계통이 비교되어, 충돌을 검출한다. 충돌 해결 정책이 논리 레코드 L1의 소스 복제본의 버전을 존속자로서 선택하는 경우, 소스 복제본의 존속자 논리 레코드 L1은 목적지 복제본의 폐기자 논리 레코드 L1을 완전히 덮어쓰기(overwrite)한다.
충돌 검출 - 행 레벨/충돌 해결 - 논리 레코드 레벨
충돌 검출이 행 레벨에서 이루어지는 경우, 행 R1과 행 R2가 동일한 논리 레코드 L1에 속하더라도 행 R1의 변경은 행 R2의 변경과 충돌되지 않는다. 충돌이 행 레벨에서 검출되는 경우, 충돌은 논리 레코드 레벨에서 검출되어야 한다.
다음으로, 소스 복제본과 목적지 복제본으로부터의 논리 레코드 계통이 비교되어, 충돌이라고 나타나면, 상기 두 복제본으로부터의 행 계통들이 비교된다. 충 돌 해결 정책이 논리 레코드 L1의 소스 복제본의 버전을 존속자로서 선택하는 경우, 소스 복제본의 존속자 논리 레코드 L1은 목적지 복제본의 폐기자 논리 레코드 L1을 완전히 덮어쓰기한다.
충돌 검출 - 열 레벨/충돌 해결 - 논리 레코드 레벨
충돌 검출이 열 레벨에서 이루어지는 경우, 동일한 행과 동일한 열에서의 변경만이 충돌이 된다. 이러한 상황이 발생하기 위해서는, 논리 레코드 레벨 충돌과 행 레벨 충돌이 발생하여야 한다. 따라서, 먼저 논리 레코드 계통들을 비교하고, 그 결과가 충돌을 나타내는 경우에는, 행 계통들을 비교한다. 행 계통 비교 결과가 충돌을 나타내는 경우에는, 행 버전들이 비교되어, 그 결과가 충돌인지의 여부를 확인한다.
모든 경우에 있어서, 충돌은 검출 레벨에서 특정된 레벨에서 발생하지 않지만, 보다 높은 레벨에서 (가상으로) 발생한 경우에는, 보다 낮은 레벨(논리 레코드의 행들 혹은 행의 열들)에서의 퀀터티(quantity)들이 "병합(merge)"된다. 예를 들어, 행 레벨의 충돌 검출이 사용되는 경우, 한 측의 행 R1과 다른 측의 행 R2가 동일 논리 레코드에 속하지 않더라도, 한 측의 행 R1의 변경은 다른 측의 행 R2의 변경과 충돌하지 않는다. 이는, 애플리케이션에 의해 지정된 대로 충돌이 행 레벨이 아닌 "논리 레코드 레벨"에서 검출되었기 때문이다. 그 결과는, (R1 및 R2에서의) 변경 모두를 보유하는 양측의 "병합된" 논리 레코드이다. 특히, 복제 메타데이터는 병합된 논리 레코드 계통을 나타내도록 갱신된다. 2개의 다른 행들에 어느 한 쪽만의 변경이 있으면, 행 계통은 병합된 계통이 되지 않는다.
마찬가지로, 열 레벨의 충돌 검출이 사용되는 경우, 소스 복제본의 행 R1의 열 C1의 변경은 목적지 복제본의 동일 행 R1의 열 C2의 변경과 충돌되지 않는다. 이는, 애플리케이션에 의해 정해진 대로, 충돌이 열 레벨이 아닌 행 레벨에서 검출되었기 때문이다. 그 결과는, 소스 복제본으로부터 열 C1의 변경 사항과 목적지 복제본으로부터의 열 C2의 변경 사항을 반영하는 행 R1의 병합된 값을 포함하는 병합된 논리 레코드이다. 행 R1의 복제 메타데이터는 R1의 병합된 논리 계통을 포함한다. 또한, 논리 레코드는 병합된 논리 레코드 계통을 갖는다.
충돌이 애플리케이션에 의해서 지정된 레벨에서 실제로 검출되면, 존속자 논리 레코드 계통은 폐기자 논리 레코드 계통을 덮어쓰기하고, 존속자 논리 레코드 내의 임의의 변경 사항을 갖는 모든 행들은 폐기된 측으로 복사된다.
이하의 예들은 부모 행 P1과 그 2개의 자식 행 C1 및 C2를 갖는 논리 레코드를 사용하는 충돌 검출 및 해결에 관한 여러 옵션들이다. 별표를 붙인 표기 C1*는 소정의 복제본에서 행 C1이 갱신되었다는 것을 나타낸다. 별표가 붙여지지 않은 표기 C1은 소정의 복제본에서 행 C1이 어떤 변경도 발생되지 않았다는 것을 나타낸다. 충돌이 검출되면, 충돌 해결 정책은 소스 복제본과 목적지 복제본 중 하나를 존속자로 정하고, 본 명세서에서의 실시예들은 그 두 선택 사항에 대한 결과값을 고찰해 본다.
예 1. 논리 레코드 레벨에서의 검출 및 해결 - 비동일 행(disjoint rows)
소스 복제본 값 목적지 복제본 값 소스 복제본을 존속자로 한 경우의 결과치 목적지 복제본이 존속자로 한 경우의 결과치
부모 행 P1 P1 P1 P1
자식 행 1 C1* (갱신됨) C1 (변경 없음) C1* C1
자식 행 2 C2 (변경 없음) C2* (갱신됨) C2 C2*
예 1에서는, 논리 레코드에서 2개의 비동일(disjoint) 행(자식 행 1 및 자식 행 2)이 갱신되었다. 논리 레코드 레벨의 검출이 행하여지므로, 충돌이 검출된다. 또한, 논리 레코드 레벨에서의 해결이 선택되어 있으므로, 최종 수렴 결과에는 소스 복제본이나 목적지 복제본으로부터의 존속자 논리적 레코드 전체가 나타난다.
예 2. 논리 레코드 레벨에서의 검출 및 해결 - 동일 행
소스 복제본 값 목적지 복제본 값 소스 복제본을 존속자로 한 경우의 결과치 목적지 복제본을 존속자로 한 경우의 결과치
부모 행 P1 P1 P1 P1
자식 행 1 C1* C1** C1* C1**
자식 행 2 C2 C2* C2 C2*
예 2에서는, 소스 복제본과 목적지 복제본 모두에서 각 논리 레코드 내의 동일 행이 갱신되었다. 논리 레코드 레벨의 검출이 수행되므로, 충돌이 검출된다. 그러나, 논리 레코드 레벨에서의 해결이 선택되어 있으므로, 최종 수렴 결과에는 소스 복제본이나 목적지 복제본으로부터의 존속자 논리 레코드 전체가 나타난다.
예 3. 행 레벨에서의 검출 및 논리 레코드 레벨에서의 해결 - 비동일 행
소스 복제본 값 목적지 복제본 값 결과치
부모 행 P1 P1 P1
자식 행 1 C1* (갱신됨) C1 (변경 없음) C1*
자식 행 2 C2 (변경 없음) C2* (갱신됨) C2*
예 3에서는, 논리 레코드에서 2개의 비동일 행이 갱신되었다. 행 레벨의 검출이 수행되므로, 어떤 충돌도 검출되지 않는다. 그러므로, 최종 수렴 결과에는 소스 복제본으로부터의 C1*의 갱신치와 목적지 복제본으로부터의 C2*의 갱신치가 나타난다.
예 4. 행 레벨에서의 검출 및 논리 레코드 레벨에서의 해결 - 동일 행
소스 복제본 값 목적지 복제본 값 소스 복제본을 존속자로 한 경우의 결과치 목적지 복제본을 존속자로 한 경우의 결과치
부모 행 P1 P1 P1 P1
자식 행 1 C1* C1** C1* C1**
자식 행 2 C2 C2* C2 C2*
예 4에서는, 소스 복제본과 목적지 복제본 모두에서 각 논리 레코드 내의 동일 행들이 갱신되었다. 행 레벨의 검출이 수행되므로, 충돌이 검출된다. 그러나, 논리 레코드 레벨의 해결이 선택되어 있으므로, 최종 수렴 결과에는 소스 복제본 또는 목적지 복제본으로부터의 존속자 논리 레코드 전체가 나타난다.
예 5. 행 레벨에서의 검출 및 행 레벨에서의 해결 - 비동일 행
소스 복제본 값 목적지 복제본 값 결과치
부모 행 P1 P1 P1
자식 행 1 C1* (갱신됨) C1 (변경 없음) C1*
자식 행 2 C2 (변경 없음) C2* (갱신됨) C2*
예 5에서는, 논리 레코드에서 2개의 비동일 행이 갱신되었다. 행 레벨의 검출이 수행되므로, 충돌이 검출되지 않는다. 그러므로, 최종 수렴 결과에는 소스 복제본으로부터의 C1* 갱신치와 목적지 복제본으로부터의 C2* 갱신치가 나타난다.
예 6. 행 레벨에서의 검출 및 행 레벨에서의 해결 - 동일 행
소스 복제값 목적지 복제값 소스 복제본을 존속자로 한 경우의 결과치 목적지 복제본을 존속자로 한 경우의 결과치
부모 행 P1 P1 P1 P1
자식 행 1 C1* C1** C1* C1**
자식 행 2 C2 C2* C2* C2*
예 6에서는, 소스 복제본과 목적지 복제본 모두에서 각 논리 레코드 내의 동일 행들이 갱신되었다. 행 레벨의 검출이 행해지므로, 충돌이 검출된다. 소스 복 제본과 목적지 복제본 중 어느 것이 존속자인지에 따라, 최종 수렴 결과에는 소스 복제본으로부터의 C1* 갱신치와 목적지 복제본으로부터의 C1** 갱신치가 나타난다. 목적지 복제본으로부터의 C2* 갱신치가 일방적이었으므로, 최종 수렴 결과에 나타난게 된다.
논리 레코드에 대한 변경 적용
변경 적용은 충돌 검출 및 해결이 행해진 후, 한 복제본으로부터의 변경이 다른 복제본으로 전달되는 동기화 처리의 단계이다. 변경들의 열거는 물리적 행들을 이미 논리 레코드들로 버킷(bucket)한 것이므로, 목적지 복사본에서의 변경들의 적용은, 그 변경들이 데이터베이스 트랜잭션에서 적용되는 것을 보장해야 한다. 트랜잭션의 적용에 실패할 경우에는 변경 적용을 재시도할 수는 있으나, 그 재시도는 논리 레코드의 의미론을 보존하여야 한다.
이제, 도 6을 참조해 보면, 일관성 단위 변경 추적 정보를 개별 테이블(600)로 구별해 넣는 애플리케이션 정의형 복제에 대한 또 다른 방법이 나타나 있다. 상술한 바와 같이, 각 변경 단위는 정확히 하나의 일관성 단위에 연관되어 있다. 이러한 연관은 명시적(각 변경 단위는 일관성 단위를 고유하게 식별하는 키로 태그(tag)될 수 있으며, 이 키는 일관성 단위의 멤버임)이거나, 암시적(논리 레코드 링크에서와 같이, 관계는 Customers.CustomerID = Orders.CustomerID로 정의될 수 있음)일 수 있다. 이로써, 애플리케이션 데이터를 포함하는 임의의 테이블의 어떠한 행이라도 임의의 일관성 단위에 연관될 수 있다.
논리 레코드 방법에서와 같이, 본 방법에서는, 애플리케이션이 그 애플리케 이션 오브젝트 전부(디렉토리 서버의 총 오브젝트의 미소 부분)를 목적지 복제본에 전달하기 위한 하나의 일관성 단위에 위치시키는 것이 바람직하다. 이는 테이블(600)을 사용함으로써 달성된다. 이러한 결과들을 얻기 위해, 일 구현예에서는, 고유 태그(또는 GUID)를 생성할 것을 제시하고 있다. 이 태그는 각 애플리케이션 오브젝트에 대한 특정 LDAP 속성 값(아마도, "consistencyUnitKey")으로서 기입된다. 제1 애플리케이션 오브젝트에 고유 태그를 기입하는 동작은 디렉토리 서버를 트리거링(triggering)시켜, 제2 열(604)에서의 연관된 태그 값(예를 들어, Tag 1)과 함께 일관성 단위 변경 추적 테이블(600)의 제1 열(602)에 새로운 엔트리, 예를 들어, Tracking Data 1을 생성하는 것이다. 각 애플리케이션 오브젝트(제1 오브젝트를 포함함)를 갱신하는 동작은, 새로운 애플리케이션 오브젝트가 일관성 단위에 입력된 것을 알리는 일관성 단위 변경 추적 정보를 갱신시키는 것이며, 일관성 단위가 그 일관성 단위의 일부로서 복제되는 다음 시점까지 그 일관성 단위와 함께 애플리케이션 오브젝트가 복제되어야 한다는 것을 알리는 애플리케이션 오브젝트에 대한 변경 이력 정보를 갱신시키는 것이다.
마찬가지로, 테이블(600)에 논리 레코드 링크 관계(LRL)를 삽입시킬 수 있다. 제2 애플리케이션 오브젝트에 대한 LRL을 설정하는 동작은 디렉토리 서버를 트리거링시켜, 제2 열(604)에서의 연관된 논리 레코드 링크 값, 예를 들어 LRL1과 함께 일관성 단위 변경 추적 테이블(600)의 제1 열(602)에 새로운 엔트리, 예를 들어 Tracking Data 3을 생성하는 것이다. 각 애플리케이션 오브젝트(제1 오브젝트를 포함함)를 갱신하는 동작은, 새로운 애플리케이션 오브젝트가 일관성 단위에 입 력된 것을 알리는 일관성 단위 변경 추적 정보를 갱신시키는 것이며, 일관성 단위가 그 일관성 단위의 일부로서 복제되는 다음 시점까지 그 일관성 단위와 함께 애플리케이션 오브젝트가 복제되어야 하는 것을 알리는 애플리케이션 오브젝트에 대한 변경 이력 정보를 갱신시키는 것이다.
본 방법의 일례로는, 디렉토리 서비스(예컨대, X.500 또는 LDAP(Lightweight Directory Access Protocol) 디렉토리)에서 애플리케이션 정의형 일관성 단위를 잠재적으로 사용하는 것이다. 많은 디렉토리 서비스들은 상대적으로 모노리식의 테이블(monolithic table)을 사용하여 모델링되는 반면, 관계형 모델의 경우에는, "사용자" 및 "프린터" 데이터 타입들을 타입 특정의 테이블에 저장시키려는 경향이 있어, 디렉토리 서비스들은 모든 데이터 타입들에 대해 하나의 테이블(600)로 하려는 방식으로 (사무실 소재, 관리자와 같은) 데이터 타입들 간의 공통 요소들을 이용하려고 한다.
LDAP 디렉토리 서비스를 이용하여 인증 메시지에 대한 라우팅 정보를 저장하는 보안 애플리케이션의 일례를 생각해 보기로 한다. 이 정보는 각 인증 서버마다의 오브젝트 및 전역 구성 오브젝트를 포함한다. 각 인증 서버 오브젝트는 라우팅 계층에서 그 부모에 대한 포인터를 포함한다. 이 애플리케이션은, 인증 서버 오브젝트와 그 부모 관계를 하나의 그래프로 조립(assembling)할 경우, 그 그래프는, 예컨대 각 노드(인증 서버)가 모든 다른 노드에 직접적으로 또는 간접적으로 연결되어 있으며 사이클을 갖지 않는 스패닝 트리(spanning tree)일 것을 필요로 한다. 각 인증 서버 오브젝트가 독립적으로 복제되었고, 또한 복제본 R1에 트리 계층의 변경이 행해지며, 그 변경이 단지 복제본 R2에 부분적으로 복제되면, R2의 데이터는 더 이상 스패닝 트리를 형성하지 않을 수 있다. 예를 들어, 처음에 복제본 R1, R2에 대한 오브젝트 O1, O2, O3가 존재하는 것으로 가정한다. 두 오브젝트 O2 및 O3의 부모는 오브젝트 O1이고, 오브젝트 O1의 부모는 없다(empty). 복제본 R1에 대해, 관리자는 오브젝트 O2가 루트가 되도록, 예를 들어, 오브젝트 O1의 부모를 오브젝트 O2로 설정하고, 오브젝트 O2의 부모를 제거하며, 오브젝트 O3의 부모를 오브젝트 O2로 변경하도록 계층을 (단일 트랜잭션에서) 변경시킨다. 만일 복제본 R2가 오브젝트 O2에 대해 변경을 적용시키지 않는 트랜잭션에서 오브젝트 O1에 갱신치를 적용시키면, 복제본 R2를 판독하는 애플리케이션은 오브젝트 O2의 부모가 O1이고 오브젝트 O1의 부모가 O2인 사이클을 갖게 될 것이다.
지금부터, 도 7을 참조해 보면, 개시된 아키텍처를 실행하도록 동작 가능한 컴퓨터의 블럭도가 도시되어 있다. 본 발명의 여러 양상들의 추가적인 상황을 제공하기 위해, 도 7 및 이하의 설명에서는 본 발명의 여러 양상들이 구현될 수 있는 적합한 컴퓨팅 환경(700)에 대해 개략적이고 전반적으로 기술하고 있다. 비록 본 발명이 하나 이상의 컴퓨터를 실행시킬 수 있는 컴퓨터 실행 가능 명령어들의 일반적인 상황에 대해 기술하였지만, 당업자라면 본 발명이 다른 프로그램 모듈과의 결합 및/또는 하드웨어와 소프트웨어의 결합으로서 구현될 수 있다는 것을 인식할 수 있을 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 또는 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 당업자라면 본 발명의 방법들이 단일프로세서 또는 멀티프로세서 컴퓨 터 시스템, 미니컴퓨터, 메인프레임 컴퓨터 뿐만 아니라, 퍼스널 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로프로세서 기반 또는 프로그래머블 가전 제품 등 - 이들 각각은 하나 이상의 관련된 장치들에 동작 가능하게 결합되어 있음 - 을 포함한 다른 컴퓨터 시스템 구성에서 실시될 수 있음을 인식할 수 있을 것이다. 본 발명의 예시된 양상들은 소정의 태스크가 통신 네트워크를 통해 링크되어 있는 원격 처리 장치에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 메모리 저장 장치와 원격 메모리 저장 장치 모두에 설치될 수 있다.
도 7을 다시 살펴보면, 본 발명의 여러 양상들을 구현하기 위한 예시적 환경(700)은 프로세싱 유닛(704), 시스템 메모리(706), 및 시스템 버스(708)를 구비하는 컴퓨터(702)를 포함한다. 시스템 버스(708)는, 시스템 메모리(706)를 포함하지만 이에만 한정되는 것은 아닌 여러 시스템 구성 요소들을 프로세싱 유닛(704)에 연결시킨다. 프로세싱 유닛(704)은 상업적으로 이용 가능한 여러 프로세서 중 임의의 하나일 수 있다. 프로세싱 유닛(704)으로는 듀얼 마이크로프로세서와 기타 멀티프로세서 아키텍처를 채용할 수 있다.
시스템 버스(708)는 상업적으로 이용 가능한 다양한 버스 아키텍처 중 임의의 하나를 이용하는 로컬 버스, 주변 버스, 메모리 버스 또는 메모리 제어기를 포함하는 여러 유형의 버스 아키텍처 중 임의의 것일 수 있다. 시스템 메모리(706)는 ROM(read only memory)(710) 및 RAM(random access memory)(712)를 포함한다. ROM(710)에는, 예를 들어, 시동(start-up) 시와 같이 컴퓨터(702) 내의 구성 소자 들 간의 정보 전달을 도와주는 기본 루틴들을 포함하는 BIOS(basic input/output system)이 저장되어 있다.
또한, 컴퓨터(702)는 하드 디스크 드라이브(714), 자기 디스크 드라이브(716)(예를 들어, 분리형 디스크(718)에 대해 판독 및 기록을 행함), 및 광 디스크 드라이브(720)(예를 들어, CD-ROM 디스크(722)를 판독하거나, 다른 광 매체에 대해 판독 및 기록을 행함)를 포함한다. 하드 디스크 드라이브(714), 자기 디스크 드라이브(716), 및 광 디스크 드라이브(720)는 하드 디스크 드라이브 인터페이스(724), 자기 디스크 드라이브 인터페이스(726), 및 광 디스크 드라이브 인터페이스(728) 각각을 통해 시스템 버스(708)에 연결될 수 있다. 이들 드라이브 및 그들에 관련된 컴퓨터 판독 가능 매체는 데이터, 데이터 구조, 컴퓨터 실행 가능 명령어 등을 기억하기 위한 비휘발성 저장 기능을 제공한다. 컴퓨터(702)의 경우, 이들 드라이브 및 매체들은 방송 프로그래밍을 적합한 디지탈 포맷으로 저장시키기에 적합하다. 비록 상기에서는 컴퓨터 판독 가능 매체가 하드 디스크, 분리형 자기 디스크, 및 CD를 나타내는 것으로 기술되어 있지만, 당업자라면 예시적인 동작 환경에서 짚(zip) 드라이브, 자기 카셋트, 플래시 메모리 카드, 디지탈 비디오 디스크, 카트릿지 등, 컴퓨터에 의해 판독 가능한 다른 유형의 매체를 사용할 수 있으며, 또한 이러한 임의의 매체들이 본 발명의 방법들을 수행하기 위한 컴퓨터 실행 가능 명령어를 포함할 수 있다는 것을 인식할 수 있을 것이다.
이들 드라이브 및 RAM(712)에는 오퍼레이팅 시스템(730), 하나 이상의 애플리케이션 프로그램(732), 기타 프로그램 모듈(734), 및 프로그램 데이터(736)를 포 함하여 다수의 프로그램 모듈이 저장될 수 있다. 본 발명은 상업적으로 이용 가능한 여러 오퍼레이팅 시스템 또는 이 오프레이팅 시스템들의 조합에서도 구현될 수 있다는 것을 알 수 있다.
사용자는 키보드(738)와, 마우스(740) 등의 포인팅 디바이스를 통해 컴퓨터(702)에 커맨드 및 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)로서는, 마이크로폰, IR 원격 제어기, 조이스틱, 게임 패드, 위성 접시, 스캐너 등이 포함될 수 있다. 이들 및 다른 입력 장치들은 흔히 시스템 버스(708)에 연결된 직렬 포트 인터페이스(742)를 통해 프로세싱 유닛(704)에 접속되지만, 예를 들어 병렬 포트, 게임 포트, USB(universal serial bus), IR 인터페이스 등의 다른 인터페이스를 통해 접속될 수도 있다. 모니터(744) 또는 다른 유형의 표시 장치도, 예를 들어, 비디오 어댑터(746) 등의 인터페이스를 통해 시스템 버스(708)에 접속된다. 모니터(744) 이외에, 컴퓨터는 일반적으로 스피커, 프린터 등의 기타 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터(702)는 원격 컴퓨터(748) 등의 하나 이상의 컴퓨터와의 논리적 접속을 이용하여 네트워킹 환경에서 동작될 수 있다. 원격 컴퓨터(748)는 워크스테이션, 서버 컴퓨터, 라우터, 퍼스널 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서 기반 오락 기구, 피어(peer) 장치, 또는 다른 일반 네트워크 노드일 수 있으며, 전형적으로는 컴퓨터(702)에 관하여 상술된 구성 소자들 중 다수 또는 전부를 포함하지만, 간략화할 목적으로, 메모리 저장 장치(750)만을 예시하였다. 도시된 논리적 접속은 LAN(752)과 WAN(754)을 포함한다. 이러한 네트워킹 환경은 관공서, 기업형 컴퓨터 네트워크, 인트라넷, 및 인터넷에서는 일반적인 것이다.
컴퓨터(702)를 LAN 네트워킹 환경에서 사용할 경우, 컴퓨터(702)는 네트워크 인터페이스 즉, 어댑터(756)를 통해 로컬 네트워크(752)에 접속된다. 컴퓨터(702)를 WAN 네트워킹 환경에서 사용할 경우, 컴퓨터(702)는 전형적으로 모뎀(758)을 포함하거나, 또는 LAN 상의 통신 서버에 접속되거나, 인터넷 등의 WAN을 통해 통신을 확립하기 위한 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(758)은 직렬 포트 인터페이스(742)를 통해 시스템 버스(708)에 접속된다. 네트워킹 환경에서, 컴퓨터(702)에 관련하여 도시된 프로그램 모듈들 또는 그 일부는 원격 메모리 저장 장치(750)에 저장될 수 있다. 도시된 네트워크 접속은 일례에 불과한 것으로, 컴퓨터들 간에 통신 링크를 확립하는 다른 수단을 사용할 수 있다는 것을 알 것이다.
지금부터, 도 8을 살펴보면, 본 발명에 따른 예시적인 컴퓨팅 환경(800)의 블럭도가 개략적으로 도시되어 있다. 시스템(800)은 하나 이상의 클라이언트(802)를 포함한다. 클라이언트(802)는 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 클라이언트(802)는, 예를 들어, 본 발명을 채용함으로써 쿠키 및/또는 관련된 상황 정보를 포함할 수 있다. 또한, 시스템(800)은 하나 이상의 서버(804)를 포함한다. 또한, 서버(804)는 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버(804)는, 예를 들어, 본 발명을 채용하여 변환을 수행할 스레드를 포함할 수 있다. 클라이언트(802)와 서버(804) 간의 가능한 통신에서는 둘 이상의 컴퓨터 프 로세스 사이에서 전달되도록 적합화된 데이터 패킷의 형태를 취할 수 있다. 이 데이터 패킷은, 예를 들어, 쿠키 및/또는 관련된 상황 정보를 포함할 수 있다. 시스템(800)은 클라이언트(802)와 서버(804) 간의 통신을 용이하도록 하기 위해 사용될 수 있는 통신 프레임워크(806)를 포함한다. 클라이언트(802)는 클라이언트(802)에 로컬인 정보(예를 들어, 쿠키 및/또는 관련된 상황 정보)를 저장하는 데 사용될 수 있는 하나 이상의 클라이언트 데이터 저장소(808)에 동작 가능하게 접속된다. 마찬가지로, 서버(804)는 서버(804)에 로컬인 정보를 저장하는 데 사용될 수 있는 하나 이상의 서버 데이터 저장소(810)에 동작 가능하게 접속된다.
비록 상기에서는 본 발명의 실시예들을 기술하였지만, 본 발명을 기술할 목적으로서의 모든 구성 성분 및 방법론의 모든 조합을 기술한 것은 물론 아니다. 따라서, 당업자라면 본 발명의 또 다른 조합 및 대체예들이 가능하다는 것을 알 수 있을 것이다. 따라서, 본 발명은 특허청구범위에 기재된 사상과 범주를 벗어나지 않는 한, 다양한 대체, 변형, 수정 실시예를 총 망라하도록 의도된 것이다. 또한, 상세한 설명이나 특허청구범위에서 "포함한다(include)"라는 용어가 사용된 점에 있어서는, 이 용어가 특허청구범위에서의 용어로 사용되는 "포함한다(comprise)"가 해석되는 바와 마찬가지 의미로서 포함된다는 것으로 의도되었다.
본 발명에 따르면, 행 단위 또는 열 단위 레벨 뿐만 아니라 일관성 단위 레벨에서 충돌을 검출 및 해결하고, 해결된 데이터를 목적지 복제본으로 수렴한다.

Claims (52)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 데이터 복제를 용이하게 하기 위한 방법에 있어서,
    소스 데이터 집합과, 동종 데이터 집합 중 제1 목적지 데이터 집합 간의 의미론적으로(semantically) 관련된 데이터 변경을 추적하는 단계;
    상기 의미론적으로 관련된 데이터 변경에 연관된 메타데이터를 논리 레코드 관계에 따라 링크시켜 일관성 단위를 형성하는 단계; 및
    상기 동종 데이터 집합 중 제2 목적지 데이터 집합에 대하여 상기 일관성 단위의 데이터 변경을 단일 트랜잭션에서 수렴시키는 단계
    를 포함하는, 데이터 복제를 용이하게 하기 위한 방법.
  38. 제37항에 있어서,
    상기 제2 목적지 데이터 집합에 대하여 상기 일관성 단위의 변경들을 비교하여, 충돌을 검출하는 단계; 및
    미리 정해진 충돌 정책에 따라 존속자를 선택하여 상기 충돌을 해결하는 단계
    를 더 포함하는, 데이터 복제를 용이하게 하기 위한 방법.
  39. 제38항에 있어서,
    상기 충돌은 논리 레코드 레벨, 행 레벨, 열 레벨 중 적어도 하나의 레벨에 연관되어 검출되는, 데이터 복제를 용이하게 하기 위한 방법.
  40. 제39항에 있어서,
    상기 충돌은 상기 소스 데이터 집합 및 상기 제2 목적지 데이터 집합의 각각의 논리 레코드 계통을 우선적으로 비교함으로써 상기 논리 레코드 레벨, 상기 행 레벨, 상기 열 레벨 각각에서 검출되어 해결되는, 데이터 복제를 용이하게 하기 위한 방법.
  41. 제39항에 있어서,
    상기 행 레벨의 레코드는 행 계통 데이터를 포함하고, 상기 열 레벨의 레코드는 열 버전 데이터를 포함하여, 상기 행 레벨에서의 충돌 검출은 상기 행 계통 데이터를 이용하고, 상기 열 레벨에서의 충돌 검출은 상기 열 버전 데이터를 이용하는, 데이터 복제를 용이하게 하기 위한 방법.
  42. 제40항에 있어서,
    상기 일관성 단위의 수렴이 재시도될 때, 상기 의미론적으로 관련된 데이터 변경의 의미론이 보존되는, 데이터 복제를 용이하게 하기 위한 방법.
  43. 제38항에 있어서,
    상기 충돌은, 논리 레코드 레벨, 행 레벨 및 열 레벨 중 적어도 하나와 관련하여 검출되고 - 상기 논리 레코드 레벨은 상기 행 레벨보다 상위 레벨이고, 상기 행 레벨은 상기 열 레벨보다 상위 레벨임 -,
    상기 방법은, 상기 충돌이 검출된 레벨보다 하위 레벨로 상기 데이터를 수렴시키는 단계
    를 더 포함하는, 데이터 복제를 용이하게 하기 위한 방법.
  44. 제37항에 있어서,
    데이터 일관성 단위와 상기 제2 목적지 데이터 집합 간의 충돌을 검출하여 해결하는 단계
    를 더 포함하고,
    상기 충돌은, 미리 정해진 충돌 정책에 따라 존속자 논리 레코드와 폐기자 논리 레코드를 선택하고, 상기 폐기자 논리 레코드의 계통에 상기 존속자 논리 레코드의 계통을 덮어쓰기함으로써 해결되는, 데이터 복제를 용이하게 하기 위한 방법.
  45. 제37항에 있어서,
    상기 제1 목적지 데이터 집합에서의 변경을 변경 추적 컴포넌트에 의해 추적하는 단계
    를 더 포함하고,
    상기 변경 추적 컴포넌트는 상기 제2 목적지 데이터 집합에 대하여 상기 일관성 단위의 데이터 변경을 수렴시킬 수 있도록 복제 메타데이터를 추적하는, 데이터 복제를 용이하게 하기 위한 방법.
  46. 제37항에 있어서,
    상기 데이터 집합은 관계형 데이터베이스인, 데이터 복제를 용이하게 하기 위한 방법.
  47. 컴퓨터를,
    소스 데이터 집합과, 동종 데이터 집합 중 제1 목적지 데이터 집합 간의 의미론적으로 관련된 데이터 변경을 식별하기 위한 수단;
    상기 의미론적으로 관련된 데이터 변경에 연관된 메타데이터를 논리 레코드 관계에 따라 링크시켜 일관성 단위를 형성하기 위한 수단; 및
    상기 동종 데이터 집합 중 제2 목적지 데이터 집합에 대하여 상기 일관성 단위의 데이터 변경을 단일 트랜잭션에서 수렴시키기 위한 수단
    으로 기능시키기 위한 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  48. 삭제
  49. 데이터 복제를 용이하게 하기 위한 방법에 있어서,
    소스 데이터 집합과 제1 목적지 데이터 집합 간의 데이터 변경을 식별하는 단계;
    일관성 단위로서 제2 목적지에 전달되는 일관성 단위 변경 추적 정보의 테이블(table)을 생성하는 단계; 및
    제2 목적지 데이터 집합에 대하여 상기 일관성 단위의 데이터 변경을 단일 트랜잭션에서 수렴시키는 단계
    를 포함하는, 데이터 복제를 용이하게 하기 위한 방법.
  50. 제49항에 있어서,
    상기 테이블은, 변경 단위와 일관성 단위 간의 연관성을 각각 정의하는 논리 레코드 링크와 고유 태그 중 적어도 하나를 포함하는, 데이터 복제를 용이하게 하기 위한 방법.
  51. 제50항에 있어서,
    상기 제1 목적지 데이터 집합에서의 상기 고유 태그의 기입에 응답하여 상기 테이블을 갱신시키는 단계
    를 더 포함하는, 데이터 복제를 용이하게 하기 위한 방법.
  52. 제49항에 있어서,
    상기 소스 데이터 집합은 디렉토리 서비스 아키텍처를 나타내는 것인, 데이터 복제를 용이하게 하기 위한 방법.
KR1020040020824A 2003-03-27 2004-03-26 데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기시스템을 포함하는 컴퓨터 및 네트워크 KR101038358B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/401,214 US20040193952A1 (en) 2003-03-27 2003-03-27 Consistency unit replication in application-defined systems
US10/401,214 2003-03-27

Publications (2)

Publication Number Publication Date
KR20040086580A KR20040086580A (ko) 2004-10-11
KR101038358B1 true KR101038358B1 (ko) 2011-06-01

Family

ID=32825008

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040020824A KR101038358B1 (ko) 2003-03-27 2004-03-26 데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기시스템을 포함하는 컴퓨터 및 네트워크

Country Status (5)

Country Link
US (1) US20040193952A1 (ko)
EP (1) EP1462960A3 (ko)
JP (1) JP2004295870A (ko)
KR (1) KR101038358B1 (ko)
CN (1) CN1534518B (ko)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996361B1 (en) * 2003-06-30 2011-08-09 Symantec Operating Corporation Method and system of providing replica files within a fileset
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) * 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7529811B2 (en) * 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
JP4267421B2 (ja) 2003-10-24 2009-05-27 株式会社日立製作所 リモートサイト及び/又はローカルサイトのストレージシステム及びリモートサイトストレージシステムのファイル参照方法
JP4319017B2 (ja) * 2003-12-02 2009-08-26 株式会社日立製作所 ストレージシステムの制御方法、ストレージシステム、及び記憶装置
US8601099B1 (en) * 2003-12-30 2013-12-03 Sap Ag System and method for managing multiple sever node clusters using a hierarchical configuration data structure
US20050278306A1 (en) * 2004-05-28 2005-12-15 International Business Machines Corporation Linked logical fields
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7720858B2 (en) 2004-07-22 2010-05-18 International Business Machines Corporation Query conditions-based security
US7596585B2 (en) * 2004-11-03 2009-09-29 Honeywell International Inc. Object replication using information quality of service
US8103624B2 (en) 2005-01-13 2012-01-24 International Business Machines Corporation Apparatus and method for automating the logging of table changes in a database
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US7487191B2 (en) * 2005-06-10 2009-02-03 International Business Machines Corporation Method and system for model-based replication of data
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US7440984B2 (en) * 2005-06-28 2008-10-21 International Business Machines Corporation Reconciliation of local and remote backup data
US20070027936A1 (en) * 2005-07-28 2007-02-01 Stakutis Christopher J Determining changes made to a source file to transmit to a target location providing a mirror copy of the source file
US8019827B2 (en) * 2005-08-15 2011-09-13 Microsoft Corporation Quick deploy of content
US20070050431A1 (en) * 2005-08-26 2007-03-01 Microsoft Corporation Deploying content between networks
US7945531B2 (en) 2005-09-16 2011-05-17 Microsoft Corporation Interfaces for a productivity suite application and a hosted user interface
US20070180151A1 (en) * 2005-09-20 2007-08-02 Honeywell International Inc. Model driven message processing
US9047344B2 (en) * 2005-10-17 2015-06-02 International Business Machines Corporation Guaranteeing data and metadata referential integrity in content management archival solutions
US20070162516A1 (en) * 2005-12-30 2007-07-12 Microsoft Corporation Computing asynchronous transaction log replication progress based on file change notifications
US7743023B2 (en) 2006-02-01 2010-06-22 Microsoft Corporation Scalable file replication and web-based access
US7730538B2 (en) * 2006-06-02 2010-06-01 Microsoft Corporation Combining virus checking and replication filtration
US20070294246A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Associating metadata on a per-user basis
US7953710B2 (en) * 2006-06-23 2011-05-31 Microsoft Corporation Multi-master database synchronization without loss of convergence
US7653640B2 (en) * 2006-07-31 2010-01-26 Microsoft Corporation Two-way and multi-master synchronization over web syndications
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7735051B2 (en) * 2006-08-29 2010-06-08 International Business Machines Corporation Method for replicating and synchronizing a plurality of physical instances with a logical master
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US7797335B2 (en) * 2007-01-18 2010-09-14 International Business Machines Corporation Creation and persistence of action metadata
US7818292B2 (en) * 2007-04-05 2010-10-19 Anil Kumar Nori SQL change tracking layer
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
US8041680B2 (en) * 2007-06-08 2011-10-18 International Business Machines Corporation Backing up a database
US8505065B2 (en) * 2007-06-20 2013-08-06 Microsoft Corporation Access control policy in a weakly-coherent distributed collection
US8327414B2 (en) * 2007-06-21 2012-12-04 Motorola Solutions, Inc. Performing policy conflict detection and resolution using semantic analysis
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US20090006489A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Hierarchical synchronization of replicas
US8112390B2 (en) * 2007-12-07 2012-02-07 Roche Diagnostics Operations, Inc. Method and system for merging extensible data into a database using globally unique identifiers
US8010487B2 (en) 2008-06-27 2011-08-30 Microsoft Corporation Synchronization and collaboration within peer-to-peer and client/server environments
US20100125557A1 (en) * 2008-11-17 2010-05-20 Microsoft Corporation Origination based conflict detection in peer-to-peer replication
US8327278B2 (en) * 2009-02-17 2012-12-04 Microsoft Corporation Synchronizing metadata describes user content updates and an indication of user gestures being performed within the document, and across client systems using different communication channels
US8325724B2 (en) 2009-03-31 2012-12-04 Emc Corporation Data redistribution in data replication systems
US8296536B2 (en) * 2009-08-11 2012-10-23 International Business Machines Corporation Synchronization of replicated sequential access storage components
CN101697169A (zh) * 2009-10-23 2010-04-21 中兴通讯股份有限公司 源数据库和目的数据库之间数据同步的方法、装置及系统
DE102009052457A1 (de) * 2009-11-09 2011-05-26 Siemens Aktiengesellschaft Verfahren und System zum Auslösen eines Namenskonfliktes
US20110137922A1 (en) * 2009-12-07 2011-06-09 International Business Machines Corporation Automatic generation of a query lineage
US20110153563A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Enhanced replication of databases
US8996458B2 (en) * 2009-12-23 2015-03-31 Sybase, Inc. High volume, high speed adaptive data replication
US10078679B1 (en) 2010-09-27 2018-09-18 Trulia, Llc Verifying the validity and status of data from disparate sources
US8805784B2 (en) * 2010-10-28 2014-08-12 Microsoft Corporation Partitioning online databases
CN102567388B (zh) * 2010-12-17 2013-10-09 日电(中国)有限公司 数据更新设备和方法
US9519496B2 (en) 2011-04-26 2016-12-13 Microsoft Technology Licensing, Llc Detecting and preventing virtual disk storage linkage faults
US9229890B2 (en) * 2011-04-28 2016-01-05 Sandeep Jain Method and a system for integrating data from a source to a destination
US20130159253A1 (en) * 2011-12-15 2013-06-20 Sybase, Inc. Directing a data replication environment through policy declaration
US9778860B2 (en) 2012-09-12 2017-10-03 Microsoft Technology Licensing, Llc Re-TRIM of free space within VHDX
US10747776B2 (en) 2012-12-04 2020-08-18 International Business Machines Corporation Replication control using eventually consistent meta-data
US8996565B2 (en) * 2012-12-18 2015-03-31 Sap Se Systems and methods for in-memory database processing
CN103198100B (zh) * 2013-03-13 2016-05-18 中国科学院计算技术研究所 一种多设备间文件同步的重命名处理方法及系统
CN105307133A (zh) * 2014-06-25 2016-02-03 中兴通讯股份有限公司 彩铃业务的实现系统、方法及装置
US10430902B1 (en) 2014-07-07 2019-10-01 Trulia, Llc Automatic updating of real estate database
US9990639B1 (en) 2014-12-02 2018-06-05 Trulia, Llc Automatic detection of fraudulent real estate listings
US10261943B2 (en) * 2015-05-01 2019-04-16 Microsoft Technology Licensing, Llc Securely moving data across boundaries
US10229124B2 (en) 2015-05-01 2019-03-12 Microsoft Technology Licensing, Llc Re-directing tenants during a data move
US10678762B2 (en) 2015-05-01 2020-06-09 Microsoft Technology Licensing, Llc Isolating data to be moved across boundaries
CN106454767A (zh) * 2015-08-05 2017-02-22 中兴通讯股份有限公司 一种业务数据同步方法、装置及系统
CN106649307B (zh) * 2015-10-28 2019-09-20 北京国双科技有限公司 在数据集合中添加元素的方法和装置
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10216379B2 (en) 2016-10-25 2019-02-26 Microsoft Technology Licensing, Llc User interaction processing in an electronic mail system
CN107247725B (zh) * 2017-04-28 2020-10-23 天津电气科学研究院有限公司 基于元数据逻辑无关分片的结构完整性检测优化方法
US11615113B2 (en) 2017-11-03 2023-03-28 International Business Machines Corporation Net change mirroring optimization across transactions in replication environment
US10331660B1 (en) * 2017-12-22 2019-06-25 Capital One Services, Llc Generating a data lineage record to facilitate source system and destination system mapping
US11068364B2 (en) * 2019-07-12 2021-07-20 Intelliflash By Ddn, Inc. Predictable synchronous data replication
US11604810B2 (en) * 2021-03-02 2023-03-14 Microsoft Technology Licensing, Llc Asynchronous replication of linked parent and child records across data storage regions
US11599294B2 (en) 2021-03-02 2023-03-07 Microsoft Technology Licensing, Llc Media storage for online meetings in edge network storage
US20220284042A1 (en) * 2021-03-02 2022-09-08 Microsoft Technology Licensing, Llc Replication of parent record having linked child records that were previously replicated asynchronously across data storage regions
CN113220235B (zh) * 2021-05-17 2024-02-06 北京青云科技股份有限公司 读写请求的处理方法、装置、设备及存储介质
US20220413905A1 (en) * 2021-06-25 2022-12-29 Sap Se Data curation with synthetic data generation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415299B1 (en) * 2000-04-12 2002-07-02 Unisys Corp. Method for merging versions of a model in an object oriented repository
US20020165724A1 (en) * 2001-02-07 2002-11-07 Blankesteijn Bartus C. Method and system for propagating data changes through data objects
US20030046292A1 (en) 2001-08-15 2003-03-06 International Business Machines Corporation Restructuring view maintenance system and method
KR100380221B1 (ko) 1999-03-31 2003-04-16 인터내셔널 비지네스 머신즈 코포레이션 Raid 데이터 저장 시스템에 있어서 즉시 백업을제공하는 방법 및 시스템

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2174103A (en) * 1937-05-10 1939-09-26 Lawrence F Baash Slip handle
US3046292A (en) * 1959-12-30 1962-07-24 Union Carbide Corp Process of making cyanoalkylsilanes
US5787262A (en) * 1996-06-26 1998-07-28 Microsoft Corporation System and method for distributed conflict resolution between data objects replicated across a computer network
US5819272A (en) * 1996-07-12 1998-10-06 Microsoft Corporation Record tracking in database replication
US5884324A (en) * 1996-07-23 1999-03-16 International Business Machines Corporation Agent for replicating data based on a client defined replication period
US5926816A (en) * 1996-10-09 1999-07-20 Oracle Corporation Database Synchronizer
US6049809A (en) * 1996-10-30 2000-04-11 Microsoft Corporation Replication optimization system and method
SE510050C2 (sv) * 1997-07-21 1999-04-12 Ericsson Telefon Ab L M Metod för insamlande av logginformation vid förändring av databas
JP3732664B2 (ja) * 1998-11-30 2006-01-05 矢崎総業株式会社 ワイヤーハーネス配索設計装置及びその方法
US6457011B1 (en) * 1999-07-23 2002-09-24 Microsoft Corporation Method of updating a shared database in a computer network
US7065538B2 (en) * 2000-02-11 2006-06-20 Quest Software, Inc. System and method for reconciling transactions between a replication system and a recovered database
US6820088B1 (en) * 2000-04-10 2004-11-16 Research In Motion Limited System and method for synchronizing data records between multiple databases
US10235368B2 (en) * 2000-06-08 2019-03-19 International Business Machines Corporation System and method for updating external file referenced by database with transactional consistency using SQL
WO2002079993A1 (en) * 2001-03-29 2002-10-10 Reallegal.Com Methods for synchronizing on-line and off-line transcript projects
US20030167287A1 (en) * 2001-04-11 2003-09-04 Karl Forster Information protection system
US7426559B2 (en) * 2002-05-09 2008-09-16 International Business Machines Corporation Method for sequential coordination of external database application events with asynchronous internal database events

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100380221B1 (ko) 1999-03-31 2003-04-16 인터내셔널 비지네스 머신즈 코포레이션 Raid 데이터 저장 시스템에 있어서 즉시 백업을제공하는 방법 및 시스템
US6415299B1 (en) * 2000-04-12 2002-07-02 Unisys Corp. Method for merging versions of a model in an object oriented repository
US20020165724A1 (en) * 2001-02-07 2002-11-07 Blankesteijn Bartus C. Method and system for propagating data changes through data objects
US20030046292A1 (en) 2001-08-15 2003-03-06 International Business Machines Corporation Restructuring view maintenance system and method

Also Published As

Publication number Publication date
CN1534518B (zh) 2010-06-16
CN1534518A (zh) 2004-10-06
JP2004295870A (ja) 2004-10-21
US20040193952A1 (en) 2004-09-30
KR20040086580A (ko) 2004-10-11
EP1462960A3 (en) 2005-07-27
EP1462960A2 (en) 2004-09-29

Similar Documents

Publication Publication Date Title
KR101038358B1 (ko) 데이터 복제를 용이하게 하기 위한 시스템 및 방법과 상기시스템을 포함하는 컴퓨터 및 네트워크
US20200327142A1 (en) Resynchronizing metadata in a content management system
US8429198B1 (en) Method of creating hierarchical indices for a distributed object system
US20240111812A1 (en) System and methods for metadata management in content addressable storage
KR102307371B1 (ko) 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
US6615223B1 (en) Method and system for data replication
US11455280B2 (en) Synchronization of metadata in a distributed storage system
US8972347B1 (en) Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US7162499B2 (en) Linked value replication
US7440977B2 (en) Recovery method using extendible hashing-based cluster logs in shared-nothing spatial database cluster
US8214334B2 (en) Systems and methods for distributed system scanning
US11841844B2 (en) Index update pipeline
US9411866B2 (en) Replication mechanisms for database environments
US20070094312A1 (en) Method for managing real-time data history of a file system
KR100946986B1 (ko) 파일 저장 시스템 및 파일 저장 시스템에서의 중복 파일관리 방법
US20230132830A1 (en) Data migration
CN114741453A (zh) 数据同步的方法、系统及计算机可读存储介质
Štědronský A decentralized file synchronization tool
JP2004302919A (ja) レプリケーションシステム及びレプリケーションシステム用プログラム
Holubova Big Data Management and NoSQL Databases

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee