KR20080103967A - 로컬 복제본의 동기화 시의 충돌을 해결하는 방법 및 이 방법을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체 - Google Patents

로컬 복제본의 동기화 시의 충돌을 해결하는 방법 및 이 방법을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR20080103967A
KR20080103967A KR1020087020384A KR20087020384A KR20080103967A KR 20080103967 A KR20080103967 A KR 20080103967A KR 1020087020384 A KR1020087020384 A KR 1020087020384A KR 20087020384 A KR20087020384 A KR 20087020384A KR 20080103967 A KR20080103967 A KR 20080103967A
Authority
KR
South Korea
Prior art keywords
resolution
synchronization
conflict
data object
conflict resolution
Prior art date
Application number
KR1020087020384A
Other languages
English (en)
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 KR20080103967A publication Critical patent/KR20080103967A/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

하나 이상의 동기화 충돌의 탐지에 응하여, 각 복제본의 동기화 프로세스와 동시에 수행되는 하나 이상의 레졸루션 프로세스들이 실행된다. 각 레졸루션 프로세스는 데이터 객체에 대한 충돌을 해결하도록 동작하며, 동기화 프로세스는 계속해서 다른 동기화 업데이트들을 처리한다. 충돌 레졸루션이 결정된 후, 로컬 복제본의 현재 조건에 대하여 충돌 레졸루션이 테스트된다. 충돌 레졸루션이 실효되지 않았다면, 이 충돌 레졸루션이 로컬 복제본에 적용되고 원격 복제본으로의 전파를 위해 동기화 프로세스로 다시 전달된다. 그렇지 않을 경우, 충돌 레졸루션이 실효되었다면, 로컬 충돌 레졸루션은 폐기된다.
Figure P1020087020384
분산 데이터베이스, 충돌, 동기화, 충돌 레졸루션

Description

