KR20170134586A - 콘텐츠 저장 및 리트리벌을 위한 시스템들 및 방법들 - Google Patents

콘텐츠 저장 및 리트리벌을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20170134586A
KR20170134586A KR1020177031679A KR20177031679A KR20170134586A KR 20170134586 A KR20170134586 A KR 20170134586A KR 1020177031679 A KR1020177031679 A KR 1020177031679A KR 20177031679 A KR20177031679 A KR 20177031679A KR 20170134586 A KR20170134586 A KR 20170134586A
Authority
KR
South Korea
Prior art keywords
file
client device
portions
stored
metafile
Prior art date
Application number
KR1020177031679A
Other languages
English (en)
Other versions
KR102072854B1 (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 KR20170134586A publication Critical patent/KR20170134586A/ko
Application granted granted Critical
Publication of KR102072854B1 publication Critical patent/KR102072854B1/ko

Links

Images

Classifications

    • G06F17/30091
    • 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/13File access structures, e.g. distributed indices
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

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

Abstract

클라이언트 디바이스에서 파일의 부분들에 액세스하기 위한 시스템들 및 방법들이 본원에서 개시된다. 클라이언트 디바이스에 다운로딩하기 위한 파일의 하나 또는 그 초과의 부분들이 선택되고, 파일은 네트워크를 통해 클라이언트 디바이스와 통신하는 웹-기반 저장 시스템 상에 저장된다. 선택된 하나 또는 그 초과의 부분들에서, 클라이언트 디바이스 상에 저장되지 않은 적어도 하나의 부분이 식별된다. 파일의 식별된 적어도 하나의 부분을 다운로딩하도록 하는 요청이, 사용자 인터랙션없이 웹-기반 저장 시스템에 송신된다. 파일의 식별된 적어도 하나의 부분은 네트워크를 통해 클라이언트 디바이스에 다운로딩된다.

Description

콘텐츠 저장 및 리트리벌을 위한 시스템들 및 방법들
[0001] 본 출원은 2015년 9월 14일자로 출원된 미국 특허 출원 제14/853,214호를 우선권으로 주장하며, 이 출원은 그 전체가 본 명세서에 포함된다.
[0002] 일반적으로, 본 개시내용은 데이터 저장소에 관한 것으로, 특히 클라우드 저장소에 데이터를 저장하고 클라우드 저장소로부터의 데이터에 액세스하기 위한 시스템들 및 방법들에 관한 것이다.
[0003] 웹-기반 저장 시스템들은 사용자들이 하나 또는 그 초과의 사용자 디바이스들로부터 액세스 가능한 데이터를 저장 및 리트리브할 수 있게 하는 파일 호스팅 시스템들이다. 이러한 저장 시스템들은 클라우드 저장소를 사용하여 사용자 데이터를 저장할 수 있다. 간혹 사용자 디바이스가 웹-기반 저장 시스템에 저장된 파일들에 액세스하는 것이 바람직하다. 그러나 파일들이 크다면, 사용자가 파일에 액세스할 수 있기 전에 파일 전체가 사용자의 디바이스에 다운로딩될 때까지 사용자가 기다리는 것이 바람직하지 않을 수 있다.
[0004] 데이터 저장을 유지하기 위한 시스템들 및 방법들이 본원에 개시된다. 한 양상은 클라이언트 디바이스에서 파일의 부분들에 액세스하기 위한 시스템 또는 방법에 관한 것이다. 클라이언트 디바이스에 다운로딩하기 위해 파일의 하나 또는 그 초과의 부분들이 선택되고, 파일은 네트워크를 통해 클라이언트 디바이스와 통신하는 웹-기반 저장 시스템 상에 저장된다. 선택된 하나 또는 그 초과의 부분들에서 클라이언트 디바이스 상에 저장되지 않은 적어도 하나의 부분이 식별된다. 파일의 식별된 적어도 하나의 부분을 다운로딩하기 위한 요청이 사용자 인터랙션 없이 웹-기반 저장 시스템에 송신되고, 파일의 식별된 적어도 하나의 부분이 네트워크를 통해 클라이언트 디바이스에 다운로딩된다.
[0005] 다른 양상은 클라이언트 디바이스에서 파일의 부분들에 액세스하기 위한 수단을 포함하는 시스템에 관한 것이다. 이 시스템은 클라이언트 디바이스에 다운로딩하기 위해 파일의 하나 또는 그 초과의 부분들을 선택하기 위한 수단 ―파일은 네트워크를 통해 클라이언트 디바이스와 통신하는 웹-기반 저장 시스템 상에 저장됨―, 선택된 하나 또는 그 초과의 부분들에서 클라이언트 디바이스 상에 저장되지 않은 적어도 하나의 부분을 식별하기 위한 수단, 파일의 식별된 적어도 하나의 부분을 다운로딩하기 위한 요청을 사용자 인터랙션 없이 웹-기반 저장 시스템에 송신하기 위한 수단, 및 파일의 식별된 적어도 하나의 부분을 네트워크를 통해 클라이언트 디바이스에 다운로딩하기 위한 수단을 포함한다.
[0006] 일부 구현들에서, 식별하기 위한 수단은 선택된 하나 또는 그 초과의 부분들을 메타파일 내의 엔트리들과 비교하기 위한 수단을 포함한다. 메타파일 내의 각각의 엔트리는 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자, 및 선택된 하나 또는 그 초과의 부분들 각각이 클라이언트 디바이스 상에 저장되는지 여부의 표시를 포함한다. 메타파일은 클라이언트 디바이스 상에 저장될 수 있고 클라이언트 디바이스의 사용자에 액세스 가능하지 않다. 메타파일은 식별된 적어도 하나의 부분이 다운로딩된 후, 식별된 적어도 하나의 부분이 클라이언트 디바이스 상에 저장됨을 반영하도록 업데이트된다.
[0007] 일부 구현들에서, 파일은 문서(document)에 대응하고, 시스템은 클라이언트 디바이스를 작동시키는 사용자에게 문서의 제1 부분의 뷰를 제공하기 위한 수단을 포함하며, 파일의 선택된 하나 또는 그 초과의 부분들은 제1 부분에 인접한 문서의 제2 부분 및 제3 부분을 포함한다. 파일의 선택된 하나 또는 그 초과의 부분들은 파일의 히스토리컬 뷰 패턴 또는 파일의 편집 활동에 기반하여 결정된 우선순위 스코어들이 할당되는 파일의 부분들에 대응할 수 있다. 일부 구현들에서, 클라이언트 디바이스 상에 파일의 콘텐츠를 디스플레이하기 위한 애플리케이션이 클라이언트 디바이스 상에 설치되고, 애플리케이션은 파일의 선택된 하나 또는 그 초과의 부분들을 디스플레이하는 것을 지원하도록 수정되지 않는다.
[0008] 일부 구현들에서, 시스템은, 파일의 식별된 적어도 하나의 부분이 클라이언트 디바이스 상에 저장되기 전에, 파일의 식별된 적어도 하나의 부분을 암호화하기 위한 수단을 더 포함한다. 암호화하기 위한 수단은 제 1 키 및 제 1 초기화 벡터를 사용하며, 여기서, 클라이언트 디바이스 상에 저장된 파일의 다른 부분을 암호화하기 위해, 제 1 키, 및 제 1 초기화 벡터와 상이한 제 2 초기화 벡터가 사용된다. 시스템은, 제 1 초기화 벡터 및 제 2 초기화 벡터를 메타파일에 저장하기 위한 수단을 더 포함할 수 있으며, 여기서, 메타파일의 각각의 엔트리는, 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자, 및 선택된 하나 또는 그 초과의 부분들 각각이 클라이언트 디바이스 상에 저장된지 여부의 표시를 포함한다.
[0009] 일부 구현들에서, 시스템은, 네트워크의 연결 스피드, 파일의 타입, 및 클라이언트 디바이스의 사용자에 의해 요청될 것으로 예측되는 파일 내의 데이터의 양 중 적어도 하나에 기반하여 파일의 하나 또는 그 초과의 부분들의 사이즈를 결정하기 위한 수단을 더 포함한다.
[0010] 본 개시내용의 성질 및 본 개시내용의 다양한 장점들을 비롯하여 본 개시내용의 위의 특징들 및 다른 특징들은, 첨부된 도면들과 함께 취해진 다음의 상세한 설명을 고려할 때 더 명백해질 것이다.
[0011] 도 1은 예시적인 실시예에 따른, 클라이언트 디바이스 상의 파일의 부분들에 액세스하기 위한 컴퓨터화된 시스템의 블록도이다.
[0012] 도 2는 예시적인 실시예에 따른, 파일들의 부분들을 추적하고 그리고 각각의 부분이 클라이언트 디바이스 상에 로컬로 캐싱되었는지 여부의 표시를 저장하는 데이터베이스 구조의 다이어그램이다.
[0013] 도 3은 예시적인 실시예에 따른, 판독 요청에 대한 응답으로 파일의 하나 또는 그 초과의 부분들을 제공하기 위한 예시적인 방법의 흐름도이다.
[0014] 도 4는 예시적인 실시예에 따른, 기록 요청에 대한 응답으로 파일의 하나 또는 그 초과의 부분들을 제공하기 위한 예시적인 방법의 흐름도이다.
[0015] 도 5는 예시적인 실시예에 따른, 클라이언트 디바이스 상의 파일의 부분들에 액세스하기 위한 예시적인 방법의 흐름도이다.
[0016] 도 6은 예시적인 실시예에 따른, 본원에서 설명되는 프로세스들 중 임의의 프로세스를 수행하기 위한 컴퓨팅 디바이스의 블록도이다.
[0017] 본 개시내용의 전반적인 이해를 제공하기 위해, 웹-기반 저장 시스템에서의 파일 콘텐츠 저장 및 리트리벌을 제공하기 위한 시스템을 포함하는 소정의 예시적인 실시예들이 이제 설명될 것이다. 특히, 데이터의 효율적인 다운로딩 및 사용을 허용하는 방법이 설명된다. 예컨대, 본원에서 설명되는 방법들은, 클라이언트 디바이스에서의 사용자가 파일 그 전체를 클라이언트 디바이스에 다운로딩할 필요없이 파일의 부분을 뷰잉 및 선택적으로 수정하는 것을 허용할 수 있다. 이것은 다양한 계산 리소스들, 예컨대, 파일의 데이터의 다운로딩을 위해 요구되는 대역폭, 클라이언트 디바이스에서의 저장 요건들, 및 파일이 클라이언트 디바이스에서 수정되는 이벤트에서, 웹-기반 저장 시스템에 수정들을 업로딩하기 위해 요구되는 대역폭 중 하나 또는 그 초과의 사용을 감소시킬 수 있다. 그러나, 본원에서 설명되는 시스템들 및 방법들이, 어드레싱되는 애플리케이션에 대해 적절한 바와 같이 적응 및 수정될 수 있고, 본원에서 설명되는 시스템들 및 방법들이, 다른 적절한 애플리케이션들에서 이용될 수 있으며, 그리고 그러한 다른 부가들 및 수정들이 그 범위로부터 벗어나지 않을 것임이 당업자에 의해 이해될 것이다. 일반적으로, 본원에서 설명되는 컴퓨터화된 시스템들은, 프로세싱 디바이스 또는 디바이스들, 이를테면 컴퓨터, 마이크로프로세서, 로직 디바이스 또는 본원에서 설명되는 컴퓨터화된 방법들 중 하나 또는 그 초과를 수행하도록 하드웨어, 펌웨어, 및 소프트웨어로 구성되는 다른 디바이스 또는 프로세서를 포함하는 하나 또는 그 초과의 엔진들을 포함할 수 있다.
[0018] 본 개시내용은 클라우드 저장 시스템으로부터 파일들을 저장 및 리트리브하기 위한 시스템들 및 방법들을 제공한다. 본원에 설명된 시스템들 및 방법들은 기존 웹-기반 파일 업로드 시스템들과 연관된 많은 기술적 어려움들을 극복하고 사용자 데이터를 저장 및 공유하기 위하여 네트워크를 통하여 다른 시스템들과 통신할 수 있는 웹-기반 저장 시스템 측면에서 설명된다. 일반적으로, 당업자는, 본원에 설명된 시스템들 및 방법들이 본원의 범위에서 벗어남이 없이 로컬적으로 상호연결된 시스템들에 적용가능하다는 것을 이해할 것이다.
[0019] 도 1은 본원의 시스템들 및 방법들을 구현하기 위하여 사용될 수 있는 네트워크 및 데이터베이스 구조의 예를 묘사한다. 도 1은 클라우드 저장 시스템 상에 저장된 데이터가 클라이언트 디바이스에 의해 액세스되는 것을 허용하기 위한 컴퓨터화된 시스템(100)의 블록 다이어그램이다. 시스템(100)은 네트워크(101)를 통하여 서로 통신하도록 구성된, 웹-기반 저장 시스템(110) 및 클라이언트 디바이스(102)를 포함한다. 웹-기반 저장 시스템(110)은 서버(112), 프로세서(114) 및 사용자 데이터 데이터베이스(116)를 포함하고, 그리고 클라이언트 디바이스(102)는 캐시(103), 메타파일(104), 디스플레이(105), 프로세서(106), 사용자 입력 디바이스(107), 및 네트워크 인터페이스(18)를 포함한다. 본원에 사용된 바와 같이, "프로세서"라는 용어는 하나 또는 그 초과의 컴퓨터들, 마이크로프로세서들, 로직 디바이스들, 서버들, 또는 본원에 설명된 컴퓨터화된 기법들 중 하나 또는 그 초과를 수행하기 위하여 하드웨어, 펌웨어 및 소프트웨어로 구성된 다른 디바이스들을 지칭한다. 프로세서들 및 프로세싱 디바이스들은 또한 현재 프로세싱되는 입력들, 출력들 및 데이터를 저장하기 위한 하나 또는 그 초과의 메모리 디바이스들을 포함할 수 있다. 도면을 복잡하게 하는 것을 회피하기 위하여 단지 하나의 웹-기반 저장 시스템(110) 및 하나의 클라이언트 디바이스(102)가 도 1에 도시된다. 일반적으로, 시스템(100)은 다수의 웹-기반 저장 시스템들 및 임의의 수의 클라이언트 디바이스들(102)을 지원할 수 있다.
[0020] 웹-기반 저장 시스템(110)은 사용자들이 데이터를 저장, 리트리브 및 수정하는 것을 허용하는 파일 호스팅 시스템이다. 이 데이터는 사용자의 웹 데이터로 지칭될 수 있고, 사용자의 웹 데이터는 사용자 데이터 데이터베이스(116)에 저장된다. 서버(112), 프로세서(114) 또는 둘 모두는 사용자 데이터 데이터베이스(116)를 유지하는 것에 관련된 기능들, 이를테면 데이터에 대한 메모리 배정, 데이터베이스에 저장될 새로운 데이터 수신, 데이터베이스 내 데이터 삭제, 얼마나 많은 저장 공간이 데이터베이스에서 이용가능하지의 표시들 제공, 또는 데이터베이스 유지관리에 관련된 임의의 다른 적절한 기능을 수행할 수 있다. 웹-기반 저장 시스템(110)은 단일 서버 시스템 상에 또는 분산된 시스템에 저장될 수 있다. 특히, 웹-기반 저장 시스템(110)은 사용자 데이터를 저장하기 위하여 클라우드 저장부를 사용할 수 있다.
[0021] 웹-기반 저장 시스템(110) 상에 저장된 파일들은 클 수 있다. 예컨대, 파일들은 비디오 콘텐츠, 레코드를 계속 유지하기 위한 큰 데이터베이스 구조들, 또는 임의의 다른 적절한 타입의 큰 파일을 포함할 수 있다. 네트워크(101)에 느린 연결(예컨대, 느린-인터넷 연결)이 존재할 때, 파일을 다운로딩하기 위하여 오랜 시간이 걸릴 수 있다. 파일이 클라이언트 디바이스를 동작시키는 사용자에게 제공되기 전에 큰 파일이 다운로딩될 때까지 대기하는 것은 일반적으로 바람직하지 않을 수 있다. 이 경우에, 파일은 다수의 부분들, 또는 청크(chunk)들로 분할될 수 있고, 단지 관련된 부분들만이 클라이언트 디바이스에 다운로딩될 수 있다. 그런 예들에서, 각각의 부분은 파일 데이터의 적당한 서브세트를 포함할 수 있거나 또는 바꿔말하면, 각각의 부분은 파일 데이터의 전부가 아닌 일부를 포함할 수 있다. 파일의 부분들은 예컨대 고정된 수의 바이트들을 포함할 수 있고, 동일한 사이즈 또는 상이한 사이즈들을 가질 수 있다.
[0022] 클라이언트 디바이스(102)는 웹-기반 저장 시스템(110) 상에 저장된 큰 파일의 일부에 액세스하도록 요청할 수 있다. 예컨대, 파일이 비디오 파일일 때, 파일의 비디오 콘텐츠가 사용자에게 제공될 수 있기 전에 전체 파일이 클라이언트 디바이스(102) 상의 캐시(103)에 다운로딩될 때까지 대기하는 것은 바람직하지 않을 수 있다. 이 경우에, 비디오 파일은 다수의 부분들로 분할될 수 있고, 관련된 부분 또는 부분들만이 클라이언트 디바이스(102)에 다운로딩된다. 본원에 설명된 예들의 일부가 큰 비디오 파일들에 관련되지만, 본 개시내용은 비디오 파일들로 제한되지 않고, 또한 오디오 콘텐츠, 텍스트 콘텐츠, 이미지 콘텐츠, 데이터베이스 콘텐츠 또는 임의의 다른 적절한 타입의 파일 콘텐츠를 포함하는 파일들을 비롯하여, 오일러(oilier) 타입들의 파일들에 또한 적용가능하다.
[0023] 도 1에 도시된 바와 같이, 클라이언트 디바이스(102)는 캐시(103), 메타파일(104), 디스플레이(105), 프로세서(106), 사용자 입력 디바이스(107), 및 네트워크 인터페이스(108)를 포함한다. 사용자 입력 디바이스(107)는 사용자가 파일들과 인터랙팅하게 허용한다. 예컨대, 사용자 입력 디바이스(107)는 사용자가 사용자 데이터 데이터베이스(116) 상에 저장된 파일을 선택함으로써 사용자 입력을 제공할 수 있도록 키보드, 마우스, 또는 터치 스크린을 포함할 수 있다. 사용자 입력은 선택된 파일을 판독하거나 또는 선택된 파일을 수정하도록 하는 사용자로부터의 요청을 표시할 수 있다.
[0024] 파일은 사용자 데이터 데이터베이스(116)에서의 클라우드 저장소에 저장되지만, 파일의 일부 또는 전체 파일이 또한, 클라이언트 디바이스(102) 상의 캐시(103)에 로컬로 저장될 수 있다. 파일이 캐시(103)에 이미 저장된 경우에, 클라이언트 디바이스(102)가 웹-기반 저장 시스템(110)으로부터 파일을 다운로딩할 필요가 없다. 이 경우에, 파일은 디스플레이(105)에 걸쳐 파일의 콘텐츠의 뷰를 제공하는 애플리케이션을 여는 것에 의해 사용자에게 직접적으로 제공될 수 있다. 그렇지 않으면, 클라이언트 디바이스(102)는 클라이언트 디바이스(102)에 파일의 콘텐츠를 전달하도록 웹-기반 저장 시스템(110)에 요청을 송신한다. 일 예에서, 캐시(103)는 파일의 임의의 부분을 저장하지 않을 수 있다. 이 경우에, 요청은 파일의 어떤 부분들이 캐시(103)에 다운로딩되도록 요청되는지, 또는 전체 파일이 캐시(103)에 다운로딩되어야 하는지 여부의 표시를 포함할 수 있다. 다른 예에서, 캐시(103)는 파일의 부분들의 서브세트를 이미 저장할 수 있다. 이 경우에, 요청된 부분들이 이미 로컬로 캐싱된 경우에, 클라이언트 디바이스(102)가 요청된 부분들을 다운로딩할 필요가 없을 수 있다. 대안적으로, 요청된 부분들 중 어떠한 부분도 이미 로컬로 캐싱되지 않은 경우에, 웹-기반 저장 시스템(110)은 요청된 부분들을 클라이언트 디바이스(102)에 송신할 수 있다.
[0025] 요청된 부분들의 일부가 로컬로 캐싱된 경우에, 웹-기반 저장 시스템(110)은 이미 로컬로 캐싱되지 않은 요청된 부분들을 클라이언트 디바이스(102)에 송신할 수 있다. 예컨대, 로컬로 캐싱된 부분들은 클라이언트 디바이스(102) 상에서 이미 뷰잉 및/또는 캐싱되었던 비디오 파일의 부분들에 대응할 수 있다. 클라이언트 디바이스(102)가 비디오 파일을 스트리밍하는 것이 바람직할 수 있다. 스트리밍을 가능하게 하기 위해, 클라이언트 디바이스(102)는, 사용자가 비디오 파일의 이들 나중의 부분들을 뷰잉하기를 원할 수 있는 것을 예상하여, 아직 뷰잉되지 않은 비디오 파일의 일부 나중의 부분들을 로컬로 저장할 수 있다. 이 경우에, 클라이언트 디바이스(102)는 사전에 다운로딩된 부분들이 플레이되고 있는 동안에 나중의 부분들을 다운로딩하도록 요청할 수 있다. 이어서, 이들 요청된 나중의 부분들은 클라이언트 디바이스(102)에 송신될 수 있고, 뷰잉할 준비가 될 때까지 캐시(103)에 저장될 수 있다.
[0026] 위의 예에서, 파일은 비디오 콘텐츠를 포함하는 것으로 설명된다. 일반적으로, 파일은 다른 콘텐츠를 포함할 수 있다. 예컨대, 파일은 텍스트 및/또는 그래픽 또는 그림 콘텐츠를 포함하는 문서 파일일 수 있다. 이 경우에, 파일은 순차적으로 순서화될 수 있는 부분들로 분할될 수 있다. 예에서, 사용자는 디스플레이(105)에 걸쳐 파일의 특정 부분을 뷰잉할 수 있다. 특정 부분은 캐시(103)에 로컬로 저장될 수 있지만, 파일의 다른 부분들이 웹-기반 저장 시스템(110)에 저장될 수 있고, 로컬로 캐싱되지 않을 수 있다. 사용자가 디스플레이(105)에 걸쳐 파일의 특정 부분을 뷰잉하므로, 시스템(100)은 특정 부분에 인접한 선행 부분 및 후행 부분을 식별할 수 있다. 선행 부분 및/또는 후행 부분은, 사용자가 이들 부분들 중 하나로 스크롤할 수 있는 것을 예상하여, 특정 부분이 뷰잉되고 있는 동안에 캐시(103)에 다운로딩될 수 있다. 유사하게, 시스템(100)은 파일의 일부 부분들이 파일의 다른 부분들보다 더 뷰잉될 가능성이 있는 콘텐츠를 포함하는 것으로 결정할 수 있고, 그러한 부분들에 상대적인 우선순위들을 할당할 수 있다. 예컨대, 텍스트 콘텐츠는 그림 콘텐츠보다 더 뷰잉 및 편집될 가능성이 있을 수 있고, 그에 따라, 텍스트 콘텐츠를 포함하는 부분들은 그림 콘텐츠를 포함하는 부분들에 비해 다운로딩에 대해 우선순위화될 수 있다.
[0027] 일부 실시예들에서, 뷰잉(그리고 따라서 우선순위화)될 가능성이 더 높을 수 있는 파일의 부분들은 뷰잉 거동의 히스토리컬 패턴에 기반하여 식별될 수 있다. 일 예에서, 사용자가 뷰잉한 최근의 버전 이래로 최근에 업데이트팅되었거나 심하게 편집된 콘텐츠는 다른 부분들에 비해 우선순위화될 수 있다. 다른 예에서, 사용자가 문서를 통해 특정 방향으로(예컨대, 예를 들면, 최상부로부터 최하부로 또는 최상부로부터 최상부로) 스크롤한다고 시스템(100)이 검출하면, 파일의 부분들은 그 방향에 따라 우선순위화될 수 있어서, 나중 시간에 디스플레이될 것으로 예측된 부분들 전에, 더 일찍 디스플레이되는 것으로 예측되는 부분들이 다운로딩된다.
[0028] 일반적으로, 파일은, 텍스트 및/또는 그림 콘텐츠를 포함하는 비디오 파일들 또는 문서들에 제약되지 않는다. 파일은 다수의 부분들로 분리되기에 적절한 임의의 타입의 파일일 수 있다. 일부 실시예들에서, 파일은 소정의 데이터의 레코드들을 유지하는 데이터베이스 구조이다. 일 예에서, 파일은 레코드들의 리스트, 이를테면, 학교에 등록된 학생들의 리스트일 수 있다. 리스트 내의 각각의 레코드는 학생에 대응하는 데이터, 이를테면, 학생의 이름, 이메일 어드레스, 홈 어드레스, 학생 식별 번호, 긴급상황 접촉 정보, 등록된 학급들, 성적 증명서, 수업료 청구 상태, 또는 학생에 관련된 임의의 다른 적절한 데이터를 포함할 수 있다. 이러한 경우에, 파일은 웹-기반 저장 시스템(110) 상에 저장된 큰 파일일 수 있다. 클라이언트 디바이스(102)에 있는 사용자, 이를테면, 학교 관리자는 파일의 선택된 부분, 이를테면, 특정 학생과 연관된 데이터 레코드를 포함하는 파일의 부분만을 보기를 원할 수 있다. 이러한 경우에, 네트워크(101)를 통해 전체 파일을 다운로딩하는 것 ―이는 오랜 시간이 걸릴 수 있음― 보다는, 파일의 선택된 부분만이 웹-기반 저장 시스템(110)으로부터 클라이언트 디바이스(102)로 다운로딩될 수 있다. 관련된 부분이 클라이언트 디바이스(102)로 다운로딩된 후에, 사용자는 클라이언트 디바이스(102) 상의 선택된 학생의 데이터 레코드에 대해 수정을 할 수 있고, 이어서 클라이언트 디바이스(102)는 파일의 수정된 부분을 웹-기반 저장 시스템(110)으로 업로딩할 수 있다. 이러한 경우에, 파일은 소정 수의 레코드들을 저장하도록 적절히 사이즈가 정해진 부분들로 분리될 수 있다. 예컨대, 각각의 부분은 정수의 학생들, 이를테면, 단일 학생 또는 다수의 학생들에 대응할 수 있다.
[0029] 일부 실시예들에서, 파일의 부분들의 사이즈들은 최적의 방식으로 선택된다. 특히, 부분들의 사이즈들은 네트워크 연결 스피드 및 파일에 대한 예측된 사용 애플리케이션을 고려하여 결정되어야 한다. 너무 크게 사이즈가 정해진 부분들을 사용하는 것이 바람직하지 않을 수 있는데, 왜냐하면 큰 부분들은 더 작은 부분들보다 네트워크(101)를 통해 송신하기에 더 오래 걸리기 때문이다. 또한, 클라이언트 디바이스(102)에 대해 실제로 원하는 콘텐츠의 양이 단지 큰 부분의 작은 부분에 대응하면, 큰 부분들이 바람직하지 않을 수 있다. 예컨대, 파일이 학교에 등록된 학생들을 지속적으로 추적하는 데이터베이스 구조인 위의 예에서, 매우 많은 수의 학생들을 포함하도록 사이즈가 정해진 파일의 부분들을 사용하는 것이 바람직하지 않을 수 있다. 특히, 클라이언트 디바이스(102)의 사용자가 한번에 하나의 학생에 대응하는 기록들을 보고 수정하는 것이 바람직할 수 있어서, 단일 학생 레코드들을 포함하도록 사이즈가 정해진 부분들이 적절할 수 있다. 학교에 등록된 학생들에 관련된 데이터를 저장하는 파일에 관련된 본원에 설명된 예가 단지 예시적 목적들로 설명되고, 일반적으로, 본 개시내용의 시스템들 및 방법들이 데이터를 유지하는 임의의 타입의 레코드에 관련된 데이터를 저장하는 파일들에 적용 가능하다는 것이 이해될 것이다.
[0030] 작은 부분들이 파일의 부분을 다운로딩하기 위한 클라이언트 디바이스(102)로부터의 임의의 요청이 다수의 부분들의 다운로딩을 수반할 정도로 작다면, 파일을 매우 많은 수의 작은 부분들로 분리하는 것이 또한 바람직하지 않을 수 있다. 위에서 설명된 예에서, 학생의 레코드를 보거나 수정하기 위한 임의의 요청이 다수의 부분들의 다운로딩 및 저장을 요구할 수 있기 때문에, 부분들이 학생 레코드의 프랙션을 포함하도록 사이즈가 정해지는 것이 바람직하지 않을 수 있다.
[0031] 애플리케이션에 따라, 사용자가 클라이언트 디바이스(102)에서 한번에 다수의 학생들에 대응하는 레코드들을 뷰잉 및 수정하는 것이 바람직할 수 있다. 예컨대, 사용자는 특정 학급으로부터의 모든 학생들 또는 하나 또는 그 초과의 기준을 만족시키는 학생들, 이를테면, 특정 학년의 모든 학생들, 졸업하는 학생들, 클럽 또는 조직에 소속된 학생들, 수업료가 미납된 학생들, 또는 임의의 다른 적절한 카테고리의 레코드들을 뷰잉하기를 원할 수 있다. 이 경우, (하나 또는 그 초과의 기준을 만족시키는) 관련된 학생 레코드들이 부분에 번들링되어 클라이언트 디바이스(102)에 다운로딩되는 온-더-플라이 접근법(on-the-fly approach)으로 부분들이 생성될 수 있다. 이 경우, 부분들 및 부분들의 사이즈들은 미리 결정되는 것이 아니라, 오히려 필요에 따라 동적으로 결정된다.
[0032] 본원에서 설명되는 바와 같이, 본 개시내용의 시스템들 및 방법들은, 사용자가 클라이언트 디바이스(102)에서 파일 그 전체를 클라이언트 디바이스(102)에 다운로딩해야 함이 없이, 파일의 부분을 뷰잉하고 선택적으로 수정하도록 허용한다. 본 개시내용은, 클라이언트 디바이스(102)가 웹-기반 저장 시스템(110)으로부터 파일의 관련된 부분들만을 다운로딩하도록 허용하여서, 사용자는 필요에 따라 특정 부분들을 뷰잉하고 선택적으로 수정할 수 있다.
[0033] 일부 실시예들에서, 본 개시내용의 시스템들 및 방법들은, 클라이언트 디바이스(102)의 사용자에게 가시적이지 않은 방식으로 동작한다. 특히, 사용자는, 클라이언트 디바이스(102)가 한번에 파일의 부분들을 다운로딩하기 위해, 설명된 방식으로 웹-기반 저장 시스템(110)과 통신한다는 것을 인지하지 못할 수 있다. 더욱이, 파일의 다양한 부분들을 열고, 디스플레이하고, 수정하기 위해 클라이언트 디바이스(102)에 의해 실행되는 소프트웨어 애플리케이션들은 또한, 파일 그 전체 대신에, 파일의 부분들만이 클라이언트 디바이스(102) 상에 캐싱된다는 것을 인지하지 못할 수 있다. 비디오 스트리밍 애플리케이션들과 대조적으로, 본 개시내용에 따른 클라이언트 디바이스(102) 상의 애플리케이션은, 한번에 파일의 부분들의 열고 뷰잉을 핸들링하도록 특별히 갖출 필요가 없을 수 있다.
[0034] 이 경우, 본 개시내용의 시스템들 및 방법들은 클라이언트 디바이스(102) 상에서 백그라운드로 동작한다. 예에서, 사용자는 클라이언트 디바이스(102) 상의 소프트웨어 애플리케이션을 사용하여 20 MB(megabytes)의 사이즈를 갖는 문서를 열고 스크롤한다. 문서는, 10개의 부분들로 분할되는, 웹-기반 저장 시스템에 저장된 파일에 대응하며, 각각의 부분은 2 MB의 사이즈를 갖는다. 사용자가 처음 10 MB에 걸쳐 스크롤하는 동안, 소프트웨어 애플리케이션은 11번째 MB 내지 15번째 MB를 요청할 수 있다. 클라이언트 디바이스(105)는 데이터베이스 구조(이를테면, 예컨대, 도 2와 관련하여 상세하게 도시되고 설명된 데이터베이스 구조)를 질의하여, 11번째 MB 내지 15번째 MB가 부분들 6, 7, 및 8에 대응한다는 것을 결정할 수 있다. 문서의 요청된 메가바이트들을 파일의 부분들에 맵핑 시에, 클라이언트 디바이스(102)는 부분들 6, 7, 및 8을 다운로딩하기 위한 요청을 웹-기반 저장 시스템(110)에 송신한다.
[0035] 일부 실시예들에서, 파일의 부분들은 캐시(103)에 저장되기 전에 암호화되고, 클라이언트 디바이스(102)의 사용자에게 제공되기 전에 암호해독된다. 예에서, 캐시(103)에서 부분들을 암호화하기 위해 AES(Advanced Encryption Standard)가 사용되지만, 일반적으로 임의의 적절한 암호화 방법이 사용될 수 있다. 적어도 웹-기반 저장 시스템(110)으로부터 클라이언트 디바이스(102)로 다운로딩되는 데이터를 암호화하는 것이 바람직할 수 있는데, 왜냐하면, 그렇게 하는 것은 사용자들로 하여금 자신들의 파일들을 웹-기반 저장 시스템(110)과 같은 클라우드 시스템에 저장하도록 격려할 수 있기 때문이다. 예컨대, 사용자가 자신의 클라이언트 디바이스(102)를 분실하는 경우, 클라이언트 디바이스(102)에 액세스하는 다른 사람은 캐시(103)에 저장된 데이터에 액세스할 수 없을 수 있는데, 왜냐하면, 캐시(103)에 저장된 데이터가 암호화되기 때문이다.
[0036] 캐시(103)에 저장된 부분들을 암호화하는 데 사용되는 암호화 방법은, 전체 파일에 대해 동일한 키를 사용하지만 파일의 각각의 부분에 대해 상이한 초기화 벡터들을 갖는 것을 수반할 수 있다. 상이한 초기화 벡터들은 메타파일(104), 또는 데이터베이스 구조, 이를테면, 도 2와 관련하여 설명된 데이터베이스 구조(200)에 저장될 수 있다. 파일의 부분들을 암호해독하기 위해, 암호해독 프로세스는, 부분의 시작으로부터 클라이언트 디바이스(102) 상에서 뷰잉되거나 수정되도록 요청된 부분의 마지막 바이트까지 수행될 수 있다. 도 1에 도시된 바와 같이, 메타파일(104)은 클라이언트 디바이스 상에 저장되지만, 메타파일(104)은 웹-기반 저장 시스템(110) 또는 네트워크(101)에 액세스하는 임의의 다른 디바이스 상에 저장될 수 있다. 일부 실시예들에서, 메타파일은 클라이언트 디바이스의 사용자가 액세스가능하지 않다.
[0037] 프로세서(106)는 클라이언트 디바이스(102)에 의해 수행될 때 본원에서 설명된 기능들 중 임의의 기능을 수행하도록 구성될 수 있다. 특히, 프로세서(106)는, 클라이언트 디바이스(102)로 다운로딩하기 위한 하나 또는 그 초과의 부분들을 선택하고, 클라이언트 디바이스 상에 저장되지 않는 적어도 하나의 부분을 선택된 하나 또는 그 초과의 부분들에서 식별하고, 식별된 부분을 다운로딩하기 위한 요청을 웹-기반 저장 시스템(110)에 송신하며, 그리고 식별된 부분을 다운로딩할 수 있다. 게다가, 프로세서(114)는 웹-기반 저장 시스템(110)에 의해 수행될 때 본원에서 설명된 기능들 중 임의의 기능을 수행하도록 구성될 수 있다. 부가적으로 또는 대안적으로, 프로세서(106)에 의해 실행될 때 본원에서 설명된 기능들 중 임의의 기능은 프로세서(114)에 의해 수행될 수 있고, 그 역도 가능하다. 예컨대, 본 개시내용의 대부분은 클라이언트 디바이스(102) 상에 저장되는 바와 같은 메타파일(104)을 설명한다. 대안적으로, 메타파일(104)은 본 개시내용의 범위를 벗어나지 않으면서 웹-기반 저장소 상에 저장될 수 있다.
[0038] 도 2는 파일들의 세트, 이를테면 클라이언트 디바이스(102)의 하나 또는 그 초과의 사용자들과 연관된 파일들의 세트의 부분들을 추적하는 예시적인 데이터베이스 구조(200)를 도시한다. 데이터 구조(200)는 도 1과 관련하여 도시되고 설명된 메타파일(104)에 저장되는 데이터에 대응할 수 있다. 데이터베이스 구조(200)에 도시된 데이터는, 클라이언트 디바이스(102) 상의 로컬로 메타파일(104)에, 웹-기반 저장 시스템(110)에, 또는 네트워크(101)로의 액세스를 갖는 다른 시스템에 저장될 수 있다. 도 2에 도시된 데이터베이스 구조(200)는 본질적으로, 파일 내에서 부분들 및 그들의 위치들을 식별하기 위해 사용될 수 있는 맵이다. 특히, 데이터베이스 구조(200)의 각각의 엔트리는 데이터베이스 구조(200)의 행에 도시되며, 파일의 부분에 대응한다. 각각의 엔트리는, 파일 식별자, 부분 식별자, 시작 포인트, 종료 포인트, 부분이 로컬 캐시, 이를테면 클라이언트 디바이스(102) 상의 캐시(103)에 저장되는지 여부를 표시하는 플래그 표시자, 및 부분이 마지막으로 수정되었던 시간에 대응하는 타임 스탬프를 포함한다. 각각의 시작 포인트 및 종료 포인트 쌍은, 파일 내의 부분의 시작 경계 및 종료 경계의 파일 내의 위치들을 각각 표시한다.
[0039] 도 2에 도시된 바와 같이, 파일 식별자(154)에 의해 식별된 파일은, 부분 식별자들 1, 2, 3, 및 4를 갖는 4개의 부분들로 분할된다. 파일(154)의 각각의 부분은 데이터의 50개의 데이터 유닛들과 동일한 사이즈를 가지며, 여기서, 각각의 유닛은 데이터 비트들 또는 바이트들의 수를 지칭할 수 있다. 게다가, 파일(154)의 4개의 부분들 각각은 캐시(103) 상에 로컬로 저장된다. 파일(154)의 각각의 부분이 캐시(103)에 저장되기 때문에, 사용자가 클라이언트 디바이스(102)를 통해 파일(154)의 임의의 부분에 액세스하기를 원한다면, 시스템(100)은 파일(154)의 모든 부분들이 캐시(103) 상에 이미 저장되었다고 결정하기 위해 데이터 구조(200)를 사용하며, 어떠한 부분들도 네트워크(101)를 통해 송신될 필요가 없다.
[0040] 다른 예로서, 데이터 구조(200)는 7개의 부분들로 분할된 파일(931)을 도시하며, 각각의 부분은 100개의 데이터 유닛들의 사이즈를 갖는다. 파일(154)과는 대조적으로, 파일(931)의 부분들 중 어떤 것도 캐시(103) 상에 로컬로 저장되지 않는다. 이러한 경우에서, 클라이언트 디바이스(102)가 파일(931)(또는 그의 일부)에 액세스하기 위한 요청을 식별하는 경우, 시스템(100)은, 파일(931)의 부분들 중 어떤 것도 클라이언트 디바이스(102) 상에 로컬로 저장되지 않았다고 결정하기 위해 데이터 구조(200)를 사용한다. 이러한 결정에 대한 응답으로, 웹-기반 저장 시스템(100)은, 사용자에게 제공하기 위해, 원하는 부분들을 네트워크(101)를 통해 클라이언트 디바이스(102)에 송신한다.
[0041] 다른 예로서, 데이터 구조(200)는 5개의 부분들로 분할된 파일(287)을 도시하며, 각각의 부분은 100개의 데이터 유닛들의 사이즈를 갖는다. 이 5개의 부분들 중 2개(부분들 1 및 2)는 캐시(103)에 로컬로 저장되는 반면, 파일(287)의 나머지 3개의 부분들(부분들 3, 4, 및 5)은 캐시(103)에 저장되지 않는다. 이러한 경우에서, 부분들 1 또는 2 중 하나가 클라이언트 디바이스(102)에 의해 요청되면, 이 부분들이 이미 로컬로 캐싱되었기 때문에, 웹-기반 저장 시스템(100)이 네트워크(101)를 통해 이 부분들을 클라이언트 디바이스(102)에 송신할 필요가 없다. 대조적으로, 부분들 3, 4, 또는 5 중 하나가 클라이언트 디바이스(102)에 의해 요청되면, 웹-기반 저장 시스템(100)은 요청된 하나 또는 그 초과의 부분들을 클라이언트 디바이스(102)에 송신한다.
[0042] 도 2에 도시된 바와 같이, 다양한 파일들의 부분들은 서로 중첩하지 않는다. 그러나, 부분들은 본 개시내용의 범위에서 벗어나지 않고 서로 중첩할 수도 있음이 이해될 것이다. 게다가, 데이터 구조(200)는, 각각의 파일이 동일하게 사이즈가 정해진 부분들로 분할되는 파일을 도시하지만, 부분들의 사이즈들은 다른 파일들마다 상이할 수 있다. 일반적으로, 부분들은 모두 상이한 파일들에 대해 동일한 사이즈일 수 있거나, 또는 상이한 사이즈의 부분들이 동일한 파일에 대해 사용될 수 있다. 일부 실시예들에서, 부분들이 동일한 사이즈인 경우, 맵은 종점들을 갖지 않는 시작점들, 시작점들을 갖지 않는 종점들, 또는 그 부분의 중심점과 같은 다른 점을 포함할 수 있다.
[0043] 데이터베이스 구조(200)에 도시된 엔트리들은 오직 예시적인 목적을 위해서만 도시되며, 본원에 설명된 맵에서의 엔트리들은 도시된 필드들의 서브세트를 포함할 수 있고 그리고/또는 도시되지 않은 다른 필드들, 이를테면, 파일(또는 부분)이 생성되었거나 또는 마지막으로 액세스되었을 때에 해당하는 타임 스탬프, 타일 파일 부분의 파일 또는 콘텐츠의 유형, 및 파일에 대한 부분들의 수를 포함할 수 있다.
[0044] 도 2에 도시된 바와 같이, 파일의 부분들은 특정 파일에 대해 고정된 사이즈들을 가지며, 상이한 파일들은 상이한 사이즈의 파일 부분들을 가질 수 있다. 일반적으로, 파일 부분들의 사이즈들은 상이한 파일들에 걸쳐 그리고 심지어는 동일한 파일 내에서도 동일하거나 또는 상이할 수 있다. 특히, 파일 부분의 사이즈는, 네트워크(101)를 통한 접속 속도의 검출에 대한 응답으로 동적으로 결정될 수 있다. 예컨대, 부분들의 사이즈들은 인터넷 접속 속도에 기반하여 동적으로 결정될 수 있다. 특히, 인터넷 접속 속도가 느린 경우, 부분 사이즈는 인터넷 접속 속도가 빠를 때보다 더 작을 수 있다.
[0045] 부분들이 클라이언트 디바이스(102)에 다운로딩되거나 또는 클라이언트 디바이스(102)로부터 삭제됨에 따라, 메타파일(104)은 어떤 부분들이 캐시(103) 내에 저장되는지를 반영하도록 업데이트된다. 특히, 데이터베이스 구조(200)는 클라이언트 디바이스(102) 상에 어떤 부분들이 캐싱되는지 그리고 어떤 부분들이 캐싱되지 않는지에 대한 정확한 레코드를 유지하도록 업데이트된다.
[0046] 도 3은 클라이언트 디바이스(102)로부터의 판독 요청에 대한 응답으로 파일의 부분을 제공하기 위한 예시적인 방법(300)의 흐름도이다. 방법(300)은, 판독 요청을 수신하는 단계(단계 302), 판독 요청이 유효한지 여부를 결정하는 단계(결정 블록 304), 및 판독 요청 내 파일이 캐싱되는지 여부를 결정하는 단계(결정 블록 308)를 포함한다. 일 예에서, 요청이 부정확한 오프셋, 이를테면, 파일의 시작 이전에 또는 종료 이후에 발생하는 데이터에 대한 요청을 포함한다면, 판독 요청은 유효하지 않은 것으로 결정될 수 있다. 부가적인 예들에서, 판독 요청이 더 이상 존재하지 않거나 또는 삭제되었던 파일로부터의 데이터를 요청하는 경우, 클라이언트 디바이스(102)가 요청된 파일로부터의 판독을 허용하지 않는 경우, 요청이 특정 파일 대신에 폴더로부터의 데이터에 대한 것인 경우, 판독된 요청이 판독된 데이터를 놓을 위치를 제공하는데 실패하는 경우, 또는 이들의 임의의-적합한 조합인 경우, 판독 요청은 유효하지 않을 수 있다. 판독 요청이 유효하지 않은 경우, 요청은 단계(306)에서 거절된다. 파일이 캐싱되면, 이를테면, 캐시(103) 상에 국부적으로 저장되면, 단계(310)에서 파일은 클라이언트 디바이스(102)를 통해 사용자에게 제공된다. 그와 달리, 파일이 캐싱되지 않으면, 방법은 결정 블록(309)에서 파일의 요청된 부분이 캐싱되는지 여부를 결정한다. 만약 캐싱된다면, 파일의 요청된 부분이 단계(312)에서 다운로딩되고 캐싱되며, 다운로딩된 부분은 단계(314)에서 사용자에게 제공된다. 결정 블록(316)에서, 판독 요청은, 다운로딩되거나 또는 사용자에게 제공되지 않은 임의의 더 많은 부분들이 존재하는지 여부를 결정하도록 검사된다. 단계들(309, 311, 312, 및 314)은, 판독된 요청 내에서의 모든 부분들이 다운로딩되고 사용자에게 제공될 때까지 반복된다.
[0047] 결정 블록(308)에서, 파일이 캐싱되었는지 여부의 결정은 요청 내의 임의의 부분들을 식별하는 것을 수반할 수 있다. 일예로, 요청은 사이즈로 표시된 파일의 부분, 이를테면, 20 MB 파일 중 11번째 MB 내지 15번째 MB를 지칭할 수 있다. 그런 다음, 시스템(100)은, 데이터베이스 구조, 이를 테면, 데이터베이스 구조(200)를 맵으로서 사용하여 요청 내의 부분에 대응하는 적절한 부분 식별자들을 식별할 수 있다. 다른 예에서, 요청은 이미 적절한 부분 식별자들을 지칭할 수 있다. 결정 블록(309)에서, 시스템(100)은, 요청 내의 부분들 중 임의의 부분이 클라이언트 디바이스(102) 상에서 캐싱되었는지 여부를 결정할 수 있다. 단계(311)에서, 이미 캐싱된 임의의 부분들이 제공될 수 있는 반면, 단계 (312)에서, 캐싱되지 않은 부분들이 다운로딩되고, 단계 (314)에서, 사용자에게 제공될 수 있다.
[0048] 도 4는 클라이언트 디바이스(102)로부터의 기록 요청에 대한 응답으로 파일의 부분을 제공하기 위한 예시적인 방법(400)의 흐름도이다. 방법(400)은 기록 요청을 수신하는 단계(단계 402), 기록 요청이 유효한지 여부를 결정하는 단계(결정 블록 404), 및 기록 요청 내의 파일이 캐싱되었는지 여부를 결정하는 단계(결정 블록 408)를 포함한다. 도 3과 관련하여 위에서 설명된 바와 같이, 기록 요청은, 판독 요청이 유효하지 않을 수 있는 것과 동일한 이유들 중 임의의 것으로 인해 유효하지 않을 수 있다. 또한, 기록 요청이 미리결정된 한계보다 더 크면, 이는 무효일 수 있다. 기록 요청이 유효하지 않은 경우, 단계(406)에서 요청이 거절된다. 파일이 캐싱되는 경우, 이를 테면, 캐시(103) 상에 국부적으로 저장되는 경우, 단계(410)에서, 클라이언트 디바이스(102)를 통해 파일이 사용자에게 제공되고, 단계(411)에서, 파일의 수정된 부분들이 웹-기반 저장 시스템(110)에 업로딩된다. 그렇지 않고, 파일이 캐싱되지 않는 경우, 방법은, 결정 블록(409)에서, 파일의 요청된 부분이 캐싱되었는지 여부를 결정한다. 그렇지 않은 경우, 단계(412)에서, 파일의 요청된 부분이 다운로딩되고 캐싱되고, 단계(414)에서, 다운로딩된 부분이 사용자에게 제공된다. 그렇지 않고, 결정 블록(409)에서 결정된 바와 같이 파일의 요청된 부분이 이미 캐싱되었다면, 방법(400)은, 다운로딩된 부분을 사용자에게 제공하기 위해 직접 단계(414)로 진행한다. 결정 블록(416)에서, 사용자가, 제공된 부분을 수정했는지 여부가 결정된다. 수정했다면, 단계(418)에서, 수정된 부분이 업로딩된다. 수정하지 않았다면, 결정 블록(420)에서, 아직 다운로딩되지 않았거나 또는 사용자에 제공되지 않은 임의의 더 많은 부분들이 있는지를 결정하기 위해 판독 요청이 검사된다. 단계들(409, 412, 414, 416 및 418)은, 기록 요청 내의 모든 부분들이 다운로딩되고 사용자에 제공될 때까지 반복된다.
[0049] 도 5는 클라이언트 디바이스에서 파일의 부분들에 액세스하기 위한 예시적인 방법(500)의 흐름도이다. 방법(500)은 클라이언트 디바이스로 다운로딩할 파일의 하나 또는 그 초과의 부분들을 선택하는 단계 ―파일은 네트워크를 통해 클라이언트 디바이스와 통신하는 웹-기반 저장 시스템 상에 저장됨―(단계 502), 클라이언트 디바이스 상에 저장되어 있지 않은 선택된 하나 또는 그 초과의 부분들 중 적어도 하나의 부분을 식별하는 단계(504 단계), 사용자 인터랙션없이, 웹-기반 저장 시스템에 파일의 식별된 적어도 하나의 부분을 다운로딩하라는 요청을 송신하는 단계(단계 506), 및 파일의 다이 식별된 적어도 일 부분을 네트워크를 통해 클라이언트 디바이스에 다운로딩하는 단계(단계 508)를 포함한다.
[0050] 단계(502)에서, 파일의 하나 또는 그 초과의 부분들이 클라이언트 디바이스로 다운로딩하기 위해 선택되고, 파일은 네트워크를 통해 클라이언트 디바이스와 통신하여 웹-기반 저장 시스템에 저장된다. 일부 실시예들에서, 파일이 문서에 대응할 경우, 문서의 제 1 부분은 디스플레이(105)를 통해 클라이언트 디바이스(102)를 동작시키는 사용자에 제공될 수 있다. 파일의 선택된 하나 또는 그 초과의 부분들은, 제 1 부분에 인접한 문서의 제 2 부분 및 제 3 부분에 대응할 수 있다. 추가적으로 또는 대안으로, 파일의 선택된 하나 또는 그 초과의 부분들이 파일의 히스토리컬 뷰잉 패턴에 기반하여 결정될 수 있다. 예컨대, 사용자가 문서의 최상부에서 최하부 방향으로 스크롤하는 경우, 파일의 선택된 하나 또는 그 초과의 부분들은, 다음에 보여질 것으로 예상되는 그러한 부분들을 포함할 수 있다. 또한, 그 부분들에는, 스크롤의 방향에 기반하여 결정되는 우선순위 스코어들이 할당될 수 있다. 예컨대, 문서 내의 다른 부분들보다 우위로 발생하는 부분들에는 낮은 부분들보다 더 높은 우선순위 스코어가 할당될 수 있고, 더 높은 우선순위 스코어들을 갖는 부분들이 다른 부분들보다 앞서 다운로딩될 수 있다. 추가적으로 또는 대안으로, 파일의 선택된 하나 또는 그 초과의 부분들은 파일의 결정된 편집 활동에 기반하여 결정될 수 있다. 예컨대, 사용자가 아직 보지 않았지만 하나 또는 그 초과의 다른 사용자에 의해 크게 편집된 파일의 부분은 편집이 덜된 다른 부분들보다 앞의 우선순위가 매겨질 수 있다.
[0051] 일부 실시예들에서, 파일의 하나 또는 그 초과의 부분들의 사이즈는, 네트워크의 연결 스피드, 파일의 타입, 및 클라이언트 디바이스의 사용자에 의해 요청될 것으로 예측되는, 파일 내의 데이터의 양 중 적어도 하나에 기반하여 결정된다. 도 1과 관련하여 설명된 바와 같이, 더 느린 연결 스피드는, 네트워크(101)의 연결 스피드가 빠를 때보다 더 작은 부분들과 연관될 수 있다. 게다가, 레코드들, 이를테면 학교에 등록된 학생들을 추적하는 데이터베이스를 파일이 포함할 때, 파일은 특정 애플리케이션에 대해 적절하게 사이즈가 정해진 부분들로 분할될 수 있다. 예컨대, 부분들은, 단일 학생에 대한 레코드를 포함하도록 사이즈가 정해질 수 있다.
[0052] 단계(504)에서, 선택된 하나 또는 그 초과의 부분들에서 클라이언트 디바이스 상에 저장되지 않은 적어도 하나의 부분이 식별된다. 예컨대, 단계(502)에서 선택된 하나 또는 그 초과의 부분들이 메타파일, 이를테면 도 2와 관련하여 도시 및 설명된 데이터베이스 구조(200)의 엔트리들과 비교될 수 있다. 특히, 메타파일의 각각의 엔트리는 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자에 대한 레퍼런스를 포함할 수 있다. 메타파일의 각각의 엔트리는 선택된 하나 또는 그 초과의 부분들 각각이 클라이언트 디바이스 상에 저장되는지의 여부의 표시를 더 포함할 수 있다.
[0053] 단계(506)에서, 사용자 인터랙션 없이(또는 바꿔 말하면, 자율적으로), 파일의 식별된 적어도 하나의 부분을 다운로딩하기 위한 요청이 웹-기반 저장 시스템에 송신된다. 일부 실시예들에서, 클라이언트 디바이스 상에서 파일의 콘텐츠들을 디스플레이하기 위해 클라이언트 디바이스 상에 애플리케이션이 설치되며, 애플리케이션은, 파일의 선택된 하나 또는 그 초과의 부분들을 디스플레이하는 것을 수용하기 위해 수정되지 않는다. 특히, 파일이 그 전체가 로컬로 캐싱된 경우 파일을 열기 위해 사용되는 애플리케이션은, 파일 부분들을 열기 위해 사용될 수 있는 것과 동일한 애플리케이션이며, 파일의 부분들을 여는 것을 가능하게 하기 위해 애플리케이션에 어떤 변화들도 이루어질 필요가 없다. 일반적으로, 파일의 관련 부분이 초기에 캐싱되는지 또는 아닌지의 여부에 관계없이, 클라이언트 디바이스와 사용자의 정상적인 인터랙션을 변화시킬 어떤 필요도 없이, 본 개시내용의 시스템들 및 방법들은 사용자의 클라이언트 디바이스 상에 구현될 수 있다.
[0054] 단계(508)에서, 파일의 식별된 적어도 하나의 부분이 네트워크를 통해 클라이언트 디바이스에 다운로딩된다. 특히, 식별된 적어도 하나의 부분은 웹-기반 저장 시스템(110)에 의해 클라이언트 디바이스(102)에 송신된다. 송신된 부분이 클라이언트 디바이스(102) 상에 저장되기 전에, 송신된 부분은 암호화될 수 있다. 위에서 설명된 바와 같이, 암호화 방법은, 동일한 파일의 다른 부분들에 사용되는 것과 동일한 키 및 상이한 초기화 벡터를 사용하는 것을 포함할 수 있다. 게다가, 상이한 초기화 벡터들은 메타파일(104)에 저장되거나, 또는 데이터베이스 구조(200)에 필드 엔트리로서 저장될 수 있다.
[0055] 도 6은 본원에서 설명된 프로세스들 중 임의의 프로세스를 수행하기 위한 컴퓨팅 디바이스, 이를테면 도 1의 시스템의 컴포넌트들 중 임의의 컴포넌트의 블록 다이어그램이다. 이들 시스템들의 컴포넌트들 각각은 하나 또는 그 초과의 컴퓨팅 디바이스들(600) 상에 구현될 수 있다. 특정 양상들에서, 이들 시스템들의 복수의 컴포넌트들은 하나의 컴퓨팅 디바이스(600) 내에 포함될 수 있다. 특정 구현들에서, 컴포넌트 및 저장 디바이스는 몇몇 컴퓨팅 디바이스들(600)에 걸쳐 구현될 수 있다.
[0056] 컴퓨팅 디바이스(600)는 적어도 하나의 통신 인터페이스 유닛, 입력/출력 제어기(610), 시스템 메모리, 및 하나 또는 그 초과의 데이터 저장 디바이스들을 포함한다. 시스템 메모리는 적어도 하나의 RAM(random access memory)(602) 및 적어도 하나의 ROM(read-only memory)(1004)을 포함한다. 이들 엘리먼트들 전부는 컴퓨팅 디바이스(600)의 동작을 가능하게 하기 위해 CPU(central processing unit)(606)와 통신한다. 컴퓨팅 디바이스(600)는 많은 상이한 방식들로 구성될 수 있다. 예컨대, 컴퓨팅 디바이스(600)는 종래의 독립형 컴퓨터일 수 있거나, 또는 대안적으로 컴퓨팅 디바이스(600)의 기능들은 다수의 컴퓨터 시스템들 및 아키텍처들에 걸쳐 분산될 수 있다. 도 6에서, 컴퓨팅 디바이스(600)는, 네트워크 또는 로컬 네트워크를 통해, 다른 서버들 또는 시스템들에 링크된다.
[0057] 컴퓨팅 디바이스(600)는 데이터베이스 및 프로세서들이 별개의 유닛들 또는 위치들에 하우징되는 분산된 아키텍처로 구성될 수 있다. 일부 유닛들은 1차 프로세싱 기능들을 수행하고 최소한의 일반 제어기 또는 프로세서 및 시스템 메모리를 포함한다. 분산된 아키텍처 구현들에서, 이들 유닛들 각각은 통신 인터페이스 유닛(608)을 통해 다른 서버들, 클라이언트 또는 사용자 컴퓨터들 및 다른 관련된 디바이스들과의 1차 통신 링크로서 역할을 하는 통신 허브 또는 포트(도시되지 않음)에 어태치될 수 있다. 통신 허브 또는 포트는, 주로 통신 라우터로서 역할을 하도록 최소한의 프로세싱 능력들을 스스로 가질 수 있다. 이더넷, SAP, SAS™, ATP, BLUETOOTH™, GSM 및 TCP/IP를 포함(그러나 이것으로 제한되지 않음)하는 다양한 통신 프로토콜들이 시스템의 일부일 수 있다.
[0058] CPU(606)는 프로세서, 이를테면, 하나 또는 그 초과의 종래의 마이크로프로세서들 및 하나 또는 그 초과의 보조 코-프로세서들, 이를테면, CPU(606)로부터 작업부하를 오프로딩하기 위한 수학 코-프로세서를 포함한다. CPU(606)는 통신 인터페이스 유닛(608) 및 입력/출력 제어기(610)와 통신하며, 이를 통해 CPU(606)는 다른 디바이스들, 이를테면, 다른 서버들, 사용자 단말들 또는 디바이스들과 통신한다. 통신 인터페이스 유닛(608) 및 입력/출력 제어기(610)는 예컨대, 다른 프로세서들, 서버들 또는 클라이언트 단말들과의 동시성 통신을 위해 다수의 통신 채널들을 포함할 수 있다.
[0059] CPU(606)는 또한 데이터 저장 디바이스와 통신한다. 데이터 저장 디바이스는 자기, 광학 또는 반도체 메모리의 적절한 조합을 포함할 수 있고, 예컨대, RAM(602), ROM(604), 플래시 드라이브, 광학 디스크, 이를테면, 콤팩트 디스크 또는 하드 디스크 또는 드라이브를 포함할 수 있다. CPU(606) 및 데이터 저장 디바이스는 각각, 예컨대, 단일 컴퓨터 또는 다른 컴퓨팅 디바이스 내에 완전히 로케이팅될 수 있거나; 또는 통신 매체, 이를테면, USB 포트, 직렬 포트 케이블, 동축 케이블, 이더넷 케이블, 전화선, 라디오 주파수 트랜시버 또는 다른 유사한 무선 또는 유선 매체 또는 위의 것들의 조합에 의해 서로 연결될 수 있다. 예컨대, CPU(606)는 통신 인터페이스 유닛(608)을 통해 데이터 저장 디바이스에 연결될 수 있다. CPU(606)는 하나 또는 그 초과의 특정 프로세싱 기능들을 수행하도록 구성될 수 있다.
[0060] 데이터 저장 디방이스는 예컨대, (i) 컴퓨팅 디바이스(600)를 위한 운영 체제(612); (ii) 여기서 설명된 시스템들 및 방법들에 따라 그리고 특히, CPU(606)에 대해 상세히 설명된 프로세스들에 따라 CPU(606)에 지시하도록 적응된 하나 또는 그 초과의 애플리케이션들(614)(예컨대, 컴퓨터 프로그램 코드 또는 컴퓨터 프로그램 제품) 또는 (iii) 프로그램에 의해 요구되는 정보를 저장하는데 활용될 수 있는 정보를 저장하도록 적응된 데이터베이스(들)(616)를 저장할 수 있다.
[0061] 운영 체제(612) 및 애플리케이션들(614)은 예컨대, 압축된, 컴파일되지 않은 그리고 암호화된 포맷으로 저장될 수 있으며, 컴퓨터 프로그램 코드를 포함할 수 있다. 프로그램의 명령들은 데이터 저장 디바이스 이외의 컴퓨터-판독가능 매체로부터 이를테면, ROM(604)으로부터 또는 RAM(602)으로부터 프로세서의 메인 메모리로 판독될 수 있다. 프로그램에서 명령들의 시퀀스들의 실행이 CPU(606)로 하여금 본원에서 설명된 프로세싱 단계들을 수행하게 하지만, 하드-와이어드 회로는 본 개시내용의 프로세스들의 구현을 위해 소프트웨어 명령들 대신 또는 그와 함께 사용될 수 있다. 따라서, 설명된 시스템들 및 방법들은 하드웨어 회로 및 소프트웨어의 임의의 특정 조합으로 제한되지 않는다.
[0062] 적절한 컴퓨터 프로그램 코드는 본원에서 설명된 바와 같은 프로세스들 중 임의의 프로세스와 관련하여 하나 또는 그 초과의 기능들을 수행하기 위해 제공될 수 있다. 프로그램은 또한, 프로그램 엘리먼트들, 이를테면, 운영 시스템(612), 데이터베이스 관리 시스템, 및 프로세서로 하여금 입력 출력 제어기(610)를 통해 컴퓨터 주변 디바이스들(예컨대, 비디오 디스플레이, 키보드, 컴퓨터 마우스 등)과 인터페이스하게 허용하는 "디바이스 드라이버들"을 포함할 수 있다.
[0063] 본원에서 사용되는 "컴퓨터-판독가능 매체"라는 용어는 실행을 위해 명령들을 컴퓨팅 디바이스(600)의 프로세서(또는 본원에서 설명된 디바이스의 임의의 오일리어(oilier) 프로세서)에 제공하는데 참여하거나 또는 제공하는 임의의 비-일시적 매체를 지칭한다. 그러한 매체는 비-휘발성 매체들 및 휘발성 매체들을 포함하는(그러나, 이들로 제한되는 것은 아님) 많은 형태들을 취할 수 있다. 비-휘발성 매체들은, 예컨대, 광학, 자기, 또는 광-자기 디스크들 또는 집적 회로 메모리, 이를테면, 플래시 메모리를 포함한다. 휘발성 매체들은, 메인 메모리를 통상적으로 구성하는 DRAM(dynamic random access memory)을 포함한다. 컴퓨터-판독가능 매체들의 일반적 형태들은, 예컨대, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 임의의 다른 자기 매체, CD-ROM, DVD, 임의의 다른 광학 매체, 펀치 카드(punch card)들, 페이퍼 테이프(paper tape), 홀들의 패턴들을 갖는 임의의 다른 물리적 매체, RAM, PROM, EPROM, 또는 EEPROM(electronically erasable programmable read-only memory), FLASH-EEPROM, 임의의 다른 메모리 칩 또는 카트리지, 또는 컴퓨터가 판독할 수 있는 임의의 다른 비-일시적 매체를 포함한다.
[0064] 다양한 형태들의 컴퓨터 판독가능 매체들은 실행을 위한 CPU(606)(또는 본원에서 설명되는 디바이스의 임의의 다른 프로세서)로의 하나 또는 그 초과의 명령들의 하나 또는 그 초과의 시퀀스들을 획득하는데 수반될 수 있다. 예컨대, 명령들은 초기에 원격 컴퓨터의 자기 디스크(도시되지 않음)와 관련될 수 있다. 원격 컴퓨터는 명령들을 자신의 동적 메모리로 로딩할 수 있으며, 이더넷 연결, 케이블 회선 또는 모뎀을 사용하는 전화 회선 상에서도 명령들을 전송할 수 있다. 컴퓨팅 디바이스(600)(예컨대, 서버)에 로컬인 통신 디바이스는 개개의 통신 라인 상에서 데이터를 수신하고, 프로세서에 대한 시스템 버스 상에 데이터를 배치할 수 있다. 시스템 버스는 데이터에서 메인 메모리로 반송하고, 메인 메모리로부터, 프로세서가 명령들을 리트리브 및 실행한다. 메인 메모리에 의해 수신된 명령들은 선택적으로, 프로세서에 의한 실행 이전에 또는 이후에 메모리에 저장될 수 있다. 또한, 명령들은, 다양한 타입들의 정보를 반송하는 무선 통신들 또는 데이터 스트림들의 예시적인 형태들인 전기, 전자기 또는 광학 신호들로서 통신 포스트를 통해 수신될 수 있다.
[0065] 본 개시내용의 다양한 실시예들이 본원에서 도시되고 설명되었지만, 그러한 실시예들이 단지 예로서만 제공된다는 것이 당업자들에게 명백할 것이다. 다수의 변동들, 변화들 및 치환들이 이제, 본 개시내용을 벗어나지 않으면서 당업자들에게 발생할 것이다. 본원에서 설명된 본 개시내용의 실시예들에 대한 다양한 대안들이 본 개시내용을 실시하는데 사용될 수 있다는 것이 이해되어야 한다.

Claims (20)

  1. 클라이언트 디바이스에서 파일의 부분들에 액세스하기 위한 방법으로서,
    클라이언트 디바이스에 다운로딩하기 위한 파일의 하나 또는 그 초과의 부분들을 적어도 하나의 컴퓨터 프로세서에 의해 선택하는 단계 ― 상기 파일은 네트워크를 통해 상기 클라이언트 디바이스와 통신하는 웹-기반 저장 시스템 상에 저장됨 ―;
    선택된 하나 또는 그 초과의 부분들에서, 상기 클라이언트 디바이스 상에 저장되지 않은 적어도 하나의 부분을 식별하는 단계;
    상기 파일의 식별된 적어도 하나의 부분을 다운로딩하도록 하는 요청을, 사용자 인터랙션없이 상기 웹-기반 저장 시스템에 송신하는 단계; 및
    상기 파일의 상기 식별된 적어도 하나의 부분을 상기 네트워크를 통해 상기 클라이언트 디바이스에 다운로딩하는 단계를 포함하는, 방법.
  2. 제1 항에 있어서,
    상기 식별하는 단계는 상기 선택된 하나 또는 그 초과의 부분들을 메타파일의 엔트리들과 비교하는 단계를 포함하고, 상기 메타파일의 각각의 엔트리는, 상기 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자, 및 상기 선택된 하나 또는 그 초과의 부분들 각각이 상기 클라이언트 디바이스 상에 저장되어 있는지 여부의 표시를 포함하는, 방법.
  3. 제2 항에 있어서,
    상기 메타파일은 상기 클라이언트 디바이스 상에 저장되고, 상기 클라이언트 디바이스의 사용자에게 액세스가능하지 않은, 방법.
  4. 제2 항 또는 제3 항에 있어서,
    상기 식별된 적어도 하나의 부분이 상기 클라이언트 디바이스 상에 저장되어 있는 것을 반영하기 위해, 상기 식별된 적어도 하나의 부분이 다운로딩된 후 상기 메타파일을 업데이트하는 단계를 더 포함하는, 방법.
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    상기 파일은 문서에 대응하고, 상기 방법은, 상기 문서의 제1 부분의 뷰를, 상기 클라이언트 디바이스를 동작시키는 사용자에게 제공하는 단계를 더 포함하고, 상기 파일의 상기 선택된 하나 또는 그 초과의 부분들은 상기 제1 부분에 인접한 상기 문서의 제2 및 제3 부분들을 포함하는, 방법.
  6. 제1 항 내지 제5 항 중 어느 한 항에 있어서,
    상기 파일의 상기 선택된 하나 또는 그 초과의 부분들은, 상기 파일의 히스토리컬 뷰잉 패턴 또는 상기 파일의 편집 액티비티에 기반하여 결정되는 우선순위 스코어들이 할당되는 상기 파일의 부분들에 대응하는, 방법.
  7. 제1 항 내지 제6 항 중 어느 한 항에 있어서,
    상기 파일의 콘텐츠들을 상기 클라이언트 디바이스 상에 디스플레이하기 위한 애플리케이션이 상기 클라이언트 디바이스 상에 설치되고, 상기 애플리케이션은 상기 파일의 상기 선택된 하나 또는 그 초과의 부분들을 디스플레이하는 것을 수용하도록 수정되지 않는, 방법.
  8. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 파일의 상기 식별된 적어도 하나의 부분이 상기 클라이언트 디바이스 상에 저장되기 전에 상기 파일의 상기 식별된 적어도 하나의 부분을 암호화하는 단계를 더 포함하고, 상기 암호화하는 단계는 제1 키 및 제1 초기화 벡터를 사용하는 단계를 포함하고, 상기 클라이언트 디바이스 상에 저장된 상기 파일의 다른 부분을 암호화하기 위해 상기 제1 키 및 상기 제1 초기화 벡터와 상이한 제2 초기화 벡터가 사용되는, 방법.
  9. 제8 항에 있어서,
    상기 제1 초기화 벡터 및 상기 제2 초기화 벡터를 메타파일에 저장하는 단계를 더 포함하고, 상기 메타파일의 각각의 엔트리는, 상기 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자, 및 상기 선택된 하나 또는 그 초과의 부분들 각각이 상기 클라이언트 디바이스 상에 저장되어 있는지 여부의 표시를 포함하는, 방법.
  10. 제1 항 내지 제9 항 중 어느 한 항에 있어서,
    상기 네트워크의 연결 스피드, 상기 파일의 타입, 및 상기 클라이언트 디바이스의 사용자에 의해 요청되는 것으로 예측되는 상기 파일 내의 데이터의 양 중 적어도 하나에 기반하여 상기 파일의 상기 하나 또는 그 초과의 부분들의 사이즈를 결정하는 단계를 더 포함하는, 방법.
  11. 클라이언트 디바이스에서 파일의 부분들에 액세스하기 위한 시스템으로서,
    상기 시스템은 적어도 하나의 컴퓨터 프로세서를 포함하고, 상기 적어도 하나의 컴퓨터 프로세서는,
    클라이언트 디바이스에 다운로딩하기 위한 파일의 하나 또는 그 초과의 부분들을 선택하고 ― 상기 파일은 네트워크를 통해 상기 클라이언트 디바이스와 통신하는 웹-기반 저장 시스템 상에 저장됨 ―;
    선택된 하나 또는 그 초과의 부분들에서, 상기 클라이언트 디바이스 상에 저장되지 않은 적어도 하나의 부분을 식별하고;
    상기 파일의 식별된 적어도 하나의 부분을 다운로딩하도록 하는 요청을, 사용자 인터랙션없이 상기 웹-기반 저장 시스템에 송신하고; 그리고
    상기 파일의 상기 식별된 적어도 하나의 부분을 상기 네트워크를 통해 상기 클라이언트 디바이스에 다운로딩하도록 구성되는, 시스템.
  12. 제11 항에 있어서,
    상기 적어도 하나의 컴퓨터 프로세서는 상기 선택된 하나 또는 그 초과의 부분들을 메타파일의 엔트리들과 비교함으로써 상기 적어도 하나의 부분을 식별하고, 상기 메타파일의 각각의 엔트리는, 상기 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자, 및 상기 선택된 하나 또는 그 초과의 부분들 각각이 상기 클라이언트 디바이스 상에 저장되어 있는지 여부의 표시를 포함하는, 시스템.
  13. 제12 항에 있어서,
    상기 메타파일은 상기 클라이언트 디바이스 상에 저장되고, 상기 클라이언트 디바이스의 사용자에게 액세스가능하지 않은, 시스템.
  14. 제12 항 또는 제13 항에 있어서,
    상기 적어도 하나의 컴퓨터 프로세서는 상기 식별된 적어도 하나의 부분이 상기 클라이언트 디바이스 상에 저장되어 있는 것을 반영하기 위해, 상기 식별된 적어도 하나의 부분이 다운로딩된 후 상기 메타파일을 업데이트하도록 추가로 구성되는, 시스템.
  15. 제11 항 내지 제14 항 중 어느 한 항에 있어서,
    상기 파일은 문서에 대응하고, 상기 적어도 하나의 컴퓨터 프로세서는, 상기 문서의 제1 부분의 뷰를, 상기 클라이언트 디바이스를 동작시키는 사용자에게 제공하도록 추가로 구성되고, 상기 파일의 상기 선택된 하나 또는 그 초과의 부분들은 상기 제1 부분에 인접한 상기 문서의 제2 및 제3 부분들을 포함하는, 시스템.
  16. 제11 항 내지 제15 항 중 어느 한 항에 있어서,
    상기 파일의 상기 선택된 하나 또는 그 초과의 부분들은, 상기 파일의 히스토리컬 뷰잉 패턴 또는 상기 파일의 편집 액티비티에 기반하여 결정되는 우선순위 스코어들이 할당되는 상기 파일의 부분들에 대응하는, 시스템.
  17. 제11 항 내지 제16 항 중 어느 한 항에 있어서,
    상기 파일의 콘텐츠들을 상기 클라이언트 디바이스 상에 디스플레이하기 위한 애플리케이션이 상기 클라이언트 디바이스 상에 설치되고, 상기 애플리케이션은 상기 파일의 상기 선택된 하나 또는 그 초과의 부분들을 디스플레이하는 것을 수용하도록 수정되지 않는, 시스템.
  18. 제11 항 내지 제17 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 컴퓨터 프로세서는, 제1 키 및 제1 초기화 벡터를 사용하여, 상기 파일의 상기 식별된 적어도 하나의 부분이 상기 클라이언트 디바이스 상에 저장되기 전에 상기 파일의 상기 식별된 적어도 하나의 부분을 암호화하도록 추가로 구성되고, 상기 클라이언트 디바이스 상에 저장된 상기 파일의 다른 부분을 암호화하기 위해 상기 제1 키 및 상기 제1 초기화 벡터와 상이한 제2 초기화 벡터가 사용되는, 시스템.
  19. 제18 항에 있어서,
    상기 적어도 하나의 컴퓨터 프로세서는, 상기 제1 초기화 벡터 및 상기 제2 초기화 벡터를 메타파일에 저장하도록 추가로 구성되고, 상기 메타파일의 각각의 엔트리는, 상기 선택된 하나 또는 그 초과의 부분들 각각을 식별하는 부분 식별자, 및 상기 선택된 하나 또는 그 초과의 부분들 각각이 상기 클라이언트 디바이스 상에 저장되어 있는지 여부의 표시를 포함하는, 시스템.
  20. 제11 항 내지 제19 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 컴퓨터 프로세서는, 상기 네트워크의 연결 스피드, 상기 파일의 타입, 및 상기 클라이언트 디바이스의 사용자에 의해 요청되는 것으로 예측되는 상기 파일 내의 데이터의 양 중 적어도 하나에 기반하여 상기 파일의 상기 하나 또는 그 초과의 부분들의 사이즈를 결정하도록 추가로 구성되는, 시스템.
KR1020177031679A 2015-09-14 2016-09-01 콘텐츠 저장 및 리트리벌을 위한 시스템들 및 방법들 KR102072854B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/853,214 US10887371B2 (en) 2015-09-14 2015-09-14 Systems and methods for content storage and retrieval
US14/853,214 2015-09-14
PCT/US2016/049848 WO2017048517A1 (en) 2015-09-14 2016-09-01 Systems and methods for content storage and retrieval

Publications (2)

Publication Number Publication Date
KR20170134586A true KR20170134586A (ko) 2017-12-06
KR102072854B1 KR102072854B1 (ko) 2020-02-03

Family

ID=56896835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177031679A KR102072854B1 (ko) 2015-09-14 2016-09-01 콘텐츠 저장 및 리트리벌을 위한 시스템들 및 방법들

Country Status (8)

Country Link
US (2) US10887371B2 (ko)
EP (1) EP3350722B1 (ko)
JP (1) JP6789244B2 (ko)
KR (1) KR102072854B1 (ko)
CN (1) CN107810499B (ko)
DE (2) DE202016107380U1 (ko)
GB (1) GB2555952B (ko)
WO (1) WO2017048517A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255242B2 (en) * 2016-06-29 2019-04-09 RedCritter Corp. Communications platform for implementing a recognition and reward system
US10484354B2 (en) * 2017-02-15 2019-11-19 Telefonaktiebolaget Lm Ericsson (Publ) Data owner restricted secure key distribution
US11533384B2 (en) * 2020-03-20 2022-12-20 International Business Machines Corporation Predictive provisioning of cloud-stored files

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084405A1 (en) * 2006-09-05 2012-04-05 Adobe Systems Incorporated Methods And Apparatus For Optimizing Responsiveness Of Portable Documents
US20130305039A1 (en) * 2011-05-14 2013-11-14 Anthony Francois Gauda Cloud file system
US20130311775A1 (en) * 2009-08-14 2013-11-21 Azuki Systems, Inc. Method and system for unified mobile content protection
US20140365619A1 (en) * 2000-08-18 2014-12-11 Apple Inc. Method and system for seamlessly accessing remotely stored files

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE230445T1 (de) 1995-10-27 2003-01-15 Specialty Coating Systems Inc Verfahren und vorrichtung zur ablagerung von parylen af4 auf halbleiterwafern
US6516339B1 (en) * 1999-08-18 2003-02-04 International Business Machines Corporation High performance client/server editor
US7630986B1 (en) * 1999-10-27 2009-12-08 Pinpoint, Incorporated Secure data interchange
GB0510991D0 (en) 2005-05-28 2005-07-06 Xaar Technology Ltd Method of printhead passivation
GB0513375D0 (en) * 2005-06-30 2005-08-03 Retento Ltd Computer security
US7660581B2 (en) * 2005-09-14 2010-02-09 Jumptap, Inc. Managing sponsored content based on usage history
JP5574606B2 (ja) 2009-01-29 2014-08-20 キヤノン株式会社 情報処理システム、その処理方法、情報処理装置及びプログラム
US8697458B2 (en) 2009-04-22 2014-04-15 Shat-R-Shield, Inc. Silicone coated light-emitting diode
US8881055B1 (en) * 2010-05-18 2014-11-04 Google Inc. HTML pop-up control
CN102024054A (zh) * 2010-12-10 2011-04-20 中国科学院软件研究所 一种面向密文云存储的文档检索方法与系统
CN102075542B (zh) * 2011-01-26 2012-12-19 中国科学院软件研究所 一种云计算数据安全支撑平台
US8924500B2 (en) * 2011-03-29 2014-12-30 Amazon Technologies, Inc. Local storage linked to networked storage system
JP5163781B2 (ja) * 2011-07-15 2013-03-13 株式会社日立製作所 ダウンロード制御装置
EP2560344B8 (en) 2011-08-18 2018-06-27 Apple Inc. Management of downloads from a network-based digital data repository based on network performance
CN102520922B (zh) * 2011-11-14 2016-04-13 上海交通大学 一种协作环境下的远程开发方法及其系统
US8886752B2 (en) * 2011-11-21 2014-11-11 Sony Computer Entertainment America System and method for optimizing transfers of downloadable content
US9542466B2 (en) * 2012-05-10 2017-01-10 Aetherstore Inc. Systems and methods for distributed storage
JP2014522543A (ja) 2012-06-18 2014-09-04 エイチズィーオー・インコーポレーテッド 完全に組み立てられている電子デバイスの内部表面へ保護被覆を塗工するためのシステム及び方法
CN102882923B (zh) * 2012-07-25 2015-04-15 北京亿赛通科技发展有限责任公司 移动终端安全存储系统及方法
US20140036519A1 (en) * 2012-08-01 2014-02-06 Raymond L. Cloward Spiraling support tube
US10140269B2 (en) * 2013-03-12 2018-11-27 Microsoft Technology Licensing, Llc Viewing effects of proposed change in document before committing change
US9538232B2 (en) * 2013-03-14 2017-01-03 Verizon Patent And Licensing Inc. Chapterized streaming of video content
CN104079704A (zh) * 2013-03-26 2014-10-01 联想(北京)有限公司 对数据进行同步的移动终端和服务器及相应的方法
CN104079615B (zh) * 2013-03-29 2018-11-09 联想(北京)有限公司 文件下载方法和信息处理装置
JP6107341B2 (ja) 2013-04-05 2017-04-05 富士通株式会社 データ管理プログラム,データ管理装置およびデータ管理方法
US9405767B2 (en) * 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
US9665501B1 (en) * 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
EP2819379A1 (en) 2013-06-28 2014-12-31 Thomson Licensing Method for adapting the downloading behavior of a client terminal configured to receive multimedia content, and corresponding terminal
CN104468664A (zh) * 2013-09-18 2015-03-25 中兴通讯股份有限公司 一种上传文件到云存储系统的方法、下载方法及装置
US9326026B2 (en) 2013-10-31 2016-04-26 At&T Intellectual Property I, Lp Method and apparatus for content distribution over a network
US10187358B2 (en) 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations
CN104717254B (zh) * 2013-12-12 2019-01-08 华为技术有限公司 文件访问的方法和云网关
CN104717240A (zh) * 2013-12-12 2015-06-17 鸿合科技有限公司 文件网络共享方法及装置
US10200427B2 (en) 2014-01-13 2019-02-05 Facebook, Inc. Systems and methods for streaming digital content using an intermediate server
CN104158857B (zh) * 2014-07-25 2017-10-27 中南大学 一种提供网络化操作系统服务的装置和方法
US9959280B1 (en) * 2014-09-30 2018-05-01 EMC IP Holding Company LLC Garbage collection of data tiered to cloud storage
US9053124B1 (en) * 2014-09-30 2015-06-09 Code 42 Software, Inc. System for a distributed file system element collection
US11461533B2 (en) * 2014-10-15 2022-10-04 International Business Machines Corporation Generating a document preview
US20170149860A1 (en) * 2014-10-19 2017-05-25 Tensera Networks Ltd. Partial prefetching of indexed content
US10114835B2 (en) * 2015-04-29 2018-10-30 Box, Inc. Virtual file system for cloud-based shared content
CN107636374B (zh) 2015-05-07 2019-12-27 应用材料公司 一种波纹管和阀门组件

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365619A1 (en) * 2000-08-18 2014-12-11 Apple Inc. Method and system for seamlessly accessing remotely stored files
US20120084405A1 (en) * 2006-09-05 2012-04-05 Adobe Systems Incorporated Methods And Apparatus For Optimizing Responsiveness Of Portable Documents
US20130311775A1 (en) * 2009-08-14 2013-11-21 Azuki Systems, Inc. Method and system for unified mobile content protection
US20130305039A1 (en) * 2011-05-14 2013-11-14 Anthony Francois Gauda Cloud file system
KR20140034222A (ko) * 2011-05-14 2014-03-19 비트카사, 인코포레이티드 사용자-독립적인 암호화된 파일들의 서버측 중복제거를 하는 클라우드 파일 시스템

Also Published As

Publication number Publication date
KR102072854B1 (ko) 2020-02-03
WO2017048517A1 (en) 2017-03-23
CN107810499A (zh) 2018-03-16
EP3350722B1 (en) 2021-02-17
JP6789244B2 (ja) 2020-11-25
DE112016004168T5 (de) 2018-06-21
GB201717893D0 (en) 2017-12-13
GB2555952A (en) 2018-05-16
US20210126963A1 (en) 2021-04-29
US10887371B2 (en) 2021-01-05
CN107810499B (zh) 2022-03-25
GB2555952B (en) 2021-10-06
US11930070B2 (en) 2024-03-12
US20170078362A1 (en) 2017-03-16
JP2018526700A (ja) 2018-09-13
EP3350722A1 (en) 2018-07-25
DE202016107380U1 (de) 2017-02-06

Similar Documents

Publication Publication Date Title
US11930070B2 (en) Systems and methods for content storage and retrieval
US9766791B2 (en) Predictive caching and fetch priority
US9268802B2 (en) System and method for end-to-end exposure of exported representations of native data types to third-party applications
JP2017208115A (ja) ゲノムデータの動的指標付与および可視化を提供する分散システム
US20150013014A1 (en) Method and apparatus for providing digital rights management service in the cloud
US9292280B2 (en) Systems and methods for multi-tiered format registration for applications
US11197074B2 (en) Synchronized video annotation and control system for sexual stimulation devices
US10009399B2 (en) Asset streaming and delivery
US10638174B2 (en) Synchronized video control system for sexual stimulation devices
JP6678167B2 (ja) 記憶デバイスに記憶されたデータに関連付けられたメディア情報を特定する方法及び装置
US20240098151A1 (en) ENHANCED PROCESSING OF USER PROFILES USING DATA STRUCTURES SPECIALIZED FOR GRAPHICAL PROCESSING UNITS (GPUs)
US20190050367A1 (en) Technologies for selectively excluding user data from machine learning operations
CN109804349B (zh) 用于减少下载要求的系统和方法
CN114417083A (zh) 素材处理方法、计算设备及存储介质
US7664916B2 (en) Global smartcard cache methods and apparatuses
US20130332664A1 (en) System and Method for Managing Network Navigation
JP2015146103A (ja) コンテンツ提供システム、サーバー装置、端末装置、コンテンツ提供方法、及びプログラム
US20160036932A1 (en) Method and system for determining user location
US20140181684A1 (en) Modifying a user profile
JP2017182122A (ja) データ提供システム、アクセス権管理装置、データ提供方法、およびコンピュータプログラム
WO2022026646A1 (en) Synchronized video annotation and control system for sexual stimulation devices
KR101167843B1 (ko) 업데이트 문서 배포 장치 및 방법
JP2016024549A (ja) 電子マガジン作成装置、電子マガジン作成システム、電子マガジン作成方法およびコンピュータプログラム
US20170093941A1 (en) Distribution apparatus and method for distribution
CN116185291A (zh) 中间件存储方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant