KR102098415B1 - 캐시 관리 기법 - Google Patents

캐시 관리 기법 Download PDF

Info

Publication number
KR102098415B1
KR102098415B1 KR1020147027963A KR20147027963A KR102098415B1 KR 102098415 B1 KR102098415 B1 KR 102098415B1 KR 1020147027963 A KR1020147027963 A KR 1020147027963A KR 20147027963 A KR20147027963 A KR 20147027963A KR 102098415 B1 KR102098415 B1 KR 102098415B1
Authority
KR
South Korea
Prior art keywords
data
hash
cache
client device
server computer
Prior art date
Application number
KR1020147027963A
Other languages
English (en)
Other versions
KR20140143775A (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 KR20140143775A publication Critical patent/KR20140143775A/ko
Application granted granted Critical
Publication of KR102098415B1 publication Critical patent/KR102098415B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

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

Abstract

본 명세서에는 캐시 관리에 대한 개념 및 기술이 개시되었다. 본 명세서에 개시된 개념 및 기술에 따르면, 서버 컴퓨터는 클라이언트 디바이스에 의해 서버 컴퓨터로부터 다운로드되는 및/또는 서버 컴퓨터에 업로드되는 데이터를 저장하는 캐시를 유지하기 위해 캐시 모듈을 실행하도록 구성된 클라이언트 디바이스와 통신하도록 구성될 수 있다. 서버 컴퓨터는 서버 컴퓨터에 저장된 데이터에 대한 요청을 수신하도록 구성될 수 있다. 서버 컴퓨터는 요청된 데이터에 상응하는 해시로 이러한 요청에 응답하도록 구성될 수 있다. 클라이언트 디바이스는 해시를 찾기 위해 캐시를 검색할 수 있고, 해시가 발견되었다면 캐시로부터 데이터를 획득할 수 있거나, 및/또는 해시가 발견되지 않았다면 서버 컴퓨터로부터 데이터를 다운로드할 수 있다. 또한 클라이언트 디바이스는 데이터를 서버 컴퓨터에 업로드함에 따라 캐시를 업데이트하도록 구성될 수 있다.

Description

캐시 관리 기법{CACHE MANAGEMENT}
일부 조직들은 다량의 리소스를 소비하여 지리학적으로 분산된 위치들 사이의 광역 네트워크("WAN")를 획득 및 유지한다. 예를 들어, 일부 조직은 위치들 간의 통신을 지원하기 위해 값비싼 지하, 공중(over the air) 및/또는 해저 접속 매체를 설치 및/또는 유지한다. 일부 경우에서, 위치들 사이의 거리 및/또는 대역폭을 지원하도록 선택된 매체에 따라 위치들에서의 동작을 지원하기 위해 다량의 대역폭이 반드시 이용가능해야 하며 유지하는 비용이 높을 수 있다. 이러한 케이블을 설치 및 유지하는 비용이 높을 수 있지만, 분산된 위치들에 서비스를 제공하기 위해 복수의 데이터 센터를 생성하고 및 호스팅하는 개념은 더욱 비용을 높일 수 있으며, 따라서 비실용적일 수 있다. 이러한 문제와 다른 문제들을 해결하기 위해, 일부 조직은 다양한 위치들 사이에 필요한 대역폭을 감소시키도록 파일들의 점증적 업데이트를 사용한다.
파일들을 점증적으로 업데이트할 때, 컴퓨터는 전체 파일 및/또는 파일의 새로운 버전을 다운로드하는 대신 파일에 대한 점증적 업데이트를 나타내는 데이터를 다운로드하도록 구성될 수 있다. 이러한 접근법은 전송되는 데이터의 양을 감소시킬 수 있지만, 다양한 파일들에 대한 점증적 업데이트를 하는 사용자들에 의해 소비되는 대역폭은 여전히 상당할 수 있다. 특히, 점증적 변화를 반영하는 데이터가 업데이트된 파일의 전체 새로운 버전보다 더 적은 데이터를 소비할 수 있으나, 이러한 점증적인 변경을 반영하는 데이터의 크기가 상당할 수 있다. 예를 들어, 파일의 점증적인 업데이트는 파일 내에 데이터를 삽입하는 것을 포함할 수 있다. 파일 내에 삽입된 데이터는 예를 들어 비디오 데이터, 이미지 데이터 등을 포함할 수 있다. 따라서, 이러한 파일에 대한 점증적 업데이트는 사용자들에게 배포하기 위해 다량의 대역폭을 소비할 수 있는 비디오, 이미지, 또는 다른 데이터를 포함할 수 있다. 유사하게, 이미지 및 비디오와 같은 일부 타입의 데이터가 증분들(incremental pieces)로 쉽게 분할되지 않을 수 있으며, 임의의 변경이 이루어졌을 때 이미지 또는 비디오에 상응하는 전체 파일을 전송하는 것이 필요할 수 있다.
사용자가 점증적 업데이트를 획득하기 위해 서버 컴퓨터에 액세스할 때, 다량의 데이터가 사용자에게 전송될 수 있다. 또한, 조직들에 의해 소비되는 데이터는 종종 복수의 사용자에 의해 배포되고 소비되기 때문에, 점증적 업데이트가 다수의 사용자에게 배포될 수 있다. 따라서, 점증적 업데이트를 하기 위해 사용자에 의해 소비되는 대역폭의 양이 여전히 상당할 수 있다. 예를 들어, 전술된 시나리오에서 파일을 업데이트하는 각각의 사용자는 파일 내에 삽입된 비디오 또는 이미지 데이터를 다운로드할 수 있으며 지금 삽입된 데이터를 포함하도록 그들의 파일 버전을 업데이트할 수 있다. 이러한 "점증적(incremental)" 변경은 다수의 사용자에 의해 배가될 때 많은 양의 데이터 및/또는 대역폭을 소비할 수 있으며, 따라서 대역폭, 전송 시간 등의 측면에서 비용이 높을 수 있다.
본 명세서에 개시된 발명은 이러한 고려사항과 그외의 고려사항들과 관련하여 제시되었다.
본 명세서에는 캐시 관리에 대한 개념 및 기술이 개시되었다. 본 명세서에 개시된 개념 및 기술에 따르면, 서버 컴퓨터는 분산된 캐시 관리 서비스("캐시 서비스")를 호스팅한다. 서버 컴퓨터는 브랜치 오피스 또는 다른 위치에 있는 하나 이상의 클라이언트 디바이스 및/또는 클라이언트 피어와 통신하도록 구성될 수 있다. 일부 실시예에서, 각각의 클라이언트 디바이스 및 클라이언트 피어는 캐시를 생성 및/또는 유지하도록 캐시 모듈을 실행할 수 있다. 캐시는 하나 이상의 클라이언트 디바이스 및/또는 클라이언트 피어에 의해 서버 컴퓨터로부터 다운로드되고/되거나 서버 컴퓨터에 업로드되는 데이터를 저장하도록 사용될 수 있다. 다양한 실시예에 따르면, 캐시는 브랜치 오피스에 있는 디바이스와 연관된 분산된 캐시에 의해 제공되며, 따라서 브랜치 오피스에 있는 다양한 디바이스와 연관된 메모리 디바이스 및/또는 다른 저장 디바이스를 포함할 수 있다. 일부 다른 실시예에서, 캐시는 데이터베이스, 서버 컴퓨터, 및/또는 브랜치 오피스 또는 다른 위치에 있는 다른 디바이스와 같은 데이터 저장 요소에 의해 제공된다.
서버 컴퓨터 및/또는 서버 컴퓨터에 의해 실행되는 캐시 서비스는 서버 컴퓨터에 저장된 데이터에 대한 요청을 수신하도록 구성될 수 있다. 이러한 요청은 데이터의 해시에 대한 요청을 포함할 수 있다. 또한 서버 컴퓨터는 본 명세서에 기술된 바와 같이 요청자 및/또는 서버 컴퓨터가 캐싱을 위해 구성되었는지를 판정하도록 구성될 수 있다. 만약 서버 컴퓨터 및 요청자가 모두 캐싱을 위해 구성되었다면, 서버 컴퓨터는 요청된 데이터에 상응하는 해시로 요청에 응답할 수 있다. 일부 실시예에서, 해시에 대한 요청임에도 불구하고 서버 컴퓨터는 요청된 데이터를 제공하는 것보다 해시를 제공하는 것이 더 효율적이거나 덜 효율적인지 여부를 판정하도록 추가로 구성된다. 만약 해시를 제공하는 것이 데이터를 제공하는 것보다 덜 효율적인 것이라면, 서버 컴퓨터는 해시에 대한 요청에 데이터로 대신 응답하도록 구성될 수 있다.
이와 달리, 서버 컴퓨터는 요청된 해시로 해시에 대한 요청에 응답할 수 있다. 해시를 수신함에 따라, 클라이언트 디바이스, 클라이언트 피어, 및/또는 다른 요청자는 브랜치 오피스 또는 다른 위치에 있는 임의의 사용자가 이전에 해시와 연관된 데이터에 액세스하였는지를 판정하도록 분산된 캐시("캐시")를 검색할 수 있다. 따라서, 본 명세서에서는 캐시의 검색을 설명하지만, 해시 및/또는 데이터가 브랜치 오피스 또는 다른 위치에 있는 하나 이상의 디바이스에 의해 저장되었는지를 판정하기 위해 캐시 라이브러리 또는 다른 데이터 또한 검색될 수 있음이 이해되어야 한다. 만약 해시 및/또는 데이터가 캐시 내에 존재하는 것으로 판정되면, 클라이언트 디바이스, 클라이언트 피어, 또는 다른 요청 디바이스가 데이터를 저장하는 디바이스에 액세스할 수 있고 그러한 디바이스로부터 데이터를 획득할 수 있다. 이렇게, 서버 컴퓨터에서 수신된 데이터에 대한 요청은 서버 컴퓨터로부터 데이터를 다운로드하는 대신 데이터의 로컬 카피를 위치시키도록 사용될 수 있는 해시로 응답될 수 있다.
만약 클라이언트 디바이스, 클라이언트 피어, 및/또는 다른 요청자가 캐시에서 해시 및/또는 데이터를 식별하지 않는다면, 요청자는 다른 요청으로 서버 컴퓨터에 응답할 수 있다. 제 2 요청은 서버 컴퓨터에게 데이터를 요청할 수 있다. 일부 실시예에서, 제 2 요청은 요청된 데이터에 상응하는 해시에 대한 요청을 하거나 수반한다. 따라서, 요청자는 캐시에 데이터 및/또는 해시를 저장하도록 구성될 수 있다. 이와 같이, 본 명세서에 개시된 개념 및 기술의 실시예는 캐시를 업데이트 및/또는 유지하는 것을 포함할 수 있다.
본 명세서에 개시된 개념 및 기술의 다른 측면들에 따르면, 브랜치 오피스 또는 다른 위치에 있는 디바이스들은 서버 컴퓨터에 데이터를 업로드함에 따라 캐시를 업데이트하도록 구성될 수 있다. 따라서, 예를 들어 만약 클라이언트 디바이스가 업데이트된 파일을 서버 컴퓨터에 업로드하면, 클라이언트 디바이스는 데이터에 상응하는 해시를 요청하고, 서버 컴퓨터로부터 해시를 수신하며, 캐시 및/또는 연관된 캐시 라이브러리 내에 해시를 저장하도록 구성될 수 있다. 이렇게, 제 1 요청자가 업데이트된 데이터를 다운로드하고자 시도할 때, 전술된 데이터 및 해시를 획득하는 동작 및/또는 캐시 내에 데이터 및 해시를 저장하는 동작 없이 서버 컴퓨터에 의해 제공되는 해시가 캐시 내에서 발견될 수 있으며 데이터가 로컬로 획득될 수 있다.
전술된 청구사항은 컴퓨터 제어되는 장치, 컴퓨터 프로세스, 컴퓨팅 시스템으로서, 또는 컴퓨터 판독가능한 저장 매체와 같은 제품으로서 구현될 수 있음이 이해되어야만 한다. 이러한 그리고 다양한 다른 특성들이 아래의 상세한 설명 및 연관된 도면을 검토함으로써 명백해질 것이다.
본 요약부는 아래의 상세한 설명에서 추가로 기술되는 개념들의 선택을 간략화된 형태로 소개하도록 제공되었다. 본 요약부는 청구된 청구사항의 중요 특성 또는 기본 특성을 식별하기 위한 것이 아니며, 청구된 청구사항의 범주를 한정하도록 사용되는 것 또한 아니다. 또한, 청구된 청구사항은 본 명세서의 임의의 부분에 언급된 임의의 또는 모든 단점들을 해결하는 구현으로 제한되지 않는다.
도 1은 본 명세서에 개시된 다양한 실시예에 대한 예시적인 운영 환경을 도시한 시스템 도면.
도 2는 예시적인 실시예에 따라 통합된 캐시를 관리하는 방법의 측면을 나타내는 순서도.
도 3은 예시적인 실시예에 따라 통합된 캐시를 이용하여 데이터를 제공하는 방법의 측면을 나타내는 순서도.
도 4는 예시적인 실시예에 따라 캐시 서비스에 데이터를 업로드하기 위한 방법의 측면을 나타내는 순서도.
도 5는 본 명세서에 제시된 실시예의 측면을 구현할 수 있는 컴퓨팅 시스템에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 나타낸 컴퓨터 아키텍처 도면.
아래의 상세한 설명은 캐시 관리에 대한 개념 및 기술에 관한 것이다. 본 명세서에 개시된 개념 및 기술에 따르면, 서버 컴퓨터가 캐시 관리 서비스("캐시 서비스")를 호스팅한다. 서버 컴퓨터는 캐시 서비스의 실행을 통해 브랜치 오피스(branch office) 또는 한정된 또는 제한된 대역폭을 갖는 다른 위치에서 하나 이상의 클라이언트 디바이스 및/또는 클라이언트 피어와 통신하도록 구성될 수 있다. 일부 실시예에서, 하나 이상의 클라이언트 디바이스 또는 클라이언트 피어는 캐시 모듈을 실행하도록 구성될 수 있다. 캐시 모듈은 캐시를 생성 및/또는 유지하도록 클라이언트 디바이스 및/또는 클라이언트 피어에 의해 실행가능할 수 있다. 캐시는 하나 이상의 클라이언트 디바이스 및/또는 클라이언트 피어에 의해 서버 컴퓨터로부터 다운로드된 및/또는 서버 컴퓨터에 업로드된 데이터를 저장하도록 사용될 수 있다. 다양한 실시예에 따르면, 캐시는 브랜치 오피스 또는 다른 위치에 있는 디바이스와 연관된 분산된 캐시에 의해 제공된다. 이렇게, 본 명세서에 기술된 캐시의 기능은 브랜치 오피스에 있는 다양한 디바이스와 연관된 하나 이상의 메모리 디바이스 또는 다른 스토리지 디바이스에 의해 제공될 수 있다. 일부 다른 실시예에서, 캐시의 기능은 데이터베이스, 서버 컴퓨터, 및/또는 브랜치 오피스 또는 다른 위치와 연관된 다른 데이터 저장 디바이스와 같은 데이터 저장 요소에 의해 제공될 수 있다.
서버 컴퓨터 및/또는 서버 컴퓨터에 의해 실행되는 캐시 서비스는 서버 컴퓨터에 저장된 데이터에 대한 요청을 수신하도록 구성될 수 있다. 이러한 요청은 데이터에 상응하는 해시에 대한 요청을 포함할 수 있고/있거나 그러한 요청에 의해 달성될 수 있다. 또한 서버 컴퓨터는 요청자 및/또는 서버 컴퓨터가 캐싱을 위해 구성되었는지를 결정하도록 구성될 수 있다. 만약 서버 컴퓨터 및 요청자가 캐싱을 위해 구성되었다면, 서버 컴퓨터는 요청된 데이터에 상응하는 해시로 요청에 응답할 수 있다. 서버 컴퓨터는 요청된 해시를 이용하여 해시에 대한 요청에 응답할 수 있다. 일부 실시예에서, 서버 컴퓨터는 해시를 생성하거나 및/또는 해시를 제공하는 것이 요청된 데이터를 제공하는 것보다 덜 효율적인지를 결정하도록 추가로 구성된다. 만약 서버 컴퓨터가 요청된 해시를 제공하는 것이 데이터 자체를 제공하는 것보다 덜 효율적일 것이라고 결정하면, 서버 컴퓨터는 해시에 대한 요청에 데이터로 대신 응답하도록 구성될 수 있다.
클라이언트 디바이스, 클라이언트 피어 및/또는 다른 요청자는 브랜치 오피스 또는 다른 위치에 있는 임의의 사용자가 이전에 해시와 연관된 데이터에 액세스하였는지를 결정하도록 캐시를 검색할 수 있다. 본 명세서에서는 캐시 검색을 설명하지만, 해시 및/또는 데이터가 브랜치 오피스 또는 다른 위치에 있는 하나 이상의 디바이스에 의해 저장되었는지를 판정하기 위해 캐시 라이브러리 또는 다른 데이터도 검색될 수 있음을 이해해야 한다. 만약 해시 및/또는 데이터가 캐시 내에 존재한다고 판정되면, 클라이언트 디바이스, 클라이언트 피어, 또는 다른 요청 디바이스가 데이터를 저장하는 디바이스에 액세스할 수 있으며 해당 디바이스로부터 데이터를 획득할 수 있다. 이렇게, 서버 컴퓨터에서 수신된 데이터에 대한 요청은 서버 컴퓨터로부터 데이터를 다운로드하는 대신 데이터의 로컬 카피를 위치시키도록 사용될 수 있는 해시를 이용하여 응답될 수 있다.
만약 클라이언트 디바이스, 클라이언트 피어, 및/또는 다른 요청자가 해시 및/또는 캐시 내의 데이터를 식별하지 않는다면, 요청자는 서버 컴퓨터에 다른 요청으로 응답할 수 있다. 제 2 요청은 서버 컴퓨터로부터의 데이터를 요청할 수 있다. 일부 실시예에서, 제 2 요청은 요청된 데이터에 상응하는 해시에 대한 요청을 포함하거나 그러한 요청에 의해 달성된다. 따라서, 요청자는 데이터 및/또는 캐시에서의 해시를 저장하도록 구성될 수 있다. 이렇게, 본 명세서에 개시된 개념 및 기술의 실시예는 캐시를 업데이트 및/또는 유지하는 것을 포함할 수 있다.
클라이언트 디바이스, 클라이언트 피어, 및/또는 브랜치 오피스 또는 다른 위치에 있는 다른 디바이스는 또한 서버 컴퓨터에 데이터를 업로딩함에 따라 캐시를 업데이트하도록 구성될 수 있다. 이렇게, 캐싱 가능한 클라이언트 디바이스 또는 서버가 컴퓨터에 업데이트된 파일을 업로딩할 때, 클라이언트 디바이스 또는 다른 디바이스는 데이터에 상응하는 해시를 요청하도록 구성될 수 있다. 해시는 서버 컴퓨터로부터 수신될 수 있으며 캐시 및/또는 연관된 캐시 라이브러리에 저장될 수 있다. 이렇게, 제 1 요청자가 업데이트된 데이터를 다운로드하고자 시도할 때, 서버 컴퓨터에 의해 제공된 해시가 캐시 내에서 발견될 수 있으며 데이터, 해시를 획득하고/하거나 분산된 캐시 내에 데이터 및 해시를 저장하기 위한 전술된 동작들 없이 데이터가 국부적으로 획득될 수 있다.
본 명세서에 개시된 청구사항이 컴퓨터 시스템 상의 운영 시스템 및 애플리케이션 프로그램의 실행과 관련하여 실행하는 프로그램 모듈의 일반적인 맥락으로 제시되었지만, 당업자는 다른 구현들이 다른 타입의 프로그램 모듈과 함께 수행될 수 있음을 인식할 것이다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 구성요소, 데이터 구조 및 특정한 태스크를 수행하거나 특정한 추출 데이터 타입을 구현하는 다른 타입의 구조를 포함한다. 또한, 당업자는 본 명세서에 개시된 청구사항이 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 소비자 전자기기, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성을 이용하여 실시될 수 있음을 이해할 것이다.
아래의 상세한 설명은 본 명세서의 일부를 이루는 첨부된 도면을 참조하며, 도면에서 특정한 실시예 또는 예시들이 실례로서 도시되었다. 이제 도면을 참조하면, 도면들에 걸쳐 동일한 참조번호는 동일한 요소를 나타내고, 컴퓨팅 시스템, 컴퓨터 판독가능한 저장 매체 및 컴퓨터 구현되는 캐시 관리 방법이 제시될 것이다.
이제 도 1을 참조하여 본 명세서에 제시된 다양한 실시예에 대한 하나의 운영 환경(100)의 측면이 기술될 것이다. 도 1에 도시된 운영 환경(100)은 클라이언트 디바이스(102)를 포함한다. 다양한 구현에 따르면, 클라이언트 디바이스(102)는 통신 네트워크("네트워크")(104)의 일부로서 동작하도록, 또는 그와 통신하도록 구성될 수 있다. 다양한 구현에 따르면, 클라이언트 디바이스(102)의 기능은 예를 들어 데스크톱, 태블릿, 또는 랩탑 컴퓨터 시스템과 같은 개인 컴퓨터("PC")와 같은 컴퓨팅 디바이스에 의해 제공된다. 또한 클라이언트 디바이스(102)의 기능은 서버 컴퓨터, 핸드헬드 컴퓨터, 넷북 컴퓨터, 내장된 컴퓨터 시스템, PDA, 모바일폰, 스마트폰, 또는 그외의 컴퓨팅 디바이스를 포함하지만 이것으로 제한되는 것은 아닌 다른 타입의 컴퓨팅 디바이스에 의해 제공될 수 있다. 따라서, 클라이언트 디바이스(102)가 본 명세서에서 데스크톱 또는 랩탑 컴퓨터와 같은 개인 컴퓨팅 디바이스로서 기술되었지만, 이러한 실시예는 예시적인 것임을 이해해야 하며, 어떠한 방식으로도 한정하는 것으로서 해석되어서는 안된다.
클라이언트 디바이스(102)는 예를 들어 캐시 모듈(108) 및/또는 다른 애플리케이션 프로그램과 같은 하나 이상의 애플리케이션 프로그램 및 운영 시스템(106)을 실행하도록 구성될 수 있다. 운영 시스템(106)은 클라이언트 시스템(102)의 동작을 제어하기 위한 컴퓨터 프로그램이다. 애플리케이션 프로그램은 본 명세서에 개시된 기능을 제공하기 위해 운영 시스템(106) 위에서 실행하도록 구성된 실행가능한 프로그램이다. 캐시 모듈(108)이 클라이언트 디바이스(102)의 구성요소로서 도시되었지만, 캐시 모듈(108)이 다른 독립형 디바이스 또는 그의 구성요소로서, 또는 그 안에 존재하는 것으로서 구현될 수 있음을 이해해야만 한다. 또한, 아래의 설명을 참고하여 이해될 수 있는 바와 같이, 클라이언트 디바이스(102)에 추가로 또는 대신하여 다른 디바이스들이 캐시 모듈(108)을 실행할 수 있다. 따라서, 도시된 실시예는 예시적이며, 제한적인 방식으로 해석되어서는 안된다.
캐시 모듈(108)은 캐시(110) 내에 데이터를 저장하고 캐시(110)로부터 데이터를 검색하도록 구성될 수 있다. 캐시(110) 또는 그 일부는 클라이언트 디바이스(102)에 저장된 데이터 및/또는 클라이언트 디바이스(102)로부터 원거리에 저장된 데이터에 의해 구현될 수 있다. 다른 실시예에서, 캐시(110)의 일부 또는 구성요소가 복수의 디바이스에 의해 분산된 캐시로서 제공된다. 예를 들어, 도 1에 도시된 바와 같이, 클라이언트 디바이스(102) 및 하나 이상의 클라이언트 피어(112)(A-N)(아래에서는 집합적으로 및/또는 종합적으로 "클라이언트 피어(112)"로 지칭됨)가 브랜치 오피스, 기업 사무실, 또는 광역 네트워크("WAN")의 다른 브랜치 또는 그의 일부분과 연관된 분산된 캐시로서 캐시(110)를 집합적으로 저장하도록 구성될 수 있다. 따라서, 캐시 모듈(108) 및 캐시(110)가 오직 클라이언트 디바이스(102)와 관련하여 도시되었지만, 하나 이상의 클라이언트 피어(112)가 캐시 모듈(108)을 실행하고/하거나 캐시(110)와 연관된 데이터 저장을 제공하도록 구성될 수 있음을 이해해야만 한다. 이렇게, 도시된 실시예는 예시적인 것으로서 이해되어야만 하며 제한적인 방식으로 해석되어서는 안된다.
캐시 모듈(108)은 또한 네트워크(104)의 일부로서 동작하거나 그와 통신하는 서버 컴퓨터(116)에 의해 호스팅된 캐시 서비스(114)와 통신하도록 구성될 수 있다. 서버 컴퓨터(116)는 캐시 서비스(114)의 실행을 통해 본 명세서에서 개시된 캐시 관리 기능을 제공하기 위해 캐시 모듈(108)과 통신하도록 구성될 수 있다. 다양한 실시예에 따르면, 서버 컴퓨터(116)는 또한 데이터(118) 및/또는 해시(120)를 저장하도록 구성될 수 있다.
서버 컴퓨터(116)에 의해 저장되는 데이터(118)는 서버 컴퓨터(116)에 의해 호스팅되는 임의의 데이터를 포함할 수 있다. 이렇게, 데이터(118)는 예를 들어 인터넷 콘텐츠, 인트라넷 콘텐츠, 웹페이지, 웹사이트, 애플리케이션, 파일, 미디어 콘텐츠, 다른 데이터 등을 포함할 수 있다. 본 명세서에 개시된 개념 및 기술의 다양한 구현에 따라, 데이터(118)는 데이터 요소를 포함한다. 본 명세서에서 사용된 "데이터 요소(data element)"라는 용어는 파일 또는 다른 데이터의 청크 또는 일부분을 포함하지만, 이것으로 한정되는 것은 아니다. 예를 들어, 데이터 요소는 워싱턴 레드몬드에 소재한 Microsoft Corporation으로부터의 MS-FSSHTTP 프로토콜에 따라 생성될 수 있다. 이러한 실시예는 예시적인 것임이 이해되어야 하며, 한정적인 방식으로 해석되어서는 안된다.
MS-FSSHTTP 프로토콜은 파일 또는 데이터(118)와 같은 다른 데이터를 파일 및/또는 연관된 메타데이터에 상응하는 변경 불가한 2진 데이터의 일부분 또는 청크로 나누도록 사용될 수 있다. 전술된 바와 같이, 이러한 청크 또는 일부분이 본 명세서에서는 "데이터 요소" 및/또는 데이터(118)로 지칭된다. 데이터(118)와 같은 파일이 요청되었을 때, 서버 컴퓨터(116)는 요청자에 의해 요청된 파일 또는 다른 데이터(118)를 형성하기 위해 재조립될 수 있거나 및/또는 요청자에게 개별적으로 제공될 수 있는 복수의 데이터 요소를 식별 및 획득할 수 있다. 따라서, 비디오 파일과 같은 단일 파일이 단일 파일을 집합적으로 나타내는 복수의 데이터 요소로 분할될 수 있다. 따라서, 파일에 대한 변경이 이루어졌을 때, 클라이언트 디바이스(102) 및 클라이언트 피어(112)는 전체 파일을 다운로드하는 대신 변경된 데이터(118)에 액세스할 수 있다.
일부 다른 실시예에서, 서버 컴퓨터(116)는 파일 또는 다른 데이터(118)의 점증적인 업데이트를 지원하기 위해 데이터 요소를 사용하도록 구성될 수 있다. 이렇게, 파일이 업데이트되었을 때 서버 컴퓨터(116)는 변경된 파일의 부분을 반영하는 데이터 요소를 식별하도록 구성될 수 있으며 서버 컴퓨터(116)에 의해 저장된 파일의 이전 버전의 상응하는 데이터 요소를 대체하도록 구성될 수 있다. 따라서, 요청자 디바이스에서 파일을 업데이트하는 것은 오직 변경된 데이터 요소만을 제공함으로써 획득된 점증적 업데이트를 포함할 수 있다. 파일들의 점증적 업데이트가 일반적으로 이해되기 때문에, 파일의 점증적인 업데이트 및/또는 MS-FSSHTTP 프로토콜 및/또는 다른 프로토콜의 이러한 측면 및 다른 측면들이 본 명세서에 추가로 상세하게 기술되지 않을 것이다.
본 명세서에 개시된 개념 및 기술의 일부 실시예에 따르면, 서버 컴퓨터(116)는 데이터 요소에 상응하는 해시(120)와 같은 암호 해시를 생성하고 본 명세서에 개시된 캐시 관리 기능을 제공하도록 서버 컴퓨터(116)에서 해시(120)를 저장하도록 구성된다. 특히, 캐시 서비스(114)는 서버 컴퓨터(116)에 의해 호스팅된 데이터(118)에 대한 요청을 수신하도록 구성될 수 있다. 전술된 바와 같이, 데이터(118)에 대한 요청은 실질적으로 또는 명백하게 하나 이상의 데이터 요소에 상응할 수 있다. 이렇게, 본 명세서에서 기술된 "데이터(118)"는 데이터 요소를 포함하는 것으로 이해되어야 한다. 요청은 클라이언트 디바이스(102) 및/또는 클라이언트 피어(112)로부터 수신될 수 있다. 본 명세서에 개시된 개념 및 기술의 다양한 실시예에 따르면, 이러한 요청은 요청된 데이터(118)에 상응하는 하나 이상의 해시(120)에 대한 요청을 포함한다.
서버 컴퓨터(116)는 요청된 데이터(118)와 연관된 해시(120)를 식별하고, 실질적인 데이터(118)를 클라이언트 디바이스(102) 및/또는 클라이언트 피어(112)에 제공하는 대신 클라이언트 디바이스(102) 및/또는 클라이언트 피어(112)와 같은 요청 디바이스에 해시(120)를 제공하도록 구성될 수 있다. 클라이언트 디바이스(102) 및/또는 클라이언트 피어(112)는 캐시(110) 및/또는 (도시되지 않은) 캐시 라이브러리에서 서버 컴퓨터(116)로부터 수신된 해시(120)를 참조하는 데이터에 대해 검색하도록 캐시 모듈(108)을 실행할 수 있다. 따라서, 캐시 모듈(108)은 클라이언트 디바이스(102) 및/또는 하나의 클라이언트 피어(112)가 이전에 해시(120)와 연관된 데이터(118) 및/또는 데이터(118)와 해시(120)를 연관시키는 저장된 데이터를 다운로드하거나, 업로드하거나, 및/또는 다른 방식으로 액세스하였는지를 판정하도록 구성될 수 있다.
만약 캐시 모듈(108)이 캐시(110) 또는 캐시 라이브러리 내에서 데이터(118) 및/또는 해시(120)를 식별하면, 캐시 모듈(108)은 캐시(110) 내의 데이터(118)에 액세스하도록 구성될 수 있다. 전술된 바와 같이, 캐시(110)는 클라이언트 디바이스(102) 및 하나 이상의 클라이언트 피어(112)에 의해 제공된 분산된 캐시를 포함할 수 있다. 이렇게, 캐시 모듈(108)이 하나 이상의 클라이언트 디바이스(102) 및/또는 클라이언트 피어(112)로부터 데이터(118)를 획득함으로써 데이터(118)에 액세스하도록 구성될 수 있음이 이해되어야 한다. 이러한 실시예는 예시적인 것임이 이해되어야만 하며, 제한적인 방식으로 해석되어서는 안된다.
캐시 모듈(108)은 또한 캐시(110)를 구축하고 유지하도록 구성될 수 있다. 따라서, 예를 들어 만약 캐시 모듈(108)이 해시(120) 및/또는 연관된 데이터(118)를 찾지 않는다면, 캐시 모듈(108)은 데이터(118)에 대한 요청을 생성하고 서버 컴퓨터(116)에 이러한 요청을 전송하도록 구성될 수 있다. 이러한 요청에 응답하여, 서버 컴퓨터(116)는 데이터(118)를 클라이언트 디바이스(102)에 전송할 수 있다. 또한 반드시 그러한 것은 아니지만, 서버 컴퓨터(116)는 해시(120)를 데이터(118)와 함께 전송할 수 있다. 특히 도 3을 참조하여 아래에서 더욱 상세하게 기술되는 바와 같이, 서버 컴퓨터(116)는 해시(120)를 제공하는 것이 데이터(118)를 제공하는 것보다 덜 효율적인지 여부를 판정하고, 만약 적절하다면 해시(120)에 대한 요청에 대해 데이터(118)로 대신 응답하도록 구성될 수 있다.
데이터(118) 및/또는 해시(120)를 수신함에 따라, 캐시 모듈(108)은 캐시(110) 내에 데이터(118) 및/또는 해시(120)를 저장하도록 구성될 수 있다. 일부 실시예에서, 캐시 모듈(108)은 또한 전술된 바와 같이 캐시(110)와 연관된 캐시 라이브러리 내에 해시(120)를 저장할 수 있다. 이렇게, 요청에 응답하여 캐시(110)에서 서버 컴퓨터(116)에 의해 식별된 해시(120)를 검색함에 따라, 데이터(118)에 대한 미래의 요청자는 캐시(110) 내의 해시를 식별할 수 있으며 데이터(118)를 획득할 수 있다. 해시(120), 데이터(118)를 획득하고 캐시(110)를 관리하기 위한 방법들의 예시적인 실시예가 아래에서 도 2 내지 4를 참조하여 더욱 상세하게 기술되었다.
다양한 실시예에 따르면, 캐시 모듈(108)은 또한 데이터(118)를 서버 컴퓨터(116)에 업로딩할 때 캐시(110)를 업데이트하도록 구성될 수 있다. 일 실시예에서, 캐시 모듈(108)은 데이터(118)를 서버 컴퓨터(116)에 업로딩할 때 서버 컴퓨터(116)로부터 해시(120)를 요청 및 수신하도록 구성될 수 있다. 캐시 모듈(108)은 또한 캐시(110) 내의 업로딩된 데이터(118) 및 수신된 해시(120)를 저장하도록 구성될 수 있다. 이렇게, 본 명세서에 개시된 개념 및 기술의 일부 실시예는 데이터(118) 및/또는 해시(120)가 생성되면 캐시(110)에 저장하고, 그에 따라 제 1 후속 요청자가 데이터(118)를 캐시(110) 내에 다운로드 및 저장해야 할 필요성을 제거하는 것을 포함한다. 이렇게, 일부 실시예는 브랜치 오피스와 서버 컴퓨터(116) 사이의 통신에 의해 소비되는 대역폭을 추가로 감소시키도록 사용될 수 있지만, 일부 경우에서 라운드트립의 횟수는 동일하거나 더 많을 수 있다. 이러한 실시예는 예시적인 것임이 이해되어야만 하며, 제한적인 방식으로 해석되어서는 안된다.
본 명세서에 기술된 개념 및 기술에 따르면, 서버 컴퓨터(116)는 브랜치 오피스 또는 다른 위치에 있는 클라이언트 디바이스(102) 및 클라이언트 피어(112)와 통신하도록 구성될 수 있다. 클라이언트 디바이스(102) 및 하나 이상의 클라이언트 피어(112)는 캐시 모듈(108)을 실행하도록 구성될 수 있다. 캐시 모듈(108)은 캐시(110) 및/또는 캐시 라이브러리를 생성 및/또는 유지하도록 실행가능할 수 있다. 캐시(110)는 서버 컴퓨터(116)로부터 다운로드되고/되거나 서버 컴퓨터(116)에 업로드된 데이터(118)를 저장하도록 사용될 수 있으며, 클라이언트 디바이스(102) 및 클라이언트 피어(112)에 의해 제공되는 분산된 캐시일 수 있다.
서버 컴퓨터(116)는 서버 컴퓨터(116)에 저장된 데이터(118)에 대한 요청을 수신하도록 구성될 수 있다. 이러한 요청은 데이터(118)에 상응하는 해시(120)에 대한 요청을 포함할 수 있고/있거나 그러한 요청을 수반할 수 있다. 전술된 바와 같이, 데이터(118)를 제공하는 것보다 덜 효율적이지 않는 한, 서버 컴퓨터(116)는 요청된 데이터(118)에 상응하는 해시(120)로 요청에 응답할 수 있다. 클라이언트 디바이스(102)는 브랜치 오피스 또는 다른 위치에 있는 임의의 디바이스가 이전에 해시(120)와 연관된 데이터(118)에 액세스하였는지를 판정하기 위해 캐시(110)를 검색할 수 있다. 만약 해시(120) 및/또는 데이터(118)가 캐시(110) 내에 존재하는 것으로 판정되면, 클라이언트 디바이스(102)는 데이터(118)를 저장하고 데이터(118)를 획득하는 디바이스에 액세스할 수 있다. 이렇게, 서버 컴퓨터(116)에서 수신된 데이터(118)에 대한 요청은 서버 컴퓨터(116)로부터 데이터(118)를 다운로드하는 대신 데이터(118)의 로컬 카피를 위치시키도록 클라이언트 디바이스(102)에 의해 사용될 수 있는 해시(120)를 이용하여 응답될 수 있다.
만약 클라이언트 디바이스(102)가 캐시(110) 내의 해시(120) 및/또는 데이터(118)를 식별하지 않는다면, 클라이언트 디바이스(102)는 데이터(118)에 대한 요청을 생성하고 이러한 요청을 서버 컴퓨터(116)에 전송할 수 있다. 일부 실시예에서, 제 2 요청은 요청된 데이터(118)에 상응하는 해시(120)에 대한 요청을 포함하거나 수반한다. 따라서, 클라이언트 디바이스(102)는 캐시(110)를 유지 및/또는 관리하기 위해 캐시(110)에서 데이터(118) 및/또는 해시(120)를 저장하도록 구성될 수 있다. 다양한 실시예에 따르면, 클라이언트 디바이스(102)는 또한 서버 컴퓨터(116)에 데이터(118)를 업로드함에 따라 캐시(110)를 업데이트하도록 구성될 수 있다. 클라이언트 디바이스(102)는 클라이언트 디바이스(102)에 의해 업로드된 데이터(118)에 상응하는 해시(120)를 요청하도록 구성될 수 있다. 해시(120)는 서버 컴퓨터(16)로부터 수신될 수 있으며 캐시(110) 내에 저장될 수 있다. 이렇게, 후속 요청자가 서버 컴퓨터(116)로부터 데이터(118)를 다운로드하고자 시도할 때, 요청자는 캐시(110) 내의 해시(120)를 식별하고 데이터(118)를 로컬로 획득할 수 있다.
도 1은 하나의 클라이언트 디바이스(102), 하나의 네트워크(104), 복수의 클라이언트 피어(112) 및 하나의 서버 컴퓨터(116)를 도시한다. 그러나 운영 환경(100)의 일부 구현은 복수의 클라이언트 디바이스(102), 복수의 네트워크(104), 하나의 클라이언트 피어(112) 및/또는 복수의 서버 컴퓨터(116)를 포함한다는 것이 이해되어야만 한다. 따라서, 도시된 실시예는 예시적인 것으로 이해되어야만 하며, 한정적인 방식으로 해석되어서는 안된다.
이제 도 2를 참조하면, 예시적인 실시예에서 따라 통합된 캐시를 관리하는 방법(200)의 측면들이 자세하게 기술될 것이다. 본 명세서에 개시된 방법들의 동작들이 반드시 임의의 특정한 순서로 나타나는 것은 아니며 일부 또는 전체 동작들을 다른 순서(들)로 수행하는 것이 가능하고 고려된다는 것이 이해되어야만 한다. 설명 및 예시를 용이하게 하기 위해서 동작들은 예시된 순서대로 제시되었다. 동작들은 첨부된 특허청구범위의 범주로부터 벗어나지 않고 추가, 생략, 및/또는 동시에 수행될 수 있다.
또한 도시된 방법들이 임의의 시간에 종료될 수 있으며 각각의 방법이 전부 수행될 필요는 없다는 것이 이해되어야만 한다. 방법의 일부 또는 전체 동작들, 및/또는 실질적으로 동등한 동작들이 본 명세서에 정의된 바와 같이 컴퓨터 저장 매체 상에 포함된 컴퓨터 판독가능한 명령의 실행에 의해 수행될 수 있다. 상세한 설명 및 특허청구범위에서 사용되는 "컴퓨터 판독가능한 명령"이라는 표현은, 본 명세서에서 루틴, 애플리케이션, 애플리케이션 모듈, 프로그램 모듈, 프로그램, 구성요소, 데이터 구조, 알고리즘 등을 포함하도록 확장적으로 사용되었다. 컴퓨터 판독가능한 명령은 단일 프로세서 또는 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 개인 컴퓨터, 핸드헬드 컴퓨팅 디바이스, 마이크로프로세서-기반, 프로그램가능한 소비자 전자기기, 이들의 조합 등을 포함하는 다양한 시스템 구성 상에서 구현될 수 있다.
따라서, 본 명세서에 기술된 논리적 동작들은 (1) 컴퓨터 구현되는 동작들의 시퀀스 또는 컴퓨팅 시스템 상에서 구동하는 프로그램 모듈로서, 및/또는 (2) 컴퓨팅 시스템 내의 상호접속된 머신 논리 회로 또는 회로 모듈로서 구현된다는 것이 이해되어야만 한다. 구현은 컴퓨팅 시스템의 수행 및 다른 요청에 따른 선택의 문제이다. 따라서, 본 명세서에 기술되는 논리적 동작들은 다양하게 상태, 동작, 구조적 디바이스, 행동, 또는 모듈로서 지칭된다. 이러한 동작, 구조적 디바이스, 행동 및 모듈은 소프트웨어, 펌웨어, 전용 디지털 로직 및 이들의 임의의 조합으로 구현될 수 있다.
본 발명의 개념을 나타내고 설명하기 위해서, 방법(200)은 캐시 모듈(108)의 실행을 통해 클라이언트 디바이스(102)에 의해 수행되는 것으로 기술되었다. 이러한 실시예가 예시적인 것임이 이해되어야만 하며, 어떠한 제한적인 방식으로도 보여져서는 안된다. 특히, 클라이언트 디바이스(102)를 포함하지만 이것으로 한정되는 것은 아닌 다양한 디바이스는, 캐시 모듈(108)을 포함하지만 이것으로 한정되는 것은 아닌 다양한 소프트웨어 모듈의 실행을 통해 방법(200)과 관련하여 본 명세서에 기술된 기능성을 제공하도록 구성될 수 있다.
방법(200)은 동작(202)에서 시작하며, 클라이언트 디바이스(102)는 서버 컴퓨터(116)에 의해 호스팅된 데이터(118)에 대한 요청을 수신한다. 데이터(118)에 대한 요청은 파일에 액세스하기 위해 클라이언트 디바이스(102)에서 수신된 입력을 포함할 수 있으며, 이는 디렉토리 내의 파일로 이동하는 것, 데이터(118)와 연관된 링크 또는 다른 식별자의 선택을 검출하는 것, 및/또는 다른 방식으로 데이터(118)에 대한 요청을 수신하는 것을 포함하지만 이것으로 한정되는 것은 아니다. 동작(202)에서 요청된 데이터(118)는 웹페이지, 웹 애플리케이션, 웹사이트, 문서, 텍스트, 스프레드시트, 메일 데이터, 비디오, 오디오, 또는 다른 미디어 콘텐츠, 다른 데이터, 및/또는 이들의 조합을 포함하지만 이것으로 한정되는 것은 아닌 거의 어떠한 타입의 데이터에도 해당할 수 있다.
동작(202)으로부터, 방법(200)은 동작(204)으로 진행하며, 여기에서 클라이언트 디바이스(102)는 캐싱이 가능한지를 판정한다. 일부 실시예에서, 캐싱이 가능한지 여부를 판정하는 것은 사용자, 관리자, 또는 다른 권한이 주어진 사용자가 캐시 모드를 사용할 수 있는지를 결정하는 것을 포함한다. 따라서, 동작(204)의 기능은 일부 실시예에서 클라이언트 디바이스(102)에서의 "옵트-인(opt-in)" 또는 "옵트-아웃(opt-out)" 동작에 해당할 수 있으며, 이때 클라이언트 디바이스(102)는 캐시 모드(옵트-인)를 사용하도록 선택하거나 또는 캐시 모드(옵트-아웃)를 사용하지 않도록 선택한다. 따라서, 일부 실시예에서 동작(204)은 클라이언트 디바이스(102) 및 서버 컴퓨터(116) 모두가 해시(120)를 사용하는데에 동의했는지를 결정하는 것을 포함한다. 만약 클라이언트 디바이스(102) 또는 서버 컴퓨터(116) 중 하나라도 해시(120)를 사용하는 것을 거부한다면, 클라이언트 디바이스(102)는 해시 모드가 사용가능하지 않다고 결정할 수 있고, 대신 실질적인 데이터(118)를 공유하는 것에 의존할 수 있다. 다른 실시예에서, 캐싱이 가능한지를 결정하는 것은 소프트웨어 설정 또는 기능이 캐시 모드의 사용을 포함하는지를 결정하는 것을 포함한다. 고려되는 일 실시예에서, 클라이언트 디바이스(102)는 동작(204)에서 클라이언트 디바이스(102) 및/또는 서버 컴퓨터(116)가 워싱턴 레드몬드에 소재한 Microsoft Corporation으로부터의 운영 시스템의 WINDOWS 및 WINDOWS SERVER COMPUTER 패밀리의 일부 멤버에 의해 제공되는 BRANCH CACHE 서비스를 제공하도록 구성되는지를 결정할 수 있다. 이러한 실시예는 예시적인 것임이 이해되어야만 하며, 어떠한 제한적인 방식으로도 해석되어서는 안된다.
만약 클라이언트 디바이스(102)가 동작(204)에서 캐싱이 가능하지 않다고 판정하면, 방법(200)은 동작(206)으로 진행한다. 동작(206)에서, 클라이언트 디바이스(102)는 서버 컴퓨터(116)로부터 데이터(118)를 획득한다. 이렇게, 동작(206)에서 클라이언트 디바이스(102)가 종래의 방식으로 데이터(118)를 요청할 수 있음이 이해될 수 있다. 유사하게, 도 2에 도시되지는 않았지만 서버 컴퓨터(116)는 종래의 방식으로 요청에 응답할 수 있다.
만약 클라이언트 디바이스(104)가 동작(204)에서 캐싱이 가능하다고 결정하면, 방법(200)은 동작(208)으로 진행한다. 동작(208)에서, 클라이언트 디바이스(102)는 서버 컴퓨터(116)로부터 해시(120)에 대한 요청을 생성한다. 해시(120)에 대한 요청은 데이터(118)에 대한 요청 내에 포함될 수 있다. 이렇게, 클라이언트 디바이스(102)는 데이터(118)가 요청되었음과 만약 이용가능하다면 해시(120)가 제공될 것임을 서버 컴퓨터(116)에 효율적으로 알리는 플래그, 필드, 또는 다른 표시자와 함께 데이터(118)를 요청하도록 구성될 수 있다. 일부 다른 실시예에서, 클라이언트 디바이스(102)는 해시(120)에 대한 요청을 생성할 수 있으며, 서버 컴퓨터(116)는 해시(120) 또는 데이터(118)가 요청에 응답하여 제공될 것인지를 결정할 수 있다. 데이터(118) 또는 해시(120)가 제공될 것인지를 결정하기 위해 서버 컴퓨터(116)의 기능의 일부 측면들이 아래에서 도 3을 참조하여 더욱 자세하게 기술되었다.
방법(200)은 동작(208)으로부터 동작(210)으로 진행하며, 이때 클라이언트 디바이스(102)는 동작(208)에서 요청된 해시(120)가 서버 컴퓨터(116)에 의해 반환되었는지를 판정한다. 따라서, 클라이언트 디바이스(102)는 동작(210)에서 요청된 해시(120)가 서버 컴퓨터(116)에서 이용가능한지 또는 이용 불가한지를 결정할 수 있다. 만약 동작(210)에서 클라이언트 디바이스(102)가 해시(120)가 서버 컴퓨터(116)에 의해 반환되지 않았다고 결정한다면, 해시(120)는 서버 컴퓨터(116)에 의해 반환되지 않을 것이며, 방법(200)은 전술된 동작(206)으로 진행할 수 있다. 이렇게, 클라이언트 디바이스(102)는 해시(120)가 서버 컴퓨터(116)에 의해 반환되지 않았음을 결정한 것에 응답하여 서버 컴퓨터(116)로부터 데이터(118)를 요청하도록 구성될 수 있다. 따라서, 클라이언트 디바이스(102)는 서버 컴퓨터(116)가 해시(120)와 관련된 데이터(118)를 클라이언트 디바이스(102)에 제공하는 것이 더 효율적이라고 결정했는지 여부를 결정하도록 구성될 수 있다. 이것은 도 3을 참조하여 아래에서 더욱 자세하게 기술될 것이다.
만약 동작(210)에서 클라이언트 디바이스(102)가 해시(120)가 서버 컴퓨터(116)에 의해 반환되었다고 결정하면, 방법(200)은 동작(212)으로 진행한다. 동작(212)에서, 클라이언트 디바이스(102)는 반환된 해시(120)를 캐시(110)에 추가한다. 이렇게, 클라이언트 디바이스(102)는 서버 컴퓨터(116)로부터 데이터를 수신한 것에 응답하여 캐시(110)를 유지 및/또는 업데이트하도록 구성될 수 있다. 따라서, 캐시(110)는 데이터(118)가 서버 컴퓨터(116)로부터 검색되었을 때 업데이트될 수 있다.
방법(200)은 동작(212)으로부터 동작(214)을 진행하며, 이때 클라이언트 디바이스(102)는 캐시(110)가 동작(210)에서 획득된 해시(120)에 상응하는 데이터(118)를 포함하는지를 결정하도록 캐시(110)를 검사한다. 따라서, 동작(214)에서 하나 이상의 클라이언트 피어(112) 또는 캐시(110)를 공유 또는 제공하는 다른 디바이스가 동작(202)에서 요청된 데이터(118)를 이전에 검색하였는지를 클라이언트 디바이스(102)가 결정할 수 있다는 것이 이해될 수 있다.
동작(214)에서 만약 클라이언트 디바이스(102)가 동작(210)에서 획득된 해시(120)에 상응하는 데이터(118)가 이용가능하지 않다고 결정하면, 방법(200)은 동작(216)으로 진행할 수 있다. 동작(216)에서, 클라이언트 디바이스(102)는 서버 컴퓨터(116)로부터의 해시(120)에 상응하는 데이터(118)에 대한 새로운 요청을 생성할 수 있다. 이렇게, 클라이언트 디바이스(102)는 데이터(118)가 클라이언트 디바이스(102), 클라이언트 피어(112), 및/또는 캐시(110)를 이용하거나 캐시(110)에 액세스하는 다른 디바이스에 의해 이전에 액세스되거나 다운로드되지 않았음을 결정할 수 있다. 따라서, 클라이언트 디바이스(102)는 데이터(118)를 다운로드할 수 있고 이 데이터를 캐시(110)에 저장할 수 있다.
방법(200)은 동작(216)으로부터 동작(218)으로 진행할 수 있다. 동작(218)에서, 클라이언트 디바이스(102)는 전술된 바와 같이 캐시(110) 내에 데이터(118)를 저장할 수 있다. 클라이언트 디바이스(102)는 또한 동작(210)에서 수신된 해시(120)를 캐시 라이브러리 및/또는 캐시(110) 내에 저장할 수 있다. 따라서, 클라이언트 디바이스(102) 또는 다른 디바이스가 방법(200)의 후속하는 반복들에 대한 캐시(110)에서 해시(120)를 검색할 경우, 서버 컴퓨터(116)로부터 데이터(118)를 획득하는 대신 데이터(118)가 위치되어 사용될 수 있다.
도 2에 대한 전술된 설명으로부터, 데이터(118)의 특정한 인스턴스가 서버 컴퓨터(116)로부터 처음 요청된 순간 클라이언트 컴퓨터(102)가 지연 및/또는 비효율성을 경험할 수 있음이 이해될 수 있다. 그러나, 데이터(118)에 대한 후속 요청에서, 본 명세서에 개시된 캐시 관리에 대한 개념 및 기술이 본 명세서에 기술된 바와 같이 서버 컴퓨터(116)와 하나 이상의 클라이언트 디바이스(102) 또는 클라이언트 피어(112) 사이의 더 적은 지연을 가지면서 더 작은 대역폭 또는 그외의 리소스를 이용하여 데이터(118)를 획득시에 증가된 효율성을 인식하도록 사용될 수 있다.
특히, 동작(214)에서 만약 클라이언트 디바이스(102)가 동작(210)에서 획득된 해시(120)에 상응하는 데이터(118)가 이용가능한 것으로 결정하면, 방법(200)은 동작(220)으로 진행한다. 동작(220)에서, 클라이언트 디바이스(102)는 캐시(110)로부터 데이터(118)를 획득한다. 이렇게, 클라이언트 디바이스(102)는 클라이언트 피어(112)와 같은 로컬 피어로부터 데이터(118)를 획득할 수 있으며, 따라서 서버 컴퓨터(116)로부터 데이터(118)를 다운로드할 필요가 없을 수 있다. 본 명세서에 개시된 개념 및 기술이 브랜치 오피스 또는 다른 유사한 위치와 같은 기업 사이트로 확장될 때, 본 명세서에 개시된 개시 관리에 대한 개념 및 기술을 이용하는 것의 영향이 이해될 수 있다.
고려된 일 예시에서, 프레젠테이션은 브랜치 오피스와 연관된 사용자에 의해 수정될 수 있으며 다양한 피어에 의한 분산 및/또는 다운로드를 위해서 서버 컴퓨터(116)에 저장될 수 있다. 이러한 예시에서, 브랜치 오피스는 25명의 사용자를 포함하고, 프레젠테이션에 대한 수정은 20MB 크기를 갖는 비디오 파일을 삽입하는 것을 포함할 수 있다. 따라서, 만약 브랜치 오피스에 있는 모든 사용자들이 그들의 프레젠테이션 버전을 업데이트한다면, 대역폭의 최소 500MB가 소비될 것이다. 본 명세서에 개시된 개념 및 기술의 다양한 실시예에 따르면, 이들 사용자는 처음으로 데이터를 서버 컴퓨터(116)에 업로드한 브랜치 오피스에 있는 피어로부터 데이터를 대신 획득할 수 있다. 오직 해시(120)만이 서버 컴퓨터(116)와 피어 사이에서 전송되고 있기 때문에, 실질적으로 더 작은 대역폭이 사용될 수 있다.
전술된 예시에서, 피어를 업로드하는 것은 업로드될 때 데이터(118)를 캐시(110) 내에 저장할 수 있기 때문에, 도 4를 참조하여 아래에서 더욱 자세하게 기술되는 바와 같이, 25개의 피어 중 어떤 피어에도 서버 컴퓨터(116)로부터 비디오 데이터를 다운로드하도록 요청되지 않을 수 있다. 따라서, 25명의 사용자는 대신 서버 컴퓨터(116)로부터 해시(120)를 획득할 수 있으며 후속하여 캐시(110)로부터 데이터(118)를 획득할 수 있다. 일반적으로 이해되는 바와 같이, 해시(120)는 메가바이트와 상반되게 비트 또는 바이트 단위의 크기를 가질 수 있다. 따라서, 이러한 예시에서 캐시(110)로부터 비디오 데이터의 25 인스턴스를 다운로드하도록 정보를 교환할 때, 피어와 서버 컴퓨터(116) 사이의 총 대역폭이 500MB 이상에서 수백 KB로 감소될 수 있다. 따라서, 본 명세서에 개시된 캐시 관리에 대한 개념 및 기술은 대역폭 소비의 실질적인 감소와, 결과적으로 이 예시에서 브랜치 오피스와 연관된 운영 비용의 실질적인 감소를 돕는다는 것을 인지할 수 있음이 이해될 수 있다.
방법(200)은 동작(220)으로부터 동작(222)으로 진행한다. 유사하게, 방법(200)은 동작(206)으로부터 동작(222)으로 진행할 수 있다. 또한 방법(200)은 동작(218)으로부터 동작(222)으로 진행할 수 있다. 동작(200)은 동작(222)에서 종료된다.
이제 도 3을 참조하면, 예시적인 실시예에 따라 통합된 캐시를 이용하는 데이터를 제공하기 위한 방법(300)의 측면들이 제시된다. 본 발명의 개념들을 설명 및 기술하기 위해, 방법(300)은 본 명세서에 기술된 캐시 서비스(114)를 제공하기 위한 컴퓨터 실행가능한 명령의 실행을 통해 서버 컴퓨터(116)에 의해 수행되는 것으로 기술되었다. 이러한 실시예는 예시적인 것임이 이해되어야만 하며, 제한적인 것으로 보여져서는 안된다. 특히, 서버 컴퓨터(116)를 포함하지만 이것으로 한정되는 것은 아닌 다양한 디바이스는 캐시 서비스(114)를 포함하지만 이것으로 한정되는 것은 아닌 다양한 소프트웨어 모듈의 실행을 통해 방법(300)과 관련하여 본 명세서에 기술된 기능을 제공하도록 구성될 수 있다.
방법(300)은 동작(302)에서 시작하며, 이때 서버 컴퓨터(116)는 해시(120)에 대한 요청을 수신한다. 일부 실시예에서, 동작(302)에서 수신된 요청은 도 2의 동작(208)을 참조하여 전술된 바와 같이 클라이언트 디바이스(102)에 의해 생성된 요청에 상응할 수 있지만, 반드시 그래야만 하는 것은 아니다. 일부 실시예에서, 클라이언트 디바이스(102) 또는 다른 디바이스는 해시(120)에 대한 명확한 요청을 통해 해시(120)를 요청하고, 다른 실시예에서 해시(120)는 데이터(118)에 대한 요청의 일부로서 요청된다. 따라서, 동작(302)에서 수신된 요청은 플래그 또는 해시(120)를 요청하기 위한 다른 기능과 함께 데이터(118)에 대한 요청을 포함할 수 있다.
방법(300)은 동작(302)으로부터 동작(304)으로 진행하며, 이때 서버 컴퓨터(116)는 동작(302)에서 요청된 해시(120)가 전송될 것인지를 판정한다. 다양한 실시예에 따라, 서버 컴퓨터(116)는 예를 들어 해시(120)의 크기, 해시(120)와 연관된 데이터(118)의 크기, (만약 해시가 아직 서버 컴퓨터(116)에 의해 저장되지 않았다면) 해시(120)를 생성하도록 요청된 시간, 및/또는 다른 정보를 결정할 수 있다. 따라서, 서버 컴퓨터(116)는 데이터(118) 및/또는 해시(120)의 크기만이 아니라 데이터(118) 및/또는 해시(120)를 제공하도록 요청된 시간도 고려할 수 있다.
서버 컴퓨터(116)는 해시(120)를 생성 및/또는 제공하는 것, 데이터(118)를 제공하는 것과 연관된 크기 및 시간을 비교할 수 있다. 이러한 비교 및/또는 다른 정보에 기초하여, 서버 컴퓨터(116)는 해시(120) 또는 데이터(118)를 제공하는 것이 더욱 효율적인지를 결정하도록 구성될 수 있다. 또한 전술된 바와 같이, 만약 클라이언트 디바이스(102)에 제공되었다면, 그 다음 해시(120)는 데이터(118)에 대한 캐시(110)를 검색하도록 사용될 것이다. 따라서, 서버 컴퓨터(116)는 만약 데이터(118)가 캐시(110)에 저장되지 않았다면 클라이언트 디바이스(102)와 서버 컴퓨터(116) 사이에서 요청될 수 있는 복수의 통신도 고려할 수 있다. 예를 들어, 만약 데이터(118)가 해시(120)의 크기에 가깝다면, 서버 컴퓨터(116)는 데이터(118)를 제공하는 것이 보다 효율적일 것이라는 가정에 기초하여 해시(120) 대신, 또는 해시(120)에 추가로 데이터(118)를 제공하도록 구성될 수 있다. 서버 컴퓨터(116)는 또한 해시(120)가 미래에 제공될 것인지를 나타내기 위해 데이터(118)와 연관된 플래그 또는 데이터를 저장하도록 구성될 수 있다.
만약 서버 컴퓨터(116)가 동작(304)에서 해시(120)가 전송되지 않았다고 결정하면, 방법(300)은 동작(306)으로 진행한다. 동작(306)에서, 서버 컴퓨터(116)는 해시(120) 대신 데이터(118)를 클라이언트 디바이스(102)에 전송할 수 있다. 반드시 그래야 하는 것은 아니지만, 전술된 바와 같이 서버 컴퓨터(116)는 만약 원한다면 해시(120) 및 데이터(118)가 캐시(110)에 저장될 수 있도록 데이터(118)와 함께 해시(120)를 전송할 수 있다.
만약 서버 컴퓨터(116)가 동작(304)에서 해시(120)가 전송되었다고 결정하면, 방법(300)은 동작(308)으로 진행한다. 동작(308)에서, 서버 컴퓨터(116)는 클라이언트 디바이스(102)에 해시(120)를 전송할 수 있다. 방법(300)은 동작(308)으로부터 동작(310)으로 진행한다. 방법(300)은 또한 동작(306)으로부터 동작(310)으로 진행할 수 있다. 방법(300)은 동작(310)에서 종료된다.
이제 도 4를 참조하면, 예시적인 실시예에 따라 데이터를 캐시 서비스에 업로드하기 위한 방법(400)의 측면들이 제시된다. 본 발명의 개념을 설명하고 기술하기 위해서, 방법(400)은 캐시 모듈(108)의 실행을 통해 클라이언트 디바이스(102)에 의해서 수행되는 것으로 기술된다. 이러한 실시예가 예시적인 것임이 이해되어야 하며, 제한적인 것으로 보여져서는 안된다. 특히, 클라이언트 디바이스(102)를 포함하지만 이것으로 한정되는 것은 아닌 다양한 디바이스가 캐시 모듈(108)을 포함하지만 이것으로 한정되는 것은 아닌 다양한 소프트웨어 모듈의 실행을 통해 방법(400)과 관련하여 본 명세서에 기술된 기능을 제공하도록 구성될 수 있다.
방법(400)은 동작(402)에서 시작하며, 이때 클라이언트 디바이스(102)는 클라이언트 디바이스(102)에서 생성된 데이터(118)의 업로드가 요청되거나 시작되었는지를 검출 또는 결정한다. 따라서, 예를 들어 클라이언트 디바이스(102)는 예를 들어 파일 또는 다른 타입의 데이터(118)를 저장하는 것과 같은 클라이언트 디바이스(102)로부터 서버 컴퓨터(116)로의 파일 전송 개시를 검출할 수 있다. 다양한 실시예에 따르면, 클라이언트 디바이스(102)는 데이터(118)의 전송을 검출하도록 구성될 수 있다. 일부 다른 실시예에서, 클라이언트 디바이스(102)는 데이터(118)가 업로드되거나 다른 방식으로 전송될 때 본 명세서에 기술된 캐시 관리 기능을 이용하기 위해 클라이언트 디바이스(102)와 연관된 사용자에게 옵션을 제공하도록 구성될 수 있다. 이렇게, 동작(402)은 도 4와 관련하여 본 명세서에 기술된 기능을 제공하기 위한 옵션 또는 다른 기능의 선택을 수신하는 것을 포함할 수 있다.
방법(400)은 동작(402)으로부터 동작(404)으로 진행하며, 이때 클라이언트 디바이스(102)는 캐싱이 가능한지를 결정한다. 일부 실시예에서, 동작(404)에서 도시된 것과 같이 캐싱이 가능한지를 결정하는 것은 도 2의 동작(204)과 관련하여 전술된 기능과 유사하거나 동일할 수 있지만, 반드시 그런 것은 아니다. 만약 클라이언트 디바이스(102)가 동작(404)에서 캐싱이 가능하지 않다고 결정하면, 방법(400)은 동작(406)으로 진행한다. 동작(406)에서, 클라이언트 디바이스(102)는 동작(402)에서 생성된 데이터(118)를 서버 컴퓨터(116)에 푸시할 수 있다. 따라서, 만약 클라이언트 디바이스(102)가 캐싱이 가능하지 않다고 결정하면, 데이터(118)는 원한다면 종래의 방식으로 서버 컴퓨터(116)에 전송될 수 있다.
만약 동작(404)에서 클라이언트 디바이스(102)가 캐싱이 가능하다고 결정하면, 방법(400)은 동작(408)으로 진행한다. 동작(408)에서, 클라이언트 디바이스(102)는 동작(402)에서 생성된 데이터(118)를 데이터(118)에 상응하는 해시(120)를 생성 및 반환하라는 요청과 함께 서버 컴퓨터(116)에 푸시한다. 해시(120)를 반환하라는 요청은 데이터(118)를 저장하라는 요청과 연관된 플래그 또는 다른 표시자로서 데이터(118)와 포함될 수 있다. 일부 다른 실시예에서, 해시(120)에 대한 요청은 별개의 요청으로서 클라이언트 디바이스(102)에 의해 생성될 수 있다. 요청이 서버 컴퓨터(116)에 전송되는 방식과 무관하게, 서버 컴퓨터(116)는 해시(120)에 대한 요청을 인식하고 요청에 응답하여 해시(120)를 생성하도록 구성될 수 있다.
방법(400)은 동작(408)으로부터 동작(410)으로 진행하며, 이때 클라이언트 디바이스(102)는 서버 컴퓨터(116)로부터 해시(120)를 수신한다. 방법(400)은 동작(410)으로부터 동작(412)으로 진행하며, 이때 클라이언트 디바이스(102)는 동작(408)에서 수신된 해시(120)를 캐시(110)에 추가한다. 전술된 바와 같이, 해시(120) 및/또는 해시(120)를 데이터(118)와 연관시키기 위한 및/또는 데이터(118)가 저장된 위치를 식별하기 위한 데이터 또한 캐시(110)와 연관된 캐시 라이브러리 내에 저장될 수 있다. 이렇게, 데이터(118)의 생성 동안뿐 아니라, 또는 그 대신에, 도 2를 참조하여 전술된 바와 같은 서버 컴퓨터(116)로부터의 데이터(118)의 첫 다운로드 동안에, 클라이언트 디바이스(102)가 캐시(110)를 유지하도록 구성될 수 있음이 이해될 수 있다.
따라서, 본 명세서에 개시된 개념 및 기술의 일부 실시예가 데이터(118)의 업로드 동안 데이터(118) 및 해시(120)와 함께 캐시(110)를 업데이트할 수 있으며, 그에 따라 전술된 바와 같이 데이터(118)의 첫 다운로드, 해시(120)에 대한 요청, 데이터(118) 및/또는 해시의 저장의 필요성을 제거한다는 것이 이해될 수 있다. 방법(400)은 동작(412)으로부터 동작(414)으로 진행한다. 방법(400)은 또한 동작(406)으로부터 동작(414)으로 진행할 수 있다. 방법(400)은 동작(414)에서 종료한다.
위에서 클라이언트 디바이스(102)로부터의 데이터(118)에 대한 요청을 인용하여 기술되었지만, 이러한 실시예는 단지 본 명세서에 개시된 개념 및 기술의 일 예시라는 것이 이해되어야만 한다. 특히 일부 실시예에서, 클라이언트 디바이스(102)는 데이터(118)를 획득 및/또는 캐싱하기 위한 프록시 디바이스일 수 있다. 이렇게, 일부 실시예에서 클라이언트 디바이스(102)는 일부 맥락에서 서비스로서의 기능을 할 수 있다. 따라서, 도 1을 참조하여 전술된 바와 같이, 클라이언트 디바이스(102)의 기능이 실제 또는 가상 서버 컴퓨터에 의해 제공될 수 있다. 이렇게, 개시된 실시예들은 예시적인 것으로 이해되어야만 하며, 어떠한 제한적인 방식으로도 해석되어서는 안된다.
도 5는 본 명세서에 개시된 캐시 관리를 위한 소프트웨어 구성요소를 실행할 수 있는 디바이스에 대한 예시적인 컴퓨터 아키텍처(500)를 도시한다. 따라서, 도 5에 도시된 컴퓨터 아키텍처(500)는 서버 컴퓨터, 모바일폰, PDA, 스마트폰, 데스크톱 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 및/또는 랩탑 컴퓨터에 대한 아키텍처를 도시한다. 컴퓨터 아키텍처(500)는 본 명세서에 제시된 소프트웨어 구성요소의 임의의 측면들을 실행하도록 이용될 수 있다.
도 5에 도시된 컴퓨터 아키텍처(500)는 중앙 처리 장치(502)("CPU"), 랜덤 액세스 메모리(("RAM")(506) 및 판독 전용 메모리("ROM")(508)를 포함하는 시스템 메모리(504) 및 메모리(504)를 CPU(502)에 연결하는 시스템 버스(510)를 포함한다. 예컨대 스타트업 동안에 컴퓨터 아키텍처(500) 내의 요소들 사이에서 정보를 전달하는 것을 돕는 베이직 루틴을 포함하는 베이직 입력/출력 시스템이 ROM(508)에 저장된다. 컴퓨터 아키텍처(500)는 또한 운영 시스템(106) 및 캐시 모듈(108)을 저장하는 대량 저장 장치(512)를 더 포함한다. 도 5에 도시되지 않았지만, 대량 저장 장치(512)는 또한 캐시(110), 캐시 서버 컴퓨터(114), 데이터(118), 해시(120), 및/또는 원하는 다른 데이터를 저장하도록 구성될 수 있다.
대량 저장 장치(512)는 버스(510)에 접속된 (도시되지 않은) 대량 저장 컨트롤러를 통해 CPU(502)에 접속된다. 대량 저장 장치(512) 및 그와 연관된 컴퓨터 판독가능한 매체는 컴퓨터 아키텍처(500)에 대한 비휘발성 저장을 제공한다. 본 명세서에 포함된 컴퓨터 판독가능한 매체에 대한 설명이 하드 디스크 또는 CD-ROM 드라이브와 같은 대량 저장 장치를 참조하지만, 컴퓨터 판독가능한 매체가 컴퓨터 아키텍처(500)에 의해 액세스될 수 있는 통신 매체 또는 임의의 이용가능한 컴퓨터 저장 매체일 수 있음이 당업자에 의해 이해되어야만 한다.
통신 매체는 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호 또는 다른 수송 메커니즘 내의 다른 데이터를 포함하며, 임의의 전달 매체를 포함한다. "변조된 데이터 신호"라는 표현은 신호 내의 정보를 인코딩하는 것과 같은 방식으로 변경된 또는 설정된 하나 이상의 자신의 특징을 갖는 신호를 의미한다. 예시의 방식으로, 통신 매체는 유선 네트워크 또는 다이렉트-와이어드 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만, 이것으로 제한되는 것은 아니다. 이들의 조합 또한 컴퓨터 판독가능한 매체의 범주 내에 포함되어야만 한다.
예시의 방식으로, 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 제거가능 및 제거 불가능한 매체를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 예를 들어, 컴퓨터 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 고체 상태 메모리 기술, CD-ROM, DVD, HD-DVD, BLU-RAY, 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 원하는 정보를 저장하도록 사용될 수 있고 컴퓨터 아키텍처(500)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이것으로 제한되는 것은 아니다. "컴퓨터 저장 매체"라는 표현 및 그의 변형어는 파장, 신호, 및/또는 다른 일시적 및/또는 무형의 통신 매체 그 자체를 포함하지 않는다.
다양한 실시예에 따르면, 컴퓨터 아키텍처(500)는 네트워크(104)와 같은 네트워크를 통한 원거리 컴퓨터로의 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 컴퓨터 아키텍처(500)는 버스(510)에 접속된 네트워크 인터페이스 장치(514)를 통해 네트워크(104)에 접속할 수 있다. 네트워크 인터페이스 장치(514)는 또한 예를 들어 클라이언트 피어(112) 및/또는 다른 디바이스와 같은 다른 타입의 네트워크 및 원격 컴퓨터 시스템을 접속시키도록 사용될 수 있다. 컴퓨터 아키텍처(500)는 또한 (도 5에 도시되지 않은) 키보드, 마우스, 또는 전자 스타일러스를 포함하는 다수의 다른 디바이스로부터의 입력을 수신 및 프로세싱하기 위한 입력/출력 컨트롤러(516)를 포함할 수 있다. 유사하게, 입력/출력 컨트롤러(516)는 (도 5에 도시되지 않은) 디스플레이 스크린, 프린터, 또는 다른 타입의 출력 디바이스에 출력을 제공할 수 있다.
CPU(502)에 로딩되어 실행되었을 때, 본 명세서에 기술된 소프트웨어 구성요소는 본 명세서에 제시된 기능을 용이하게 하기 위해 범용 컴퓨팅 시스템으로부터 맞춤화된 전용 컴퓨팅 시스템으로 CPU(502) 및 전체 컴퓨터 아키텍처(500)를 변환할 수 있음이 이해되어야 한다. CPU(502)는 임의의 수의 상태들을 개별적으로 또는 집합적으로 추정할 수 있는 임의의 수의 트랜지스터 또는 다른 별개의 회로 요소로 구성될 수 있다. 보다 구체적으로, CPU(502)는 본 명세서에 개시된 소프트웨어 모듈 내에 포함된 실행가능한 명령에 응답하여, 최종 상태 머신으로서 동작할 수 있다. 이러한 컴퓨터 실행가능한 명령들은 상태들 사이에서 CPU(502)가 전이하는 방식을 명시함으로써 CPU(502)를 변형할 수 있으며, 그에 따라 트랜지스터 또는 CPU(502)를 구성하는 다른 별개의 하드웨어 요소를 변형시킬 수 있다.
본 명세서에 제시된 소프트웨어 모듈을 인코딩하는 것은 본 명세서에 제시된 컴퓨터 판독가능한 매체의 물리적 구조를 변형시킬 수 있다. 물리적 구조의 특정 변형은 상세한 설명의 서로 다른 구현들에서 다양한 인자들에 의존할 수 있다. 이러한 인자들의 예시는 컴퓨터 판독가능한 매체를 구현하기 위해 사용되는 기술, 컴퓨터 판독가능한 매체가 1차 또는 2차 스토리지로서 특징화되었는지 여부 등을 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 예를 들어, 만약 컴퓨터 판독가능한 매체가 반도체 기반 메모리로서 구현되면, 본 명세서에 개시된 소프트웨어는 반도체 메모리의 물리적 상태를 변형함으로써 컴퓨터 판독가능한 매체 상에서 인코딩될 수 있다. 예를 들어, 소프트웨어는 트랜지스터, 커패시터, 또는 반도체 메모리를 구성하는 다른 별개의 회로 요소를 변형할 수 있다. 또한 소프트웨어는 데이터를 저장하기 위해서 이러한 구성요소의 물리적 상태를 변형할 수 있다.
다른 예시로서, 본 명세서에 개시된 컴퓨터 판독가능한 매체는 자기적 또는 광학적 기술을 이용하여 구현될 수 있다. 이러한 구현에서, 본 명세서에 제시된 소프트웨어는, 이러한 소프트웨어가 인코딩되었을 때 자기적 또는 광학적 매체의 물리적 상태를 변형할 수 있다. 이러한 변형은 주어진 자기적 매체 내의 특정한 위치의 자기적 특징을 변경하는 것을 포함할 수 있다. 이러한 변형은 또한 소정의 광학적 매체 내의 특정한 위치의 물리적 특성 또는 특징을 변경하여 이러한 위치들의 광학적 특징을 변경하는 것을 포함할 수 있다. 물리적 매체의 다른 변형이 본 발명의 사상 및 범주로부터 벗어나지 않고 가능하며, 전술된 예시적은 단지 이러한 논의를 용이하게 하도록 제공된 것이다.
전술된 관점에서, 본 명세서에 제시된 소프트웨어 구성요소를 저장 및 실행하기 위해서 다수의 타입의 물리적 변형이 컴퓨터 아키텍처(500) 내에서 발생한다는 것이 이해되어야 한다. 또한 컴퓨터 아키텍처(500)가 핸드헬드 컴퓨터, 내장된 컴퓨터 시스템, PDA 및 당업자에게 알려진 다른 타입의 컴퓨팅 디바이스를 포함하는 다른 타입의 컴퓨팅 디바이스를 포함할 수 있음이 이해되어야 한다. 또한 컴퓨터 아키텍처(500)는 도 5에 도시된 모든 구성요소를 포함하지 않을 수 있고, 도 5에 명확하게 도시되지 않은 다른 구성요소를 포함할 수 있거나, 또는 도 5에 도시된 것과 완전히 다른 아키텍처를 사용할 수 있다.
전술된 바와 같이, 본 명세서에 캐시 관리를 위한 기술이 개시되었음이 이해되어야 한다. 본 명세서에 제시된 청구사항이 컴퓨터 구조적 특성, 방법론적 및 변형적 동작들, 특정한 컴퓨팅 기계 및 컴퓨터 판독가능한 매체에 대해 특정한 언어로 기술되었지만, 첨부된 특허청구범위 내에 정의된 본 발명이 반드시 본 명세서에 기술된 특정한 특성, 동작, 또는 매체로 제한되는 것은 아님이 이해될 것이다. 오히려, 특정한 특성, 동작 및 매체들이 특허청구범위를 구현하는 예시적인 형태로 개시된다.
전술된 청구사항은 단지 예시로서 제공되었으며, 제한적으로 해석되어서는 안된다. 도시되고 기술된 예시적인 실시예 및 애플리케이션을 따르지 않고, 아래의 특허청구범위에서 기술되는 본 발명의 사상 및 범주로부터 벗어나지 않고, 다양한 수정 및 변경이 본 명세서에 기술된 청구사항에 대해 이루어질 수 있다.

Claims (18)

  1. 컴퓨터로 구현되는 캐시 관리 방법으로서,
    상기 방법은 클라이언트 디바이스에서 컴퓨터 구현 동작을 수행하는 것을 포함하고, 상기 컴퓨터 구현 동작은,
    상기 클라이언트 디바이스에서, 서버 컴퓨터에 저장된 데이터를 획득하라는 요청을 수신하는 동작과,
    상기 클라이언트 디바이스에 의해, 사용자 선택가능한 캐시 모드가 인에이블되는 것(enabled)과 상기 클라이언트 디바이스가 캐시 모드를 갖는 것 중 적어도 하나에 기초하여 상기 클라이언트 디바이스에서 캐싱이 가능한지를 판정하는 동작과,
    상기 클라이언트 디바이스에 의해, 상기 서버 컴퓨터에 저장된 데이터를 요청하는 동작과,
    상기 서버 컴퓨터에 저장된 데이터를 요청한 것에 대한 응답으로, 상기 요청된 데이터 대신에 상기 데이터에 상응하는 해시를 수신하는 동작과,
    상기 해시가 상기 서버 컴퓨터로부터 수신됨을 판정하는 것 - 각각의 상기 요청된 해시는 상기 요청된 데이터에 상응하는 고유 데이터를 포함함 - 과, 캐시에 액세스하는 것에 의해, 상기 캐시에서 상기 해시를 검색하는 동작과,
    상기 캐시가 상기 해시를 포함하고 있지 않다는 판정에 응답하여, 상기 클라이언트 디바이스와 통신하는 하나 이상의 로컬 피어가 상기 해시에 상응하는 상기 데이터를 갖는지 여부를 판정하고, 어느 로컬 피어가 상기 해시에 상응하는 상기 데이터의 어느 부분을 갖는지를 판정하는 동작과,
    식별된 로컬 피어에게 상기 데이터의 각 부분을 요청하는 동작을 포함하는
    캐시 관리 방법.
  2. 제1항에 있어서,
    상기 캐시에서 상기 해시를 검색하는 동작은,
    상기 서버 컴퓨터로부터 상기 해시를 수신하는 동작과,
    상기 캐시가 상기 해시를 저장하고 있지 않다는 판정에 응답하여,
    상기 데이터 및 상기 해시에 대한 요청을 생성하는 동작과,
    상기 데이터 및 상기 해시를 상기 캐시에 저장하는 동작을 포함하는
    캐시 관리 방법.
  3. 제1항에 있어서,
    상기 캐시에서 상기 해시를 검색하는 동작은, 상기 캐시에서 상기 해시를 식별한 것에 응답하여, 상기 캐시로부터 상기 데이터를 획득하는 동작을 포함하는
    캐시 관리 방법.
  4. 제3항에 있어서,
    상기 캐시는 상기 클라이언트 디바이스 및 클라이언트 피어에 의해 제공된 분산된 캐시를 포함하고,
    상기 캐시로부터 상기 데이터를 획득하는 동작은, 상기 클라이언트 피어로부터 상기 데이터를 획득하는 동작을 포함하는
    캐시 관리 방법.
  5. 제4항에 있어서,
    상기 클라이언트 디바이스 및 상기 클라이언트 피어는 제한된 대역폭을 갖는 네트워크에 위치하는
    캐시 관리 방법.
  6. 제1항에 있어서,
    상기 컴퓨터 구현 동작은,
    상기 클라이언트 디바이스에서 새로운 데이터를 생성하는 동작과,
    상기 새로운 데이터를 상기 새로운 데이터에 상응하는 해시에 대한 요청과 함께 상기 서버 컴퓨터에 업로드하는 동작과,
    상기 서버 컴퓨터로부터 상기 해시를 수신하는 동작과,
    상기 해시 및 상기 새로운 데이터를 상기 캐시에 저장하는 동작을 더 포함하는
    캐시 관리 방법.
  7. 클라이언트 컴퓨터 시스템으로서,
    상기 클라이언트 컴퓨터 시스템 내의 네트워크 인터페이스 유닛과,
    상기 클라이언트 컴퓨터 시스템 내의 메모리 디바이스 - 상기 메모리 디바이스는 컴퓨터 판독가능 명령어를 포함함 - 와,
    상기 클라이언트 컴퓨터 시스템 내의 프로세서를 포함하되,
    상기 프로세서는 상기 메모리 디바이스 및 상기 네트워크 인터페이스 유닛에 통신가능하게 결합되며, 상기 프로세서는 상기 컴퓨터 판독가능 명령어를 실행하여,
    상기 네트워크 인터페이스 유닛을 통해, 서버 컴퓨터에 저장된 데이터를 획득하라는 요청을 수신하고,
    상기 클라이언트 컴퓨터 시스템 및 상기 서버 컴퓨터에서 캐싱이 가능한지 여부를 판정하며,
    상기 클라이언트 컴퓨터 시스템 및 상기 서버 컴퓨터에 의한 해시 사용 거부에 기초하여 상기 클라이언트 컴퓨터 시스템 및 상기 서버 컴퓨터에서 캐싱이 가능하지 않다는 판정에 응답하여, 상기 네트워크 인터페이스 유닛을 통해, 상기 서버 컴퓨터로부터 상기 데이터를 요청하고,
    사용자 선택가능한 캐시 모드가 인에이블되는 것과 상기 클라이언트 컴퓨터 시스템이 캐시 모드를 갖는 것 중 적어도 하나에 기초하여 상기 클라이언트 컴퓨터 시스템에서 캐싱이 가능하고, 상기 서버 컴퓨터가 상기 캐시 모드를 갖는 것에 기초하여 상기 서버 컴퓨터에서 캐싱이 가능하다고 판정한 것에 응답하여,
    상기 네트워크 인터페이스 유닛을 통해, 상기 서버 컴퓨터로부터 해시를 요청하고 - 상기 해시는 상기 데이터에 상응함 - ,
    상기 해시가 상기 서버 컴퓨터로부터 수신됨 - 각각의 상기 요청된 해시는 상기 요청된 데이터에 상응하는 고유 데이터를 포함함 - 을 판정하는 것과, 캐시에 액세스하는 것에 의해, 상기 캐시에서 상기 해시를 검색하며,
    상기 캐시가 상기 해시를 포함하지 않는다는 판정에 응답하여,
    상기 클라이언트 컴퓨터 시스템과 통신하는 하나 이상의 로컬 피어가 상기 해시에 상응하는 상기 데이터를 갖는지 여부를 판정하고,
    어느 로컬 피어가 상기 해시에 상응하는 상기 데이터의 어느 부분을 갖는지를 판정하며,
    식별된 로컬 피어에게 상기 데이터의 각 부분을 요청하는
    클라이언트 컴퓨터 시스템.
  8. 제7항에 있어서,
    상기 메모리 디바이스는, 상기 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금,
    상기 캐시가 상기 데이터를 저장하는지 여부를 판정하게 하고,
    상기 캐시가 상기 해시를 저장하고 있지 않다는 판정에 응답하여,
    상기 서버 컴퓨터에게 상기 데이터에 대한 요청을 생성하게 하고,
    상기 데이터 및 상기 해시를 상기 캐시에 저장하게 하는
    컴퓨터 판독가능 명령어를 더 포함하는, 클라이언트 컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 메모리 디바이스는, 상기 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금 상기 캐시에서 상기 해시를 식별한 것에 응답하여 상기 캐시로부터 상기 데이터를 획득하게 하는 컴퓨터 판독가능 명령어를 더 포함하는
    클라이언트 컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 캐시는 상기 클라이언트 컴퓨터 시스템 및 클라이언트 피어에 의해 제공된 분산된 캐시를 포함하고,
    상기 캐시로부터 상기 데이터를 획득하는 것은, 상기 클라이언트 피어로부터 상기 데이터를 획득하는 것을 포함하는
    클라이언트 컴퓨터 시스템.
  11. 제10항에 있어서,
    상기 클라이언트 컴퓨터 시스템 및 상기 클라이언트 피어는 브랜치 오피스(branch office)에 위치하고, 상기 서버 컴퓨터는 상기 브랜치 오피스로부터 원거리에 위치하는
    클라이언트 컴퓨터 시스템.
  12. 제7항에 있어서,
    상기 메모리 디바이스는, 상기 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금,
    상기 클라이언트 컴퓨터 시스템에서 새로운 데이터를 생성하게 하고,
    상기 네트워크 인터페이스 유닛을 통해, 상기 새로운 데이터를 상기 새로운 데이터에 상응하는 새로운 해시에 대한 요청과 함께 상기 서버 컴퓨터에 업로드하게 하며,
    상기 네트워크 인터페이스 유닛을 통해, 상기 서버 컴퓨터로부터 상기 새로운 해시를 수신하게 하고,
    상기 새로운 해시 및 상기 새로운 데이터를 상기 캐시에 저장하게 하는
    컴퓨터 판독가능 명령어를 더 포함하는 클라이언트 컴퓨터 시스템.
  13. 컴퓨터로 구현되는 데이터의 캐시의 관리 방법으로서,
    상기 방법은 서버에서 컴퓨터 구현 동작을 수행하는 것을 포함하고, 상기 컴퓨터 구현 동작은,
    클라이언트 디바이스로부터 해시에 대한 요청을 수신하는 동작과,
    사용자 선택가능한 캐시 모드가 인에이블되는 것에 기초하여 상기 클라이언트 디바이스에서 캐싱이 가능한 것으로 판정하는 동작과,
    상기 해시의 크기와 비교한 상기 데이터의 크기, 상기 해시가 상기 서버에 이미 저장되어 있지 않은 경우 상기 해시를 생성하도록 요청된 시간, 및 상기 데이터가 상기 캐시에 저장되어 있지 않은 경우 상기 클라이언트 디바이스와 상기 서버 사이의 요청된 통신 횟수 중 적어도 하나에 기초하여 상기 해시에 상응하는 데이터 또는 상기 해시를 송신할 지 여부를 결정하는 동작 - 상기 요청된 통신 횟수에 기초하여 상기 해시 또는 상기 데이터를 송신할 지 여부를 결정하는 것은 상기 데이터가 상기 캐시에 저장되어 있지 않은 경우에 상기 클라이언트 디바이스와 상기 서버 사이에서 요청된 상기 통신 횟수를 판정하는 것을 포함함 - 과,
    상기 해시를 송신하도록 결정되면, 상기 해시를 상기 클라이언트 디바이스로 송신하는 동작 - 상기 해시 또는 데이터를 송신할 지 여부의 결정이 상기 클라이언트 디바이스와 상기 서버 사이에서 요청된 통신 횟수에 기초할 경우, 상기 데이터를 송신하도록 요청된 통신 횟수에 비해 해시 송신에 대한 통신이 더 적게 요청되면 상기 해시를 송신함 - 과,
    상기 데이터를 송신하도록 결정되면 상기 데이터를 상기 클라이언트 디바이스로 송신하는 동작을 포함하는
    데이터의 캐시 관리 방법.
  14. 제13항에 있어서,
    상기 클라이언트 디바이스로부터의 상기 해시에 대한 요청은 데이터에 대한 요청 및 해시가 송신되어야 함을 나타내는 플래그를 포함하고,
    상기 컴퓨터 구현 동작은,
    상기 플래그가 존재하면, 상기 결정 동작으로 진행하는 동작과,
    상기 플래그가 존재하지 않으면, 상기 데이터를 상기 클라이언트 디바이스로 송신하는 동작을 더 포함하는
    데이터의 캐시 관리 방법.
  15. 제13항에 있어서,
    상기 결정하는 동작은,
    상기 해시의 크기를 상기 데이터의 크기와 비교하는 동작과,
    상기 데이터를 송신하는 것이 상기 해시를 송신하는 것보다 더 효율적이라면 상기 데이터를 송신하는 동작과,
    상기 해시를 송신하는 것이 상기 데이터를 송신하는 것보다 더 효율적이라면 상기 해시를 송신하는 동작을 포함하는
    데이터의 캐시 관리 방법.
  16. 제15항에 있어서,
    상기 컴퓨터 구현 동작은, 상기 데이터의 크기가 상기 해시의 크기와 동일하면 상기 데이터를 송신하는 동작을 더 포함하는
    데이터의 캐시 관리 방법.
  17. 제15항에 있어서,
    상기 컴퓨터 구현 동작은, 상기 클라이언트 디바이스로부터의 추가 요청에 응답하여 상기 해시가 제공됨을 나타내는 플래그를 저장하는 동작을 더 포함하는
    데이터의 캐시 관리 방법.
  18. 제13항에 있어서,
    상기 결정하는 동작은,
    상기 해시가 아직 상기 서버에 저장되어 있지 않은 경우, 상기 해시를 생성하도록 요청된 시간을 결정하는 동작과,
    상기 해시를 송신하는 것이 상기 데이터를 송신하는 것보다 시간 면에서 더 효율적인 경우, 상기 해시를 생성하고 상기 해시를 송신하는 동작과,
    상기 데이터를 송신하는 것이 상기 해시를 생성하여 송신하는 것보다 시간 면에서 더 효율적인 경우, 상기 데이터를 송신하는 동작을 포함하는
    데이터의 캐시 관리 방법.
KR1020147027963A 2012-04-05 2013-04-03 캐시 관리 기법 KR102098415B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/439,873 2012-04-05
US13/439,873 US10198462B2 (en) 2012-04-05 2012-04-05 Cache management
PCT/US2013/035048 WO2013152057A1 (en) 2012-04-05 2013-04-03 Cache management

Publications (2)

Publication Number Publication Date
KR20140143775A KR20140143775A (ko) 2014-12-17
KR102098415B1 true KR102098415B1 (ko) 2020-04-07

Family

ID=48142964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027963A KR102098415B1 (ko) 2012-04-05 2013-04-03 캐시 관리 기법

Country Status (6)

Country Link
US (2) US10198462B2 (ko)
EP (1) EP2834758A1 (ko)
JP (2) JP2015514274A (ko)
KR (1) KR102098415B1 (ko)
CN (2) CN111273863B (ko)
WO (1) WO2013152057A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015012B2 (en) * 2013-07-03 2018-07-03 Red Hat, Inc. Precalculating hashes to support data distribution
US20150350369A1 (en) * 2014-05-30 2015-12-03 Qualcomm Incorporated Method For Reducing Pre-Fetching Of Multimedia Streaming Data With Minimal Impact On Playback User Experience
CN106445403B (zh) * 2015-08-11 2020-11-13 张一凡 针对海量数据成对存储的分布式存储方法和系统
US10540136B2 (en) * 2016-05-24 2020-01-21 Dell Products, L.P. Faster frame buffer rendering over a network
US10382552B2 (en) * 2016-12-12 2019-08-13 Verizon Patent And Licensing Inc. User device ad-hoc distributed caching of content
US11023587B2 (en) * 2018-06-03 2021-06-01 Apple Inc. External trust cache
JP7282114B2 (ja) * 2021-02-12 2023-05-26 株式会社日立製作所 ストレージ装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136485A1 (en) 2004-11-16 2006-06-22 Peter Yared Dynamic selection or modification of data management patterns
JP2009181344A (ja) 2008-01-30 2009-08-13 Canon It Solutions Inc 情報処理装置、描画命令生成装置、情報処理システム、情報処理装置の制御方法、描画命令生成装置の制御方法及びプログラム
US20090319473A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US20090327505A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Content Identification for Peer-to-Peer Content Retrieval

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177510A (ja) 1996-12-18 1998-06-30 Casio Comput Co Ltd クライアント・サーバ・システム
JP2001014209A (ja) 1999-06-25 2001-01-19 Sharp Corp 情報中継装置および情報中継方法、ならびに情報中継プログラムを記録したコンピュータ読み取り可能な記録媒体
US6772225B1 (en) 1999-09-30 2004-08-03 International Business Machines Corporation Policy enabled web caching
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
EP1423972A1 (en) 2001-08-27 2004-06-02 Koninklijke Philips Electronics N.V. Cache method
US6871270B2 (en) * 2001-12-03 2005-03-22 Samsung Electronics Co., Ltd. Device and method for minimizing puncturing-caused output delay
JP2003323381A (ja) 2002-05-07 2003-11-14 Fuji Photo Film Co Ltd マルチメディアコンテンツ作成装置およびマルチメディアコンテンツ作成方法
JP2004185263A (ja) 2002-12-03 2004-07-02 Oki Electric Ind Co Ltd 分散協調型コンテンツ配信システム
US7769881B2 (en) 2003-01-24 2010-08-03 Hitachi, Ltd. Method and apparatus for peer-to peer access
US7895338B2 (en) 2003-03-18 2011-02-22 Siemens Corporation Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP
US20050015471A1 (en) * 2003-07-18 2005-01-20 Zhang Pu Paul Secure cluster configuration data set transfer protocol
US7600125B1 (en) * 2004-12-23 2009-10-06 Symantec Corporation Hash-based data block processing with intermittently-connected systems
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7529785B1 (en) * 2006-02-28 2009-05-05 Symantec Corporation Efficient backups using dynamically shared storage pools in peer-to-peer networks
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US7526530B2 (en) 2006-05-05 2009-04-28 Adobe Systems Incorporated System and method for cacheing web files
GB2440762B (en) 2006-08-11 2011-11-02 Cachelogic Ltd Content distribution network
US7617322B2 (en) * 2006-09-29 2009-11-10 Microsoft Corporation Secure peer-to-peer cache sharing
US8849793B2 (en) * 2007-06-05 2014-09-30 SafePeak Technologies Ltd. Devices for providing distributable middleware data proxy between application servers and database servers
US20090144388A1 (en) * 2007-11-08 2009-06-04 Rna Networks, Inc. Network with distributed shared memory
US8825758B2 (en) * 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US9065835B2 (en) 2008-07-23 2015-06-23 International Business Machines Corporation Redirecting web content
US9286293B2 (en) * 2008-07-30 2016-03-15 Microsoft Technology Licensing, Llc Populating and using caches in client-side caching
US8499120B2 (en) * 2008-10-17 2013-07-30 Seagate Technology Llc User selectable caching management
US8601213B2 (en) * 2008-11-03 2013-12-03 Teradata Us, Inc. System, method, and computer-readable medium for spool cache management
US8108620B2 (en) * 2009-03-10 2012-01-31 Hewlett-Packard Development Company, L.P. Cooperative caching technique
US20120089700A1 (en) * 2010-10-10 2012-04-12 Contendo, Inc. Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method
US8863204B2 (en) * 2010-12-20 2014-10-14 Comcast Cable Communications, Llc Cache management in a video content distribution network
US8874697B2 (en) * 2011-11-30 2014-10-28 Red Hat, Inc. Content download based on hashes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136485A1 (en) 2004-11-16 2006-06-22 Peter Yared Dynamic selection or modification of data management patterns
JP2009181344A (ja) 2008-01-30 2009-08-13 Canon It Solutions Inc 情報処理装置、描画命令生成装置、情報処理システム、情報処理装置の制御方法、描画命令生成装置の制御方法及びプログラム
US20090319473A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US20090327505A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Content Identification for Peer-to-Peer Content Retrieval

Also Published As

Publication number Publication date
US11226944B2 (en) 2022-01-18
US20190155798A1 (en) 2019-05-23
CN104221016A (zh) 2014-12-17
JP6506374B2 (ja) 2019-04-24
JP2015514274A (ja) 2015-05-18
US10198462B2 (en) 2019-02-05
EP2834758A1 (en) 2015-02-11
CN111273863A (zh) 2020-06-12
US20130268614A1 (en) 2013-10-10
CN111273863B (zh) 2023-08-15
KR20140143775A (ko) 2014-12-17
JP2018049653A (ja) 2018-03-29
WO2013152057A1 (en) 2013-10-10

Similar Documents

Publication Publication Date Title
US11226944B2 (en) Cache management
US9952753B2 (en) Predictive caching and fetch priority
JP6621543B2 (ja) ハイブリッドアプリケーションの自動更新
US11516288B2 (en) Synchronized content library
US10715622B2 (en) Systems and methods for accelerating object stores with distributed caching
US9971787B2 (en) Unified file and object data storage
JP5886447B2 (ja) ロケーション非依存のファイル
US20080270524A1 (en) Distributing files over a computer network
KR101991537B1 (ko) 자율형 네트워크 스트리밍 기법
US20120296871A1 (en) File managing apparatus for processing an online storage service
US20200145490A1 (en) Systems and methods for content origin administration
US11645233B2 (en) Distributed file cache
US10002135B2 (en) Simplifying the check-in of checked-out files in an ECM system
US10402373B1 (en) Filesystem redirection
CN113853778B (zh) 一种文件系统的克隆方法及装置
CN116974998A (zh) 数据文件的更新方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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