로컬 복제본의 동기화 시의 충돌을 해결하는 방법 및 이 방법을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체{DISTRIBUTED CONFLICT RESOLUTION FOR REPLICATED DATABASES}
일반적으로, 데이터베이스는 컴퓨팅 시스템에 의한 액세스를 위해 시스템적인 방식으로 저장 매체에 기록되어 있는 데이터 객체들(예를 들면, 데이터 테이블, 데이터 레코드, 파일 등)의 조직화된 모음(organized collection)이다. 각각의 데이터 객체는, 검색(retrieval)과 정렬(sorting)을 용이하게 하기 위해, 키화된 데이터 요소들 또는 값들의 집합(a set of keyed data elements or values)으로서 통상적으로 조직화된, 하나 이상의 데이터 레코드들을 포함할 수 있다. 데이터베이스는, 일반적으로, 데이터베이스 내의 데이터 객체들의 유형과 관계를 명시하는(specify) 스키마(schema)에 의해 구조적으로 설명될 수 있다. 데이터베이스 관리 시스템(database management system:DBMS)와 같은 프로그램은, 데이터베이스에 질의(query)하여, 특정 데이터 객체들로 액세스할 수 있다.
복제(replication)는 한 저장 매체의 단일의 데이터베이스가 제2 저장 매체로 복사되는 것을 가능하게 하며, 이는, 사실상, 본래의 데이터베이스(original database)의 별도의 인스턴스를 생성한다. 제2 저장 매체에 있는 데이터베이스의 사본은 "복제된 데이터베이스(replicated database)"라 불린다. 본래의 데이터베 이스와 복제본("복제본들(replicas)"이라 총칭함)은, 공통 데이터 객체들, 키-값 쌍들(key-value pairs), 및 기타 식별자들 및 구조들을 포함하는 공통 스키마의 전부 또는 그 일부를 공유하여, 관련된 복제본들을 서로 결합시킨다. 공유되는 스키마는 동일한 질의들이 둘 다의 복제본들에서 사용될 수 있게 한다. 게다가, 각각의 복제본은 로컬로 수정될 수 있고, "동기화(synchronization)"라 불리는 프로세스를 통해 다른 관련된 복제본들로 업데이트될 수 있다. 동기화를 이용하여, 한 복제본에 있는 데이터 객체들에 대한 변경이 기록되고, 동기화 업데이트(synchronization update)로서 다른 관련된 복제본들로 전파(propagate)되며, 관련된 복제본들의 대응하는 데이터 객체들에 대해 동일한 변경이 실행된다.
그러나, 별도의 복제본들에 있는 대응하는 데이터 객체들이 동시에 수정되는 경우, 충돌(conflict)이 발생할 수 있다. 일반적으로, 충돌이란, 하나의 복제본 A에 있는 데이터 객체의 수정에 이어, 또 다른 복제본 B에 있는 대응하는 데이터 객체가 수정된 후, A에서의 변경에 관한 정보가 B로 통신 링크를 통해 전파되는 것을 나타낸다. 예를 들면, 한 복제본에서 한 제품의 가격이 $X달러로 변경되고, 또 다른 복제본에서 동일한 제품의 가격이 거의 동시에 $Y로 변경될 수 있으며(예를 들면, 서로의 복제본과 각 변경의 동기화 이전에), 이에 의해 제품의 가격에 대해 두 복제본들 간에 충돌이 나타난다. 이 복제본들을 다시 일치 상태(consistent state)로 되돌려놓기 위해, 충돌을 탐지하여 해결할 수 있다.
충돌을 탐지하는 서로 다른 전략들이 존재한다. 예를 들면, 복제본이 수정된 시간이 추적되어 동기화 동안 다른 복제본들로 전파될 수 있다. 동기화 업데이 트를 수신하면, 수신하는 각 복제본은, 원격 복제본에 있는 데이터 객체에 대한 변경 시간과 또 다른 대응하는 데이터 객체(로컬이든 원격이든 간에)에 대한 변경 시간을 비교함으로써 충돌을 탐지할 수 있다.
충돌이 탐지된 후, 분산 데이터베이스 시스템(distributed database system)은 충돌을 해결하도록 동작한다. 또한, 이러한 충돌들을 해결하는 서로 다른 전략들이 존재한다. 예를 들면, 충돌은 사용자 인터랙션 등을 통해 알고리즘적으로 해결될 수 있다. 그러나, 복제된 데이터베이스 시스템의 분산 속성과 동기화의 비동기적인 속성으로 인해, 대응하는 데이터 객체들에서의 경합하는 충돌들(competing conflicts)이 서로 다른 복제본들에서 동시에 탐지될 수 있다. 그러므로, 경합하는 충돌들의 탐지는 분산 데이터베이스 전체에 걸쳐, 경합하는 충돌 레졸루션(competing conflict resolution)을 트리거하고 이를 전파할 수 있으며, 이에 의해 새로운 충돌들을 창출할(introduce) 수 있다. 이와 같이, 기존의 데이터베이스 서버는, 이러한 경합하는 충돌 레졸루션을 피하기 위해, 충돌 레졸루션 동안 데이터베이스 처리를 중단하는 경향이 있다. 게다가, 경합하는 충돌 레졸루션은, 특히, "비멱등(non-idempotent)" 충돌(즉, 서로 다른 복제본들이 충돌을 서로 다르게 해결하거나 또는 한 레졸루션이 분산 데이터베이스 전체에 걸쳐 중요한 변경을 일으키는(ripple) 경우)의 경우에는 해결하기가 힘들다(challenge). 따라서, 다른 데이터베이스 처리를 중단시키지 않으면서 분산 데이터베이스의 서로 다른 복제본에서의 충돌 레졸루션을 다루는 방법에 관한 문제점이 중요하게 되었다(become relevant).
본 명세서에서 설명되고 청구되는 구현은, 하나 이상의 동기화 충돌의 탐지에 응하여, 각 복제본의 동기화 프로세스와 함께 수행되도록 하나 이상의 레졸루션 프로세스들(resolution process)을 실행시킴으로써 전술된 문제를 해결한다. 각 레졸루션 프로세스는 데이터 객체에 대한 충돌을 해결하도록 동작하며, 동기화 프로세스는 계속해서 다른 동기화 업데이트들을 처리한다. 충돌 레졸루션(conflict resolution)이 결정된 후, 로컬 복제본의 현재 조건에 대하여 충돌 레졸루션이 테스트된다. 충돌 레졸루션이 실효(stale)되지 않았다면(예를 들면, 로컬 레졸루션 프로세스 동안 외부의 충돌 레졸루션이 수신되지 않았다면), 이 충돌 레졸루션은 로컬 복제본에 적용되고 원격 복제본으로의 전파를 위해 동기화 프로세스로 다시 전달(pass)된다. 그렇지 않을 경우, 충돌 레졸루션이 실효되었다면(예를 들면, 또 다른 복제본으로부터 외부의 충돌 레졸루션이 수신되었다면), 로컬 충돌 레졸루션은 폐기(discard)된다.
일부 실시예에서, 제조 물품(articles of manufacture)은 컴퓨터 프로그램 제품으로서 제공된다. 컴퓨터 프로그램 제품의 한 구현은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로그램을 인코딩하는 컴퓨터 프로그램 저장 매체를 제공한다. 컴퓨터 프로그램 제품의 또 다른 구현은, 컴퓨팅 시스템에 의해 반송파에 구현되고 컴퓨터 프로그램을 인코딩하는 컴퓨터 데이터 신호로 제공될 수 있다. 다른 구현 또한 본 명세서에서 설명되고 기술된다.
본 요약은 이하의 발명의 상세한 설명에서 더 설명되는 일련의 개념들을 간단한 형태로 제공하기 위해 제공된다. 본 요약은 청구되는 내용의 핵심 특징들 또는 주요 특징들을 식별하고자 의도하지 않으며, 또한 청구되는 내용의 범위를 제한하는 데 사용되도록 의도되지 않는다.
도 1은 분산된 충돌 레졸루션의 예를 도시하는 분산 데이터베이스 시스템을 도시하는 도면.
도 2는 분산된 충돌 레졸루션의 또 다른 예를 도시하는 분산 데이터베이스 시스템을 도시하는 도면.
도 3은 분산 데이터베이스 시스템에 대한 예시적인 동기화 및 레졸루션 프로세스의 예를 도시하는 도면.
도 4는 설명된 기술을 구현하는 데에 유용할 수 있는 예시적인 시스템을 도시하는 도면.
도 1은 예시적인 분산 충돌 레졸루션(distributed conflict resolution)을 도시하는 분산 데이터베이스 시스템(100)을 도시한다. 분산 데이터베이스 시스템(100)은 데이터의 분산 관계형 데이터베이스(distributed relational database), 파일 시스템, 데이터 로그 또는 기타 조직화된 데이터 모음일 수 있다. 제1 데이터베이스 서버(102), 제2 데이터베이스 서버(104) 및 제3 데이터베이스 서버(106)는, 인터넷, LAN 등과 같은 네트워크(108)를 통해 통신가능하게 접속되어 있다. 각각의 데이터베이스 서버는 분산 데이터베이스의 서로 다른 복제본으로 액세스한 다. 각각의 복제본은 분산 데이터베이스 시스템(100)의 다른 복제본들과 스키마의 전부 또는 스키마의 일부를 공유한다. 게다가, 복제본들은, 각 복제본이 동기화 업데이트를 통해 자신의 변경(change)을 다른 관련된 복제본들로 전파하고, 다른 관련된 복제본들이 자신들의 데이터 객체들을 전파된 변경으로 업데이트할 수 있는 동기화 프레임워크(synchronization framework)에 의해 결합되어 있다.
동기화란, 한 복제본의 데이터 객체가 다른 복제본의 변경된 데이터 객체에 행해진 변경을 반영하도록, 한 복제본의 데이터 객체를 다른 복제본의 변경된 데이터 객체의 데이터로 업데이트하는 것을 지칭한다. 한 구현에서, 예를 들면, 로컬 복제본의 동기화는 백그라운드 쓰레드(background thread) 또는 백그라운드 프로세스로서 실행된다. 데이터 객체의 원격 사본(copy)은 변경되었지만 그 데이터 객체의 로컬 사본은 그 변경을 반영하도록 아직 업데이트되지 않았다면, 동기화는 그 데이터 객체의 로컬 사본에 변경을 행한다. 게다가, 동기화는 로컬 변경을 동기화 업데이트로서 다른 관련된 복제본으로 계속해서 전파하고, 원격 복제본들로부터 수신한 동기화 업데이트를 처리하여 로컬 데이터를 업데이트한다. 이러한 특징들을 이용하여, 분산 데이터베이스 시스템에서, 한 복제본에서의 변경이 나머지 모든 관련된 복제본에서 동기화될 수 있다.
그러나, 서로 다른 두 개의 복제본의 대응하는 데이터 객체들에서 변경이 동시에 탐지되면, 충돌이 발생할 수 있다. 예를 들면, 도 1에서, 데이터베이스 서버(102)와 관련된 복제본의 데이터 객체(110)가 새로운 가격으로 업데이트되어, 업데이트된 데이터 객체(112)로 된다(변경된 가격을 포함하는 쉐이딩된 셀을 참조하 라). 이 변경 동작은 다른 관련된 복제본들로 전파된다(복제본(104 및 106)으로 향하는 점선 화살표(114)를 참조하라). 그러나, 데이터베이스 서버(102)와 관련된 복제본으로부터의 변경 전파와 동시에, 데이터베이스 서버(104)와 관련된 복제본의 대응하는 데이터 객체(116)가 새로운 가격으로 업데이트되어, 업데이트된 데이터 객체(118)로 된다(변경된 가격을 포함하는 쉐이딩된 셀을 참조하라). 그 결과, 데이터베이스 서버(102)에서, 데이터베이스 서버들(102 및 104)과 관련된 복제본들의 대응하는 데이터 객체들 사이에서 충돌이 탐지된다.
이러한 충돌을 탐지하는 다른 전략들이 사용될 수 있다. 한 구현에서, 분산 데이터베이스 시스템은 분산 시간 스탬핑 메커니즘(distributed time stamping mechanism)을 채용하고 동기화 파라미터들을 사용하여 충돌을 탐지한다. 동기화 파라미터들은 명시적으로 벡터 시간 쌍들(vector time pairs), 실제 시간 값들(real time values), 버전 벡터들(version vectors), 또는 서로에 대하여 업데이트 이벤트들을 추적하는 데에 사용될 수 있는 다른 값들을 지칭한다.
한 구현에서, 각 복제본은, 로컬 업데이트로 인해 또는 피어 복제본과의 동기화로 인해, 복제본의 데이터 상태가 변경될 때마다 증분되는 로컬 타임 스탬프를 유지한다. 각 데이터 객체에 대해, 복제본은 또한 두 개의 동기화 파라미터들 : (1) R(로컬로 공지된 각각의 복제본을 R이라 함)에 있는 데이터 객체의 최종 변경에 대한, R에 있는 타임 스탬프를 (로컬로 공지된 각각의 복제본 R에 대해) 나타내는 수정 파라미터(modification parameter) m 및, (2) R에 있는 데이터 객체의 최종 동기화(원격 동기화 업데이트로부터 기인함)에 대한, R에 있는 타임 스탬프를 (로컬로 공지된 각각의 복제본 R에 대해) 나타내는 동기화 파라미터(synchronization parameter) s를 유지한다. 한 구현에서, 파라미터들 m과 s는, 공지된 복제본들 각각에 대응하는 동기화 파라미터를 갖는 타임 스탬프의 벡터들로서 나타내어지지만, 다른 파라미터 유형이 채용될 수 있다. 비공식적으로, 수정 파라미터 m은 데이터 객체의 로컬 버전을 추적하고, 동기화 타임 파라미터 s는 이 데이터 객체가 다른 복제본들에 대해 얼마나 현행인지를(how current the data object is relative to other replicas) 추적한다. 동기화 프로세스는, (원격 복제본 A의 데이터 객체의 동기화 업데이트와 관련된) 수정 시간 파라미터 mA와 동기화 시간 파라미터 sA의 조합과, (로컬 복제본 B에 있는 대응하는 로컬 데이터 객체와 관련된) 수정 시간 파라미터 mB와 동기화 시간 파라미터 sB의 조합을 비교하여, 로컬 데이터 객체를 업데이트할지의 여부를 판정한다.
예를 들면, 복제본 B에 있는 로컬 데이터 객체가 복제본 A에 대하여 업데이트될 필요가 있는지의 여부를 고려할 때, mA sB는 복제본 B에 있는 로컬 데이터 객체가 복제본 A의 대응하는 데이터 객체에서의 변경으로 동기화되었는지의 여부를 테스트한다. 그러므로, mA≤sB라면, 복제본 B는, 이것이 복제본 A로부터 가용한 가장 최근의 수정(modification)으로 이미 동기화되었기 때문에, 업데이트될 필요가 없다. 이와는 대조적으로, mA〉sB라면, mB sA는 복제본 A가 복제본 B로부터의 가장 최근의 수정에 대하여 동기화되었는지의 여부를 테스트한다. 그러므로, mA〉sB 이고 mB sA라면, 복제본 A는 복제본 B와는 아직 동기화되지 않은 더 최근의 수정을 지니고 있으므로, 복제본 B는 복제본 A로부터의 동기화 업데이트로 업데이트될 필요가 있다. 그러나, mA〉sB이고 mB sA라면, 복제본 A와 B는 둘 다 동시에 발생하는(concurrent) 수정으로 수정되었으므로, 충돌이 존재한다. 다른 충돌 탐지 방식(conflict detection scheme) 또한 채용될 수 있음을 이해해야 한다.
데이터베이스 서버는 충돌을 탐지하면, 통상적으로, 각종 충돌 레졸루션 기법들 중 하나를 통해 그 충돌을 해결하고자 시도할 것이다. 한 구현에서, 사용자에게 충돌이 제시되고, 분산 데이터베이스 시스템(100)을 통해 전파될 원하는 결과를 선택하도록 요청될 수 있다. 다른 구현에서, 충돌은 알고리즘적으로(예를 들면, 시간 벡터들에 기초하여 가장 최근의 변경을 선택하고, 가장 높은 변경 값을 선택하는 등) 해결될 수 있다. 다른 충돌 레졸루션 기법들 또한 채용될 수 있다.
데이터베이스 서버(102)는 충돌을 탐지하고 이 충돌을 해결하도록 동작한다(work). 한 구현에서, 데이터베이스 서버(102)에서 실행되고 있는 진행 중인(ongoing) 동기화 프로세스는 충돌 레졸루션 쓰레드(conflict resolution thread)를 스포닝(spawn)하고, 다른 복제본들로부터 받은 다른 동기화 업데이트로 계속해서 동기화한다. 이들 업데이트는 원격 복제본들에서 발생했던 대응하는 충돌에 대한 충돌 레졸루션을 포함할 수 있다. 충돌 레졸루션이 결정된 후, 데이터베이스 서버(102)는 이 레졸루션이 실효되었는지(stale)의 여부를 판정한다. 실효 레졸루션이란, 원격 복제본으로부터의, 끼어드는 충돌 동기화 업데이 트(intervening conflict synchronization update)가 로컬 복제본에 의한 충돌 레졸루션의 처리 동안 동일한 데이터 객체에 이미 적용되었기 때문에 더 이상 유효하지 않은 충돌 레졸루션을 지칭한다. 그러므로, 이러한 환경에서, 충돌이 원격 데이터베이스 서버에 의해 이미 해결되었거나 또는 데이터 객체가 다른 수단에 의해 변경되었으므로, 레졸루션 프로세스에 의해 결정된 로컬 충돌 레졸루션은 쓸모없게 되었다. 데이터베이스 서버(102)가 로컬 충돌 레졸루션이 실효되지 않은 것으로 판정하면, 이 레졸루션은 로컬로 적용되고, 분산 데이터베이스 시스템의 다른 관련된 복제본들로 전파된다.
도 2는 분산 충돌 레졸루션의 또 다른 예를 도시하는 분산 데이터베이스 시스템(200)을 도시한다. 제1 데이터베이스 서버(202), 제2 데이터베이스 서버(204) 및 제3 데이터베이스 서버(206)는, 인터넷, LAN 등과 같은 네트워크(208)를 통해 통신가능하게 접속되어 있다. 각각의 데이터베이스 서버는 분산 데이터베이스의 서로 다른 복제본으로 액세스한다. 각각의 복제본은 분산 데이터베이스 시스템(200)의 다른 복제본들과 스키마의 전부 또는 스키마의 일부를 공유한다. 게다가, 복제본들은, 각 복제본이 자신의 변경을 다른 관련된 복제본들로 전파하고, 다른 관련된 복제본들이 자신들의 데이터를 전파된 변경으로 업데이트할 수 있는 동기화 프레임워크에 의해 결합되어 있다.
도 1의 예에서와 같이, 충돌이 일어날 수 있다. 예를 들면, 도 2에서, 데이터베이스 서버(202)와 관련된 복제본의 데이터 객체(210)가 새로운 가격으로 업데이트되어, 업데이트된 데이터 객체(212)로 된다(변경된 가격을 포함하는 쉐이딩된 셀을 참조하라). 이 변경 동작은 다른 관련된 복제본들로 전파된다(변경 동작을 복제본(206)으로 전파하는 점선 화살표(214)를 참조하라 - 이 변경 동작이 또한 복제본(204)으로 전파됨을 이해해야 한다). 그러나, 데이터베이스 서버(202)와 관련된 복제본으로부터의 변경의 전파와 동시에, 데이터베이스 서버(204)와 관련된 복제본의 대응하는 데이터 객체(216)가 새로운 가격으로 업데이트되어, 업데이트된 데이터 객체(218)로 된다(변경된 가격을 포함하는 쉐이딩된 셀을 참조하라). 변경 동작은 다른 관련된 복제본들로 전파된다(변경 동작을 복제본(206)으로 전파하는 점선 화살표(215)를 참조하라 - 변경 동작이 또한 복제본(202)으로 전파됨을 이해해야 한다). 그 결과, 데이터베이스 서버(206)에서, 데이터베이스 서버들(202 및 204)과 관련된 복제본들의 대응하는 데이터 객체들 사이에서 충돌이 탐지된다.
데이터베이스 서버(206)는 충돌을 탐지하고 이 충돌을 해결하도록 동작한다. 한 구현에서, 데이터베이스 서버(206)에서 실행되고 있는 진행 중인 동기화 프로세스는 충돌 레졸루션 쓰레드를 스포닝하고, 다른 복제본들로부터 수신한 다른 동기화 업데이트로 계속해서 동기화한다. 충돌 레졸루션이 결정된 후, 데이터베이스 서버(206)는 이 레졸루션이 실효되었는지의 여부를 판정한다. 실효 레졸루션이란, 원격 복제본으로부터의, 끼어드는 충돌 동기화 업데이트 또는 로컬 수정이 로컬 복제본에 의한 충돌 레졸루션의 처리 동안 동일한 데이터 객체에 이미 적용되었기 때문에 더 이상 유효하지 않은 충돌 레졸루션을 지칭한다. 그러므로, 이러한 환경에서, 충돌이 원격 데이터베이스 서버에 의해 이미 해결되었거나 또는 데이터 객체가 다른 수단에 의해 변경되었으므로, 레졸루션 프로세스에 의해 결정된 로컬 충돌 레 졸루션은 쓸모없게 되었다. 데이터베이스 서버(206)가 로컬 충돌 레졸루션이 실효되지 않은 것으로 판정하면, 이 레졸루션은 로컬로 적용되고, 분산 데이터베이스 시스템의 다른 관련된 복제본들로 전파된다.
도 3은 분산 데이터베이스 시스템에 대한 예시적인 동기화 및 레졸루션 프로세스(300)를 도시한다. 동기화 프로세스는 통상적으로 각각의 데이터베이스 서버에서 실행되며, 원격 복제본들로부터 원격 동기화 업데이트를 수신하고, 로컬 동기화 업데이트를 이들 원격 복제본들로 전파한다. 동기화 업데이트 각각은 버전 벡터들, 벡터 시간 쌍, 또는 다른 파라미터들과 같은 동기화 파라미터들을 포함한다. 예를 들면, 동기화 파라미터는, 공지된 원격 복제본 각각에 있는 데이터 객체의 동기화 상태 또는 수정 상태에 관하여 로컬로 공지된 정보를 포함하는 벡터의 형태를 취할 수 있다.
수신 동작(302)은 업데이트 큐로부터 동기화 업데이트를 수신한다. 업데이트 큐는 원격 복제본들로부터 수신한 동기화 업데이트와, 로컬 복제본으로부터 전파될 동기화 업데이트(예를 들면, 로컬 충돌 레졸루션, 로컬 동기화 또는 기타 로컬 수정들)를 포함한다. 판정 동작(304)에 의해 동기화 업데이트가 로컬인 것으로 판정되면(예를 들면, 본래부터 로컬인 수정, 로컬로 결정된 충돌 레졸루션, 또는 원격 동기화 업데이트로부터 기인하는 로컬 업데이트), 전파 동작(306)은 동기화 업데이트를 다른 복제본들에게 전송하고, 수신 동작(302)으로 리턴하여 업데이트 큐에 있는 다음 동기화 업데이트를 수신하도록 진행된다. 동기화 업데이트가 판정 동작(304)에 의해 원격 복제본으로부터인 것으로 판정되면(예를 들면, 원격 동기화 업데이트 또는 원격으로 결정된 충돌 레졸루션), 잠금 동작(locking operation)(308)은 원격 동기화 업데이트들과 로컬 충돌 레졸루션의 적용 간의 경쟁 상황(race conditions)을 방지하기 위해, 로컬 복제본에 있는 데이터 객체를 잠근다. 이후 점검 동작(inspection operation)(309)은 동기화 업데이트의 동기화 파라미터들을 살펴보고, 상술된 수정 파라미터(m) 및 동기화 파라미터(s) 방법을 이용해서와 같이, 충돌이 존재하는지의 여부를 판정한다. 탐지 동작(310)에서 충돌이 탐지되지 않으면, 업데이트 동작(312)은 동기화 업데이트로부터의 변경을 로컬 복제본에 적용시키거나 또는 (예를 들면, 로컬 복제본이 이미 동기화되었다면) 아무 것도 하지 않는다.
한 구현에서, 서로 다른 두 개의 유형의 변경이 한 업데이트로부터 적용될 수 있지만, 단 하나의 유형 또는 셋 이상의 유형이 대안의 구현에서 적용될 수 있다. 제1 유형의 변경에서, 업데이트는 로컬 복제본에서 상태(예를 들면, 데이터) 변경을 일으킨다. 예를 들면, 동기화 업데이트는 로컬 복제본에 있는 데이터 객체의 값을 나타낼 수 있다. 이에 응하여, 업데이트 동작(312)은 그 데이터 객체의 값을 변경하고 그 데이터 객체와 관련된 동기화 파라미터들을 업데이트한다. 제2 유형의 변경에서, 업데이트는 로컬 복제본에서 상태 변경을 일으키지 않는다. 예를 들면, 동기화 업데이트에 표시된 값은 로컬 데이터 객체에 이미 있는 값과 동일하다. 이에 응하여, 업데이트 동작(312)은 그 데이터 객체와 관련된 동기화 파라미터들만을 업데이트하고, 동기화 업데이트의 나머지(예를 들면, 값 변경)는 폐기될 수 있다.
업데이트 동작(312) 이후, 잠금 해제 동작(unlocking operation)(313)은 데이터 객체를 잠금 해제하고, 큐잉 동작(315)은, 동기화 업데이트를 로컬 업데이트로서, 동기화 프로세스의 다음 단계(phase)에서 정상적으로 처리될 수 있는 업데이트 큐에 전달한다. 대안으로, 동기화 업데이트는 전파 동작(306)으로 바로 전달될 수 있다. 이후 처리는 업데이트 큐로부터 또 다른 동기화 업데이트를 수신하는 수신 동작(302)으로 리턴하기 전에 전파 동작(306)으로 계속되어 다른 원격 복제본들에게 변경을 알린다.
탐지 동작(310)에서 충돌을 탐지하면, 스냅샷 동작(314)은, 동기화 업데이트와 충돌하는 로컬 데이터 객체에 관한 정보(로컬 복제본의 현재 타임 스탬프, 로컬 데이터 객체의 상태(예를 들면, 값), 원격 데이터 객체의 상태, 로컬 동기화 파라미터들 및 원격 동기화 파라미터들)를 기록함으로써 충돌의 스냅샷을 캡쳐한다. 새로운 프로세스 동작(316)은 스냅샷에 의해 수반되는 별도의 레졸루션 프로세스(예를 들면, 새로운 쓰레드)를 개시하여(예를 들면, 스포닝하여) 충돌의 레졸루션을 결정한다. 레졸루션 프로세스는 충돌과 관련된 데이터 객체와 관련되어, 다수의 레졸루션 프로세스가 서로 다른 데이터 객체에 대해 동시에 수행될 수 있다. 레졸루션 프로세스를 개시한 후에, 동기화 프로세스는 데이터 객체를 잠금 해제하는 잠금 해제 동작(317)을 실행하고 수신 동작(302)으로 리턴하는 반면, 레졸루션 프로세스는 계속해서 충돌을 처리한다. 하나 이상의 프로세스들이 동시에 동작 중일 경우, 각각의 프로세스는 멀티태스킹 또는 멀티쓰레드된 환경에서, 하나 이상의 프로세서상의 다른 프로세스들과 협력하여 명령어를 실행시킬 수 있다. 이러한 동 시 처리(concurrent processing)는, 동기화 프로세스로 하여금 로컬 복제본을 동기화 프로세스로 업데이트하고 다른 변경을 전파하는 것을 계속하게 하는 함과 동시에, 가능하게 한편, 레졸루션 프로세스는 충돌을 처리한다.
레졸루션 프로세스 내에서, 수신 동작(318)은 동기화 프로세스로부터 스냅샷을 수신한다. 레졸루션 동작(320)은, 충돌 레졸루션 알고리즘을 적용하거나 또는 사용자에게 두 개의 데이터 상태(로컬 또는 원격) 중 하나를 선택할 것을 요청함으로써 충돌을 해결한다. 충돌이 해결된 후, 잠금 동작(322)은 원격 동기화 업데이트와 로컬 충돌 레졸루션의 적용 간의 경쟁 상황을 방지하기 위해, 로컬 복제본에 있는 데이터 객체를 잠근다.
해결된 업데이트를 로컬 복제본에 적용하기 전에, 레졸루션 프로세스는 충돌 레졸루션이 실효되었는지의 여부를 판정한다. 실효되었다는 것은, 레졸루션이 처리되고 있던 시간 동안, 또 다른 원격 동기화 업데이트가 수신되어 동일한 로컬 데이터 객체에 적용되었다는 것을 의미한다. 따라서, 실효되었는지의 여부를 테스트하는 동작(324)은 레졸루션 동작(320) 이후에 존재하는 조건을 기록하고, 동기화 프로세스로부터의 스냅샷에서 수신한 로컬 타임 스탬프와 로컬 데이터 객체와 관련된 현재의 동기화 파라미터(예를 들면, 레졸루션 동작(320) 이후에 캡쳐된 것)를 비교한다. 동기화 파라미터가 스냅샷으로부터의 타임 스탬프보다 더 최근의 것이라면, 로컬 충돌 레졸루션은 실효된 것이다. 그러므로, 잠금 해제 동작(326)은 복제본에 있는 데이터 객체를 잠금 해제하고, 삭제 동작(deleting operation)(328)은 이 레졸루션을 삭제한다.
이와는 대조적으로, 실효되었는지의 여부를 테스트하는 동작(324)이 로컬 충돌 레졸루션이 실효되지 않은 것으로 판정하면, 업데이트 동작(330)은, 충돌 레졸루션의 적용을 반영하도록 로컬 데이터 객체의 데이터를 업데이트하고 로컬 데이터 객체의 동기화 파라미터들을 업데이트하는 것을 포함하여, 로컬 복제본에 충돌 레졸루션을 적용한다. 이후, 잠금 해제 동작(332)은 로컬 복제본에 있는 데이터 객체를 잠금 해제한다. 이후, 큐잉 동작(334)은 충돌 레졸루션을 로컬 업데이트로서, 동기화 프로세스에서 정상적으로 처리될 수 있는 업데이트 큐에 전달한다. 대안으로, 충돌 레졸루션은 전파 동작(306)으로 바로 전달될 수 있다.
종료 동작(336)은 레졸루션 프로세스를 종료시킨다. 설명한 바와 같이, 로컬 복제본과 관련하여 실행 중인 단일의 동기화 프로세스에 의해 개시되는, 다수의 레졸루션 프로세스들이 서로 다른 충돌들에 대해 동시에 실행될 수 있다.
데이터 객체에 대한 레졸루션 프로세스의 실행 동안, 그 동일한 데이터 객체에 대한, 끼어드는 동기화 업데이트가 동기화 프로세스에서 수신되고 처리되는 경우, 일어날 수 있는 새로운 충돌(new potential conflict)이 탐지될 수 있다. 이러한 경우에서, 동기화 업데이트가 (예를 들면, 충돌이 없음을 나타내는) 현재의 로컬 상태와 양립하는(compatible)(예를 들면, 동일한) 원격 데이터 상태를 포함하면, 로컬 데이터 객체는 업데이트되며(이것은 동기화 파라미터를 업데이트하는 것을 포함함), 관련된 레졸루션 프로세스는 인터럽트되어 폐기될 수 있다. 이와는 대조적으로, 동기화 업데이트가 (예를 들면, 충돌을 나타내는) 데이터 객체의 현재의 로컬 상태와 양립하지 않는(예를 들면, 동일하지 않은) 원격 데이터 상태를 포 함하면, 동기화 업데이트는 데이터 객체와 관련된 진행 중인 충돌 레졸루션을 위하여 폐기된다.
본 발명을 구현하기 위한 도 4의 예시적인 하드웨어 및 운영 환경은, 처리 장치(21), 시스템 메모리(22), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(21)에 동작가능하게 연결시키는 시스템 버스(23)를 포함하는, 게이밍 콘솔 또는 컴퓨터(20) 형태의 범용 컴퓨팅 장치를 포함한다. 단 하나의 처리 장치(21) 또는 둘 이상의 처리 장치(21)가 있을 수 있어, 컴퓨터(20)의 프로세서는 단일의 CPU, 또는 병렬 처리 환경이라 일반적으로 지칭되는 복수의 처리 장치를 포함한다. 컴퓨터(20)는 통상적인 컴퓨터, 분산 컴퓨터, 또는 임의의 기타 유형의 컴퓨터일 수 있으나, 본 발명은 그렇게 제한되지 않는다.
시스템 버스(23)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 스위치된 패브릭(switched fabric), 포인트 대 포인트 접속, 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 시스템 메모리는 또한 단순하게 메모리라 지칭될 수 있고, 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함한다. 시동 중과 같은 때에, 컴퓨터(20) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(26)은 ROM(24)에 저장되어 있다. 컴퓨터(20)는 하드 디스크(도시 생략)에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(27), 이동식 자기 디스크(29)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(28) 및 CD-ROM 또는 기타 광 매체 등의 이동식 광 디스크(31)에 기 록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(30)를 포함한다.
하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는, 각각, 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 디스크 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속된다. 드라이브들 및 이들과 관련된 컴퓨터 매체는, 컴퓨터(20)를 위해, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 자기 카세트, 플래시 메모리 카드, DVD, RAM, ROM 등과 같은, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 임의의 유형의 컴퓨터 판독가능한 매체가 예시적인 운영 환경에서 사용될 수 있음을 당업자들을 이해해야 한다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램들(36), 기타 프로그램 모듈들(37) 및 프로그램 데이터(38)를 비롯한 많은 수의 프로그램 모듈들이, 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42)와 같은 입력 장치를 통해 명령 및 정보를 퍼스널 컴퓨터(20)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 직렬 포트 인터페이스(46)를 통해 처리 장치(21)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스에 의해 접속될 수도 있다. 모니터(47) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 또한 접속될 수 있다. 모니터 외에, 컴퓨터는 통상적으로 스피커 및 프린터 등의 기타 주변 출력 장치(미도시)를 포함할 수 있다.
컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 이들 논리적 접속은 컴퓨터(20) 또는 컴퓨터(20)의 일부에 결합된 통신 장치에 의해 달성될 수 있지만, 본 발명은 특정 유형의 통신 장치에 제한되지 않는다. 원격 컴퓨터(49)는 또 하나의 컴퓨터, 서버, 라우터, 네트워크 PC, 클라이언트, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(20)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함하지만, 메모리 저장 장치(50)만이 도 4에 도시되어 있다. 도 4에 도시된 논리적 접속으로는 LAN(51) 및 WAN(52)을 포함한다. 이러한 네트워킹 환경은 사무실 네트워크, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 모든 유형의 네트워크인 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 네트워크 인터페이스 또는 통신 장치의 한 유형인 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는, 통상적으로, WAN(52)을 통해 통신을 설정하기 위한 모뎀(54), 통신 장치의 한 유형인 네트워크 어댑터, 또는 임의의 기타 유형의 통신 장치를 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(20) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사 이에 통신 링크를 설정하는 기타 수단과 통신 장치가 사용될 수 있다는 것을 이해할 것이다.
예시적인 구현에서, 동기화 모듈, 레졸루션 모듈, 및/또는 기타 모듈들은 메모리(22) 및/또는 저장 장치들(29 또는 31)에 저장되어 있는 명령어에 의해 구현될 수 있고, 처리 장치(21)에 의해 처리될 수 있다. 복제본, 스냅샷, 충돌 레졸루션, 동기화 업데이트 및 기타 데이터가 메모리(22) 및/또는 영구적인 데이터 저장소인 저장 장치(29 또는 31)에 저장될 수 있다.
본 명세서에 설명된 기술은 하나 이상의 시스템에서 논리적 동작 및/또는 모듈로서 구현된다. 논리적 동작은 하나 이상의 컴퓨터 시스템에서 실행되는 프로세서-구현된 단계들의 시퀀스로서, 그리고, 하나 이상의 컴퓨터 시스템들 내의 상호접속된 기계 또는 서킷 모듈(circuit module)로서 구현될 수 있다. 마찬가지로, 각종 컴포넌트 모듈들의 설명은 모듈들에 의해 실행되거나 또는 모듈들에 의해 행해지는(effect) 동작들에 의해 제공될 수 있다. 최종적인 구현은, 설명된 기술을 구현하는 기초가 되는 시스템의 성능 요건에 따라, 선택에 관한 문제이다. 따라서, 본 명세서에 설명된 기술의 실시예를 구성하는 논리적 동작은, 다양하게, 동작(operation), 단계(step), 객체 또는 모듈로서 지칭된다. 게다가, 명시적으로 주장되지 않는다면 또는 청구항이 특정 순서를 본래부터 필요로 하지 않는다면, 논리적인 동작은 임의의 순서로 수행될 수 있음을 이해해야 한다.
상술된 명세서, 예 및 데이터는 본 발명의 예시적인 실시예의 구조 및 사용에 대하여 완벽한 설명을 제공한다. 본 발명의 각종 실시예들이 어느 정도 구체적 으로 또는 하나 이상의 개별적인 실시예를 참조하여 상술되었지만, 당업자들은 본 발명의 취지 또는 범위에서 벗어나지 않고 개시된 실시예에 대해 각종 변형을 행할 수 있다. 특히, 설명된 기술은 퍼스널 컴퓨터에 무관하게 채용될 수 있음을 이해해야 한다. 그러므로 기타 실시예들이 고려될 수 있다. 상술된 내용에 포함되어 있고 첨부된 도면에서 도시되어 있는 모든 내용이 특정 실시예의 예시로서만 해석되어야 하며, 제한하는 것이 아니도록 의도된다. 이하의 청구항에서 정의된 바와 같이 본 발명의 기본적인 구성 요소에서 벗어나지 않으면서 상세사항 또는 구조가 변경될 수 있다.
본 내용이 구조적인 특징들 및/또는 방법론적인 액트에 특정한 언어로 설명되었지만, 첨부된 청구항에 정의된 내용이 상술된 특정 특징들 또는 액트에 제한될 필요가 없음을 이해할 것이다. 오히려, 상술된 특정 특징들 및 액트는 청구되는 내용을 구현하는 예시적인 형태로서 개시된다.

Claims (20)

  1. 로컬 복제본(local replica)의 동기화 시의 충돌(conflict)을 해결하는(resolve) 방법으로서,
    하나 이상의 원격 복제본들로부터 동기화 업데이트들을 수신하는 동기화 프로세스(synchronization process)(302-317)를 실행시키는 단계 -상기 동기화 프로세스는, 상기 로컬 복제본의 로컬 데이터 객체와 동기화 업데이트 간에 충돌이 탐지되면, 상기 로컬 데이터 객체와 관련된 레졸루션 프로세스(resolution process)(318-336)를 개시함(316) -; 및
    상기 동기화 프로세스에 의한 상기 레졸루션 프로세스의 개시에 응하여, 상기 레졸루션 프로세스(318-336)를 상기 동기화 프로세스와 동시에(concurrently) 실행시키는 단계 -상기 레졸루션 프로세스는 충돌 레졸루션(conflict resolution)을 결정하고(320), 상기 동기화 프로세스는 다른 동기화 업데이트들을 처리함-
    를 포함하는, 충돌 해결 방법.
  2. 제1항에 있어서, 상기 레졸루션 프로세스는 또한 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하고, 상기 동기화 프로세스는 상기 다른 동기화 업데이트들을 처리하는, 충돌 해결 방법.
  3. 제1항에 있어서, 상기 레졸루션 프로세스는 또한 상기 충돌 레졸루션이 실 효(stale)되었는지의 여부를 판정하고, 상기 충돌 레졸루션이 실효되지 않았다면 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하는, 충돌 해결 방법.
  4. 제1항에 있어서, 상기 동기화 프로세스는 또한 상기 로컬 데이터 객체와 상기 동기화 업데이트 간에 충돌이 탐지되면, 상기 충돌의 스냅샷을 기록하고 상기 스냅샷을 상기 레졸루션 프로세스에 전달(pass)하며, 상기 레졸루션 프로세스는 또한 상기 충돌 레졸루션이 결정된 후에 존재하는 조건들과 상기 스냅샷을 비교함으로써 상기 충돌 레졸루션이 실효되었는지의 여부를 판정하는, 충돌 해결 방법.
  5. 제4항에 있어서, 상기 스냅샷은 상기 충돌의 해결에 앞서 캡쳐되며, 로컬 타임 스탬프, 상기 로컬 데이터 객체의 상태 및 상기 동기화 업데이트로부터 수신된 대응하는 원격 데이터 객체의 상태를 포함하는, 충돌 해결 방법.
  6. 제4항에 있어서, 상기 레졸루션 프로세스는 또한 상기 로컬 데이터 객체와 관련된 동기화 파라미터(synchronization parameter)를 기록하고, 상기 스냅샷으로부터의 로컬 타임 스탬프가 상기 동기화 파라미터보다 더 이른(earlier) 경우, 상기 충돌 레졸루션이 실효된 것으로 판정하는, 충돌 해결 방법.
  7. 제1항에 있어서, 상기 레졸루션 프로세스는 또한 하나 이상의 원격 복제본들로의 전파(progapation)를 위해, 상기 충돌 레졸루션을 상기 동기화 프로세스로 전 달하는, 충돌 해결 방법.
  8. 제1항에 있어서, 상기 동기화 프로세스는, 상기 로컬 데이터 객체와 동기화 업데이트 간에 충돌이 탐지되지 않는 경우, 상기 동기화 업데이트를 상기 로컬 데이터 객체에 적용하는, 충돌 해결 방법.
  9. 제1항에 있어서, 상기 레졸루션 프로세스는 또한 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하기 전에 상기 로컬 데이터 객체를 잠그는(lock), 충돌 해결 방법.
  10. 제1항에 있어서, 상기 레졸루션 프로세스는 또한 상기 충돌 레졸루션이 실효되었는지의 여부를 테스트하기 전에 상기 로컬 데이터 객체를 잠그는, 충돌 해결 방법.
  11. 제1항에 있어서, 상기 레졸루션 프로세스는 또한 상기 충돌 레졸루션이 실효되었다면 그 충돌 레졸루션을 삭제하는(delete), 충돌 해결 방법.
  12. 제1항의 동작들을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체.
  13. 로컬 복제본의 동기화 시의 충돌을 해결하는 방법으로서,
    하나 이상의 원격 복제본들로부터 동기화 업데이트들을 수신하는 동기화 프로세스(302-317)를 실행시키는 단계 -상기 동기화 프로세스는, 상기 로컬 복제본의 로컬 데이터 객체와 동기화 업데이트 간에 충돌이 탐지되면, 상기 로컬 데이터 객체와 관련된 레졸루션 프로세스(318-336)를 개시함(316) -; 및
    상기 동기화 프로세스에 의한 상기 레졸루션 프로세스(318-336)의 개시에 응하여, 상기 레졸루션 프로세스를 상기 동기화 프로세스와 동시에 실행시키는 단계 -상기 레졸루션 프로세스는 충돌 레졸루션을 결정하고(320), 상기 레졸루션 프로세스의 개시 이래로 상기 로컬 데이터 객체가 상기 동기화 프로세스에 의해 아직 업데이트되지 않았다면 상기 충돌 레졸루션을 상기 로컬 데이터 객체에 적용함-
    를 포함하는, 충돌 해결 방법.
  14. 제13항에 있어서, 상기 레졸루션 프로세스는 또한 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하고, 상기 동기화 프로세스는 다른 동기화 업데이트들을 처리하는, 충돌 해결 방법.
  15. 제13항에 있어서, 상기 레졸루션 프로세스는 또한 상기 충돌 레졸루션이 실효되었는지의 여부를 판정하고, 상기 충돌 레졸루션이 실효되지 않았다면 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하는, 충돌 해결 방법.
  16. 제13항의 동작들을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체.
  17. 로컬 복제본의 동기화 시의 충돌을 해결하는 방법으로서,
    하나 이상의 원격 복제본들로부터 동기화 업데이트들을 수신하는 동기화 프로세스(302-317)를 실행시키는 단계 -상기 동기화 프로세스는 로컬 데이터 객체와 동기화 업데이트 간에 충돌이 탐지되면, 별도의 쓰레드로 레졸루션 프로세스(318-336)를 스포닝(spawn)함(316) -; 및
    상기 동기화 프로세스와 동시에 상기 별도의 쓰레드의 상기 레졸루션 프로세스(318-336)를 실행시키는 단계 -상기 레졸루션 프로세스는 충돌 레졸루션을 결정하고(320), 상기 동기화 프로세스는 다른 동기화 업데이트들을 처리함 -
    를 포함하는, 충돌 해결 방법.
  18. 제17항에 있어서, 상기 레졸루션 프로세스는 또한 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하고, 상기 동기화 프로세스는 상기 다른 동기화 업데이트들을 처리하는, 충돌 해결 방법.
  19. 제17항에 있어서, 상기 레졸루션 프로세스는 또한 상기 충돌 레졸루션이 실효되었는지의 여부를 판정하고, 상기 충돌 레졸루션이 실효되지 않았다면 상기 로컬 데이터 객체를 상기 충돌 레졸루션으로 업데이트하는, 충돌 해결 방법.
  20. 제17항의 동작들을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체.
KR1020087020384A 2006-02-22 2007-01-26 로컬 복제본의 동기화 시의 충돌을 해결하는 방법 및 이 방법을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체 KR20080103967A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/359,107 US7606838B2 (en) 2006-02-22 2006-02-22 Distributed conflict resolution for replicated databases
US11/359,107 2006-02-22

Publications (1)

Publication Number Publication Date
KR20080103967A true KR20080103967A (ko) 2008-11-28

Family

ID=38429639

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087020384A KR20080103967A (ko) 2006-02-22 2007-01-26 로컬 복제본의 동기화 시의 충돌을 해결하는 방법 및 이 방법을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체

Country Status (5)

Country Link
US (1) US7606838B2 (ko)
EP (1) EP1997015A4 (ko)
KR (1) KR20080103967A (ko)
CN (1) CN101390094B (ko)
WO (1) WO2007106239A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030802A1 (en) * 2004-10-21 2010-02-04 Access Co., Ltd. System and method tha allows relational data to be modeled efficiently and synchronized without creating dangling references
US20070039039A1 (en) 2005-08-10 2007-02-15 Microsoft Corporation Authorization of device access to network services
US20070143368A1 (en) * 2005-12-15 2007-06-21 Lundsgaard Soren K Conflict resolution in highly available network element
US7962378B2 (en) * 2007-07-05 2011-06-14 International Business Machines Corporation Process and methodology to maintain consistency across disparate interfaced systems
US9477727B2 (en) * 2008-08-01 2016-10-25 Sybase, Inc. Abstracting data for use by a mobile device having occasional connectivity
JP5453883B2 (ja) * 2009-03-31 2014-03-26 富士通株式会社 運用管理システム、プロセス解析装置、プロセス解析プログラムおよびプロセス解析方法
EP2323047B1 (en) * 2009-10-09 2020-02-19 Software AG Primary database system, replication database system and method for replicating data of a primary database system
US8788458B2 (en) 2009-12-30 2014-07-22 Sybase, Inc. Data caching for mobile applications
US8909662B2 (en) * 2009-12-30 2014-12-09 Sybase, Inc. Message based mobile object with native PIM integration
US9336291B2 (en) 2009-12-30 2016-05-10 Sybase, Inc. Message based synchronization for mobile business objects
US8572022B2 (en) * 2010-03-02 2013-10-29 Microsoft Corporation Automatic synchronization conflict resolution
US8266126B2 (en) * 2010-03-24 2012-09-11 Matrixx Software, Inc. System with multiple conditional commit databases
US20120136839A1 (en) * 2010-11-30 2012-05-31 Peter Eberlein User-Driven Conflict Resolution Of Concurrent Updates In Snapshot Isolation
US10102242B2 (en) * 2010-12-21 2018-10-16 Sybase, Inc. Bulk initial download of mobile databases
CN103176862B (zh) * 2011-12-20 2017-03-01 伊姆西公司 用于管理数据备份任务的设备和方法
US9471591B2 (en) * 2012-05-02 2016-10-18 Microsoft Technology Licensing, Llc Iterative disk upload based on differencing disk format
US9110807B2 (en) 2012-05-23 2015-08-18 Sybase, Inc. Cache conflict detection
US8874682B2 (en) 2012-05-23 2014-10-28 Sybase, Inc. Composite graph cache management
US9117021B2 (en) * 2013-03-14 2015-08-25 Intel Corporation Methods and apparatus to manage concurrent predicate expressions
US9317549B2 (en) * 2013-06-25 2016-04-19 Optumsoft, Inc. Constraint-based consistency with snapshot isolation
US10120868B2 (en) * 2013-09-04 2018-11-06 Red Hat, Inc. Outcast index in a distributed file system
US9626176B2 (en) 2013-09-13 2017-04-18 Microsoft Technology Licensing, Llc Update installer with technical impact analysis
US9830142B2 (en) 2013-09-13 2017-11-28 Microsoft Technology Licensing, Llc Automatic installation of selected updates in multiple environments
US10026064B2 (en) 2013-09-13 2018-07-17 Microsoft Technology Licensing, Llc Automatically recommending updates based on stored lifecycle information
US9665359B2 (en) * 2013-09-13 2017-05-30 Microsoft Technology Licensing, Llc Automatically resolving conflicts after installation of selected updates in a computer system
US9418124B2 (en) * 2013-12-16 2016-08-16 International Business Machines Corporation System and method of integrating time-aware data from multiple sources
US20150346713A1 (en) * 2014-06-03 2015-12-03 Siemens Aktiengesellschaft Method for Processing an Automation Project Using a Plurality of Processing Stations
US10180954B2 (en) * 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
WO2017173828A1 (en) * 2016-04-06 2017-10-12 Huawei Technologies Co., Ltd. System and method for multi-master synchronous replication optimization
CN106296230A (zh) * 2016-08-16 2017-01-04 杭州市质量技术监督检测院 日用消费品质量安全监控系统和方法
CN106339793A (zh) * 2016-08-16 2017-01-18 杭州市质量技术监督检测院 产品质量风险预警系统和方法
CN106096873A (zh) * 2016-08-16 2016-11-09 杭州市质量技术监督检测院 产品安全风险监控系统和方法
CN107977376B (zh) * 2016-10-24 2020-07-07 腾讯科技(深圳)有限公司 分布式数据库系统及事务处理方法
CN108108372B (zh) * 2016-11-25 2023-05-23 中兴通讯股份有限公司 一种数据冲突自动校正处理方法及装置
US10885018B2 (en) 2018-05-07 2021-01-05 Microsoft Technology Licensing, Llc Containerization for elastic and scalable databases
JP7056460B2 (ja) * 2018-08-10 2022-04-19 横河電機株式会社 制御システム及び制御装置
CN110245148B (zh) * 2019-06-25 2021-03-23 河南中原消费金融股份有限公司 一种数据存储方法、装置、系统及介质
CN111767332B (zh) * 2020-06-12 2021-07-30 上海森亿医疗科技有限公司 异构数据源的数据集成方法、系统以及终端
CN112966047B (zh) * 2021-03-05 2023-01-13 上海沄熹科技有限公司 一种基于分布式数据库的复制表功能实现方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774717A (en) * 1995-12-15 1998-06-30 International Business Machines Corporation Method and article of manufacture for resynchronizing client/server file systems and resolving file system conflicts
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
US5937414A (en) * 1997-02-28 1999-08-10 Oracle Corporation Method and apparatus for providing database system replication in a mixed propagation environment
US6058416A (en) * 1998-05-22 2000-05-02 International Business Machines Corportion Flexible state sharing and consistency mechanism for interactive applications
US6697873B1 (en) * 1999-12-20 2004-02-24 Zarlink Semiconductor V.N., Inc. High speed MAC address search engine
US6636873B1 (en) * 2000-04-17 2003-10-21 Oracle International Corporation Methods and systems for synchronization of mobile devices with a remote database
US6993522B2 (en) * 2001-06-27 2006-01-31 Microsoft Corporation System and method for resolving conflicts detected during a synchronization session
TW579463B (en) * 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
US7149759B2 (en) * 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network
US7606881B2 (en) * 2002-04-25 2009-10-20 Oracle International Corporation System and method for synchronization of version annotated objects
US7386797B1 (en) * 2002-05-22 2008-06-10 Oracle Corporation Framework to model and execute business processes within a collaborative environment
US20030220966A1 (en) * 2002-05-24 2003-11-27 International Business Machines Corporation System and method for dynamic content dependent conflict resolution
US6983293B2 (en) * 2002-07-24 2006-01-03 International Business Machines Corporation Mid-tier-based conflict resolution method and system usable for message synchronization and replication
KR100462839B1 (ko) * 2002-12-24 2004-12-23 한국전자통신연구원 모바일 환경에서의 이동 클라이언트와 서버간의 데이터동기화 및 갱신 충돌 해결 방법
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
CN1479223A (zh) * 2003-07-09 2004-03-03 无敌科技(西安)有限公司 写作语意辅助提示系统及方法
US7512638B2 (en) * 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US20050177617A1 (en) * 2003-12-23 2005-08-11 Intel Corporation Conflict resolution during data synchronization

Also Published As

Publication number Publication date
EP1997015A4 (en) 2012-08-01
WO2007106239A1 (en) 2007-09-20
CN101390094B (zh) 2011-04-13
EP1997015A2 (en) 2008-12-03
US20070198599A1 (en) 2007-08-23
CN101390094A (zh) 2009-03-18
US7606838B2 (en) 2009-10-20

Similar Documents

Publication Publication Date Title
KR20080103967A (ko) 로컬 복제본의 동기화 시의 충돌을 해결하는 방법 및 이 방법을 구현하는 컴퓨터 프로세스를 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체
US11914572B2 (en) Adaptive query routing in a replicated database environment
US10860612B2 (en) Parallel replication across formats
EP3401806A1 (en) Atomic processing of compound database transactions that modify a metadata entity
US7933881B2 (en) Concurrency control within an enterprise resource planning system
Zhou et al. Foundationdb: A distributed unbundled transactional key value store
Vandiver et al. Tolerating byzantine faults in transaction processing systems using commit barrier scheduling
KR101099199B1 (ko) 데이터베이스 복구 중의 스냅샷 질의를 위한 시스템 및 방법
US8868514B2 (en) Transaction support for distributed data
US8326816B2 (en) Fine grain synchronization for database replay
US8671085B2 (en) Consistent database recovery across constituent segments
US8473953B2 (en) Batching transactions to apply to a database
JP2023546249A (ja) トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム
US20110178984A1 (en) Replication protocol for database systems
Bortnikov et al. Omid, reloaded: scalable and {Highly-Available} transaction processing
Galanis et al. Oracle database replay
US9015116B2 (en) Consistent replication of transactional updates
Nascimento et al. Shuttle: Intrusion recovery for paas
CN116089359A (zh) 数据库快照的生成方法、装置、电子设备和介质
Shacham et al. Taking omid to the clouds: Fast, scalable transactions for real-time cloud analytics
Padhye Transaction and data consistency models for cloud applications
Zhou et al. FoundationDB: A Distributed Key Value Store
Arora et al. Dynamic timestamp allocation for reducing transaction aborts
Shastry et al. Transaction support for HBase
US20230185792A1 (en) Verification of database system using deterministic read workloads

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid