KR101589801B1 - 피어 투 피어 데이터 마이그레이션 - Google Patents

피어 투 피어 데이터 마이그레이션 Download PDF

Info

Publication number
KR101589801B1
KR101589801B1 KR1020137031995A KR20137031995A KR101589801B1 KR 101589801 B1 KR101589801 B1 KR 101589801B1 KR 1020137031995 A KR1020137031995 A KR 1020137031995A KR 20137031995 A KR20137031995 A KR 20137031995A KR 101589801 B1 KR101589801 B1 KR 101589801B1
Authority
KR
South Korea
Prior art keywords
node
data
peer
location
communication link
Prior art date
Application number
KR1020137031995A
Other languages
English (en)
Other versions
KR20140004799A (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 KR20140004799A publication Critical patent/KR20140004799A/ko
Application granted granted Critical
Publication of KR101589801B1 publication Critical patent/KR101589801B1/ko

Links

Images

Classifications

    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • 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/104Peer-to-peer [P2P] networks
    • 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/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5683Storage of data provided by user terminals, i.e. reverse caching

Landscapes

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

Abstract

하나 이상의 피어 투 피어 통신 링크들을 통해 연결된 노드들 사이의 피어 투 피어 데이터 마이그레이션에 대한 예들이 개시된다.

Description

피어 투 피어 데이터 마이그레이션{PEER-TO-PEER DATA MIGRATION}
본원에서 달리 나타내어지지 않는 한, 이 섹션에 기재된 접근법들은 본 출원에서 청구항들에 대한 선행 기술이 아니고 이 섹션에의 포함에 의해 선행 기술로 인정되지 않는다.
통신 네트워크는 하나 이상의 노드들을 포함할 수도 있다. 이들 노드들은 유선 및/또는 무선 네트워크 통신 링크들을 통해 통신 네트워크에 연결되도록 구성될 수도 있는 디바이스들의 다양한 유형들을 포함할 수도 있지만 그것들로 제한되지 않는다. 또한, 노드들은 유선 및/또는 무선 피어 투 피어 통신 링크들을 통해 통신 네트워크에서의 다른 노드들에 상호접속될 수도 있다. 일부 예들에서, 노드들은 부가적인 피어 투 피어 통신 링크들을 통해 다른 통신네트워크들의 부분인 노드들에 추가로 상호접속될 수도 있다. 그 결과, 노드들은 그것들의 개별 통신 네트워크 및 더 넓은 피어 투 피어 네트워크 양쪽 모두에 접속될 수도 있다.
다양한 실시형태들에서, 본 개시물은 피어 투 피어 데이터 마이그레이션을 위한 예의 방법들을 설명한다. 예의 방법들은 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 통신적으로 연결된 제 1 노드에서 데이터를 수신하는 것을 포함할 수도 있다. 그 데이터는 제 1 노드 및 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 수신되었을 수도 있다. 그리고 그 데이터는 제 1 노드와 연관된 공용 캐시에 저장될 수도 있다. 그 공용 캐시는 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지될 수도 있다. 일부 예들에서, 데이터에 대한 타임 투 리브 (time-to-live) 타이머는 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 설정될 수도 있다. 그 데이터는 그 다음에 타임 투 리브 타이머의 만료에 응답하여 제 1 노드와 연관된 공용 캐시 (public cache) 로부터 삭제될 수도 있다. 또한, 방법들은 제 2 노드로부터, 제 1 노드와 연관된 공용 캐시로부터 데이터를 복사하기 위한 복사 요청을 수신하는 것을 포함할 수도 있다. 제 1 노드의 로케이션에 대한 제 2 노드의 로케이션의 결정이 그 다음에 행해질 수도 있고, 타임 투 리브 타이머는 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 조정될 수도 있다.
다양한 실시형태들에서, 본 개시물은 또한 피어 투 피어 데이터 마이그레이션에 대한 다른 예의 방법들을 설명한다. 다른 예의 방법들은 제 1 노드와 연관된 제 1 공용 캐시를 유지하는 것을 포함할 수도 있다. 제 1 공용 캐시는 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 의해 액세스가능할 수도 있다. 일부 예들에서, 디렉터리 파일은 제 1 공용 캐시에 저장될 수도 있다. 디렉터리 파일은 제 2 노드와 연관된 제 2 공용 캐시에 저장된 데이터와 연관된 정보를 포함하도록 구성될 수도 있다. 그 디렉터리 파일은 또한 제 2 노드의 로케이션을 포함할 수도 있다. 디렉터리 파일에 대한 타임 투 리브 타이머는 디렉터리 파일에 연관된 수명 값에 적어도 부분적으로 기초하여 설정될 수도 있다. 그러면 디렉터리 파일은 타임 투 리브 타이머의 만료에 응답하여 제 1 공용 캐시로부터 삭제될 수도 있다. 또한, 부가적인 방법들은 제 3 노드로부터 디렉터리 파일에 포함된 데이터와 연관된 정보에 대한 디렉터리 요청을 수신하는 것을 포함할 수도 있다. 제 1 노드의 로케이션에 대한 제 3 노드의 로케이션의 결정이 그 다음에 행해질 수도 있고, 타임 투 리브 타이머는 제 2 노드의 로케이션 및 제 3 노드의 로케이션에 적어도 부분적으로 기초하여 조정될 수도 있다.
다양한 실시형태들에서, 본 개시물은 또한 피어 투 피어 데이터 마이그레이션을 위한 예의 디바이스들을 설명한다. 예의 디바이스들은 로직을 갖는 파일 관리자를 포함할 수도 있다. 그 로직은 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 연결된 제 1 노드에서 데이터를 수신하도록 구성될 수도 있다. 그 데이터는 제 1 노드 및 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 수신될 수도 있다. 로직은 또한 제 1 노드와 연관된 공용 캐시에 데이터를 저장하도록 구성될 수도 있다. 그 공용 캐시는 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지될 수도 있다. 그 로직은 또한 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 그 데이터에 대한 타임 투 리브 타이머를 설정하도록 구성될 수도 있다. 일부 예들에서, 데이터는 타임 투 리브 타이머의 만료에 응답하여 제 1 노드와 연관된 공용 캐시로부터 나중에 삭제될 수도 있다. 그 로직은 또한 제 1 노드와 연관된 공용 캐시로부터 데이터를 복사하기 위한 복사 요청을 제 2 노드로부터 수신하고 제 1 노드의 로케이션에 대한 제 2 노드의 로케이션을 결정하도록 구성될 수도 있다. 그 로직은 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 타임 투 리브 타이머를 조정하도록 추가로 구성될 수도 있다.
다양한 실시형태들에서 본 개시물은 또한 제 1 노드와 연관된 메모리를 구비할 수도 있는 예의 시스템들을 설명한다. 그 메모리는 하나 이상의 피어 투 피어 통신 링크들을 통해 제 1 노드에 연결된 다른 노드들에 액세스가능한 제 1 공용 캐시를 구비하도록 구성될 수도 있다. 예의 시스템들은 또한 로직을 갖는 디렉터리 관리자를 구비할 수도 있다. 그 로직은 제 2 노드와 연관된 제 2 공용 캐시에 저장된 데이터와 연관된 정보를 포함하며, 또한 제 2 노드의 로케이션을 포함하는 디렉터리 파일을 제 1 공용 캐시에 저장하도록 구성될 수도 있다. 그 로직은 또한 디렉터리 파일에 연관된 수명 값에 적어도 부분적으로 기초하여, 디렉터리 파일에 대한 타임 투 리브 타이머를 설정하도록 구성될 수도 있고, 디렉터리 파일은 타임 투 리브 타이머의 만료에 응답하여 제 1 공용 캐시로부터 삭제될 것이다. 그 로직은 또한 제 3 노드로부터 디렉터리 요청을 수신하도록 구성될 수도 있다. 그 디렉터리 요청은 디렉터리 파일에 포함된 제 2 공용 캐시에 저장된 데이터와 연관된 정보에 대한 요청을 포함할 수도 있다. 일부 예들에서, 그 로직은 제 1 노드의 로케이션에 대한 제 3 노드의 로케이션을 결정하고 제 2 노드의 로케이션 및 제 3 노드의 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 타임 투 리브 타이머를 조정하도록 추가로 구성될 수도 있다.
다양한 실시형태들에서, 본 개시물은 또한 예의 컴퓨터 프로그램 제품들을 설명한다. 일부 예들에서, 컴퓨터 프로그램 제품들은 피어 투 피어 데이터 마이그레이션을 위한 명령들을 갖는 신호 베어링 매체를 포함할 수도 있다. 그 명령들은, 로직에 의해 실행되는 경우, 그 로직으로 하여금 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 연결된 제 1 노드에서 데이터를 수신하게 할 수도 있다. 그 데이터는 제 1 노드 및 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 수신될 수도 있다. 그 명령들은 또한 로직으로 하여금 제 1 노드와 연관된 공용 캐시에 데이터를 저장하게 할 수도 있다. 그 공용 캐시는 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지될 수도 있다. 그 명령들은 또한 로직으로 하여금 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 그 데이터에 대한 타임 투 리브 타이머를 설정하게 할 수도 있다. 일부 예들에서, 데이터는 타임 투 리브 타이머의 만료에 응답하여 제 1 노드와 연관된 공용 캐시로부터 나중에 삭제될 수도 있다. 그 명령들은 또한 로직으로 하여금 제 1 노드와 연관된 공용 캐시로부터 데이터를 복사하기 위한 복사 요청을 제 2 노드로부터 수신하고 제 1 노드의 로케이션에 대한 제 2 노드의 로케이션을 결정하게 할 수도 있다. 그 명령들은 추가로 로직으로 하여금 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 타임 투 리브 타이머를 조정하게 할 수도 있다.
전술한 개요는 단지 예시적인 것이고 임의의 제한하는 방식으로 의도되지 않았다. 위에서 설명된 예시적인 양태들, 실시형태들, 및 특징들 외에도, 추가의 양태들, 실시형태들, 및 특징들이 도면들 및 다음의 상세한 설명을 참조하여 명확하게 될 것이다.
본 개시물의 전술한 및 다른 특징들은 첨부 도면들을 참조하여 취해진 다음의 설명 및 첨부의 청구항들로부터 더욱 완전히 명확하게 될 것이다. 이들 도면들이 본 개시물에 따른 여러 실시형태들만을 묘사하고, 그러므로, 그것의 범위를 제한하는 것으로 간주되지 않는다고 이해하면서, 본 개시물은 첨부 도면들의 사용을 통해 부가적인 특수성 및 세부사항과 함께 설명될 것이다.
도 1은 하나 이상의 피어 투 피어 통신 링크들을 통해 상호접속되고 네트워크 통신 링크를 통해 하나 이상의 원격 데이터 소스들에 개별적으로 연결된 노드들을 갖는 일 예의 시스템을 도시한다;
도 2는 파일 관리자에 대한 일 예의 아키텍처의 블록도를 도시한다;
도 3은 디렉터리 관리자에 대한 일 예의 아키텍처의 블록도를 도시한다;
도 4a 및 도 4b는 노드의 다른 노드들에 대한 상대 포지션의 그래픽 묘사들을 예시한다;
도 5는 일 예의 디렉터리 파일을 도시한다;
도 6은 디렉터리 파일을 유지하는 노드에 대한 일 예의 콜링 카드를 도시한다;
도 7은 피어 투 피어 데이터 마이그레이션을 위한 예의 방법들의 흐름도를 도시한다;
도 8은 피어 투 피어 데이터 마이그레이션을 위한 다른 예의 방법들의 흐름도를 도시한다;
도 9는 일 예의 컴퓨터 프로그램 제품의 블록도를 도시한다; 그리고
도 10은 일 예의 컴퓨팅 디바이스를 도시하며,
이들 모두는 본 개시물의 적어도 일부 실시형태에 따라 배열된다.
다음의 상세한 설명에서, 본원의 부분을 형성하는 첨부 도면들이 참조된다. 도면들에서, 유사한 기호들은 문맥에서 달리 지시되지 않는 한 보통 유사한 컴포넌트들을 식별한다. 상세한 설명, 도면들, 및 청구범위에서 설명되는 구체적인 예들 또는 실시형태들은 제한하는 의미는 아니다. 다른 예들 또는 실시형태들이 활용될 수도 있고, 다른 변경들이 본원에서 제시된 주제의 정신 또는 범위로부터 벗어남 없이 만들어질 수도 있다. 일반적으로 본원에서 설명되고 도면들에서 예시되는 바와 같은, 본 개시물의 양태들은, 매우 다양한 상이한 구성들로 배열, 치환, 조합, 및 설계될 수 있으며, 그것들의 모두는 명시적으로 예측되고 본 개시물의 부분이 된다는 것이 이 쉽사리 이해될 것이다.
본 개시물은, 그 중에서도, 하나 이상의 피어 투 피어 통신 링크들을 통해 연결된 노드들 사이의 피어 투 피어 데이터 마이그레이션에 관련된 방법들, 장치, 시스템들 및 컴퓨터 프로그램 제품들을 이야기하고 있다.
본 개시물에서 의도된 바와 같이, 노드들은 그것들의 개별 통신 네트워크 및 다른 노드들로 이루어진 더 넓은 피어 투 피어 네트워크 양쪽 모두에 접속될 수도 있다. 일부 예들에서, 그것의 개별 통신 네트워크에서의 각각의 노드는 각각의 노드에 대해 원격으로 위치될 수도 있는 데이터 소스로부터 데이터를 획득할 수도 있다. 예를 들어, 노드의 통신 네트워크는 노드가 인터넷을 통해 데이터 소스에 연결하는 것을 가능하게 할 수도 있다. 데이터 소스는 비디오 및/또는 오디오 데이터를 노드에 제공하는 서버에 원격으로 위치될 수도 있다. 여러 다른 노드들이 또한 원격으로 위치된 서버로부터 동일한 비디오 및/또는 오디오 데이터를 찾을 수도 있다. 노드들을 그 서버에 연결시키는 네트워크 통신 링크들 및/또는 서버는 동일한 비디오 및/또는 오디오 데이터에 대한 다수의 요청들을 다루는 제한된 용량을 가질 수도 있다. 그 제한된 용량은 비디오 및/또는 오디오 데이터를 적시에 그리고 에러 없는 방식으로 수신하는 적어도 일부 노드들에 대해서는 문제가 될 수도 있다.
일부 예들에서, 방법들이 피어 투 피어 데이터 마이그레이션을 위해 구현된다. 그 방법들은 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 통신적으로 연결된 제 1 노드에서 데이터를 수신하는 것을 포함할 수도 있다. 그 데이터 (예컨대, 비디오/오디오 파일들) 는 제 1 노드 및 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 수신되었을 수도 있다. 그 데이터는 그러면 제 1 노드와 연관된 공용 캐시에 저장될 수도 있다. 그 공용 캐시는 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지될 수도 있다. 일부 예들에서, 데이터에 대한 타임 투 리브 타이머는 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 설정될 수도 있다. 그러면 그 데이터는 타임 투 리브 타이머의 만료에 응답하여 제 1 노드와 연관된 공용 캐시로부터 삭제될 수도 있다. 또한, 방법들은 제 2 노드로부터, 제 1 노드와 연관된 공용 캐시로부터 데이터를 복사하기 위한 복사 요청을 수신하는 것을 포함할 수도 있다. 제 1 노드의 로케이션에 대한 제 2 노드의 로케이션의 결정이 그 다음에 행해질 수도 있고, 타임 투 리브 타이머는 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 조정될 수도 있다.
일부 다른 예들에서, 부가적인 방법들이 피어 투 피어 데이터 마이그레이션을 위해 구현된다. 그 부가적인 방법들은 제 1 노드와 연관된 제 1 공용 캐시를 유지하는 것을 포함할 수도 있다. 제 1 공용 캐시는 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 의해 액세스가능할 수도 있다. 일부 예들에서, 디렉터리 파일은 제 1 공용 캐시에 저장될 수도 있다. 디렉터리 파일은 제 2 노드와 연관된 제 2 공용 캐시에 저장된 데이터와 연관된 정보를 포함하도록 구성될 수도 있다. 그 디렉터리 파일은 또한 제 2 노드의 로케이션을 포함할 수도 있다. 디렉터리 파일에 대한 타임 투 리브 타이머는 디렉터리 파일에 연관된 수명 값에 적어도 부분적으로 기초하여 설정될 수도 있다. 디렉터리 파일은 그러면 타임 투 리브 타이머의 만료에 응답하여 제 1 공용 캐시로부터 삭제될 수도 있다. 또한, 부가적인 방법들은 제 3 노드로부터 디렉터리 파일에 포함된 데이터와 연관된 정보에 대한 디렉터리 요청을 수신하는 것을 포함할 수도 있다. 제 1 노드의 로케이션에 대한 제 3 노드의 로케이션의 결정이 그 다음에 행해질 수도 있고, 타임 투 리브 타이머는 제 2 노드의 로케이션 및 제 3 노드의 로케이션에 적어도 부분적으로 기초하여 조정될 수도 있다.
도 1은 본 개시물의 적어도 일부 실시형태들에 따른, 하나 이상의 피어 투 피어 통신 링크들을 통해 상호접속되고 네트워크 통신 링크를 통해 하나 이상의 원격 데이터 소스들에 개별적으로 연결된 노드들을 갖는 일 예의 시스템 (100) 을 도시한다. 도 1에 도시된 바와 같이, 피어 투 피어 시스템 (100) 은 액세스 포인트들 (122, 132 및 142) 을 구비하며 그것들을 통해 네트워크(들) (120, 130 및 140) 의 노드들은 각각, 네트워크 (110) 에 연결될 수도 있다. 또한, 네트워크 (110) 는 데이터 소스(들) (112) 에 연결될 수도 있고 네트워크(들) (120, 130 및 140) 의 노드들은 데이터 소스(들) (112) 에서 또는 그 데이터 소스(들)로 유지되는 데이터 및/또는 콘텐츠에 액세스될 수도 있다. 일부 예들에서, 개별 네트워크에서의 노드들은 네트워크 통신 링크를 통해 액세스 포인트를 경유하여 네트워크 (110) 에 따로따로 연결할 수도 있다. 예를 들어, 도 1에 도시된 바와 같이, 네트워크 (120) 의 노드들 (121, 123, 125, 127 및 129) 은 네트워크 통신 링크들 (120A-120E) 을 통해 액세스 포인트 (122) 를 경유하여 연결될 수도 있다. 노드들은 또한 다른 노드들에 통신적으로 연결되어, 네트워크들 (110, 120, 130 및 140) 외에 그 네트워크들과는 별개일 수도 있는 일종의 피어 투 피어 네트워크를 형성한다. 예를 들어, 도 1에 도시된 바와 같이, 시스템 (100) 의 노드들은 피어 투 피어 통신 링크들 (150A-150M) 을 통해 상호접속될 수도 있다.
일부 예들에서, 도 1에 도시된 바와 같이, 각각의 노드는 메모리 (160), 파일 관리자 (file manager; FM) (170) 및 디렉터리 관리자 (directory manager; DM) (180) 를 구비할 수도 있다. 메모리 (160) 는 공용 캐시 (public cache; 162) 및 개인 캐시 (private cache; 164) 를 구비하는 것으로 도 1에서 추가로 도시된다. 공용 캐시 (162) 는 데이터 및/또는 콘텐츠를 유지하도록 구성 또는 배열될 수도 있고 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 액세스가능할 수도 있다. 개인 캐시 (164) 는 주어진 노드 상에 존재하거나 또는 함께 위치하는 로직 또는 특징부들 (예컨대, 운영 체제) 에만 액세스가능할 수도 있는 데이터 및/또는 콘텐츠를 유지하도록 구성 또는 배열될 수도 있다. 메모리 (160) 는 휘발성 메모리, 비휘발성 메모리, 플래시 메모리, 프로그램가능 변수들 또는 상태들, 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 또는 다른 스태틱 또는 다이나믹 저장 매체들과 같은 다양한 유형들의 메모리를 포함할 수도 있으나 그것들로 제한되지 않는다.
일부 예들에 따르면, 노드 (121) 는 데이터 소스(들) (112) 로부터 네트워크 통신 링크 (120A) 를 통해 데이터를 수신하거나 또는 획득할 수도 있다. 이들 예들에 대해, 도 1에 도시된 바와 같이, 데이터 소스(들) (112) 는 액세스 포인트 (122) 를 경유하여 노드 (121) 의 네트워크 (120) 에 연결되는 네트워크 (110) 에 연결될 수도 있다. 네트워크 (110) 가 노드 (121) 의 네트워크 (120) 에 대한 별개의 네트워크의 부분이므로, 데이터 소스(들) (112) 는 노드 (121) 에 대해 원격으로 위치된다고 간주될 수도 있다. 데이터 소스로부터 수신된 데이터는 그러면 노드 (121) 의 공용 캐시 (162) 에 저장될 수도 있다. 그 데이터는, 예를 들어, 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일을 포함할 수도 있지만, 본 개시물은 파일의 이들 예의 유형들로 제한되지 않는다.
일부 예들에 따르면, 데이터 소스(들) (112) 로부터의 데이터의 다운로딩은 많은 양의 네트워크 자원들에 부담을 주거나 또는 많은 양의 네트워크 자원들을 사용할 수도 있다. 이 부담을 경감시키기 위하여, 데이터는 노드 (121) 의 공용 캐시 (162) 에 적어도 일시적으로 저장될 수도 있고 그 다음에 복사를 위해 다른 노드들에 액세스가능하게 될 수도 있다. 다른 노드들은 덜 네트워크 자원 집약적일 수도 있는 피어 투 피어 통신 링크들을 이용할 수도 있으며 그리고/또는 다른 노드들이 데이터를 획득하기 위해 데이터 소스(들) (112) 로 가는 것에 비해 데이터를 더욱 신속하게 획득하거나 또는 복사하는 것을 가능하게 할 수도 있다.
일부 예들에서, 노드 (121) 의 파일 관리자 (170) 는 원격으로 위치된 데이터 소스로부터 수신된 데이터에 대한 타임 투 리브 (time-to-live) 타이머를 할당 및/또는 설정하도록 구성된 로직 및/또는 특징부 (feature) 들을 포함할 수도 있다. 타임 투 리브 타이머는 데이터와 연관된 수명 값에 기초하여 할당 및/또는 설정될 수도 있다. 그 수명 값은, 예를 들어, 데이터가 노드 (121) 의 공용 캐시 (162) 에 저장된 채로 유지될 수도 있는 (예컨대, 초, 분, 시 등의) 기간을 포함할 수도 있다. 타임 투 리브 타이머의 만료 (예컨대, 기간의 종료) 시 데이터는 노드 (121) 의 공용 캐시로부터 삭제될 수도 있다. 할당된 또는 설정된 기간 동안 데이터를 유지하는 것은 노드 (121) 의 공용 캐시 (162) 가 소정의 미래의 시간에 부가적인 또는 빈 (freed up) 저장 용량을 가질 것을 보장할 수도 있다.
일부 예들에 따르면, 노드 (125) 는 노드 (121) 의 공용 캐시 (162) 에 적어도 일시적으로 저장된 데이터를 복사하고자 할 수도 있다. 이들 예들의 경우, 노드 (125) 는 (예컨대, 피어 투 피어 통신 링크 (150F) 를 통해) 노드 (121) 로 복사 요청을 전송할 수도 있다. 노드 (121) 는 복사 요청을 수신할 수도 있고 파일 관리자 (170) 는 노드 (121) 의 로케이션을 기준으로 노드 (125) 의 (논리적 또는 물리적 중 어느 하나의) 로케이션을 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 예를 들어, 복사 요청은 노드 (125) 의 로케이션 (예컨대, 위성 위치확인 시스템 (GPS) 정보) 을 나타내는 로케이션 정보를 포함할 수도 있다. 파일 관리자 (170) 는 그러면 노드 (125) 의 결정된 로케이션에 기초하여, 노드 (121) 의 공용 캐시에 저장된 데이터에 이전에 할당된 타임 투 리브 타이머를 조정하거나 또는 리셋할 수도 있다.
일부 예들에서, 타임 투 리브 타이머는 또한 노드 (125) 의 로케이션 뿐만 아니라 복사 요청들을 노드 (121) 에 또한 지시할 수도 있는 다른 노드들에 연관된 로케이션(들)에도 기초하여 더 짧은 기간으로 또는 더 긴 기간으로 조정될 수도 있다. 노드 (121) 를 기준으로 한 노드 (125) 의 로케이션 뿐만 아니라 다른 노드들의 로케이션은 노드 (121) 의 파일 관리자 (170) 에게 다른 노드들이 데이터를 공유하기 위해 다소 중앙집중화된 분포 지점 (centralized distribution point) 에 있을 수도 있다는 것을 나타낼 수도 있다. 예를 들어, 노드 (125) 는 노드들 (123, 127 및 129) 에 노드 (121) 가 이들 노드들에 대한 것보다 더욱 중앙집중화된다. 더욱 중앙집중화된 결과로서, 노드 (121) 의 공용 캐시 (162) 에 현재 저장된 데이터에 비해 노드 (125) 가 그것의 공용 캐시 (162) 에 복사하고 저장한 데이터를 더 많은 노드들이 요청할 수도 있다.
일부 예들에서, 노드 (121) 의 디렉터리 관리자 (180) 가 노드 (121) 의 공용 캐시 (162) 에 디렉터리 파일을 저장하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 아래에서 더 상세히 설명되는 바와 같이, 디렉터리 파일은 다른 노드들에 대한 다른 공용 캐시들에 저장된 데이터와 연관된 정보를 포함할 수도 있다. 예를 들어, 디렉터리 파일은 노드 (123) 의 공용 캐시 (162) 에 저장될 수도 있는 데이터와 연관된 정보 및/또는 노드 (143) 의 공용 캐시 (162) 에 저장될 수도 있는 데이터와 연관된 정보를 포함할 수도 있다. 앞서 언급된 공용 캐시들에 저장된 데이터와 연관된 정보는 개별 노드들의 로케이션의 표시를 포함할 수도 있고 개별 노드들의 각각 노드의 공용 캐시들에 유지된 데이터 파일들의 유형들 및 사이즈들과 같은 다른 표시들을 포함할 수도 있다.
일부 예들에 따르면, 원격 데이터 소스로부터 수신된 데이터에 대한 타임 투 리브 타이머를 할당 및/또는 설정하기 위해 위에서 설명된 것과 유사하게, 디렉터리 관리자 (180) 는 노드 (123) 의 공용 캐시 (162) 에 저장된 디렉터리 파일에 대한 타임 투 리브 타이머를 할당 및/또는 설정하도록 구성된 로직 및/또는 특징부들을 또한 포함할 수도 있다. 타임 투 리브 타이머는 디렉터리 파일에 연관된 수명 값에 기초하여 할당 및/또는 설정될 수도 있다. 그 수명 값은, 예를 들어, 디렉터리 파일이 노드 (123) 의 공용 캐시 (162) 에 저장된 채로 유지될 수도 있는 (예컨대, 초, 분, 시 등의) 기간을 포함할 수도 있다. 타임 투 리브 타이머의 만료 (예컨대, 기간의 종료) 시 데이터는 노드 (121) 의 공용 캐시 (162) 로부터 삭제될 수도 있다.
일부 예들에서, 다른 노드들은 노드 (123) 가 그것의 공용 캐시 (162) 에 저장된 디렉터리 파일을 가지고 있다는 것에 대해 알 수도 있다. 이들 다른 노드들 (예컨대, 노드 (125)) 은 노드 (121) 의 공용 캐시 (162) 에 저장된 데이터와 연관된 정보를 획득하기 위해 디렉터리 요청을 지시할 수도 있다. 노드 (123) 는 디렉터리 요청을 수신할 수도 있고 디렉터리 관리자 (180) 는 노드 (123) 의 로케이션을 기준으로 노드 (125) 의 (논리적 또는 물리적 중 어느 하나의) 로케이션을 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 예를 들어, 디렉터리 요청은 노드 (125) 의 로케이션을 나타내는 로케이션 정보 (예컨대, GPS 정보) 를 포함할 수도 있다. 디렉터리 관리자 (180) 는 그러면 노드 (125) 의 결정된 로케이션에 기초하여, 노드 (123) 의 공용 캐시 (162) 에 저장된 디렉터리 파일에 이전에 할당된 타임 투 리브 타이머를 조정하거나 또는 리셋할 수도 있다.
일부 예들에서, 타임 투 리브 타이머는 노드 (125) 의 로케이션 뿐만 아니라 디렉터리 요청들을 노드 (123) 에 또한 지시할 수도 있는 다른 노드들에 연관된 로케이션(들)에도 기초하여 더 짧은 기간으로 또는 더 긴 기간으로 조정될 수도 있다. 노드 (123) 를 기준으로 한 노드 (125) 의 로케이션 뿐만 아니라 다른 노드들의 로케이션은, 노드 (123) 의 디렉터리 관리자 (180) 에게 그것의 저장된 디렉터리 파일에 포함된 정보를 공유하기 위해 다른 노드들이 다소 중앙집중화된 분포 지점에 있을 수도 있다는 것을 나타낼 수도 있다. 예를 들어, 노드 (121) 는 노드들 (143, 121 및 125) 에 노드 (123) 가 이들 노드들에 대한 것보다 더욱 집중화될 수도 있다. 더욱 중앙집중화된 결과로서, 노드 (123) 의 공용 캐시 (162) 에 현재 저장된 디렉터리 파일에 비해 노드 (121) 의 공용 캐시 (162) 에 저장된 디렉터리 파일을 더 많은 노드들이 요청할 수도 있다.
일부 예들에 따르면, 네트워크들 (120, 130 및 140) 은 노드들이 네트워크 (110) 에 연결되는 것을 가능하게 할 수도 있는 유선 및/또는 무선 로컬 액세스 네트워크들 또는 광역 네트워크들의 부분일 수도 있다. 이들 예들의 경우, 네트워크 (110) 는 인터넷일 수도 있고 도 1에 도시되지 않았지만, 데이터 소스(들) (112) 는 네트워크 (110) 에 연결된 다른 네트워크들의 부분일 수도 있고 그래서 네트워크(들) (120, 130 및 140) 에 포함된 시스템 (100) 의 노드들에 원격으로 위치된다고 간주될 수도 있다. 시스템 (100) 에서 묘사된 네트워크 통신 링크들은 하나 이상의 유선 및/또는 무선 표준들에 따라 동작할 수도 있다. 이들 유선 및/또는 무선 표준들은 IEEE 802.1, IEEE 802.11, IEEE 802.16, GSM, GPRS, EDGE, W-CDMA, HSPA, CDMA-2000, EV-DO, LTE 또는 TD-LTE에 연관된 것들과 같은 하나 또는 하나 이상의 업계 표준들에 기재되어 있을 수도 있다. 하지만 본 개시물은 위에서 언급된 유선 및/또는 무선 표준들로만 제한되지 않는다.
일부 예들에서, 도 1에 도시된 피어 투 피어 통신 링크들은 또한 위에서 언급된 바와 같은 하나 이상의 유선 및/또는 무선 표준들에 따라 동작할 수도 있다. 그러나, 시스템 (100) 의 노드들은 중앙집중식 조정 (centralized coordination) 에 대한 필요 없이 피어 투 피어 통신 링크들을 통해 자원들 (예컨대, 공용 캐시들) 을 공유하는 것이 가능해질 수도 있다. 이들 피어 투 피어 통신 링크들은 위에서 언급된 업계 표준들에 따라 동작할 수도 있는 유선 및/또는 무선 로컬 액세스 네트워크들 또는 광역 네트워크들을 통해 확립될 수도 있다. 피어 투 피어 통신 링크들은 또한 블루투스TM와 같은 무선 기술들을 이용하여 노드 링크들로의 직접 노드를 통해 확립될 수도 있다.
도 2는 본 개시물의 적어도 일부 실시형태들에 따른 파일 관리자에 대한 일 예의 아키텍처의 블록도를 도시한다. 도 1의 시스템 (100) 에 대해 위에서 설명된 바와 같이, 각각의 노드는 파일 관리자, 이를테면 파일 관리자 (170) 를 구비할 수도 있다. 일부 예들에서, 파일 관리자 (170) 는, 네트워크 통신 링크를 통해 데이터를 수신하고 하나 이상의 피어 투 피어 통신 링크들을 통해 연결된 노드들 사이의 피어 투 피어 데이터 마이그레이션을 용이하게 하도록 구성된 또는 배열된 특징부들 및/또는 로직을 구비한다.
도 2의 예의 파일 관리자 (170) 는 파일 로직 (210), 제어 로직 (220), 메모리 (230), 입력/출력 (I/O) 인터페이스들 (240) 및 옵션으로 하나 이상의 애플리케이션들 (250) 을 구비한다. 도 2에 예시된 바와 같이, 파일 로직 (210) 은 제어 로직 (220), 메모리 (230) 및 I/O 인터페이스들 (240) 에 연결된다. 또한 도 2에 예시된, 옵션의 애플리케이션들 (250) 은 제어 로직 (220) 과 협력하게 배열된다. 파일 로직 (210) 은 캐시 특징부 (211), 수신 특징부 (213), 타이머 특징부 (215), 요청 특징부 (217), 또는 조정 특징부 (219), 또는 그것들의 임의의 합리적인 조합 중 하나 이상을 더 포함할 수도 있다.
일부 예들에서, 도 2의 블록도에서 묘사된 엘리먼트들은 본 개시물에서 설명된 바와 같이 파일 관리자 (170) 를 지원하거나 또는 인에이블시키도록 구성된다. 주어진 파일 관리자 (170) 는 도 2에 묘사된 것들의 일부, 전부 또는 그보다 많은 엘리먼트들을 포함할 수도 있다. 예를 들어, 파일 로직 (210) 과 제어 로직 (220) 은 파일 관리자 (170) 의 특징들을 구현하기 위한 매우 다양한 로직 디바이스(들)를 개별적으로 또는 집단적으로 나타낼 수도 있다. 일 예의 로직 디바이스는 컴퓨터, 마이크로프로세서, 마이크로제어기, 필드 프로그램가능 게이트 어레이 (FPGA), 주문형 집적회로 (ASIC), 멀티-코어/멀티-스레드식 마이크로프로세서의 시퀘스터 (sequestered) 스레드 또는 코어 또는 그것들의 조합 중 하나 이상을 포함할 수도 있다.
일부 예들에서, 도 2에 도시된 바와 같이, 파일 로직 (210) 은 캐시 특징부 (211), 수신 특징부 (213), 타이머 특징부 (215), 요청 특징부 (217), 또는 조정 특징부 (219) 중 하나 이상을 포함한다. 파일 로직 (210) 은 동작들을 수행하기 위해 이들 특징부들 중 하나 이상을 사용하도록 구성될 수도 있다. 아래에서 더 상세히 설명되는 바와 같이, 예의 동작들은 노드들 사이의 피어 투 피어 데이터 마이그레이션을 용이하게 하는 것을 포함할 수도 있다.
일부 예들에서, 제어 로직 (220) 은 파일 관리자 (170) 의 전반적인 동작을 제어하도록 구성될 수도 있다. 위에서 언급했듯이, 제어 로직 (220) 은 파일 관리자 (170) 의 제어를 구현하기 위한 실행가능 콘텐츠 또는 명령들과 연계하여 동작하도록 구성된 매우 다양한 로직 디바이스(들) 중 임의의 것을 나타낼 수도 있다. 일부 대체 예들에서, 제어 로직 (220) 의 특징들 및 기능은 파일 로직 (210) 내에서 구현될 수도 있다.
일부 예들에 따르면, 메모리 (230) 는 실행가능 콘텐츠 또는 명령들을 저장하도록 배열된다. 실행가능 콘텐츠 또는 명령들은 파일 관리자 (170) 의 특징들 또는 엘리먼트들을 구현하거나 또는 활성화하기 위해 제어 로직 (220) 및/또는 파일 로직 (210) 에 의해 사용될 수도 있다. 아래에서 더 설명되는 바와 같이, 메모리 (230) 는 또한 원격 데이터 소스로부터 수신된 데이터에 대해 타임 투 리브 타이머를 할당 및/또는 설정하는 것에 연관된 정보를 일시적으로 유지하도록 구성될 수도 있다. 메모리 (230) 는 또한, 예를 들어, 다른 노드들로부터 수신된 데이터에 대한 복사 요청들로부터 획득된 다른 노드 로케이션 정보에 기초하여, 데이터에 대한 타임 투 리브 시간을 조정하는 것에 연관된 정보를 적어도 일시적으로 유지할 수도 있다.
메모리 (230) 는 휘발성 메모리, 비휘발성 메모리, 플래시 메모리, 프로그램가능 변수들 또는 상태들, RAM, ROM, 또는 다른 스태틱 또는 다이나믹 저장 매체들 중 하나 이상을 포함하지만 그것들로 한정되지 않는 매우 다양한 메모리 매체들을 포함할 수도 있다.
일부 예들에서, I/O 인터페이스들 (240) 은 파일 관리자 (170) 와 파일 관리자 (170) 를 포함하는 노드 상에 존재하거나 또는 그 노드와 함께 위치된 엘리먼트들 사이에 내부 통신 매체 또는 링크를 통해 인터페이스를 제공할 수도 있다. I/O 인터페이스들 (240) 은 내부 통신 링크 (예컨대, I2C (Inter-Integrated Circuit), 시스템 관리 버스 (SMBus) 또는 직렬 주변기기 인터페이스 버스 (Serial Peripheral Interface Bus; SPI) 등) 를 통해 통신하기 위한 다양한 통신 프로토콜들에 따라 동작하는 인터페이스들을 포함할 수도 있다. I/O 인터페이스들 (240) 은 또한 파일 관리자 (170) 와 노드에 원격으로 위치된 엘리먼트들 사이에 인터페이스를 제공할 수도 있다. 예를 들어, 도 1에 대해 위에서 언급했듯이, 파일 관리자 (170) 를 갖는 노드들은 네트워크 통신 링크들을 통해 네트워크 액세스 포인트에 연결될 수도 있거나 또는 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 연결될 수도 있다. I/O 인터페이스들 (240) 은, 예를 들어, 파일 관리자 (170) 가 다양한 유선 또는 무선 통신 링크들을 통해 통신하는 것을 허용하는 다양한 유선 또는 무선 통신 프로토콜들 (예컨대, IEEE, 802.1, IEEE 802.11, IEEE 802.16, GSM, GPRS, EDGE, W-CDMA, HSPA, CDMA-2000, EV-DO, LTE, TD-LTE, 블루투스 등) 에 따라 동작하도록 구성된 인터페이스를 포함한다.
일부 예들에서, 파일 관리자 (170) 는 제어 로직 (220) 및/또는 파일 로직 (210) 에 명령들을 제공하기 위한 하나 이상의 애플리케이션들 (250) 을 포함한다. 이들 명령들은, 예를 들어, 캐시 특징부 (211), 수신 특징부 (213), 타이머 특징부 (215), 요청 특징부 (217), 또는 조정 특징부 (219) 중 하나 이상을 구현하거나 또는 사용하기 위한 파일 관리자 (170) 에 대한 명령들을 포함할 수도 있다.
도 3은 본 개시물의 적어도 일부 실시형태들에 따른 디렉터리 관리자에 대한 일 예의 아키텍처의 블록도를 도시한다. 도 1의 시스템 (100) 에 대해 위에서 설명된 바와 같이, 각각의 노드는 디렉터리 관리자, 이를테면 디렉터리 관리자 (180) 를 구비할 수도 있다. 일부 예들에서, 디렉터리 관리자 (180) 는 하나 이상의 피어 투 피어 통신 링크들을 통해 연결된 노드들 사이에서의 피어 투 피어 데이터 마이그레이션을 용이하게 하기 위해 노드의 공용 캐시에 디렉터리 파일을 유지하도록 구성되거나 또는 배열된 특징부들 및/또는 로직을 구비한다.
도 3의 예의 디렉터리 관리자 (180) 는 디렉터리 로직 (310), 제어 로직 (320), 메모리 (330), 입력/출력 (I/O) 인터페이스들 (340) 과 옵션으로 하나 이상의 애플리케이션들 (350) 을 구비한다. 도 3에 예시된 바와 같이, 디렉터리 로직 (310) 은 제어 로직 (320), 메모리 (330) 및 I/O 인터페이스들 (340) 에 연결된다. 또한 도 3에 예시된, 옵션의 애플리케이션들 (350) 은 제어 로직 (320) 과 협력하게 배열된다. 디렉터리 로직 (310) 은 캐시 특징부 (311), 정보 특징부 (313), 타이머 특징부 (315), 요청 특징부 (317), 또는 조정 특징부 (319), 또는 그것들의 임의의 합리적인 조합 중 하나 이상을 더 포함할 수도 있다.
일부 예들에서, 도 3의 블록도에서 묘사된 엘리먼트들은 본 개시물에서 설명된 바와 같이 디렉터리 관리자 (122) 를 지원하거나 또는 인에이블시키도록 구성된다. 주어진 디렉터리 관리자 (180) 는 도 3에 묘사된 것들의 일부, 전부 또는 그보다 많은 엘리먼트들을 포함할 수도 있다. 예를 들어, 디렉터리 로직 (310) 과 제어 로직 (320) 은 디렉터리 관리자 (180) 의 특징들을 구현하기 위한 매우 다양한 로직 디바이스(들)를 개별적으로 또는 집단적으로 나타낼 수도 있다. 일 예의 로직 디바이스는 컴퓨터, 마이크로프로세서, 마이크로제어기, 필드 프로그램가능 게이트 어레이 (FPGA), 주문형 집적회로 (ASIC), 멀티-코어/멀티-스레드식 마이크로프로세서의 시퀘스터 (sequestered) 스레드 또는 코어 또는 그것들의 조합 중 하나 이상을 포함할 수도 있다.
일부 예들에서, 도 3에 도시된 바와 같이, 디렉터리 로직 (310) 은 캐시 특징부 (311), 정보 특징부 (313), 타이머 특징부 (315), 요청 특징부 (317), 또는 조정 특징부 (319) 중 하나 이상을 포함한다. 디렉터리 로직 (310) 은 동작들을 수행하기 위해 이들 특징부들 중 하나 이상을 사용하도록 구성될 수도 있다. 아래에서 더 상세히 설명되는 바와 같이, 예의 동작들은 다른 노드들의 공용 캐시에 저장된 데이터와 연관된 정보를 가지며 하나 이상의 피어 투 피어 통신 링크들을 통해 액세스가능한 노드의 공용 캐시에 디렉터리 파일을 저장하는 것을 포함할 수도 있다.
일부 예들에서, 제어 로직 (320) 은 디렉터리 관리자 (180) 의 전반적인 동작을 제어하도록 구성될 수도 있다. 위에서 언급된 제어 로직 (220) 과 유사하게, 제어 로직 (320) 은 디렉터리 관리자 (180) 의 제어를 구현하기 위한 실행가능 콘텐츠 또는 명령들과 연계하여 동작하도록 구성된 매우 다양한 로직 디바이스(들) 중 임의의 것을 나타낼 수도 있다. 일부 대체 예들에서, 제어 로직 (320) 의 특징들 및 기능은 디렉터리 로직 (310) 내에서 구현될 수도 있다.
일부 예들에 따르면, 메모리 (330) 는 실행가능 콘텐츠 또는 명령들을 저장하도록 배열된다. 실행가능 콘텐츠 또는 명령들은 디렉터리 관리자 (180) 의 특징들 또는 엘리먼트들을 구현하거나 또는 활성화하기 위해 제어 로직 (320) 및/또는 디렉터리 로직 (310) 에 의해 사용될 수도 있다. 아래에서 더 설명되는 바와 같이, 메모리 (330) 는 또한 노드의 공용 캐시에 유지된 디렉터리 파일에 대해 타임 투 리브 타이머를 할당 및/또는 설정하는 것에 연관된 정보를 일시적으로 유지하도록 구성될 수도 있다. 메모리 (330) 는 또한, 예를 들어, 다른 노드들로부터 수신된 디렉터리 요청들로부터 획득된 다른 노드 로케이션 정보에 기초하여, 디렉터리 파일에 대한 타임 투 리브 시간을 조정하는 것에 연관된 정보를 적어도 일시적으로 유지할 수도 있다.
메모리 (330) 는 휘발성 메모리, 비휘발성 메모리, 플래시 메모리, 프로그램가능 변수들 또는 상태들, RAM, ROM, 또는 다른 스태틱 또는 다이나믹 저장 매체들 중 하나 이상을 포함하지만 그것들로 한정되지 않는 매우 다양한 메모리 매체들을 포함할 수도 있다.
일부 예들에서, 위에서 설명된 I/O 인터페이스들 (240) 과 유사하게, I/O 인터페이스들 (340) 은 디렉터리 관리자 (180) 와 디렉터리 관리자 (180) 를 포함하는 노드 상에 존재하거나 또는 그 노드와 함께 위치된 엘리먼트들 사이에 내부 통신 매체 또는 링크를 통해 인터페이스를 제공할 수도 있다. 또한 I/O 인터페이스 (240) 와 유사하게, I/O 인터페이스들 (340) 은 또한 디렉터리 관리자 (180) 와 노드에 원격인 엘리먼트들 사이에 인터페이스를 제공할 수도 있다. 예를 들어, 도 1에 대해 위에서 언급했듯이, 디렉터리 관리자 (180) 를 갖는 노드들은 네트워크 통신 링크들을 통해 네트워크 액세스 포인트에 연결될 수도 있거나 또는 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 연결될 수도 있다. I/O 인터페이스들 (340) 은, 예를 들어, 디렉터리 관리자 (180) 가 다양한 유선 또는 무선 통신 링크들을 통해 통신하는 것을 허용하는 다양한 유선 또는 무선 통신 프로토콜들 (예컨대, IEEE, 802.1, IEEE 802.11, IEEE 802.16, GSM, GPRS, EDGE, W-CDMA, HSPA, CDMA-2000, EV-DO, LTE, TD-LTE, 블루투스 등) 에 따라 동작하도록 구성된 인터페이스를 포함한다.
일부 예들에서, 디렉터리 관리자 (180) 는 제어 로직 (320) 및/또는 디렉터리 로직 (310) 에 명령들을 제공하기 위한 하나 이상의 애플리케이션들 (350) 을 포함한다. 이들 명령들은, 예를 들어, 캐시 특징부 (311), 정보 특징부 (313), 타이머 특징부 (315), 요청 특징부 (317), 또는 조정 특징부 (319) 중 하나 이상을 구현하거나 또는 사용하기 위한 디렉터리 관리자 (180) 에 대한 명령들을 포함할 수도 있다.
도 4a 및 도 4b 는 본 개시물의 적어도 일부 실시형태들에 따른 노드의 다른 노드들에 대한 상대 포지션의 그래픽 묘사들을 예시한다. 도 4a 및 도 4b에 도시된 바와 같이, 시스템 (100) 의 다양한 다른 노드들에 대한 노드 (121) 의 상대 포지션은 그래프 (400) 로서 레이블된 사각형 격자 그래프를 활용하여 묘사된다. 그래프 (400) 의 x-축 또는 y-축 상에 마킹된 각각의 거리 단위는 시스템 (100) 의 노드 (121) 및 다른 노드들 사이의 상대 거리의 측정값을 나타낼 수도 있다. 예를 들어, 거리 단위는 주어진 수의 미터들 또는 거리의 다른 단위들일 수도 있다. 도 4a에 도시된 바와 같이, 일부 예들에서, 그래프 (400) 상의 노드 (121) 의 상대 로케이션은 노드 (121) 가 노드들 (143, 123 및 125) 의 로케이션들을 인식할 수도 있다는 것을 나타낼 수도 있다. 이 예의 경우 노드 (121) 는 이들 노드들로부터 또는 다른 수단을 통해 수신된 복사 또는 디렉터리 요청들에 기초하여 이들 노드들의 상대 로케이션들의 각각을 인식하게 될 수도 있다. 예를 들어, 개개의 요청들이 노드 (121) 에서 수신됨에 따라, 노드 (121) 의 파일 관리자 (170) 또는 디렉터리 관리자 (180) 는 그 요청을 하는 노드의 로케이션을 먼저 결정하도록 구성된 로직 또는 특징부들을 포함할 수도 있다. 그러면, 파일 관리자 (170) 또는 디렉터리 관리자 (180) 의 로직 또는 특징부들은 또한 요청을 전송한 노드뿐만 아니라 로직 또는 특징부들이 그것들의 로케이션들을 알 수도 있는 다른 노드들에 대해서도 노드 (121) 의 상대 로케이션을 결정할 수도 있다. 그래프 (400) 가 도 4a에서 묘사한 바와 같이, 노드 (121) 는 노드들 (143, 123 및 125) 과 비교하여 상대적으로 중앙집중화된 (예컨대, x/y 축의 중심에 가장 가까운) 로케이션에 있다.
도 4b는 노드 (121) 의 상대 포지션이 시스템 (100) 에서 다른 노드들에 비하여 더 이상 중앙집중화된 로케이션이 아닌 예를 도시한다. 일부 예들에서, 노드 (121) 는 노드 (129) 의 로케이션을 인식하게 될 수도 있다. 도 4b에 도시된 바와 같이, 노드 (125) 는 이제 다른 노드들에 비하여 중앙집중화된 로케이션에 있고 노드들 (143, 123, 125 및 129) 에 대한 노드 (121) 의 상대 포지션은 그래프 (400) 상의 중앙집중화된 로케이션으로부터 멀어지게 이동되었다.
일부 예들에 따르면, 파일 관리자 (170) 또는 디렉터리 관리자 (180) 는 다른 노드들에 대한 노드 (121) 의 상대 포지션에서의 변경들에 기초하여, 노드 (121) 의 공용 캐시에 저장된 디렉터리 파일 또는 데이터에 대한 타임 투 리브 타이머 설정을 조정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 예를 들어, 노드 (121) 가 다른 노드의 로케이션을 인식하게 되어서 노드 (121) 가 시스템 (100) 에서의 다른 노드들에 비하여 중앙집중화된 로케이션으로부터 멀어지게 이동되었다면, 타임 투 리브 타이머는 곧 만료되도록 조정될 수도 있다. 이 예의 경우, 타임 투 리브 타이머의 신속처리된 (expedited) 만료는, 다른 노드들이 시스템 (100) 에서의 데이터 마이그레이션을 위한 더 유리한 로케이션일 수도 있다고 노드 (121) 의 파일 관리자 (170) 또는 디렉터리 관리자 (180) 가 결정한 결과일 수도 있다. 대안으로, 노드 (121) 가 더욱 중앙집중화된 상대 로케이션으로 이동하였다면, 타임 투 리브 타이머는 나중에 만료되도록 조정될 수도 있는데, 시스템 (100) 에서의 데이터 마이그레이션을 위한 노드 (121) 의 더 유리한 로케이션 때문이다.
도 5는 본 개시물의 적어도 일부 실시형태들에 따른 일 예의 디렉터리 파일 (500) 을 도시한다. 도 5에 도시된 바와 같이, 디렉터리 파일 (500) 은 시스템 (100) 의 다양한 노드들의 공용 캐시들에 저장된 데이터와 연관된 정보를 포함한다. 일부 예들에서, 디렉터리 파일 (500) 은 노드 (121) 의 공용 캐시 (162) 에 저장될 수도 있다. 이들 예들의 경우, 도 5에 도시된 바와 같이, 각각의 노드의 개별 공용 캐시 (162) 에 저장된 데이터와 연관된 정보는, 노드 식별정보들 (ID들) 에 대한 열 (510), 노드 로케이션들에 대한 열 (520), 데이터 소스들의 어드레스들에 대한 열 (530), 데이터의 사이즈들 (예컨대, 바이트로 나타내어짐) 에 대한 열 (540), 개별 노드가 주어진 데이터 소스로부터 데이터를 다운로드하는데 걸린 시간에 대한 열 (550), 다운로드들의 날짜들/시간들에 대한 열 (560), 및 디렉터리 파일 (500) 에 열거된 각각의 노드에 대한 개별 공용 캐시들에 저장된 데이터와 연관된 타임 투 리브 값들의 추정값에 대한 열 (570) 을 포함한다.
일부 예들에서, 열 520에 나타낸 노드의 로케이션은 시스템 (100) 의 노드들이 그것들의 상대 로케이션들을 결정할 수 있게 할 수도 있는 (물리적 또는 논리적) 로케이션 수단 또는 GPS 좌표일 수도 있다. 열 530에 나타낸 데이터 소스 어드레스는 데이터가 획득된 곳을 나타내는 인터넷 어드레스일 수도 있다. 열 540에서의 데이터 사이즈는 메모리 단위들 (예컨대, 바이트) 에서 데이터가 얼마나 클 수도 있는지를 나타낼 수도 있다. 열 550에서의 다운로드 시간은 데이터가 노드에 의해 다운로드되었던 시간에 데이터 소스가 어떻게 응답하였나를 나타낼 수도 있다. 열 (550) 에 나타낸 데이터가 다운로드되었던 날짜/시간 데이터는 타임 투 리브 값을 추정하고 노드가 그것의 공용 캐시에 저장된 데이터를 그 데이터가 삭제되기 전에 얼마나 오랫동안 유지할지를 대략적으로 나타내기 위해 일부 예들에서 활용될 수도 있다.
일부 예들에 따르면, 노드 (121) 의 디렉터리 관리자 (180) 가 노드 (121) 의 공용 캐시 (162) 에 디렉터리 파일 (500) 을 저장하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 시스템 (100) 의 노드들은 시스템 (100) 의 다른 노드들의 공용 캐시들에 저장된 데이터에 관한 정보를 찾기 위한 디렉터리 요청들을 노드 (121) 에 지시할 수도 있다. 노드 (121) 에서의 디렉터리 관리자 (180) 는 수명 값에 기초하여 디렉터리 파일 (500) 에 대한 타임 투 리브 타이머를 할당하거나 또는 설정할 수도 있다. 디렉터리 관리자 (180) 는 또한 노드 (121) 에 디렉터리 요청들을 지시할 수도 있는 노드들의 로케이션에 기초하여 타임 투 리브 타이머를 조정할 수도 있다. 도 1에 대해 위에서 설명된 것과 유사하게, 일단 타임 투 리브 타이머가 만료되면, 디렉터리 관리자 (180) 는 노드 (121) 의 공용 캐시 (162) 로부터 디렉터리 파일 (500) 을 삭제할 수도 있다.
일부 예들에서, 디렉터리 파일 (500) 에서 지시된 노드들은 그것들의 개별 공용 캐시들에 유지된 데이터가 삭제되었거나 또는 타임 투 리브 타이머가 조정되었다는 것을 노드 (121) 에게 나타낼 수도 있다. 이들 예들의 경우, 노드 (121) 의 디렉터리 관리자 (180) 는 데이터의 삭제 또는 추정된 타임 투 리브 값에서의 변경 중 어느 하나를 반영하기 위해 디렉터리 파일 (500) 을 업데이트하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다.
일부 예들에 따르면, 디렉터리 파일 (500) 의 사이즈는 노드 (121) 의 공용 캐시 (162) 에서의 이용가능한 메모리보다 크게 될 수도 있다. 이들 예들의 경우, 노드 (121) 의 디렉터리 관리자 (180) 는 부가적인 정보를 디렉터리 파일 (500) 에 추가하는 것을 거절하고 그 정보를 제공하는 노드에 그 노드의 공용 캐시에 저장된 데이터와 연관된 정보가 디렉터리 파일 (500) 에 포함되지 않을 것임을 나타내도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 대안으로, 디렉터리 관리자 (180) 는 다른 노드의 공용 캐시에 저장된 다른 데이터와 연관된 정보를 제거할 수도 있다. 이 대안을 위해, 디렉터리 관리자 (180) 는 새로운 정보를 위한 방을 만들기 위해 디렉터리 파일 (500) 로부터 어떤 정보를 제거할지를 결정하기 위해 하나 이상의 체계들 (예컨대, 선입선출, 가중 라운드 로빈 (round-robin) 등) 을 구현하는 로직 및/또는 특징부들을 구비할 수도 있다. 그러면 디렉터리 파일 (500) 로부터 제거된 정보를 갖는 노드에 정보의 제거가 통지될 수도 있다.
도 6 은 본 개시물의 적어도 일부 실시형태들에 따른 디렉터리 파일을 유지하는 노드에 대한 일 예의 콜링 카드 (600) 를 예시한다. 도 6에 도시된 바와 같이, 콜링 카드 (600) 는 디렉터리 파일 (500) 에 포함된 정보로부터의 축약된 정보를 포함한다. 그 축약된 정보는 도 6에서는 열 610에서의 노드 ID들, 열 620에서의 노드 로케이션들 및 열 630에서의 데이터 소스 어드레스들로서 도시된다. 일부 예들에서, 노드 (121) 는 어떤 한 노드가 그 노드의 공용 캐시에 유지된 데이터에 관한 정보를 노드 (121) 에 제공한 후에 콜링 카드 (600) 를 그 노드에 제공할 수도 있다. 예를 들어, 시스템 (100) 의 노드 (127) 가 그것의 공용 캐시 (162) 에 저장된 데이터에 관한 정보를 전송 또는 포워딩했다면, 노드 (121) 의 디렉터리 관리자 (180) 는 디렉터리 파일 (500) 을 업데이트하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 그러면 콜링 카드 (600) 는 디렉터리 파일 (500) 에 포함된 정보의 적어도 일 부분을 나타내기 위해 노드 (127) 및 다른 노드들에 전송될 수도 있다. 디렉터리 관리자 (180) 는 또한 업데이트된 콜링 카드 (600) 를 시스템 (100) 에서의 다른 노드들에 전송할 수도 있다. 업데이트된 콜링 카드 (600) 는 노드 (121) 가 지금 노드 (127) 의 공용 캐시 (162) 에 저장된 데이터에 관한 정보를 유지하고 있음을 나타낼 수도 있다.
도 7은 본 개시물의 적어도 일부 실시형태들에 따른 피어 투 피어 데이터 마이그레이션을 위한 예의 방법들의 흐름도를 도시한다. 일부 예들에서, 도 1에 도시된 바와 같은 시스템 (100) 이 도 7에 묘사된 흐름도에 관련된 예의 방법들을 예시하는데 이용된다. 도 2에 도시된 바와 같은 파일 관리자 (170) 는 또한 예의 방법들을 예시하는데 사용될 수도 있다. 하지만 설명된 방법들은 도 1에 도시된 바와 같은 시스템 (100) 에 대한 구현예들로 또는 도 2에 도시된 파일 관리자 (170) 로 제한되지 않는다. 예의 방법들은 도 1 또는 도 2에 묘사된 엘리먼트들의 하나 이상을 갖는 다른 시스템들에 대해 구현될 수도 있다.
시작에서 시작하고 블록 (710) (데이터를 수신) 으로 이동하여, 노드 (121) 의 파일 관리자 (170) 는 데이터 소스(들) (112) 로부터 네트워크 통신 링크 (120A) 를 통해 (예컨대, 수신 특징부 (213) 를 통해) 데이터를 수신하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 그 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 하나 이상을 포함할 수도 있다. 일부 다른 예들에서, 그 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일의 제 1 부분을 포함할 수도 있다. 예를 들어, 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일의 제 2 부분은 다른 노드 (예컨대, 노드 (123)) 에 연관된 별개의 공용 캐시에 저장될 수도 있다. 이들 파일들의 부분들을 개별적으로 저장하는 것은 매우 큰 파일들이 데이터 소스로부터 하나 이상의 네트워크 통신 링크들을 통해 수신된 다음 피어 투 피어 통신 링크들을 통해 다른 노드들로 분배될 하나를 초과하는 노드들에 저장되는 것을 허용할 수도 있다.
블록 710부터 블록 720 (데이터를 저장) 으로 계속하면, 파일 관리자 (170) 는 노드 (121) 의 메모리 (160) 의 부분에 유지된 공용 캐시 (162) 에 수신된 데이터를 (예컨대, 캐시 특징부 (211) 를 통해) 저장하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 노드 (121) 의 공용 캐시 (162) 와 같은 주어진 노드의 공용 캐시 (162) 는, 결제 신용도, 현금 보조금, 또는 장비 보조금을 수신하는 것을 포함할 수도 있는 인센티브 프로그램에 기초하여 구성될 수도 있다. 이들 예들의 경우, 인센티브 프로그램은 네트워크 (120) 에서 네트워크 통신 링크들을 유지하는 오퍼레이터에 의해 노드 (121) (예컨대, 스마트 폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터 등) 의 사용자에게 제공될 수도 있다. 인센티브는, 메모리 (160) 의 부분에 대한 공용 액세스를 제공하고 그 메모리의 부분이 공용 캐시 (162) 를 포함하도록 구성되는 것을 허용하는 대신에, 노드 (121) 의 사용자에게 제공될 수도 있다. 그런 인센티브들은 네트워크 (120) 의 오퍼레이터에게 유익할 수도 있는데, 인센티브들이 데이터를 획득하기 위해 네트워크 통신 링크들 대신에 피어 투 피어 통신 링크들 및 자신들 소유의 개인 캐시들을 활용하도록 사용자들을 장려하기 때문이다.
블록 720으로부터 블록 730 (타임 투 리브 타이머를 설정) 으로 계속하여, 파일 관리자 (170) 는 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 (예컨대, 타이머 특징부 (215) 를 통해) 타임 투 리브 타이머를 설정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 데이터와 연관된 수명 값은 여러 더 많은 기준들에 기초할 수도 있다. 예를 들어, 노드 (121) 의 공용 캐시에서의 낮은 또는 제한된 가용 저장 용량으로 인해 또는 피어 투 피어 통신 링크들을 통해 하나 이상의 다른 노드들에 연결되는 노드 (121) 에 대한 제한된 가용 대역폭으로 인해 데이터에 작은 수명 값이 연관될 수도 있다. 또한, 작은 수명 값은 (예컨대, 노드 (121) 가 전력을 절약하기 위해 이동하거나 또는 시도하게 될 수도 있는) 다른 노드들과의 피어 투 피어 통신 링크들을 유지하기 위한 노드 (121) 에 대한 작은 시간 윈도우의 결과일 수도 있다. 위에서 언급된 제한들의 적어도 일부의 결과로서, 타임 투 리브 타이머는 비교적 짧은 기간 (예컨대, 수 분) 내에 만료하도록 설정될 수도 있다.
블록 730으로부터 결정 블록 740 (복사 요청을 수신?) 으로 계속하여, 파일 관리자 (170) 는 복사 요청이 시스템 (100) 에서의 다른 노드로부터 (예컨대, 요청 특징부 (217) 를 통해) 수신되었는지의 여부를 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 복사 요청은 노드 (125) 로부터 피어 투 피어 통신 링크 (150F) 를 통해 수신될 수도 있고 데이터 노드 (125) 가 요구하고 있는 것의 표시를 포함할 수도 있다. 복사 요청이 수신되었다면, 요청 특징부 (217) 는 노드 (125) 가 요청된 데이터를 복사하기 위해 노드 (121) 의 공용 캐시 (162) 에 액세스하는 것을 허용하고, 그 다음에 프로세스는 블록 750으로 진행할 수도 있다. 그렇지 않으면 프로세싱은 결정 블록 740으로부터 결정 블록 780으로 이동한다.
결정 블록 740으로부터 블록 750 (로케이션을 결정) 으로 계속하여, 파일 관리자 (170) 는 노드 (125) 의 로케이션을 (예컨대, 요청 특징부 (217) 를 통해) 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 복사 요청은 노드 (125) 의 로케이션의 표시를 포함할 수도 있다. 예를 들어, 노드 (125) 는 GPS 능력들을 가질 수도 있고 요청을 지시하는 때에 노드 (125) 의 물리적 포지션을 나타내는 GPS 정보를 복사 요청 내에 포함할 수도 있다. 다른 예들에서, 복사 요청은 유형의 네트워크 어드레스를 포함할 수도 있고, 이 유형의 네트워크 어드레스를 통해 노드 (121) 의 파일 관리자 (180) 가 노드 (125) 의 논리적 및/또는 물리적 로케이션을 결정하는 것을 가능하게 할 수도 있다.
블록 750으로부터 결정 블록 760 (타임 투 리브 타이머를 조정?) 으로 계속하여, 파일 관리자 (170) 는 타임 투 리브 타이머가 조정될 필요가 있는지의 여부를 (예컨대, 조정 특징부 (219) 를 통해) 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 그 결정은 시스템 (100) 의 노드 (125) 및 다른 노드들에 대한 노드 (121) 의 상대 포지션이 변경되었는지의 여부에 기초할 수도 있다. 노드 (121) 의 상대 포지션이 변경되었다면, 프로세싱은 결정 블록 760으로부터 블록 770으로 이동할 수도 있다. 그렇지 않으면, 프로세싱은 결정 블록 760으로부터 결정 블록 780으로 이동한다.
결정 블록 760으로부터 블록 770 (타임 투 리브 타이머를 조정) 으로 계속하여, 파일 관리자 (170) 는 노드 (121) 의 상대 로케이션에서의 변경들에 기초하여, 요청된 데이터와 연관된 타임 투 리브 타이머를 (예컨대, 조정 특징부 (219) 를 통해) 조정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 예를 들어, 도 4a 및 도 4b에 대해 위에서 언급했듯이, 노드 (121) 의 상대 포지션은 중앙집중화된 포지션으로부터 덜 중앙집중화된 포지션으로 변경될 수도 있다. 덜 중앙집중화된 포지션에서, 조정 특징부 (219) 는 타임 투 리브 타이머를 곧 만료하도록 조정할 수도 있다. 반대로, 더 많이 중앙집중화된 포지션에서, 조정 특징부 (219) 는 타임 투 리브 타이머를 나중에 만료하도록 조정할 수도 있다.
블록 770으로부터 결정 블록 780 (타이머 만료?) 으로 계속하여, 파일 관리자 (170) 는 타임 투 리브 타이머가 (예컨대, 타이머 특징부 (215) 를 통해) 만료되었는지의 여부를 결정하도록 구성된 로직 및/또는 특징부들을 포함할 수도 있다. 타임 투 리브 타이머가 만료되면 데이터는 노드 (121) 의 공용 캐시 (162) 로부터 삭제되고 프로세스는 종료된다. 그렇지 않으면, 프로세스는 결정 블록 740으로 다시 이동한다.
도 8은 본 개시물의 적어도 일부 실시형태들에 따른 피어 투 피어 데이터 마이그레이션을 위한 다른 예의 방법들의 흐름도를 도시한다. 일부 예들에서, 도 8에 묘사된 흐름도에 관련된 예의 방법들을 예시하기 위해 도 1에 도시된 바와 같은 시스템 (100) 이 이용된다. 도 3에 도시된 바와 같은 디렉터리 관리자 (180) 가 예의 방법들을 예시하는데 또한 사용될 수도 있다. 하지만 설명된 방법들은 도 1에 도시된 바와 같은 시스템 (100) 상의 구현예들로 또는 도 3에 도시된 디렉터리 관리자 (180) 로 제한되지 않는다. 예의 방법들은 도 1 또는 도 3에 묘사된 엘리먼트들의 하나 이상을 갖는 다른 시스템들에 대해 구현될 수도 있다.
시작에서 시작하고 블록 810 (공용 캐시를 유지) 으로 이동하여, 노드 (123) 의 디렉터리 관리자 (180) 는 (예컨대, 캐시 특징부 (311) 를 통해) 메모리 (160) 의 부분에 공용 캐시 (162) 를 유지하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 위에서 언급했듯이, 주어진 노드의 공용 캐시 (162) 는 결제 신용도, 현금 보조금, 또는 장비 보조금을 수신하는 것을 포함할 수도 있는 인센티브 프로그램에 기초하여 구성될 수도 있다. 이들 예들의 경우, 인센티브들은, 하나 이상의 디렉터리 파일들을 저장하는 장소로서 사용하기 위한 메모리 (160) 의 부분에 대한 공용 액세스를 제공하고 그 메모리의 부분이 공용 캐시 (162) 를 포함하도록 구성되는 것을 허용하는 대신에, 노드 (123) 의 사용자에게 제공될 수도 있다. 그런 인센티브들은 네트워크 (120) 의 오퍼레이터에 유익할 수도 있다. 예를 들어, 인센티브들은, 원격 소스 (예컨대, 데이터 소스(들) (112)) 로부터 데이터를 획득하기 위해 네트워크 통신 링크들 및 네트워크 자원들을 사용하는 대신에, 사용자들이 피어 투 피어 통신 링크들을 활용하고 공용 캐시에 데이터를 국소적으로 저장할 수도 있는 다른 노드들을 찾거나 또는 위치찾기하는 (locate) 것을 장려할 수도 있다.
블록 810으로부터 블록 820 (디렉터리 파일을 저장) 으로 계속하여, 디렉터리 관리자 (180) 는 노드 (123) 의 공용 캐시 (162) 에 (예컨대, 정보 특징부 (313) 를 통해) 디렉터리 파일을 저장하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 디렉터리 파일은 하나 이상의 다른 노드들의 공용 캐시(들) (162) 에 저장된 데이터와 연관된 정보를 포함할 수도 있다. 그 데이터는, 예를 들어, 데이터 소스(들) (112) 과 같은 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 하나 이상의 다른 노드들에 의해 원래 수신되어 있을 수도 있다. 또한, 동일한 데이터는 원격 데이터 소스로부터 데이터를 원래 수신했던 노드로부터 복사되었을 수도 있지만, 그 데이터의 지금의 복사본은 다른 노드의 별개의 공용 캐시 (162) 에 유지될 수도 있다. 디렉터리 파일은 이들 노드들 양쪽 모두를 그 데이터를 갖는 것으로서 식별하는 정보를 포함할 수도 있거나, 또는 복사 노드를 그 데이터를 갖는 것으로서 나타내기만 할 수도 있다.
블록 820으로부터 블록 830 (타임 투 리브 타이머를 설정) 으로 계속하여, 디렉터리 관리자 (180) 는 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 (예컨대, 타이머 특징부 (315) 를 통해) 타임 투 리브 타이머를 설정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 디렉터리에 연관된 수명 값은 여러 더 많은 기준들에 기초할 수도 있다. 예를 들어, 피어 투 피어 통신 링크들을 통해 하나 이상의 다른 노드들에 연결되는 노드 (123) 에 대한 낮거나 또는 제한된 가용 대역폭으로 인해 작은 수명 값이 디렉터리 파일에 연관될 수도 있다. 또한, 작은 수명 값은 (예컨대, 노드 (123) 가 전력을 절약하기 위해 이동하거나 또는 시도하게 될 수도 있는) 다른 노드들과의 피어 투 피어 통신 링크들을 유지하기 위한 노드 (123) 에 대한 작은 시간 윈도우의 결과일 수도 있다. 위에서 언급된 제한들의 적어도 일부의 결과로서, 타임 투 리브 타이머는 비교적 짧은 기간 (예컨대, 수 분) 내에 만료하도록 설정될 수도 있다.
블록 830으로부터 결정 블록 840 (디렉터리 요청을 수신?) 으로 계속하여, 디렉터리 관리자 (180) 는 디렉터리 요청이 시스템 (100) 에서의 다른 노드로부터 (예컨대, 요청 특징부 (317) 를 통해) 수신되었는지의 여부를 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 디렉터리 요청은 피어 투 피어 통신 링크 (150E) 를 통해 노드 (125) 로부터 수신될 수도 있고 주어진 노드의 공용 캐시 (162) 에서의 데이터에 대한 탐색 또는 질의와 그것의 가능한 로케이션을 포함할 수도 있다. 디렉터리 요청이 수신되었다면, 요청 특징부 (317) 는 노드 (125) 가 디렉터리 파일 (예컨대, 디렉터리 파일 (500)) 에 유지된 디렉터리 정보를 획득하기 위해 노드 (121) 의 공용 캐시 (162) 에 액세스하는 것을 허용하고 그 다음에 프로세스는 블록 850으로 이동할 수도 있다. 그렇지 않으면 프로세싱은 결정 블록 840으로부터 결정 블록 880으로 이동한다.
결정 블록 840으로부터 블록 850 (로케이션을 결정) 으로 계속하여, 디렉터리 관리자 (180) 는 노드 (125) 의 로케이션을 (예컨대, 요청 특징부 (317) 를 통해) 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 디렉터리 요청은 노드 (125) 의 로케이션의 표시를 포함할 수도 있다. 예를 들어, 노드 (125) 는 GPS 능력들을 가질 수도 있고 요청을 지시하는 때에 노드 (125) 의 물리적 포지션을 나타내는 정보를 디렉터리 요청 내에 포함할 수도 있다. 다른 예들에서, 디렉터리 요청은 노드 (123) 의 디렉터리 관리자 (180) 가 노드 (125) 의 논리적 및/또는 물리적 로케이션을 결정하는 것을 가능하게 할 수도 있는 유형의 네트워크 어드레스를 포함할 수도 있다.
블록 850으로부터 결정 블록 860 (타임 투 리브 타이머를 조정?) 으로 계속하여, 디렉터리 관리자 (180) 는 타임 투 리브 타이머가 조정될 필요가 있는지의 여부를 (예컨대, 조정 특징부 (319) 를 통해) 결정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 일부 예들에서, 결정은 시스템 (100) 의 노드 (125) 및 다른 노드들에 대한 노드 (123) 의 상대 포지션이 변경되었는지의 여부에 기초할 수도 있다. 노드 (123) 의 상대 포지션이 변경되었다면, 프로세싱은 결정 블록 860으로부터 블록 870으로 이동할 수도 있다. 그렇지 않으면, 프로세싱은 결정 블록 860으로부터 결정 블록 880으로 이동한다.
결정 블록 860으로부터 블록 870 (타임 투 리브 타이머를 조정) 으로 계속하여, 디렉터리 관리자 (180) 는 노드 (123) 의 상대 로케이션에서의 변경들에 기초하여, 디렉터리 파일에 연관된 타임 투 리브 타이머를 (예컨대, 조정 특징부 (319) 를 통해) 조정하도록 구성된 로직 및/또는 특징부들을 구비할 수도 있다. 예를 들어, 노드 (121) 에 대한 도 4a 및 도 4b에 대해 위에서 언급된 것과 유사하게, 노드 (123) 의 상대 포지션은 중앙집중화된 포지션으로부터 덜 중앙집중화된 포지션으로 변경할 수도 있다. 덜 중앙집중화된 포지션에서, 조정 특징부 (319) 는 타임 투 리브 타이머를 곧 만료하도록 조정할 수도 있다. 반대로, 더 많이 중앙집중화된 포지션에서, 조정 특징부 (219) 는 타임 투 리브 타이머를 나중에 만료하도록 조정할 수도 있다.
블록 870으로부터 결정 블록 880 (타이머 만료?) 으로 계속하여, 디렉터리 관리자 (180) 는 타임 투 리브 타이머가 (예컨대, 타이머 특징부 (315) 를 통해) 만료되었는지의 여부를 결정하도록 구성된 로직 및/또는 특징부들을 포함할 수도 있다. 타임 투 리브 타이머가 만료되면 디렉터리 파일은 노드 (123) 의 공용 캐시 (162) 로부터 삭제되고 프로세스는 종료된다. 그렇지 않으면, 프로세스는 결정 블록 840으로 다시 이동한다.
도 9는 본 개시물의 적어도 일부 실시형태들에 따른 일 예 컴퓨터 프로그램 제품 (900) 의 블록도를 도시한다. 일부 예들에서, 도 9에 도시된 바와 같이, 컴퓨터 프로그램 제품 (900) 은 피어 투 피어 데이터 마이그레이션을 위한 명령들 (904) 을 또한 구비할 수도 있는 신호 베어링 매체 (902) 를 구비한다. 명령들 (904) 은, 로직 (예컨대, 파일 로직 (210)) 에 의해 실행되는 경우, 그 로직으로 하여금 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 연결된 제 1 노드에서 데이터를 수신하게 할 수도 있다. 그 데이터는 제 1 노드 및 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 수신될 수도 있다. 그 명령들은 또한 로직으로 하여금 제 1 노드와 연관된 공용 캐시에 데이터를 저장하게 할 수도 있다. 그 공용 캐시는 제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지될 수도 있다. 명령들 (904) 은 또한 로직으로 하여금 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 그 데이터에 대한 타임 투 리브 타이머를 설정하게 할 수도 있다. 일부 예들에서, 데이터는 타임 투 리브 타이머의 만료에 응답하여 제 1 노드와 연관된 공용 캐시로부터 나중에 삭제될 수도 있다. 명령들 (904) 은 또한 로직으로 하여금 제 1 노드와 연관된 공용 캐시로부터 데이터를 복사하기 위한 복사 요청을 제 2 노드로부터 수신하고 제 1 노드의 로케이션에 대한 제 2 노드의 로케이션을 결정하게 할 수도 있다. 명령들 (904) 은 추가로 로직으로 하여금 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 타임 투 리브 타이머를 조정하게 할 수도 있다.
또한 도 9에 묘사된, 일부 예들에서, 컴퓨터 제품 (900) 은 컴퓨터 판독가능 매체 (906), 기록가능 매체 (908) 및 통신 매체 (910) 중 하나 이상을 구비할 수도 있다. 이들 엘리먼트들을 둘러싸는 점선 상자들은, 신호 베어링 매체 (902) 에 포함되지만 그것으로 제한되지 않는 매체들의 상이한 유형들을 묘사한다. 이들 유형들의 매체들은 로직 (예컨대, 파일 로직 (210)) 에 의해 실행될 명령들 (904) 을 배포할 수도 있다. 컴퓨터 판독가능 매체 (906) 와 기록가능 매체 (908) 는 플렉시블 디스크, 하드 디스크 드라이브 (HDD), 콤팩트 디스크 (CD), 디지털 다기능 디스크 (DVD), 디지털 테이프, 컴퓨터 메모리 등을 포함할 수도 있지만 그것들로 제한되지 않는다. 통신 매체 (910) 는 디지털 및/또는 아날로그 통신 매체 (예컨대, 광섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등) 를 포함할 수도 있으나 그것들로 제한되지 않는다.
도 10은 본 개시물의 적어도 일부 실시형태들에 따른 일 예의 컴퓨팅 디바이스 (1000) 를 도시한다. 일부 예들에서, 도 1, 도 2 또는 도 3에 묘사된 파일 관리자 (170) 또는 디렉터리 관리자 (180) 는 컴퓨팅 디바이스 (1000) 에 대해 구현될 수도 있다. 이들 예들에서, 컴퓨팅 디바이스 (1000) 의 엘리먼트들은 하나 이상의 피어 투 피어 통신 링크들을 통해 연결된 노드들 사이의 피어 투 피어 데이터 마이그레이션을 위해 배열되거나 또는 구성될 수도 있다. 매우 기본적인 구성 (1001) 에서, 컴퓨팅 디바이스 (1000) 는 일반적으로 하나 이상의 프로세서들 (1010) 및 시스템 메모리 (1020) 를 구비한다. 프로세서 (1010) 및 시스템 메모리 (1020) 사이에서 통신하기 위해 메모리 버스 (1030) 가 사용될 수 있다.
소망의 구성에 따라, 프로세서 (1010) 는 마이크로프로세서 (μP), 마이크로제어기 (μC), 디지털 신호 프로세서 (DSP), 또는 그것들의 임의의 조합을 포함하지만 그것들로 제한되지 않는 임의의 유형으로 될 수 있다. 프로세서 (1010) 는 하나 이상의 레벨들의 캐싱, 이를테면 레벨 1 캐시 (1011) 및 레벨 2 캐시 (1012), 프로세서 코어 (1013), 및 레지스터들 (1014) 을 구비할 수 있다. 프로세서 코어 (1013) 는 산술 논리 연산 유닛 (ALU), 부동 소수점 유닛 (FPU), 디지털 신호 프로세싱 코어 (DSP Core), 또는 그것들의 임의의 조합을 포함할 수 있다. 메모리 제어기 (1015) 는 또한 프로세서 (1010) 와 함께 사용될 수 있거나, 또는 일부 구현예들에서 메모리 제어기 (1015) 는 프로세서 (1010) 의 내부 부분일 수 있다.
소망의 구성에 따라, 시스템 메모리 (1020) 는 휘발성 메모리 (이를테면 RAM), 비휘발성 메모리 (이를테면 ROM, 플래시 메모리 등) 또는 그것들의 임의의 조합을 포함하지만 그것들로 제한되지 않는 임의의 유형일 수도 있다. 시스템 메모리 (1020) 는 일반적으로 운영 체제 (1021), 하나 이상의 애플리케이션들 (1022), 및 프로그램 데이터 (1024) 를 구비한다. 애플리케이션 (1022) 은 도 2에 도시된 파일 관리자 (170) 아키텍처, 도 3에 도시된 디렉터리 관리자 (180) 아키텍처에 관해 설명된 액션들 또는 도 7 및 도 8에 도시된 흐름도들에 관해 설명된 액션들을 포함하는 본원에서 설명된 바와 같은 기능들을 수행하도록 구성되는 명령들 (1023) 을 포함한다. 프로그램 데이터 (1024) 는 명령들 (1023) (예컨대, 데이터를 복사, 로케이션들을 결정, 디렉터리 정보를 제공, 콜링 카드들을 제공, 타임 투 리브 타이머들을 설정/조정 등) 을 구현하는 데 유용한 마이그레이션 데이터 (1025) 를 포함한다. 일부 예들에서, 애플리케이션 (1022) 은 하나 이상의 피어 투 피어 통신 링크들을 통해 연결된 노드들 사이의 피어 투 피어 데이터 마이그레이션을 위한 구현예들이 본원에서 설명된 바와 같이 제공될 수도 있도록 운영 체제 (1021) 상의 프로그램 데이터 (1024) 로 동작하도록 구성될 수도 있다. 이 설명된 기본적인 구성은 도 10에서 파선 (1001) 내의 컴포넌트들에 의해 예시된다.
컴퓨팅 디바이스 (1000) 는 기본 구성 (1001) 과 임의의 필요한 디바이스들 및 인터페이스들 사이의 통신들을 용이하게 하기 위해 부가적인 특징들 또는 기능, 및 부가적인 인터페이스들을 가질 수 있다. 예를 들어, 버스/인터페이스 제어기 (1040) 는 저장 인터페이스 버스 (1041) 를 통해 기본 구성 (1001) 및 하나 이상의 데이터 저장 디바이스들 (1050) 사이의 통신들을 용이하게 하는데 이용될 수 있다. 데이터 저장 디바이스들 (1050) 은 착탈식 저장 디바이스들 (1051), 비착탈식 저장 디바이스들 (1052), 또는 그것들의 조합일 수 있다. 착탈식 스토리지 및 비착탈식 저장 디바이스들의 예들은 몇몇 이름을 대자면 자기적 디스크 디바이스들 이를테면 플렉시블 디스크 드라이브들 및 하드 디스크 드라이브들 (HDD), 광 디스크 드라이브들 이를테면 콤팩트 디스크 (CD) 드라이브들 또는 디지털 다기능 디스크 (DVD) 드라이브들, 고체 상태 드라이브들 (SSD), 및 테이프 드라이브들을 포함한다. 예의 컴퓨터 저장 매체들은 정보, 이를테면 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체들을 포함할 수 있다.
시스템 메모리 (1020), 착탈식 스토리지 (1051) 및 비착탈식 스토리지 (1052) 는 컴퓨터 저장 매체들의 모든 예들이다. 컴퓨터 저장 매체들은, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크들 (DVD) 또는 다른 광학적 스토리지, 자기 카세트들, 자기 테이프, 자기 디스크 스토리지 또는 기타 자기 저장 디바이스들, 또는 소망의 정보를 저장하는데 사용될 수 있고 컴퓨팅 디바이스 (1000) 에 의해 액세스될 수 있는 임의의 다른 매체를 포함하나 그것들로 제한되지 않는다. 임의의 그런 컴퓨터 저장 매체들은 디바이스 (1000) 의 부분일 수 있다.
컴퓨팅 디바이스 (1000) 는 또한 다양한 인터페이스 디바이스들 (예컨대, 출력 인터페이스들, 주변 인터페이스들, 및 통신 인터페이스들) 로부터 버스/인터페이스 제어기 (1040) 를 통해 기본 구성 (1001) 으로의 통신을 용이하게 하기 위한 인터페이스 버스 (1042) 를 구비할 수 있다. 예의 출력 인터페이스들 (1060) 은 그래픽 프로세싱 유닛 (1061) 과 오디오 프로세싱 유닛 (1062) 을 구비하며, 그것들은 하나 이상의 A/V 포트들 (1063) 을 통해 디스플레이 또는 스피커들과 같은 다양한 외부 디바이스들과 통신하도록 구성될 수 있다. 예의 주변 인터페이스들 (1060) 은 직렬 인터페이스 제어기 (1071) 또는 병렬 인터페이스 제어기 (1072) 를 구비하며, 그것은 하나 이상의 /O 포트들 (1073) 을 통해 입력 디바이스들 (예컨대, 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등) 또는 다른 주변 디바이스들 (예컨대, 프린터, 스캐너 등) 과 같은 외부 디바이스들과 통신하도록 구성될 수 있다. 일 예의 통신 인터페이스 (1080) 는 네트워크 제어기 (1081) 를 구비하며, 그것은 하나 이상의 통신 포트들 (1082) 을 통한 네트워크 통신을 거쳐서 하나 이상의 다른 컴퓨팅 디바이스들 (1090) 과의 통신들을 용이하게 하도록 구성될 수 있다. 네트워크 통신 접속은 통신 매체들의 하나의 예이다. 통신 매체들은 일반적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 변조된 데이터 신호, 이를테면 반송파 또는 다른 전송 메커니즘 내의 다른 데이터에 의해 구현되고, 임의의 정보 전달 매체들을 포함할 수도 있다. "변조된 데이터 신호"는 신호 내의 정보를 인코딩할 정도의 방식으로 설정되거나 또는 변경된 그것의 특성들 중 하나 이상을 가지는 신호일 수 있다. 비제한적인 예로서, 통신 매체들은 유선 매체들 이를테면 유선 네트워크 또는 직접 유선 접속과, 무선 매체들 이를테면 음향, 무선 주파수 (RF), 적외선 (IR) 및 다른 무선 매체들을 포함할 수 있다. 본원에서 사용되는 컴퓨터 판독가능 매체들이라는 용어는 저장 매체들 및 통신 매체들 양쪽 모두를 포함할 수 있다.
컴퓨팅 디바이스 (1000) 는 셀 전화기, 스마트 폰, 개인휴대 정보단말 (PDA), 개인용 미디어 플레이어 디바이스, 무선 웹-와치 디바이스, 개인용 헤드셋 디바이스, 애플리케이션 특정 디바이스, 또는 위의 기능들 중 임의의 것을 포함하는 하이브리드 디바이스와 같은 작은 폼 팩터 휴대용 (또는 모바일) 전자 디바이스의 부분으로서 구현될 수 있다. 컴퓨팅 디바이스 (1000) 는 또한 랩톱 컴퓨터 및 비-랩톱 컴퓨터 구성들 양쪽 모두를 포함하는 개인용 컴퓨터로서 구현되거나 또는 워크스테이션 또는 서버 구성으로 구현될 수 있다.
"에 응답하는 (responsive to)" 또는 "에 응답하여 (in response to)"라는 어구에 대해 본 개시물에서 행해진 언급들은 특정 특징 및/또는 구조에 대한 응답으로 제한되지 않는다. 특징은 또한 다른 특징 및/또는 구조에 응답하는 것일 수도 있고 또한 그 특징 및/또는 구조 내에 위치될 수도 있다. 더구나, "연결된 (coupled)" 또는 "응답하는" 또는 "에 응답하여" 또는 "와 통신하여" 등과 같은 말 또는 어구가 본 상세한 설명 내에서 또는 뒤따르는 청구항들에서 사용되는 경우, 이들 말들은 넓게 해석되어야 한다. 예를 들어, 어구 "에 연결된 (coupled to)"은 그 어구가 사용되는 문맥에 적절한 대로 통신적으로, 전기적으로 및/또는 동작상 연결된 것을 말할 수도 있다.
당업자들은 본원에서 언급된 방식의 디바이스들 및/또는 프로세스들을 설명하고 그 후에 그런 설명된 디바이스들 (예컨대, 송신기들, 수신기들, 무선 디바이스들, 컴퓨팅 플랫폼들, 컴퓨팅 디바이스들, 태블릿들, 핸드셋들 등) 및/또는 방법들을 데이터 프로세싱 시스템들에 통합하도록 엔지니어링 실례들을 이용하는 것이 당해 기술분야에서 흔한 일이라는 것이 이해될 것이다. 다시 말하면, 본원에서 설명되는 디바이스들 및/또는 방법들의 적어도 일 부분은 합리적인 양의 실험들을 통해 데이터 프로세싱 시스템에 통합될 수 있다. 당업자들은, 전형적인 데이터 프로세싱 시스템이 일반적으로, 시스템 유닛 하우징, 비디오 디스플레이 디바이스, 휘발성 및 비휘발성 메모리와 같은 메모리, 마이크로프로세서들 및 디지털 신호 프로세서들과 같은 프로세서들, 운영 체제들, 드라이버들, 그래픽 사용자 인터페이스들, 및 애플리케이션 프로그램들과 같은 컴퓨테이션 엔티티들, 하나 이상의 상호작용 디바이스들, 이를테면 터치 패드 또는 스크린, 및/또는 피드백 루프들 및 제어 모터들 (예컨대, 포지션 및/또는 속도를 감지하기 위한 피드백; 컴포넌트들 및/또는 양들을 이동 및/또는 조정하기 위한 제어 모터들) 을 구비한 제어 시스템들 중 하나 이상을 포함한다는 것을 인식할 것이다. 전형적인 데이터 프로세싱 시스템은 임의의 적합한 상업적으로 입수가능한 컴포넌트, 이를테면 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템들에서 일반적으로 발견되는 것들을 활용하여 구현될 수도 있다.
본원에서 설명된 주제는 때때로 상이한 다른 컴포넌트들 또는 엘리먼트들 내에 포함되거나 또는 이들과 접속되는 상이한 컴포넌트들 또는 엘리먼트들을 예시한다. 그런 묘사된 아키텍처들은 단지 예들이라는 것과, 사실 많은 다른 아키텍처들이 동일한 기능을 달성하기 위해 구현될 수 있다는 것이 이해되어야만 한다. 개념적 의미에서, 동일한 기능을 달성하는 컴포넌트들의 임의의 배열은 소망의 기능이 달성되도록 효과적으로 "연관된 (associated)"다. 그런고로, 특정 기능을 달성하기 위해 본원에서 조합된 임의의 2 개의 컴포넌트들은 아키텍처들 또는 개재 컴포넌트들에 무관하게 소망의 기능이 달성되도록 서로 "에 연관된 (associated with)" 것으로서 여겨질 수 있다. 비슷하게, 그렇게 연관된 임의의 2 개의 컴포넌트들은 또한 소망의 기능을 달성하기 위해 서로에 대해 "동작상 접속된 (operably connected)", 또는 "동작상 연결된 (operably coupled)" 것으로 보여질 수 있고, 그렇게 연관될 수 있는 임의의 2 개의 컴포넌트들은 또한 소망의 기능을 달성하기 위해 서로에 "동작상 연결가능한 (operably couplable)" 것으로서 보여질 수 있다. 동작상 연결가능한 특정 예들은 물리적으로 교합가능한 (mateable) 및/또는 물리적으로 상호작용하는 컴포넌트들 및/또는 무선으로 상호작용가능한 및/또는 무선으로 상호작용하는 컴포넌트들 및/또는 논리적으로 상호작용하는 및/또는 논리적으로 상호작용가능한 컴포넌트들을 포함하지만 그것들로 제한되지 않는다.
본원에서의 실질적으로 임의의 복수 및/또는 단수의 용어들의 사용에 관해, 당업자들은 상황 및/또는 애플리케이션에 적합하게 복수에서 단수로 그리고/또는 단수에서 복수로 해석할 수 있다. 다양한 단수/복수 교환들은 명료함을 위해 본원에서 명시적으로 언급될 수도 있다.
대체로, 본원에서, 특히 첨부의 청구항들 (예컨대, 첨부의 청구항들의 본문) 에서 사용된 어구들은 일반적으로 "개방형 (open)" 어구들로서 의도된다 (예컨대, 어구 "포함하는 (including)"은 "포함하지만 그것으로 제한되지 않는 (including but not limited to)"으로 해석되어야 하며, 어구 "갖는"은 "적어도 갖는"으로 해석되어야 하며, 어구 "포함한다"는 "포함하지만 그것으로 제한되지 않는다"로 해석되어야 하는 등등이다) 는 것이 당업자들에게 이해될 것이다. 도입하는 청구항 기재의 특정 수가 의도된다면, 이러한 의도는 그 청구항에서 명시적으로 기재되어야 할 것이고, 그런 기재가 없을 시 그런 의도는 존재하지 않는다는 것이 당업자에게 추가로 이해될 것이다. 예를 들어, 이해를 돕기 위해, 다음의 첨부된 청구항들이 청구항 기재에 도입하기 위해 도입 어구들인 "적어도 하나" 및 "하나 이상의"의 사용을 포함할 수도 있다. 그러나, 그런 어구들의 사용은, 동일한 청구항이 도입 어구들인 "하나 이상의" 또는 "적어도 하나" 및 "a" 또는 "an"과 같은 부정 관사들 (예컨대, "a" 및/또는 "an"은 "적어도 하나" 또는 "하나 이상의"를 의미하는 것으로 통상 해석되어야 한다) 을 포함하는 경우에도, 부정 관사들인 "a" 또는 "an"에 의한 청구항 기재의 도입이 그런 도입 청구항 기재를 포함하는 임의의 특정한 청구항을 하나의 그런 기재만을 포함하는 발명들로 제한하는 것을 의미하도록 해석되지 않아야 하며, 청구항 기재를 도입하는데 사용되는 정관사의 사용에 대해서도 동일하게 유효하다. 덧붙여서, 도입되는 청구항 기재의 특정 수가 명시적으로 기재되는 경우에도, 당업자들은 그런 기재가 적어도 기재된 수를 의미하는 것으로는 일반적으로 해석되어야 한다 (예컨대, 다른 수식어 없는 "2 개의 기재들"이란 있는 그대로의 기재는, 적어도 2 개의 기재들, 또는 둘 이상의 기재들을 일반적으로 의미한다) 는 것이 이해될 것이다. 더욱이, "A, B, 및 C 중 적어도 하나 등"에 유사한 관례가 사용되는 경우들에서, 일반적으로 그런 구성은 당업자가 그 관례를 이해할 것이라는 의미로 의도된다 (예컨대, "A, B, 및 C 중 적어도 하나를 갖는 시스템"은 A만을, B만을, C만을, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 그리고/또는 A, B, 및 C를 함께 등을 갖는 시스템들을 포함하지만 그것들로 제한되지 않을 것이다). "A, B, 또는 C 중 적어도 하나 등"과 유사한 관례가 사용되는 경우들에서, 일반적으로 그런 구성은 당업자가 그 약속사항을 이해할 것이라는 의미로 의도된다 (예컨대, "A, B, 또는 C 중 적어도 하나를 갖는 시스템"은 A만을, B만을, C만을, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 그리고/또는 A, B, 및 C를 함께 등을 갖는 시스템들을 포함하지만 그것들로 제한되지 않을 것이다). 상세한 설명, 청구범위 또는 도면에서, 2 개 이상의 택일적 용어들을 나타내는 사실상 임의의 이접 단어 및/또는 어구가 용어들 중 하나, 용어들 중 어느 한쪽 또는 용어들 양쪽 모두를 포함할 가능성들을 의도하는 것이 당업자에 의해 추가로 이해될 것이다. 예를 들어, 어구 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"의 가능성들을 포함하는 것으로 이해될 것이다.
다양한 양태들 및 실시형태들이 본원에서 개시되었지만, 다른 양태들 및 실시형태들은 당업자들에게 명확할 것이다. 본원에서 개시된 다양한 양태들 및 실시형태들은 다음의 청구항들에 의해 나타내어진 진정한 범위 및 정신을 예시할 목적이고 제한하려는 의도는 아니다.

Claims (42)

  1. 피어 투 피어 데이터 마이그레이션을 위한 방법으로서,
    제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 통신적으로 연결된 제 1 노드에서 데이터를 수신하는 것으로서, 상기 데이터는 상기 제 1 노드 및 상기 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 수신되는, 상기 데이터를 수신하는 것;
    상기 제 1 노드와 연관된 공용 캐시에 상기 데이터를 저장하는 것으로서, 상기 공용 캐시는 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지되는, 상기 데이터를 저장하는 것;
    상기 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 상기 데이터에 대한 타임 투 리브 (time-to-live) 타이머를 설정하는 것으로서, 상기 데이터는 상기 타임 투 리브 타이머의 만료에 응답하여 상기 제 1 노드와 연관된 상기 공용 캐시로부터 삭제되는, 상기 타임 투 리브 타이머를 설정하는 것;
    상기 제 2 노드로부터, 상기 제 1 노드와 연관된 상기 공용 캐시로부터 상기 데이터를 복사하기 위한 복사 요청을 수신하는 것;
    상기 제 1 노드의 로케이션에 대한 상기 제 2 노드의 로케이션을 결정하는 것; 및
    상기 제 2 노드의 상기 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  2. 제 1 항에 있어서,
    상기 데이터와 연관된 상기 수명 값은, 다른 노드들이 상기 데이터 소스로부터 상기 데이터를 별도로 수신하기 위한 추정된 다운로드 시간들에 비교하여, 상기 제 2 노드가 상기 제 1 노드와 연관된 상기 공용 캐시로부터 상기 데이터를 복사하기 위한 상대적 응답 시간에 적어도 부분적으로 기초하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  3. 제 1 항에 있어서,
    상기 데이터와 연관된 상기 수명 값은, 상기 제 1 노드와 연관된 상기 공용 캐시에서의 가용 저장 용량, 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 통신적으로 연결되는 상기 제 1 노드에 대한 이용가능한 대역폭, 또는 상기 제 1 노드가 제 2 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 통신적으로 연결된 채로 유지되는 시간 양 중 하나에 적어도 부분적으로 기초하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  4. 제 1 항에 있어서,
    상기 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나를 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  5. 제 1 항에 있어서,
    상기 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나의 제 1 부분을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  6. 제 5 항에 있어서,
    상기 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나의 제 2 부분은 제 3 노드와 연관된 별개의 공용 캐시에 저장된 다른 데이터에 포함되며, 상기 제 3 노드는 제 2 피어 투 피어 통신 링크를 통해 상기 제 1 노드에 통신적으로 연결되는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  7. 제 1 항에 있어서,
    상기 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것은, 상기 제 2 노드 및 하나 이상의 피어 투 피어 통신 링크들을 통해 상기 제 1 노드에 통신적으로 연결된 다른 노드들 중 적어도 하나의 별개의 노드 양쪽 모두에 대한 중앙집중화된 (centralized) 로케이션에 상기 제 1 노드가 있음을 상기 제 2 노드의 상대 로케이션이 나타내면, 상기 타임 투 리브 타이머를 나중에 만료하도록 조정하는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  8. 제 1 항에 있어서,
    상기 제 1 노드의 공용 캐시로부터 상기 데이터를 복사하기 위한 별개의 복사 요청을 제 3 노드로부터 수신하는 것;
    상기 제 1 노드의 로케이션에 대한 상기 제 3 노드의 로케이션을 결정하는 것; 및
    상기 제 3 노드의 상기 로케이션 및 상기 제 2 노드의 상기 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 더 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  9. 제 8 항에 있어서,
    상기 제 3 노드의 상기 로케이션 및 상기 제 2 노드의 상기 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것은, 상기 제 1 노드가 상기 제 3 노드 및 상기 제 2 노드 양쪽 모두에 대하여 중앙집중화된 로케이션에 있지 않음을 상기 제 3 노드의 상기 로케이션 및 상기 제 2 노드의 상기 로케이션이 나타낸다고 결정되면 상기 타임 투 리브 타이머를 감소시키는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  10. 제 1 항에 있어서,
    상기 제 2 노드의 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것은, 상기 제 2 노드가 상기 데이터 소스로부터 상기 데이터를 수신하기 위한 추정된 다운로드 시간에 비교하여, 상기 제 2 노드가 상기 제 1 노드와 연관된 상기 공용 캐시로부터 상기 데이터를 복사하기 위한 응답 시간에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 더 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  11. 제 1 항에 있어서,
    상기 제 1 노드의 상기 로케이션에 대한 상기 제 2 노드의 상기 로케이션을 결정하는 것은, 상기 제 2 노드의 물리적 로케이션을 나타내기 위해 사용되며 상기 복사 요청에 포함된 정보에 적어도 부분적으로 기초하여 상기 제 2 노드의 상기 로케이션을 결정하는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  12. 제 1 항에 있어서,
    상기 제 1 노드와 연관된 상기 공용 캐시는 결제 신용도, 현금 보조금, 또는 장비 보조금 중 하나를 포함하는 인센티브 프로그램에 적어도 부분적으로 기초하여 구성될 메모리 부분을 포함하며, 상기 인센티브 프로그램은 상기 메모리 부분에 대한 액세스를 제공하고 상기 메모리 부분이 상기 제 1 노드와 연관된 상기 공용 캐시를 유지하도록 구성되는 것을 허용하는 대신에, 상기 네트워크 통신 링크의 오퍼레이터에 의해 상기 제 1 노드의 사용자에게 제공되는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  13. 제 1 항에 있어서,
    상기 제 1 피어 투 피어 통신 링크는 무선 근거리 액세스 네트워크 통신 링크, 유선 근거리 액세스 네트워크 통신 링크, 무선 광역 네트워크 통신 링크, 유선 광역 네트워크 통신 링크 또는 블루투스 통신 링크 중 적어도 하나를 포함하고, 상기 노드가 상기 데이터 소스로부터 상기 데이터를 수신하게 하는 상기 네트워크 통신 링크는 상기 노드를 인터넷을 통해 상기 데이터 소스에 통신적으로 연결시키는 네트워크 통신 링크를 구비하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  14. 피어 투 피어 데이터 마이그레이션을 위한 방법으로서,
    제 1 노드와 연관된 제 1 공용 캐시를 유지하는 것으로서, 상기 제 1 공용 캐시는 다른 노드들에 의해 하나 이상의 피어 투 피어 통신 링크들을 통해 액세스가능한, 상기 제 1 공용 캐시를 유지하는 것;
    상기 제 1 공용 캐시에 디렉터리 파일을 저장하는 것으로서, 상기 디렉터리 파일은 제 2 노드와 연관된 제 2 공용 캐시에 저장된 데이터와 연관된 정보를 포함하도록 구성되며, 상기 디렉터리 파일은 또한 상기 제 2 노드의 로케이션을 포함하는, 상기 디렉터리 파일을 저장하는 것;
    상기 디렉터리 파일에 연관된 수명 값에 적어도 부분적으로 기초하여 상기 디렉터리 파일에 대한 타임 투 리브 타이머를 설정하는 것으로서, 상기 디렉터리 파일은 상기 타임 투 리브 타이머의 만료에 응답하여 상기 제 1 공용 캐시로부터 삭제되는, 상기 타임 투 리브 타이머를 설정하는 것;
    제 3 노드로부터 상기 디렉터리 파일에 포함된 데이터와 연관된 정보에 대한 디렉터리 요청을 수신하는 것;
    상기 제 1 노드의 로케이션에 대한 상기 제 3 노드의 로케이션을 결정하는 것; 및
    상기 제 2 노드의 상기 로케이션 및 상기 제 3 노드의 상기 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  15. 제 14 항에 있어서,
    상기 제 2 공용 캐시에 저장된 상기 데이터는, 상기 제 1 노드, 상기 제 2 노드, 및 상기 제 3 노드에 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 상기 제 2 노드에 의해 수신된 데이터를 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  16. 제 15 항에 있어서,
    상기 하나 이상의 피어 투 피어 통신 링크들은 무선 근거리 액세스 네트워크 통신 링크, 유선 근거리 액세스 네트워크 통신 링크, 무선 광역 네트워크 통신 링크, 유선 광역 네트워크 통신 링크 또는 블루투스 통신 링크 중 적어도 하나를 포함하고, 상기 제 2 노드가 상기 데이터 소스로부터 데이터를 수신하게 했던 상기 네트워크 통신 링크는 상기 제 2 노드를 인터넷을 통해 상기 데이터 소스에 통신적으로 연결시키는 네트워크 통신 링크를 구비하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  17. 제 15 항에 있어서,
    상기 제 2 공용 캐시에 저장된 데이터와 연관된 상기 정보는, 상기 네트워크 통신 링크를 통해 상기 제 2 노드에 의해 수신된 상기 데이터에 대한 다운로드 시간의 표시를 더 포함하며, 상기 다운로드 시간은 상기 제 2 공용 캐시로부터 상기 데이터를 복사할지의 여부를 결정하기 위해 상기 제 3 노드에 의해 활용되는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  18. 제 14 항에 있어서,
    상기 제 2 공용 캐시에 저장된 상기 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나를 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  19. 제 14 항에 있어서,
    상기 제 2 공용 캐시에 저장된 상기 데이터는, 제 4 노드와 연관된 제 4 공용 캐시로부터 상기 제 2 노드에 의해 복사된 데이터를 포함하며, 상기 제 4 공용 캐시에 저장된 상기 데이터는, 상기 제 1 노드, 상기 제 2 노드, 상기 제 3 노드, 및 상기 제 4 노드에 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 상기 제 4 노드에 의해 수신된 데이터를 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  20. 제 14 항에 있어서,
    상기 디렉터리 파일에 연관된 상기 수명 값은, 상기 제 1 공용 캐시에서의 가용 저장 용량, 상기 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 통신적으로 연결되는 상기 제 1 노드에 대한 이용가능한 대역폭, 또는 상기 제 1 노드가 상기 하나 이상의 피어 투 피어 통신 링크들을 통해 다른 노드들에 연결된 채로 유지되는 시간 양 중 하나에 적어도 부분적으로 기초하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  21. 제 14 항에 있어서,
    상기 제 2 노드의 상기 로케이션 및 상기 제 3 노드의 상기 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것은, 상기 제 1 노드가 상기 제 2 노드 및 상기 제 3 노드 양쪽 모두에 대하여 중앙집중화된 로케이션에 있음을 상기 제 2 노드의 상대 로케이션이 나타낸다고 결정되면, 상기 타임 투 리브 타이머의 상기 만료를 연장하는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  22. 제 14 항에 있어서,
    상기 제 1 노드의 로케이션에 대한 상기 제 3 노드의 상기 로케이션을 결정하는 것은, 상기 제 2 노드의 물리적 로케이션을 나타내기 위해 활용된 상기 디렉터리 요청에 포함된 정보에 적어도 부분적으로 기초하여 상기 제 3 노드의 상기 로케이션을 결정하는 것을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  23. 제 14 항에 있어서,
    제 4 노드가 상기 제 1 공용 캐시로부터 상기 디렉터리 파일을 복사하기 위한 디렉터리 복사 요청을 상기 제 4 노드로부터 수신하는 것;
    상기 제 1 노드의 상기 로케이션에 대한 상기 제 4 노드의 로케이션을 결정하는 것;
    상기 제 1, 제 2, 제 3 및 제 4 노드들의 로케이션들에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것; 및
    상기 타임 투 리브 타이머의 만료 시 상기 디렉터리 파일을 삭제하는 것에 응답하여 상기 제 4 노드의 상기 로케이션의 표시를 다른 노드들로 포워딩하는 것을 더 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  24. 제 14 항에 있어서,
    제 4 노드와 연관된 제 4 공용 캐시에 저장된 다른 데이터와 연관된 정보를 수신하는 것;
    상기 제 1 공용 캐시에 저장된 상기 디렉터리 파일이 미리결정된 메모리 사이즈에 도달하였는지의 여부를 결정하는 것; 및
    상기 미리결정된 메모리 사이즈가 도달되었는지의 여부에 기초하여 상기 제 1 공용 캐시에 저장된 상기 디렉터리 파일에 상기 다른 데이터와 연관된 상기 정보를 추가하는 것을 더 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  25. 제 14 항에 있어서,
    상기 제 2 공용 캐시에 저장된 데이터와 연관된 상기 정보는 상기 데이터가 상기 제 2 공용 캐시로부터 삭제될 때를 나타내는 정보를 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  26. 제 14 항에 있어서,
    상기 제 2 노드로부터 상기 제 2 공용 캐시에 저장된 상기 데이터가 삭제되었다는 표시를 수신하는 것; 및
    상기 디렉터리 파일로부터 상기 제 2 공용 캐시에 저장된 상기 데이터와 연관된 상기 정보를 삭제하는 것을 더 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  27. 제 14 항에 있어서,
    상기 다른 노드들 중에서 제 4 노드에 접촉하는 것으로서, 상기 제 4 노드는 상기 제 4 노드와 연관된 제 4 공용 캐시에 저장된 다른 데이터를 갖는, 상기 제 4 노드에 접촉하는 것;
    상기 제 4 공용 캐시에 저장된 상기 다른 데이터와 연관된 정보를 수신하는 것;
    상기 제 4 공용 캐시에 저장된 상기 다른 데이터와 연관된 상기 정보를 상기 제 1 공용 캐시에 저장된 상기 디렉터리 파일에 추가하는 것; 및
    상기 제 4 노드에 콜링 카드 (calling card) 를 포워딩하는 것으로서, 상기 콜링 카드는 상기 제 1 노드에 대한 로케이션 정보와, 상기 제 4 공용 캐시에 저장된 상기 다른 데이터와 연관된 상기 정보를 포함하고 또한 상기 제 2 공용 캐시에 저장된 상기 데이터와 연관된 상기 정보를 포함하는 상기 디렉터리 파일을 상기 제 1 노드가 구비한다는 표시를 포함하는, 상기 콜링 카드를 포워딩하는 것을 더 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 방법.
  28. 피어 투 피어 데이터 마이그레이션을 위한 장치로서,
    로직을 갖는 파일 관리자를 포함하며,
    상기 로직은,
    제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 연결된 제 1 노드에서 데이터를 수신하는 것으로서, 상기 데이터는 상기 제 1 노드 및 상기 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 수신되는, 상기 데이터를 수신하는 것;
    상기 제 1 노드와 연관된 공용 캐시에 상기 데이터를 저장하는 것으로서, 상기 공용 캐시는 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지되는, 상기 데이터를 저장하는 것;
    상기 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 상기 데이터에 대한 타임 투 리브 타이머를 설정하는 것으로서, 상기 데이터는 상기 타임 투 리브 타이머의 만료에 응답하여 상기 제 1 노드와 연관된 상기 공용 캐시로부터 삭제되는, 상기 타임 투 리브 타이머를 설정하는 것;
    상기 제 2 노드로부터, 상기 제 1 노드와 연관된 상기 공용 캐시로부터 상기 데이터를 복사하기 위한 복사 요청을 수신하는 것;
    상기 제 1 노드의 로케이션에 대한 상기 제 2 노드의 로케이션을 결정하는 것; 및
    상기 제 2 노드의 상기 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 하도록 구성되는, 피어 투 피어 데이터 마이그레이션을 위한 장치.
  29. 제 28 항에 있어서,
    상기 데이터와 연관된 상기 수명 값은, 상기 제 1 노드와 연관된 상기 공용 캐시에서의 가용 저장 용량, 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 연결되는 상기 제 1 노드에 대한 이용가능한 대역폭, 또는 상기 제 1 노드가 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 연결된 채로 유지되는 시간 양 중 하나에 적어도 부분적으로 기초하는, 피어 투 피어 데이터 마이그레이션을 위한 장치.
  30. 제 28 항에 있어서,
    상기 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나를 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 장치.
  31. 제 28 항에 있어서,
    상기 제 2 노드의 상기 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 하도록 구성된 로직은, 상기 제 2 노드 및 하나 이상의 피어 투 피어 통신 링크들을 통해 상기 제 1 노드에 통신적으로 연결된 다른 노드들 중 적어도 하나의 별개의 노드에 대하여 중앙집중화된 (centralized) 로케이션에 상기 제 1 노드가 있음을 상기 제 2 노드의 제 2 상대 로케이션이 나타내면, 상기 타임 투 리브 타이머의 만료를 연장시키도록 구성된 로직을 포함하는, 피어 투 피어 데이터 마이그레이션을 위한 장치.
  32. 제 28 항에 있어서,
    상기 제 1 피어 투 피어 통신 링크는 무선 근거리 액세스 네트워크 통신 링크, 유선 근거리 액세스 네트워크 통신 링크, 무선 광역 네트워크 통신 링크, 유선 광역 네트워크 통신 링크 또는 블루투스 통신 링크 중 적어도 하나를 포함하고, 상기 노드가 상기 데이터 소스로부터 상기 데이터를 수신하게 하는 상기 네트워크 통신 링크는 상기 노드를 인터넷을 통해 상기 데이터 소스에 통신적으로 연결시키는 네트워크 통신 링크를 구비하는, 피어 투 피어 데이터 마이그레이션을 위한 장치.
  33. 제 1 노드와 연관된 메모리로서, 하나 이상의 피어 투 피어 통신 링크들을 통해 상기 제 1 노드에 연결된 다른 노드들에 액세스가능한 제 1 공용 캐시를 구비하도록 구성된 상기 메모리; 및
    로직을 갖는 디렉터리 관리자를 포함하며,
    상기 로직은,
    제 2 노드와 연관된 제 2 공용 캐시에 저장된 데이터와 연관된 정보를 포함하며, 또한 상기 제 2 노드의 로케이션을 포함하는 디렉터리 파일을 상기 제 1 공용 캐시에 저장하는 것;
    상기 디렉터리 파일에 연관된 수명 값에 적어도 부분적으로 기초하여 상기 디렉터리 파일에 대한 타임 투 리브 타이머를 설정하는 것으로서, 상기 디렉터리 파일은 상기 타임 투 리브 타이머의 만료에 응답하여 상기 제 1 공용 캐시로부터 삭제되는, 상기 타임 투 리브 타이머를 설정하는 것;
    제 3 노드로부터, 상기 디렉터리 파일에 포함된 상기 제 2 공용 캐시에 저장된 상기 데이터와 연관된 상기 정보에 대한 요청을 포함하는 디렉터리 요청을 수신하는 것;
    상기 제 1 노드의 로케이션에 대한 상기 제 3 노드의 로케이션을 결정하는 것; 및
    상기 제 2 노드의 상기 로케이션 및 상기 제 3 노드의 상기 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 하도록 구성되는, 시스템.
  34. 제 33 항에 있어서,
    상기 제 2 공용 캐시에 저장된 상기 데이터는, 상기 제 1 노드, 상기 제 2 노드, 및 상기 제 3 노드에 원격으로 위치된 데이터 소스로부터 네트워크 통신 링크를 통해 상기 제 2 노드에 의해 수신된 데이터를 포함하는, 시스템.
  35. 제 34 항에 있어서,
    상기 하나 이상의 피어 투 피어 통신 링크들은 무선 근거리 액세스 네트워크 통신 링크, 유선 근거리 액세스 네트워크 통신 링크, 무선 광역 네트워크 통신 링크, 유선 광역 네트워크 통신 링크 또는 블루투스 통신 링크 중 적어도 하나를 포함하고, 상기 제 2 노드가 상기 데이터 소스로부터 상기 데이터를 수신하게 했던 상기 네트워크 통신 링크는 상기 제 2 노드를 인터넷을 통해 상기 데이터 소스에 통신적으로 연결시키는 네트워크 통신 링크를 구비하는, 시스템.
  36. 제 33 항에 있어서,
    상기 제 2 공용 캐시에 저장된 상기 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나를 포함하는, 시스템.
  37. 제 33 항에 있어서,
    상기 제 2 노드의 상기 로케이션 및 상기 제 3 노드의 상기 로케이션 양쪽 모두에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 하도록 구성된 로직은, 상기 제 1 노드가 상기 제 2 노드 및 상기 제 3 노드 양쪽 모두에 대하여 중앙집중화된 로케이션에 있음을 상기 제 2 노드의 상대 로케이션이 나타낸다고 결정되면, 상기 타임 투 리브 타이머의 상기 만료를 연장시키도록 구성된 로직을 포함하는, 시스템.
  38. 피어 투 피어 데이터 마이그레이션을 위한 명령들을 갖는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 로직에 의해 실행되는 경우, 상기 로직으로 하여금,
    제 1 피어 투 피어 통신 링크를 통해 제 2 노드에 연결된 제 1 노드에서 데이터를 수신하는 것으로서, 상기 데이터는 상기 제 1 노드 및 상기 제 2 노드 양쪽 모두에 원격으로 위치된 데이터 소스로부터 수신되는, 상기 데이터를 수신하는 것;
    상기 제 1 노드와 연관된 공용 캐시에 상기 데이터를 저장하는 것으로서, 상기 공용 캐시는 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 액세스 가능하도록 구성된 메모리 부분 내에 유지되는, 상기 데이터를 저장하는 것;
    상기 데이터와 연관된 수명 값에 적어도 부분적으로 기초하여 상기 데이터에 대한 타임 투 리브 타이머를 설정하는 것으로서, 상기 데이터는 상기 타임 투 리브 타이머의 만료에 응답하여 상기 제 1 노드와 연관된 상기 공용 캐시로부터 삭제되는, 상기 타임 투 리브 타이머를 설정하는 것;
    상기 제 2 노드로부터, 상기 제 1 노드와 연관된 상기 공용 캐시로부터 상기 데이터를 복사하기 위한 복사 요청을 수신하는 것;
    상기 제 1 노드의 로케이션에 대한 상기 제 2 노드의 로케이션을 결정하는 것; 및
    상기 제 2 노드의 상기 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 하게 하는, 컴퓨터 판독가능 저장 매체.
  39. 제 38 항에 있어서,
    상기 데이터와 연관된 상기 수명 값은, 상기 제 1 노드와 연관된 상기 공용 캐시에서의 가용 저장 용량, 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 연결되는 상기 제 1 노드에 대한 이용가능한 대역폭, 또는 상기 제 1 노드가 상기 제 1 피어 투 피어 통신 링크를 통해 상기 제 2 노드에 연결된 채로 유지되는 시간 양 중 하나에 적어도 부분적으로 기초하는, 컴퓨터 판독가능 저장 매체.
  40. 제 38 항에 있어서,
    상기 데이터는 비디오 파일, 오디오 파일, 멀티미디어 파일 또는 데이터 파일 중 적어도 하나를 포함하는, 컴퓨터 판독가능 저장 매체.
  41. 제 38 항에 있어서,
    상기 로직으로 하여금 상기 제 2 노드의 상기 로케이션에 적어도 부분적으로 기초하여 상기 타임 투 리브 타이머를 조정하는 것을 하게 하는 명령은, 상기 제 2 노드 및 하나 이상의 피어 투 피어 통신 링크들을 통해 상기 제 1 노드에 통신적으로 연결된 다른 노드들 중 적어도 하나의 별개의 노드에 대하여 중앙집중화된 (centralized) 로케이션에 상기 제 1 노드가 있음을 상기 제 2 노드의 상대 로케이션이 나타내면, 상기 로직으로 하여금 상기 타임 투 리브 타이머의 만료를 또한 연장시키게 하는 명령을 포함하는, 컴퓨터 판독가능 저장 매체.
  42. 제 38 항에 있어서,
    상기 제 1 피어 투 피어 통신 링크는 무선 근거리 액세스 네트워크 통신 링크, 유선 근거리 액세스 네트워크 통신 링크, 무선 광역 네트워크 통신 링크, 유선 광역 네트워크 통신 링크 또는 블루투스 통신 링크 중 적어도 하나를 포함하고, 상기 노드가 상기 데이터 소스로부터 상기 데이터를 수신하게 하는 상기 네트워크 통신 링크는 상기 노드를 인터넷을 통해 상기 데이터 소스에 통신적으로 연결시키는 네트워크 통신 링크를 구비하는, 컴퓨터 판독가능 저장 매체.
KR1020137031995A 2011-09-20 2011-09-20 피어 투 피어 데이터 마이그레이션 KR101589801B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/052402 WO2013043162A1 (en) 2011-09-20 2011-09-20 Peer-to-peer data migration

Publications (2)

Publication Number Publication Date
KR20140004799A KR20140004799A (ko) 2014-01-13
KR101589801B1 true KR101589801B1 (ko) 2016-01-28

Family

ID=47881689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137031995A KR101589801B1 (ko) 2011-09-20 2011-09-20 피어 투 피어 데이터 마이그레이션

Country Status (4)

Country Link
US (2) US9742842B2 (ko)
KR (1) KR101589801B1 (ko)
CN (1) CN103797473B (ko)
WO (1) WO2013043162A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10684989B2 (en) * 2011-06-15 2020-06-16 Microsoft Technology Licensing, Llc Two-phase eviction process for file handle caches
WO2013043162A1 (en) * 2011-09-20 2013-03-28 Empire Technology Development Llc Peer-to-peer data migration
US20140040537A1 (en) * 2012-08-01 2014-02-06 Genusion Inc. Storage medium using nonvolatile semiconductor storage device, and data terminal including the same
US20140071885A1 (en) * 2012-09-10 2014-03-13 Qualcomm Incorporated Systems, apparatus, and methods for bridge learning in multi-hop networks
US10021181B2 (en) * 2014-12-22 2018-07-10 Dropbox, Inc. System and method for discovering a LAN synchronization candidate for a synchronized content management system
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
US10735545B2 (en) * 2016-06-06 2020-08-04 International Business Machines Corporation Routing vault access requests in a dispersed storage network
US10972450B1 (en) 2019-04-15 2021-04-06 Wells Fargo Bank, N.A. Systems and methods for securely migrating data between devices
US11956482B2 (en) * 2020-07-16 2024-04-09 Comcast Cable Communications, Llc Systems and methods for storing and delivering content assets
US11825342B2 (en) * 2020-09-02 2023-11-21 Brain Corporation Systems, apparatuses, and methods for reducing network bandwidth usage by robots
US11789959B2 (en) * 2021-10-06 2023-10-17 S&P Global Inc. Data visualization method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156893A1 (en) 2001-01-22 2002-10-24 Eric Pouyoul System and method for dynamic, transparent migration of services
US20040088347A1 (en) 2002-10-31 2004-05-06 Yeager William J. Mobile agents in peer-to-peer networks

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532490B1 (en) * 1999-11-10 2003-03-11 Bellsouth Intellectual Property Corporation Methods and elements to reduce the number of quieries to a foreign network element
US20020142855A1 (en) * 2000-03-31 2002-10-03 Cook Eric H. Matched set of golf clubs and method of producing the same
US7779097B2 (en) * 2000-09-07 2010-08-17 Sonic Solutions Methods and systems for use in network management of content
US7035911B2 (en) * 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
US7188145B2 (en) * 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
AU2002256206A1 (en) * 2001-04-13 2002-10-28 The Code Coproration System and method for encoding and decoding data and references to data in machine-readable graphical codes
US7562112B2 (en) * 2001-07-06 2009-07-14 Intel Corporation Method and apparatus for peer-to-peer services for efficient transfer of information between networks
US7068309B2 (en) * 2001-10-09 2006-06-27 Microsoft Corp. Image exchange with image annotation
US7395355B2 (en) * 2002-07-11 2008-07-01 Akamai Technologies, Inc. Method for caching and delivery of compressed content in a content delivery network
US8315975B2 (en) * 2002-12-09 2012-11-20 Hewlett-Packard Development Company, L.P. Symbiotic wide-area file system and method
CN100437522C (zh) 2005-09-09 2008-11-26 中国科学院计算技术研究所 一种远程内存服务器及其实现方法
US8086469B2 (en) * 2006-03-31 2011-12-27 Sandeep Dayal Pharmaceutical clearinghouse method and system
US20080027982A1 (en) * 2006-07-27 2008-01-31 Ebay Inc. Indefinite caching expiration techniques
CN101247317B (zh) * 2007-02-15 2011-07-20 华为技术有限公司 路由切换方法及系统
US7849139B2 (en) * 2007-05-02 2010-12-07 Ouri Wolfson Adaptive search in mobile peer-to-peer databases
US8180720B1 (en) * 2007-07-19 2012-05-15 Akamai Technologies, Inc. Content delivery network (CDN) cold content handling
US8074264B2 (en) * 2008-04-16 2011-12-06 Microsoft Corporation Secure key distribution to internet clients
US8060697B1 (en) * 2008-09-18 2011-11-15 Sprint Communications Company L.P. Dynamically allocated secondary browser cache
CN101902346A (zh) * 2009-05-31 2010-12-01 国际商业机器公司 P2p内容缓存系统和方法
US8437773B2 (en) * 2009-12-09 2013-05-07 Qualcomm Incorporated Hierarchical information dissemination for location based systems
US8677134B2 (en) * 2010-11-11 2014-03-18 Microsoft Corporation HTTP signing
US20120257560A1 (en) * 2011-04-07 2012-10-11 Sudharshan Srinivasan Cellular data bandwidth optimization using social networking concepts
US9912718B1 (en) * 2011-04-11 2018-03-06 Viasat, Inc. Progressive prefetching
WO2013043162A1 (en) * 2011-09-20 2013-03-28 Empire Technology Development Llc Peer-to-peer data migration

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156893A1 (en) 2001-01-22 2002-10-24 Eric Pouyoul System and method for dynamic, transparent migration of services
US20040088347A1 (en) 2002-10-31 2004-05-06 Yeager William J. Mobile agents in peer-to-peer networks

Also Published As

Publication number Publication date
US9742842B2 (en) 2017-08-22
CN103797473B (zh) 2017-05-24
US20130073669A1 (en) 2013-03-21
KR20140004799A (ko) 2014-01-13
US20170346893A1 (en) 2017-11-30
WO2013043162A1 (en) 2013-03-28
CN103797473A (zh) 2014-05-14

Similar Documents

Publication Publication Date Title
KR101589801B1 (ko) 피어 투 피어 데이터 마이그레이션
US9678678B2 (en) Storage network data retrieval
US9811329B2 (en) Cloud based file system surpassing device storage limits
KR101700667B1 (ko) 스토리지 네트워크 데이터 할당
US20090219901A1 (en) Wireless Content Aquisition for Mobile Electronic Devices
EP3242463B1 (en) Content distribution method and system for mobile terminal application
US11669492B2 (en) Method and apparatus for managing storage space on storage device in an electronic apparatus by using context data and user profile data
WO2016036288A1 (en) A method, cloud synchronization function means and file system for handling files and directories in a cloud storage service
WO2013190405A1 (en) Storage collaboration and access
US10250638B2 (en) Control of transmission to a target device with a cloud-based architecture
KR102572702B1 (ko) 전자 장치에서 컨텍스트 데이터와 사용자 프로파일 데이터를 이용하여 저장 공간을 관리하는 방법 및 장치
CN106657182B (zh) 云端文件处理方法和装置
WO2016070655A1 (zh) 一种信息备份方法、装置、服务器和终端
WO2018053838A1 (zh) 一种负载均衡的方法及相关设备
CN110795041A (zh) 分布式文件系统的配额方法、装置、服务器和存储介质
CN113474763A (zh) 增强型的文件共享系统和方法
CN102170476B (zh) 一种基于云节点自主学习的云计算方法和装置
JP2015103862A (ja) 通信端末、通信方法及びプログラム
WO2016172948A1 (zh) 路由信息配置方法及装置
CN112887349B (zh) 分发文件的方法和装置
JPWO2013035719A1 (ja) データ配置システム、分散アクセスノード、データ配置方法およびプログラム
JP2016528598A (ja) ストレージネットワークにおけるデータ移行
KR101678975B1 (ko) 파일 저장 서비스 제공 장치 및 방법
JP2013171557A (ja) データ操作装置、データ操作方法及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee