KR101915423B1 - 공유 콘텐츠 항목의 저장소 제약된 동기화 - Google Patents

공유 콘텐츠 항목의 저장소 제약된 동기화 Download PDF

Info

Publication number
KR101915423B1
KR101915423B1 KR1020177018184A KR20177018184A KR101915423B1 KR 101915423 B1 KR101915423 B1 KR 101915423B1 KR 1020177018184 A KR1020177018184 A KR 1020177018184A KR 20177018184 A KR20177018184 A KR 20177018184A KR 101915423 B1 KR101915423 B1 KR 101915423B1
Authority
KR
South Korea
Prior art keywords
content item
content
client device
item
management system
Prior art date
Application number
KR1020177018184A
Other languages
English (en)
Other versions
KR20170129680A (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
Priority claimed from US14/611,115 external-priority patent/US9361349B1/en
Priority claimed from US14/611,117 external-priority patent/US9413824B1/en
Priority claimed from US14/611,116 external-priority patent/US9185164B1/en
Application filed by 드롭박스, 인크. filed Critical 드롭박스, 인크.
Publication of KR20170129680A publication Critical patent/KR20170129680A/ko
Application granted granted Critical
Publication of KR101915423B1 publication Critical patent/KR101915423B1/ko

Links

Images

Classifications

    • G06F17/30221
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

콘텐츠 관리 시스템은 네트워크에 의해 연결된 클라이언트 컴퓨팅 시스템들에 걸쳐 콘텐츠 항목들을 동기화시킨다. 각각의 클라이언트 디바이스는 동기화된 공유 콘텐츠 항목들에 대한 저장소 할당량을 갖는다. 클라이언트 디바이스 상의 공유 콘텐츠 항목들에 대한 저장소 할당량이, 콘텐츠 항목이 확장되도록 콘텐츠 항목을 추가 또는 편집하거나 클라이언트 디바이스에 원격인 큰 콘텐츠 항목을 열라는 요청에 의해, 초과되면, 클라이언트 애플리케이션 또는 콘텐츠 관리 시스템의 호스트는 클라이언트 디바이스 상의 상주지로부터 제거하지만 콘텐츠 관리 시스템 상에 원격적으로 유지할 콘텐츠 항목들을 선택한다. 선택된 콘텐츠 항목들을 제거할 때, 클라이언트 애플리케이션은, 콘텐츠 항목을 표현하지만 콘텐츠 항목의 메타데이터만을 포함하는, 섀도 항목들을 생성한다. 이것은 모든 동기화된 공유 콘텐츠 항목들에의 사용자 액세스를 유지하면서 초기 요청이 완료되기에 충분한 공간을 생성한다.

Description

공유 콘텐츠 항목의 저장소 제약된 동기화{STORAGE CONSTRAINED SYNCHRONIZATION OF SHARED CONTENT ITEMS}
기술된 실시예들은 일반적으로 콘텐츠 항목 동기화를 제공하는 컴퓨터 시스템들의 성능을 개선시키는 것에 관한 것으로서, 특히 동기화된 콘텐츠 항목들에 대한 저장소 할당량(storage allocation)이 제약되는 콘텐츠 관리 시스템과 클라이언트 디바이스 간의 콘텐츠 항목들의 동기화를 개선시키는 것에 관한 것이다.
콘텐츠 관리 시스템들은 사용자들이 하나의 클라이언트와 다른 클라이언트 사이에서 콘텐츠 항목들을 공유할 수 있게 한다. 클라이언트들은 저장 및 다른 클라이언트들과의 동기화를 위해 콘텐츠 항목들을 콘텐츠 관리 시스템에 제공하는 컴퓨팅 디바이스들이다. 다른 클라이언트들은 다른 사용자에 의해 운영될 수 있거나, 동일한 사용자에 의해 등록 또는 관리되는 디바이스들일 수 있다. 사용자는 어느 콘텐츠 항목들 또는 콘텐츠 항목들을 포함하는 디렉터리들이 다른 사용자들과 공유될 수 있고 따라서 이러한 사용자들의 클라이언트 디바이스들에 동기화될 수 있는지를 지정한다. 일반적으로, 콘텐츠 관리 시스템은 주어진 콘텐츠 항목을 이 콘텐츠 항목을 공유하도록 지정된 클라이언트 디바이스들 전부와 동기화시킨다. 그 결과, 이 클라이언트 디바이스들 각각은 아주 많은 양의 공유 콘텐츠 항목들을 저장할 수 있다. 어떤 경우에, 클라이언트 디바이스 상에서 공유 콘텐츠 항목들이 차지하는 저장소의 양이, 동기화되지 않은 콘텐츠 항목들 및 애플리케이션들과 같은, 클라이언트 디바이스 상에서 다른 항목들을 위해 이용가능한 저장소의 양을 상당히 감소시킨다.
도 1a 및 도 1b는 제약된 동기화의 일 실시예를 나타내는 개념도.
도 2는 클라이언트 디바이스들 간에 콘텐츠 항목들을 동기화시키는 콘텐츠 관리 시스템에 대한 시스템 환경을 나타낸 도면.
도 3은 클라이언트 디바이스의 소프트웨어 아키텍처를 나타낸 도면.
도 4는 로컬 콘텐츠 디렉터리 내의 기존의 콘텐츠 항목에 액세스하기 위한 제약된 동기화의 상호작용 다이어그램.
도 5는 로컬 콘텐츠 디렉터리에 저장될 새로운 콘텐츠 항목을 생성하기 위한 제약된 동기화의 상호작용 다이어그램.
도 6은 호스트 기반 제약된 동기화를 위한 시스템 환경을 나타낸 도면.
도 7은 호스트 디바이스에 의해 관리되는 제약된 동기화의 상호작용 다이어그램.
도 8은 원격 및 로컬 콘텐츠 항목들을 표현하는 아이콘들을 갖는 로컬 콘텐츠 디렉터리에 대한 사용자 인터페이스를 나타낸 도면.
도 9는 예측된 콘텐츠 항목 중요도를 사용하는 제약된 동기화를 나타내는 개념도.
도 10은 제약된 동기화를 위해 예측된 콘텐츠 항목 중요도를 사용하는 콘텐츠 관리 시스템에 대한 시스템 환경을 나타낸 도면.
도 11은 유휴 상태 트리거 방식 콘텐츠 관리(idle state triggered content management)를 사용하는 클라이언트 디바이스의 소프트웨어 아키텍처를 나타낸 도면.
도 12는 유휴 상태 트리거 방식 콘텐츠 관리를 사용하는 콘텐츠 관리 시스템에 대한 시스템 환경을 나타낸 도면.
도 13은 유휴 상태 트리거 방식 콘텐츠 관리에서 사용되는 프로세스를 나타내는 흐름도.
도면들은 단지 예시를 위해 다양한 실시예들을 나타내고 있다. 본 기술분야의 통상의 기술자는, 본원에 기술되는 본 발명의 원리들을 벗어나지 않으면서, 본원에 예시된 구조들 및 방법들의 대안의 실시예들이 이용될 수 있다는 것을 이하의 논의로부터 즉각 인식할 것이다.
제약된 동기화의 기능 개요
이제부터, 제약된 동기화 시스템 및 프로세스의 전반적인 기능 개요가 기술된다. 준비 조건으로서, 사용자들은 콘텐츠 항목들을 클라이언트 디바이스들에 저장하고, 콘텐츠 항목들이 다른 클라이언트들 상의 콘텐츠 항목들의 인스턴스들과 그리고 호스트 시스템, 전형적으로 콘텐츠 관리 시스템과 동기화된다. 클라이언트 디바이스는 콘텐츠 항목들을 로컬 콘텐츠 디렉터리에 저장한다. 로컬 콘텐츠 디렉터리에 저장된 콘텐츠 항목들은, 콘텐츠 항목들의 사본들을 유지하고 콘텐츠 항목들을 다른 클라이언트 디바이스들과 동기화시키는, 콘텐츠 관리 시스템과 동기화된다. 각각의 클라이언트 디바이스는, 사용자가 콘텐츠 관리 시스템에 액세스할 수 있게 하는, 클라이언트 애플리케이션을 실행한다. 클라이언트 애플리케이션은 게다가 사용자가 로컬 콘텐츠 디렉터리에 대한 최대 저장소 할당량 또는 크기를 구성할 수 있게 한다.
일 양태에서, 클라이언트 디바이스는 어느 동기화된 콘텐츠 항목들이 클라이언트 디바이스 상에서 로컬적으로 이용가능한 채로 있는지와 어느 것들이 그 전체가 콘텐츠 관리 시스템 상에만 저장되어 있는지를 선택적으로 결정하도록 구성된다. 일 실시예에서, 클라이언트 디바이스는, 예를 들어, 콘텐츠 항목에 액세스할 필요가 있는 애플리케이션으로부터, 콘텐츠 항목에 액세스하라는 요청을 수신한다. 클라이언트 디바이스는 요청된 콘텐츠 항목이 섀도 항목(shadow item)인지 또는 클라이언트 디바이스 상에 로컬적으로 저장된 콘텐츠 항목인지를 결정한다. 섀도 항목이란 콘텐츠 항목을 표현하거나 에뮬레이트(emulate)하지만 콘텐츠 항목의 애플리케이션 데이터를 포함하지 않는 항목을 말한다. 일반적으로, 섀도 항목은, 텍스트, 이미지 데이터, 비디오 데이터, 오디오 데이터, 데이터베이스 테이블들, 스프레드시트 데이터, 그래픽 데이터, 소스 또는 오브젝트 코드, 또는 다른 유형들의 콘텐츠 데이터와 같은, 실제 애플리케이션 콘텐츠는 저장하지 않으면서, 콘텐츠 항목의 이름은 물론, 콘텐츠 항목의 유형, 경로 정보, 액세스 권한, 수정 정보, 및 크기와 같은 다양한 속성들과 같은, 콘텐츠 항목의 메타데이터 속성들을 복제한다. 섀도 항목들이 콘텐츠 항목에 대한 메타데이터를 저장할 뿐이기 때문에, 섀도 항목들은, 수백 메가바이트 또는 심지어 수 기가바이트 크기일 수 있는 콘텐츠 항목과 비교할 때, 단지 소량의 저장소, 예컨대, 전형적으로 약 4 킬로바이트만을 필요로 한다. 따라서, 콘텐츠 항목들을 표현하기 위해 섀도 항목들을 사용하는 것은 상당한 저장 공간을 절감하는 기능을 하고, 그로써 클라이언트 디바이스의 기능을 개선시킨다.
클라이언트 디바이스가 요청된 콘텐츠 항목이 섀도 항목이라고 결정하는 경우, 이것은 요청된 콘텐츠 항목 콘텐츠가 현재 클라이언트 디바이스에 저장되어 있지 않고 콘텐츠 관리 시스템에 저장되어 있다는 것을 나타낸다. 그에 따라, 클라이언트 디바이스는 요청된 섀도 항목에 대응하는 콘텐츠 항목을 콘텐츠 관리 시스템으로부터 다운로드한다. 클라이언트 디바이스는 게다가 콘텐츠 항목을 로컬 콘텐츠 디렉터리에 저장하는 것이 그 디렉터리에 대해 설정된 최대 저장 크기를 초과할 것인지를 결정한다. 그 경우에, 클라이언트 디바이스는 로컬 콘텐츠 디렉터리 내의 어느 콘텐츠 항목 또는 항목들이 로컬 콘텐츠 디렉터리로부터 제거되고 콘텐츠 항목들을 표현하는 섀도 항목들로 대체될 수 있는지를 결정한다. 일반적으로, 클라이언트 디바이스는, 콘텐츠 관리 시스템을 통해 콘텐츠 항목에 액세스할 수 있는 클라이언트 디바이스의 사용자 또는 사용자들에 의해 방치되고 있는 것으로 결정된 콘텐츠 항목들을 로컬 콘텐츠 디렉터리로부터 선택하기 위해, 클라이언트 디바이스 상에서의 가장 최근의 액세스 시각(예컨대, 클라이언트 디바이스 또는 그 상에서 실행 중인 애플리케이션들의 사용자의 행동들), 콘텐츠 항목들이 공유되는 다른 클라이언트 디바이스들 상에서의 가장 최근의 액세스 시각(예컨대, 그 클라이언트 디바이스들의 사용자들의 행동들), 콘텐츠 항목 크기, 및 액세스 빈도를 비롯한, 공유 콘텐츠 항목의 하나 이상의 속성들을 사용한다. 이러한 인자들의 조합들이 또한 방치된 콘텐츠 항목들을 결정하는 데 사용될 수 있다. 클라이언트 디바이스는, 다운로드된 콘텐츠 항목이 최대 저장 크기를 초과하지 않으면서 로컬 콘텐츠 디렉터리에 저장될 수 있게 하기 위해, 선택된 콘텐츠 항목들을 삭제하는 것이 충분한 양의 저장 공간을 로컬 콘텐츠 디렉터리에 생성하도록 로컬 콘텐츠 디렉터리로부터 다수의 콘텐츠 항목들을 선택한다. 일 실시예에서, 공유 콘텐츠 디렉터리 내의 선택된 콘텐츠 항목들에 의해 사용되는 저장소의 총량이 다운로드된 콘텐츠 항목을 저장하는 데 필요한 저장소의 양과 적어도 같거나 그를 초과하도록, 클라이언트 디바이스는 다수의 콘텐츠 항목들을 선택한다.
클라이언트 디바이스는 선택된 콘텐츠 항목들을 삭제하고, 각각의 삭제된 콘텐츠에 대해, 대응하는 섀도 항목을 생성한다. 클라이언트 디바이스는 섀도 항목들을 삭제된 콘텐츠 항목들에 대응하는 디렉터리 위치들에 저장한다. 섀도 항목들을 대응하는 위치들에 저장하는 것은 삭제된 콘텐츠 항목들을 요청측 애플리케이션들에 의식되지 않는 방식으로 차후에 검색하는 것을 가능하게 한다.
이 실시예는, 각각의 클라이언트 디바이스가 다른 콘텐츠 항목들 및 애플리케이션들을 위한 보다 많은 공간을 가지면서 콘텐츠 관리 시스템과 공유되는 모든 콘텐츠 항목들에의 액세스를 유지하는, 제약된 공유 저장 시스템을 제공하며, 각각의 클라이언트 디바이스는 물론 콘텐츠 관리 시스템 전체의 저장 효율을 개선시킨다. 보다 상세하게는, 이 실시예는 클라이언트 디바이스가 실제보다 상당히 큰 저장 용량을 갖는 것처럼 효과적으로 동작할 수 있게 한다. 예를 들어, 로컬 콘텐츠 디렉터리에 대한 10GB 저장소 할당량만을 갖는 클라이언트 디바이스가 그 디렉터리에 대해 4,000GB(4TB) 초과의 저장소 할당량 - 유효 저장소의 400배 증가를 나타냄 - 을 갖는 것처럼 동작할 수 있다. 과거에는, 제한된 로컬 저장 용량에 대한 이러한 해결책이 네트워크 연결 및 대역폭 제한에 의해 불가능했으며, 따라서 퍼베이시브 연결(pervasive connectivity) 및 빠른 업로드 및 다운로드 속도를 가능하게 하는 인터넷 인프라스트럭처의 최근의 발전의 결과로서 문제가 해결되고 있다.
최근의 인터넷 인프라스트럭처 발전에도 불구하고, 콘텐츠 항목들을 제거하는 데, 콘텐츠 항목들을 섀도 항목들로 대체하는 데, 그리고 사용자 요청에 따라 콘텐츠 항목들을 복원하는 데 필요한 계산, 업로드 및 다운로드 시간들이 여전히 디바이스 성능에 영향을 미칠 수 있다. 따라서, 전통적인 공유 콘텐츠 동기화 방법들보다 클라이언트 디바이스에 대한 저장소 부담을 여전히 감소시키면서 사용자에 보이는 디바이스 성능에 대한 영향을 감소시키는 대안의 실시예들이 또한 기술된다. 일 실시예에서, 계산, 업로드 및 다운로드가 섀도 항목으로서 표현된 공유 콘텐츠 항목에의 예측된 사용자 액세스에 기초하여 완료된다. 콘텐츠 항목에의 사용자 액세스를 예측하기 위해, 클라이언트 애플리케이션 또는 콘텐츠 관리 시스템은 각각의 콘텐츠 항목에 대한 보유 점수(retention score)를 유지하고; 보유 점수는 각각의 콘텐츠 항목의 사용자에 대한 예측된 중요도의 척도이다. 충분히 높은 예측된 중요도(보유 점수 문턱값을 초과하는 보유 점수에 의해 표현됨)를 갖는 임의의 콘텐츠 항목이 대응하는 클라이언트 디바이스에 다운로드되도록 각각의 클라이언트 디바이스가 보유 점수 문턱값으로 구성된다. 보유 점수는 가장 최근의 액세스 시각, 위치, 유형, 크기, 액세스 빈도, 공유 상태, 액세스 권한을 갖는 계정들의 수, 액세스 권한을 갖는 디바이스들의 수, 또는 콘텐츠 항목을 저장하는 디바이스들의 수를 비롯한 각종의 속성들에 기초하여 계산될 수 있다.
대안적으로, 다른 실시예는 클라이언트 디바이스의 활동이 (콘텐츠 관리 시스템에 의해 또는 클라이언트 애플리케이션에 의해) 모니터링되는 동안 클라이언트 디바이스 상의 공유 콘텐츠 항목들에 의해 점유된 저장 공간이 저장소 할당량을 초과할 수 있게 한다. 클라이언트 디바이스가 유휴(idle)인 것으로 결정될 때, 클라이언트 애플리케이션은 클라이언트 디바이스 상에 저장된 콘텐츠 항목들에 의해 점유된 유효 저장 공간을 감소시키기 위해, 앞서 논의된 바와 같이, 콘텐츠 항목들을 제거하고 콘텐츠 항목들을 섀도 항목들로 대체한다. 이 실시예들에서, 저장소 할당량이 항상 유지되지는 않으며, 따라서 점유된 저장소가 다른 콘텐츠 항목 속성들에 따라 감소될 수 있다. 저장소 할당량을 유지하는 대신에, 예를 들어, 클라이언트 디바이스가 유휴일 때마다 명시된 시간량(예컨대, 2주)보다 오래된 가장 최근의 액세스 날짜를 갖는 모든 콘텐츠 항목들이 제거하고 섀도 항목들로 대체될 수 있을 것이다. 이 프로세스는 점유된 저장 공간을 저장소 할당량 미만으로 유지하지는 않지만, 클라이언트 디바이스가 유휴이고 따라서 사용자에 의해 적극적으로 사용되고 있지 않는 동안 동작들이 행해지기 때문에 사용자에게 바람직할 수 있는 방식으로 점유된 저장 공간을 감소시킬 것이고, 그로써 유효 저장 용량의 유사한 증가를 제공하면서 이전에 기술된 실시예들보다 사용자 경험 개선을 제공하는 것에 의해 제약된 동기화 시스템을 사용하도록 구성된 클라이언트 디바이스를 개선시킨다.
도 1a와 도 1b는 제약된 동기화의 실시예들을 추가적으로 예시하는 개념도이다. 도 1a는 콘텐츠 항목을 저장소 제약된 동기화된 폴더에 저장하는 프로세스를 나타낸다. 도 1b는 저장소 제약된 클라이언트 디바이스 상에서 섀도 항목을 여는 프로세스를 나타낸다.
도 1a와 도 1b에서, 클라이언트 디바이스(100A)는 콘텐츠 관리 시스템(110)과 연결되어 동기화될 수 있는 복수의 사용자 제어 디바이스(user controlled device)들 중 하나이다. 콘텐츠 관리 시스템(110)은 네트워크를 사용하여 복수의 클라이언트 디바이스들로부터의 콘텐츠를 동기화시키도록 인스턴스화된 서버이다. 공유 콘텐츠 저장 디렉터리(120)는 콘텐츠 관리 시스템(110)과 동기화된 콘텐츠를 포함하는 클라이언트 디바이스(100) 상에 위치된 디렉터리이다. 저장소 할당량(130)은 공유 콘텐츠 저장 디렉터리(120) 내의 모든 콘텐츠 항목들을 위해 허용된 저장 공간의 양을 명시하는 파라미터 값이다. 저장소 할당량(130)은 클라이언트 디바이스(100A)의 사용자, 클라이언트 디바이스(100)의 운영 체제, 콘텐츠 관리 시스템(110)의 클라이언트 애플리케이션에 의해, 시스템 관리자에 의해, 또는 콘텐츠 관리 시스템(110)에 구축된 정책들에 의해 설정될 수 있다. 저장소 할당량(130)에 대한 예시적인 값은 10GB이고; 이것은 사용자가 최대 10GB의 콘텐츠 항목들 전체(모든 콘텐츠 항목 속성들 및 데이터)를 공유 콘텐츠 저장 디렉터리(120)에 저장할 수 있다는 것을 의미한다. 콘텐츠 항목들(140)은 공유 콘텐츠 저장 디렉터리(120) 내에 저장되고; 클라이언트 디바이스(100)와 콘텐츠 관리 시스템(110) 간의 동기화 이후에, 공유 콘텐츠 저장 디렉터리(120) 내의 각각의 콘텐츠 항목 (140)의 한 버전이 콘텐츠 관리 시스템(110)에 의해서도 유지된다.
"콘텐츠 항목"이라는 용어는, 본원에서 사용되는 바와 같이, 임의의 파일, 파일들의 그룹, 또는 파일들의 모음을 나타낸다. 단일의 파일만으로 이루어진 임의의 콘텐츠 항목은 대안적으로 파일이라고 지칭될 수 있다. 그에 부가하여, "파일 테이블(file table)"과 같은 용어들은 개개의 파일들 또는 콘텐츠 항목들 둘 다를 지칭하는 데 사용될 수 있다.
도 1에서, 공유 콘텐츠 저장 디렉터리(120)는 콘텐츠 항목들(140)을 포함하는 상자로서 그래픽으로 도시되어 있다. 저장소 할당량(130)은 콘텐츠 저장 디렉터리(120)를 표현하는 상자의 특정의 길이에 의해 표현된다.
클라이언트 디바이스(100A) 및 콘텐츠 관리 시스템(110)의 제1 예시는 2개의 엔티티들의 전형적인 상태를 나타낸다. 클라이언트 디바이스는 그의 공유 콘텐츠 저장 디렉터리(120) 내에 저장된 콘텐츠 항목들(140A, 140B, 및 140C)을 갖는다(실제로는 콘텐츠 항목들(140)의 수가 수천, 수만 또는 그 이상일 수 있기 때문에, 적은 수의 콘텐츠 항목들(140)만이 설명을 위해 도시되어 있다). 콘텐츠 관리 시스템(110)은 클라이언트 디바이스(100A)와 동기화되는 것으로서 표현되고, 따라서, 비록 저장소 할당량(130)을 갖지는 않지만, 클라이언트 디바이스(100A) 상에 저장된 콘텐츠 항목들의 각각의 콘텐츠 항목의 동일한 버전을 유지한다. 그에 부가하여, 콘텐츠 관리 시스템(110)은 콘텐츠 항목(140A)이 공유되는 다른 클라이언트 디바이스(100B)를 지원한다. 클라이언트 디바이스(100B)의 식별과 연관된 콘텐츠 항목(140D)의 존재는 클라이언트 디바이스(100B)가 또한 이 콘텐츠 항목(140D)을 콘텐츠 관리 시스템(110)과 동기화시키고 있다는 것을 나타낸다. 이와 같이, 각각의 클라이언트 디바이스(100)는 콘텐츠 항목들(140)을 콘텐츠 관리 시스템(110)과만 또는 콘텐츠 관리 시스템(110) 및 다른 클라이언트 디바이스들(100)과 동기화시킬 수 있다.
스테이지 1.1은 콘텐츠 항목(140E)을 공유 콘텐츠 저장 디렉터리(120)에 저장하라고 클라이언트 디바이스(100A)에 요청하는 동작을 나타낸다. 그렇지만, 예시된 바와 같이, 콘텐츠 항목(140E)의 크기가 저장소 할당량(130)에 의해 제한되는 바와 같은 공유 콘텐츠 저장 디렉터리(120)에 남아있는 이용가능한 공간을 초과하기 때문에, 콘텐츠 항목(140E)을 공유 콘텐츠 저장 디렉터리(120)에 추가하는 것은 콘텐츠 항목들(140)에 의해 점유되는 총 저장 공간이 저장소 할당량(130)을 초과하게 할 것이다.
스테이지 1.2는, 콘텐츠 항목(140E)이 저장될 수 있는 충분한 저장소가 이용가능하도록 만들기 위해, 클라이언트 디바이스(100)로부터 제거될 방치된 콘텐츠 항목(140C)을 선택하는 동작을 나타낸다. 이 실시예에 따르면, 클라이언트 디바이스(100) 또는 콘텐츠 관리 시스템(110) 중 어느 하나가 어느 콘텐츠 항목들(140)을 방치된 것으로서 선택할지를 결정한다. 어느 콘텐츠 항목들이 방치된 것으로서 선택되는지를 결정하기 위해, 이하에서 논의되는 각종의 방법들이 사용될 수 있다. 이 예에서는 단일의 콘텐츠 항목(140C)만이 선택되지만, 실제로는, 이용가능하게 될 필요가 있는 저장 용량의 양에 따라, 임의의 수의 콘텐츠 항목들(140)이 선택될 수 있다.
스테이지 1.3은 선택된 콘텐츠 항목(140C)을 클라이언트 디바이스(100A)로부터 제거하는 동작을 나타낸다. 각각의 제거된 콘텐츠 항목 대신에, 클라이언트 디바이스(100A)는 제거된 콘텐츠 항목 (140C)을 표현하는 섀도 항목(160C)을 생성하고, 섀도 항목을 공유 콘텐츠 저장 디렉터리(120) 내의 제거된 콘텐츠 항목(140C)과 동일한 위치에 저장한다. 대안적으로, 콘텐츠 관리 시스템(110)은 섀도 항목(160C)을 생성하고, 이어서 섀도 파일(160C)을 콘텐츠 저장 디렉터리(120)에 다운로드할 수 있다. 섀도 항목은, 콘텐츠 항목(140C)의 실제 데이터를 포함하지 않고, 콘텐츠 이름, 경로 정보, 콘텐츠 속성들, 및 콘텐츠 크기와 같은, 제거된 콘텐츠 항목(140C)을 표현하는 속성들을 포함한다. 섀도 항목들의 대응하는 콘텐츠 항목들의 실제 데이터를 포함하지 않는 것에 의해, 섀도 항목들은 상당히 더 적은 저장소를 필요로 한다. 예를 들어, 섀도 항목은 전형적으로, 4KB와 같은, 운영 체제에 의해 제공되는 가장 작은 파일 크기 할당량 이상을 필요로 하지 않는다. 이 작은 크기는, 섀도 항목의 크기가 콘텐츠 항목(140C) 자체와 비교할 때 무시할 수 있다는 것을 나타내는, 수직 라인을 사용하여 도 1에 시각적으로 예시되어 있다. 예를 들어, 제거된 콘텐츠 항목(140C)은 크기가 수 메가바이트 또는 심지어 기가바이트(오디오 또는 비디오 파일들에 대해 매우 흔한 일임)일 수 있지만, 이러한 콘텐츠 항목을 표현하는 섀도 항목에 필요한 저장소는 여전히 4KB 정도일 뿐이다. 그 결과, 클라이언트 디바이스(100)는 공유 콘텐츠 항목들을 위해 사용되는 로컬 저장소의 양을 저장소 할당량(130) 미만의 양으로 감소시킬 수 있고, 그로써 새로 생성된(또는 콘텐츠 항목의 새 버전이 더 크도록 업데이트된) 콘텐츠 항목(140E)을 저장하는 데 충분한 공간이 이용가능하도록 만들 수 있다. 선택된(및 제거된) 콘텐츠 항목들을 식별해주는 정보가, 이 항목들이 나중에 선택적으로 검색될 수 있게 하기 위해, 클라이언트 디바이스(100A) 상에 유지된다. 이 정보는 클라이언트 디바이스(100)에서, 콘텐츠 관리 시스템(110) 내의 원격 콘텐츠 항목 테이블(366)(이하에서 추가적으로 기술됨, 도 1a에 예시되지 않음)에 원격적으로 저장되는 저장된 콘텐츠 항목들의 목록(150)에, 로컬적으로 저장된다.
스테이지 1.4는, 충분한 공간이 공유 콘텐츠 저장 디렉터리(120)에서 이용가능하게 되면, 콘텐츠 항목(140E)을 클라이언트 디바이스(100A)에 저장하는 동작을 나타낸다. 클라이언트 디바이스(100A)가 콘텐츠 항목(140E)을 공유 저장 디렉터리(120)에 성공적으로 저장하면, 콘텐츠 관리 시스템(110)과의 동기화가 개시되고 콘텐츠 항목(140E)이 콘텐츠 관리 시스템(110)에 업로드된다. 콘텐츠 관리 시스템(110)은 클라이언트 디바이스(100A) 상의 모든 콘텐츠 항목들(섀도 항목들을 포함함)의 전체 사본들을 여전히 유지한다.
이제 도 1b를 참조하면, 콘텐츠 항목(140E)이 클라이언트 디바이스(100A)와 클라이언트 관리 시스템(110) 사이에서 동기화된 후의 클라이언트 디바이스(100A)와 콘텐츠 관리 시스템(110)이 도시되어 있다.
스테이지 1.5는 클라이언트 디바이스(100A)가 콘텐츠 항목(140C)에의 액세스를(예컨대, 워드 프로세서를 사용하여 콘텐츠 항목(140C)을 열거나, 파일 브라우저에 콘텐츠 항목을 보여주라고) 요청하는 동작을 나타내고, 여기서 클라이언트 디바이스(100)는 요청된 콘텐츠 항목이 섀도 항목에 의해 표현되어 있다고 결정한다. 콘텐츠 항목이 로컬적으로 저장되어 있으면, 콘텐츠 항목이 클라이언트 디바이스(100A) 상의 요청측 애플리케이션에 제공된다. 이 경우에, 요청된 콘텐츠 항목은 클라이언트 디바이스(100A)로부터 제거되고, 콘텐츠 관리 시스템(110) 상에 원격적으로 저장되어 있을 뿐이며, 따라서 클라이언트 디바이스(100)는 요청된 콘텐츠 항목을 다운로드하라고 콘텐츠 관리 시스템(110)에 요구한다. 공유 콘텐츠 저장 디렉터리(120) 상에 충분한 공간이 있다면, 콘텐츠 관리 시스템(110)은 요청된 콘텐츠 항목을 클라이언트 디바이스(100A)에 다운로드하고; 클라이언트는 이어서 콘텐츠 항목(140C)을 표현했던 섀도 항목(160C)을 콘텐츠 항목(140C) 자체로 대체하며, 이는 임의의 요청측 애플리케이션이 의식되지 않게 콘텐츠 항목에 액세스할 수 있게 한다. 그렇지만, 이 경우에, 콘텐츠 항목(140C)을 공유 콘텐츠 저장 디렉터리(120)에 추가하는 것은, 콘텐츠 항목(140C)이 공유 콘텐츠 저장 디렉터리(120)의 경계 밖으로 연장되는 것에 의해 묘사된 바와 같이, 저장소 할당량(130)을 초과할 것이다.
스테이지 1.6은 클라이언트 디바이스(100A)로부터 제거하기 위한 방치된 콘텐츠 항목(들)을 선택하는 동작을 나타낸다. 이 경우에, 선택되는 방치된 콘텐츠 항목은 콘텐츠 항목(140A)이다.
스테이지 1.7은 콘텐츠 항목(140A)을 제거하고 콘텐츠 항목(140A)을 그의 섀도 항목(160A)으로 대체하는 동작을 나타낸다. 이 제거는 콘텐츠 항목(140C)이 콘텐츠 관리 시스템(110)으로부터 다운로드되어, 저장소 할당량(130)을 초과하지 않으면서, 그의 섀도 항목 표현에 첨부되기에 충분한 공간을 공유 콘텐츠 저장 디렉터리(120)에 생성한다. 제거된 콘텐츠 항목(140A)은 원격적으로 저장된 콘텐츠 항목들의 목록(150)에 포함되고, 콘텐츠 항목(140C)은 이 목록 (150)로부터 제거되는데, 그 이유는 콘텐츠 항목(140C)이 공유 콘텐츠 디렉터리(120)에 복원되었기 때문이다.
스테이지 1.8은, 콘텐츠 항목(140C)이 클라이언트 디바이스(100A) 상에 상주하면, 콘텐츠 항목(140C)이 요청측 애플리케이션에 의해 열릴 수 있다는 것을 나타낸다. 클라이언트 디바이스(100A) 상에서 도 1a 및 도 1b에 의해 예시된 프로세스가 완료되면, 클라이언트 디바이스(100A) 상에서의 콘텐츠 항목들(140)에 대한 모든 변경들이 콘텐츠 관리 시스템(110) 상에 미러링되도록 클라이언트 디바이스(100A)와 콘텐츠 관리 시스템(110) 사이에서 통상의 동기화가 일어날 수 있다. 모든 콘텐츠 항목들(140)은 (섀도 항목들에 의해 표현되어 있을지라도), 공유 콘텐츠 저장 디렉터리(120)로부터 삭제될 때까지, 콘텐츠 관리 시스템(110) 상에 유지된다.
시스템 아키텍처의 개요
도 2는 제약된 동기화 시스템의 시스템 아키텍처를 나타낸다. 각각의 컴포넌트에 관한 상세들이 나중의 섹션에서 추가적으로 기술될 것이지만, 제약된 동기화의 설명을 위한 상황을 제공하기 위해 몇몇 요소들이 여기에서 소개된다. 게다가, 본 기술분야의 통상의 기술자에게 명백한 바와 같이, 제약된 동기화에서 사용되는 동작들 및 방법들은 필연적으로 컴퓨터를 필요로 하고, 임의의 실시예에서 사람 조작자에 의한 정신 단계들에 의해 수행되지 않는다. 게다가, 동작들이 정보를 저장 및 검색하기 위해, 정보를 전송 및 송신하기 위해, 또는 정보를 처리하기 위해 컴퓨터를 사용할 수 있지만, 본 기술분야의 통상의 기술자는, 이러한 동작들이 본원에 기술된 알고리즘들을 사용하여 특정 방식으로 정의된 데이터에 대해 특정 방식으로 수행되고, 따라서 이러한 컴퓨터들이 기본적으로 그들의 운영 체제 및 표준의 애플리케이션들만에 의해 프로비저닝되는 방법과 상이한 방식으로 컴퓨터를 구성하는 것을 필요로 하기 때문에, 이러한 동작들이 단지 일반적인 컴퓨터 동작들이 아니라는 것을 이해할 것이다. 그에 부가하여, 필요하게 되는 구성은, 이하에서 상세히 기술되는 단계들을 통해, 종래의 운영 체제들 및 파일 관리 시스템들로 구성된 일반의 범용 컴퓨터들보다 컴퓨터의 저장 용량을 향상시킨다.
클라이언트 디바이스들(100)은, 콘텐츠 관리 시스템(110)으로부터 원격적으로 위치된 클라이언트 디바이스들(100) 사이의 인터네트워킹(internetworking)을 제공하는 임의의 적당한 통신 수단일 수 있는, 도시되지 않은 네트워크, 예컨대, LAN, WAN, 또는 WAN을 통해 콘텐츠 관리 시스템(110)과 통신한다. 일반적으로, 클라이언트 애플리케이션(200A)이 설치된 클라이언트 디바이스(100A)는 콘텐츠 항목들을 콘텐츠 관리 시스템(110)에 제공한다. 클라이언트 애플리케이션(200A)은 클라이언트 디바이스(100A)가 저장소 제약된 동기화와 연관된 기능들을 수행하는 데 필요한 프로그램들 및 프로토콜들을 포함한다. 따라서, 클라이언트 디바이스(100A)는 종종 클라이언트 애플리케이션(200A)에 의해 요청된 동작(action)들을 수행한다. 그렇지만 클라이언트 디바이스(100A)와 클라이언트 애플리케이션(200A)이 함께 동작하기 때문에, 설명의 편의를 위해 이 동작들 중 일부가 "클라이언트 디바이스(100A)"를 동작 요소(operative element)로서 사용하는 것으로 말해진다. 클라이언트 디바이스(100A)의 사용자는, 예를 들어, 동일한 사용자에 의해 관리되는 다른 컴퓨터 또는 상이한 사용자에 의해 운영되는 컴퓨터일 수 있는, 클라이언트 디바이스(100B)와 공유될 콘텐츠 항목들 중 일부를 지정하였다. 콘텐츠 관리 시스템(110)은 클라이언트 디바이스(100B)에 통지하고, 클라이언트 디바이스(100A)로부터 수신되는 지정된 콘텐츠 항목들을 클라이언트 디바이스(100B)에 저장된 로컬 콘텐츠와 동기화시킨다.
콘텐츠 관리 시스템(110)은 각각의 콘텐츠 항목을 콘텐츠 항목들의 세트에 대응하는 네임스페이스(namespace)와 연관시킨다. 네임스페이스는 주어진 콘텐츠 항목들이 저장되는 디렉터리 구조 내의 디렉터리(또는 "폴더")를 지정한다. 콘텐츠 항목들과 특정의 네임스페이스들 간의 연관은 네임스페이스 테이블(222)에 저장된다. 콘텐츠 관리 시스템(110)은 각각의 클라이언트를, 각각의 네임스페이스 내의 콘텐츠 항목들에 액세스하고, 그들을 수정 및 삭제할 특정 권한의 식별과 함께, 각각의 클라이언트가 액세스할 수 있는 네임스페이스(및 그 안의 콘텐츠 항목들)와 연관시킨다. 클라이언트들(100)이 네임스페이스에 동기화될 때, 클라이언트들은 네임스페이스와 연관된 콘텐츠 항목들의 로컬 사본을 저장하고, 이용가능한 경우, 콘텐츠 위치에 따라 콘텐츠 항목들을 편성한다. 사용자는 개개의 클라이언트 디바이스(100)와 또는 다수의 클라이언트들(100)과 연관될 수 있고; 예를 들어, 사용자는 가정용 컴퓨터, 업무용 컴퓨터, 휴대용 컴퓨터, 스마트폰, 및 태블릿 컴퓨터 모두를 서로 동기화시킬 수 있다. 콘텐츠 항목들을 공유하기 위해, 사용자는 다른 사용자들 및/또는 클라이언트들과 공유될 네임스페이스를 지정한다. 콘텐츠 관리 시스템(110)은 공유된 네임스페이스와 연관된 클라이언트들(100)를 거쳐 공유된 네임스페이스(들) 내의 콘텐츠 항목들을 동기화시킨다. 콘텐츠 관리 시스템(110)에 저장된 콘텐츠 항목들은, 문서들, 데이터, 영화들, 애플리케이션들, 코드, 이미지들, 음악 등을 비롯한, 임의의 유형의 콘텐츠 항목을 포함할 수 있다. 콘텐츠 항목은 또한, 모음(collection), 재생목록, 앨범, 파일 아카이브(file archive) 등과 같은, 콘텐츠 항목들을 함께 그룹화하는 폴더 또는 다른 메커니즘일 수있다.
각각의 사용자는 콘텐츠 항목들을 콘텐츠 관리 시스템(110) 상에 저장하기 위해 사용될 저장소의 양을 명시하는 정보를 포함하는 콘텐츠 관리 시스템(110)에 대한 계정과 연관되어 있다. 클라이언트 디바이스는 또한, 공유 콘텐츠 저장 디렉터리(120)의 크기인, 동기화된 콘텐츠 항목들을 저장하기 위한 지정된 양의 로컬 저장소를 가지며; 이 지정된 양은 앞서 기술된 저장소 할당량 파라미터(130)이다. 예를 들어, 사용자의 계정은 사용자가 콘텐츠 관리 시스템(110) 상에서는 50GB의 저장소를 이용가능하지만, 클라이언트 디바이스(100) 상에서는 단지 10GB의 저장소 할당량을 갖는다는 것을 명시한다. 이것과 같은 상황에서, 사용자가 로컬적으로 저장된 공유 콘텐츠 항목을 수정할 때, 콘텐츠 항목은 크기가 증가할 수 있고, 그로써 클라이언트 디바이스(100) 상에서의 저장소 할당량을 초과할 수 있다. 이와 유사하게, 사용자는 콘텐츠 관리 시스템(110)과 공유 및 동기화될 새로운 콘텐츠 항목을 생성하여 공유 콘텐츠 디렉터리(120)에 저장하는 것에 의해 클라이언트 디바이스(100) 상에서의 저장소 할당량을 초과할 수 있다. 이 경우에, 공유 콘텐츠 항목들의 양이 클라이언트 디바이스(100)에 대한 저장소 할당량을 초과하고, 이 경우에 클라이언트 디바이스(100)는 저장소 제약되고, 콘텐츠 관리 시스템(110)에 의해 동기화된 모든 콘텐츠 항목들의 로컬 사본을 더 이상 유지할 수 없다.
클라이언트 디바이스(100) 또는 콘텐츠 관리 시스템(110) 중 어느 하나는 원격적으로 콘텐츠 관리 시스템(110) 상에는 여전히 유지하면서 로컬 저장소로부터는 제거할 하나 이상의 콘텐츠 항목들을 선택하도록 구성되고, 따라서 그 콘텐츠 항목들은 차후에 검색되어 클라이언트 디바이스(100)에 복원될 수 있다. 일반적으로, 선택되는 콘텐츠 항목들은, 콘텐츠 항목에 액세스하라는 요청이 행해지는 특정의 클라이언트 디바이스(100) 상에서 또는 콘텐츠 항목들이 공유되는 모든 클라이언트 디바이스들(100)에 걸쳐, 최소 최근 액세스(least recently accessed) 콘텐츠 항목들이고; 다른 선택 방법들은 이하의 섹션에서 추가적으로 논의된다. 클라이언트 기반 실시예에서, 클라이언트 애플리케이션(200)은 클라이언트 디바이스(100) 상에 저장된 각각의 공유 콘텐츠 항목에 대한 가장 최근의 액세스를 식별해주는 정보를 유지한다. 저장이 제약될 때, 클라이언트 애플리케이션(200)은 최소 최근 액세스(본원에서, "LRA"라고 함) 콘텐츠 항목들 중 하나 이상을 선택한다. 호스트 기반 실시예에서, 콘텐츠 관리 시스템(110)은 모든 콘텐츠 항목에 대한 액세스 데이터를 유지하고; 시스템(110)은 콘텐츠 항목이 공유되는 임의의 클라이언트 디바이스(100) 상에서 콘텐츠 항목이 액세스될 때마다 이 정보를 업데이트한다. LRA 선택은, 각각이 호스트 기반 또는 클라이언트 기반 시스템으로서 구현될 수 있는, 다수의 가능한 방치된 콘텐츠 항목 선택 방법(unattended content item selection method)들(본원에서 "UCSM"라고 함) 중 하나일뿐이다. 임의의 UCSM은 각각의 콘텐츠 항목이 제거 대상인지를 결정하기 위해 각각의 콘텐츠 항목에 대한 vnode 참조(vnode reference)를 참고할 수 있다. 각각의 콘텐츠 항목에 대한 vnode는 콘텐츠 항목에의 액세스 횟수에 관한 정보는 물론, 콘텐츠 항목이 현재 사용 중이거나 열려 있는지 여부를 비롯한 다른 콘텐츠 항목 상태 지시자들을 포함한다.
간결함을 위해, 저장소 제약에 응답하여 클라이언트 디바이스(100) 상에 존재하지 않도록 제거하기 위한 콘텐츠 항목들이 선택될 때마다, 이 동작이 본원에서 "방치된 콘텐츠 항목들을 선택하는 것"으로 지칭되는데, 그 이유는 대부분의 UCSM이 사용자에 의해 액세스될 가능성이 가장 적은 그 콘텐츠 항목들을 식별하기 위해 동작하기 때문이다. 방치된 콘텐츠 항목은 하기의 논의에서 개략적으로 기술되는 임의의 UCSM에 의해 선택되는 콘텐츠 항목들을 지칭한다.
기본적인 LRA 선택: 기본적인 LRA 선택을 수행하기 위해, 클라이언트 애플리케이션(200)은, 최소 최근 액세스 콘텐츠 항목이 큐의 최상단에 오도록, 가장 최근의 로컬 액세스 날짜에 의해 정렬된 콘텐츠 항목들의 큐를 유지한다. 각각의 콘텐츠 항목에 대한 가장 최근의 액세스 날짜 및 시각은 콘텐츠 액세스 이력 테이블(content access history table)에 유지된다. 콘텐츠 항목에의 액세스는 콘텐츠 항목을 생성, 열기, 미리보기, 또는 수정하는 동작들을 포함한다. 임의의 수의 이 동작들이 액세스로 간주될 수 있으며, 예를 들어, 일 실시예는 콘텐츠 항목을 열기, 수정, 또는 저장하는 것을 액세스로 간주할 수 있지만, 콘텐츠 항목을 미리보기하는 것은 액세스로 간주되지 않을 수 있다. 큐에서 식별된 최소 최근 액세스 콘텐츠 항목(즉, 큐의 최상단에 있는 콘텐츠 항목)부터 시작하여 큐의 끝에 있는 콘텐츠 항목에서 끝나는, 큐에 열거된 각각의 콘텐츠 항목에 대한 저장소 크기의 누적 합(예컨대, 누계(running total))이 계산된다. 저장소가 제약될 때, 클라이언트 애플리케이션(200)은 콘텐츠 항목을 저장하는 데 필요한 저장 공간의 양을 결정하고, 따라서 누적 저장소 크기가 저장 공간 요구사항을 초과하는 콘텐츠 항목의 인덱스를 식별하기 위해 큐를 통해 진행한다. 식별된 인덱스는 클라이언트 디바이스(100) 상의 공유 콘텐츠 저장 디렉터리(120)로부터 제거하기 위해 큐 내의 그 인덱스를 포함하여 그 인덱스 위쪽의 모든 콘텐츠 항목들을 선택하는 데 사용된다.
이 프로세스는 표 1에 추가적으로 설명되어 있다. 이 예에서, 콘텐츠 항목을 저장하는 데 75MB의 저장소가 필요하다. 콘텐츠 항목들 A와 B는 총합하여 70MB에 불과하기 때문에, 이 2개의 콘텐츠 항목들의 제거가 항목을 위한 충분한 양의 저장소를 제공하지 않는다. 그에 따라, 총 누적 크기가 150MB인 콘텐츠 항목들 A, B, 및 C가, 대응하는 인덱스들 00, 01 및 02에서, 선택된다(최우측 열에 지정에 의해 표시됨).
Figure 112017063074349-pat00001
원격 LRA 선택: LRA 선택은 또한 콘텐츠 관리 시스템(110)을 통해, 그 상에서 직접, 또는 콘텐츠 항목들의 공유 버전들을 갖는 클라이언트 디바이스들(100) 상에서, 콘텐츠 항목들에 액세스할 수 있는 다른 사용자들에 의한 원격 액세스들에 기초할 수 있다. 이것을 달성하기 위해, 일 실시예에서, 각각의 클라이언트 디바이스(100)는, 예를 들어, 통상적인 콘텐츠 항목 동기화 동작들 동안, 또는 다른 때에, 그 자신의 콘텐츠 액세스 이력 테이블을 콘텐츠 관리 시스템(110)과 동기화시킨다. 이 실시예는 각각의 클라이언트 디바이스(100)가 임의의 다른 클라이언트 디바이스와 공유하는 모든 콘텐츠 항목에 대한 현재 액세스 정보를 각각의 클라이언트 디바이스(100)가 유지할 수 있게 한다. 대안적으로, 호스트 기반 실시예의 경우, 콘텐츠 관리 시스템(110)은, LRA 선택을 위해 사용할 현재 업데이트된 목록을 갖도록, 동기화 및 공유를 위해 지정되어 있는 모든 클라이언트 디바이스들에 걸쳐 각각의 콘텐츠 항목에 대한 액세스 이력을 포함하는 콘텐츠 액세스 이력 테이블을 유지할 수 있다. 원격 LRA 선택은 그러면 콘텐츠 관리 시스템(110)이 누적 저장소 크기가 필요한 저장 공간을 초과하는 최소 최근 액세스 콘텐츠 항목들을 선택하는 것을 포함한다. 이 실시예에서, 이 큐는 콘텐츠 항목과 관련하여 동기화되는 모든 클라이언트 디바이스들로부터의 가장 최근의 액세스 시각들에 의해 정렬된다.
표 2는 원격 LRA를 구현될 수 있는 방법의 일 예이다. 이 예에서, 콘텐츠 항목들 B와 C는, 각각, 2014년 5월 24일과 2014년 4월 5일에 상이한 클라이언트 디바이스 상에서 원격적으로 마지막으로 액세스되었지만, 둘 다가 2014년 3월 24일에 로컬적으로 마지막으로 액세스되었다(표 1에 열거됨). 항목들 B와 C에 대한 가장 최근의 액세스 날짜의, 그들의 원격 액세스들로 인한, 이 변화는, 기본적인 LRA 선택이 사용될 때와 비교하여, 그들을 큐에서 아래로 더 멀리 이동시킨다. 그 결과, 이 예에서, A, B, 및 C 대신에 항목들 A와 D가 선택된다.
Figure 112017063074349-pat00002
콘텐츠 항목 크기 선택: 제거하기 위한 콘텐츠 항목들을 선택하는 데 사용될 수 있는 다른 인자는 그들의 크기이다. 일 실시예에서, 크기는 클라이언트 디바이스(100)로부터 원격적으로 제거 및 저장되는 콘텐츠 항목들의 수를 최소화하기 위해 사용된다. 이것은 큐를 액세스 날짜 대신에 크기로(가장 작은 것부터 가장 큰 것으로) 정렬하는 것에 의해 달성될 수 있다. 이어서, 필요한 저장 공간을 초과하는 크기를 갖는 콘텐츠 항목이 식별될 때까지, 필요한 저장 공간 값이 개개의 크기들과 비교될 수 있을 것이다. 클라이언트 애플리케이션(200)은 이어서 제거하기 위해 이 콘텐츠 항목을 선택할 것이다. 어떤 단일의 콘텐츠 항목도 필요한 저장 공간보다 크지 않으면, 가장 큰 콘텐츠 항목이 선택될 것이고 그의 크기가 필요한 저장 공간 값으로부터 차감될 것이며, 프로세스가 큐의 시작으로부터 반복될 것이다.
표 3은 이 선택 방법의 일 예이다. 이 예에서, 콘텐츠 항목을 저장하는 데 40 MB의 저장소가 필요하게 된다. 항목 B는 40 MB의 필요한 저장소 값을 초과하는 큐 인덱스에 의한 첫 번째 콘텐츠 항목이고, 따라서 클라이언트(100)로부터 제거하기 위해 선택된다.
Figure 112017063074349-pat00003
콘텐츠 항목 크기 및 액세스 시각 기반 선택: 방금 기술된 크기 선택 방법은 때때로 제거하기 위해 빈번히 액세스된 콘텐츠 항목들을 선택할 수 있다. 크기 및 액세스 시각 둘 다를 고려하는 것에 의해, 콘텐츠 관리 시스템은 가까운 장래에 사용자에 의해 요청될 수 있는 콘텐츠 항목들을 클라이언트 디바이스(100)로부터 제거하는 것을 피할 수 있다. 일 실시예에서, 이 이중 변수 선택 방법(dual-variable selection method)은, 각각의 콘텐츠 항목이 필요한 저장소 할당량에 도달하는 데 기여하는 저장소의 양 및 그의 마지막 액세스 날짜에 기초하여, 각각의 콘텐츠 항목에 대한 가중 점수(weighted score)를 계산함으로써 달성된다. 예를 들어,
점수 = w1S+w2A이고
여기서 S는 콘텐츠 항목 크기를 나타내는 메트릭이고, A는 콘텐츠 항목에의 마지막 액세스 이후의 시간을 나타내는 메트릭이며, w1과 w2 는 가중치들이다. A와 S에 대한 가중치들은, 사용자에 의해, 시스템 관리자에 의해, 또는 특정의 클라이언트 디바이스(100) 상의 콘텐츠 항목들에 대한 과거의 콘텐츠 항목 액세스 패턴들에 기초하여 결정되는 바와 같은, 그들의 상대 중요도에 기초할 수 있다. 큐는 이어서 점수에 의해 정렬되고, 큐에서의 첫 번째 콘텐츠 항목이 제거하기 위해 선택된다.
이 선택 방법의 예시적인 구현이 이하에서 표 4에 나타내어져 있다. 이 간단한 예의 목적상, 액세스 시각 메트릭 A는 현재 시각과 특정의 콘텐츠 항목에 대한 가장 최근의 액세스 사이의 차이와 현재 시각과 최소 최근 액세스 항목 액세스(이 경우에, 사용된 날짜는 2014년 9월 3일이었음) 간의 차이의 비이다. 이 예에서, 크기 메트릭은 하기의 관계이다:
s≥r인 경우: S = r/s이고,
s<r인 경우: S = s2/r2이며,
여기서 s는 콘텐츠 항목 크기이고, r은 필요한 저장 공간이며, S는 크기 메트릭이다. 이 구분적 함수(piecewise function)는 s=r 일 때 최댓값 1을 갖는다.
표 4에 나타낸 예에서, 필요한 저장 공간은 40 MB이고 가중치들 w1과 w2는 둘 다 1이다. 각각의 콘텐츠 항목에 대해, 크기 메트릭과 액세스 시각 메트릭이 계산되고 이어서 총 점수를 계산하는 데 사용된다. 이 예에서, 항목 B가 최고 점수를 가지며, 따라서 클라이언트 디바이스(100)로부터 제거하기 위해 선택된다. 선택된 콘텐츠 항목이 필요한 저장 공간보다 작은 크기를 가지면, 새로운 필요한 저장 공간이 이전의 필요한 저장 공간과 첫 번째로 선택된 콘텐츠 항목의 크기 사이의 차이로서 계산되고, 점수가 재계산되며, 새로 계산된 필요한 저장 공간을 사용하여 모든 콘텐츠 항목들에 대해 새로운 큐가 발생되고, 선택 프로세스가 반복된다.
Figure 112017063074349-pat00004
액세스 빈도 및 최근성 선택: 방치된 콘텐츠 항목들을 보다 잘 선택하기 위해, 액세스 시각에 부가하여 빈도와 같은 다른 인자들이 고려될 수 있다. 고빈도 저최근성(high frequency-low recency) 콘텐츠 항목들은 과거에(예컨대, 6개월 초과 이전에) 때로는 빈번히 선택되었지만 최근에는 그렇지 않은 콘텐츠 항목들이고; 저빈도 저최근성(low frequency-low recency) 콘텐츠 항목들은 빈번히 액세스된 적이 결코 없는 콘텐츠 항목들이다. 액세스 빈도는 특정의 클라이언트 디바이스 상에서, 또는 임의의 클라이언트 디바이스들의 집단에 걸쳐, 또는 유형, 네임스페이스, 소스 도메인(source domain), 또는 다른 콘텐츠 항목 속성들별로 평균 빈도와 관련하여 측정될 수 있다. 예를 들어, 콘텐츠 항목이 지난 4개월 동안 클라이언트 디바이스 상에서 액세스된 적이 없지만 그 때 이전에 25번 액세스된 적이 있었으면, 이는 과거에 한번만 액세스되었던 유사한 최근성의 콘텐츠 항목보다 사용자에게 더 관련성이 있을 가능성이 있다.
일 실시예에서, 각각의 콘텐츠 항목에의 가장 최근의 액세스에 부가하여, 각각의 콘텐츠 항목에 대한 액세스 횟수가 (클라이언트 디바이스(100) 또는 콘텐츠 관리 시스템(110) 중 어느 하나에) 유지된다. 점수는 각각의 콘텐츠 항목에 대해 각각의 변수를 표현하는 메트릭들의 가중 결합(weighted combination)으로서 결정된다. 예를 들어, 각각의 콘텐츠 항목에 대한 가중 점수는 콘텐츠 항목의 액세스 빈도에 대한 메트릭과 그의 마지막 액세스 날짜에 기초한다. 예를 들어,
점수 = w1F + w2A이고,
여기서 F는 액세스 빈도를 나타내는 메트릭이고, A는 콘텐츠 항목에의 마지막 액세스 이후의 시간을 나타내는 메트릭이며, w1과 w2는 가중치들이다. A와 F에 대한 가중치들은, 사용자에 의해, 시스템 관리자에 의해, 또는 특정의 클라이언트 디바이스(100) 상의 콘텐츠 항목들에 대한 과거의 콘텐츠 항목 액세스 패턴들에 기초하여 결정되는 바와 같은, 그들의 상대 중요도에 기초할 수 있다. 큐는 이어서 점수에 의해 정렬된다. 누적 합이 각각의 인덱스에서 계산되고 필요한 저장 공간과 비교된다. 필요한 저장 공간이 누적 합에 의해 초과될 때, 인덱스 및 큐에서 그 인덱스 위쪽에 있는 모든 콘텐츠 항목들이 클라이언트 디바이스(100)로부터 제거하기 위해 선택된다.
표 5는 이 선택 방법의 일 예를 나타낸다. 이 예에서, 필요한 저장 공간은 40 MB이고 가중치들 w1과 w2는 둘 다 1이다. 큐는 총 점수에 의해 정렬되고 누적 합이 필요한 저장 공간과 비교된다. 이 결과, 항목 C와 E가 클라이언트 디바이스(100)로부터 제거하기 위해 선택된다.
Figure 112017063074349-pat00005
이상의 UCSM 중 임의의 것은, 개개의 파일들만 대신에, 단일의 큐 인덱스 내의 폴더들 전체를 고려할 수 있다. 예를 들어, LRA UCSM이 사용되고 있고 폴더가 복수의 파일들을 포함하는 경우, 폴더 내의 가장 최근에 액세스된 파일이 공유 콘텐츠 디렉터리 내의 다른 콘텐츠 항목들 전부보다 더 이른 액세스 날짜를 가지면, 폴더 전체를 방치된 것으로 선택하는 것이 보다 효율적일 수 있다(상당한 저장 공간이 필요한 경우 특히 그렇다). 대안적으로, 폴더에 대한 조합된 메트릭은, 폴더가 큐 내에 위치될 수 있게 하는, 폴더 내의 콘텐츠 항목들을 일반화하는 평균, 메디안, 또는 다른 통계일 수 있다.
이하의 설명에서, 전술한 방법들 중 임의의 것이 클라이언트 디바이스(100)로부터 제거하기 위해 방치된 콘텐츠 항목들을 선택하는 데 사용될 수 있다. 방치된 콘텐츠 항목들을 선택하는 이 프로세스는, 제약된 콘텐츠 관리 시스템(100)에 의해 제공되는 바와 같이, 클라이언트 디바이스 상에서 향상된 저장 능력을 가능하게 한다.
콘텐츠 관리 시스템의 개요
클라이언트 디바이스들(100A 및 100B) 사이에서의 콘텐츠 관리 시스템(110)을 사용한 동기화 방법은 도 2에 예시된 아키텍처를 참조하여 설명될 수 있다. 이하에서는 저장소 제약된 동기화에서 사용될 수 있는 다수의 가능한 동기화 방법들 중 하나를 기술한다.
콘텐츠 관리 시스템(110)은 콘텐츠 항목들을 데이터 저장소(218)에 저장한다. 콘텐츠 항목들은 블록이라고 하는 고정 크기 부분들에 저장된다. 블록의 크기는 구현에 따라 다르며, 일 실시예에서, 블록들은 4 메가바이트 크기이다. 따라서, 작은 콘텐츠 항목은 단일의 블록으로서 저장되는 반면, 큰 콘텐츠 항목은 콘텐츠 관리 시스템(110)에 저장하기 위해 수십, 수백 또는 그 이상의 블록들로 분할될 수 있다. 메타데이터는 콘텐츠 항목 내의 블록들을 정의하는 블록 목록(blocklist)과 콘텐츠 항목 내의 블록들의 순서(ordering)를 포함한다.
보류 블록 테이블(pending block table)(220)은 콘텐츠 관리 시스템에 수신될 것으로 예상되는 보류 블록들의 목록을 유지한다. 보류 블록 테이블(220)은 (블록 식별자들에 의해 식별되는) 블록들과 클라이언트들(100)이 표시하는 블록들이 속하는 네임스페이스들 사이의 연관을 저장하고, 전송될 것이다.
네임스페이스 테이블(222)은 개개의 콘텐츠 항목들을 네임스페이스들과 연관시키는 데이터를 저장하고 각각의 네임스페이스를 클라이언트들과 연관시키는 데이터를 유지한다.
메타데이터 서버(212)는 새로운 콘텐츠 항목을 콘텐츠 관리 시스템(110)에 추가("커밋(commit)")하라는 클라이언트로부터의 요청을 관리하는 일을 맡고 있다. 메타데이터 서버(212)는 또한 콘텐츠 항목들을 동기화시키라는 요청들을 클라이언트 디바이스(100)로부터 수신한다. 메타데이터 서버(212)는 클라이언트 디바이스(100)가 콘텐츠 관리 시스템(110)과 마지막으로 동기화된 때의 기록을 유지한다. 동기화시키라는 요청이 클라이언트 디바이스(100)로부터 수신될 때, 메타데이터 서버(212)는 마지막 동기화 타임스탬프 이후에 그 클라이언트 디바이스(100)에 동기화된 네임스페이스들에 커밋된 임의의 콘텐츠 항목들을 결정한다. 그에 부가하여, 메타데이터 서버(212)는 마지막 동기화 타임스탬프 이후에 수신된 임의의 보류 블록들을 결정한다.
통지 서버(216)는 클라이언트들(100)과 통신하는 일, 그리고 특히 새로운 데이터가 이용가능하다는 것을 클라이언트들에 통지하는 일을 맡고 있다. 통지 서버(216)는 각각의 네임스페이스와 연관된 클라이언트들(110)의 목록을 네임스페이스 테이블(222)에 유지한다. 통지 서버(216)가 주어진 네임스페이스에 대해 새로운 블록이 이용가능하다는 경보를 블록 서버(214) 또는 메타데이터 서버(212)로부터 수신할 때, 통지 서버(216)는 네임스페이스 테이블(212)로부터 네임스페이스와 연관된 클라이언트들을 식별한다. 통지 서버(216)는 클라이언트(들)(100)를 깨우기(wake) 위해 네임스페이스와 연관된 클라이언트(들)(100)에게 통지하고, 식별된 네임스페이스에 대해 새로운 블록들이 이용가능하다는 것을 알려준다.
2개의 클라이언트들(100)인, 클라이언트 디바이스(100A)와 클라이언트 디바이스(100B) 사이의 전형적인 동기화는 다음과 같이 일어난다. 먼저, 클라이언트 디바이스(100A)가 부가의 콘텐츠 항목을 공유 데이터에 추가한다. 부가의 콘텐츠 항목이 이어서 콘텐츠 관리 시스템(110)으로 전송된다. 콘텐츠 관리 시스템(110)은 부가의 콘텐츠 항목이 공유 데이터에 있다는 것을 클라이언트 디바이스(100B)에 통지하고, 클라이언트 디바이스(100B)는 클라이언트 디바이스(100B)로서 콘텐츠 관리 시스템(110)으로부터 부가의 콘텐츠 항목을 검색한다. 콘텐츠 관리 시스템(110)은 콘텐츠 관리 시스템(110)에 수신될 것으로 예상되는 콘텐츠 항목들 및 보류 블록들의 목록을 보류 블록 테이블(220)을 사용하여 유지하고, 블록들이 콘텐츠 관리 시스템(110)에 의해 수신될 때 콘텐츠 항목에 대응하는 블록들을 다운로드하라고 클라이언트 디바이스(100B)에 통지한다. 보류 블록들은 콘텐츠 관리 시스템(110)이 수신할 것으로 예상하는 콘텐츠 항목에 대응하는 그 블록들이고, 콘텐츠 항목이 콘텐츠 관리 시스템(110)에 커밋되기 전에 수신측 클라이언트 디바이스(100B)에 제공될 수 있는 블록들을 식별하는 데 사용된다.
전송 중인(in-transit) 콘텐츠 항목들을 관리하기 위해, 콘텐츠 관리 시스템(110)은 보류 블록들과 연관된 네임스페이스와 함께 보류 블록들의 목록을 유지한다. 보류 블록이 수신될 때, 네임스페이스와 연관된 클라이언트들은 통지를 받고 수신된 블록에 대한 전송을 개시할 수 있다. 따라서, (새로운 콘텐츠 항목을 제공하는) 업로드측 클라이언트들과 (새로운 콘텐츠 항목을 수신하는) 다운로드측 클라이언트들은 비동기적으로 블록들을 콘텐츠 관리 시스템(110)으로 전송할 수 있다.
클라이언트 디바이스의 개요
각각의 클라이언트 디바이스(100)는, 콘텐츠 관리 시스템(110)과 그리고 설치된 클라이언트 애플리케이션(200)을 사용하는 다른 클라이언트들과 동기화된 공유 데이터의 로컬 사본을 유지하는 데스크톱, 랩톱, 태블릿, 모바일 디바이스, 또는 다른 시스템과 같은, 컴퓨팅 디바이스이다. 공유 데이터는 단일의 사용자와 연관된 클라이언트들과만 동기화될 수 있거나, 다수의 사용자들과 연관된 클라이언트들에 동기화될 수 있다. 클라이언트 디바이스(100)는, 도 3과 관련하여 추가적으로 기술되는 바와 같이, 데이터를 조작하고 공유 데이터에 추가하기 위한 모듈들 및 애플리케이션들을 포함한다.
도 3은 클라이언트 애플리케이션(200)의 모듈들을 나타낸다. 클라이언트 애플리케이션(200)은 데이터를 콘텐츠 관리 시스템(110)과 동기화시키기 위한 다양한 모듈들 및 데이터 저장소들을 포함한다. 클라이언트 애플리케이션(200)은 콘텐츠 동기화 모듈(310), 해싱 모듈(320), 다운로드 모듈(330), 업로드 모듈(340), 및 저장소 관리 모듈(350)을 포함한다. 그에 부가하여, 클라이언트 애플리케이션(200)은 파일 저널(360), 상주 파일 테이블(362), 공유 데이터(364), 원격 파일 테이블(366), 구성 파일(368), 및 블록 캐시(370)를 포함하는 데이터 저장소들을 유지한다. 클라이언트 애플리케이션(200)에 부가하여, 도 3은 또한 클라이언트 디바이스의 운영 체제 상에 존재하는 저장 커널 확장(storage kernel extension)(384)을 나타내고 있다. 클라이언트 애플리케이션(200)의 구성 및 이 모듈들을 사용하는 그의 연관된 커널 확장은 클라이언트 애플리케이션(200)을 본원에 기술되는 기능들을 수행할 수 있는 특정의 컴퓨터로서 인스턴스화하고, 이는 클라이언트 디바이스의 저장 용량 및 기능적 성능에서의 기술된 개선들을 가능하게 한다.
공유 데이터(364)는 콘텐츠 관리 시스템(110)과 동기화된 데이터이고, 콘텐츠 관리 시스템(110)으로부터 수신된 콘텐츠 항목들을 포함한다. 사용자들이 공유 데이터(364) 내의 콘텐츠 항목들을 추가, 수정, 또는 삭제할 때, 그 변경들이 콘텐츠 관리 시스템(110)과 동기화된다. 해싱 모듈(320)과 블록 캐시(370)는 콘텐츠 관리 시스템(110)에 업로드되는 콘텐츠 항목들을 포함하는 블록들을 식별하기 위해 동작한다. 해싱 모듈은, MD5 또는 SHA-1과 같은, 임의의 적당한 해싱 알고리즘을 수행하는 것에 의해 블록 식별자를 할당한다. 콘텐츠 동기화 모듈(310)은 이어서 블록 캐시(370)에 위치된 상주 블록(resident block)들을 콘텐츠 관리 시스템(110)에 의해 유지된 블록들과 비교하기 위해 이 식별자들을 사용한다. 이 모듈들이 본 실시예에서는 존재하지만, 이 블록 구현이 저장소 제약된 동기화의 본 발명에 대해서는 필요하지 않다.
데이터가 수정되거나 클라이언트 디바이스(100) 상의 클라이언트 애플리케이션(200) 내에 있는 공유 데이터(364)에 추가될 때, 공유 데이터(364)에 대한 수정들이 콘텐츠 관리 시스템(110)으로 전송된다. 클라이언트 디바이스(100)는 또한 콘텐츠 관리 시스템(110)으로부터 통지들을 수신하도록 구성된다. 클라이언트 디바이스(100)가 통지를 수신할 때, 클라이언트 디바이스(100)는 공유 데이터 (364)에 대한 수정들이 있는지 콘텐츠 관리 시스템(110)에 질의한다. 공유 데이터가 수정될 때, 클라이언트 디바이스(100)는 공유 데이터를 클라이언트 디바이스(100) 상에 저장하기 위해 콘텐츠 관리 시스템(110)에 수정들을 요청한다. 어떤 경우에, 수정된 데이터는 섀도 항목에 의해 표현된 콘텐츠 항목과 연관될 수 있다. 이 경우에, 클라이언트 디바이스(100)는, 섀도 항목에 의해 표현된 콘텐츠 항목에의 액세스가 클라이언트 디바이스(100) 상의 애플리케이션에 의해 요청될 때까지, 수정된 데이터를 콘텐츠 관리 시스템(110)에 요청하는 것을 보류할 수 있다. 대안적으로, 공유 콘텐츠 항목이 다른 클라이언트 디바이스(100)에 의해 수정될 때, 콘텐츠 관리 시스템(110)은, 제약된 클라이언트 상에 상주하는 다른 콘텐츠 항목들을 희생시키면서 수정이 동기화될 수 있도록, 섀도 항목에 의해 표현된 콘텐츠 항목을 복원하라고 제약된 클라이언트 디바이스(100)에 요청할 수 있다.
클라이언트 애플리케이션(200) 내에서, 파일 저널(360)은 클라이언트 애플리케이션(200)을 사용하여 계정에 의해 액세스가능한 모든 콘텐츠 항목들에 대한 메타데이터를 열거하는 테이블을 저장한다. 메타데이터는 각각의 콘텐츠 항목에 대응하는 개정 날짜 및 시각, 네임스페이스, 그리고 블록 목록들을 포함한다. 상주하지 않거나 동기화되지 않은 콘텐츠 항목들은 파일 저널(360)에 여전히 포함되어 있다.
상주 파일 테이블(362)은, 저장소 제약에 관계없이, 클라이언트 디바이스(100) 상에 항상 상주한 채로 있는 파일들의 목록을 저장한다.
원격 파일 테이블(366)은 클라이언트 디바이스로부터 삭제되어 섀도 항목들로 대체되도록 선택된 파일들의 목록을 저장한다. 이 파일들은 콘텐츠 관리 시스템(110) 그리고 어쩌면 파일에 액세스할 수 있는 다른 사용자들에 의해서만 유지된다.
구성 파일(368)은 클라이언트 애플리케이션(200)에 의해 유지되는 파일이고, 클라이언트 디바이스에 대한 저장소 할당량(120)을 포함한다. 일부 실시예들에서, 저장소 할당량(120)은 클라이언트 애플리케이션(200)을 제어할 수 있는 사용자 또는 컴퓨터 시스템들에 의해 생성될 수 있다. 예를 들어, 운영 체제는 다른 애플리케이션들에 의한 사용을 위해 충분한 양의 저장소를 유지할 수 있도록 저장소 할당량(120)을 변경할 수 있다.
저장 커널 확장(384)은 콘텐츠 항목들에의 액세스를 위한 애플리케이션들로부터 운영 체제(380)로의 요청들을 모니터링하고, 요청된 콘텐츠 항목들이 섀도 항목들인지 여부를 결정하도록 구성되며, 이 기능을 수행하기 위한 하나의 수단이다. 저장 커널 확장(384)은 클라이언트 디바이스 상의 유효 저장 용량의 증가를 가능하게 하는 운영 체제의 구조 및 기능에 대한 직접 수정을 구성한다.
커널 확장(384)은 클라이언트 애플리케이션(200)에 의해 관리되는 콘텐츠 항목들을 열기 위해 행해지는 요청들을 모니터링한다. 커널 확장(384)은 운영 체제(380) 상의 파일 시스템(382)을 모니터링함으로써 클라이언트 애플리케이션(200)에 의해 관리되는 콘텐츠 항목들을 열기 위해 요청들이 행해지는 때를 결정한다. 콘텐츠 항목에 대한 요청이 파일 시스템(382) 내에서 행해질 때, 커널 확장(384)은, 콘텐츠 항목이 공유 콘텐츠 저장 디렉터리(120) 내에 저장된 콘텐츠 항목들 내에 있는지를 결정하기 위해, 콘텐츠 항목의 경로 이름을 검사한다.
커널 확장(384)은 요청된 콘텐츠 항목이 섀도 항목인지를, 그의 크기가 문턱 크기 미만인지를 결정하는 것에 의해, 결정한다. 대안적으로, 섀도 항목의 식별은 클라이언트 애플리케이션(200)에 의해 관리되는 콘텐츠 항목들에 대한 확장된 파일 속성들에 기초하여 완료될 수 있다. 커널 확장이 요청된 콘텐츠 항목의 크기를 검사하지 않고 섀도 항목을 식별할 수 있도록, 섀도 항목을 나타내는 파일 속성이 섀도 항목들에 할당될 수 있을 것이다. 파일이 커널 확장(384)에 의해 섀도 항목인 것으로 결정되면, 커널 확장은 식별 정보를 클라이언트 애플리케이션(200)에 전달한다.
도 4는 클라이언트 디바이스(100) 상에 상주하지는 않지만, 마치 콘텐츠 항목이 클라이언트 디바이스(100) 상에 상주하는 것처럼, 파일 시스템에 포함되는 콘텐츠 항목에 액세스하는 프로세스의 일 실시예를 나타내는 상호작용 다이어그램이다. 파일 시스템(382)은 클라이언트 디바이스(100) 상의 동기화된 폴더 내의 콘텐츠 항목을 열라는 요청을 수신한다(400). 요청은, 파일 탐색기, 워드 프로세서, 문서 판독기, 이미지 편집기 등과 같은, 임의의 애플리케이션으로부터 올 수 있다. 저장 커널 확장(384)은 이러한 파일 시스템 요청들을 가로채고(402), 요청된 콘텐츠 항목의 경로 이름을 획득한다. 저장 커널 확장(384)은 콘텐츠 항목이 섀도 항목인지를 결정하기 위해 경로 이름을 사용한다(404). 저장 커널 확장(384)은, 요청된 콘텐츠 항목의 크기가 미리 결정된 문턱값 미만인지 또는 섀도 항목의 크기(4KB)와 다른 방식으로 일치하는지를 결정하기 위해, 그 크기를 체크하는 것에 의해 이것을 행할 수 있다. 대안적으로, 저장 커널 확장(384)은 콘텐츠 항목이 섀도 항목인지 정규의 콘텐츠 항목인지를 나타내는 값을 저장하는 파일 속성 확장(file attribute extension)을 판독할 수 있다. 콘텐츠 항목이 섀도 항목이 아니면, 저장 커널 확장(384)은 요청이 평상시와 같이 계속될 수 있게 하고, 콘텐츠 항목이 열릴 수 있도록 파일 핸들(file handle)을 파일 시스템에 제공한다.
콘텐츠 항목이 섀도 항목이라고 결정할 때, 저장 커널 확장(384)은 요청 식별 번호(요청 유형을 비롯한 요청에 관한 정보) 및 파일 경로를 저장소 관리 모듈(350)로 송신하여, 파일 이름을 전달한다(406). 저장소 관리 시스템(350)은 원격 파일 테이블(366)로부터 파일 이름을 제거한다(408). 저장소 관리 시스템(350)은 이어서, 콘텐츠 관리 시스템(110)으로부터의 동기화를 필요로 하는 콘텐츠 항목들을 체크하는, 다운로드 스레드를 깨운다(412). 요청된 콘텐츠 항목이 원격 파일 테이블로부터 제거되었기 때문에(408), 다운로드 스레드는 이제 다운로드를 준비하기 위해, 요청된 콘텐츠 항목의 크기를 비롯한, 콘텐츠 항목 정보를 콘텐츠 관리 시스템(110)에 요청할 수 있다(414). 저장소 관리 모듈(350)은 크기 정보를 콘텐츠 관리 시스템(110)으로부터 수신하고(416), 클라이언트 디바이스(100) 상에 콘텐츠 항목을 저장하는 것이 미리 결정된 저장소 한계가 초과되게 할 것인지를 결정한다(418). 저장소 한계가 요청된 콘텐츠 항목의 추가에 의해 초과되면, 저장소 관리 모듈(350)은 제거를 위해 클라이언트 디바이스(100) 상에 저장된 하나 이상의 콘텐츠 항목들을 선택한다(422). 그러나, 저장소 한계가 초과되지 않을 것이면, 저장소 관리 모듈(350)은 콘텐츠 항목을 다운로드(430)하기 시작한다.
저장소 할당량(130)이 요청된 콘텐츠 항목을 공유 콘텐츠 저장 디렉터리(120)에 추가하는 것에 의해 초과될 것인 경우에, 저장소 관리 모듈(350)은, 다운로드(430)를 요청하기 전에 요청된 콘텐츠 항목에 대한 충분한 저장 공간이 이용가능하도록 만듦으로써 공유 콘텐츠 디렉터리가 그의 할당된 공간보다 더 많이 차지하는 것을 방지하기 위해, 제거할 하나 이상의 콘텐츠 항목들을 선택한다. 저장소 관리 모듈(350)은, 먼저 방치된 콘텐츠 항목들을 앞서 기술된 UCSM 중 임의의 것을 사용하여 결정(420)함으로써, 삭제하기 위한 콘텐츠 항목들을 선택한다(422). 특정의 콘텐츠 항목들의 액세스 이력 또는 각각의 선택 방법에 관한 다른 정보가 호스트 시스템 상에 저장되어 있는 경우, 이 정보의 클라이언트 애플리케이션(300)의 버전을 업데이트하라는 요청이 호스트 시스템(도 4에 도시되지 않음)에 행해진다. 콘텐츠 관리 시스템(110) 내의 각각의 콘텐츠 항목에 대한 액세스 이력 또는 임의의 다른 필요한 정보의 현재 버전이 획득되면, 저장소 관리 모듈(350)은 방치된 콘텐츠 항목들을 결정할 수 있다(420).
저장소 관리 모듈은 이어서 클라이언트 디바이스로부터 제거하기 위한 방치된 콘텐츠 항목들을 선택한다(422). 이 실시예에서, 제거할 콘텐츠 항목들을 선택하기 위해(422), 저장소 관리 모듈(350)은, 적어도 다운로드될 요청된 콘텐츠 항목의 크기만큼의 저장 공간을 생성하기 위해, 사용 중인 UCSM에 의해 발생된 큐를 순회한다. 제거하기 위한 방치된 콘텐츠 항목들의 선택은 앞서 기술된 방법들 중 임의의 것을 사용하여 행해질 수 있다.
저장소 관리 모듈(350)은 이어서 선택된 콘텐츠 항목들의 이름들을 원격 파일 테이블(366)에 추가한다(424). 이 추가(424)가 확인되면(426), 저장소 관리 모듈(350)은 선택된 콘텐츠 항목들을 클라이언트 디바이스 상의 공유 콘텐츠 저장 디렉터리(120)로부터 제거하고(428), 이어서, 각각의 제거된 콘텐츠 항목에 대해, 제거된 콘텐츠 항목과 동일한 메타데이터 및 위치를 갖지만 콘텐츠 항목에 대한 콘텐츠 정보는 포함하지 않는 대응하는 섀도 항목을 생성한다. 섀도 항목들은 마치 클라이언트 디바이스(100) 상에 여전히 상주하는 것처럼 클라이언트의 사용자 인터페이스에서 표현될 수 있다. 도 8은 섀도 항목들이 클라이언트 디바이스(100)의 사용자 인터페이스에서 어떻게 표현될 수 있는지의 일 예를 나타낸다.
선택된 콘텐츠 항목들을 제거할 때, 클라이언트 디바이스(100) 상에 충분한 저장 공간이 있을 것이고, 공유 콘텐츠 저장 디렉터리(120)에 대한 저장소 한계를 초과하지 않으면서 요청된 콘텐츠 항목이 콘텐츠 관리 시스템(110)으로부터 다운로드될 수 있다. 그에 따라, 저장소 관리 모듈(350)은 다운로드 요청(430)을 다운로드 모듈(330)로 송신한다. 다운로드 모듈(330)은 이어서 콘텐츠 관리 시스템(110)과 다운로드(432)를 개시한다. 콘텐츠 항목이 다운로드 모듈(330)에 다운로드되면(434), 콘텐츠 항목이, 요청된 콘텐츠 항목을 이전에 식별된 위치에 저장하고(438) 다운로드가 완료되었음을 저장 커널 확장(384)에 통지하는(440), 저장소 관리 모듈(350)에 전달된다(436). 일 실시예에서, 저장소 관리 모듈(350)은 다운로드된 콘텐츠 항목의 콘텐츠를 섀도 항목 메타데이터에 부가하고, 콘텐츠 항목이 이제 더 이상 섀도 항목이 아니라는 것을 나타내기 위해 콘텐츠 항목 속성들을 업데이트한다. 이것은 요청측 애플리케이션이, 처음에 콘텐츠 항목에의 액세스를 요청하기 위해 사용했던 것과 동일한 파일 핸들 및 식별 정보를 사용하여, 의식되지 않게 요청된 콘텐츠 항목에 액세스할 수 있게 한다. 저장 커널 확장(384)은 이어서 파일 핸들을 파일 시스템(382)에 전달하고(442), 이는 요청측 애플리케이션에 콘텐츠 항목을 열 권한을 부여한다(444).
도 5는 콘텐츠 항목을 자신의 저장소 할당량(130)에 접근하고 있는 공유 콘텐츠 저장 디렉터리(120)에 저장하는 프로세스의 일 실시예를 나타내는 상호작용 다이어그램이다. 콘텐츠 항목은 공유 콘텐츠 저장 디렉터리(120)에 새로 생성된 콘텐츠 항목, 공유 콘텐츠 저장 디렉터리(120) 내로 재배치된 콘텐츠 항목, 또는 공유 콘텐츠 저장 디렉터리(120)에 이미 있었고 나중에 그의 크기를 증가시키는 방식으로 수정된 콘텐츠 항목일 수 있다. 이 프로세스는 애플리케이션이 콘텐츠 항목을 동기화된 폴더 내에 저장하라고 운영 체제의 파일 시스템(382)에 요청하는 것(500)으로 시작한다. 저장 커널 확장(384)은 이 요청을 모니터링하고, 요청 ID, 파일 경로, 및 크기를 파일 시스템으로부터 수신한다(502). 저장 커널 확장 (384)은 이어서 이 정보를 저장소 관리 모듈(350)로 송신한다(504). 저장소 관리 모듈은 새로운 콘텐츠 항목의 추가가 동기화된 폴더로 하여금 그의 저장소 한계를 초과하게 하는지를 결정한다(506). 저장소 한계가 초과되지 않을 것인 경우, 파일 시스템(382)은 평상시와 같이 콘텐츠 항목을 저장할 수 있다. 저장소 한계가 초과될 것인 경우에, 저장소 관리 모듈(350)은 방치된 콘텐츠 항목들을 결정하고(508) 클라이언트 디바이스로부터 제거하기 위해 그들을 선택한다. 방치된 콘텐츠 항목들이 선택되면, 그들의 콘텐츠가 콘텐츠 관리 시스템(110)에 의해 동기화되지 않도록 그들의 이름들이 원격 파일 테이블(366)에 추가된다(512). 저장소 관리 모듈은 이어서 선택된 콘텐츠 항목들을 클라이언트 디바이스(100)로부터 제거하고, 그들을, 제거된 콘텐츠 항목들과 동일한 메타데이터 및 위치를 갖지만 어떤 콘텐츠도 포함하지 않는, 섀도 항목들로 대체한다(514). 이 프로세스가 완료될 때, 저장소 관리 모듈이 원래의 콘텐츠 항목이 저장될 수 있게 하기에(516) 충분한 저장 공간이 제약된 폴더에 있다. 저장소 관리 모듈은 이어서 업로드 스레드를 깨우고(518), 업로드 스레드는 저장된 콘텐츠 항목의 콘텐츠가 콘텐츠 관리 시스템(110)에 업로드되도록(522) 메타데이터에 액세스한다(520).
자동으로 콘텐츠 항목들을 제거하고 섀도 항목들을 생성하는 것에 부가하여, 일부 실시예들은 또한 사용자가 원격적으로 콘텐츠 관리 시스템(110) 상에만 저장될 특정의 콘텐츠 항목들을 선택할 수 있게 한다. 이것은 단순히 사용자가 특정의 동기화된 콘텐츠 항목 상에서의 컨텍스트 메뉴(예컨대, "오른쪽 클릭")로부터 선택할 수 있게 하는 것에 의해 구현될 수 있다. 클라이언트 애플리케이션(200)은 이어서 선택된 콘텐츠 항목을 원격인 것으로 만드는 옵션을 사용자에게 제시할 것이다. 사용자가 이 옵션을 선택하면, 콘텐츠 항목이 클라이언트 디바이스(100)로부터 제거되고, 콘텐츠 항목의 이름이 원격 파일 테이블(366)에 추가되며, 원래의 콘텐츠를 표현하기 위해 원래의 콘텐츠 항목의 동일한 메타데이터 및 위치를 갖는 섀도 항목이 생성된다. 사용자가 장래에 콘텐츠 항목에 액세스하고자 하는 경우, 도 5에 기술되는 동일한 프로세스가 콘텐츠 관리 시스템(100)으로부터 콘텐츠 항목을 검색하는 데 사용될 수 있다.
일부 실시예들에서, 클라이언트 디바이스는, UCSM이 사실상 클라이언트 디바이스(100)로부터 제거하기 위한 콘텐츠 항목들을 다른 방식으로 선택할 것인지에 관계없이, 저장소 할당량(130)에 도달할 때 클라이언트 디바이스 상에 상주한 채로 유지될 특정의 콘텐츠 항목들을 사용자가 선택할 수 있게 하도록 구성된다. 이 실시예는 사용자가 특히 중요한 콘텐츠 항목들에의 신속한 액세스를 유지할 수 있게 하는 동작 개선들을 제공한다. 이 실시예에서, 클라이언트 애플리케이션(200)은 사용자가 컨텍스트 메뉴에 액세스하고 이어서 콘텐츠 항목을 강제로 클라이언트 디바이스(100)에 상주한 채로 유지되게 하는 옵션을 선택할 수 있게 한다. 선택할 때, 콘텐츠 항목의 이름이 상주 파일 테이블(362)에 추가된다. 상주 파일 테이블(362)은 차후에 422에 도시된 저장소 관리 모듈(350)에 의해 사용되는 UCSM 동안 액세스되며, 테이블 내의 모든 콘텐츠 항목들이 선택 프로세스로부터 배제된다. 예를 들어, 주어진 콘텐츠 항목이 제거하기 위해 선택될 때, 상주 파일 테이블(362)이, 선택된 콘텐츠 항목이 그 안에 열거되어 있는지를 결정하기 위해, 검사되고; 그러한 경우, 선택된 콘텐츠 항목이 무시되며, 다른 콘텐츠 항목이 사실상 UCSM에 의해 선택된다.
클라이언트 디바이스(100) 상의 섀도 항목들과 연관된 콘텐츠가 동기화되고 있지 않기 때문에, 이는 콘텐츠 관리를 더 복잡하게 만들 수 있다. 예를 들어, 하나의 클라이언트 디바이스 상의 사용자가 제2 클라이언트 디바이스 상에 섀도 항목으로서 표현되어 있는 콘텐츠 항목을 이동시키는 경우, 제2 클라이언트 디바이스가 섀도 항목에 관한 동기화 데이터를 수신하지 않으면, 그의 위치가 제1 클라이언트 디바이스 상에서는 변할 수 있지만, 다른 클라이언트 디바이스 상에서는 그렇지 않을 수 있다. 예를 들어, 콘텐츠 항목이, 상이한 클라이언트 디바이스(100) 상에서는 섀도 항목에 의해 표현되어 있으면서, 하나의 클라이언트 디바이스(100)에 의해 콘텐츠 관리 시스템(110)으로부터 완전히 삭제될 수 있다. 이러한 상황이 일어나면, 제2 클라이언트 디바이스(100)의 사용자가 섀도 항목에 의해 표현된 콘텐츠 항목에 액세스하려고 시도할 수 있지만 결국엔 그것이 더 이상 존재하지 않는다는 것을 알게 된다. 이 혼란스러운 상황을 피하기 위해, 일부 실시예들에서, 콘텐츠 관리 시스템(110)은 메타데이터만을 위해 섀도 항목들을 동기화시키도록 구성되고; 즉, 섀도 항목의 속성들 중 임의의 것이 변하면, 콘텐츠 관리 시스템(110)은, 콘텐츠 항목이 그 클라이언트 디바이스들 중 임의의 것 상에서 섀도 항목으로서 표현되어 있는지에 관계없이, 수정된 속성들을 그 콘텐츠 항목에 액세스할 수 있는 모든 클라이언트 디바이스들(100)에 동기화시킬 것이다. 이와 같이, 콘텐츠 항목이 하나의 클라이언트 디바이스로부터 삭제되면, 그 콘텐츠 항목을 표현하는 섀도 항목이 임의의 다른 클라이언트 디바이스(100)에서도 삭제된다. 대안적으로, 일부 실시예들에서, 콘텐츠 항목이 클라이언트 디바이스(100) 상의 공유 콘텐츠 저장 디렉터리 (120) 내의 남아 있는 저장소 내에 들어갈 수 있게 그의 크기가 변하도록 콘텐츠 항목이 다른 클라이언트 디바이스 상에서 수정되면, 콘텐츠 항목에의 액세스가 요청되지 않더라도 콘텐츠 항목이 클라이언트 디바이스(100)에 다운로드될 수 있다.
전술한 실시예들 중 일부는, 클라이언트 애플리케이션(200)이 미리 결정된 저장소 할당량(130)이 초과되지 않도록 보장하는 일과 데이터를 콘텐츠 관리 시스템(110)에 요청하는 일을 맡고 있기 때문에, 클라이언트 기반의 제약된 동기화 시스템을 나타낸다. 도 6에 예시된 호스트 기반 실시예에서, 콘텐츠 관리 시스템(110)은, 각각의 클라이언트 디바이스(100)에 대한 원격 및 상주 콘텐츠 항목 정보를 식별해주는 정보를 유지하는 것을 비롯한, 제약된 동기화 프로세스를 관리한다. 호스트 기반 실시예는 클라이언트 디바이스(100) 상의 유효 저장 용량을 증가시키는 동일한 이점들을 제공하면서 클라이언트 디바이스로부터 필요한 계산을 감소시킴으로써 다른 실시예들과 비교하여 클라이언트 디바이스(100) 성능을 향상시킬 수 있다. 제약된 콘텐츠 관리 시스템(600)은 도 2에 도시된 콘텐츠 관리 시스템(110)의 요소들을 포함하고, 저장소 관리 모듈(350)이 제대로 기능하기 위해 필요하게 되는 필요한 데이터 파일들과 함께 저장소 관리 모듈(350)을 이용하도록 추가적으로 수정된다. 제약된 콘텐츠 관리 시스템 내에서, 메타데이터 서버(212), 블록 서버(214), 통지 서버(216), 데이터 저장소(218), 보류 블록 테이블(220), 및 네임스페이스 테이블(222)은 콘텐츠 관리 시스템(110)에서 구현되는 것과 동일한 방식으로 기능한다. 그에 부가하여, 저장소 관리 모듈(350)은 클라이언트 디바이스 상에 상주할 때와 유사한 방식으로 기능하는데, 여기서 저장소 관리 모듈(350)은 저장 공간 한계가 초과될 때를 결정하는 일과 섀도 항목들을 적절히 생성하는 일을 맡고 있다. 저장소 관리 모듈(350)은 또한 운영 체제(380)에 의해 행해진 요청들에 관한 정보를 클라이언트 디바이스(100)로부터 수신하는 일을 맡고 있다. 하나 이상의 콘텐츠 항목들을 열라는 요청이 행해질 때, 요청에 관한 정보가, 클라이언트 디바이스(100) 상의 섀도 항목들에의 액세스를 제공하기 위해 필요한 다운로드들이 행해지도록 저장소 관리 모듈(350)에 의해 원격적으로 모니터링되기 위해, 콘텐츠 관리 시스템(110)으로 송신된다. 저장소 관리 모듈(350)은 제약된 콘텐츠 관리 시스템과 연관된 각각의 클라이언트 디바이스 상의 저장소 구성들에 관한 정보를 제공하기 위해 클라이언트 구성 파일(610)을 사용한다. 동기화 테이블(620)은 제약된 콘텐츠 관리 시스템(600)과의 동기화를 필요로 하는 클라이언트 디바이스들 상의 모든 콘텐츠 항목들의 레코드이고; 이 테이블에 포함된 콘텐츠 항목들은 데이터 저장소(218)에 위치된 콘텐츠 항목들의 서브셋일 것인데, 그 이유는 콘텐츠 항목들 중 일부가 섀도 항목들이고 메타데이터 동기화만을 필요로 하기 때문이다. 게다가, 이 실시예에서, 동기화 테이블(620)은 각각의 콘텐츠 항목이 원격인 채로 또는 상주하는 채로 유지되어야만 하는 클라이언트 디바이스들(100)을 나타내도록 구성된 상주 파일 테이블(362) 및 원격 파일 테이블(366) 둘 다를 사용하여 대체될 수 있다. 후자의 구성을 사용하는 실시예에서, 섀도 항목들에 대한 메타데이터 동기화의 구현이 보다 쉬운데, 그 이유는 섀도 항목들이 각각의 클라이언트 디바이스(100)의 원격 파일 테이블(366)에서 직접 식별되기 때문이다. 저장소 관리 모듈(350)이 방치된 콘텐츠 항목들을 결정할 수 있도록, 사용자 데이터(630)가 제약된 콘텐츠 관리 시스템(600) 상에 저장된다.
도 7은 호스트에 의해 관리되는 제약된 저장소 동기화의 프로세스의 일 실시예를 나타내는 상호작용 다이어그램이다. 클라이언트 디바이스 상의 애플리케이션은 콘텐츠 항목이 클라이언트 디바이스 상의 동기화된 폴더들에 저장되도록 요청한다(700). 저장 커널 확장은 요청 ID, 파일 경로, 및 콘텐츠 항목 크기를 기록하고(702) 이 정보를 클라이언트 애플리케이션(200)으로 전송한다(704). 클라이언트 애플리케이션(200)은 콘텐츠 항목 크기 정보를 제약된 콘텐츠 관리 시스템(600) 상의 저장소 관리 모듈(350)로 포워딩한다(706). 저장소 관리 모듈(350)은 콘텐츠 항목 크기 정보를 클라이언트 구성 파일(610)로부터 수신했던(706) 특정의 클라이언트에 대한 저장소 제한을 요청한다(708). 저장소 관리 모듈(350)은 클라이언트 디바이스(100) 상에 상주하는 다른 콘텐츠 항목들에 부가하여 크기를 클라이언트 구성 파일(610)로부터 수신된 저장소 할당량과 비교함으로써 저장소 한계가 초과될 것으로 결정한다(712). 저장소 관리 모듈(350)은, 클라이언트로부터 제거할 콘텐츠 항목들을 클라이언트 상의 동기화된 콘텐츠 항목들로부터 선택할 수 있도록, 클라이언트 상의 콘텐츠 데이터를 동기화 테이블(620)에 요청한다(714). 동기화 테이블은 특정의 클라이언트에 대한 동기화된 콘텐츠 데이터로 응답한다(716). 저장소 관리 모듈(350)은, LRA 콘텐츠 항목들을 결정하는 데 사용하기 위해, 사용자 액세스 데이터를 호스트 디바이스 상에 저장된 사용자 데이터(630)에 요청한다(718). 이 데이터가 사용자 데이터 테이블 (630)로부터 수신되면(820), 저장소 관리 모듈(350)은 LRA 콘텐츠 항목들을 결정할 수 있고(722), 필요한 저장 공간을 제공하기 위해 클라이언트로부터 제거되어야만 하는 것들을 선택할 수 있다(724). 저장소 관리 모듈(350)은 콘텐츠 항목들을 제거하고 섀도 항목들을 생성하라는(728) 요청들을 클라이언트 애플리케이션(200)으로 송신한다. 이는 콘텐츠 항목을 저장하기 위해 원래의 요청(700)을 완료할 권한을 클라이언트 애플리케이션(200)에 부여한다(730). 마지막으로, 저장소 관리 모듈은 저장된 콘텐츠 항목에 대한 첫 번째 콘텐츠 항목 액세스를 반영하기 위해 사용자 데이터를 업데이트하고(732), 이어서 새로운 콘텐츠 항목이 업로드를 위해 이용가능하기 때문에 클라이언트 디바이스(100)의 동기화를 메타데이터 서버(212)에 요청한다(734).
도 8은 제약된 동기화를 제공하는 콘텐츠 관리 시스템과 협력하여 동작하는 클라이언트 디바이스(100)의 사용자 인터페이스의 일 예를 나타낸다. 동기화된 파일들(synchronized files) 폴더(800)는 공유 콘텐츠 저장 디렉터리(120)로서 역할한다. 폴더(800)는, 각각이 대응하는 아이콘 810A(.m4a 음악 파일), 810B(.xlsx 스프레드시트), 810C(.docx 워드 프로세싱 파일), 810D(.mat Matlab 파일), 및 810E(.jpg 이미지 파일)로 표현되는, 다수의 콘텐츠 항목들을 포함한다. 각각의 아이콘(810)은 콘텐츠 항목의 저장 상태를 나타내는 상태 아이콘(820)으로 오버레이되어 있다.
상태 아이콘(820A)("체크 아이콘")은 콘텐츠 항목이 클라이언트 디바이스(100) 상에 현재 상주하고 콘텐츠 관리 시스템(110)에 의해 유지되는 콘텐츠 항목의 현재 버전과 동기화되어 있다는 것을 나타낸다.
상태 아이콘(820B)은 콘텐츠 관리 시스템(110)과의 동기화가 완료되면 콘텐츠 항목이 클라이언트 디바이스(100) 상에 상주할 것임을 나타낸다.
상태 아이콘(820C)은 콘텐츠 항목이 섀도 항목이고 클라이언트 디바이스 상에 현재 상주하지 않지만 콘텐츠 관리 시스템(110) 상에 여전히 유지된다는 것을 나타낸다.
상태 아이콘(820D)은 콘텐츠 항목이 클라이언트 디바이스 상에 상주하고 콘텐츠 관리 시스템(110)에 의해 유지되는 그의 버전과 동기화되어 있다는 것을 나타낸다. 또한, 핀 아이콘(840)을 갖는 녹색 원은 콘텐츠 항목이 저장소 제약 동안 클라이언트 디바이스(800) 상에 상주한 채로 유지되도록 선택되었다는 것을 나타낸다.
도 9는, 클라이언트 디바이스에 원격인 특정의 콘텐츠 항목에의 사용자 액세스를 예측하고 액세스에 앞서 예측된 콘텐츠 항목들을 다운로드하는, 제약된 동기화의 대안의 실시예를 나타내는 개념도이다. 이 접근법은, 대부분의 경우에 사용자가 네트워크를 통해 콘텐츠 관리 시스템(110)으로부터 콘텐츠 항목을 검색하기 위해 기다려야만 할지도 모르는 시간을 제거함으로써, 클라이언트 디바이스의 동작에서 추가적인 개선을 제공한다. 공유 콘텐츠 저장 디렉터리(120) 내의 각각의 콘텐츠 항목(140)에 대해 보유 점수(900)가 계산된다. 이 점수는 콘텐츠 항목의 예측된 중요도의 척도이고, 나중의 섹션에서 설명되는 바와 같이, 가장 최근의 액세스 시각, 또는 사용자 요청을 예측하는 것으로 결정된 다수의 다른 인자들의 함수로서 계산될 수 있다. 그에 부가하여, 각각의 콘텐츠 저장 디렉터리(120)는, 사용자에 의해 명시되거나 미리 결정된 값으로 설정될 수 있는, 보유 점수 문턱값(910)으로 구성된다. 동일한 콘텐츠 항목의 보유 점수(900)에 의해 측정되는 바와 같은, 콘텐츠 항목의 예측된 중요도가 콘텐츠 항목에 액세스할 수 있는 클라이언트 디바이스(100) 상의 특정의 공유 콘텐츠 저장 디렉터리(120)의 보유 점수 문턱값(910)을 초과할 때마다, 콘텐츠 항목이 클라이언트 디바이스에 원격일 때는 공유 콘텐츠 저장 디렉터리에 다운로드되고 클라이언트 디바이스 상에 상주하는 경우에는 공유 콘텐츠 디렉터리 내에 유지된다.
스테이지 9.1은, 콘텐츠 항목들에의 사용자 액세스를 예측하는, 콘텐츠 관리 시스템의 전형적인 상태를 나타낸다. 이 예시에서, 콘텐츠 관리 시스템(110)은 2개의 클라이언트 디바이스들(100A 및 100B)을 관리한다. 공유 콘텐츠 저장 디렉터리들(120A 및 120B)은 그 각자의 클라이언트 디바이스들 내에 위치된다. 공유 콘텐츠 저장 디렉터리(120A)는 콘텐츠 항목들(140A, 140B, 및 140C)을 저장하는 반면, 공유 콘텐츠 저장 디렉터리(120B)는 콘텐츠 항목(140D) 및 콘텐츠 항목(140A)의 섀도 항목 표현(160A)을 저장한다. 모든 콘텐츠 항목들(140)의 동기화된 버전들이 콘텐츠 관리 시스템(110) 상에 저장된다.
그에 부가하여, 각각의 콘텐츠 항목(140)은 대응하는 보유 점수(900)를 가지며, 여기서 900A는 콘텐츠 항목(140A)에 대한 보유 점수이고, 900B는 콘텐츠 항목(140B)에 대한 보유 점수이며, 이하 마찬가지이다. 각각의 공유 콘텐츠 저장 디렉터리는 또한 보유 점수 문턱값(910)으로 구성되며, 여기서 910A는 공유 콘텐츠 저장 디렉터리(120A)에 대한 보유 점수 문턱값이고, 910B는 공유 콘텐츠 저장 디렉터리(120B)에 대한 보유 점수 문턱값이다.
스테이지 9.1에서, 콘텐츠 항목(140A)이 공유 콘텐츠 저장 디렉터리(120B)에 유지되지 않는다. 비록 이 경우에 보유 점수 문턱값(910)보다 더 낮은 보유 점수(900)를 갖는 공유 콘텐츠 저장 디렉터리(120) 내에 상주하는 콘텐츠 항목들이 없지만, 이전에 또는 다음 섹션에서 기술되는, 다른 실시예들로부터의 특성들이 이 실시예로부터의 특성들에 부가하여 사용되는 경우에 이 시나리오가 가능하다. 예를 들어, 저장소 할당량이 여전히 유효할 수 있고, 따라서 저장소 할당량이 충분히 큰 경우, 파일이 보유 점수 문턱값(910)보다 더 낮은 보유 점수(900)를 갖더라도 파일을 원격으로 유지할 필요가 없을 수 있다.
스테이지 9.2에서, 클라이언트 디바이스(100A)의 사용자는 콘텐츠 항목(140A)에의 액세스로 간주되는 사용자 동작(920)을 콘텐츠 항목(140A)에 대해 수행한다. 이 예에서, 보유 점수들(900)이 가장 최근의 액세스 시각의 함수로서 계산되기 때문에, 콘텐츠 항목(140A)의 보유 점수(900A)는 20으로부터 60으로 증가한다(이 변화의 크기는 이 예의 목적상 임의적이다. 보유 점수 계산에 관한 상세들은 나중에 제공되고, 동일한 점수 변화를 가져오지 않을 수도 있다).
스테이지 9.3에서, 콘텐츠 관리 시스템(110) 또는, 일부 실시예들에서, 클라이언트(100B) 상의 클라이언트 애플리케이션은 콘텐츠 항목(140A)의 보유 점수(900A)가 공유 콘텐츠 저장 디렉터리(120B)의 보유 점수 문턱값(910B)보다 크거나 같은 것으로 결정하고, 여기서 콘텐츠 항목(140A)은 원격이다. 보유 점수(900A)가 보유 점수 문턱값(910B)을 초과하기 때문에, 콘텐츠 항목(140A)은 클라이언트 디바이스(100B)에 다운로드되고 공유 콘텐츠 저장 디렉터리(120B)에 저장된다.
UCSM들과 유사하게, 다수의 보유 점수 계산 방법들이 있다. 일반적으로 보유 점수들이 사용자 행동 속성들에 대해 정규화될 수 있고, 그 결과 동일한 콘텐츠 항목에 대한 보유 점수들이 각각의 클라이언트 디바이스마다 상이하거나, 점수들이 각각의 클라이언트 디바이스마다 동일하도록 전역적(global)이다. 정규화된 보유 점수들의 장점은 그들이 사용자 행동의 차이들을 평준화한다는 것이다. 예를 들어, 보유 점수가 콘텐츠 항목의 가장 최근의 액세스 시각의 함수인 경우, 현재 시각과 가장 최근의 액세스 시각 사이의 시간이 감소함에 따라 점수가 증가하면, 보다 활동적인 사용자는 그 사용자와 공유되는 콘텐츠 항목들의 보유 점수들을, 덜 활동적인 사용자와 공유되는 콘텐츠 항목들과 비교하여, 상승시킬 것이다. 보유 점수들이, 활동적인 사용자와 덜 활동적인 사용자 둘 다와 공유하는, 제3 사용자에 대해 정규화되지 않는 경우, 활동적인 사용자에 의한 최근의 액세스가 덜 활동적인 사용자에 의한 최근의 액세스보다 제3 사용자에 의한 액세스를 덜 예측하더라도, 활동적인 사용자로부터의 항목들만이 최고 보유 점수들을 가질 것이기 때문에 보유 점수들이 그들의 예측 품질을 상실할 것이다. 보유 점수가 정규화될 때마다, 보유 점수가 특정의 사용자 또는 특정의 콘텐츠 항목의 속성으로 정규화될 수 있다.
하기의 방법들은 보유 점수, 또는 콘텐츠 항목의 사용자 액세스를 예상하는 점수를 결정하는 방법들의 예들이다. 그에 부가하여, 예측된 중요도의 가장 예측적인 척도를 생성하기 위해 보유 점수가 하기의 방법들의 조합을 사용할 수 있다. 전형적으로, 콘텐츠 항목의 예측된 중요도가 증가함에 따라 보유 점수가 증가하지만, 일 실시예에 대해 편리하다면 그 반대일 수도 있다. 이 경우에, 대응하는 보유 점수 문턱값이 최솟값일 것이고, 여기서 콘텐츠 항목의 보유 점수가 보유 점수 문턱값보다 작거나 같으면, 콘텐츠 항목이 대응하는 공유 콘텐츠 저장 디렉터리에 다운로드될 것이다. 이 논의의 목적상, 증가하는 보유 점수의 기본 경우(default case)가 가정될 것이다.
가장 최근의 액세스 점수화(Latest Access Scoring): 가장 최근의 액세스 점수화에 있어서, 콘텐츠 항목의 보유 점수는 그 콘텐츠 항목의 가장 최근의 액세스 시각의 함수이다. 보유 점수는 단순히 현재 시각과 가장 최근의 액세스 시각 사이의 차이(단위: 초)의 역수일 수 있고:
Figure 112017063074349-pat00006
여기서 RS는 보유 점수이고, tC는 현재 시각이며, tA는 가장 최근의 액세스 시각이다.
특정의 실시예에 대해 정규화가 필요한 경우, 미리 결정된 기간 내의 특정의 사용자에 의한 또는 특정의 클라이언트 디바이스 상에서의 임의의 공유 콘텐츠 항목의 액세스 횟수로서 정의된 사용자의 또는 클라이언트 디바이스의 액세스 빈도와 같은, 각종의 사용자 속성들이 사용될 수 있다. 대안적으로, 특정의 사용자 또는 클라이언트 디바이스와 공유되는 콘텐츠 항목들의 가장 최근의 액세스 시각의 평균이 사용될 수 있다.
액세스 빈도 점수화(Access Frequency Scoring): 액세스 빈도 점수화에 있어서, 미리 결정된 기간 내의 동일한 콘텐츠 항목에의 액세스 횟수가 증가함에 따라 콘텐츠 항목의 보유 점수가 증가한다. 액세스 빈도 점수화를 정규화하기 위해, 주어진 콘텐츠 항목에 대한 액세스 빈도가 클라이언트 디바이스 상의 또는 사용자와 공유되는 모든 콘텐츠 항목들에 대한 평균 액세스 빈도에 의해 나누어지거나 다른 방식으로 스케일링될 수 있다.
위치 관련 액세스 점수화(Location Related Access Scoring): 위치 관련 액세스 점수화에 있어서, 제1 콘텐츠 항목의 보유 점수는 가장 최근의 액세스 시각, 액세스 빈도, 또는 콘텐츠 항목 자체의 임의의 다른 특성 및 제1 콘텐츠 항목과 동일한 폴더에 저장된 부가의 콘텐츠 항목들의 동일한 특성의 가중 결합이다. 이것은 폴더 내의 콘텐츠 항목들에의 액세스들이 동일한 폴더 내의 다른 콘텐츠 항목들에의 액세스들을 예측한다는 것을 암시한다.
유사 액세스 점수화(Similar Access Scoring): 유사 액세스 점수화에 있어서, 제1 콘텐츠 항목의 보유 점수는 가장 최근의 액세스 시각, 콘텐츠 항목 자체의 액세스 빈도 및 제1 콘텐츠 항목과 유사한 속성들을 갖는 부가의 콘텐츠 항목들의 동일한 특성의 가중 결합이다. 속성들은 콘텐츠 항목 유형, 크기, 위치, 콘텐츠 항목에 액세스할 수 있는 사용자들 등을 포함할 수 있다. 이것은 유사한 콘텐츠 항목들에의 액세스들이 콘텐츠 항목에의 장래의 액세스들을 예측한다는 것을 암시한다.
기준 기반 보유 점수화(Criteria Based Retention Scoring): 기준 기반 보유 점수화에 있어서, 콘텐츠 항목의 보유 점수는 콘텐츠 항목에 의해 충족되는 이전에 식별된 예측 기준들의 수에 기초한다. 예를 들어, 24시간 이내의 다른 사용자에 의한 콘텐츠 항목에의 액세스, 지난 주에 5회 액세스 초과의 액세스 빈도, 및 지난 3일 내의 충분히 유사한 콘텐츠 항목들에의 액세스들은 모두가 다음 6시간 내의 원격 콘텐츠 항목에의 액세스 시도를 예측하는 것으로 미리 결정된 기준들일 수 있다. 따라서, 콘텐츠 항목의 보유 점수는 콘텐츠 항목에 의해 충족되는 기준들 각각에 대해 미리 결정된 크기만큼 증가할 수 있다. 특정의 충족된 기준에 대한 증가의 크기는 특정의 기준의 예측 강도(predictive strength)에 비례할 수 있다.
도 10은 제약된 동기화를 위해 예측된 콘텐츠 항목 중요도를 사용하는 콘텐츠 관리 시스템에 대한 시스템 환경을 나타낸다. 도 10에 존재하는 제약된 콘텐츠 관리 시스템(600)의 모듈들 대부분은 이전의 섹션에서 살펴본 경우를 제외하고는 도 6을 참조하여 기술된 것들과 유사하거나 동일한 기능들을 수행한다. 따라서, 콘텐츠 관리 시스템(1000) 내의 모든 모듈들의 기능들이 이 섹션에서 상세히 설명되지 않는다.
콘텐츠 관리 시스템(1000)은 메타데이터 서버(212), 블록 서버(214), 통지 서버(216), 데이터 저장소(218), 보류 블록 테이블(220), 네임스페이스 테이블(222), 저장소 관리 모듈(350), 클라이언트 구성 파일(610), 동기화 테이블(620), 사용자 데이터(630), 보유 점수 테이블(1010), 및 보유 점수 모듈(1020)을 포함한다. 클라이언트 구성 파일(610) 및 사용자 데이터(630)는 도 6에서 기술된 이전 버전들에 비해 상당한 변화들을 갖는다. 클라이언트 구성 파일(610)은 각각의 클라이언트 디바이스의 각각의 공유 콘텐츠 저장 디렉터리에 대한 보유 점수 문턱값을 포함하도록 수정되는 반면, 사용자 데이터는 사용되고 있는 보유 점수화 방법에 관련된 사용자 데이터를 포함하도록 수정된다. 보유 점수 모듈(1020)은 보유 점수 테이블(1010)을 발생시키기 위해 사용자 데이터(630) 및 데이터 저장소(218)로부터의 데이터를 받는다. 보유 점수 테이블은 콘텐츠 관리 시스템(1000)에 의해 관리되는 각각의 콘텐츠 항목의 보유 점수를 열거하는 테이블이다. 보유 점수들을 계산하기 위해 정규화가 사용되고 있는 경우, 각각의 클라이언트 디바이스에 대해 별도의 보유 점수 테이블이 존재할 수 있다. 콘텐츠 항목의 보유 점수가 업데이트될 때마다, 보유 점수 모듈(1020)은, 최근에 변경된 보유 점수에 대응하는 콘텐츠 항목이 임의의 클라이언트 디바이스들 상에서 원격인지와 그것이 그 클라이언트 디바이스들의 보유 점수 문턱값들 중 임의의 것을 초과하는지를 결정하기 위해, 클라이언트 구성 파일(610) 및 동기화 테이블(620)을 참고한다. 보유 점수 문턱값이 초과되는 경우, 보유 점수 모듈은 표현하는 섀도 항목의 필요한 다운로드 및 교체를 수행하라고 저장소 관리 모듈(350)에 요청한다.
도 11은 제약된 동기화의 다른 실시예에 대한 클라이언트 애플리케이션(1100)의 소프트웨어 아키텍처를 나타낸다. 이 실시예는 클라이언트 디바이스가 클라이언트 애플리케이션에 의해 유휴인 것으로 결정되는 동안 원격 콘텐츠 항목들의 다운로드, 방치된 콘텐츠 항목들의 제거, 및 섀도 파일들의 생성 모두를 수행한다. 제약된 동기화 프로세스의 이 타이밍 변화는 이전에 기술된 실시예들에 비해 기능적 개선을 제공하면서 유효 저장 용량의 유사한 증가를 제공하는 것에 의해 클라이언트 디바이스를 개선시킨다. 이 기능들을 수행하기 위해, 유휴 상태 트리거 방식 실시예는 도 3에 예시된 시스템 아키텍처를 수정한다. 이 실시예에서, 클라이언트 애플리케이션(1100)은 콘텐츠 동기화 모듈(310), 보유 상태 모듈(1110), 파일 저널(360), 상주 파일 테이블(362), 공유 데이터(364), 원격 파일 테이블(366), 구성 파일(368), 및 블록 캐시(370)를 포함한다. 콘텐츠 동기화 모듈(310)은 해싱 모듈(320), 다운로드 모듈(330), 업로드 모듈(340), 및 저장소 관리 모듈(350)을 추가로 포함한다. 보유 상태 모듈(1110)은 상태 계산 모듈(1120), 상태 비교 모듈(1130), 동작 모듈(1140), 및 시스템 상태 모듈(1150)을 추가로 포함한다. 달리 명시되지 않는 한, 이전에 언급된 모듈들 및 데이터 테이블들 모두는 새로운 모듈들을 수용하기 위해 본 기술분야의 통상의 기술자라면 잘 알 것인 바와 같이 이전에 기술된 것과 동일한 기능이 약간 수정되어 있다. 임의의 주요 수정들이 이하에서 설명된다.
시스템 상태 모듈(1150)은 운영 체제(380) 상에서의 시스템 활동을 측정하기 위해 저장 커널 확장(382)을 사용한다. 시스템 활동은, 프로세서 주파수의 비로서의 비유휴 프로세서 사이클들의 수 또는 다른 CPU 이용률 메트릭(다수의 프로세서 코어들에 대한 조정을 갖거나 갖지 않음), 스레드들의 수, 또는 클라이언트 디바이스(100)의 프로세스들의 수(이들로 제한되지 않음)를 비롯한, 프로세서 활동에 대한 메트릭들을 사용하여 측정될 수 있다. 특정의 포트 또는 연결에 대한 최대 속도의 비로서의, 비트/초(bits per second) 또는 패킷/초(packets per second)로 정의된, 네트워크 이용률을 비롯한, 네트워크 활동 메트릭들이 또한 사용될 수 있다. 그에 부가하여, 이용가능 또는 사용가능(free) RAM(random access memory)의 양을 비롯한 메모리 사용 메트릭이 시스템 활동을 측정하는 데 사용될 수 있다. 시스템 상태 모듈(1150)은, 전체적인 시스템 활동을 측정하기 위해, 앞서 언급된 활동 메트릭들 또는 임의의 다른 적당한 활동 메트릭들을을 개별적으로 또는 조합하여 사용할 수 있다.
시스템 활동의 척도가 미리 결정된 활동 문턱값 미만일 때, 시스템 상태 모듈(1150)은 클라이언트 디바이스가 현재 유휴라는 것을 보유 점수 모듈(1110)에 보고한다. 이 활동 문턱값은, 활동 메트릭에 의해 정의되는 바와 같이, 클라이언트 디바이스의 총 계산 자원의 퍼센트로서 정의될 수 있거나, 활동 문턱값은 활동 메트릭의 특정의 값으로 정의될 수 있다. 예를 들어, 활동 문턱값은 클라이언트 디바이스(100)가 이용가능한 처리 자원들의 25% 미만을 사용하는 상태로서 정의될 수 있다. 대안적으로, 활동 문턱값은 클라이언트 디바이스(100)의 다른 프로세스들이 총 2 GB 미만의 메모리를 사용하거나 클라이언트 디바이스에서 이용가능한 총 메모리가 적어도 4 GB인 상태로서 정의될 수 있다.
클라이언트 디바이스(100)가 유휴 상태에 있다고 시스템 상태 모듈(1150)에 의해 결정될 때, 상태 계산 모듈(1120)은 공유 콘텐츠 저장 디렉터리(120)의 보유 상태를 결정한다. 일반적으로, 보유 상태는 클라이언트 디바이스 상에 상주하는 콘텐츠 항목들 및 이 콘텐츠 항목들에 대응하는 속성들의 세트로 이루어져 있다. 이 속성들은 콘텐츠 항목 크기, 가장 최근의 액세스 시각, 액세스 빈도, 디렉터리 위치, 또는 클라이언트 디바이스 상에 보유하는 것에 대한 콘텐츠 항목의 중요도를 나타낼 임의의 다른 적당한 속성을 포함할 수 있다. 그에 부가하여, 보유 상태는 앞서 열거된 속성들 중 적어도 하나를 사용하여 계산된 통계들의 세트에 의해 표현될 수 있다.
비교 모듈(1130)은 보유 상태를 상태 계산 모듈(1120)로부터 수신하고, 이어서 공유 콘텐츠 저장 디렉터리(120)의 현재 보유 상태를 사용자에 의해 명시될 수 있는, 구성 파일(368)에 정의된, 미리 결정된 문턱 보유 상태와 비교한다. 문턱 보유 상태는 보유 상태에 포함된 클라이언트 디바이스의 속성들 또는 계산된 통계들에 관련된 기준들의 세트이다. 비교 모듈(1130)은 현재 보유 상태가 문턱 보유 상태의 기준들을 충족시키는지를 결정한다. 이 기준들이 위반되는 경우(예컨대, 충족되지 않는 경우), 비교 모듈(1130)은 문턱 보유 상태 기준들을 위반하는 속성들에 대응하는 콘텐츠 항목들 또는 그 속성들에 기초하여 계산된 통계들을 동작 모듈(1140)에 보고한다.
동작 모듈(1140)은 보고를 비교 모듈(1130)로부터 수신한다. 동작 모듈(1140)은 이어서 어느 동작들이 보유 상태를 다시 문턱 보유 상태 기준들 내로 가져올 것인지를 결정한다. 이 동작들은 콘텐츠 항목들을 공유 콘텐츠 저장 디렉터리(120)로부터 제거하고 콘텐츠 항목들을 섀도 항목들로 대체하는 것, 또는 원격 콘텐츠 항목들을 표현하는 섀도 항목들을 콘텐츠 항목들 자체로 대체하는 것을 포함할 수 있다. 이 동작들이 결정되면, 동작 모듈(1140)은 필요한 동작들을 완료하라고 콘텐츠 동기화 모듈(310)에 요청한다.
대안적으로, 유휴 상태 트리거 방식 제약된 동기화가 콘텐츠 관리 시스템 자체에 의해 수행되어, 클라이언트 디바이스에 대한 계산 부담을 추가적으로 감소시키고 다른 용도들에 대한 디바이스 이용가능성을 증가시킬 수 있다. 도 12는 이 작업을 완료하는 시스템 환경을 나타낸다. 제약된 콘텐츠 관리 시스템(1200)은 메타데이터 서버(212), 블록 서버(214), 통지 서버(216), 데이터 저장소(218), 보류 블록 테이블(220), 네임스페이스 테이블(222), 저장소 관리 모듈(350), 클라이언트 구성 파일(610), 동기화 테이블(620), 사용자 데이터(630), 보유 상태 테이블(1210), 보유 상태 모듈(1220)을 포함한다. 달리 명시되지 않는 한, 이전에 언급된 모듈들 및 데이터 테이블들 모두는 새로운 모듈들을 수용하기 위해 본 기술분야의 통상의 기술자라면 잘 알 것인 바와 같이 이전에 기술된 것과 동일한 기능이 약간 수정되어 있다. 임의의 주요 수정들이 이하에서 설명된다.
실시예의 이 버전에서, 콘텐츠 관리 시스템(1200)에 연결된 클라이언트 디바이스 상의 클라이언트 애플리케이션(200)은 클라이언트 디바이스의 상태에 관해 콘텐츠 관리 시스템(1200)에 보고한다. 클라이언트 디바이스가 유휴일 때, 콘텐츠 관리 시스템(1200)은 유휴 클라이언트 디바이스 상의 공유 콘텐츠 저장 디렉터리(120)의 보유 상태를 결정하기 위해 보유 상태 모듈(1220)을 사용한다. 보유 상태 모듈은 이어서, 콘텐츠 관리 시스템(1200)에 연결된 모든 클라이언트 디바이스들의 현재 보유 상태를 포함하는, 보유 상태 테이블(1210)을 업데이트한다. 보유 상태 모듈(1220)은 이어서, 도 11의 논의 동안 기술된 바와 같이, 어쩌면 유사한 서브모듈들을 사용하여 보유 상태 모듈(1110)과 유사한 단계들을 수행한다.
공유 콘텐츠 저장 디렉터리의 보유 상태는 각종의 방법들을 사용하여 결정될 수 있다. 일반적으로, 보유 상태는 기준 기반이고, 클라이언트 애플리케이션이 클라이언트 디바이스가 유휴라고 결정할 때마다 주기적으로 유지된다. 그렇지만, 각각의 상태가 클라이언트 디바이스 상에 상주하는 콘텐츠 항목들의 속성들을 사용하여 계산된 통계에 의해 표현되도록 보유 상태 및 문턱 보유 상태를 수치적으로 구현하는 것이 또한 가능하다. 보유 상태가 기준 기반인 경우, 문턱 보유 상태는 공유 콘텐츠 저장 디렉터리 내의 콘텐츠 항목들이 충족시켜야만 하는 기준들의 세트입니다. 그에 부가하여, 기준 기반 보유 상태의 경우에, 사용자는 보유 상태 기준을 선택하는 옵션을 제공받을 수 있고, 그로써 클라이언트 디바이스(100) 상에 상주하는 콘텐츠 항목들의 카테고리들의 커스터마이제이션(customization)을 가능하게 한다.
각각의 클라이언트 디바이스를 체크하는 데 사용되는 기간은 콘텐츠 관리 시스템의 미리 결정된 값이거나, 사용자에 의해 설정되거나, 특정의 클라이언트 디바이스의 사용 패턴들에 기초하여 결정될 수 있다. 예를 들어, 사용자가 평균적으로 매 24시간마다 자신의 클라이언트 디바이스 상의 콘텐츠 항목들에 액세스하는 경우, 24시간이 경과하기 전에 공유 콘텐츠 저장 디렉터리가 유지되도록 기간이 설정될 수 있다.
공유 콘텐츠 디렉터리를 주기적으로 체크하는 것에 대한 대안으로서, 다른 실시예는, 공유 콘텐츠 디렉터리가 긴급성, 예를 들어, 하드웨어 저장소 한계에 근접하는 것을 나타내는 제2 기준들의 세트를 충족시킬 때에만, 공유 콘텐츠 디렉터리를 유지할 수 있다.
저장 공간 기준(Storage Space Criteria): 하나의 가능한 기준들의 세트는 저장소 할당량 기준을 갖는 것이다. 예를 들어, 저장소 할당량이 20 GB로 설정될 수 있지만, 이전의 실시예들과 같이 거동하는 대신에, 콘텐츠 관리 시스템은, 디바이스가 유휴일 때까지, 공유 콘텐츠 저장 디렉터리 상에 저장된 콘텐츠 항목들이 기준 값(이 예에서, 20GB)을 초과할 수 있게 할 것이다. 이어서, 적절한 콘텐츠 항목들을 제거하고 공유 콘텐츠 저장 디렉터리에 대한 저장 공간 기준들을 충족시키기 위해, 방치된 콘텐츠 항목들을 결정하는 유사한 프로세스가 사용될 수 있을 것이다.
액세스 시각 기준(Access Time Criteria): 제2 기준은 액세스 시각 기준일 수 있다. 예를 들어, 이 기준은 과거의 미리 결정된 시간 구간보다 더 이른 가장 최근의 액세스 시각을 갖는 어떤 콘텐츠 항목도 공유 콘텐츠 저장 디렉터리 내에 상주할 수 없다는 것을 나타낼 수 있다. 이 콘텐츠 항목들은 클라이언트 디바이스가 유휴일 때까지 공유 콘텐츠 저장 디렉터리 내에 상주한 채로 유지될 수 있다. 그 시점에서, 보유 상태 모듈은 단순히 미리 결정된 시간 구간보다 더 이른 가장 최근의 액세스 시각을 갖는 모든 콘텐츠 항목들의 제거를 요청할 것이다.
콘텐츠 항목 크기 기준(Content Item Size Criteria): 다른 기준들의 세트는 콘텐츠 항목 크기 기준이다. 이 방법의 경우, 개개의 콘텐츠 항목의 크기에 대한 문턱값이 설정된다. 따라서, 디바이스가 유휴일 때마다, 그 문턱값을 초과하거나 그 미만인 임의의 콘텐츠 항목이 클라이언트 디바이스 상의 상주지(residence)로부터 제거된다.
액세스 빈도 기준(Access Frequency Criteria): 마지막으로, 액세스 빈도 기준은 클라이언트 디바이스 상에 상주한 채로 유지되기 위해 필요한 미리 결정된 시간 구간 내에서의 최소 액세스 횟수를 설정하는 데 사용된다. 특정의 콘텐츠 항목이 충분히 빈번히 액세스되지 않는 경우, 그 콘텐츠 항목은 클라이언트 디바이스가 유휴일 때마다 클라이언트 디바이스로부터 제거된다.
이 보유 기준들의 목록이 전수적이지 않다는 것에 유의한다. 그에 부가하여, 이 기준들이 서로 함께 사용됨으로써 보다 복잡한 규칙들이 얻어질 수 있다.
도 13은 유휴 상태 트리거 방식 제약된 콘텐츠 관리의 기능을 나타내는 흐름도이다. 먼저, 시스템은 특정의 클라이언트 디바이스가 유휴인지를 결정하기 위해 체크한다(1300). 이 단계는 주기적으로 또는 콘텐츠 저장 디렉터리가 미리 결정된 문턱값에 도달하는 것에 응답하여 완료된다. 디바이스가 유휴이면, 시스템은 클라이언트 디바이스의 보유 상태를 결정한다(1310). 이어서, 시스템은 공유 콘텐츠 저장 디렉터리의 현재 보유 상태를 공유 콘텐츠 저장 디렉터리에 대한 보유 상태 기준들과 비교한다. 기준들이 공유 콘텐츠 저장 디렉터리의 현재 보유 상태에 의해 충족되면, 시스템은 클라이언트 디바이스가 유휴인지를 결정하기 위해 체크하는 것(1300)을 재개한다. 보유 상태 기준들이 위반되면, 시스템은 공유 콘텐츠 저장 디렉터리가 보유 상태 기준들을 충족시키기 위해 필요한, 공유 콘텐츠 저장 디렉터리에 대해 수행할 동작들을 식별한다(1330). 시스템은 이어서 미리 결정된 보유 상태 기준들에 부합하기 위해 공유 콘텐츠 저장 디렉터리에 대해 그 동작들을 수행한다(1340).
본 발명의 실시예들에 대한 이상의 설명은 예시를 위해 제시되었으며; 전수적이거나 본 발명을 개시된 정확한 형태들로 제한하려는 것으로 의도되어 있지 않다. 관련 기술분야의 통상의 기술자는 이상의 개시내용을 바탕으로 많은 수정들 및 변형들이 가능하다는 것을 알 수 있다.
이 설명의 어떤 부분들은 정보에 대한 동작들의 알고리즘들 및 심벌 표현들과 관련하여 본 발명의 실시예들을 기술한다. 이 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 통상의 기술자에 의해 본 기술분야의 다른 통상의 기술자에게 자신의 연구의 내용을 효과적으로 전달하기 위해 흔히 사용된다. 이 동작들은, 기능적으로, 계산적으로, 또는 논리적으로 기술되었지만, 컴퓨터 프로그램들 또는 등가의 전기 회로들, 마이크로코드 등에 의해 구현되는 것으로 이해된다. 게다가, 일반성을 잃지 않고, 이러한 동작들의 배열들을 모듈들로서 지칭하는 것이 때로는 편리하다는 것이 입증되었다. 기술된 동작들 및 그들의 관련 모듈들은 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합들로 구현될 수 있다.
본원에 기술되는 단계들, 동작들, 또는 프로세스들 중 임의의 것이 하나 이상의 하드웨어 또는 소프트웨어 모듈들로, 단독으로 또는 다른 디바이스들과 조합하여, 수행되거나 구현될 수 있다. 일 실시예에서, 소프트웨어 모듈은 기술된 단계들, 동작들, 또는 프로세스들 중 일부 또는 전부를 수행하기 위해 컴퓨터 프로세서에 의해 실행될 수 있는 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로 구현된다.
본 발명의 실시예들은 또한 본원에서의 동작들을 수행하기 위한 장치에 관한 것일 수 있다. 이 장치는 요구된 목적들을 위해 특정 방식으로 구성될 수 있고 그리고/또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨팅 디바이스를 포함할 수 있다. 이러한 컴퓨터 프로그램은 비일시적, 유형적 컴퓨터 판독가능 저장 매체, 또는, 컴퓨터 시스템 버스에 결합될 수 있는, 전자 명령어들을 저장하기에 적합한 임의의 유형의 매체에 저장될 수 있다. 게다가, 명세서에 언급된 임의의 컴퓨팅 시스템들은 단일 프로세서를 포함할 수 있거나, 증가된 컴퓨팅 능력을 위해 다중 프로세서 설계들을 이용하는 아키텍처들일 수 있다.
본 발명의 실시예들은 또한 본원에 기술되는 컴퓨팅 프로세스에 의해 생성되는 제품에 관한 것일 수 있다. 이러한 제품은 컴퓨팅 프로세스로부터 생성된 정보 - 정보는 비일시적, 유형적 컴퓨터 판독가능 저장 매체 상에 저장됨 - 를 포함할 수 있고, 본원에 기술되는 컴퓨터 프로그램 제품 또는 다른 데이터 조합의 임의의 실시예를 포함할 수 있다.
마지막으로, 본 명세서에서 사용되는 표현은 원칙적으로 알아보기 쉽고 이해하기 쉽도록 선택되었으며, 본 발명 요지를 한정하거나 제한하기 위해 선택되지 않았을 수 있다. 따라서, 본 발명의 범주가 이 상세한 설명에 의해서가 아니라 오히려 그에 기초한 출원에 나오는 임의의 청구항들에 의해 제한되는 것으로 의도되어 있다. 그에 따라, 본 발명의 실시예들의 개시내용은 이하의 청구항들에 기재되는 본 발명의 범주를 제한하는 것이 아니라 예시적인 것으로 의도되어 있다.

Claims (16)

  1. 콘텐츠 항목들을 동기화시키는 컴퓨터 구현 방법으로서,
    콘텐츠 관리 시스템에 의해, 네임스페이스(namespace)에서, 상기 네임스페이스와 연관된 제1 클라이언트 디바이스 상에 섀도 항목으로서 표현된 동기화된 콘텐츠 항목을 저장하는 단계 - 상기 제1 클라이언트 디바이스는 제1 보유 점수 문턱값(retention score threshold)으로 구성됨 -;
    상기 콘텐츠 관리 시스템에 의해, 상기 콘텐츠 항목의 적어도 하나의 속성에 기초하여 상기 콘텐츠 항목에 대한 보유 점수를 결정하는 단계;
    상기 콘텐츠 항목의 상기 보유 점수가 상기 제1 클라이언트 디바이스의 상기 제1 보유 점수 문턱값을 초과하는지를 결정하는 단계; 및
    상기 콘텐츠 항목의 상기 보유 점수가 상기 제1 보유 점수 문턱값을 초과하는 것으로 결정한 것에 응답하여, 상기 제1 클라이언트 디바이스가 상기 제1 클라이언트 디바이스 상의 상기 섀도 항목을 상기 콘텐츠 항목으로 대체하게 하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 콘텐츠 관리 시스템에 의해, 상기 콘텐츠 항목을 섀도 항목으로서 저장하는 상기 네임스페이스와 연관된 제2 클라이언트 디바이스를 식별하는 단계 - 상기 제2 클라이언트 디바이스는 제2 보유 점수 문턱값으로 구성됨 -; 및
    상기 콘텐츠 항목에 대한 상기 보유 점수가 상기 제2 보유 점수 문턱값을 초과하는 것으로 결정한 것에 응답하여, 상기 제2 클라이언트 디바이스가 상기 제2 클라이언트 디바이스 상의 상기 섀도 항목을 상기 콘텐츠 항목으로 대체하게 하는 단계를 추가로 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 적어도 하나의 속성은 가장 최근의 액세스 시각, 위치, 유형, 크기, 액세스 빈도, 공유 상태, 액세스를 하는 계정들의 수, 액세스를 하는 디바이스들의 수, 및 상기 콘텐츠 항목을 저장하는 디바이스들의 수로 이루어진 그룹으로부터 선택되는, 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 보유 점수는,
    현재 시각과 상기 콘텐츠 항목의 가장 최근의 액세스 시각 사이의 차이의 감소;
    상기 콘텐츠 항목에 대한 액세스 빈도의 증가;
    현재 시각과 상기 콘텐츠 항목과 동일한 폴더에 있는 다른 콘텐츠 항목들에 대한 가장 최근의 액세스 시각 사이의 차이의 감소; 또는
    현재 시각과 유사한 콘텐츠 항목들에 대한 가장 최근의 액세스 시각 사이의 차이의 감소 - 유사한 콘텐츠 항목은 상기 콘텐츠 항목과 유사한 속성들을 갖는 콘텐츠 항목임 -
    중 적어도 하나가 일어나는 것에 의해 증가하는, 컴퓨터 구현 방법.
  5. 제3항에 있어서, 상기 가장 최근의 액세스 시각은 상기 콘텐츠 항목이 상기 네임스페이스와 연관된 임의의 클라이언트 디바이스를 통해 액세스되는 가장 최근의 시각인, 컴퓨터 구현 방법.
  6. 제3항에 있어서, 상기 가장 최근의 액세스 시각 및 상기 액세스 빈도는 상기 콘텐츠 항목의 하나 이상의 액세스들에 기초하여 계산되며, 상기 콘텐츠 항목에의 액세스는, 상기 클라이언트 디바이스 상의 클라이언트 애플리케이션이 상기 콘텐츠 항목을 여는 것, 상기 클라이언트 디바이스 상의 클라이언트 애플리케이션이 상기 콘텐츠 항목을 수정하는 것, 또는 상기 클라이언트 디바이스 상의 클라이언트 애플리케이션이 상기 콘텐츠 항목을 디스플레이하는 것 중 적어도 하나를 포함하는, 컴퓨터 구현 방법.
  7. 제1항에 있어서, 상기 콘텐츠 항목의 상기 제1 보유 점수는 둘 이상의 수치 값들의 합이고, 각각의 수치 값은 가중치를 가지며 하나 이상의 예측 기준들 중, 상기 콘텐츠 항목에 의해 충족되는, 예측 기준을 표현하고, 상기 예측 기준은,
    문턱 콘텐츠 항목 가장 최근의 액세스 시각(threshold content item latest access time);
    문턱 콘텐츠 항목 액세스 빈도(threshold content item access frequency);
    특정의 콘텐츠 항목 위치; 및
    유사한 콘텐츠 항목들에 대한 문턱 가장 최근의 액세스 시각(threshold latest access time)
    중 하나인, 컴퓨터 구현 방법.
  8. 제7항에 있어서, 상기 예측 기준을 표현하는 각각의 수치 값의 상기 가중치는 상기 콘텐츠 항목에 액세스하려는 시도가 동일한 콘텐츠 항목에 의해 충족되는 상기 예측 기준의 미리 결정된 기간 내에 일어날 가능성에 기초하는, 컴퓨터 구현 방법.
  9. 콘텐츠 항목들을 동기화시키는 컴퓨터 구현 방법으로서,
    콘텐츠 관리 시스템에 의해, 네임스페이스에 저장된 제1 콘텐츠 항목에 대한 액세스 지시자를 수신하는 단계 - 상기 액세스 지시자는 상기 네임스페이스와 연관된 제1 클라이언트 디바이스로부터 수신됨 -;
    상기 액세스 지시자를 수신한 것에 응답하여, 상기 콘텐츠 관리 시스템에 의해, 상기 제1 콘텐츠 항목의 적어도 하나의 속성에 기초하여 상기 제1 콘텐츠 항목에 대한 제1 보유 점수를 결정하는 단계;
    상기 콘텐츠 관리 시스템에 의해, 상기 제1 콘텐츠 항목와 연관된 제2 클라이언트 디바이스를 식별하는 단계 - 상기 제2 클라이언트 디바이스는 상기 제1 콘텐츠 항목을 제1 섀도 항목으로서 저장하고, 상기 제2 클라이언트 디바이스는 제1 보유 점수 문턱값으로 구성됨 -; 및
    상기 제1 보유 점수가 상기 제2 클라이언트 디바이스의 상기 제1 보유 점수 문턱값을 초과하는 것으로 결정한 것에 응답하여, 상기 제2 클라이언트 디바이스가 상기 제2 클라이언트 디바이스 상의 상기 제1 섀도 항목을 상기 제1 콘텐츠 항목으로 대체하게 하는 단계를 포함하는, 컴퓨터 구현 방법.
  10. 제9항에 있어서,
    상기 콘텐츠 관리 시스템에 의해, 상기 제1 콘텐츠 항목의 적어도 하나의 속성에 기초하여 제2 콘텐츠 항목을 식별하는 단계 - 상기 제2 콘텐츠 항목은 상기 제1 클라이언트 디바이스 상에 제2 섀도 항목으로서 저장됨 -;
    상기 콘텐츠 관리 시스템에 의해, 상기 제2 콘텐츠 항목의 적어도 하나의 속성에 기초하여 상기 제2 콘텐츠 항목에 대한 제2 보유 점수를 결정하는 단계; 및
    상기 제2 보유 점수가 상기 제1 클라이언트 디바이스의 제2 보유 점수 문턱값을 초과하는 것으로 결정한 것에 응답하여, 상기 제1 클라이언트 디바이스가 상기 제1 클라이언트 디바이스 상의 상기 제2 섀도 항목을 상기 제2 콘텐츠 항목으로 대체하게 하는 단계를 추가로 포함하는, 컴퓨터 구현 방법.
  11. 제9항에 있어서, 상기 적어도 하나의 속성은 가장 최근의 액세스 시각, 위치, 유형, 크기, 액세스 빈도, 공유 상태, 액세스를 하는 계정들의 수, 액세스를 하는 디바이스들의 수, 및 상기 제1 콘텐츠 항목을 저장하는 디바이스들의 수로 이루어진 그룹으로부터 선택되는, 컴퓨터 구현 방법.
  12. 제11항에 있어서, 상기 제1 보유 점수는,
    현재 시각과 상기 제1 콘텐츠 항목의 가장 최근의 액세스 시각 사이의 차이의 감소;
    상기 제1 콘텐츠 항목에 대한 액세스 빈도의 증가;
    현재 시각과 상기 제1 콘텐츠 항목과 동일한 폴더에 있는 다른 콘텐츠 항목들에 대한 가장 최근의 액세스 시각 사이의 차이의 감소; 또는
    현재 시각과 유사한 콘텐츠 항목들에 대한 가장 최근의 액세스 시각 사이의 차이의 감소 - 유사한 콘텐츠 항목은 상기 제1 콘텐츠 항목과 유사한 속성들을 갖는 콘텐츠 항목임 -
    중 적어도 하나가 일어나는 것에 의해 증가하는, 컴퓨터 구현 방법.
  13. 제11항에 있어서, 상기 가장 최근의 액세스 시각은 상기 제1 콘텐츠 항목이 상기 네임스페이스와 연관된 임의의 클라이언트 디바이스를 통해 액세스되는 가장 최근의 시각인, 컴퓨터 구현 방법.
  14. 제12항에 있어서, 상기 가장 최근의 액세스 시각 및 상기 액세스 빈도는 상기 제1 콘텐츠 항목의 하나 이상의 액세스들에 기초하여 계산되며, 상기 콘텐츠 항목에의 액세스는, 임의의 클라이언트 디바이스 상의 클라이언트 애플리케이션이 상기 제1 콘텐츠 항목을 여는 것, 임의의 클라이언트 디바이스 상의 클라이언트 애플리케이션이 상기 제1 콘텐츠 항목을 수정하는 것, 또는 임의의 클라이언트 디바이스 상의 클라이언트 애플리케이션이 상기 제1 콘텐츠 항목을 디스플레이하는 것 중 적어도 하나를 포함하는, 컴퓨터 구현 방법.
  15. 콘텐츠 항목들을 동기화시키는 컴퓨터 시스템으로서,
    프로세서; 및
    명령어들을 저장하는 메모리
    를 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    콘텐츠 관리 시스템에 의해, 네임스페이스에서, 상기 네임스페이스와 연관된 제1 클라이언트 디바이스 상에 섀도 항목으로서 표현된 동기화된 콘텐츠 항목을 저장하게 하고 - 상기 제1 클라이언트 디바이스는 제1 보유 점수 문턱값으로 구성됨 -;
    상기 콘텐츠 관리 시스템에 의해, 상기 콘텐츠 항목의 적어도 하나의 속성에 기초하여 상기 콘텐츠 항목에 대한 보유 점수를 결정하게 하고;
    상기 콘텐츠 항목의 상기 보유 점수가 상기 제1 클라이언트 디바이스의 상기 제1 보유 점수 문턱값을 초과하는지를 결정하게 하고;
    상기 콘텐츠 항목의 상기 보유 점수가 상기 제1 보유 점수 문턱값을 초과하는 것으로 결정한 것에 응답하여, 상기 제1 클라이언트 디바이스가 상기 제1 클라이언트 디바이스 상의 상기 섀도 항목을 상기 콘텐츠 항목으로 대체하게 하는, 컴퓨터 시스템.
  16. 명령어들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    콘텐츠 관리 시스템에 의해, 네임스페이스에서, 상기 네임스페이스와 연관된 제1 클라이언트 디바이스 상에 섀도 항목으로서 표현된 동기화된 콘텐츠 항목을 저장하는 단계 - 상기 제1 클라이언트 디바이스는 제1 보유 점수 문턱값으로 구성됨 -;
    상기 콘텐츠 관리 시스템에 의해, 상기 콘텐츠 항목의 적어도 하나의 속성에 기초하여 상기 콘텐츠 항목에 대한 보유 점수를 결정하는 단계;
    상기 콘텐츠 항목의 상기 보유 점수가 상기 클라이언트 디바이스의 상기 제1 보유 점수 문턱값을 초과하는지를 결정하는 단계; 및
    상기 콘텐츠 항목의 상기 보유 점수가 상기 제1 보유 점수 문턱값을 초과하는 것으로 결정한 것에 응답하여, 상기 제1 클라이언트 디바이스가 상기 제1 클라이언트 디바이스 상의 상기 섀도 항목을 상기 콘텐츠 항목으로 대체하게 하는 단계를 수행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020177018184A 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화 KR101915423B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US14/611,115 US9361349B1 (en) 2015-01-30 2015-01-30 Storage constrained synchronization of shared content items
US14/611,117 US9413824B1 (en) 2015-01-30 2015-01-30 Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US14/611,116 US9185164B1 (en) 2015-01-30 2015-01-30 Idle state triggered constrained synchronization of shared content items
US14/611,115 2015-01-30
US14/611,116 2015-01-30
US14/611,117 2015-01-30
PCT/IB2015/057577 WO2016120683A1 (en) 2015-01-30 2015-10-03 Storage constrained synchronization of shared content items

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177017998A Division KR101916240B1 (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화

Publications (2)

Publication Number Publication Date
KR20170129680A KR20170129680A (ko) 2017-11-27
KR101915423B1 true KR101915423B1 (ko) 2018-11-05

Family

ID=54288863

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020177017998A KR101916240B1 (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화
KR1020177018190A KR20170129681A (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화
KR1020177018184A KR101915423B1 (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화
KR1020187031669A KR102064696B1 (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020177017998A KR101916240B1 (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화
KR1020177018190A KR20170129681A (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187031669A KR102064696B1 (ko) 2015-01-30 2015-10-03 공유 콘텐츠 항목의 저장소 제약된 동기화

Country Status (7)

Country Link
EP (5) EP3285183B1 (ko)
JP (3) JP6573674B2 (ko)
KR (4) KR101916240B1 (ko)
CN (3) CN107426319B (ko)
AU (3) AU2015379551B2 (ko)
CA (3) CA2972706C (ko)
WO (1) WO2016120683A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
CN110659250B (zh) * 2018-06-13 2022-02-22 中国电信股份有限公司 文件处理方法和系统
CN109815247B (zh) * 2019-01-09 2021-05-07 金蝶软件(中国)有限公司 信息同步方法、装置、计算机设备和存储介质
EP3896578A1 (en) * 2020-04-13 2021-10-20 Citrix Systems, Inc. Unified file storage system
US11360943B2 (en) 2020-04-13 2022-06-14 Citrix Systems, Inc. Unified file storage system
US11917215B2 (en) 2021-12-01 2024-02-27 Rovi Guides, Inc. Systems and methods for minimizing number of copies of content items stored at server

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256314A1 (en) 2007-04-16 2008-10-16 Microsoft Corporation Controlled anticipation in creating a shadow copy
US20110040729A1 (en) 2009-08-12 2011-02-17 Hitachi, Ltd. Hierarchical management storage system and storage system operating method
JP2013524358A (ja) 2010-09-17 2013-06-17 株式会社日立製作所 情報処理システムの管理方法、及びデータ管理計算機システム
US20140330874A1 (en) * 2013-05-01 2014-11-06 Microsoft Corporation Streaming content and placeholders

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140213A (ja) * 2000-11-01 2002-05-17 Yano Electric Co Ltd 情報管理装置および方法、情報管理システム、ならびに、情報管理装置にインストールされるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002244914A (ja) * 2001-02-15 2002-08-30 Ricoh Co Ltd クライアント、文書管理システム及び記憶媒体
CA2461025A1 (en) * 2001-09-26 2003-04-03 Mark Saake Efficient mangement of large files
US7680849B2 (en) * 2004-10-25 2010-03-16 Apple Inc. Multiple media type synchronization between host computer and media device
JP2004054633A (ja) * 2002-07-19 2004-02-19 Sony Communication Network Corp 情報同期方法とこの方法を利用可能な情報同期装置および情報端末
TW583538B (en) * 2003-01-17 2004-04-11 Yu-De Wu Method of remote redundancy
US7743022B2 (en) * 2003-02-28 2010-06-22 Microsoft Corporation Method and system for synchronizing data shared among peer computing devices
JP2005228242A (ja) * 2004-02-16 2005-08-25 Nec Commun Syst Ltd 移動体通信システムおよび移動端末機器
US7257689B1 (en) * 2004-10-15 2007-08-14 Veritas Operating Corporation System and method for loosely coupled temporal storage management
US7506005B2 (en) * 2005-07-14 2009-03-17 Microsoft Corporation Moving data from file on storage volume to alternate location to free space
US7395389B2 (en) * 2006-07-27 2008-07-01 Microsoft Corporation Extending non-volatile storage at a computer system
CN101689174A (zh) * 2006-08-18 2010-03-31 索尼株式会社 通过推荐引擎进行选择性媒体访问
US8060653B2 (en) * 2007-04-23 2011-11-15 Ianywhere Solutions, Inc. Background synchronization
JP2010257094A (ja) * 2009-04-23 2010-11-11 Hitachi Ltd 階層ストレージ管理システムにおける移動候補ファイルの抽出方法
JP5586892B2 (ja) * 2009-08-06 2014-09-10 株式会社日立製作所 階層化ストレージシステム及び階層化ストレージシステムにおけるファイルのコピー制御方法
US8200626B1 (en) * 2009-09-18 2012-06-12 Sprint Communications Company L.P. Mobile device file management
JP5427533B2 (ja) * 2009-09-30 2014-02-26 株式会社日立製作所 階層ストレージ管理システムにおける重複ファイルの転送方法及びシステム
EP2579157B1 (en) * 2010-05-27 2016-12-07 Hitachi, Ltd. Local file server operative to transfer file to remote file server via communication network, and storage system including those file servers
JP5328057B2 (ja) * 2011-03-30 2013-10-30 富士重工業株式会社 車両用エネルギ吸収ビーム及び車両用ドア構造
WO2012137262A1 (en) * 2011-04-08 2012-10-11 Hitachi, Ltd. Information processing system and data processing method
JP5873187B2 (ja) * 2012-02-13 2016-03-01 株式会社日立製作所 階層化ストレージシステムの管理装置及び管理方法
KR101364356B1 (ko) 2013-08-13 2014-02-18 (주)카디날정보기술 대용량 데이터 저장을 위한 심볼릭 링크를 이용한 확장 가능한 저장 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256314A1 (en) 2007-04-16 2008-10-16 Microsoft Corporation Controlled anticipation in creating a shadow copy
US20110040729A1 (en) 2009-08-12 2011-02-17 Hitachi, Ltd. Hierarchical management storage system and storage system operating method
JP2013524358A (ja) 2010-09-17 2013-06-17 株式会社日立製作所 情報処理システムの管理方法、及びデータ管理計算機システム
US20140330874A1 (en) * 2013-05-01 2014-11-06 Microsoft Corporation Streaming content and placeholders

Also Published As

Publication number Publication date
CN107409142A (zh) 2017-11-28
EP3285183B1 (en) 2021-05-26
EP3584716A1 (en) 2019-12-25
AU2017204647A1 (en) 2017-07-27
KR20170129680A (ko) 2017-11-27
AU2015379551A1 (en) 2017-07-20
JP2018508855A (ja) 2018-03-29
KR101916240B1 (ko) 2018-11-08
JP6409105B2 (ja) 2018-10-17
EP3251026B1 (en) 2019-08-07
KR20180121698A (ko) 2018-11-07
AU2017204654A1 (en) 2017-07-27
JP2018041454A (ja) 2018-03-15
AU2015379551B2 (en) 2017-08-10
CA2977696C (en) 2018-01-02
EP3913493A1 (en) 2021-11-24
CN107426319B (zh) 2019-03-26
JP6573674B2 (ja) 2019-09-11
CN107426319A (zh) 2017-12-01
CA2977696A1 (en) 2016-08-04
CA2977692C (en) 2019-02-12
EP3584716B1 (en) 2021-12-01
EP3913493B1 (en) 2023-01-11
EP3285184A1 (en) 2018-02-21
AU2017204647B2 (en) 2017-11-23
AU2017204654B2 (en) 2017-10-26
JP6475295B2 (ja) 2019-02-27
CA2972706A1 (en) 2016-08-04
KR102064696B1 (ko) 2020-02-11
EP3285183A1 (en) 2018-02-21
CN107426318A (zh) 2017-12-01
KR20170129681A (ko) 2017-11-27
CA2977692A1 (en) 2016-08-04
CA2972706C (en) 2018-01-02
JP2017228310A (ja) 2017-12-28
EP3251026A1 (en) 2017-12-06
WO2016120683A1 (en) 2016-08-04
KR20170120564A (ko) 2017-10-31

Similar Documents

Publication Publication Date Title
US11675811B2 (en) Storage constrained synchronization of shared content items
US9442997B2 (en) Idle state triggered constrained synchronization of shared content items
US9413824B1 (en) Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
KR101915423B1 (ko) 공유 콘텐츠 항목의 저장소 제약된 동기화
EP3239860B1 (en) Storage constrained synchronization engine
WO2017187311A1 (en) Storage constrained synchronization engine
JP6636623B2 (ja) 制約付き同期システムにおける共有コンテンツアイテムの選択的ダウンロード

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant