KR20040111156A - 통지 본드를 사용하여 캐싱된 오브젝트를 관리하는 시스템및 방법 - Google Patents

통지 본드를 사용하여 캐싱된 오브젝트를 관리하는 시스템및 방법 Download PDF

Info

Publication number
KR20040111156A
KR20040111156A KR1020040045442A KR20040045442A KR20040111156A KR 20040111156 A KR20040111156 A KR 20040111156A KR 1020040045442 A KR1020040045442 A KR 1020040045442A KR 20040045442 A KR20040045442 A KR 20040045442A KR 20040111156 A KR20040111156 A KR 20040111156A
Authority
KR
South Korea
Prior art keywords
notification
bond
client
server
cached
Prior art date
Application number
KR1020040045442A
Other languages
English (en)
Other versions
KR101150146B1 (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 KR20040111156A publication Critical patent/KR20040111156A/ko
Application granted granted Critical
Publication of KR101150146B1 publication Critical patent/KR101150146B1/ko

Links

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • H04L41/0661Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities by reconfiguring faulty entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software 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)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 통지 본드(notification bond)를 사용하여 캐싱된 오브젝트를 관리하는 시스템 및 방법을 제공한다. 서버는 원본 오브젝트를 관리하도록 구성된다. 클라이언트는 원본 오브젝트로부터 캐싱된 오브젝트를 생성하고 서버와의 통지 본드를 설정한다. 각각의 통지 본드는 클라이언트가 원본 오브젝트와 관련된 오브젝트 관련 이벤트에 응답하여 서버로부터 통지를 획득할 수 있게 한다. 클라이언트는 통지 내의 데이타를 사용하여, 다른 캐시 오브젝트를 동기화하지 않고 원본 오브젝트에 대응하는 캐시 오브젝트를 업데이트한다.

Description

통지 본드를 사용하여 캐싱된 오브젝트를 관리하는 시스템 및 방법{SYSTEM AND METHOD FOR MANAGING CACHED OBJECTS USING NOTIFICATION BONDS}
본 발명은 통지 본드를 사용하여 캐싱된 오브젝트를 관리하는 시스템 및 방법에 관한 것이다.
오늘날의 다수의 분산 컴퓨팅 환경에서는, 종종 복수의 클라이언트에 의해 공유될 수 있는 파일을 중앙식으로 보유하는 것이 바람직하다. 통상적인 분산 파일 시스템은 일반적으로 파일의 공유를 용이하게 하는 데 사용된다. 그러한 시스템에서, 클라이언트는 공유되는 파일을 보유하는 파일 서버와 활발히 상호작용함으로써 공유된 파일로의 액세스를 획득할 수 있다. 특히, 클라이언트는 파일 서버로부터 파일 핸들을 획득할 수 있고, 변경을 파일 서버에게 전달함으로써 파일을 수정할 수 있다. 그러한 파일 공유 기술은 보통 라이브 공유(live sharing)라고 불린다. 이러한 유형의 파일 공유를 위해서는, 파일 서버와 클라이언트 간의 대량 통신이 필수적이기 때문에, 라이브 공유와 관련된 자원 오버헤드가 매우 많을 수 있다.
현재, 일부 분산 파일 시스템은 클라이언트가 파일 데이타를 클라이언트의 컴퓨터 메모리에 캐싱하는 것을 허용한다. 특히, 클라이언트는 파일 서버에 의해 관리되는 디렉토리 및 파일의 로컬 복사본을 자신의 메모리에 저장할 수 있다. 이 로컬 복사본은 클라이언트가 어느 파일 및 디렉토리가 서버에서 사용가능한지 즉시 확인할 수 있게 함으로써 파일 공유를 용이하게 한다. 그러나, 클라이언트는 데이타가 최신의 것임을 확실히하기 위하여, 서버와 주기적으로 접촉하여 캐싱된 파일 데이타를 동기화해야한다. 캐싱된 파일 데이타를 동기화하는 것은 비용이 많이 드는 일이며, 특히 파일 데이타를 캐싱하는 다수의 클라이언트를 갖는 서버에 있어서 그러하다. 예를 들어, 클라이언트가 접속해제된 일정 기간 후에 서버에 재접속할 때, 클라이언트는 서버 상의 어느 파일 또는 디렉토리가 접속해제 기간 동안에 수정되었는지를 알지 못하기 때문에 서버로부터 캐싱된 전체 파일 데이타를 동기화해야 한다. 동기화와 관련된 작업량은 캐싱된 파일 및 디렉토리의 수에 비례하기 때문에, 일부 시스템은 각각의 클라이언트가 캐싱하는 것이 허용되는 파일 및 디렉토리의 수를 제한한다.
최근, 이동 컴퓨팅 환경이 점차 대중화되고 있다. 그러한 환경에서, 이동 클라이언트는 종종 네트워크로부터 장기간 동안 접속해제될 수 있다. 이것은 분산 파일 시스템에게 특별한 도전을 준다. 예를 들어, 필요한 동기화는 이동 클라이언트가 네트워크에 접속되지 않은 동안 발생할 수 없다. 게다가, 사용자는 클라이언트가 서버 파일 및 디렉토리의 많은 부분을 캐싱하기를 점점 더 많이 원한다. 이 캐싱된 데이타는 이동 클라이언트가 네트워크에 재접속될 때 동기화되어야 한다. 이 대량의 데이타를 동기화하는 것은 많은 양의 클라이언트/서버 통신과 컴퓨팅 자원, 및 많은 어플리케이션에서 금지된 상황을 요구한다.
본 분야에 숙련된 기술자는 분산 파일 시스템에서 클라이언트에 의해 파일을 캐싱하는 효과적이고 효율적인 방법을 알지 못한다.
간단하게 말하자면, 본 발명은 통지 본드(notification bond)를 사용하여 캐싱된 오브젝트를 관리하는 시스템 및 방법을 제공한다. 일 양태에서, 본 발명은클라이언트가 통지 본드를 사용하여 서버와 상호작용하는 컴퓨터 구현 방법에 관한 것이다. 서버는 원본 오브젝트를 관리한다. 클라이언트는 원본 오브젝트로부터 캐싱된 오브젝트를 생성하고, 서버와의 통지 본드를 설정한다. 통지 본드는 클라이언트가 원본 오브젝트와 관련된 오브젝트 관련 이벤트에 응답하여 서버로부터 통지를 획득할 수 있게 한다.
다른 양태에서, 본 발명은 서버가 통지 본드를 사용하여 클라이언트와 상호작용하는 컴퓨터 구현 방법에 관한 것이다. 서버는 클라이언트와의 통지 본드를 설정한다. 서버는 클라이언트가 오브젝트를 캐싱할 수 있게 하고, 오브젝트 관련 이벤트가 발생할 때 클라이언트에게 통지를 제공한다.
또 다른 양태에서, 본 발명은 통지 본드를 사용하여 오브젝트를 공유하는 분산 파일 시스템에 관한 것이다. 분산 파일 시스템은 원본 오브젝트를 관리하도록 구성된 서버를 포함한다. 서버는 클라이언트에게 통지 본드를 발행하도록 구성된 본드 관리자를 포함한다. 분산 파일 시스템은 원본 오브젝트와 관련된 캐싱된 오브젝트를 생성하도록 구성된 클라이언트도 포함할 수 있다. 클라이언트는 서버와 함께 원본 오브젝트와 관련된 통지 본드를 유지하도록 구성된 통지 핸들러를 포함한다.
도 1은 본 발명을 구현한 예시적인 캐싱된 오브젝트 관리 시스템의 개략도.
도 2는 통지 핸들러 및 본드 관리자의 개략도.
도 3은 캐싱된 오브젝트 관리 시스템에서의 클라이언트와 서버 간의 예시적인 통신의 개략도.
도 4는 예시적인 필터 테이블의 개략도.
도 5는 예시적인 서버 본드 테이블의 개략도.
도 6은 예시적인 클라이언트 본드 테이블의 개략도.
도 7은 클라이언트가 서버에 의해 관리되는 오브젝트에 대하여 서버와의 통지 본드를 설정하는 처리의 수행 흐름도.
도 8은 서버가 오브젝트에 대하여 클라이언트와의 통지 본드를 설정하는 처리의 수행 흐름도.
도 9는 서버가 클라이언트에게 통지를 송신하는 처리의 수행 흐름도.
도 10은 클라이언트가 서버와 함께 캐싱된 오브젝트를 동기화하는 처리의 개략도.
도 11은 클라이언트가 통지 본드를 취하하는 처리의 개략도.
도 12는 본 발명의 실시예에 따라, 서버가 통지 본드를 취하하는 처리의 개략도.
<도면의 주요 부분에 대한 부호의 설명>
103 : 서버
105 : 본드 관리자
107 : 파일 시스템 관리자
109 : 오브젝트
121 : 클라이언트
131 : 통지 핸들러
141 : 캐싱된 오브젝트
205 : 필터 컴포넌트
207 : 필터 테이블
210 : 서비스 컴포넌트
215 : 서버 본드 테이블
217 : 통지 로그
220 : 클라이언트 본드 테이블
223 : 클라이언트 테이블
224 : 로그 테이블
본 발명의 발명자는, 클라이언트가 서버에 의해 관리되는 오브젝트를 효과적 및 효율적으로 캐싱할 수 있도록 하는 분산 파일 시스템이 시스템의 오브젝트 공유 성능을 매우 개선시킬 것으로 판단했다. 또한, 발명자는, 클라이언트가 자신이 오프라인일 동안에 서버 상의 어느 오브젝트가 수정되었는지를 신속하게 결정할 수 있게 하는 것은, 클라이언트의 캐싱된 오브젝트를 갱신하는 것과 관련된 작업을 훨씬 감소시킬 것임을 인식했다. 따라서, 본 발명은 통지 본드를 사용하여 캐싱된 오브젝트를 관리하는 시스템 및 방법에 초점을 둔다. 캐싱된 오브젝트가 본 발명에 의해 관리되는 방법은 통상적인 파일 캐싱 방법과 매우 다르다. 예를 들어, 일부 통상적인 방법은 각각의 캐싱된 파일이 항목별로 업데이트되는 것을 요구한다. 이 방법은 대량의 파일 관리 자원을 요구하고, 오래된 캐싱된 파일을 어플리케이션 및 사용자에게 배포하게 할 수 있다. 다른 통상적인 방법은 모든 캐싱된 파일을 서버 상의 대응하는 파일과 비교함으로써 그것이 동기화되는 것을 요구한다. 전체 캐시 내용을 비교함으로써 동기화하는 것은 클라이언트, 서버 및 네트워크에 많은 수행 부담을 야기한다. 오프라인 동안 갱신하는 것은 불가능하기 때문에, 이 문제는 클라이언트가 서버로부터 접속해제되는 동안 캐시 상태에게 영향을 주는 기술에 의해 악화된다.
반면, 본 발명은 클라이언트가 서버 상의 어느 오브젝트가 대응하는 캐싱된 오브젝트와 관련하여 변경되었는지를 신속하게 결정하고 변경된 오브젝트와 일치하는 캐싱된 오브젝트를 효율적으로 동기화할 수 있게 한다. 클라이언트에 의해 캐싱된 오브젝트에 있어서, 오브젝트와 관련된 통지 본드가 설정된다. 통지 본드는 클라이언트가 오브젝트에게 행해진 변경을 통지 받을 수 있게 한다. 클라이언트 및 서버는 통지 본드와 관련된 상태를 유지한다. 이 통지 본드 상태(notification bond state)는 일반적으로 지속적인 메모리에 저장되며, 이것은 재시작 또는 재부팅 후에 클라이언트 및 서버가 이 상태를 재설정할 수 있게 한다. 이 상태는 클라이언트가 다른 캐싱된 오브젝트 모두를 갱신하지 않고 캐싱된 오브젝트를 최신으로 만드는 것을 허용한다. 전술한 것과 그 이외의 본 발명의 양태는 다음의 상세한 설명을 읽은 후에 명백해질 것이다.
도 1은 본 발명의 일 실시예에 따라, 본 발명을 구현하는 예시적인 캐싱된 오브젝트 관리 시스템(100)의 개략도이다. 다른 구성에서, 캐싱된 오브젝트 관리 시스템(100)은 도시된 것보다 더 많거나 더 적은 컴포넌트를 포함할 수 있다. 도면에서 도시된 바와 같이, 캐싱된 오브젝트 관리 시스템(100)은 서버(103) 및 클라이언트(121 내지 123) 상의 컴포넌트를 포함한다.
서버(103)는 클라이언트(121 내지 123)를 위하여 오브젝트를 관리하고 오브젝트 공유를 용이하게 하도록 구성된 컴퓨팅 장치이다. 서버(103)는 하나 이상의 컴퓨터를 포함할 수 있다. 각각의 컴퓨터는 일반적으로 메모리와 함께 구성되며, 이 메모리는 RAM, ROM, 하드 드라이브, 광 드라이브 등과 같은 컴퓨터 판독가능 매체를 포함할 수 있다. 이 실시예에서, 메모리는 본드 관리자(105), 파일 시스템 관리자(107) 및 원본 오브젝트(109)를 포함한다. 파일 시스템 관리자(107)는 파일 서버(103)의 소프트웨어 컴포넌트이고 서버(103)를 위하여 원본 오브젝트(109)를 핸들링하도록 구성된다. 파일 시스템 관리자(107)의 예는 마이크로소프트사에 의해 개발된 NTFS이다. 원본 오브젝트(109)는 클라이언트(121 내지 123)에 의해 공유될 수 있는 서버(103)에 저장된 데이타 구조이다. 원본 오브젝트(109)는 파일 디렉토리와 같은 임의의 유형의 데이타 구조, 및 실행 파일, 데이타 등과 같은 임의의 유형의 파일일 수 있다. 원본 오브젝트(109)는 일반적으로 하드 드라이브와 같은 대용량 데이타 저장 장치에 저장된다. 그러한 대용량 데이타 저장 장치에서, 오브젝트는 볼륨 ID, 파일 ID, 파일 경로 등과 같은 하드 드라이브 내의 저장 위치에 의해 식별될 수 있다.
본드 관리자(105)는 서버(103)의 소프트웨어 컴포넌트이고 클라이언트에게 클라이언트에 의해 캐싱된 오브젝트에 대한 변경을 통지하도록 구성된다. 본드 관리자(105)는 파일 시스템 관리자(107)와 같은 다른 컴포넌트의 일부로서 구성될 수도 있고, 필터와 같은 분리된 컴포넌트로서 구현될 수도 있다. 본드 관리자(105)는 캐싱된 오브젝트(141 내지 143)를 최신으로 유지하기 위하여 통지 핸들러(131 내지 133)와 조화하여 기능하도록 구성된다. 본드 관리자(105)는 도 2와 관련하여 더 상세하게 설명될 것이다. 간단히 말해서, 본드 관리자(105)는 캐싱된 오브젝트(141 내지 143)와 관련된 통지를 제공하기 위하여 통지 핸들러(131 내지 133)와 함께 통지 본드를 설정한다. 통지는 클라이언트(121 내지 123)가 어느 캐싱된 오브젝트(141 내지 143)가 업데이될 필요가 있는지를 결정할 수 있게 한다.
서버(103)는 네트워크(110)를 통하여 클라이언트(121 내지 123)와 통신하도록 구성되며, 이 네트워크는 인터넷 또는 임의의 광역 네트워크(WAN), 근거리 네트워크(LAN), 무선 네트워크 등과 같은 임의의 유형의 네트워크일 수 있다. 서버(103)와 클라이언트(121 내지 123) 간의 통신은 도 3과 관련하여 상세하게 설명될 것이다. 간단히 말해서, 서버(103)는 본드 설정, 통지 송신, 캐싱된 오브젝트(141 내지 143)의 동기화 등을 위해서 클라이언트(121 내지 123)와 통신하도록구성된다. 클라이언트와 서버 간의 통신은 컴퓨터 판독가능 매체로 간주된다.
클라이언트(121 내지 123)는 서버(103)의 오브젝트에 액세스하도록 구성된 컴퓨팅 장치이다. 클라이언트(121 내지 123)는 활발한 통신 접속으로 서버(103)와 상호작용할 수 있다. 클라이언트(121 내지 123)는 서버(103)와의 접속 없이 기능할 수도 있다. 클라이언트(121 내지 123)는 사용자가 직접 클라이언트 상에서 작업할 수 있게 하거나, 다른 컴퓨팅 장치에 대하여 서버로서 기능하도록 구성된다. 각각의 클라이언트(121 내지 123)는 임의의 유형의 컴퓨터 판독가능 매체를 포함할 수 있는 메모리와 함께 구성된다. 클라이언트(121 내지 123)의 메모리는 캐싱된 오브젝트(141 내지 143) 및 통지 핸들러(131 내지 133)를 포함한다. 캐싱된 오브젝트(141 내지 143)는 클라이언트(121 내지 123)에게 유용한 원본 오브젝트(109)로부터 복제된다. 캐싱된 오브젝트(141 내지 143)는 클라이언트(121 내지 123)와 서버(103) 간의 접속이 설정되지 않거나 손실된 경우 자신과 대응하는 원본 오브젝트(109)와 함께 동기화될 수 없다. 본 발명에 의하면, 클라이언트(121 내지 123)는 오브젝트에 대응하는 통지를 사용하여 캐싱된 오브젝트(141 내지 143)를 동기화할 수 있다.
통지 핸들러(131 내지 133)는 통지와 관련된 통신 및 데이타 관리를 핸들링하는 클라이언트(121 내지 123)의 컴포넌트이다. 통지 핸들러(131 내지 133)는 도 2와 관련하여 상세하게 설명될 것이다. 간단하게 말해서, 통지 핸들러(131 내지 133)는 서버(103)와의 통지 본드를 설정하고 클라이언트(121 내지 123)를 위하여 통지 및 캐싱된 오브젝트 동기화를 핸들링하도록 구성된다.
도 2는 본 발명의 일 실시예에 따른 통지 핸들러(131) 및 본드 관리자(105)의 개략도이다. 이 실시예에서, 본드 관리자(105)는 필터 컴포넌트(205) 및 서비스 컴포넌트(210)를 포함한다. 필터 컴포넌트(205)는 서버(103)의 파일 시스템 관리자에 출입하는 오브젝트 관련 이벤트를 스캔하도록 구성된다. 이 오브젝트 관련 이벤트는 클라이언트(121)와 같은 클라이언트에 의해 캐싱된 오브젝트와 관련된 것일 수 있다. 본드 관리자(105)는 이 이벤트에 응답하여 클라이언트(121)에 대한 통지를 생성하도록 구성될 수 있다. 필터 컴포넌트(205)는 필터 테이블(207)을 사용하여 어떤 오브젝트 관련 이벤트가 통지를 요청하는지를 결정하고 그러한 이벤트를 서비스 컴포넌트(210)로 발송하도록 구성된다. 필터 테이블(207)은 통지를 요구하는 오브젝트를 식별한다. 필터 테이블(207)의 예시적인 데이타 구조는 도 4와 관련하여 상세하게 설명될 것이다.
서비스 컴포넌트(210)는 클라이언트에 의해 캐싱된 오브젝트 내의 변경에 대한 통지를 수신하는 클라이언트와의 통지 본드를 설정하도록 구성된다. 이 실시예에서, 서비스 컴포넌트(210)는 통지 본드와 관련된 상태를 포함하는 서버 본드 테이블(215)을 유지한다. 서버 본드 테이블(215)은 통지를 요구하는 오브젝트를 식별하고 서비스 컴포넌트(210)가 클라이언트에 대한 통지를 생성할 수 있게 하는 상태를 포함한다. 통지는 다수의 상이한 방법으로 클라이언트에게 제공될 수 있다. 일 실시예에서, 서비스 컴포넌트(210)는 통지 핸들러(131)에 대한 통지를 포함하는 통지 로그(notification log)(217)를 유지하도록 구성된다. 이 실시예의 일 구성은 통지 핸들러(131)가 통지 로그(217)를 검색할 수 있게 구성하는 서비스 컴포넌트(210)를 포함한다. 다른 구성은 미리 결정된 기간의 만료, 통지 로그(217)의 크기가 임계값을 초과하는 것 등과 같은 이벤트에 응답하여 통지 로그(217)를 통지 핸들러(131)에게 송신하도록 구성하는 서비스 컴포넌트(210)를 포함한다.
다른 실시예에서, 통지 핸들러(131)는 활발한 통신 연결이 가능한 경우 통지를 통지 핸들러(131)에게 송신하도록 구성될 수 있다. 통지 핸들러(131)는 활발한 통신 연결이 불가능한 경우 통지를 통지 로그(217)에 기록하고, 통신 연결이 재설정될 때 통지 로그(217)를 통지 핸들러(131)에게 제공하도록 구성될 수 있다.
통지 로그(217)는 다수의 방법으로 논리적으로 구성될 수 있다. 일 실시예에서, 통지 로그(217)는 복수의 클라이언트에 대한 통지가 로그에 포함되도록 다중 로그로서 구현된다. 다른 실시예에서, 통지 로그(217)는 클라이언트별 로그로서 구현되어 각각의 클라이언트가 개별 통지 로그를 갖는다. 서비스 컴포넌트(210)는 다중 로그의 어느 부분이 특정 클라이언트와 관련되는지 또는 어느 클라이언트별 로그가 클라이언트와 관련되는지를 식별하기 위한 데이타를 포함하는 로그 테이블(224)을 유지할 수 있다. 서비스 컴포넌트(210)는 전체 통지 로그(217) 또는 클라이언트(121)에 적용하는 로그의 일부분만을 송신하거나 사용 가능하게 하도록 구성될 수 있다. 통지 로그(217) 내의 관련 데이타는 클라이언트(121)의 캐싱된 오브젝트를 최신으로 만들기 위하여 통지 핸들러(131)에 의해 사용될 수 있다.
또한, 서비스 컴포넌트(210)는 오브젝트를 변경한 클라이언트가 오브젝트 상에 통지 본드를 갖는지를 결정하고 그 클라이언트에 대한 통지를 생성하는 것을 피하도록 구성된다. 서비스 컴포넌트(210)는 오브젝트 변경 이벤트와 관련된 데이타에서 클라이언트 식별자를 발견하고 그 클라이언트 식별자를 통지 본드와 관련된 각각의 클라이언트에 대한 식별 정보를 포함하는 클라이언트 테이블(223) 내의 식별자들과 일치시킴으로써 결정할 수 있다. 또한, 서비스 컴포넌트(210)는 필터 컴포넌트(205)에 대한 필터 테이블(207)을 제공 및 업데이트하도록 구성될 수 있다.
통지 핸들러(131)는 클라이언트(121)에 의해 캐싱된 오브젝트 상에 통지 본드를 설정하는 본드 관리자(105)와 상호작용하도록 구성된다. 이 실시예에서, 통지 핸들러(131)는 설정된 통지 본드와 관련된 상태를 포함하는 클라이언트 본드 테이블(220)을 유지한다. 클라이언트 본드 테이블(220)은 도 6과 관련하여 더 상세하게 설명될 것이다. 간단히 말하면, 클라이언트 본드 테이블(220)은 하나 이상의 서버 상에서 설정된 통지 본드에 대한 상태를 포함한다. 이상적으로, 클라이언트 본드 테이블(220) 내의 상태는 서버 본드 테이블(215) 내의 대응하는 데이타와 일치해야한다. 그러나, 상태는 접속해제 및 충돌로 인해 동일하지 않을 수 있다. 재접속시, 클라이언트 및 서버는 상태를 재동기화할 것이다. 테이블 내의 상태를 동기화하는 것은 클라이언트(121) 내의 캐싱된 오브젝트를 갱신하는 것을 제공할 수 있다.
도 3은 본 발명의 일 실시예에 따른 캐싱된 오브젝트 관리 시스템 내의 클라이언트와 서버 간의 예시적인 통신(300)의 개략도이다. 통신(300)은 클라이언트가 서버에 개방한 세션을 통해 발생할 수 있다. 설명을 위하여, 통신은 서버(103)와 클라이언트(121) 사이에서 도시된다. 그러나, 수행시 통신은 실제로 통지 핸들러(141)와 본드 관리자(105) 사이와 같은 서버 및 클라이언트의 소프트웨어 컴포넌트 사이에 존재한다.
통신(302)은 통지 본드를 획득하는 것과 관련되고 메시지(305 및 310)를 포함한다. 도면에서 도시되는 바와 같이, 클라이언트(121)는 통지 본드 요청을 갖는 메시지(305)를 송신함으로써 통지 본드를 획득할 수 있다. 통지 본드는 서버(103)에 의해 관리되고 클라이언트(121)에 의해 캐싱된 오브젝트와 관련된다. 통지 본드는 클라이언트(121)가 오브젝트의 수정과 관련된 파일 시스템 이벤트에 대한 통지를 획득할 수 있게 한다. 메시지(305)는 오브젝트를 식별하는 식별자를 포함한다. 식별자는 서버(103) 상의 오브젝트의 파일 경로에 대한 정보를 포함할 수 있다. 메시지(305)는 요청된 통지 본드의 타입도 포함할 수 있다. 본드의 타입 각각은 통지에 포함되는 데이타를 지정할 수 있다.
메시지(305)에 응답하여, 서버(103)는 통지 본드를 설정하고 통지 본드를 갖는 메시지(310)를 클라이언트(121)에게 송신할 수 있다. 메시지(310)는 본드와 유일하게 관련된 본드 번호(BN), 및 서버(103)에 대하여 클라이언트(121)에게 유일한 단순 증가하는 번호인 서버 집합 본드 번호(ABN)와 같은 통지 본드와 관련된 상태를 포함할 수 있다. 서버(103)와 클라이언트(121) 양자 모두 ABN을 유지한다. 클라이언트 ABN과 서버 ABN을 비교하는 것은 클라이언트(121) 및 서버(103)가 분실한 본드가 있는지를 결정할 수 있게 한다.
통신(322)은 클라이언트 풀(pull) 구성을 이용하여 클라이언트(121)에게 통지를 제공하는 것과 관련되고 메시지(325 및 330)를 포함한다. 클라이언트 풀 구성에서, 클라이언트(121)는 서버(103)로부터의 통지 로그에서 통지를 검색하도록구성된다. 클라이언트(121)는 통지 본드와 관련된 통지 로그에 대한 요청을 포함하는 메시지(325)를 송신할 수 있다. 통지 로그는 다수의 통지 본드와 관련된 통지를 포함할 수 있다. 응답으로, 서버(103)는 통지 로그를 포함한 메시지(330)를 송신할 수 있다. 통지 로그는 통지 본드에 따라 생성된 클라이언트(121)에 대한 통지를 포함한다. 통지 로그를 수신한 후, 클라이언트(121)는 캐싱된 오브젝트를 업데이트하기 위하여 통지 로그 내의 통지를 사용할 수 있다.
통신(330)은 서버 푸쉬(push) 구성을 이용하여 클라이언트(121)에게 통지를 제공하는 것과 관련되고 메시지(334 및 336)를 포함한다. 통지 본드를 갖는 오브젝트의 수정과 관련된 파일 시스템 이벤트에 응답하여, 서버(103)는 통지를 결정하고 통지를 갖는 메시지(334)를 클라이언트(121)에게 송신한다. 메시지(315)는 오브젝트를 식별하는 BN을 포함할 수 있다. 메시지(334)는 수정에 대한 데이타도 포함할 수 있어서, 클라이언트(121)는 서버(103)와 추가적으로 통신하지 않고 대응하는 캐싱된 오브젝트를 업데이트할 수 있다. 응답으로, 클라이언트(121)는 확인을 갖는 메시지(336)를 서버(103)에게 송신할 수 있다.
통신(340)은 재접속 수행에 응답하여 클라이언트(121)에게 통지를 제공하는 것과 관련되고 메시지(334 및 336)를 포함할 수 있다. 재접속 수행의 일부로서, 클라이언트(121)는 통지 본드와 관련된 통지 로그에 대한 요청을 포함하는 메시지(342)를 송신할 수 있다. 응답으로, 서버(103)는 통지 로그를 포함하는 메시지(344)를 송신할 수 있다. 서버(103)는 클라이언트(121)에 대해 갖는 통지 본드의 상태를 포함하는 메시지(346)를 송신할 수 있다. 클라이언트(121)는 이 상태를 사용하여 클라이언트 및 서버(103) 상에서 분실된 통지 본드를 발견하고 분실된 통지 본드를 재획득 또는 재설정할 수 있다. 응답으로, 클라이언트(121)는 확인을 포함한 메시지(348)를 송신할 수 있다.
도 4는 본 발명의 일 실시예에 따른 예시적인 필터 테이블(207)의 개략도이다. 필터 테이블(207)은 본드 관리자가 오브젝트 관련 이벤트를 스캔할 때 어느 오브젝트가 통지 본드와 관련되는지를 결정할 수 있게 한다. 도면에서 도시되는 바와 같이, 필터 테이블(400)은 오브젝트 식별자(411 내지 414)와 같은 오브젝트 식별자에 의해 인덱싱되는 데이타 구조이다. 오브젝트 식별자(411 내지 414)는 파일 이름 또는 디렉토리 이름, 경로, 이름 또는 경로의 해쉬, 또는 임의의 다른 식별 값일 수 있다. 각각의 오브젝트 식별자는 오브젝트를 식별하고 그 오브젝트와 관련된 엔트리를 인덱싱한다. 엔트리는 오브젝트와 관련된 다양한 데이타를 포함할 수 있다. 이 실시예에서, 엔트리는 오브젝트가 통지 본드와 관련된 것인지를 나타내는 불린(Boolean) 식별자를 포함한다. 다른 실시예에서, 필터 테이블(207)은 통지 본드와 관련된 오브젝트의 오브젝트 식별자만을 포함함으로써 단순화될 수 있다. 도 4에서 도시되는 바와 같이, 오브젝트 식별자(411 내지 414)는 오브젝트 P, Q, R 및 S를 식별하고, 엔트리는 오브젝트 P, Q, R 및 S가 통지 본드와 관련된 것임을 나타낸다.
도 5는 본 발명의 일 실시예에 따른 예시적인 서버 본드 테이블(215)의 개략도이다. 서버 본드 테이블(215)은 통지 본드를 관리하기 위한 서버 내의 본드 관리자에 의해 유지되는 데이타 구조이다. 도면에서 도시되는 바와 같이, 서버 본드테이블(215)은 오브젝트 식별자(511 내지 513)와 같은 오브젝트 식별자에 의해 인덱싱된다. 각각의 오브젝트 식별자는 오브젝트를 식별하고, 엔트리(520)와 같은 오브젝트와 관련된 엔트리를 인덱싱한다. 엔트리(520)는, 자신과 대응하는 엔트리를 특정 클라이언트와 연계시키는 클라이언트 식별자(541 내지 543), 통지 본드를 유일하게 식별하는 본드 번호(531 내지 533), 및 자신과 대응하는 엔트리와 관련된 통지 본드의 타입을 식별하는 본드 타입 식별자(551 내지 553)를 포함한다. 도 5에서 도시되는 바와 같이, 본드 테이블(215)은 오브젝트 P를 식별하는 오브젝트 식별자(511)를 포함한다. 엔트리(520)는 클라이언트(a, b 및 c)가 오브젝트 P와 관련된 통지 본드를 갖는다는 것을 식별한다.
도 6은 본 발명의 일 실시예에 따른 예시적인 클라이언트 본드 테이블(220)의 개략도이다. 클라이언트 본드 테이블(220)은 통지 본드를 관리하기 위하여 클라이언트 내의 통지 핸들러에 의해 유지되는 데이타 구조이다. 도면에서 도시되는 바와 같이, 클라이언트 본드 테이블은 서버 식별자(611 내지 612)와 같은 서버 식별자에 의해 인덱싱된 데이타 구조이다. 서버 식별자(611 내지 612)는 클라이언트와의 통지 본드를 갖는 서버를 식별한다. 도면에서 도시되는 바와 같이, 서버 식별자(611)는 서버 R11을 식별하고, 이것은 ABN 식별자(615), 오프셋(617) 및 엔트리(620)와 관련된다.
ABN 식별자(615)는 서버 R11과 관련된 집합 본드 번호(aggregate bond number)를 식별한다. 집합 본드 번호는 단순 증가하며 클라이언트가 분실된 통지 본드가 있는지를 결정할 수 있게 한다. 오프셋(617)은 특정 서버로부터 통지가 수신되는 통지 로그 내의 최저 위치를 식별하는 데 사용될 수 있다. 오프셋(617)은 클라이언트가 서버로부터 통지를 수신한 후에 커미트(commit)할 수 있게 한다. 이것은, 통지 로그가 클라이언트가 이미 수신한 통지를 포함할 수 있을 때에도 클라이언트가 서버 상의 통지 로그 전체를 통해 파스(parse)해야 하는 것을 방지한다. 오프셋(617)은 클라이언트별 통지 로그 또는 다중화된 통지 로그로의 포인터일 수 있다.
엔트리(620)는 클라이언트가 통지 본드를 관리하고 통지 본드와 관련된 캐싱된 오브젝트를 업데이트할 수 있게 하는 데이타를 포함한다. 이 실시예에서, 엔트리는 오브젝트 식별자(641 내지 643) 및 본드 번호(631 내지 633)를 포함한다. 오브젝트 식별자(641 내지 643)는 통지 본드에 대응하는 캐싱된 오브젝트를 식별한다. 캐싱된 오브젝트에 대한 파일 경로는 오브젝트 식별자(641 내지 643)에서 인코딩될 수 있다. 각각의 본드 번호(631 내지 633)는 클라이언트와 서버 R11 간의 특정 통지 본드를 유일하게 식별한다.
도 7은 본 발명의 일 실시예에 따라, 클라이언트가 서버에 의해 관리되는 오브젝트에 대하여 서버와의 통지 본드를 설정하는 처리의 수행 흐름도이다. 처리는 클라이언트가 오브젝트를 캐싱할 때마다 구현될 수도 있고, 클라이언트에 의한 별도의 시작을 필요로할 수도 있다. 시작 블록에서 이동하여, 처리(700)는 통지 본드에 대한 요청이 클라이언트에서 서버로 송신되는 블록(710)으로 이동한다. 블록(715)에서, 통지 본드는 서버로부터 수신된다. 통지 본드는 통지 본드를 유일하게 식별하는 본드 번호(BN)을 포함할 수 있다. 통지 본드는 통지 본드와 관련된오브젝트의 파일 경로와 같은 액세스 정보도 포함할 수 있다. 블록(720)에서, 클라이언트는 클라이언트 본드 테이블에 엔트리를 추가한다. 엔트리는 통지 본드에 대한 데이타를 포함한다. 블록(725)에서, 클라이언트는 서버와 관련된 집합 본드 번호(ABN)를 업데이트한다. 이 실시예에서, ABN은 통지 본드의 BN이다. 블록(730)에서, 클라이언트는 통지 본드와 관련된 오브젝트를 메모리에 캐싱한다. 그리고 처리(700)는 종료한다.
도 8은 본 발명의 일 실시예에 따라, 서버가 오브젝트에 대하여 클라이언트와의 통지 본드를 설정하는 처리(800)의 수행 흐름도이다. 처리는 클라이언트가 오브젝트의 캐싱을 요청할 때, 또는 클라이언트에 의한 개별 개시에 응답하여 구현될 수 있다.
시작 블록에서 이동하여, 처리(800)는 본드 요청이 클라이언트로부터 수신되는 블록(810)으로 이동한다. 블록(815)에서, 통지 본드가 설정된다. 블록(820)에서, 엔트리는 서버 본드 테이블에 추가된다. 엔트리는 필터 테이블에도 추가될 수 있다. 블록(825)에서, 클라이언트에게 유일한 ABN은 업데이트된다. 블록(830)에서, 통지 본드는 클라이언트에게 송신된다. 그리고 처리(800)는 종료한다.
도 9는 본 발명의 일 실시예에 따라, 서버가 클라이언트에게 통지를 송신하는 처리의 수행 흐름도이다. 시작 블록에서 이동하여, 처리(900)는 오브젝트와 관련된 오브젝트 관련 이벤트가 결정되는 블록(910)에서 진행된다. 결정 블록(915)에서, 통지 이벤트에 대하여 통지가 요구되는지를 결정한다. 이것은 오브젝트가 필터 테이블에서 참조되는지를 검사함으로써 결정될 수 있다. 통지가 요구되지 않으면, 처리는 종료한다.
결정 블록(915)에서, 오브젝트 관련 이벤트에 대하여 통지가 요구되면, 처리(900)는 오브젝트와 관련된 하나 이상의 통지 본드가 결정되는 블록(920)에서 진행된다. 서버 본드 테이블 내의 엔트리를 조사함으로써 결정이 이루어질 수 있다. 다수의 클라이언트가 오브젝트를 캐싱하고 통지 본드를 획득할 수 있기때문에 하나 이상의 통지 본드가 존재할 수 있다. 이하에 설명되는 처리는 통지 본드를 갖는 각각의 클라이언트에 적용할 수 있다.
결정 블록(923)에서, 오브젝트 관련 이벤트가 오브젝트에 대한 통지 본드를 갖는 클라이언트에 의해 야기되었는지가 결정된다. 만약 그렇다면, 클라이언트는 이미 오브젝트 관련 이벤트에 대하여 알고 있다는 것이며, 그 클라이언트에게 통지는 송신되지 않는다. 그 클라이언트가 통지 본드를 갖는 유일한 클라이언트라면, 처리(900)가 종료된다. 그렇지 않으면, 처리는 블록(925)에서 진행된다.
결정 블록(925)에서, 오브젝트 관련 이벤트가 오브젝트에 대한 통지 본드를 갖는 임의의 클라이언트에 의해 야기되지 않았다면 처리(900)는 블록(925)으로 이동한다. 블록(925)에서, 통지는 서버 본드 테이블 내의 데이타에 기초하여 생성된다.
결정 블록(930)에서, 클라이언트에게 통지를 송신할지가 결정된다. 서버가 통지 로그 내의 모든 통지를 기록하도록 구성되어 있다면, 이 결정은 필수적인 것이 아니다. 그러나, 서버가 특정 조건하에서 통지를 직접 클라이언트에게 송신하도록 구성되어 있다면, 그러한 조건이 존재하는 경우 결정은 긍정이 된다. 통지가송신되는 동안 접속해제가 발생했다면, 결정은 부정이 될 수 있다.
결정이 긍정인 경우, 처리(900)는 통지가 각각의 클라이언트에게 송신되는 블록(935)으로 이동하고 종료한다. 결정(930)에서, 결정이 부정인 경우, 그 클라이언트와 관련된 통지는 통지 로그에게 송신된다. 블록(935 및 940) 양자가 실행되고 다수의 클라이언트에 적용할 수 있다. 그리고 처리(900)는 종료한다.
도 10은 본 발명의 일 실시예에 따라, 클라이언트가 서버에 재접속하는 처리(1000)의 개략도이다. 처리(1000)는 재접속 기간 후에 서버에 재접속한 클라이언트에 의해 자동적으로 구현될 수 있다. 처리(1000)는 클라이언트에 의한 개별 개시, 또는 통지 로그의 크기가 미리 결정된 값에 도달할 경우의 서버에 의한 프롬프트(prompt)와 같은 외부 이벤트에 응답하여 구현될 수도 있다. 시작 블록에서 이동하여, 처리(1000)는 클라이언트 및 서버가 서로 인증되는 블록(1020)에서 진행된다. 블록(1025)에서, 클라이언트의 통지 본드 및 서버의 통지 본드는 분실된 통지 본드가 있는지를 확인하기 위하여 비교된다. 통지 본드에 대한 데이타가 시스템 충돌 또는 다른 실패로 인해 분실되면 통지 본드는 분실될 수 있다. 일 실시예에서, 클라이언트 ABN을 서버 ABN과 비교함으로써 비교가 수행된다.
결정 블록(1030)에서, 분실된 통지 본드가 서버 상에 존재하는지를 결정한다. 클라이언트 ABN이 서버 ABN보다 크다는 것은 서버 상에 분실된 통지 본드가 존재한다는 것을 나타낸다. 예를 들어, 클라이언트가 서버에 의해 주장된 ABN보다 큰 BN에 의해 나타나는 통지 본드를 주장하면, 클라이언트에 의해 주장된 통지 본드는 서버가 알지 못하는 통지 본드이다.
분실된 통지 본드가 존재하면, 처리(1000)는 분실된 통지 본드가 서버로부터 재획득되는 블록(1050)에서 진행된다. 예를 들어, 클라이언트는 통지 본드를 재획득하기 위하여 도 7과 관련하여 전술한 처리(700)를 개시할 수 있다. 클라이언트는 그러한 통지 본드 및 그와 관련된 캐시 오브젝트를 폐기할 수도 있다. 처리는 블록(1040)에서 진행된다.
결정 블록(1030)에서, 서버 상에 분실된 본드가 없다면, 처리(1000)는 클라이언트 상에 분실된 본드가 있는지를 결정하는 블록(1040)으로 이동한다. 클라이언트 ABN이 서버 ABN보다 작다는 것은 클라이언트 상에 분실된 통지 본드가 존재한다는 것을 나타낸다. 예를 들어, 서버가 클라이언트에 의해 주장된 ABN보다 큰 BN에 의해 나타나는 통지 본드를 주장하면, 서버에 의해 주장된 통지 본드는 클라이언트가 알지 못하는 통지 본드이다. 클라이언트 상에 분실된 본드가 존재하지 않는다면, 처리는 종료된다. 클라이언트 상에 분실된 통지 본드가 존재하면, 처리(1000)는 이 분실된 통지 본드를 제거하기 위하여 클라이언트 본드 테이블이 업데이트되는 블록(1045)에서 진행된다. 클라이언트는 분실된 통지 본드와 관련된 오브젝트를 캐싱하거나 본드를 폐기할 수도 있다. 그리고 처리는 종료한다.
도 11은 본 발명의 일 실시예에 따라, 클라이언트가 통지 본드를 취하하는 처리(1100)의 개략도이다. 처리(1100)는 하나 이상의 통지 본드를 취하하는 클라이언트에 의해 구현될 수 있다. 설명을 위하여, 처리(1100)는 단일 통지 본드를 취하하는 문맥에서 설명될 것이다. 시작 블록에서 이동하여, 처리(1100)는 통지 본드를 취하하기로 결정하는 블록(1120)으로 이동한다. 클라이언트는 여러가지 이유로 통지 본드를 취하하기를 원할 수 있다. 예를 들어, 클라이언트가 특정 캐싱된 오브젝트가 더이상 필요 없다고 결정하는 경우, 클라이언트는 그 캐싱된 오브젝트를 삭제하고 관련된 통지 본드를 취하할 수 있다. 블록(1125)에서, 클라이언트는 통지 본드를 취하하는 동작을 수행한다. 예를 들어, 클라이언트는 통지 본드를 구현하기 위한 다양한 테이블로부터 통지 본드와 관련된 데이타를 삭제할 수 있다. 블록(1130)에서, 클라이언트는 서버에게 통지 본드를 취하하기 위한 요청을 송신한다. 일관성을 유지하기 위하여, 클라이언트는 서버에게 취하 요청을 송신하기 전에 블록(1125)에서 통지 본드 취하를 커미트하도록 블록(1130)의 동작을 수행할 수 있다. 응답으로, 서버는 블록(1135)에서 도시되는 바와 같이 요청에 대한 확인을 송신할 수 있다. 그리고 처리는 종료한다.
도 12는 본 발명의 일 실시예에 따라, 서버가 통지 본드를 취하하는 처리(1200)의 개략도이다. 처리(1200)는 하나 이상의 통지 본드를 취하하는 서버에 의해 구현될 수 있다. 시작 블록으로부터 이동하여, 처리(1200)는 통지 본드를 취하하기로 결정하는 블록(1220)으로 이동한다. 서버는 다수의 상이한 이유로 통지 본드를 취하하기를 원할 수 있다. 예를 들어, 서버가 오브젝트를 관리하는 것을 중단한 경우, 서버는 그 오브젝트와 관련된 통지 본드를 취하할 수 있다. 클라이언트가 장기간동안 서버와 접촉하지 않았다면 서버는 그 특정 클라이언트와 관련된 통지 본드를 취하할 수 있다.
결정 블록(1225)에서, 특정 클라이언트와 관련된 통지 본드 모두가 취하될지를 결정한다. 특정 클라이언트와 관련된 통지 본드 모두가 취하되는 것은 아닌 경우, 처리(1200)는 블록(1229)에서 진행한다. 블록(1229)에서, 서버는 통지 본드를 취하하기 위한 동작을 수행한다. 그리고 처리는 블록(1230)으로 이동한다.
결정 블록(1225)에서, 특정 클라이언트와 관련된 모든 통지 본드가 취하된다면, 처리는 클라이언트와 관련된 ABN이 0으로 설정되는 블록(1227)으로 이동한다. 처리(1200)는 서버가 클라이언트와 관련된 통지 본드 모두를 취하하기 위한 동작을 수행하는 블록(1228)에서 진행한다. 그리고 처리는 블록(1230)으로 이동한다.
블록(1230)에서, 서버는 클라이언트에게 특정 통지 본드, 또는 클라이언트의 통지 본드 모두를 취하한 것에 대한 통지를 제공한다. 통지는 통지 로그에 통지를 기록함으로써 제공될 수 있다. 일관성을 유지하기 위하여, 클라이언트는 블록(1230)에서 클라이언트에게 통지를 송신하기 전에, 통지 본드의 취하를 커미트하도록 블록(1228) 또는 블록(1229)의 동작을 수행할 수 있다. 서버는 블록(1235)에서 도시되는 바와 같이 클라이언트로부터 확인을 수신할 수 있다. 그리고 처리는 종료한다.
결론적으로, 본 발명은 클라이언트가 대량 오브젝트를 캐싱하고 캐싱된 오브젝트를 서버의 대응 오브젝트와 함께 신속하게 동기화할 수 있게 한다. 클라이언트가 어느 캐싱된 오브젝트가 서버에서 수정되었고 업데이트되어야 하는지를 알 수 있게 함으로써, 본 발명의 수용력 및 효율을 부분적으로 획득한다. 통지 본드는 캐싱된 오브젝트에 행해진 변경이 클라이언트에게 전달되는 것을 확실히하는 데 사용된다. 지속적인 공유되는 통지 본드 상태는 서버 및 클라이언트가 클라이언트및 서버의 재시작 및 리부팅에 견디기 위하여 통지 본드를 재설정하는 것을 가능하게 한다. 또한, 본 발명은 클라이언트가 서버 내의 내용 일부분만 캐싱하는 것에 관심있는 상황에서 트래픽을 최소화한다.
상술한 명세서, 예 및 정보는 본 발명을 완전히 설명한다. 본 발명의 다수의 실시예는 본 발명의 취지 및 범주를 벗어나지 않으며, 본 발명은 이하에 첨부된 청구항에 귀속한다.

Claims (64)

  1. 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법에 있어서,
    상기 서버에 의해 관리되는 원본 오브젝트로부터 캐싱된 오브젝트를 생성하는 단계; 및
    상기 서버와의 통지 본드(notification bond)를 설정하는 단계 - 상기 통지 본드는 상기 클라이언트가 상기 원본 오브젝트와 관련된 오브젝트 관련 이벤트에 응답하여 상기 서버로부터 통지를 획득할 수 있게 함 -
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 오브젝트 관련 이벤트는 상기 원본 오브젝트가 수정된 때를 포함하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 통지 본드를 설정하는 단계는 상기 캐싱된 오브젝트를 생성하는 단계에 응답하여 수행되는 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 서버로부터 통지를 획득하는 단계; 및
    상기 통지를 사용하여 상기 캐싱된 오브젝트를 업데이트하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 통지를 획득하는 것은 상기 통지를 포함하는 통지 로그(notification log)를 검색하는 것을 포함하는 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    접속해재 기간 후 상기 서버와 재접속하는 단계;
    통지를 포함하는 통지 로그를 요청하는 단계; 및
    상기 통지를 사용하여 상기 캐시 오브젝트를 상기 원본 오브젝트에 동기화하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 통지 본드와 관련된 상태를 유지하는 단계를 더 포함하는 컴퓨터 구현 방법.
  8. 제7항에 있어서,
    상기 상태는 영구적인 매체 내에 유지되는 컴퓨터 구현 방법.
  9. 제8항에 있어서,
    상기 상태는 상기 통지 본드를 유일하게 식별하는 본드 번호를 포함하는 컴퓨터 구현 방법.
  10. 제8항에 있어서,
    상기 상태는 상기 클라이언트에게 유일한 집합 본드 번호(aggregate bond number)를 포함하는 컴퓨터 구현 방법.
  11. 제8항에 있어서,
    재시작 후에 상기 클라이언트 상에 상기 상태를 재설정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  12. 제11항에 있어서,
    상기 클라이언트 상의 상태와 상기 서버 상의 대응 상태를 동기화하는 단계를 더 포함하는 컴퓨터 구현 방법.
  13. 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법에 있어서,
    상기 클라이언트와의 통지 본드를 설정하는 단계 - 상기 통지 본드는 상기 클라이언트가 오브젝트와 관련된 오브젝트 관련 이벤트에 응답하여 상기 서버로부터 통지를 획득할 수 있게 함 - ; 및
    상기 클라이언트가 상기 오브젝트를 캐싱할 수 있게 하는 단계
    를 포함하는 컴퓨터 구현 방법.
  14. 제13항에 있어서,
    상기 오브젝트 관련 이벤트는 상기 오브젝트가 수정된 시간을 포함하는 컴퓨터 구현 방법.
  15. 제13항에 있어서,
    상기 통지 본드를 설정하는 단계는 상기 오브젝트를 캐싱하기 위한 상기 클라이언트로부터의 요청에 응답하여 수행되는 컴퓨터 구현 방법.
  16. 제13항에 있어서,
    상기 클라이언트에 의해 야기되지 않은 오브젝트 관련 이벤트를 결정하는 단계;
    상기 통지 본드에 따라 통지를 생성하는 단계; 및
    상기 통지를 상기 클라이언트에게 제공하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  17. 제13항에 있어서,
    상기 클라이언트에 의해 야기되지 않은 오브젝트 관련 이벤트를 결정하는 단계;
    상기 통지 본드에 따라 통지를 생성하는 단계; 및
    상기 통지를 통지 로그에 기록하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  18. 제17항에 있어서,
    상기 클라이언트와의 접속을 설정하는 단계; 및
    상기 클라이언트에게 상기 통지 로그를 송신하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  19. 오브젝트를 공유하는 분산 파일 시스템에 있어서,
    원본 오브젝트를 관리하도록 구성되고 클라이언트에게 통지 본드를 발행하도록 구성된 본드 관리자를 포함하는 서버를 포함하고,
    상기 통지 본드 각각은 클라이언트가 원본 오브젝트와 관련된 오브젝트 관련 이벤트에 응답하여 상기 서버로부터 통지를 획득할 수 있게 하는 분산 파일 시스템.
  20. 제19항에 있어서,
    상기 본드 관리자는 상기 통지 본드에 따라 상기 클라이언트에게 통지를 제공하도록 구성된 분산 파일 시스템.
  21. 제19항에 있어서,
    상기 서버는 상기 원본 오브젝트를 관리하도록 구성된 파일 시스템 관리자를 더 포함하고, 상기 본드 관리자는 상기 파일 시스템 관리자와 관련된 통신 트래픽을 모니터링함으로써 오브젝트 관련 이벤트를 결정하도록 구성된 필터 컴포넌트를 포함하는 분산 파일 시스템.
  22. 제19항에 있어서,
    상기 본드 관리자는 본드 테이블을 유지하도록 구성되고, 상기 본드 테이블은 각각의 통지 본드를 원본 오브젝트, 및 통지를 제공받는 클라이언트와 연계하는 상태를 포함하는 분산 파일 시스템.
  23. 제19항에 있어서,
    상기 본드 관리자는 통지 로그를 유지하도록 구성되고, 상기 통지 로그는 상기 클라이언트에 대한 통지를 포함하는 분산 파일 시스템.
  24. 제19항에 있어서,
    상기 서버에 의해 관리되는 원본 오브젝트와 관련된 캐싱된 오브젝트를 생성하도록 구성된 클라이언트를 더 포함하고, 상기 클라이언트는 상기 서버와 함께 상기 원본 오브젝트와 관련된 통지 본드를 유지하도록 구성된 통지 핸들러를 포함하는 분산 파일 시스템.
  25. 제24항에 있어서,
    상기 통지 핸들러는 서버로부터 상기 통지 본드와 관련된 통지 로그를 획득하고, 상기 통지 로그에 따라 상기 캐싱된 오브젝트를 업데이트하도록 구성된 분산 파일 시스템.
  26. 제25항에 있어서,
    상기 통지 로그는 복수의 통지 본드와 관련된 통지들을 포함하는 분산 파일 시스템.
  27. 제24항에 있어서,
    상기 통지 핸들러는 본드 테이블을 유지하도록 구성되고, 상기 본드 테이블은 각각의 통지 본드를 캐싱된 오브젝트, 및 상기 캐싱된 오브젝트에 대응하는 원본 오브젝트를 관리하는 서버와 연계하는 상태를 포함하는 분산 파일 시스템.
  28. 데이타 구조로 인코딩되는 컴퓨터 판독가능 매체에 있어서,
    오브젝트 식별자를 포함하는 제1 인덱싱 데이타 필드 - 상기 오브젝트 식별자 각각은 서버에 의해 관리되는 오브젝트를 유일하게 식별함 -; 및
    엔트리를 포함하는 제2 데이타 필드 - 상기 엔트리 각각은 상기 제1 인덱싱 데이타 필드 내의 오브젝트 식별자에 인덱싱되고, 서버와 상기 오브젝트 식별자에 의해 식별되는 오브젝트를 캐싱하는 클라이언트 간의 통지 본드와 관련된 상태를 포함함 -
    를 포함하는 컴퓨터 판독가능 매체.
  29. 제28항에 있어서,
    상기 제1 인덱싱 데이타 필드 내의 오브젝트 식별자 각각은 오브젝트와 관련된 파일 경로를 포함하는 컴퓨터 판독가능 매체.
  30. 제29항에 있어서,
    상기 오브젝트 식별자 각각은 상기 파일 경로의 해쉬를 포함하는 컴퓨터 판독가능 매체.
  31. 제28항에 있어서,
    상기 제2 데이타 필드의 엔트리 각각은 통지 본드를 유일하게 식별하는 본드 번호를 포함하는 컴퓨터 판독가능 매체.
  32. 제28항에 있어서,
    상기 제2 데이타 필드의 엔트리 각각은 통지 본드와 관련된 클라이언트를 식별하는 클라이언트 식별자를 포함하는 컴퓨터 판독가능 매체.
  33. 제28항에 있어서,
    상기 제2 데이타 필드의 엔트리 각각은 통지 본드와 관련된 타입을 식별하는 타입 식별자를 포함하는 컴퓨터 판독가능 매체.
  34. 데이타 구조로 인코딩된 컴퓨터 판독가능 매체에 있어서,
    서버 식별자를 포함하는 제1 인덱싱 데이타 필드 - 상기 서버 식별자 각각은 원본 오브젝트를 관리하는 서버를 유일하게 식별하고, 상기 원본 오브젝트는 클라이언트에 의해 캐싱됨 - ; 및
    엔트리를 포함하는 제2 데이타 필드 - 상기 엔트리 각각은 상기 제1 인덱싱 데이타 필드 내의 서버 식별자에 인덱싱되고, 상기 클라이언트와 상기 서버 식별자에 의해 식별되는 서버 간의 통지 본드와 관련된 상태를 포함하며, 상기 통지 본드는 원본 오브젝트로부터 상기 클라이언트에 의해 생성된 캐싱된 오브젝트와 관련됨 -
    를 포함하는 컴퓨터 판독가능 매체.
  35. 제34항에 있어서,
    상기 제2 데이타 필드의 엔트리 각각은 통지 본드를 유일하게 식별하는 본드 번호를 포함하는 컴퓨터 판독가능 매체.
  36. 제34항에 있어서,
    상기 제2 데이타 필드의 엔트리 각각은 원본 오브젝트를 식별하는 원본 오브젝트 식별자를 포함하는 컴퓨터 판독가능 매체.
  37. 제34항에 있어서,
    상기 제2 데이타 필드의 엔트리 각각은 원본 오브젝트와 관련된 캐싱된 오브젝트를 식별하는 캐싱된 오브젝트 식별자를 포함하는 컴퓨터 판독가능 매체.
  38. 제34항에 있어서,
    집합 본드 번호를 포함하는 제3 데이타 필드를 더 포함하는 컴퓨터 판독가능 매체.
  39. 제34항에 있어서,
    통지 로그 오프셋을 포함하는 제3 데이타 필드를 더 포함하는 컴퓨터 판독가능 매체.
  40. 오브젝트를 공유하는 분산 파일 시스템에 있어서,
    클라이언트가 서버에 의해 관리되는 원본 오브젝트를 캐싱하기 위한 수단; 및
    상기 서버 및 상기 클라이언트와의 통지 본드를 설정하는 수단 - 상기 통지 본드는 상기 클라이언트가 상기 원본 오브젝트와 관련된 오브젝트 관련 이벤트에 응답하여 상기 서버로부터 통지를 획득할 수 있게 함 -
    을 포함하는 분산 파일 시스템.
  41. 제40항에 있어서,
    상기 서버로부터 통지를 획득하는 수단; 및
    상기 통지를 사용하여 상기 캐싱된 오브젝트를 업데이트하는 수단
    을 더 포함하는 분산 파일 시스템.
  42. 제40항에 있어서,
    접속해재 기간후에 상기 서버에 재접속하는 수단;
    통지를 포함하는 통지 로그를 요청하는 수단; 및
    상기 통지를 사용하여 상기 캐시 오브젝트를 동기화하는 수단
    을 더 포함하는 분산 파일 시스템.
  43. 제40항에 있어서,
    오브젝트 관련 이벤트를 결정하는 수단;
    상기 통지 본드에 따라 통지를 생성하는 수단; 및
    상기 통지를 상기 클라이언트에게 제공하는 수단
    을 더 포함하는 분산 파일 시스템.
  44. 제40항에 있어서,
    오브젝트 관련 이벤트를 결정하는 수단;
    상기 통지 본드에 따라 통지를 생성하는 수단; 및
    상기 통지를 통지 로그에 기록하는 수단
    을 더 포함하는 분산 파일 시스템.
  45. 제44항에 있어서,
    상기 클라이언트와의 접속을 설정하는 수단; 및
    상기 통지 로그를 상기 클라이언트에게 송신하는 수단
    을 포함하는 분산 파일 시스템.
  46. 제40항에 있어서,
    상기 클라이언트가 상기 통지 본드를 취하하기 위한 수단을 더 포함하는 분산 파일 시스템.
  47. 제40항에 있어서,
    상기 서버가 상기 통지 본드를 취하하기 위한 수단을 더 포함하는 분산 파일 시스템.
  48. 제40항에 있어서,
    상기 서버가 상기 클라이언트와 관련된 모든 통지 본드를 취하하기 위한 수단을 더 포함하는 분산 파일 시스템.
  49. 제48항에 있어서,
    상기 서버가 상기 취하된 통지 본드와 관련된 클리어 상태를 재설정하기 위한 수단을 더 포함하는 분산 파일 시스템.
  50. 서버에 의해 관리되는 원본 오브젝트에 대응하는 캐싱된 오브젝트를 유지하는 컴퓨터 구현 방법에 있어서,
    통신 링크없는 일정 기간 후에 상기 클라이언트와 상기 서버 간의 통신 연결을 재설정하는 단계;
    상기 일정 기간동안 상기 원본 오브젝트 중 적어도 하나의 원본 오브젝트에 일어난 변경에 관하여 상기 서버로부터 통지를 획득하는 단계; 및
    상기 캐싱된 오브젝트 모두를 동기화하지 않고, 상기 통지를 사용하여 상기 적어도 하나의 원본 오브젝트에 대응하는 캐시 오브젝트를 동기화하는 단계
    를 포함하는 방법.
  51. 클라이언트에 의해 유지되는 캐싱된 오브젝트를 서버에 의해 유지되는 대응하는 원본 오브젝트에 동기화하는 컴퓨터 구현 방법에 있어서,
    상기 서버에 의해 상기 원본 오브젝트와 관련된 서버 본드 상태를 지속적으로 유지하는 단계 - 상기 서버 본드 상태는 상기 원본 오브젝트와 관련된 통지 본드에 대응하고, 상기 통지 본드 각각은 상기 원본 오브젝트 중 적어도 하나의 원본 오브젝트가 수정되었을 때 상기 클라이언트가 상기 서버로부터 통지를 획득할 수 있게 함 - ;
    상기 서버 본드 상태에 대응하는 클라이언트 본드 상태를 상기 클라이언트에 의해 지속적으로 유지하는 단계
    를 포함하는 컴퓨터 구현 방법.
  52. 제51항에 있어서,
    서버 재부팅 또는 재시작 후에 상기 서버 본드 상태를 재설정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  53. 제52항에 있어서,
    서버 재부팅 또는 재시작 후에 상기 통지 본드와 관련된 통지를 복구하는 단계를 더 포함하는 컴퓨터 구현 방법.
  54. 제51항에 있어서,
    클라이언트 재부팅 또는 재시작 후에 상기 클라이언트 본드 상태를 재설정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  55. 제54항에 있어서,
    서버 재부팅 또는 재시작 후에 상기 통지 본드와 관련된 통지를 복구하는 단계를 더 포함하는 컴퓨터 구현 방법.
  56. 제51항에 있어서,
    상기 서버에 의해 통지 본드를 취하하기로 결정하는 단계;
    상기 서버에 의해 상기 통지 본드를 취하하는 동작을 수행하는 단계; 및
    상기 서버에 의해 상기 통지 본드를 취하하는 것에 대하여 클라이언트에게 통지를 제공하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  57. 제56항에 있어서,
    상기 동작을 수행하는 단계는 상기 서버를 상기 통지 본드의 취하에 커미트(commit)하는 컴퓨터 구현 방법.
  58. 제57항에 있어서,
    상기 동작을 수행하는 단계는 상기 통지를 상기 클라이언트에게 제공하기 전에 완료되는 컴퓨터 구현 방법.
  59. 제51항에 있어서,
    상기 서버에 의해 상기 클라이언트와 관련된 모든 통지 본드를 취하하기로 결정하는 단계;
    상기 서버에 의해 상기 통지 본드를 취하하는 동작을 수행하는 단계; 및
    상기 서버에 의해 상기 통지 본드를 취하하는 것에 대하여 상기 클라이언트에게 통지를 제공하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  60. 제59항에 있어서,
    상기 동작을 수행하는 단계는 상기 서버를 상기 통지 본드의 취하에 커미트하는 컴퓨터 구현 방법.
  61. 제60항에 있어서,
    상기 동작을 수행하는 단계는 상기 통지를 상기 클라이언트에게 제공하기 전에 완료되는 컴퓨터 구현 방법.
  62. 제51항에 있어서,
    상기 클라이언트에 의해 통지 본드를 취하하기로 결정하는 단계;
    상기 클라이언트에 의해 상기 통지 본드를 취하하는 동작을 수행하는 단계;및
    상기 서버에게 상기 통지 본드를 취하할 것을 요청하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  63. 제62항에 있어서,
    상기 동작을 수행하는 단계는 상기 클라이언트가 상기 통지 본드를 취하하게 하는 컴퓨터 구현 방법.
  64. 제63항에 있어서,
    상기 동작을 수행하는 단계는 상기 서버에게 상기 통지 본드를 취하할 것을 요청하기 전에 완료되는 컴퓨터 구현 방법.
KR1020040045442A 2003-06-19 2004-06-18 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체 KR101150146B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/600,787 2003-06-19
US10/600,787 US7577960B2 (en) 2003-06-19 2003-06-19 System and method for managing cached objects using notifications bonds

Publications (2)

Publication Number Publication Date
KR20040111156A true KR20040111156A (ko) 2004-12-31
KR101150146B1 KR101150146B1 (ko) 2012-06-08

Family

ID=33418576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040045442A KR101150146B1 (ko) 2003-06-19 2004-06-18 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체

Country Status (6)

Country Link
US (1) US7577960B2 (ko)
EP (1) EP1489811B1 (ko)
JP (1) JP4794143B2 (ko)
KR (1) KR101150146B1 (ko)
CN (1) CN1592203A (ko)
DE (1) DE602004004200T2 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134623B2 (en) * 2001-05-17 2006-11-14 Rader Companies Hammermill
US20040267967A1 (en) * 2003-06-30 2004-12-30 Intel Corporation Method, system, and program for managing requests to a network adaptor
CN100407623C (zh) * 2005-02-23 2008-07-30 腾讯科技(深圳)有限公司 一种通信系统中用户数据更新的方法及系统
US20080183662A1 (en) * 2007-01-31 2008-07-31 Benjamin Clay Reed Resolving at least one file-path for a change-record of a computer file-system object in a computer file-system
US8433747B2 (en) * 2008-02-01 2013-04-30 Microsoft Corporation Graphics remoting architecture
US8799409B2 (en) * 2009-01-15 2014-08-05 Ebay Inc. Server side data cache system
US20100231582A1 (en) * 2009-03-10 2010-09-16 Yogurt Bilgi Teknolojileri A.S. Method and system for distributing animation sequences of 3d objects
CN101873336A (zh) * 2009-04-27 2010-10-27 上海融越信息技术有限公司 基于存储设备的nas虚拟文件系统
US8825597B1 (en) * 2009-08-13 2014-09-02 Dropbox, Inc. Network folder synchronization
CN102117309B (zh) * 2010-01-06 2013-04-17 卓望数码技术(深圳)有限公司 一种数据缓存系统和数据查询方法
US8719845B2 (en) * 2010-05-19 2014-05-06 Microsoft Corporation Sharing and synchronization of objects
US9104715B2 (en) * 2010-06-23 2015-08-11 Microsoft Technology Licensing, Llc Shared data collections
US8713098B1 (en) 2010-10-01 2014-04-29 Google Inc. Method and system for migrating object update messages through synchronous data propagation
US9165285B2 (en) 2010-12-08 2015-10-20 Microsoft Technology Licensing, Llc Shared attachments
US11308449B2 (en) 2011-04-28 2022-04-19 Microsoft Technology Licensing, Llc Storing metadata inside file to reference shared version of file
US8682989B2 (en) 2011-04-28 2014-03-25 Microsoft Corporation Making document changes by replying to electronic messages
US20120278402A1 (en) * 2011-04-28 2012-11-01 Microsoft Corporation Presenting links to content as attachments in electronic messages
US10552799B2 (en) 2011-04-28 2020-02-04 Microsoft Technology Licensing, Llc Upload of attachment and insertion of link into electronic messages
US9137185B2 (en) 2011-04-28 2015-09-15 Microsoft Technology Licensing, Llc Uploading attachment to shared location and replacing with a link
US10185932B2 (en) 2011-05-06 2019-01-22 Microsoft Technology Licensing, Llc Setting permissions for links forwarded in electronic messages
US9591059B2 (en) * 2013-03-13 2017-03-07 International Business Machines Corporation File change notifications in a scale-out NAS system
KR20150114530A (ko) * 2013-03-15 2015-10-12 후아웨이 테크놀러지 컴퍼니 리미티드 모바일 디바이스 그룹 간의 정보의 동기화 및 협업
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US10430240B2 (en) * 2015-10-13 2019-10-01 Palantir Technologies Inc. Fault-tolerant and highly-available configuration of distributed services
US9697269B2 (en) * 2015-10-29 2017-07-04 Dropbox, Inc. Content item block replication protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11467731B2 (en) 2020-07-30 2022-10-11 Red Hat, Inc. Client driven multi-site consistency for object storage

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US612212A (en) * 1898-10-11 raster
JPH0668010A (ja) * 1992-08-17 1994-03-11 Nippon Telegr & Teleph Corp <Ntt> 分散キャッシュ管理システム
US5911066A (en) 1994-02-22 1999-06-08 Microsoft Corporation Data transfer utilizing a single functionally independent data transfer mechanism
US6128648A (en) 1994-11-23 2000-10-03 International Business Machines Corporation Information handling system and method for maintaining coherency between network servers and mobile terminals
AU6678096A (en) 1995-07-20 1997-02-18 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US6138141A (en) 1996-10-18 2000-10-24 At&T Corp Server to client cache protocol for improved web performance
EP0979450B1 (en) * 1997-04-30 2002-06-19 The Foxboro Company Methods and systems for synchronizing processes executing on a digital data processing system
US6256712B1 (en) 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6026413A (en) 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
EP0926608B1 (en) * 1997-12-24 2004-03-10 Nortel Networks Limited Distributed persistent storage for intermittently connected clients
US6161125A (en) * 1998-05-14 2000-12-12 Sun Microsystems, Inc. Generic schema for storing configuration information on a client computer
US6721740B1 (en) * 1998-05-29 2004-04-13 Sun Microsystems, Inc. Method and apparatus of performing active update notification
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
JP2000137689A (ja) * 1998-11-04 2000-05-16 Hitachi Ltd 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US6529921B1 (en) 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
GB2371902B (en) * 1999-09-10 2004-11-17 Avantgo Inc System, method, and computer program product for interactive interfacing with mobile devices
JP3594229B2 (ja) * 1999-09-27 2004-11-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 文書ファイル共有化システム、コラボレーションサーバー、文書ファイルの転送方法、及び記憶媒体
US6687698B1 (en) 1999-10-18 2004-02-03 Fisher Rosemount Systems, Inc. Accessing and updating a configuration database from distributed physical locations within a process control system
US6446176B1 (en) * 2000-03-09 2002-09-03 Storage Technology Corporation Method and system for transferring data between primary storage and secondary storage using a bridge volume and an internal snapshot copy of the data being transferred
US7099926B1 (en) * 2000-07-06 2006-08-29 International Business Machines Corporation Object caching and update queuing technique to improve performance and resource utilization
US7127514B2 (en) 2000-12-28 2006-10-24 Microsoft Corporation Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client
US6941326B2 (en) * 2001-01-24 2005-09-06 Microsoft Corporation Accounting for update notifications in synchronizing data that may be represented by different data structures
JP4230677B2 (ja) * 2001-05-15 2009-02-25 ソニー株式会社 情報管理システム、情報管理装置、情報管理方法、情報利用クライアント、情報利用クライアントプログラムならびに情報利用クライアントプログラムを記録した情報記録媒体
US20030225885A1 (en) * 2002-05-31 2003-12-04 Comverse, Ltd. Caching for limited bandwidth networks

