KR20100106400A - 비동기 복제 - Google Patents
비동기 복제 Download PDFInfo
- Publication number
- KR20100106400A KR20100106400A KR1020107013483A KR20107013483A KR20100106400A KR 20100106400 A KR20100106400 A KR 20100106400A KR 1020107013483 A KR1020107013483 A KR 1020107013483A KR 20107013483 A KR20107013483 A KR 20107013483A KR 20100106400 A KR20100106400 A KR 20100106400A
- Authority
- KR
- South Korea
- Prior art keywords
- file
- server
- server computer
- computer
- application
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
서버 파일의 사본의 내용이 다운로드 파일(download file), 베이스 파일(base file) 및 작업 파일(working file)에 저장될 수 있다. 애플리케이션으로부터 그 애플리케이션이 작업 파일을 편집했다는 표시가 수신될 수 있고, 편집된 작업 파일의 사본이 업로드 파일(upload file)에 저장될 수 있다. 서버 컴퓨터 상의 서버 파일이 변경되었는지를 판정하기 위해 서버 컴퓨터에 대해 질의가 행해질 수 있다. 서버 컴퓨터 상의 서버 파일이 변경되지 않은 경우, 업로드 파일의 내용을 사용하여 서버 컴퓨터 상의 서버 파일이 업데이트될 수 있다. 서버 컴퓨터 상의 서버 파일이 변경된 경우, 업로드 파일, 베이스 파일 및 서버 컴퓨터 상의 변경된 서버 파일의 3원 병합(three-way merge)이 수행될 수 있다. 이어서, 3원 병합의 결과를 사용하여 서버 컴퓨터 상의 서버 파일이 업데이트될 수 있다.
Description
클라이언트-서버는 컴퓨터 네트워크를 통해 클라이언트와 서버를 분리시키는 컴퓨팅 아키텍처이다. 컴퓨터 네트워크에 연결된 각각의 클라이언트 또는 서버는 노드(node)라고 할 수 있다. 가장 기본적인 클라이언트-서버 아키텍처 유형은 단지 2가지 노드 유형, 클라이언트 및 서버만을 이용한다. 이러한 아키텍처 유형은 때때로 "2-계층(two-tier)"이라고 한다. 2-계층 아키텍처(two-tier architecture)에 의해 클라이언트들 및 서버들은 컴퓨터 네트워크를 통해 파일 및 자원을 공유할 수 있다.
클라이언트들은 많은 소프트웨어 인스턴스들을 실행할 수 있다. 각각의 클라이언트 소프트웨어 인스턴스(client software instance)는 데이터 파일 요청들을 하나 이상의 연결된 서버들로 전송할 수 있다. 차례로, 서버들은 이러한 요청들을 받아서 처리하고, 요청된 데이터 파일을 요청측 클라이언트로 반환할 수 있다. 다른 클라이언트가 그 데이터 파일을 편집할 수 없도록, 서버 상의 요청된 데이터 파일에 "잠금(lock)"이 배치될 수 있다. 그렇지만, 클라이언트와 서버 간의 컴퓨터 네트워크를 통한 연결이 상실(lost)될 때, 잠금도 역시 상실(lost)될 수 있다. 이것이 문제가 될 수 있는 이유는, 연결이 회복될 때, 잠금이 배치되어 있는 경우, 클라이언트는 연결이 상실(그 결과, 잠금이 상실)된 후에 그 데이터 파일이 다른 클라이언트에 의해 편집되었는지를 알 방법이 없다.
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니다. 이 요약은 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
서버 파일의 사본의 내용이 다운로드 파일(download file), 베이스 파일(base file) 및 작업 파일(working file)에 저장될 수 있다. 이 파일들(예를 들어, 다운로드 파일, 베이스 파일 및 작업 파일)은, 보다 효율적인 저장 및 업데이트를 가능하게 해주기 위해, 클라이언트 기계 상에 추상화된 방식으로(예를 들어, 데이터 베이스에) 저장될 수 있다. 이 파일들이 꼭 실제의 파일일 필요는 없다. 애플리케이션으로부터 그 애플리케이션이 작업 파일을 편집했다는 표시가 수신될 수 있고, 편집된 작업 파일의 사본이 업로드 파일(upload file)에 저장될 수 있다. 서버 컴퓨터 상의 서버 파일(server file)이 변경되었는지를 판정하기 위해 서버 컴퓨터에 대해 질의가 행해질 수 있다. 서버 컴퓨터 상의 서버 파일이 변경되지 않은 경우, 업로드 파일의 내용을 사용하여 서버 컴퓨터 상의 서버 파일이 업데이트될 수 있다. 원자성(atomicity)을 보장해주기 위한 잠금이 존재하지 않을 수 있기 때문에, 서버 컴퓨터는 하나의 원자적 트랜잭션(atomic transaction)에서 이러한 검사 및 교체(check and replace)를 수행할 수 있다. 서버 컴퓨터 상의 서버 파일이 변경된 경우, 업로드 파일, 베이스 파일 및 서버 컴퓨터 상의 변경된 서버 파일의 3원 병합(three-way merge)이 수행될 수 있다. 이어서, 3원 병합의 결과를 사용하여 서버 컴퓨터 상의 서버 파일이 업데이트될 수 있다.
이상의 개괄적인 설명 및 이하의 상세한 설명 둘다가 일례들을 제공하며 단지 설명을 위한 것이다. 그에 따라, 이상의 개괄적인 설명 및 이하의 상세한 설명은 제한하는 것으로 간주되어서는 안된다. 게다가, 본 명세서에 기술된 것들에 부가하여 여러 특징들 또는 변형들이 제공될 수 있다. 예를 들어, 실시예들은 상세한 설명에 기술된 다양한 특징 조합들 및 서브-컴비네이션들에 관한 것일 수 있다.
본 명세서에 포함되어 그 일부를 구성하는 첨부 도면들은 본 발명의 다양한 실시예들을 나타내고 있다.
도 1은 동작 환경의 블록도.
도 2는 비동기 복제(asynchronous replication)를 제공하는 방법의 플로우차트.
도 3은 클라이언트 컴퓨터를 포함하는 시스템의 블록도.
도 1은 동작 환경의 블록도.
도 2는 비동기 복제(asynchronous replication)를 제공하는 방법의 플로우차트.
도 3은 클라이언트 컴퓨터를 포함하는 시스템의 블록도.
이하의 상세한 설명은 첨부 도면들을 참조한다. 가능한 경우, 도면들 및 이하의 설명에서 동일하거나 유사한 구성요소들을 지칭하기 위해 동일한 참조 번호가 사용된다. 본 발명의 여러 실시예들이 기술되어 있을 수 있지만, 수정들, 개조들 및 기타 구현들이 가능하다. 예를 들어, 도면들에 예시된 구성요소들에 치환, 추가 또는 수정이 행해질 수 있으며, 본 명세서에 기술된 방법들은 개시된 방법들에 대해 단계들을 치환, 재정렬 또는 추가함으로써 수정될 수 있다. 그에 따라, 이하의 상세한 설명은 본 발명을 제한하지 않는다. 그 대신에, 본 발명의 적절한 범위가 첨부된 청구항들에 의해 정의된다.
(예를 들어, 사용자 인터페이스와 관련하여) 비동기 복제가 제공될 수 있다. 본 발명의 실시예들은 사용자의 서버-기반 파일들에 대한 신뢰성있는 이용가능성을 제공할 수 있다. 예를 들어, 본 발명의 실시예들은 (예를 들어, 서버로부터의) 원격 컨텐츠(remote content)를 로컬 저장소(local store)에 (예를 들어, 클라이언트 상에) 자동으로 캐싱할 수 있다. 이 캐쉬는 클라이언트 상의 로컬 애플리케이션(local application)에 의해 소유되고 관리될 수 있다. 이러한 원격 캐쉬 특징을 제공하기 위해, 본 발명의 실시예들은, i) 서버 파일들을 사용자에 의해 조작되는 클라이언트 상의 로컬 저장소로 매끄럽게(seamlessly) 복제할 수 있고, ii) 로컬 저장소에 있는 파일들을 조작할 수 있으며, iii) 파일들을 병합하여 필요에 따라 로컬 저장소로부터 서버로 백업할 수 있다. 이 특징에 의해 서버-기반 파일(server based file)을 여는 것 및 저장하는 것이 고장에 대해 보다 탄력적으로 될 수 있는데, 그 이유는, 이하에서 더 상세히 기술되는 바와 같이, 서버 파일들에 잠금을 유지하는 것이 필요 없을 수 있기 때문이다.
도 1은 동작 환경(100)의 블록도이다. 도 1에 도시된 바와 같이, 동작 환경(100)은 네트워크(도시 생략)를 통해 연결된 클라이언트 컴퓨터(105) 및 서버 컴퓨터(110)를 포함할 수 있다. 서버 컴퓨터(110)는, 예를 들어, 서버 파일(120)을 서비스하도록 구성되어 있는 원격 파일 서버(remote file server)일 수 있다. 클라이언트 컴퓨터(105)는 애플리케이션(115) 및 로컬 저장소(117)를 포함할 수 있다. 애플리케이션(115)은 전자 메일 및 연락처 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 데이터베이스 애플리케이션, 슬라이드 프리젠테이션 애플리케이션, 또는 작도(drawing) 또는 컴퓨터-보조(computer-aided) 애플리케이션 프로그램을 포함할 수 있지만, 이들로 제한되지 않는다. 로컬 저장소(117)는 동기 관리자(sync manager)(125) 다운로드 파일(download file)(130), 베이스 파일(base file)(135), 작업 파일(working file)(140), 및 업로드 파일(upload file)(145)을 포함할 수 있다. 동기 관리자(125)는, 도 2와 관련하여 이하에서 더 상세히 기술하는 바와 같이, 로컬 저장소(117)를 조작할 수 있는 소프트웨어 모듈을 포함할 수 있다.
도 2는 본 발명의 일 실시예에 따른 비동기 복제를 제공하는 방법(200)에 포함된 일반적 단계들을 기술하는 플로우차트이다. 방법(200)은, 도 3과 관련하여 이하에서 더 상세히 기술하는 클라이언트 컴퓨터(105)를 사용하여 구현될 수 있다. 방법(200)의 단계들을 구현하는 방법들에 대해 이하에서 더 상세히 기술할 것이다. 방법(200)은 시작 블록(205)에서 시작하여, 동기 관리자(125)가 애플리케이션(115)으로부터 서버 파일(120)의 사본에 대한 요청을 수신할 수 있는 단계(210)로 진행할 수 있다. 예를 들어, 애플리케이션(115)은 워드 프로세싱 프로그램을 포함할 수 있지만, 이것으로 제한되지 않는다. 예를 들어, 사용자-조작 애플리케이션(user operating application)(115)이 서버 컴퓨터(110) 상에 존재하는 문서를 열고자 할 수 있다. 그에 따라, 애플리케이션(115)은 애플리케이션(115)이 서버 컴퓨터(110) 상의 서버 파일(120)을 열 필요가 있다는 것을 동기 관리자(125)에게 알려줄 수 있다.
동기 관리자(125)가 서버 파일(120)의 사본에 대한 요청을 수신하는 단계(210)로부터, 방법(200)은 동기 관리자(125)가 서버 컴퓨터(110)에 서버 파일(120)의 사본을 요청할 수 있는 단계(215)로 진행할 수 있다. 예를 들어, 동기 관리자(125)는 서버 컴퓨터(110)에 서버 파일(120)의 사본을 요청하기 위해 클라이언트 컴퓨터(105)를 서버 컴퓨터(110)에 연결시키는 네트워크를 통해 서버 컴퓨터(110)와 통신을 할 수 있다.
단계(215)에서 동기 관리자(125)가 서버 컴퓨터(110)에 서버 파일(120)의 사본을 요청하면, 방법(200)은 동기 관리자(125)가 서버 컴퓨터(110)로부터 서버 파일(120)의 사본을 수신할 수 있는 단계(220)로 계속될 수 있다. 예를 들어, 동기 관리자(125)는 네트워크를 통해 서버 컴퓨터(110)로부터 서버 파일(120)의 사본을 수신할 수 있다(상태 150). 본 발명의 실시예들에 따르면, 서버 파일(120)은 서버 컴퓨터(110) 상에 그대로 있을 수 있으며, 동기 관리자는 서버 파일(120)의 사본을 수신할 수 있을 뿐이다. 서버 파일(120)의 사본이 동기 관리자(125)에 의해 수신될 때, 서버 컴퓨터(110) 상에 존재하는 서버 파일(120)에 잠금이 배치되거나 배치되지 않을 수 있다. 본 발명의 실시예들에 따르면, 서버 컴퓨터(110) 상에 존재하는 서버 파일(120)에 대한 잠금은 선택적일 수 있다. 잠금을 가질지 여부는 사용자 시나리오 및 특징들(예를 들어, 다중-사용자 편집이 바람직한지 여부)에 달려 있을 수 있다.
단계(220)에서 동기 관리자(125)가 서버 컴퓨터(110)로부터 서버 파일(120)의 사본을 수신한 후에, 방법(200)은 동기 관리자(125)가 서버 파일(120)의 사본의 내용을 다운로드 파일(130), 베이스 파일(135) 및 작업 파일(140)에 저장할 수 있는 단계(225)로 진행할 수 있다. 예를 들어, 동기 관리자(125)는 서버 파일(120)의 사본을 클라이언트 컴퓨터(105) 상의 로컬 저장소(117)로 복제할 수 있다. 환언하면, 서버 파일(120)의 사본이 다운로드 파일(130)로 복제될 수 있고(상태 155), 베이스 파일(135)로 복제될 수 있으며(상태 160), 또한 작업 파일(140)로 복제될 수 있다(상태 165).
동기 관리자(125)가 서버 파일(120)의 사본의 내용을 다운로드 파일(130), 베이스 파일(135) 및 작업 파일(140)에 저장하는 단계(225)로부터, 방법(200)은 동기 관리자(125)가 애플리케이션(115)으로부터 애플리케이션(115)이 작업 파일(140)을 편집했다는 표시를 수신할 수 있는 단계(230)로 진행할 수 있다. 예를 들어, 앞서 언급한 바와 같이, 애플리케이션(115)은 워드 프로세싱 애플리케이션일 수 있다. 사용자-조작 애플리케이션(115)은 서버 컴퓨터(110)로부터의 문서[예를 들어, 서버 파일(120)]를 열고자 할 수 있다. 이상에서 기술한 바와 같이, 서버 파일(120)의 사본이 작업 파일(140)로 복사될 수 있다. 작업 파일(140)은 사용자가 편집하거나 사용자가 애플리케이션(115)에 조작하도록 지시하는 사본일 수 있다. 예를 들어, 사용자는 문서를 변경할 수 있다. 이 변경들은 애플리케이션(115)에 의해 작업 파일(140)에 저장될 수 있다(상태 170). 편집들을 작업 파일(140)에 저장할 때, 애플리케이션(115)은 애플리케이션(115)이 작업 파일(140)을 편집했다는 표시를 동기 관리자(125)로 전송할 수 있다. 게다가, 애플리케이션(115)을 닫을 때, 애플리케이션(115)은 그 표시를 동기 관리자(125)로 전송할 수 있다.
단계(230)에서 동기 관리자(125)가 애플리케이션(115)으로부터 그 표시를 수신하면, 방법(200)은 동기 관리자(125)가 그 표시에 응답하여 편집된 작업 파일(140)의 사본을 업로드 파일(145)에 저장할 수 있는 단계(235)로 계속될 수 있다. 예를 들어, 애플리케이션(115)이 작업 파일(140)을 변경했다는 표시를 수신할 때 또는 애플리케이션(115)이 닫힐 때, 동기 관리자(125)는 편집된 작업 파일(140)의 사본을 업로드 파일(145)에 저장할 수 있다(상태 175).
단계(235)에서 동기 관리자(125)가 편집된 작업 파일(140)의 사본을 업로드 파일(145)에 저장한 후에, 방법(200)은 동기 관리자(125)가 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지를 판정하기 위해 서버 컴퓨터(110)에 질의를 할 수 있는 단계(240)로 진행할 수 있다. 환언하면, 결정 블록(245)에서, 동기 관리자(125)는 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지를 판정할 수 있다. 예를 들어, 서버 컴퓨터(110)에 의해 서버 파일(120) 상에 잠금이 배치되지 않은 경우, 서버 파일(120)의 사본이 동기 관리자(125)에 의해 수신되었을 때, 서버 파일의 사본이 로컬 저장소(117)로 복제된 후에 다른 클라이언트가 서버 파일(120)을 변경했을 수도 있다.
게다가, 서버 컴퓨터(110)에 의해 서버 파일(120) 상에 잠금이 배치된 경우, 서버 파일(120)의 사본이 동기 관리자(125)에 의해 수신되었지만 잠금이 나중에 상실되었을 때, 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 다른 클라이언트가 서버 파일(120)을 변경했을 수도 있다. 예를 들어, 서버 컴퓨터(110)와 클라이언트 컴퓨터(105) 간의 연결이 상실되는 경우 잠금이 상실될 수 있다. 연결 상실(lost connection)로 인한 잠금 상실(lost lock)의 경우에, 서버 컴퓨터(110)와 클라이언트 컴퓨터(105) 간의 연결을 회복할 시에, 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후 또 잠금이 상실된 후에 다른 클라이언트가 서버 파일(120)을 변경했을 수도 있다.
게다가, 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에, 사용자가 서버 컴퓨터(110)로부터 오프라인된 상태에서 애플리케이션(115)을 사용하여 작업을 할 수 있다. 오프라인으로 작업을 한 후에 서버 컴퓨터(110)에 재연결할 때, 동기 관리자(125)는 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후 오프라인으로 작업을 하기 전에 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지를 판정하기 위해 서버 컴퓨터(110)에 질의를 할 수 있다. 환언하면, 클라이언트 컴퓨터(105)가 서버 컴퓨터(110)에 재연결할 때마다, 동기 관리자(125)는 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지를 판정하기 위해 서버 컴퓨터(110)에 질의를 할 수 있다.
그에 부가하여, 동기 관리자(125)는, i) 그렇게 하라는 사용자 명령에 응답하여, ii) 미리 정해진 스케쥴에 기초하여 주기적으로, 또는 iii) 클라이언트 컴퓨터와 서버 컴퓨터 간의 연결의 대역폭이 어떤 미리 정해진 레벨에 도달하거나 미리 정해진 범위 내에 속하는 것에 기초하여, 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지를 판정하기 위해 서버 컴퓨터(110)에 질의를 할 수 있다. 전술한 것이 "폴링(polling)"-기반 방법에 대한 것일 수 있지만, 서버 컴퓨터(110)가 변경 통지를 지원하는 경우, 이것들이 이 프로세스를 보다 효율적이도록 만드는 데 사용될 수 있다.
서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지 여부에 관한 판정을 할 때, 동기 관리자(125)는, i) 서버 파일(120)에 잠금이 걸리지 않은 경우, ii) 서버 파일(120)에 대한 잠금이 상실될 때마다, iii) 클라이언트 컴퓨터(105)와 서버 컴퓨터(110) 간의 연결이 상실될 때마다, 또는 iv) 클라이언트 컴퓨터(105)가 서버 컴퓨터(110)에 연결 또는 재연결될 때마다, 서버 컴퓨터(110) 상의 서버 파일(120)이 변경된 것으로 가정할 수 있다. 게다가, 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되었는지를 판정할 때, 베이스 파일(135)은 베이스 파일(135)이 로컬 저장소(117)에 저장된 때에 관한 시간 스탬프(time stamp)를 가질 수 있다. 게다가, 서버 컴퓨터(110) 상의 서버 파일(120)은 그 서버 파일(120)이 마지막으로 변경된 때에 관한 시간 스탬프를 가질 수 있다. 동기 관리자(125)가 베이스 파일(135)의 시간 스탬프가 서버 파일(120)이 마지막으로 변경된 때에 관한 서버 컴퓨터(110) 상의 서버 파일(120)의 시간 스탬프보다 늦은 것으로 판정하는 경우, 동기 관리자(125)는 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되지 않은 것으로 판정할 수 있다. 어떤 상황들에서, 시간 스탬프들이 그다지 안정적이지 않을 수 있다(예를 들어, 그 시간이 서버 상에서 조정될 수 있다). 시간 스탬프에 부가하여, ETAG 등의 파일 버전/개정판 ID(file version/revision ID)가 사용될 수 있다.
결정 블록(245)으로부터, 동기 관리자(125)가 서버 컴퓨터(110) 상의 서버 파일(120)이 변경된 것으로 판정하는 경우, 방법(200)은 동기 관리자(125)가 업로드 파일(145), 베이스 파일(135), 및 서버 컴퓨터(110) 상의 변경된 서버 파일(120)의 3원 병합을 수행할 수 있는 단계(250)로 진행할 수 있다. 예를 들어, 베이스 파일(135)은 편집된 작업 파일(140) 및 서버(110) 상의 변경된 서버 파일(120)이 분기되었을 수 있는 공통의 기준점을 나타낼 수 있다. 단계(235)와 관련하여 이상에서 기술한 바와 같이, 업로드 파일(145)은 작업 파일(140)의 사본을 포함할 수 있다. 그 결과, 3원 병합을 수행하면 서버 파일(120)의 사본이 로컬 저장소(117)로 복제된 후에 애플리케이션(115)의 사용자에 의해 작업 파일(140)에 행해진 편집들 및 다른 사용자에 의해 서버 파일(120)에 행해진 임의의 변경들을 알 수 있다. 그에 따라, 3원 병합 출력은 애플리케이션(115)의 사용자에 의해 또한 서버 컴퓨터(110) 상의 서버 파일(120)을 변경한 다른 사용자에 의해 행해진 변경들을 고려할 수 있다. 본 발명의 실시예들에 따르면, 3원 병합이 애플리케이션(115)에 의해 수행될 수 있다. 애플리케이션(115)이 애플리케이션(115)에 특유한 파일 포맷에 대해 3원 병합을 수행하는 기능을 포함할 수 있기 때문에, 애플리케이션(115)은 3원 병합을 수행할 수 있다. 그럼에도 불구하고, 동기 관리자(125)가 3원 병합을 수행할 수 있다.
단계(250)에서 동기 관리자(125)가 3원 병합을 수행한 후에, 방법(200)은 동기 관리자(125)가 3원 병합의 결과를 사용하여 서버 컴퓨터(110) 상의 서버 파일(120)을 업데이트시킬 수 있는 단계(255)로 진행할 수 있다. 예를 들어, 3원 병합 출력이 애플리케이션(115)의 사용자에 의해 또한 서버 컴퓨터(110) 상의 서버 파일(120)을 변경한 다른 사용자에 의해 행해진 변경들을 고려할 수 있기 때문에, 3원 병합의 결과를 사용하여 서버 컴퓨터(110) 상의 서버 파일(120)을 업데이트시키는 것에 의해 서버 파일(120)이 임의의 사용자의 편집들 또는 변경들을 훼손시키지 않고 가장 최신의 것으로 될 수 있다. 게다가, 동기 관리자(125)가 3원 병합을 수행한 후에, 동기 관리자(125)는 또한 다운로드 파일(130)의 내용 및 베이스 파일(135)의 내용을 3원 병합의 결과로 대체시킬 수 있다.
그렇지만, 결정 블록(245)으로부터, 동기 관리자(125)가 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되지 않은 것으로 판정하는 경우, 방법(200)은 동기 관리자(125)가 업로드 파일(145)의 내용을 사용하여 서버 컴퓨터(110) 상의 서버 파일(120)을 업데이트시킬 수 있는 단계(260)로 진행할 수 있다. 예를 들어, 서버 컴퓨터(110) 상의 서버 파일(120)이 변경되지 않았기 때문에, 베이스 파일(135) 및 서버 컴퓨터(110) 상의 서버 파일(120)이 동일할 수 있다. 그 결과, 동기 관리자(125)는 베이스 파일(135)과 업로드 파일(145) 간에 diff를 수행할 수 있고, diff의 결과를 네트워크 연결을 통해 서버 컴퓨터(110)로 전송할 수 있다. 업로드 파일(145)이 클 수 있기 때문에, 네트워크 연결을 통해 업로드 파일(145) 전부를 전송하는 것은 그 연결에서의 상당한 대역폭을 사용할 수 있다. 또한, 베이스 파일(135)과 업로드 파일(145) 간에 상당한 중복성이 있을 수 있기 때문에, diff의 결과가 아주 작을 수 있다. diff 결과가 아주 작을 수 있기 때문에, 네트워크 연결을 통해 diff 결과를 전송하는 것은 업로드 파일(145) 전부를 전송하는 것에 비해 그 연결에서의 작은 대역폭을 사용할 수 있다.
게다가, 본 발명의 실시예들에 따르면, 동기 관리자(125)는 다른 사용자들에 의해 서버 컴퓨터(110) 상의 서버 파일(120)에 행해진 업데이트들을 수신할 수 있다. 이 업데이트들이 수신되면, 동기 관리자는 사용자가 작업 파일(140)에 대해 작업을 하고 있는 동안에 이 업데이트들을 사용하여 작업 파일(140)을 업데이트시킬 수 있다. 예를 들어, 동기 관리자(125)는 업데이트들이 이용가능하다는 메시지를 애플리케이션(115)으로 전송할 수 있다. 애플리케이션(115)의 사용자로부터의 사용자 입력에 응답하여, 동기 관리자(125)는 이 업데이트들을 사용하여 작업 파일(140)을 업데이트시킬 수 있다. 동기 관리자(125)가 단계(260)에서 업로드 파일(145)의 내용을 사용하여 서버 컴퓨터(110) 상의 서버 파일(120)을 업데이트시키거나 단계(255)에서 3원 병합의 결과를 사용하여 서버 컴퓨터(110) 상의 서버 파일(120)을 업데이트시키면, 방법(200)은 단계(265)에서 종료할 수 있다.
본 발명에 따른 실시예들은 비동기 복제(asynchronous replication)를 제공하는 시스템을 포함할 수 있다. 이 시스템은 메모리 저장 장치(memory storage) 및 이 메모리 저장 장치에 결합된 처리 장치(processing unit)를 포함할 수 있다. 이 처리 장치는 서버 파일의 사본에 대한 요청을 애플리케이션으로부터 수신하고 서버 파일의 사본을 서버 컴퓨터에 요청하는 동작을 할 수 있다. 그에 부가하여, 이 처리 장치는 서버 컴퓨터로부터 서버 파일의 사본을 수신하고 서버 파일의 사본의 내용을 다운로드 파일, 베이스 파일 및 작업 파일에 저장하는 동작을 할 수 있다. 게다가, 이 처리 장치는 애플리케이션으로부터 그 애플리케이션이 작업 파일을 편집했다는 표시를 수신하고, 그 표시에 응답하여 편집된 작업 파일의 사본을 업로드 파일에 저장하는 동작을 할 수 있다. 게다가, 이 처리 장치는 서버 컴퓨터 상의 서버 파일이 변경되었는지를 판정하기 위해 서버 컴퓨터에 대해 질의를 하는 동작을 할 수 있다. 서버 컴퓨터 상의 서버 파일이 변경되지 않은 것으로 판정될 때, 이 처리 장치는 업로드 파일의 내용을 사용하여 서버 컴퓨터 상의 서버 파일을 업데이트시키는 동작을 할 수 있다. 그렇지만, 서버 컴퓨터 상의 서버 파일이 변경된 것으로 판정될 때, 이 처리 장치는, i) 업로드 파일, 베이스 파일 및 서버 컴퓨터 상의 변경된 서버 파일의 3원 병합(three-way merge)을 수행하고, ii) 3원 병합의 결과를 사용하여 서버 컴퓨터 상의 서버 파일을 업데이트시키며, iii) 다운로드 파일 및 베이스 파일의 내용을 3원 병합의 결과로 대체시키는 동작을 할 수 있다.
도 3은 클라이언트 컴퓨터(105)를 포함하는 시스템의 블록도이다. 본 발명의 일 실시예에 따르면, 전술한 메모리 저장 장치 및 처리 장치는 도 3의 클라이언트 컴퓨터(105)와 같은 컴퓨팅 장치에 구현될 수 있다. 메모리 저장 장치 및 처리 장치를 구현하는 데 하드웨어, 소프트웨어 또는 펌웨어의 임의의 적당한 조합이 사용될 수 있다. 예를 들어, 메모리 저장 장치 및 처리 장치는 클라이언트 컴퓨터(105)에, 또는 클라이언트 컴퓨터(105)와 함께 다른 컴퓨팅 장치들(318) 중 임의의 컴퓨팅 장치[예를 들어, 서버 컴퓨터(110)]에 구현될 수 있다. 전술한 시스템, 장치 및 프로세서들은 일례이며, 다른 시스템들, 장치들 및 프로세서들이 본 발명의 실시예들에 따른 전술한 메모리 저장 장치 및 처리 장치를 포함할 수 있다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 시스템은 클라이언트 컴퓨터(105)와 같은 컴퓨팅 장치를 포함할 수 있다. 기본적인 구성에서, 클라이언트 컴퓨팅(105)는 적어도 하나의 처리 장치(302) 및 시스템 메모리(304)를 포함할 수 있다. 컴퓨팅 장치의 구성 및 유형에 따라, 시스템 메모리(304)는 휘발성[예를 들어, 랜덤 액세스 메모리(RAM)], 비휘발성[예를 들어, 판독 전용 메모리(ROM)], 플래쉬 메모리, 또는 임의의 조합을 포함할 수 있지만, 이들로 제한되지 않는다. 시스템 메모리(304)는 운영 체제(305), 하나 이상의 프로그래밍 모듈(306)을 포함할 수 있고, 프로그램 데이터(307)를 포함할 수 있다. 프로그래밍 데이터(307)는 다운로드 파일(130), 베이스 파일(135), 작업 파일(140), 및 업로드 파일(145)을 포함할 수 있다. 운영 체제(305)는, 예를 들어, 클라이언트 컴퓨터(105)의 동작을 제어하는 데 적합할 수 있다. 일 실시예에서, 프로그래밍 모듈(306)은, 예를 들어, 애플리케이션(115) 및 동기 관리자(sync manager)(125)를 포함할 수 있다. 게다가, 본 발명의 실시예들은 그래픽 라이브러리, 기타 운영 체제들, 또는 임의의 다른 애플리케이션 프로그램과 관련하여 실시될 수 있으며, 임의의 특정의 애플리케이션 또는 시스템으로 제한되지 않는다. 이 기본 구성이 도 3에서 점선(308) 내의 컴포넌트들로 나타내어져 있다.
클라이언트 컴퓨터(105)는 또한 부가의 특징들 및 기능들을 가질 수 있다. 예를 들어, 클라이언트 컴퓨터(105)는 또한, 예를 들어, 자기 디스크, 광 디스크 또는 테이프와 같은 부가의 데이터 저장 장치(이동식 및/또는 비이동식)를 포함할 수 있다. 이러한 부가의 저장 장치가 도 3에서 이동식 저장 장치(309) 및 비이동식 저장 장치(310)로 나타내어져 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 시스템 메모리(304), 이동식 저장 장치(309), 및 비이동식 저장 장치(310)가 모두 컴퓨터 저장 매체의 일례(즉, 메모리 저장 장치)이다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM(electrically erasable programmable read-only memory), 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 정보를 저장하는 데 사용될 수 있고 또 클라이언트 컴퓨터(105)에 의해 액세스될 수 있는 임의의 다른 매체가 있을 수 있지만, 이들로 제한되지 않는다. 임의의 이러한 컴퓨터 저장 매체가 장치(300)의 일부일 수 있다. 클라이언트 컴퓨터(105)는 또한 키보드, 마우스, 펜, 사운드 입력 장치, 터치 입력 장치, 기타 등등의 입력 장치(들)(312)를 가질 수 있다. 디스플레이, 스피커, 프린터, 기타 등등의 출력 장치(들)(314)도 역시 포함되어 있을 수 있다. 전술한 장치들은 일례이며, 기타 장치들이 사용될 수 있다.
클라이언트 컴퓨터(105)는 또한 장치(300)가 분산 컴퓨팅 환경에서 네트워크(예를 들어, 인트라넷 또는 인터넷)를 통하는 등에 의해 다른 컴퓨팅 장치들(318)[예를 들어, 서버 컴퓨터(110)]과 통신을 할 수 있게 해주는 통신 연결(316)을 포함할 수 있다. 통신 연결(316)은 통신 매체의 일례이다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터에 의해 반송파 또는 기타 전송 메카니즘 등의 피변조 데이터 신호에 구현될 수 있고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호의 하나 이상의 특성들이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호를 말하는 것일 수 있다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 연결(direct-wired connection) 등의 유선 매체와, 음향, RF(radio frequency), 적외선 및 기타 무선 매체 등의 무선 매체를 포함할 수 있다. 컴퓨터-판독가능 매체라는 용어는, 본 명세서에서 사용되는 바와 같이, 저장 매체 및 통신 매체 둘다를 포함할 수 있다.
이상에서 언급한 바와 같이, 운영 체제(305)를 비롯한 다수의 프로그램 모듈들 및 데이터 파일들이 시스템 메모리(304)에 저장될 수 있다. 처리 장치(302) 상에서 실행될 때, 프로그래밍 모듈(306)[예를 들어, 동기 관리자(125) 또는 애플리케이션(115)]은, 예를 들어, 이상에서 기술한 바와 같은 하나 이상의 방법(200)의 단계들을 비롯한 프로세스들을 수행할 수 있다. 전술한 프로세스는 일례이며, 처리 장치(302)는 기타 프로세스들을 수행할 수 있다. 본 발명의 실시예들에 따라 사용될 수 있는 기타 프로그래밍 모듈들은 전자 메일 및 연락처 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 데이터베이스 애플리케이션, 슬라이드 프리젠테이션 애플리케이션, 작도(drawing) 또는 컴퓨터-보조(computer-aided) 애플리케이션 프로그램, 기타를 포함할 수 있다.
일반적으로, 본 발명의 실시예들에 따르면, 프로그램 모듈들은 특정의 태스크들을 수행하거나 특정의 추상 데이터 유형들을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 기타 유형의 구조체를 포함할 수 있다. 게다가, 본 발명의 실시예들이 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 미니컴퓨터, 메인프레임 컴퓨터, 기타 등등을 비롯한 기타 컴퓨터 시스템 구성들에서 실시될 수 있다. 본 발명의 실시예들은 또한 태스크들이 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈들이 로컬 및 원격 메모리 저장 장치 둘다에 위치할 수 있다.
게다가, 본 발명의 실시예들이 개별 전자 요소들을 포함하는 전기 회로, 논리 게이트들을 포함하는 패키징된 또는 집적된 전자 칩, 마이크로프로세서를 이용하는 회로, 또는 전자 요소들 또는 마이크로프로세서들을 포함하는 단일 칩에서 실시될 수 있다. 본 발명의 실시예들은 또한, 예를 들어, AND, OR 및 NOT 등의 논리적 연산들을 수행할 수 있는 기타 기술들(기계 기술, 광학 기술, 유체 기술 및 양자 기술을 포함하지만, 이들로 제한되지 않음)을 사용하여 실시될 수 있다. 그에 부가하여, 본 발명의 실시예들은 범용 컴퓨터 내에서 또는 임의의 다른 회로 또는 시스템에서 실시될 수 있다.
본 발명의 실시예들이, 예를 들어, 컴퓨터 프로세스(방법), 컴퓨팅 시스템, 또는 제조 물품(컴퓨터 프로그램 제품 또는 컴퓨터-판독가능 매체 등)으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하는 명령어들의 컴퓨터 프로그램을 인코딩하는 컴퓨터 저장 매체일 수 있다. 컴퓨터 프로그램 제품은 또한 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하는 명령어들의 컴퓨터 프로그램을 인코딩하는 반송파 상의 전파 신호(propagated signal)일 수 있다. 그에 따라, 본 발명은 하드웨어로 및/또는 소프트웨어(펌웨어, 상주 소프트웨어, 마이크로코드, 기타를 포함함)로 구현될 수 있다. 환언하면, 본 발명의 실시예들이 명령어 실행 시스템에 의해 또는 명령어 실행 시스템과 관련하여 사용하기 위한 컴퓨터-사용가능 또는 컴퓨터-판독가능 프로그램 코드가 구현되어 있는 컴퓨터-사용가능 또는 컴퓨터-판독가능 저장 매체 상의 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는 명령어 실행 시스템, 장치 또는 소자에 의해 또는 이들과 관련하여 사용하기 위한 프로그램을 포함하거나, 저장하거나, 전달하거나, 전파하거나, 또는 전송할 수 있는 임의의 매체일 수 있다.
컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 소자 또는 전파 매체일 수 있지만, 이들로 제한되지 않는다. 보다 구체적인 컴퓨터-판독가능 매체의 일례(비전수적인 목록임)로서, 컴퓨터-판독가능 매체로는 하나 이상의 전선을 갖는 전기적 연결, 휴대형 컴퓨터 디스켓(portable computer diskette), 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM, 또는 플래쉬 메모리), 광섬유, 및 휴대형 CD-ROM(compact disc read-only memory)이 있을 수 있다. 유의할 점은, 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는 심지어 프로그램이 인쇄되어 있는 종이 또는 다른 적당한 매체일 수 있는데, 그 이유는 프로그램이, 예를 들어, 종이 또는 다른 매체의 광학적 스캐닝을 통해 전자적으로 캡처되고, 이어서 컴파일, 인터프리트 또는 필요한 경우 적당한 방식으로 처리되며 이어서 컴퓨터 메모리에 저장될 수 있기 때문이다.
본 발명의 실시예들은, 예를 들어, 본 발명의 실시예들에 따른 방법, 시스템, 및 컴퓨터 프로그램 제품의 블록도 및/또는 동작 설명을 참조하여 이상에 기술되어 있다. 블록들에 기재된 기능들/동작들이 임의의 플로우차트에 도시된 것과 순서와 다르게 행해질 수 있다. 예를 들어, 관여된 기능들/동작들에 따라, 연속하여 도시된 2개의 블록이 실제로는 거의 동시에 실행될 수 있거나, 그 블록들이 때때로 정반대의 순서로 실행될 수 있다.
본 발명의 어떤 실시예들이 기술되어 있지만, 다른 실시예들이 존재할 수 있다. 게다가, 본 발명의 실시예들이 메모리 및 기타 저장 매체에 저장된 데이터와 연관되어 있는 것으로 기술되어 있지만, 데이터가 또한 하드 디스크, 플로피 디스크, 또는 CD-ROM과 같은 보조 저장 장치(secondary storage device), 인터넷으로부터의 반송파(carrier wave), 또는 기타 형태의 RAM 또는 ROM 등의 기타 유형의 컴퓨터-판독가능 매체 상에 저장되어 있거나 그로부터 판독될 수 있다. 게다가, 개시된 방법들의 단계들이, 본 발명을 벗어나지 않고, 단계들을 재정렬(reorder)하는 것 및/또는 단계들을 삽입 또는 삭제하는 것을 비롯한 임의의 방식으로 수정될 수 있다.
본 명세서에 포함된 코드에서의 저작권을 비롯한 모든 권리가 출원인에 귀속되고 출원인의 소유이다. 출원인은 본 명세서에 포함된 코드에서의 모든 권리를 보유하며, 다른 목적이 아니라 허여된 특허의 재현과 관련해서만 이 자료를 재현할 허가를 부여한다. 본 명세서가 일례들을 포함하고 있지만, 본 발명의 범위는 이하의 청구항들에 의해 표시된다. 게다가, 본 명세서가 구조적 특징들 및/또는 방법적 동작들과 관련하여 기술되어 있지만, 청구항들이 상기한 특정의 특징들 또는 동작들로 제한되지는 않는다는 것을 잘 알 것이다. 오히려, 이상에서 기술한 특정의 특징들 및 동작들은 본 발명의 실시예들의 일례로서 개시되어 있다.
Claims (20)
- 비동기 복제(asynchronous replication)를 제공하는 방법으로서,
서버 파일(120)의 사본의 내용을 다운로드 파일(download file)(130), 베이스 파일(base file)(135) 및 작업 파일(working file)(140)에 저장하는 단계(225),
애플리케이션(115)으로부터 상기 애플리케이션(115)이 상기 작업 파일(140)을 편집했다는 표시를 수신하는 단계(230),
상기 표시에 응답하여, 상기 편집된 작업 파일(140)의 사본을 업로드 파일(upload file)(145)에 저장하는 단계(235),
서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터에 질의하는 단계(240),
상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되지 않은 것으로 판정될 때, 상기 업로드 파일(145)의 내용을 사용하여 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)을 업데이트시키는 단계(260), 그리고
상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경된 것으로 판정될 때,
상기 업로드 파일(145), 상기 베이스 파일(135), 및 상기 서버 컴퓨터(110) 상의 상기 변경된 서버 파일(120)의 3원 병합(three-way merge)을 수행하는 단계(250), 및
상기 3원 병합의 결과를 사용하여 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)을 업데이트시키는 단계(255)를 포함하는 방법. - 제1항에 있어서, 상기 애플리케이션(115)으로부터, 상기 서버 파일(120)의 사본에 대한 요청을 수신하는 단계(210)를 더 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110)로부터의 상기 서버 파일(120)의 사본을 요청하는 단계(215)를 더 포함하는 방법.
- 제1항에 있어서, 상기 서버 파일(120)의 사본을 상기 서버 컴퓨터(110)로부터 수신하는 단계(220)를 더 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경된 것으로 판정될 때, 상기 다운로드 파일(130)의 내용 및 상기 베이스 파일(135)의 내용을 상기 3원 병합의 결과로 대체시키는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 애플리케이션(115)으로부터 상기 표시를 수신하는 단계(230)는 상기 애플리케이션(115)으로부터 상기 표시를 수신하는 단계를 포함하며,
상기 애플리케이션(115), 상기 다운로드 파일(130), 상기 베이스 파일(135), 상기 작업 파일(140), 및 상기 업로드 파일(145)이 클라이언트 컴퓨터(105) 상에 있는 방법. - 제1항에 있어서, 상기 편집된 작업 파일(140)의 사본을 업로드 파일(download file)(145)에 저장하는 단계(235)가, 상기 작업 파일(140)을 저장하라는 상기 애플리케이션(115)에 대한 사용자-개시 명령(user initiated command)에 응답하여, 상기 편집된 작업 파일(140)의 사본을 상기 업로드파일(145)에 저장하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 편집된 작업 파일(140)의 사본을 업로드 파일(upload file)(145)에 저장하는 단계(235)가, 상기 애플리케이션(115)을 닫으라는 상기 애플리케이션(115)에 대한 사용자-개시 명령(user initiated command)에 응답하여, 상기 편집된 작업 파일(140)의 사본을 상기 업로드파일(145)에 저장하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 3원 병합을 수행하는 단계(250)는 상기 애플리케이션(115)이 상기 3원 병합을 수행하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240)가, 상기 애플리케이션(115)이 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)에 대한 잠금을 상실한 것에 응답하여, 상기 서버 컴퓨터(110)에 질의하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240)가, 상기 애플리케이션(115)이 실행되고 있는 클라이언트 컴퓨터(105)가 상기 서버 컴퓨터(110)와의 연결을 상실하고 회복한 것에 응답하여, 상기 서버 컴퓨터(110)에 질의하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240)가, 상기 애플리케이션(115)이 실행되고 있는 클라이언트 컴퓨터(105)가 상기 서버 컴퓨터(110)에 연결된 것에 응답하여, 상기 서버 컴퓨터(110)에 질의하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240)가, 상기 애플리케이션(115)이 실행되고 있는 클라이언트 컴퓨터(105)가 사용자 명령에 응답하여 상기 서버 컴퓨터(110)에 연결된 것에 응답하여, 상기 서버 컴퓨터(110)에 질의하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240)가, 미리 정해진 스케쥴에 응답하여, 상기 서버 컴퓨터(110)에 질의하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240)가, 상기 애플리케이션(115)이 실행되고 있는 클라이언트 컴퓨터(105)와 상기 서버 컴퓨터(110) 간의 연결(316)의 가용 대역폭이 미리 정해진 값보다 큰 것에 응답하여, 상기 서버 컴퓨터(110)에 질의하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 서버 파일(120)에 대한 업데이트들을 상기 서버 컴퓨터(110)로부터 수신하는 단계, 및
상기 수신된 업데이트들을 상기 다운로드 파일(130) 및 상기 작업 파일(140)에 저장하는 단계를 더 포함하는 방법. - 제1항에 있어서, 상기 업로드파일(145)의 내용을 사용하여 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)을 업데이트시키는 단계(260)가,
상기 베이스 파일(135)과 상기 업로드 파일(145) 간의 차이를 판정하기 위해 상기 베이스 파일(135)과 상기 업로드 파일(145) 간에 diff를 수행하는 단계, 및
상기 애플리케이션(115)이 실행되고 있고 또 상기 베이스 파일(135) 및 상기 업로드 파일(145)이 존재하는 클라이언트 컴퓨터(105)로부터 상기 서버 컴퓨터(110)로 상기 베이스 파일(135)과 상기 업로드 파일(145) 간의 차이를 전송하는 단계를 포함하는 방법. - 제1항에 있어서, 상기 3원 병합의 결과를 사용하여 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)을 업데이트시키는 단계(255)가,
상기 3원 병합의 결과와 상기 서버 파일(120) 간의 차이를 판정하기 위해 상기 3원 병합의 결과와 상기 서버 파일(120) 간에 diff를 수행하는 단계, 및
상기 애플리케이션(115)이 실행되고 있고 또 상기 3원 병합이 수행되었던 클라이언트 컴퓨터(105)로부터 상기 서버 컴퓨터(110)로 상기 3원 병합의 결과와 상기 서버 파일(120)을 전송하는 단계(185)를 포함하는 방법. - 실행될 때 비동기 복제를 제공하는 방법을 수행하는 일련의 명령어들을 저장하는 컴퓨터-판독가능 매체로서, 상기 일련의 명령어들에 의해 수행되는 상기 방법이,
애플리케이션(115)으로부터, 서버 파일(120)의 사본에 대한 요청을 수신하는 단계(210),
서버 컴퓨터(110)로부터 상기 서버 파일(120)의 사본을 요청하는 단계(215),
상기 서버 파일(120)의 사본을 상기 서버 컴퓨터(110)로부터 수신하는 단계(220),
상기 서버 파일(120)의 사본의 내용을 다운로드 파일(download file)(130), 베이스 파일(base file)(135) 및 작업 파일(working file)(140)에 저장하는 단계(225),
상기 애플리케이션(115)으로부터 상기 애플리케이션(115)이 상기 작업 파일(140)을 편집했다는 표시를 수신하는 단계(230),
상기 표시에 응답하여, 편집된 작업 파일(140)의 사본을 업로드 파일(upload file)(145)에 저장하는 단계(235),
상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되었는지를 판정하기 위해 상기 서버 컴퓨터(110)에 질의하는 단계(240),
상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경되지 않은 것으로 판정될 때, 상기 업로드 파일(145)의 내용을 사용하여 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)을 업데이트시키는 단계(260), 그리고
상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)이 변경된 것으로 판정될 때,
상기 업로드 파일(145), 상기 베이스 파일(135), 및 상기 서버 컴퓨터(110) 상의 상기 변경된 서버 파일(120)의 3원 병합(three-way merge)을 수행하는 단계(250),
상기 3원 병합의 결과를 사용하여 상기 서버 컴퓨터(110) 상의 상기 서버 파일(120)을 업데이트시키는 단계(255), 및
상기 다운로드 파일(130) 및 상기 베이스 파일(135)의 내용을 상기 3원 병합의 결과로 대체시키는 단계를 포함하는 컴퓨터-판독가능 매체. - 비동기 복제(asynchronous replication)를 제공하는 시스템으로서,
메모리 저장 장치(memory storage), 및
상기 메모리 저장 장치에 결합된 처리 장치(processing unit)를 포함하고,
상기 처리 장치가,
편집된 작업 파일(140)의 사본을 업로드 파일(upload file)에 저장하고,
서버 컴퓨터 상의 서버 파일이 변경되지 않은 것으로 판정될 때, 상기 업로드 파일의 내용을 사용하여 상기 서버 컴퓨터 상의 상기 서버 파일을 업데이트시키며,
상기 서버 컴퓨터 상의 상기 서버 파일이 변경된 것으로 판정될 때,
상기 업로드 파일, 베이스 파일(135), 및 상기 서버 컴퓨터 상의 상기 변경된 서버 파일의 3원 병합(three-way merge)을 수행하고,
상기 3원 병합의 결과를 사용하여 상기 서버 컴퓨터 상의 상기 서버 파일을 업데이트시키는 동작을 하는 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/965,144 US8239345B2 (en) | 2007-12-27 | 2007-12-27 | Asynchronous replication |
US11/965,144 | 2007-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100106400A true KR20100106400A (ko) | 2010-10-01 |
KR101574816B1 KR101574816B1 (ko) | 2015-12-04 |
Family
ID=40799845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107013483A KR101574816B1 (ko) | 2007-12-27 | 2008-11-26 | 비동기 복제 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8239345B2 (ko) |
EP (1) | EP2245546A4 (ko) |
JP (1) | JP2011508342A (ko) |
KR (1) | KR101574816B1 (ko) |
CN (1) | CN101911037B (ko) |
TW (1) | TWI447592B (ko) |
WO (1) | WO2009085519A1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8005991B2 (en) * | 2008-08-15 | 2011-08-23 | Dell Products, Lp | Virtual machine image management system and methods thereof |
US20100281073A1 (en) * | 2009-04-29 | 2010-11-04 | Cloutier Robert P | Sequence preserving method for transferring and sharing images |
US10540427B2 (en) * | 2009-12-31 | 2020-01-21 | International Business Machines Corporation | Automated file merging through content classification |
US10482638B2 (en) | 2011-11-11 | 2019-11-19 | Microsoft Technology Licensing, Llc | Collaborative commenting in a drawing tool |
US20130124956A1 (en) * | 2011-11-11 | 2013-05-16 | Microsoft Corporation | Coauthoring in a Drawing Tool |
CN102622284B (zh) * | 2012-02-21 | 2014-04-16 | 上海交通大学 | 面向海量存储系统的数据异步复制方法 |
US8830206B2 (en) | 2012-10-05 | 2014-09-09 | Dell Products, Lp | Systems and methods for locking image orientation |
US9244960B2 (en) * | 2013-03-15 | 2016-01-26 | International Business Machines Corporation | Metadata-driven version management service in pervasive environment |
US8935322B1 (en) * | 2014-07-16 | 2015-01-13 | Interactive Memories, Inc. | Methods and systems for improved uploading of media files for use in media-rich projects |
US11036712B2 (en) | 2016-01-12 | 2021-06-15 | Microsoft Technology Licensing, Llc. | Latency-reduced document change discovery |
US10740298B2 (en) * | 2016-10-12 | 2020-08-11 | Microsoft Technology Licensing, Llc | File synchronization with reduced conflicts in computing systems |
US10769356B2 (en) * | 2017-03-03 | 2020-09-08 | Adobe Inc. | Synchronizing review comments between source and shared documents |
CN109240607B (zh) * | 2018-08-21 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种文件读取方法和装置 |
CN112363872A (zh) * | 2020-11-25 | 2021-02-12 | 深圳潮数软件科技有限公司 | 一种小文件切片传输高效备份方法 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3173040B2 (ja) * | 1991-05-10 | 2001-06-04 | ミノルタ株式会社 | 画像データ処理装置 |
DE4497149T1 (de) * | 1993-09-24 | 1996-10-17 | Oracle Corp | Verfahren und Vorrichtung zum Replizieren von Daten |
US5684984A (en) * | 1994-09-29 | 1997-11-04 | Apple Computer, Inc. | Synchronization and replication of object databases |
CN1068688C (zh) * | 1994-10-05 | 2001-07-18 | 吴胜远 | 一种文字信息处理方法和装置 |
US6182121B1 (en) * | 1995-02-03 | 2001-01-30 | Enfish, Inc. | Method and apparatus for a physical storage architecture having an improved information storage and retrieval system for a shared file environment |
GB9604987D0 (en) * | 1996-03-08 | 1996-05-08 | Ibm | Data management system and method for replicated data |
US6167438A (en) * | 1997-05-22 | 2000-12-26 | Trustees Of Boston University | Method and system for distributed caching, prefetching and replication |
US7103794B2 (en) * | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
US6393437B1 (en) * | 1998-01-27 | 2002-05-21 | Microsoft Corporation | Web developer isolation techniques |
US6678882B1 (en) * | 1999-06-30 | 2004-01-13 | Qwest Communications International Inc. | Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse |
US6526417B1 (en) * | 2000-01-25 | 2003-02-25 | International Business Machines Corporation | System and method for change accumulation unmerged update reduction |
US6701316B1 (en) * | 2000-04-07 | 2004-03-02 | Nec Corporation | Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh |
US6721851B2 (en) * | 2001-08-07 | 2004-04-13 | Veritas Operating Corporation | System and method for preventing sector slipping in a storage area network |
US7024451B2 (en) * | 2001-11-05 | 2006-04-04 | Hewlett-Packard Development Company, L.P. | System and method for maintaining consistent independent server-side state among collaborating servers |
US7032033B1 (en) * | 2001-11-30 | 2006-04-18 | Microsoft Corporation | Handling collisions during synchronization of data between client and server computers |
US6986015B2 (en) * | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US7171469B2 (en) * | 2002-09-16 | 2007-01-30 | Network Appliance, Inc. | Apparatus and method for storing data in a proxy cache in a network |
US20040083489A1 (en) * | 2002-10-25 | 2004-04-29 | Atul Bansal | Program guide system |
US8010491B2 (en) * | 2003-02-28 | 2011-08-30 | Microsoft Corporation | Method for managing multiple file states for replicated files |
US7203708B2 (en) * | 2003-11-06 | 2007-04-10 | Microsoft Corporation | Optimizing file replication using binary comparisons |
US7650385B2 (en) * | 2003-11-20 | 2010-01-19 | International Business Machines Corporation | Assigning priorities |
US7624109B2 (en) * | 2004-02-27 | 2009-11-24 | Texas Memory Systems, Inc. | Distributed asynchronous ordered replication |
US7395258B2 (en) * | 2004-07-30 | 2008-07-01 | International Business Machines Corporation | System and method for adaptive database caching |
US7702947B2 (en) * | 2005-11-29 | 2010-04-20 | Bea Systems, Inc. | System and method for enabling site failover in an application server environment |
US7743039B2 (en) * | 2006-12-11 | 2010-06-22 | Simdesk Technologies, Inc. | File operations with multiple level file locking techniques |
-
2007
- 2007-12-27 US US11/965,144 patent/US8239345B2/en active Active
-
2008
- 2008-11-05 TW TW097142685A patent/TWI447592B/zh not_active IP Right Cessation
- 2008-11-26 WO PCT/US2008/084914 patent/WO2009085519A1/en active Application Filing
- 2008-11-26 JP JP2010540709A patent/JP2011508342A/ja not_active Withdrawn
- 2008-11-26 CN CN2008801232352A patent/CN101911037B/zh active Active
- 2008-11-26 EP EP08868506.0A patent/EP2245546A4/en not_active Ceased
- 2008-11-26 KR KR1020107013483A patent/KR101574816B1/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
CN101911037A (zh) | 2010-12-08 |
WO2009085519A1 (en) | 2009-07-09 |
CN101911037B (zh) | 2013-04-24 |
TW200928773A (en) | 2009-07-01 |
US8239345B2 (en) | 2012-08-07 |
JP2011508342A (ja) | 2011-03-10 |
EP2245546A4 (en) | 2015-02-18 |
TWI447592B (zh) | 2014-08-01 |
KR101574816B1 (ko) | 2015-12-04 |
EP2245546A1 (en) | 2010-11-03 |
US20090172041A1 (en) | 2009-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101574816B1 (ko) | 비동기 복제 | |
CN111566633B (zh) | 用于使内容项同步的提交协议 | |
JP5646686B2 (ja) | サーバ記憶モデルを利用したファイルパーティションの同期 | |
US7966426B2 (en) | Offline synchronization capability for client application | |
US20080243847A1 (en) | Separating central locking services from distributed data fulfillment services in a storage system | |
US8924344B2 (en) | User profile replication | |
JP2005339555A (ja) | Webサービス・アプリケーション・プロトコルおよびSOAP処理モデル | |
JP2014532948A (ja) | 安全性チェックおよびプレビューを伴うサーバーアップグレード | |
US8621205B2 (en) | Certificate remoting and recovery | |
US8700750B2 (en) | Web deployment functions and interfaces | |
JP5718953B2 (ja) | 情報処理装置およびキュー記憶方法 | |
JP2023547439A (ja) | 非同期動作のための意図トラッキング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
FPAY | Annual fee payment |
Payment date: 20191029 Year of fee payment: 5 |