KR20040077497A - 복제된 파일들을 위한 복수의 파일 상태 관리 방법 - Google Patents

복제된 파일들을 위한 복수의 파일 상태 관리 방법 Download PDF

Info

Publication number
KR20040077497A
KR20040077497A KR1020040012923A KR20040012923A KR20040077497A KR 20040077497 A KR20040077497 A KR 20040077497A KR 1020040012923 A KR1020040012923 A KR 1020040012923A KR 20040012923 A KR20040012923 A KR 20040012923A KR 20040077497 A KR20040077497 A KR 20040077497A
Authority
KR
South Korea
Prior art keywords
copy
local copy
computer
rollback
version
Prior art date
Application number
KR1020040012923A
Other languages
English (en)
Other versions
KR101076851B1 (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 KR20040077497A publication Critical patent/KR20040077497A/ko
Application granted granted Critical
Publication of KR101076851B1 publication Critical patent/KR101076851B1/ko

Links

Classifications

    • EFIXED CONSTRUCTIONS
    • E05LOCKS; KEYS; WINDOW OR DOOR FITTINGS; SAFES
    • E05BLOCKS; ACCESSORIES THEREFOR; HANDCUFFS
    • E05B65/00Locks or fastenings for special use
    • E05B65/0025Locks or fastenings for special use for glass wings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • EFIXED CONSTRUCTIONS
    • E05LOCKS; KEYS; WINDOW OR DOOR FITTINGS; SAFES
    • E05BLOCKS; ACCESSORIES THEREFOR; HANDCUFFS
    • E05B47/00Operating or controlling locks or other fastening devices by electric or magnetic means
    • EFIXED CONSTRUCTIONS
    • E05LOCKS; KEYS; WINDOW OR DOOR FITTINGS; SAFES
    • E05BLOCKS; ACCESSORIES THEREFOR; HANDCUFFS
    • E05B9/00Lock casings or latch-mechanism casings ; Fastening locks or fasteners or parts thereof to the wing
    • E05B9/08Fastening locks or fasteners or parts thereof, e.g. the casings of latch-bolt locks or cylinder locks to the wing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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)
  • Storage Device Security (AREA)

Abstract

복제된 파일의 사본 세 개를 저장하는 서버 파일 복제 기술이 구현된다. 이들 세 개의 파일은 개선된 충돌 해결책을 사용자에게 제공한다. 섀도우 파일(shadow file)은 서버 상에 있는 파일의 가장 마지막에 알려진 양호한 버전의 사본이다. 파일이 서버로부터 처음 복사되는 경우, 여분의 사본이 섀도우 파일로 만들어진다. 섀도우 파일은 로컬 머신(local machine)으로 옮겨져, 동기화 및 충돌 관리의 성능을 향상시킬 뿐만 아니라, 오프라인 작업을 가능하게 한다. 서버에 대한 접속이 존재하고 서버 사본이 섀도우 사본에 포함된 버전으로부터 변경되어 있는 임의의 시점에 서버 사본으로부터 섀도우 파일이 갱신된다. 이는 섀도우 파일이 갱신되는 유일한 시점이다. 로컬 사본은 사용자가 작업을 하는 사본이다. 사용자가 파일에 대하여 가한 어떤 변경 사항도 로컬 사본에 저장된다. 이러한 로컬 사본은 서버를 갱신하거나{사용자의 변경 사항이 서버로 푸시(push)될 필요가 있는 경우}, 또는 충돌을 식별(사용자의 버전과 서버 버전 모두가 변경된 경우)하는 데 이용된다. 롤백 파일(rollback file)이 또한 저장된다. 이 롤백 파일은 로컬 사본이 변경되는 경우(예컨대 충돌이 해결되거나 또는 서버 버전이 로컬 사본에 복사되는 경우)에 로컬 사본으로부터 만들어지는 사본이다. 이 사본은 사용자로 하여금 사용자가 보았던 가장 마지막에 알려진 사본으로 복귀할 수 있는 기능을 제공한다.

Description

복제된 파일들을 위한 복수의 파일 상태 관리 방법{A METHOD FOR MANAGING MULTIPLE FILE STATES FOR REPLICATED FILES}
본 발명은 문서 관리 분야에 관한 것으로서, 특히 서버로부터 복사된 파일의 이용 도중에 복수의 파일 상태를 관리하기 위한 방법 및 시스템에 관한 것이다.
네트워크로 연결된 컴퓨터 환경에 있어서, 컴퓨터 사용자가 네트워크 상의 다른 사용자와 함께 하나의 문서에 대하여 공동으로 작업을 하는 것은 일반적인 일이다. 이러한 네트워크는 근거리 통신망(Local Area Network; LAN), 원거리 통신망(Wide Area Network; WAN), 인터넷 등일 수 있다. 이러한 공동 작업에 있어서, 각 사용자는 일반적인 애플리케이션 소프트웨어 또는 공동 작업의 대상인 파일의 유형을 위해 특별히 설계된 소프트웨어 등과 같은 소프트웨어 애플리케이션을 이용하여 전자 파일을 생성 및 편집할 수 있다.
공동 작업은 파일에 대하여 공동 작업을 하게 될 모든 사용자가 액세스할 수 있는 위치에 있는 전자 파일의 마스터 버전(master version)을 유지함으로써 이루어질 수 있다. 종래의 네트워크로 연결된 컴퓨터 환경에서는, 하나의 서버 및 하나 또는 그 이상의 사용자 컴퓨터가 존재할 수 있다. 서버는 각각의 사용자 컴퓨터에 액세스할 수 있으므로, 서버는 사용자들이 공동 작업을 하는 파일의 마스터버전을 저장 및 제어할 수 있다.
전자 파일에 대하여 공동 작업을 하는 경우, 사용자는 서버 상의 파일에 액세스한다. 사용자는 애플리케이션이 제공할 수 있는 임의의 방식으로 상기 파일을 개변함으로써 그 파일에 대한 작업을 수행할 수 있다. 예컨대, 상기 애플리케이션이 워드프로세서(word processor), 스프레드시트(spreadsheet), 데이터베이스(database) 및/또는 그 밖의 것인 경우, 그 애플리케이션은 상기 파일에 대하여 추가(append), 편집(edit), 복사(copy) 및/또는 삭제(delete)와 같은 작업을 수행하기 위한 수단을 제공할 수 있다. 임의의 개변이 완료되면, 사용자가 그러한 개변 사항을 파일에 유지시키고자 하며 또 그에 필요한 허가가 있는 경우, 사용자는 서버 상에 저장된 버전의 파일에 대하여 변경 사항을 세이브(save)할 수 있다.
중앙에 저장된 파일이 공동 작업에 유용하지만, 서버에 대한 액세스를 필요로 한다는 단점이 있다. 사용자가 파일의 서버 사본(server copy)에 액세스하기 위해서는 서버에 접속해야 한다. 복제 엔진(replication engine)이 이러한 문제를 해결하는 데 이용된다. 이러한 엔진에 의해 사용자는 서버에 있는 파일의 로컬 사본(local copy)을 가질 수 있다. 이러한 로컬 사본으로 인해 사용자는 서버 사본에 액세스할 수 없는 경우에도 파일을 보거나 작업을 할 수 있다. 복제 엔진은 서버 상태의 파일을 사용자의 로컬 머신(local machine)으로 복제하는 것을 관리함으로써, 사용자가 오프라인(offline) 액세스를 할 수 있게 해 주는 한편, 서버 사본과 로컬 사본 사이에 일관성을 유지해 준다.
그러나 이러한 해결책은 단점을 갖고 있으며, 그러한 일관성을 기존의 복제 엔진을 이용하여 유지하는 것은 곤란하거나 또는 불가능하다. 서버 컴퓨터 상의 파일의 버전은 사용자가 접속해 있지 않은 동안에 변경될 수 있다. 예컨대 서버 상의 파일의 버전은 버전 A일 수 있다. 복제 엔진에 의해 이러한 버전 A가 사용자의 컴퓨터로 복사된다. 사용자가 "오프라인"(서버에 접속하지 않음)인 경우, 사용자가 파일을 편집하여 버전 B가 생성된다. 그러는 동안, 제2의 사용자가 파일의 서버 사본을 편집하여 버전 C가 생성된다. 사용자가 서버에 재접속하는 경우, 사용자는 사용자의 현재 버전(B)과 서버 버전(C)에 대한 액세스를 갖게 된다. 현재의 복제 엔진은 서버 버전 상에 사용자의 버전을 복사하거나(이 경우 제2 사용자의 변경 사항은 손실됨), 또는 사용자 버전 상에 서버 버전을 복사하는 기능만을 제공한다. 사용자는 버전 A로부터의 변경 사항에 관한 정보를 알지 못한다. 사용자가 버전 C를 세이브하고 변경 사항을 포기함으로써 동기화(synchronize)하는 경우, 사용자는 버전 B를 더 이상 액세스하지 못하게 된다.
이러한 단점으로 인해, 서버로부터 복제된 파일을 관리하는 개선된 방식이 필요하다.
도 1은 본 발명의 실시 태양이 구현될 수 있는 컴퓨팅 환경의 예를 나타내는 블록도.
도 2는 서버 컴퓨터, 네트워크, 사용자 컴퓨터 및 그 밖의 컴퓨터 사이의 관계를 예시하는 기능도.
도 3은 본 발명의 일 실시예에 따른 상태 전이를 나타내는 상태도.
도 4는 본 발명의 일 실시예에 따른 파일 복제를 나타내는 흐름도.
도 5는 본 발명의 일 실시예에 따른 파일 복제를 나타내는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
200: 서버 컴퓨터
210: 서버 사본(server copy)
215: 네트워크
220: 사용자 컴퓨터
230: 파일 복제 관리자
232: 로컬 사본(local copy)
234: 섀도우 사본(shadow copy)
238: 롤백 사본(rollback copy)
240: 애플리케이션
270: 다른 사용자의 컴퓨터
복제된 파일의 사본 세 개를 저장하는 서버 파일 복제 기술이 구현된다. 이들 세 개의 파일은 개선된 충돌(conflict) 해결책을 사용자에게 제공한다.
섀도우 파일(shadow file)은 서버 상에 있는 파일의 가장 마지막에 알려진양호한 버전의 사본이다. 파일이 서버로부터 처음 복사되는 경우, 여분의 사본이 섀도우 파일로 만들어진다. 섀도우 파일은 로컬 머신으로 옮겨져, 동기화 및 충돌 관리의 성능을 향상시킬 뿐만 아니라, 오프라인 작업을 가능하게 한다. 서버에 대한 접속이 존재하고 서버 사본이 섀도우 사본에 포함된 버전으로부터 변경되어 있는 임의의 시점에 서버 사본으로부터 섀도우 파일이 갱신(update)된다. 이는 섀도우 파일이 갱신되는 유일한 시점이다.
로컬 사본은 사용자가 작업을 하는 사본이다. 사용자가 파일에 대하여 가한 어떤 변경 사항도 로컬 사본에 저장된다. 이러한 로컬 사본은 서버를 갱신하거나{사용자의 변경 사항이 서버로 푸시(push)될 필요가 있는 경우}, 또는 충돌을 식별(사용자의 버전과 서버 버전 모두가 변경된 경우)하는 데 이용된다.
롤백 파일(rollback file)이 또한 저장된다. 이 롤백 파일은 로컬 사본이 변경되는 경우(예컨대 충돌이 해결되거나 또는 서버 버전이 로컬 사본으로 복사되는 경우)에 로컬 사본으로부터 만들어지는 사본이다. 이 사본은 사용자로 하여금 사용자가 보았던 가장 마지막에 알려진 사본으로 복귀할 수 있는 기능을 제공한다.
상기한 사항 및 이하의 바람직한 실시예에 관한 상세한 설명을 첨부된 도면과 함께 읽음으로써 본 발명을 더욱 잘 이해하게 될 것이다. 발명을 설명하기 위한 목적으로 본 발명의 실시예들을 도면에 도시하였지만, 본 발명은 개시된 특정한 방법 또는 수단에 한정되는 것은 아니다.
개요
복제본이 사용중인 동안 서버 상의 파일 각각에 대한 세 개의 사본을 저장하는 서버 파일 복제 기술이 구현된다. 로컬 파일은 파일의 사용자 작업 사본을 저장한다. 섀도우 파일은 서버 파일의 가장 마지막에 알려진 양호한 버전(서버 상의 파일의 버전)의 사본을 저장한다. 롤백 파일은 충돌 해소 전 또는 복제본에 의한 갱신 전의 가장 마지막 로컬 사본의 사본을 저장한다.
파일이 서버로부터 로컬 사본으로서 처음 복사되는 경우, 여분의 사본이 섀도우 파일로 만들어진다. 이는 동기화 성능을 향상시키고 충돌 관리를 구현하기 위한 것이다.
사용자의 컴퓨터가 서버에 접속된 경우 복제가 일어난다. 섀도우 파일은 서버 버전과 비교된다. 이들이 동일하면, 지난 번 동기화 이래로 파일의 서버 버전에 대한 갱신이 없었다는 의미이다. 이들이 동일하지 않으면, 서버 버전이 섀도우 버전으로 복사된다. 로컬 버전은 롤백으로 세이브되고, 섀도우 버전은 로컬 버전으로 세이브된다.
버전 상태(versioning state)는 로컬 및 서버 파일들에 대하여 가해진 변경 사항들의 상태를 추적한다. 버전 상태 및 충돌 관리 옵션(option)에 관한 정보가 사용자에게 제공된다.
컴퓨팅 장치의 예
도 1 및 이하의 설명은 본 발명이 구현될 수 있는 적합한 컴퓨팅 환경의 간략하고 전반적인 설명을 제공하기 위한 것이다. 그러나 앞서 설명한 바처럼, 본 발명과 관련하여 핸드헬드(handheld), 이동형(portable) 및 그 밖의 모든 종류의 컴퓨팅 장치 및 컴퓨팅 객체가 이용될 수 있음을 이해해야 할 것이다. 따라서, 범용(general purpose) 컴퓨터를 이하 설명할 것이지만, 이는 한 가지 예일 뿐이며, 본 발명은 예컨대 네트워크/버스 상호 운용성(interoperability) 및 상호 작용성(interaction)을 갖는 씬 클라이언트(thin client)와 같은 그 밖의 컴퓨팅 장치로도 구현될 수 있다. 따라서 본 발명은 클라이언트 자원이 거의 없거나 최소한도로 포함된 네트워크형 호스트 서비스(networked hosted services) 환경, 예컨대 클라이언트 장치(예컨대 응용 기기나 그 밖의 컴퓨팅 장치 및 객체에 배치된 객체)가 단지 네트워크/버스에 대한 인터페이스로서의 역할을 하는 네트워크형 환경(networked environment)에서 구현될 수 있다. 본질적으로, 데이터가 저장되거나 검색(retrieve)될 수 있는 어떤 장소도 본 발명에 따른 동작을 위한 바람직한, 또는 적합한 환경이다.
비록 필수적이진 않지만, 본 발명은 장치 또는 객체를 위한 서비스의 개발자가 사용하기 위한, 그리고/또는 본 발명에 따라 동작하는 애플리케이션 소프트웨어 내에 포함되어 있는 운영 체제(operating system)를 통해 구현될 수 있다. 소프트웨어는 클라이언트 워크스테이션(workstation), 서버, 또는 그 밖의 장치와 같은 하나 또는 그 이상의 컴퓨터에 의해 실행되는 프로그램 모듈과 같은, 컴퓨터로 실행 가능한 명령어의 일반적인 문맥(context)으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특별한 작업을 실행하거나 또는 특별한 추상적 데이터 유형을 구현하는 루틴(routine), 프로그램, 객체, 구성요소(component) 및 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 바에 따라 결합 또는 분산될 수 있다. 또한, 본 기술 분야의 당업자는 본 발명이 다른컴퓨터 구성으로도 실시될 수 있음을 알 것이다. 본 발명과 함께 사용되기에 적합할 수 있는 그 밖의 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성에는 개인용 컴퓨터(PC), 자동 출납기(automated teller machines), 서버 컴퓨터, 핸드헬드 또는 랩톱(laptop) 장치, 다중 프로세서 시스템, 마이크로프로세서 기반의 시스템, 프로그램 가능한 소비자 전자 제품, 네트워크 PC, 응용 기기, 조명 기구, 환경 제어 요소(environmental control elements), 미니컴퓨터, 메인프레임(mainframe) 컴퓨터 등이 포함될 수 있지만, 이에 한정되는 것은 아니다. 본 발명은 또한 분산형 컴퓨팅 환경에서도 실시될 수 있는데, 여기서는 통신 네트워크/버스 또는 그 밖의 데이터 전송 매체를 통해 연결된 원격 처리 장치에 의해 작업이 수행된다. 분산형 컴퓨팅 환경에서는, 프로그램 모듈이 메모리 저장 장치를 포함하는 국지 및 원격 컴퓨터 저장 매체에 모두 위치할 수 있으며, 클라이언트 노드는 다시 서버 노드로서 동작할 수 있다.
따라서 도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 나타낸 것이며, 비록 앞에서 분명히 밝힌 바 있지만, 이러한 컴퓨팅 시스템(100)은 적합한 컴퓨팅 환경의 예일 뿐이며 본 발명의 용도나 기능의 범위를 한정하고자 하는 것이 아니다. 컴퓨팅 환경(100)은 예로 든 동작 환경(100)에 도시된 구성요소 중 하나 또는 그 조합과 관련된 의존 관계 또는 요구 조건을 갖는 것으로 해석되어야 할 것이다.
도 1을 참조하자면, 본 발명의 구현을 위한 시스템의 예에는 컴퓨터 시스템(110)의 형태를 갖는 범용 컴퓨팅 장치가 포함된다. 컴퓨터 시스템(110)의구성요소에는 처리 유닛(120) 및 시스템 메모리(130)가 포함되며, 시스템 메모리를 포함한 여러 시스템 구성요소를 처리 유닛(120)에 연결시켜 주는 시스템 버스(121)도 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중 임의의 것을 이용하는 메모리 버스 또는 메모리 제어기, 주변 장치 버스(peripheral bus) 및 로컬 버스(local bus)를 포함하는 몇몇 버스 구조 유형 중 임의의 것일 수 있다. 예컨대, 이러한 아키텍처에는 ISA(Industrial Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스{메자닌(Mezzanine) 버스라고도 알려짐}가 포함되지만, 이에 한정되는 것은 아니다.
컴퓨터 시스템(110)은 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터 시스템(110)이 액세스할 수 있는 임의의 가용 매체일 수 있으며, 여기에는 휘발성(volatile) 및 비휘발성(non-volatile) 매체, 이동형(removable) 및 고정형(non-removable) 매체가 포함된다. 예컨대, 컴퓨터 판독 매체에는 컴퓨터 저장 매체 및 통신 매체가 포함될 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 그 밖의 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동형 및 고정형 매체를 포함한다. 컴퓨터 저장 매체에는 RAM(Random Access Memory), ROM(Read Only Memory), EEPROM(Electrically Erasable Programmable Read Only Memory), 플래시메모리(flash memory) 또는 그 밖의 메모리 기술에 의한 것, CD-ROM(Compact Disk Read Only Memory), DVD(Digital Versatile Disk), 또는 그 밖의 광학 디스크 저장 매체, 자기 카세트, 자기 테이프, 자기 디스크 저장 매체 또는 그 밖의 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터 시스템(110)이 액세스할 수 있는 그 밖의 임의의 매체가 포함되지만, 이에 한정되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 그 밖의 데이터를 반송파나 그 밖의 전송 메커니즘과 같은 변조된 데이터 신호(modulated data signal) 내에 수록한 것이며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하기 위한 방식으로 설정 또는 변경된 하나 또는 그 이상의 특성을 갖는 신호를 의미한다. 예컨대, 통신 매체는 유선 네트워크(wired network) 또는 직접 유선 접속(direct-wired connection)과 같은 유선 매체 및 음향, RF, 적외선 또는 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되는 것은 아니다. 또한 앞서 언급한 것 중 어떤 것들의 조합도 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 할 것이다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동(start-up) 도중과 같은 경우에 컴퓨터 시스템(110) 내의 요소간의 정보 전송을 돕는 기본적인 루틴을 포함하는 기본 입/출력 시스템(BIOS; Basic Input/Output System)(133)은 통상적으로 ROM(131)에 저장된다. RAM(132)는 처리 유닛(120)이 즉시 액세스할 수 있고/있거나 바로 처리할 수 있는 데이터 및/또는 프로그램 모듈을 통상적으로 포함한다.예컨대 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만, 이에 한정되는 것은 아니다.
컴퓨터 시스템(110)은 또한 그 밖의 이동형/고정형 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예컨대, 도 1은 고정형, 비휘발성 자기 매체로부터 판독하거나 그것에 기록하는 하드 디스크 드라이브(141), 이동형, 비휘발성 자기 디스크(152)로부터 판독하거나 그것에 기록하는 자기 디스크 드라이브(151) 및 이동형, 비휘발성 광학 디스크(156)(예컨대 CD-ROM이나 기타 광학 매체)로부터 판독하거나 그것에 기록하는 광학 디스크 드라이브(155)를 도시하고 있지만, 이에 한정되는 것은 아니다. 예시한 동작 환경에서 사용될 수 있는 그 밖의 이동형/고정형 휘발성/비휘발성 컴퓨터 저장 매체에는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 솔리드 스테이트(solid state) RAM, 고체 ROM 등이 포함되지만, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 고정형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되며, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동형 메모리 인터페이스를 통해 시스템 버스(121)에 접속된다.
앞서 설명하고 도 1에 도시한 드라이브 및 이들의 관련 컴퓨터 저장 매체는 컴퓨터 시스템(110)을 위한 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 그 밖의 데이터의 저장을 가능하게 한다. 도 1에서, 예컨대 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 이들 구성요소는 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일하거나 또는 상이할 수 있음에 유의하자. 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에는 상이한 번호들이 부여되어 있는 바, 이는 이들이 최소한 상이한 사본임을 도시하기 위함이다. 사용자는 키보드(162) 및 포인팅 장치(161; 통상적으로 마우스, 트랙볼, 또는 터치패드 등으로 일컬어짐)와 같은 입력 장치를 통해 컴퓨터 시스템(110)에 명령 및 정보를 입력할 수 있다. 그 밖의 입력 장치(도시하지 않음)에는 마이크, 조이스틱, 게임 패드, 위성 접시 안테나, 스캐너 등이 포함될 수 있다. 상기한, 그리고 그 밖의 입력 장치들은 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 종종 접속되지만, 병렬 포트(parallel port), 게임 포트(game port), 또는 USB(Universal Serial Bus)와 같은 그 밖의 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 노스브리지(Northbridge)와 같은 그래픽 인터페이스(182)도 또한 시스템 버스(121)에 접속될 수 있다. 노스브리지는 CPU 또는 호스트 처리 유닛(host processing unit)(120)과 통신하는 칩셋이며, AGP(Accelerated Graphic Port) 통신을 책임진다. 하나 또는 그 이상의 그래픽 처리 유닛(GPU)(184)은 그래픽 인터페이스(182)와 통신할 수 있다. 이 점에 있어서, GPU(184)는 일반적으로 레지스터(register storage)와 같은 온칩 메모리 저장소(on-chip memory storage)를 포함하며,GPU(184)는 비디오 메모리(186)와 통신한다. 그러나 GPU(184)는 보조 처리기(coprocessor)의 한 가지 예일 뿐이며, 다양한 보조 처리 장치(coprocessing device)들이 컴퓨터 시스템(110)에 포함될 수 있다. 모니터(191) 또는 그 밖의 유형의 디스플레이 장치가 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속되며, 이 인터페이스는 비디오 메모리(186)와 통신할 수 있다. 모니터(191)에 부가하여, 컴퓨터 시스템은 또한 스피커(197) 및 프린터(196)와 같은 그 밖의 주변 출력 장치(peripheral output device)들을 포함할 수 있으며, 이들은 출력 주변 인터페이스(output peripheral interface)(195)를 통해 접속될 수 있다.
컴퓨터 시스템(110)은 원격 컴퓨터(180)와 같은 하나 또는 그 이상의 원격 컴퓨터에 대한 논리적 접속을 이용하는 네트워크형(networked) 또는 분산형(distributed) 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터(router), 네트워크 PC, 피어 장치(peer device) 또는 그 밖의 일반적인 네트워크 노드일 수 있으며, 컴퓨터 시스템(110)과 관련하여 앞서 설명한 요소 중 다수 또는 전부를 통상적으로 포함하지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 접속에는 LAN(171) 및 WAN(173)이 포함되지만, 그 밖의 네트워크/버스들이 또한 포함될 수 있다. 이러한 네트워킹 환경은 통상적으로 가정, 사무실, 기업 차원의(enterprise-wide) 컴퓨터 네트워크, 인트라넷 및 인터넷이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터 시스템(110)은 네트워크 인터페이스 또는 어댑터(adapter)(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터 시스템(110)은 통상적으로 인터넷과 같은 WAN(173) 상에서의 통신을 성립시키기 위한 모뎀(172) 또는 그 밖의 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 그 밖의 적합한 메커니즘을 통하여 시스템 버스(121)에 접속될 수 있다. 네트워크형 환경에서, 컴퓨터 시스템(110)과 관련하여 도시된 프로그램 모듈들, 또는 이들의 일부는 원격 메모리 저장 장치에 저장될 수 있다. 예컨대 도 1에는 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 존재하는 것으로 도시되어 있으나, 이에 한정되는 것은 아니다. 도시된 네트워크 접속은 예를 들기 위한 것이며, 컴퓨터간의 통신 링크를 성립시키는 그 밖의 수단이 사용될 수 있음을 이해하여야 할 것이다.
다양한 분산형 컴퓨팅 프레임워크(framework)들이 개인 컴퓨팅 및 인터넷의 수렴(convergence)의 관점에서 개발되었고 또 개발중이다. 개인 및 기업 사용자에게는 애플리케이션 및 컴퓨팅 장치에 대하여 이음새 없는(seamless) 상호 동작을 할 수 있고 웹이 가능한 인터페이스가 마찬가지로 제공되며, 이에 의해 컴퓨팅 활동이 더욱 웹 브라우저(Web browser) 또는 네트워크 지향적으로 된다.
예컨대 MICROSOFT(R)의 .NET 플랫폼은 서버, 웹 기반의 데이터 저장소(data storage)와 같은 블록 구축 서비스(building-block service) 및 다운로드 가능한 장치 소프트웨어를 포함한다. 본 명세서에서는 컴퓨터 장치 내에 존재하는 소프트웨어와 관련하여 실시예를 설명하고 있지만, 본 발명의 하나 또는 그 이상의 부분은 또한 운영 체제나 애플리케이션 프로그래밍 인터페이스(API)를 통해, 또는 보조처리기, 디스플레이 장치 및 요청 객체(requesting object) 중 임의의 것 사이의 "매개자(middle man)" 객체를 통해 구현될 수 있으며, 이에 의해 본 발명에 따른 동작이 모든 .NET 언어 및 서비스에 의해 실행되거나, 지원되거나, 또는 이를 통해 액세스될 수 있으며, 이는 그 밖의 분산형 컴퓨팅 프레임워크에서도 또한 가능하다.
복제된 파일들을 위한 복수의 파일 상태 관리
복제(Replication)
도 2를 참조하자면, 서버 컴퓨터(200)는 네트워크(215)를 통해 사용자 컴퓨터(220)에 접속되어 있다. 서버가 요청을 수신하면, 서버는 사용자 컴퓨터(220)가 파일을 열 수 있게 해 준다. 파일 복제에 의해 사용자 컴퓨터(220)는 다른 사용자 컴퓨터(270) 상의 사용자와 함께 서버 파일의 로컬 버전에 대하여 작업할 수 있게 된다. 파일의 인증된 버전(authoritative version)이 서버 사본(210)으로서 서버 컴퓨터(200) 상에 저장된다. 파일 복제 관리자(230)는 사용자 컴퓨터(220) 내에 상기 파일의 사본 3개를 생성한다. 이들은 로컬 사본(23), 섀도우 사본(234) 및 롤백 사본(238)이다.
로컬 사본(232)은 애플리케이션(240)에 의해 사용자 컴퓨터(220) 상에서 열린다. 일 실시예에서, 사용자 컴퓨터(220) 상에 있는 사용자의 이름 공간(namespace) 내에는 로컬 사본(232)의 사본이 존재한다. 이 실시예에서, 로컬 사본(232)은 이름 공간 사본의 변경 사항을 추적하고, 이름 공간 사본은 애플리케이션(240)에 의해 이용된다.
이름 공간 사본이 이용되는 경우, 이름 공간 사본은 파일 복제 관리자(230)에 의해 관리되지 않는다. 이 실시예에서, 이름 공간 파일은 사용자가 일반적으로 액세스하는 파일이다. 이러한 파일은 사용자가 생성한 파일이거나 또는 이메일을 통해 수신한 파일일 수 있다. 파일을 이메일을 통해 수신한 경우, 사용자는 "상시 실시간 첨부물(always live attachment)(서버 정보 포함)"을 수신하고, 사본을 자신의 로컬 컴퓨터에 세이브한다. 이러한 파일을 세이브하는 동작은 사본이 두 개 있음을 의미하는 바, 즉 하나는 메일 저장소에, 다른 하나는 로컬 머신에 있음을 의미한다. 첨부물 내의 서버 정보는 파일의 복제 및 로컬 사본(232), 섀도우 사본(234) 및 롤백 사본(238)의 생성을 고려한 것이다. 이름 공간 사본은 그것을 사용자가 사용하는 경우에 복제 관리자(220)에 의해 로컬 사본(232)과 동기화된다.
섀도우 사본(234)은 사용자 컴퓨터(220)에 대하여 마지막으로 알려진 서버 사본(210)의 버전을 유지한다. 사용자 컴퓨터(220)가 서버 컴퓨터(200)에 연결되어 있는 경우, 섀도우 사본(234)은 서버 사본(210)과 동일하다.
롤백 사본(238)은 사용자가 보았거나 수정한 마지막으로 알려진 사본을 저장한다. 로컬 사본(232)이 복제 프로세스에서 덮어쓰기(overwrite)가 되었지만 사용자가 이전의 상태로 복귀하고자 하는 경우, 롤백 카피(238)는 사용자가 읽거나 편집한 최후의 사본을 제공하는 데 사용된다.
파일 복제 관리자(230)는 도시한 바처럼 애플리케이션(240)과 분리되어 있거나, 또는 그것에 통합될 수도 있다. 어느 경우든지, 사용자에 대한 파일 복제 관리자로부터의 메시지 및 정보와, 사용자 입력을 수집하고 사용자에 대한 메시지를디스플레이하는 사용자 인터페이스는 사용자 애플리케이션(240)에 제공되는 디스플레이 내로 통합될 수 있다. 파일의 두 버전 사이에 생긴 변경 사항에 관하여 사용자에게 제공되는 정보(이하 설명할 것임)는 애플리케이션(240)의 디스플레이를 이용하여 제공될 수도 있다. 또한 사용자에 대한 디스플레이를 위한 이러한 정보의 생성은 애플리케이션(240)의 기능을 이용하여 이루어 질 수도 있다.
버전 상태(Versioning States)
본 발명의 일 실시예에 따른 파일 복제 기술의 동작은 버전 상태를 참조함으로써 이해될 수 있다. 복제된 문서 각각에 대하여, 버전 상태는 사용자 컴퓨터(220)에서 그 문서에 대하여 무슨 일이 일어나고 있는지를 설명해 준다. 이러한 버전 상태는 이전의 버전 상태 및 로컬 사본(232), 섀도우 사본(234) 및 서버 사본(210)(문서의 마스터 사본)에 대하여 이루어진 동작에 기초한다.
제1 상태는 "최신(current)"이다. 로컬 사본(232)이 섀도우 사본(234)과 동일할 경우, 버전 상태는 최신이다. 예컨대, 사용자 컴퓨터(220) 상에 세이브된 파일이 공동 작업을 위해 서버 컴퓨터(200)에 업로드되는 경우, 로컬 사본(232)은 섀도우 사본(234)과 동일하다. 마찬가지로, 서버 컴퓨터(200) 상의 파일이 사용자 컴퓨터(220)로 먼저 복제된 경우, 로컬 사본은 섀도우 사본(234)과 동일하다. 도 3의 상태도(state diagram)에 도시된 바와 같이, 로컬 사본(232)에 대하여 변경이 가해져 더 이상 섀도우 사본(234)과 동일하지 않게 되는 경우, 상태는 "최신" 상태(300)로부터 "수정(modified)" 상태(310)로 전이한다. 이러한 수정 사항이 서버로 푸시업(push up)되거나 포기되어 로컬 사본(232)이 다시 섀도우 사본(234)과동일하게 되는 경우, 상태는 "최신" 상태(300)로 복귀한다.
사용자 컴퓨터(220)가 서버 컴퓨터(200)에 접속되고, 서버 사본(210)이 갱신되었음을 알게된 경우, 새로운 서버 사본(210)의 사본이 섀도우 사본(234)으로 만들어진다. 로컬 사본(232)은 롤백 사본(238)으로서 세이브되고, 이어서 섀도우 사본(234)은 로컬 사본(232)으로 복사된다. 일 실시예에서, 사용자가 본 최후의 사본이 추적된다. 따라서 사용자가 버전 A를 보았고, 버전 B가 서버로부터 다운로드된 경우, 롤백은 버전 A의 사본이 될 것이다. 그러나 이제 버전 C가 서버로부터 다운로드되는 경우, 롤백은 사용자가 버전 B를 액세스하지 않는 한 버전 B로 변경되지 않을 것이다. 따라서 롤백은 사용자가 본 최후의 버전을 유지하게 된다.
도 3에 도시된 바처럼, 서버 파일 변경 사항이 섀도우 파일로 다운로드되고 롤백 사본이 저장되며 상태가 "최신" 상태(300)인 경우, 새로운 상태는 "롤백 가능(rollback available)"(320)으로 될 것이다. 그러나 이것이 "수정" 상태(310)에서 일어나는 경우, 서버 사본의 이전 버전에 대한 국지적인 변경 사항{이는 로컬 사본(232)에 세이브됨} 및 그 밖의 소정의 변경 사항{다른 사용자에 의한 것으로서, 서버 사본(210)의 새로운 버전을 생성시킴} 모두가 존재하게 된다. 이는 "충돌(conflicted)" 상태(330)를 야기한다.
"충돌" 상태(330)가 발생하는 경우, 서로 불일치할 가능성이 있는, 로컬 사본(232) 및 섀도우 사본(234) 내의 일단의 변경 사항들간의 해결책이 있어야 한다. 예컨대, 사용자는 로컬 사본(232)에 대하여 가해진 변경 사항을 포기하는 것 또는 그러한 변경 사항을 덮어쓰는 것을 선택할 수 있다. 이러한 해결책에 의해 얻어지는 파일은 로컬 사본(232)으로서 저장되고, 상태는 "수정"으로 복귀한다. 앞서 살펴본 바처럼, 로컬 사본(232)의 변경 사항이 서버로 푸시업되거나 또는 현재 서버 사본을 유지하도록 포기되는 경우, 상태는 "최신"으로 변경된다.
변경 사항의 서버로의 업로드(Uploading Changes to the Server)
버전 상태 각각에 있어, 사용자는 동기화 옵션(synchronization option)들을 이용할 수 있다. 이들 옵션은 파일 복제 관리자(230)와는 별개로 이용 가능하거나, 또는 애플리케이션(240) 내에 통합될 수 있다. 변경 사항이 생기면, 변경 사항을 서버 사본(210)으로 업로드(또는 "푸시")하는 것이 한 가지 옵션이다. 이러한 동기화 옵션은 사용자로 하여금 서버 컴퓨터(200)에 접속하여(접속 가능한 경우) 로컬 사본(232)을 서버 사본(210)과 동기화시킬 수 있도록 해 준다.
버전 상태가 최신(300)이거나 롤백 가능(320)인 경우, 수정 사항이 없었으며, 따라서 서버로 푸시되는 파일이 존재하지 않는다. 버전 상태가 수정 상태(310)인 경우, 로컬 사본(232) 및 섀도우 사본(234)간의 차이가 판정된다. 이러한 프로세스는 두 파일의 "차이 생성(generating a diff)"으로 알려져 있다. 버전 상태가 수정 상태(310)인 경우, 섀도우 사본(234)은 서버 사본(210)과 동일하며, 그렇지 않으면 버전 상태는 충돌 상태(330)이다. 따라서 전체 파일이 서버에 업로드될 필요가 없으며, 모든 필요한 정보는 로컬 사본(232)과 섀도우 사본(234)간의 차이에 관한 모든 정보를 포함하는 파일 내에 있게 된다. 서버 컴퓨터(200)는 이러한 차이 파일(diff file)을 이용하여 서버 사본(210)을 갱신한다. 일단 서버 사본(210)이 갱신되면, 이는 섀도우 사본(234)으로 복제되어야 하고, 버전 상태는 그에 맞게 변경되어야 한다.
차이 파일의 생성은 오프라인으로 이루어질 수 있다. 사용자 컴퓨터(220)가 서버 컴퓨터(200)에 도달할 수 없는 시점에서 사용자가 동기화 요청을 결정할 수도 있다. 이러한 일이 발생하면, 차이 파일을 생성하고 동작을 대기열(queue)에 둠으로써, 다음 번에 서버 컴퓨터(200)에 액세스할 수 있는 경우에 업로드 프로세스가 계속되도록 할 수 있다.
버전 상태가 충돌 상태(330)인 경우, 충돌 사용자 인터페이스가 시작되어야 한다. 이 충돌 사용자 인터페이스는 사용자로 하여금 로컬 사본(232)과 섀도우 사본(234) 사이의 차이를 해소할 수 있도록 해 주어야 하며, 이는 예컨대 로컬 사본(232)을 사용자 컴퓨터(220) 상의 다른 장소에 세이브하고 섀도우 사본(234)을 새로운 로컬 사본(232)으로서 복사함으로써 이루어질 수 있다. 이러한 사용자 인터페이스는 또한 앞서 나열한 관련 애플리케이션에서 기술된 바처럼 더욱 복잡한 인터페이스일 수 있다.
일 실시예에서, 파일이 최신 상태(300) 또는 롤백 가능 상태(320)인 경우에 국지적인 변경이 일어나지 않았음을 확인하고, 또한 차이 파일의 업로드가 성공적이었는지를 확인하는 체크가 이루어진다. 이들 체크가 실패하는 경우, 수정 상태(310) 또는 충돌 상태(330)로 되어야 한다.
롤백 버전(Rollback Version)
사용자가 이용할 수 있는 또 다른 옵션은 버전 상태가 롤백 가능(320) 또는 수정(310)인 경우이다. 사용자로 하여금 그들이 이전에 보았거나 편집한 문서의버전{롤백 사본(238)에 저장되어 있음}으로 롤백할 수 있도록 해 주는 사용자 인터페이스가 사용자에게 제공된다.
일 실시예에서, 문서가 다른 사용자에 의해 갱신되었음을 나타내는 사용자 인터페이스가 사용자에게 디스플레이된다. 이 사용자 인터페이스는 사용자로 하여금 롤백 사본(238)에 저장되어 있는 이전 버전을 선택하거나, 또는 롤백 사본(238)에 저장되어 있는 이전 버전과 로컬 사본(232)에 저장되어 있는 현재 버전 사이의 차이점을 살펴보는 것을 가능하게 한다.
롤백 사본은 본 발명의 일부 실시예에만 존재한다. 도 4에 나타낸 바처럼, 서버 파일의 파일 복제는 로컬 사본이 저장되고(단계 400) 섀도우 사본이 저장되는 경우(단계 410)에 따라 사용자 컴퓨터 상에서 이루어진다. 로컬 사본에 대한 수정을 위한 액세스가 허가된다(단계 420). 일부 실시예에서, 이는 로컬 사본의 이름 공간 사본을 통해 이루어진다. 사용자 컴퓨터가 서버 컴퓨터에 접속되어 있고 마스터 파일이 변경되는 경우, 섀도우 사본이 갱신된다(단계 430). 일 실시예에서, 버전 상태는 복제에 대하여 추적된다.
도 5에 도시한 바처럼 롤백 사본이 보관되는 경우, 마찬가지로 서버 파일의 파일 복제는 로컬 사본이 저장되고(단계 500) 섀도우 사본이 저장되는 경우(단계 510)에 따라 사용자 컴퓨터 상에서 이루어진다. 로컬 사본에 대한 수정을 위한 액세스가 허가된다(단계 520). 사용자 컴퓨터가 서버 컴퓨터에 접속되어 있고 마스터 파일이 변경되는 경우, 섀도우 사본이 갱신된다(단계 530). 이 단계에서, 섀도우 사본이 갱신되면 필요한 경우 롤백 사본이 또한 갱신된다. 우선, 로컬 사본이롤백 사본으로서 저장되고, 이어서 섀도우 사본으로 로컬 사본이 갱신된다. 일 실시예에서, 이는 로컬 사본이 이전의 롤백 이후에 액세스되었던 경우에만 이루어진다.
파일 복제 관리자(220)는 분리된 애플리케이션이거나, 또는 파일 복제시에 사용되는 애플리케이션 내에 전체적 또는 부분적으로 통합될 수 있다.
결론
앞서 언급한 바처럼, 본 발명의 실시예를 다양한 컴퓨팅 장치 및 네트워크 아키텍처와 관련하여 설명하였지만, 그 근간에 있는 개념은 서버를 통한 공동 작업을 구현하는 데 있어 바람직한 임의의 컴퓨팅 장치 또는 시스템에 대하여 적용될 수 있다. 따라서 본 발명의 방법 및 시스템은 다양한 애플리케이션 및 장치에 응용될 수 있다. 본 명세서에서 예로 든 프로그래밍 언어, 명칭 및 실시예를 다양한 선택 사항의 대표격으로서 선택하였지만, 이들은 본 발명을 한정하기 위한 것이 아니다. 본 기술 분야의 통상의 지식을 가진 자는 본 발명에 의해 구현되는 시스템 및 방법과 동일, 유사, 또는 균등한 것을 구현하도록 해 주는 객체 코드를 제공하는 다수의 방식이 존재함을 알게 될 것이다.
본 명세서에서 설명한 다양한 기술은 하드웨어, 소프트웨어, 또는 적합한 경우 이들의 조합과 관련하여 구현될 수 있다. 따라서 본 발명의 방법 및 장치, 또는 이들의 소정의 태양 또는 부분은, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 그 밖의 머신 판독 가능 저장 매체와 같은 유형의 매체에 수록된 프로그램 코드의 형태를 취할 수 있으며, 이 경우 프로그램 코드는 컴퓨터와 같은 머신에 적재되어그것에 의해 실행되면, 그 머신은 본 발명을 실시하기 위한 장치가 된다. 프로그램 가능한 컴퓨터 상에서 프로그램 코드를 실행하는 경우, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서가 판독할 수 있는 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함한다. 본 발명의 신호 처리 서비스를 예컨대 데이터 처리 API 등을 통해 이용할 수 있는 하나 또는 그 이상의 프로그램은, 컴퓨터와 통신하도록 고레벨의 절차형(procedural) 프로그래밍 언어 또는 객체 지향형(object oriented) 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나 프로그램(들)은 원하는 경우 어셈블리 또는 기계어(machine language)로 구현될 수 있다. 어느 경우라도, 언어는 컴파일(compiled) 또는 인터프리트(interpreted) 언어일 수 있으며, 하드웨어와의 조합에 의해 구현될 수도 있다.
본 발명의 방법 및 장치는 전기 배선 또는 케이블이나 광섬유, 또는 그 밖의 전송 형태와 같은 소정의 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현되는 통신을 통해 실시될 수도 있으며, 이 경우 프로그램 코드가 수신되어 EPROM, 게이트 어레이, PLD(Programmable Logic Device), 클라이언트 컴퓨터, 비디오 녹화기 등과 같은 머신에 적재되고 그것에 의해 실행되는 경우, 상기 실시예들에서 설명한 바와 같은 신호 처리 기능을 갖는 수신 머신은 본 발명을 실시하기 위한 장치가 된다. 범용 프로세서상에 구현되는 경우, 프로그램 코드는 프로세서와 결합하여 본 발명의 기능을 호출하도록 동작하는 고유의 장치를 제공한다. 또한 본 발명과 관련하여 사용되는 임의의 저장 기술은 항상 하드웨어와 소프트웨어의 조합일수 있다.
본 발명을 다양한 형태의 바람직한 실시예와 관련하여 설명하였으나, 다른 유사한 실시예를 사용하거나 또는 본 발명의 동일한 기능을 수행하기 위하여 본 발명으로부터 벗어남이 없이 앞서 설명한 실시예에 대하여 추가 또는 변경을 할 수 있음을 이해해야 할 것이다. 또한 특히 무선 네트워크 장치의 수가 지속적으로 증가하고 있으므로, 핸드헬드 장치 운영 체제 및 그 밖의 애플리케이션 특유의 운영 체제를 포함하는 다양한 컴퓨터 플랫폼을 사용할 수 있음을 강조하고자 한다. 따라서, 본 발명은 어느 하나의 실시예로 한정되어서는 안되고, 이하 첨부한 청구 범위의 외연 및 범위 내에서 도출되어야 한다.
본 발명에 의하면, 서버 등에 저장된 파일에 대하여 다수의 사용자가 공동으로 작업을 하는 경우에 있어서, 각 사용자의 편집 등으로 인하여 변경된 사항과 서버에 저장된 파일에 대하여 가해진 변경 사항이 충돌을 일으킬 경우, 개선된 파일 복제 방식을 이용하여 이러한 충돌을 효율적으로 조정한다. 또한 본 발명은 개선된 동기화 방식 및 오프라인 작업 방식을 제공한다.

Claims (27)

  1. 제2 컴퓨터 상의 마스터 파일(master file)을 제1 컴퓨터 상에 파일 복제하는 방법으로서,
    상기 마스터 파일의 로컬 사본(local copy)을 상기 제1 컴퓨터 상에 저장하는 단계와,
    상기 마스터 파일의 섀도우 사본(shadow copy)을 상기 제1 컴퓨터 상에 저장하는 단계와,
    상기 로컬 사본에 대한 수정을 위한 액세스를 허가하는 단계와,
    상기 마스터 파일이 변경되는 경우 상기 섀도우 사본을 갱신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복제와 관련된 버전 상태(versioning state)를 저장하는 단계를 더 포함하고,
    상기 로컬 사본에 대한 수정을 위한 액세스를 허가하는 상기 단계는, 상기 로컬 사본이 수정되는 경우 상기 버전 상태를 변경하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 로컬 사본이 수정되는 경우 상기 버전 상태를 변경하는 상기 단계는,상기 버전 상태를 상기 로컬 사본이 수정되었음을 나타내는 수정 상태로 설정하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하는 단계를 더 포함하고,
    상기 마스터 파일이 변경되는 경우 상기 섀도우 사본을 갱신하는 상기 단계는, 상기 갱신이 일어나는 경우 상기 버전 상태를 변경하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 마스터 파일이 변경되는 경우 상기 섀도우 사본을 갱신하는 상기 단계는,
    상기 로컬 사본이 수정되었는지를 검출하는 단계와,
    상기 로컬 사본과 상기 갱신된 섀도우 사본 사이의 충돌(conflict)을 해결하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하는 단계를 더 포함하고,
    상기 로컬 사본과 상기 갱신된 섀도우 사본 사이의 충돌을 해결하는 상기 단계는, 충돌이 존재함을 나타내는 충돌 상태로 상기 버전 상태를 변경하는 단계를포함하는 방법.
  7. 제5항에 있어서,
    상기 로컬 사본과 상기 갱신된 섀도우 사본 사이의 충돌을 해결하는 상기 단계는,
    충돌 인터페이스를 제공하는 단계와,
    충돌 해결 명령을 수락하는 단계와,
    상기 충돌 해결 명령을 이행하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    상기 충돌 해결 명령을 이행하는 상기 단계는,
    상기 마스터 파일에 변경을 가해야 하는지 여부를 판정하는 단계와,
    가해질 상기 변경을 상기 제2 컴퓨터에 통보하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    가해질 상기 변경을 상기 제2 컴퓨터에 통보하는 상기 단계는,
    상기 로컬 사본과 상기 마스터 파일 사이의 차이에 관한 차이 정보를 생성하는 단계와,
    상기 차이 정보를 상기 마스터 파일에 통보하는 단계
    를 포함하는 방법.
  10. 제1항에 있어서,
    상기 마스터 파일이 변경되는 경우 상기 섀도우 사본을 갱신하는 상기 단계는,
    상기 로컬 사본을 롤백 사본(rollback copy)으로서 저장하는 단계와,
    상기 섀도우 사본으로 상기 로컬 사본을 갱신하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 로컬 사본을 롤백 사본으로서 저장하는 상기 단계는,
    롤백 인터페이스를 제공하는 단계와,
    롤백 명령을 수락하는 단계와,
    상기 롤백 명령에 응답하여 상기 롤백 사본을 디스플레이하는 단계를 포함하는 방법.
  12. 제10항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하는 단계를 더 포함하고,
    상기 로컬 사본을 롤백 사본으로서 저장하는 상기 단계는, 상기 버전 상태를롤백 가능 상태로 변경하는 단계를 포함하는 방법.
  13. 제10항에 있어서,
    상기 로컬 사본이 액세스되었는지 여부를 추적하는 단계를 더 포함하고,
    상기 로컬 사본을 롤백 사본으로서 저장하는 상기 단계는, 상기 로컬 사본이 액세스된 경우에만 상기 로컬 사본을 롤백 사본으로서 저장하는 단계를 포함하는 방법.
  14. 제1항의 방법을 수행하기 위한 복수의 컴퓨터 실행 가능 명령어를 수록한 컴퓨터 판독 가능 기록 매체, 변조된 데이터 신호, 운영 체제, 코프로세싱(co-processing) 장치 및 컴퓨팅 장치 중 적어도 하나.
  15. 마스터 파일의 복제를 위한 컴퓨터 시스템으로서, 상기 마스터 파일은 제2 컴퓨터 상에 위치하고, 상기 컴퓨터 시스템은 적어도 단속적으로 상기 제2 컴퓨터에 동작적으로 접속되며, 상기 컴퓨터 시스템은,
    상기 마스터 파일의 로컬 사본을 제1 컴퓨터 상에 저장하기 위한 로컬 사본 저장소(local copy storage)와,
    상기 마스터 파일의 섀도우 사본을 상기 제1 컴퓨터 상에 저장하기 위한 섀도우 사본 저장소(shadow copy storage)와,
    상기 로컬 사본에 대한 수정을 위한 액세스를 허가하기 위한 로컬 사본 수정모듈과,
    상기 마스터 파일이 변경되는 경우 상기 섀도우 사본을 갱신하기 위한 섀도우 사본 갱신 모듈
    을 포함하는 컴퓨터 시스템.
  16. 제15항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하기 위한 버전 상태 저장소를 더 포함하고,
    상기 로컬 사본 수정 모듈은 상기 로컬 사본이 수정되는 경우에 상기 버전 상태를 변경하는 컴퓨터 시스템.
  17. 제16항에 있어서,
    상기 로컬 사본 수정 모듈은 상기 버전 상태를 상기 로컬 사본이 수정되었음을 나타내는 수정 상태로 설정하는 컴퓨터 시스템.
  18. 제15항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하기 위한 버전 상태 저장소를 더 포함하고,
    상기 섀도우 사본 갱신 모듈은 상기 갱신이 일어나는 경우에 상기 버전 상태를 변경하는 컴퓨터 시스템.
  19. 제15항에 있어서,
    상기 섀도우 사본 갱신 모듈은,
    상기 로컬 사본이 수정되었는지를 검출하기 위한 로컬 사본 수정 검출 모듈과,
    상기 로컬 사본과 상기 갱신된 섀도우 사본 사이의 충돌을 해결하기 위한 충돌 해결 모듈
    를 포함하는 컴퓨터 시스템.
  20. 제19항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하기 위한 버전 상태 저장소를 더 포함하고,
    상기 충돌 해결 모듈은 충돌이 존재함을 나타내는 충돌 상태로 상기 버전 상태를 변경하는 컴퓨터 시스템.
  21. 제19항에 있어서,
    상기 충돌 해결 모듈은,
    충돌 인터페이스를 제공하기 위한 충돌 인터페이스 모듈과,
    충돌 해결 명령을 수락하기 위한 충돌 해결 입력 모듈과,
    상기 충돌 해결 명령을 이행하기 위한 충돌 해결 이행 모듈
    을 포함하는 컴퓨터 시스템.
  22. 제21항에 있어서,
    상기 충돌 해결 명령 이행 모듈은,
    상기 마스터 파일에 변경을 가해야 하는지 여부를 판정하기 위한 변경 판정 모듈과,
    가해질 상기 변경을 상기 제2 컴퓨터에 통보하기 위한 제2 컴퓨터 변경 통보 모듈을 포함하는 컴퓨터 시스템.
  23. 제15항에 있어서,
    제2 컴퓨터 변경 통보 모듈은,
    상기 로컬 사본과 상기 마스터 파일 사이의 차이에 관한 차이 정보를 생성하기 위한 차이 생성 모듈과,
    상기 차이 정보를 상기 마스터 파일에 통보하기 위한 제2 컴퓨터 통보 모듈
    을 포함하는 컴퓨터 시스템.
  24. 제15항에 있어서,
    상기 섀도우 사본 갱신 모듈은,
    상기 로컬 사본을 롤백 사본으로서 저장하기 위한 롤백 저장소와,
    상기 섀도우 사본으로 상기 로컬 사본을 갱신하기 위한 로컬 사본 갱신 모듈
    을 포함하는 컴퓨터 시스템.
  25. 제24항에 있어서,
    상기 로컬 사본 갱신 모듈은,
    롤백 인터페이스를 제공하는 롤백 인터페이스 제공 모듈과,
    롤백 명령을 수락하는 롤백 명령 수락 모듈과,
    상기 롤백 명령에 응답하여 상기 롤백 사본을 디스플레이하기 위한 롤백 사본 디스플레이
    를 포함하는 컴퓨터 시스템.
  26. 제24항에 있어서,
    상기 복제와 관련된 버전 상태를 저장하기 위한 버전 상태 저장소를 더 포함하고,
    상기 롤백 저장소는 상기 버전 상태를 롤백 가능 상태로 변경하는 컴퓨터 시스템.
  27. 제24항에 있어서,
    상기 로컬 사본이 액세스되었는지 여부를 추적하기 위한 로컬 사본 액세스 추적 모듈을 더 포함하고,
    상기 로컬 사본을 롤백 사본으로서 저장하기 위한 상기 롤백 저장소는, 상기로컬 사본이 액세스된 경우에만 상기 로컬 사본을 롤백 사본으로서 저장하기 위한 로컬 사본 액세스 로직(logic)을 포함하는 컴퓨터 시스템.
KR1020040012923A 2003-02-28 2004-02-26 복제된 파일들을 위한 복수의 파일 상태 관리 방법 KR101076851B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/376,873 US8010491B2 (en) 2003-02-28 2003-02-28 Method for managing multiple file states for replicated files
US10/376,873 2003-02-28

Publications (2)

Publication Number Publication Date
KR20040077497A true KR20040077497A (ko) 2004-09-04
KR101076851B1 KR101076851B1 (ko) 2011-10-25

Family

ID=32771511

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040012923A KR101076851B1 (ko) 2003-02-28 2004-02-26 복제된 파일들을 위한 복수의 파일 상태 관리 방법

Country Status (19)

Country Link
US (1) US8010491B2 (ko)
EP (1) EP1452982A3 (ko)
JP (1) JP4643915B2 (ko)
KR (1) KR101076851B1 (ko)
CN (1) CN100377099C (ko)
AU (1) AU2004200462A1 (ko)
BR (1) BRPI0400364A (ko)
CA (1) CA2458249C (ko)
CO (1) CO5550075A1 (ko)
IL (1) IL160353A0 (ko)
MX (1) MXPA04001929A (ko)
MY (1) MY147939A (ko)
NO (1) NO331680B1 (ko)
NZ (1) NZ531279A (ko)
PL (1) PL365551A1 (ko)
RU (1) RU2344468C2 (ko)
SG (1) SG125106A1 (ko)
TW (1) TWI316667B (ko)
ZA (1) ZA200401310B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009055263A3 (en) * 2007-10-25 2009-07-16 Microsoft Corp Private views of data and local calculations during real time collaboration

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370025B1 (en) 2002-12-17 2008-05-06 Symantec Operating Corporation System and method for providing access to replicated data
JP2004265193A (ja) * 2003-03-03 2004-09-24 Canon Inc 情報処理方法、情報処理装置、サーバ装置の制御方法、サーバ装置
US8135755B2 (en) 2005-06-29 2012-03-13 Microsoft Corporation Templates in a schema editor
US7716168B2 (en) * 2005-06-29 2010-05-11 Microsoft Corporation Modifying table definitions within a database application
US7546286B2 (en) * 2004-02-19 2009-06-09 Microsoft Corporation Offline multi-table data editing and storage
US7546291B2 (en) * 2004-02-19 2009-06-09 Microsoft Corporation Data source task pane
GB2445368A (en) * 2005-04-14 2008-07-09 Rajesh Kapur A method and system for preserving access to a system in case of a disaster allowing transaction rollback
US8255362B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system
CN100373347C (zh) * 2005-07-13 2008-03-05 华硕电脑股份有限公司 一种具自动备份功能的电子装置
CN100438416C (zh) * 2005-12-02 2008-11-26 无锡永中科技有限公司 一种实现文件协同处理的方法
US7743026B2 (en) * 2006-01-31 2010-06-22 Microsoft Corporation Redirection to local copies of server-based files
CN101042688B (zh) * 2006-03-21 2011-06-01 北京北大方正电子有限公司 一种报刊版面网络标引的方法及系统
US20080140732A1 (en) * 2006-12-11 2008-06-12 Bentley System, Inc. Method and system for sharing file based data
JP4432087B2 (ja) * 2006-12-26 2010-03-17 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース更新管理システム、プログラムおよび方法
US9495370B1 (en) * 2007-07-19 2016-11-15 American Megatrends, Inc. Data recovery point review in a continuous data protection system
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US9143561B2 (en) 2007-11-09 2015-09-22 Topia Technology, Inc. Architecture for management of digital files across distributed network
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US20090164970A1 (en) * 2007-12-20 2009-06-25 At&T Knowledge Ventures, L.P. System for Managing Automated Report Versions
US8239345B2 (en) * 2007-12-27 2012-08-07 Microsoft Corporation Asynchronous replication
US8135838B2 (en) 2008-04-08 2012-03-13 Geminare Incorporated System and method for providing data and application continuity in a computer system
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8825594B2 (en) 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8706694B2 (en) * 2008-07-15 2014-04-22 American Megatrends, Inc. Continuous data protection of files stored on a remote storage device
US8145687B2 (en) * 2009-04-08 2012-03-27 Hitachi, Ltd. File detection device and method
US8346768B2 (en) * 2009-04-30 2013-01-01 Microsoft Corporation Fast merge support for legacy documents
US8612380B2 (en) * 2009-05-26 2013-12-17 Adobe Systems Incorporated Web-based collaboration for editing electronic documents
US9298834B2 (en) 2009-05-26 2016-03-29 Adobe Systems Incorporated User presence data for web-based document collaboration
WO2011034548A1 (en) * 2009-09-21 2011-03-24 Hewlett-Packard Development Company, L.P. System including a virtual disk
US8612398B2 (en) * 2010-03-11 2013-12-17 Microsoft Corporation Clean store for operating system and software recovery
US9652440B2 (en) * 2010-05-27 2017-05-16 Microsoft Technology Licensing, Llc Concurrent utilization of a document by multiple threads
US9665582B2 (en) * 2010-08-04 2017-05-30 Quantum Corporation Software, systems, and methods for enhanced replication within virtual machine environments
CN101937310B (zh) * 2010-09-06 2014-07-16 宇龙计算机通信科技(深圳)有限公司 文件复制方法及终端
US20120158891A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Techniques for universal representation of digital content
US9924002B1 (en) 2012-06-21 2018-03-20 EMC IP Holding Company LLC Managing stateless processes
WO2014064817A1 (ja) * 2012-10-25 2014-05-01 富士通株式会社 情報処理端末、同期制御方法および同期制御プログラム
CN104123126B (zh) * 2013-04-26 2018-04-10 阿里巴巴集团控股有限公司 一种用于生成合并冲突记录列表的方法和装置
CN104750536B (zh) * 2013-12-30 2018-08-21 华为技术有限公司 一种实现虚拟机自省的方法和装置
WO2020025124A1 (en) * 2018-08-01 2020-02-06 Huawei Technologies Co., Ltd. Device and method for rollback of a structure modification operation
AU2020264946B2 (en) * 2019-04-30 2022-11-17 Clumio, Inc. Deduplication in a cloud-based data protection service
CN110262997A (zh) * 2019-05-06 2019-09-20 阿里巴巴集团控股有限公司 用于管理公共文件的方法和系统
CN110795252A (zh) * 2019-09-20 2020-02-14 北京浪潮数据技术有限公司 一种多用户串行编辑文件的方法、装置、设备及存储介质

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0188072B1 (en) * 1984-11-14 1992-01-22 Canon Kabushiki Kaisha Image processing system
JPH04181423A (ja) * 1990-11-16 1992-06-29 Fujitsu Ltd バージョン管理方式
US5278979A (en) 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
JPH05241933A (ja) * 1992-02-28 1993-09-21 Mitsubishi Electric Corp 分散データ管理システムのファイル保全方式
JP3213766B2 (ja) 1992-03-16 2001-10-02 株式会社日立製作所 レプリケートファイル更新システム
JPH0827754B2 (ja) * 1992-05-21 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおけるファイル管理方法及びファイル管理システム
US5493728A (en) * 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5630116A (en) * 1993-08-11 1997-05-13 Nec Corporation Automatic delivery system for master files in a distributed processing system
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
EP0756730B1 (en) * 1994-04-21 1998-09-23 BRITISH TELECOMMUNICATIONS public limited company Data storage
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
EP0713183A3 (en) * 1994-11-18 1996-10-02 Microsoft Corp Network-independent shadow files
US5694596A (en) * 1995-05-25 1997-12-02 Kangaroo, Inc. On-line database updating network system and method
US5881292A (en) * 1996-09-26 1999-03-09 Microsoft Corporation Dynamic versioning system for multiple users of multi-module software system
US5930794A (en) * 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
JP2001514776A (ja) * 1997-02-27 2001-09-11 シーベル システムズ,インコーポレイティド ローカルな修正を組み込むソフトウェア配布の連続レベル移送の方法
US6314565B1 (en) * 1997-05-19 2001-11-06 Intervu, Inc. System and method for automated identification, retrieval, and installation of multimedia software components
US6182073B1 (en) * 1997-05-20 2001-01-30 Intel Corporation Integrated information browsing and multiple-participant application with a persistency control configured to monitor and to prevent attempts to replace data within the information browser
JP3567696B2 (ja) * 1997-09-24 2004-09-22 松下電器産業株式会社 ソフトウェアダウンロードシステム
US6014669A (en) * 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
JPH11143754A (ja) * 1997-11-05 1999-05-28 Hitachi Ltd バージョン情報・構成情報表示方法および装置およびバージョン情報・構成情報表示プログラムを記録したコンピュータ読み取り可能な記録媒体
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6041333A (en) * 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6457021B1 (en) * 1998-08-18 2002-09-24 Microsoft Corporation In-memory database system
US6804663B1 (en) * 1998-09-21 2004-10-12 Microsoft Corporation Methods for optimizing the installation of a software product onto a target computer system
US6341291B1 (en) * 1998-09-28 2002-01-22 Bentley Systems, Inc. System for collaborative engineering using component and file-oriented tools
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
JP2000284998A (ja) 1999-03-31 2000-10-13 Ricoh Co Ltd データ更新制御システム、データ更新制御方法、その方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6405219B2 (en) * 1999-06-22 2002-06-11 F5 Networks, Inc. Method and system for automatically updating the version of a set of files stored on content servers
US6560655B1 (en) * 1999-06-22 2003-05-06 Microsoft Corporation Synchronization manager for standardized synchronization of separate programs
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6513084B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US6516339B1 (en) * 1999-08-18 2003-02-04 International Business Machines Corporation High performance client/server editor
US6256773B1 (en) * 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6449624B1 (en) * 1999-10-18 2002-09-10 Fisher-Rosemount Systems, Inc. Version control and audit trail in a process control system
US6757893B1 (en) * 1999-12-17 2004-06-29 Canon Kabushiki Kaisha Version control system for software code
JP2001193735A (ja) * 2000-01-05 2001-07-17 Minebea Co Ltd 球面滑り軸受のトルク調節機構
US6721767B2 (en) * 2000-01-31 2004-04-13 Commvault Systems, Inc. Application specific rollback in a computer system
US6598059B1 (en) * 2000-04-22 2003-07-22 Oracle Corp. System and method of identifying and resolving conflicts among versions of a database table
CN1290038C (zh) * 2000-05-25 2006-12-13 英业达股份有限公司 一种即时生成文件版本的方法
US6845383B1 (en) * 2000-06-19 2005-01-18 International Business Machines Corporation System and method for managing concurrent scheduled or on-demand replication of subscriptions
US6865591B1 (en) * 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
US6658330B2 (en) * 2000-12-29 2003-12-02 General Electric Co. Method and system for upgrading software for controlling locomotives
US6714953B2 (en) * 2001-06-21 2004-03-30 International Business Machines Corporation System and method for managing file export information
US20030167318A1 (en) * 2001-10-22 2003-09-04 Apple Computer, Inc. Intelligent synchronization of media player with host computer
US7389309B2 (en) * 2003-02-28 2008-06-17 Microsoft Corporation Method for managing file replication in applications
US7350191B1 (en) * 2003-04-22 2008-03-25 Noetix, Inc. Computer implemented system and method for the generation of data access applications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009055263A3 (en) * 2007-10-25 2009-07-16 Microsoft Corp Private views of data and local calculations during real time collaboration
US8190987B2 (en) 2007-10-25 2012-05-29 Microsoft Corporation Private views of data and local calculations during real time collaboration
US9275032B2 (en) 2007-10-25 2016-03-01 Microsoft Technology Licensing, Llc Private views of data and local calculations during real time collaboration

Also Published As

Publication number Publication date
CN1525328A (zh) 2004-09-01
MY147939A (en) 2013-02-15
AU2004200462A1 (en) 2004-09-16
KR101076851B1 (ko) 2011-10-25
JP2004265414A (ja) 2004-09-24
MXPA04001929A (es) 2005-04-25
EP1452982A3 (en) 2006-11-08
US8010491B2 (en) 2011-08-30
NO331680B1 (no) 2012-02-20
SG125106A1 (en) 2006-09-29
TWI316667B (en) 2009-11-01
CO5550075A1 (es) 2005-08-31
NZ531279A (en) 2005-07-29
CN100377099C (zh) 2008-03-26
CA2458249C (en) 2012-03-27
CA2458249A1 (en) 2004-08-28
JP4643915B2 (ja) 2011-03-02
PL365551A1 (en) 2004-09-06
US20040172424A1 (en) 2004-09-02
TW200508891A (en) 2005-03-01
IL160353A0 (en) 2004-07-25
RU2344468C2 (ru) 2009-01-20
NO20040829L (no) 2004-09-01
EP1452982A2 (en) 2004-09-01
RU2004105881A (ru) 2005-08-10
BRPI0400364A (pt) 2004-12-28
ZA200401310B (en) 2005-11-30

Similar Documents

Publication Publication Date Title
KR101076851B1 (ko) 복제된 파일들을 위한 복수의 파일 상태 관리 방법
US10755234B2 (en) System and method for offline synchronization of exception items of shared services for client applications
JP5813499B2 (ja) ドキュメントの同時共同レビュー
JP4455100B2 (ja) 編集時にサーバファイルのロックを遅延させる方法
KR101099297B1 (ko) 전자파일의 제1 버전과 제2 버전을 동기화하기 위한 방법 및 컴퓨터 판독가능 기록 매체
US20120297363A1 (en) Inferred and shared source control integration across mulitiple program development tools
JP2009515264A (ja) 文書およびソースコードの制御のための方法およびシステム
JP2014044743A (ja) コンピュータプラットフォームのプログラミングインターフェース
AU2004200452A1 (en) Method to initiate server based collaboration on e-mail attachments
US8701083B2 (en) Systems and methods for varying software build properties using primary and supplemental build files
Pardon et al. Consistent disaster recovery for microservices: the CAB theorem
US9805011B2 (en) High-performance editing of large remote files in client-server architecture
Fielding et al. Software engineering and the WWW: the cobbler's barefoot children, revisited

Legal Events

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

Payment date: 20140929

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 8