Also Published As

Publication number Publication date
JP4794143B2 (ja) 2011-10-19
EP1489811A2 (en) 2004-12-22
JP2005011354A (ja) 2005-01-13
US7577960B2 (en) 2009-08-18
EP1489811A3 (en) 2005-03-23
DE602004004200D1 (de) 2007-02-22
US20040261082A1 (en) 2004-12-23
CN1592203A (zh) 2005-03-09
KR101150146B1 (ko) 2012-06-08
EP1489811B1 (en) 2007-01-10
DE602004004200T2 (de) 2007-10-11

Similar Documents

Publication Publication Date Title
KR101150146B1 (ko) 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체
US9436694B2 (en) Cooperative resource management
KR101570892B1 (ko) 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템
US8862644B2 (en) Data distribution system
CN107861686B (zh) 文件存储方法、服务端和计算机可读存储介质
US10579595B2 (en) Method and device for calling a distributed file system
US9262324B2 (en) Efficient distributed cache consistency
EP2263163B1 (en) Content management
US7243136B2 (en) Approach for managing and providing content to users
US6487581B1 (en) Apparatus and method for a multi-client event server
US8935560B2 (en) System and method of file locking in a network file system federated namespace
US9118696B2 (en) Method, data transfer arrangement, server and terminal device for updating information in a terminal device
CN108683668B (zh) 内容分发网络中的资源校验方法、装置、存储介质及设备
US20060123121A1 (en) System and method for service session management
US8417679B1 (en) Fast storage writes
CN108540367A (zh) 一种消息处理方法及系统
US20090165011A1 (en) Resource management method, information processing system, information processing apparatus, and program
CN111193789A (zh) 订阅信息推送方法、装置、计算机设备和可读存储介质
CN114900449B (zh) 一种资源信息管理方法、系统及装置
CN110427266B (zh) 基于mqtt服务的数据冗余架构
US20240015135A1 (en) Domain management and synchronization system
JP4247975B2 (ja) データ管理方法、データ管理システム、およびそのためのプログラムならびに記録媒体
KR20210044281A (ko) 클라우드 저하 모드에서 지속적인 디바이스 동작 안정성을 보장하기 위한 방법 및 장치
JPH0962602A (ja) サーバ情報管理方法および管理システム
CN116016477A (zh) 一种连接浏览器页面的方法、装置、设备和存储介质

Legal Events

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

Payment date: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee