KR20220064391A - 클라우드 저장소의 액세스 패턴 주도식 데이터 배치 - Google Patents

클라우드 저장소의 액세스 패턴 주도식 데이터 배치 Download PDF

Info

Publication number
KR20220064391A
KR20220064391A KR1020227012107A KR20227012107A KR20220064391A KR 20220064391 A KR20220064391 A KR 20220064391A KR 1020227012107 A KR1020227012107 A KR 1020227012107A KR 20227012107 A KR20227012107 A KR 20227012107A KR 20220064391 A KR20220064391 A KR 20220064391A
Authority
KR
South Korea
Prior art keywords
data
uploaded
uploaded data
metadata
processors
Prior art date
Application number
KR1020227012107A
Other languages
English (en)
Other versions
KR102659627B1 (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 KR20220064391A publication Critical patent/KR20220064391A/ko
Application granted granted Critical
Publication of KR102659627B1 publication Critical patent/KR102659627B1/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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • 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/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/401Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
    • H04L65/4015Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference where at least one of the additional parallel sessions is real time or time sensitive, e.g. white board sharing, collaboration or spawning of a subconference
    • 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]
    • 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/52Network services specially adapted for the location of the user terminal
    • 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/535Tracking the activity of the user
    • 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/5681Pre-fetching or pre-delivering data based on network characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

복수의 지리적 지역들(110, 120, 130, 140)에 걸쳐 분산된 복수의 데이터 센터들(110a, 110b, 120a, 120b, 130a, 130b, 140a, 140b)을 갖는 분산 네트워크(100)에 데이터를 저장하기 위한 시스템 및 방법이 개시된다. 방법은 분산 네트워크의 제1 데이터 센터에 업로드된, 메타데이터를 포함하는 데이터를 수신하는 것(310), 분산 네트워크의 복수의 데이터 센터들에 이전에 저장된 이전 데이터에 관한 액세스 정보를 수신하는 것(320), 업로드된 데이터가 액세스되기 전에, 메타데이터 및 액세스 정보에 기초하여 업로드된 데이터가 액세스될 복수의 지리적 지역들 중 하나 이상을 예측하는 것(330); 그리고 업로드된 데이터가 제1 데이터 센터로부터, 하나 이상의 예측된 지리적 지역들 각각에 로케이팅된 하나 이상의 제2 데이터 센터들로 전달되도록 지시하는 것(340)을 수반할 수 있다.

Description

클라우드 저장소의 액세스 패턴 주도식 데이터 배치
[0001] 본 출원은 2020년 11월 4일에 출원된 미국 특허 출원 번호 제16/673,128호의 연속이며, 이로써 이 출원의 개시내용은 본원에 인용에 의해 포함된다.
[0002] 글로벌 클라우드 저장 서비스들은 일단 데이터가 클라우드에 저장되면 전세계 모든 곳으로부터의 대량의 데이터에 대한 접근성(accessibility)을 제공한다. 예컨대, 유럽에서 업로드된 이미지는 미국에서의 다운로드를 위해 즉시 액세스 가능할 수 있다.
[0003] 글로벌 클라우드 저장 서비스들은 종종, 대용량의 업로드된 데이터를 관리하기 위해 다양한 지리적 지역들로 분할된다. 따라서, 데이터에 액세스하라는 사용자 요청은 통상적으로 사용자에게 특히 사용자의 지리적 지역에 가장 가까운 서버로 라우팅된다. 그 후 서버는 요청된 데이터의 로케이션을 찾고 그 후 데이터에 대한 요청을 데이터가 저장된 서버 ― 이는 상이한 지리적 지역에 있을 수 있음 ― 로 포워딩한다.
[0004] 요청된 데이터가 요청한 사용자로부터 떨어져 저장되어 있는 경우, 요청된 데이터를 가져오는 것은 높은 레이턴시를 초래할 수 있으며, 이는 요청된 데이터에 관한 요청한 사용자의 경험을 저하시킬 수 있다. 장거리 가져오기는 또한, 특히 사용자의 지리적 지역과 데이터의 지리적 지역 사이에 네트워크 대역폭이 부족한 경우 이를테면, 두 지역들 사이에 충분한 광섬유 케이블이 전개되지 않은 경우, 서비스 밴더에게 귀중한 대역폭을 소모한다.
[0005] 글로벌 클라우드 저장 서비스들은 일반적으로 데이터가 업로드되는 지역에 업로드된 데이터를 저장한다. 이는 업로드된 데이터가 주로 동일한 지리적 지역에서 다운로드되는 경우들에서 효과적일 수 있다. 그러나 대부분의 경우들에서, 업로드된 데이터는 주로 다른 지리적 지역들로부터 액세스되며, 이는 높은 네트워크 대역폭 비용들을 초래할 수 있다.
[0006] 본 개시내용의 일 양상은 복수의 지리적 지역들에 걸쳐 분산된 복수의 데이터 센터들을 갖는 분산 네트워크에 데이터를 저장하기 위한 방법에 관한 것이다. 방법은 하나 이상의 프로세서들에 의해, 분산 네트워크의 제1 데이터 센터에 업로드된 데이터를 수신하는 단계 ― 업로드된 데이터는 메타데이터를 포함함 ― , 하나 이상의 프로세서들에 의해, 이전에 업로드된 데이터에 관한 액세스 정보를 수신하는 단계; 업로드된 데이터가 액세스되기 전에, 하나 이상의 프로세서들에 의해, 메타데이터 및 액세스 정보에 기초하여 업로드된 데이터가 액세스될 복수의 지리적 지역들 중 하나 이상을 예측하는 단계; 및 하나 이상의 프로세서들에 의해, 업로드된 데이터가 제1 데이터 센터로부터, 예측된 지리적 지역들 중 하나 이상에 로케이팅된 하나 이상의 제2 데이터 센터들로 전달되도록 지시하는 단계를 포함할 수 있다.
[0007] 일부 예들에서, 액세스 정보는 이전에 업로드된 데이터의 메타데이터에 대해 트레이닝된 예측 모델로부터 도출될 수 있다.
[0008] 일부 예들에서, 예측 모델은 판단 트리 모델일 수 있다.
[0009] 일부 예들에서, 메타데이터는 업로드된 데이터를 업로드하는 사용자의 식별(identification) 및 업로드된 데이터가 업로드되는 로케이션을 포함할 수 있다.
[0010] 일부 예들에서, 이전에 업로드된 데이터의 메타데이터는 이전에 업로드된 데이터의 로케이션, 이전에 업로드된 데이터를 업로드하는 사용자의 식별 및 이전에 업로드된 데이터가 업로드되는 로케이션을 포함할 수 있다.
[0011] 일부 예들에서, 이전에 업로드된 데이터의 메타데이터는 이전에 업로드된 데이터가 저장되는 디렉토리 또는 파일 경로의 식별을 포함할 수 있다.
[0012] 일부 예들에서, 액세스 정보는 이전에 업로드된 데이터의 초기 업로드와 이전에 업로드된 데이터의 최초 다운로드 사이의 시간량을 표시할 수 있다. 방법은 하나 이상의 프로세서들에 의해, 업로드된 데이터가 최초로 다운로드될 때까지의 시간량을 예측하는 단계, 및 하나 이상의 프로세서들에 의해, 예측된 시간량에 기초하여 업로드된 데이터가 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하는 단계를 포함할 수 있다.
[0013] 일부 예들에서, 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하는 단계는, 하나 이상의 프로세서들에 의해, 메타데이터 및 액세스 정보에 기초하여, 업로드된 데이터가 브로드캐스트 데이터라고 결정하는 단계, 및 업로드된 데이터가 전달되도록 지시된 각각의 주어진 예측된 지리적 지역에 대해, 하나 이상의 프로세서들에 의해, 업로드된 데이터가 주어진 예측된 지리적 지역의 각각의 데이터 센터의 적어도 하나의 캐싱 서버로 전달되도록 지시하는 단계를 포함할 수 있다.
[0014] 일부 예들에서, 방법은 하나 이상의 프로세서들에 의해, 업로드된 데이터가 공통 예측된 지리적 지역을 갖는 이전에 업로드된 데이터를 포함하는 파일에 포함되도록 지시하는 단계, 및 하나 이상의 프로세서들에 의해, 파일이 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들에 전달되도록 지시하는 단계를 포함할 수 있다.
[0015] 일부 예들에서, 파일은 초기에 제1 데이터 센터에 로케이팅된 하나 이상의 소스 서버들에 저장될 수 있다. 파일이 전달되도록 지시하는 단계는, 하나 이상의 프로세서들에 의해, 하나 이상의 소스 서버들로부터 파일을 풀링하도록 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들의 데이터 서버들에 지시하는 단계를 포함할 수 있다.
[0016] 본 개시내용의 다른 양상은 복수의 지리적 지역들에 걸쳐 분산된 복수의 데이터 센터들을 갖는 분산 네트워크에 데이터를 저장하기 위한 시스템에 관한 것이다. 시스템은 제1 데이터 센터에 업로드된 데이터를 저장하게 구성되는, 분산 네트워크의 제1 데이터 센터에 있는 하나 이상의 저장 디바이스들 ― 업로드된 데이터는 메타데이터를 포함함 ― , 및 하나 이상의 저장 디바이스들과 통신하는 하나 이상의 프로세서들을 포함할 수 있다. 하나 이상의 프로세서들은 분산 네트워크의 복수의 데이터 센터들에 이전에 저장된 이전에 업로드된 데이터에 관한 액세스 정보를 수신하고, 업로드된 데이터가 액세스되기 전에, 메타데이터 및 액세스 정보에 기초하여 업로드된 데이터가 액세스될 복수의 지리적 지역들 중 하나 이상을 예측하고, 그리고 업로드된 데이터가 제1 데이터 센터로부터, 예측된 지리적 지역들 중 하나 이상에 로케이팅된 하나 이상의 제2 데이터 센터들로 전달되도록 지시하게 구성될 수 있다.
[0017] 일부 예들에서, 액세스 정보는 이전에 업로드된 데이터의 메타데이터에 대해 트레이닝된 예측 모델로부터 도출될 수 있다.
[0018] 일부 예들에서, 예측 모델은 판단 트리 모델일 수 있다.
[0019] 일부 예들에서, 메타데이터는 업로드된 데이터를 업로드하는 사용자의 식별(identification) 및 업로드된 데이터가 업로드되는 로케이션을 포함할 수 있다.
[0020] 일부 예들에서, 이전에 업로드된 데이터의 메타데이터는 이전에 업로드된 데이터의 로케이션, 이전에 업로드된 데이터를 업로드하는 사용자의 식별 및 이전에 업로드된 데이터가 업로드되는 로케이션을 포함할 수 있다.
[0021] 일부 예들에서, 이전에 업로드된 데이터의 메타데이터는 이전에 업로드된 데이터가 저장되는 디렉토리 또는 파일 경로의 식별을 포함할 수 있다.
[0022] 일부 예들에서, 액세스 정보는 이전에 업로드된 데이터의 초기 업로드와 이전에 업로드된 데이터의 최초 다운로드 사이의 시간량을 표시할 수 있다. 하나 이상의 프로세서들은 업로드된 데이터가 최초로 다운로드될 때까지의 시간량을 예측하고, 예측된 시간량에 기초하여 업로드된 데이터가 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하게 구성될 수 있다.
[0023] 일부 예들에서, 하나 이상의 프로세서들은 메타데이터에 기초하여 업로드된 데이터는 브로드캐스트 데이터라는 결정에 기초하여 업로드된 데이터가 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하게 구성될 수 있고, 업로드된 데이터가 전달되도록 지시된 각각의 주어진 예측된 지리적 지역에 대해, 하나 이상의 프로세서들은 업로드된 데이터가 주어진 예측된 지리적 지역의 각각의 데이터 센터의 적어도 하나의 캐싱 서버로 전달되도록 지시하게 구성될 수 있다.
[0024] 일부 예들에서, 하나 이상의 프로세서들은 업로드된 데이터가 공통 예측된 지리적 지역을 갖는 이전에 업로드된 데이터를 포함하는 파일에 포함되도록 지시하고, 파일이 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들에 전달되도록 지시하게 구성될 수 있다.
[0025] 일부 예들에서, 파일은 초기에 제1 데이터 센터에 로케이팅된 하나 이상의 소스 서버들에 저장된다. 하나 이상의 프로세서들은 하나 이상의 소스 서버들로부터 파일을 풀링하도록 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들의 데이터 서버들에 지시하게 구성될 수 있다.
[0026] 도 1은 본 개시내용의 양상들에 따른 예시적인 시스템을 예시하는 블록도이다.
[0027] 도 2는 본 개시내용의 양상들에 따른 예시적인 컴퓨팅 시스템을 예시하는 블록도이다.
[0028] 도 3 및 도 4는 본 개시내용의 양상들에 따른 시스템의 예시적인 데이터 분배 방식을 예시하는 블록도들이다.
[0029] 도 5는 본 개시내용의 양상들에 따른 예시적인 방법을 예시하는 흐름도이다.
[0030] 도 6은 도 5의 흐름도의 양상들을 예시하는 흐름도이다.
개요
[0031] 이 기술은 일반적으로 분산 네트워크를 통해 업로드된 데이터를 효율적으로 저장하기 위한 시스템과 관련이 있다. 시스템은 업로드된 데이터 파일이 향후에 액세스될 수 있는 로케이션 또는 로케이션들을 예측하는 로케이션 예측기 또는 예측 프로그램을 포함할 수 있다. 예측은 이전에 업로드된 데이터의 업로딩 및 다운로딩 패턴("액세스 패턴"으로서 또한 지칭됨)에 기초할 수 있다. 새로 업로드된 데이터의 액세스 패턴들을 예측하는 것은 업로드된 데이터의 저장 효율을 개선할 수 있는데, 그 이유는 데이터는 그것이 향후 액세스될 그러한 로케이션들에 가깝게 전략적으로 저장될 수 있기 때문이다.
[0032] 일부 구현들에서, 예측 프로그램은 하나 이상의 데이터 센터들에 걸쳐 다수의 가상 머신들을 갖는 분산 네트워크에 저장될 수 있다. 업로드된 데이터는 네트워크의 임의의 데이터 센터에 저장됨으로써 개시될 수 있다. 후속적으로, 업로드된 데이터는 예측 프로그램에 의해 분석되고 업로드된 데이터가 다운로드될 것으로 예측되는 하나 이상의 다른 데이터 센터들로 마이그레이팅된다(migrated).
[0033] 예측들은 업로드된 데이터 및 이전에 업로드된 데이터 각각에 포함된 메타데이터에 기초할 수 있다. 예컨대, 이전에 업로드된 데이터의 메타데이터는 예측 모델을 트레이닝하는 데 사용될 수 있으며, 이에 의해 메타데이터는 모델의 다양한 예측기들과 관련될 수 있다. 업로드된 데이터의 메타데이터는 이전에 업로드된 데이터의 메타데이터와 동일하거나 유사할 수 있으며, 이에 의해, 업로드된 데이터와 이전에 업로드된 특정 데이터 간의 이러한 유사성들은 업로드된 데이터의 향후 액세스 패턴을 표시할 수 있다. 예컨대, 동일하거나 유사한 고객 식별(identification), 오브젝트 이름, 오브젝트 유형 또는 이들의 일부 조합을 갖고 동일하거나 유사한 지역 또는 데이터 센터로부터 기원되는 이전에 업로드된 데이터 및 업로드된 데이터는 유사한 액세스 패턴들을 따를 것으로 예상될 수 있다. 따라서, 이전에 업로드된 데이터의 액세스 패턴은 그의 공통 또는 유사한 메타데이터의 관점에서 업로드된 데이터의 향후 액세스 패턴을 표시할 수 있다.
[0034] 일부 구현들에서, 업로드된 데이터는 오프라인 데이터 마이그레이션 기술들을 사용하여 데이터 센터들로 전달될 수 있다. 예컨대, 데이터의 목적지 데이터 센터에 기초하여 업로드된 데이터를 저장하기 위해 별도의 큰 파일들이 셋업될 수 있고 이에 의해 각각의 큰 파일은 상이한 목적지 데이터 센터를 갖는다. 새로 업로드된 데이터는 그 후 업로드된 데이터가 다운로드될 것으로 예측되는 데이터 센터들에 기초하여 하나 이상의 큰 파일들에 추가될 수 있다. 그 후, 업로드된 데이터의 데이터 마이그레이션은 예컨대, 주어진 파일이 특정 크기 제한에 도달할 때 또는 미리 정의된 시간량 이를테면, 12시간이 경과한 후 파일 단위로 수행될 수 있다.
[0035] 일부 구현들에서, 메타데이터는 또한, 업로드된 데이터를 그의 목적지로 마이그레이팅하는 것에 대한 긴급성을 예측하는 데 사용될 수 있다. 예컨대, 한 사용자로부터 브로드캐스트되고 전세계의 다른 사용자들이 즉시 액세스 가능하게 되는 스트리밍 파일과 같은 브로드캐스트 데이터가 즉시 뿐만 아니라 추후 시간에 다수의 지역들에 걸쳐 수요가 높아지는 경우에, 업로드된 데이터를 그의 목적지 데이터 센터로 전달하는 데 오프라인 데이터 마이그레이션은 너무 오래 걸릴 수 있다. 그러한 경우에, 데이터를 마이그레이팅하는데 관한 긴급성을 식별하는 것은 업로드된 데이터의 캐시 주입을 개시하고, 이에 의해 데이터는 데이터가 로컬로 사용자들에게 서빙될 수 있게 하는 목적지 데이터 센터의 캐싱 서버로 전달되게 하는데 사용될 수 있다. 캐시 주입은 오프라인 데이터 마이그레이션에 추가로 그리고 그 이전에 수행될 수 있다.
[0036] 위의 구현들은 특히, 다수의 지리적 지역들에 걸쳐 퍼져있는 다수의 데이터 센터들을 갖는 분산 네트워크들에 대해, 분산 네트워크 내에서 구조화되지 않은 데이터의 저장 서비스를 개선할 수 있다. 개선된 저장 서비스는 세계의 한 부분에서 업로드된 데이터가, 데이터가 일반적으로 액세스되는 세계의 다른 부분들에서 더 쉽게 액세스 가능하게 만들 수 있다. 이는 차례로, 떨어진 로케이션으로부터 데이터에 액세스하는 것이 근처 로케이션으로부터 데이터에 액세스하는 것보다 일반적으로 비용이 많이 들고 시간 소모적이기 때문에, 사용자들 및 서비스 제공자들에 대한 비용 및 시간 절감들을 초래할 수 있다.
예시적인 시스템들
[0037] 도 1은 분산 컴퓨팅 환경을 포함하는 예시적인 시스템을 예시하는 블록도이다. 시스템(100)은 시스템(100)의 다수의 지리적 지역들(110, 120, 130, 140)에 걸쳐 분산된 서버들에 데이터(101)를 업로드하는 능력을 사용자들에게 제공하는 클라우드 저장 서비스일 수 있다. 각각의 지리적 지역은 하나 이상의 데이터 센터들을 포함할 수 있다. 도 1은 지역 1(110)의 데이터 센터들(110a 및 110b), 지역 2(120)의 데이터 센터들(120a 및 120b), 지역 3(130)의 데이터 센터들(130a 및 130b), 지역 4(140)의 데이터 센터들(140a 및 140b)을 도시하지만, 네트워크는 부가적인 지역들을 포함할 수 있고, 각각의 지역은 부가적인 데이터 센터들을 포함할 수 있다. 각각의 데이터 센터는 업로드된 데이터를 저장하게 구성된 하나 이상의 데이터 서버들(145)을 포함할 수 있다.
[0038] 데이터 센터들(110a, 110b, 120a, 120b, 130a, 130b, 140a, 140b)은 예컨대, 네트워크(도시되지 않음)를 통해 통신 가능하게 커플링될 수 있다. 추가로 데이터 센터들은 네트워크를 통해 하나 이상의 클라이언트 디바이스들(도시되지 않음)과 통신할 수 있다. 따라서 예컨대, 클라이언트는 "클라우드"에서 동작들을 실행할 수 있다. 이러한 동작들은 업로드된 데이터(101)와 같은 데이터를 업로드하고 그에 액세스하는 것을 포함할 수 있다. 데이터에 액세스하는 것은 데이터를 다운로드하는 것, 데이터를 스트리밍하는 것, 하나의 폴더 또는 디렉토리로부터 다른 폴더 또는 디렉토리로 데이터를 복사하는 것, 또는 시스템(100)의 서버에서 수신된 사용자 요청에 대한 응답으로 데이터에 액세스할 수 있게 하는 임의의 다른 수단을 포함할 수 있다. 일부 예들에서, 데이터 센터들은 추가로, 제어기(도시되지 않음)와 통신할 수 있고; 이에 따라 데이터에 액세스하는 것은 제어기로부터의 명령에 대한 응답으로 데이터를 액세스 가능하게 만드는 것을 포함할 수 있다.
[0039] 데이터 센터들(110a, 110b, 120a, 120b, 130a, 130b, 140a, 140b)은 서로 상당한 거리를 두고 포지셔닝될 수 있다. 예컨대, 데이터 센터들은 세계 곳곳의 다양한 국가들에 포지셔닝될 수 있다. 지역들(110, 120, 130, 140)은 서로 비교적 근접한 데이터 센터들을 그룹화할 수 있다. 또한, 일부 예들에서, 데이터 센터들은 가상화된 환경들일 수 있다. 또한, 단지 소수의 데이터 센터들만이 도시되지만, 네트워크 및/또는 부가적인 네트워크들에 걸쳐 수많은 데이터 센터들이 커플링될 수 있다.
[0040] 도 2에 도시된 바와 같이, 각각의 데이터 센터는 프로세서들(220), 서버들, 샤드들, 셀들 등과 같은 하나 이상의 컴퓨팅 디바이스들(210)을 포함할 수 있다. 각각의 데이터 센터에는 임의의 수의 컴퓨팅 디바이스들을 포함될 수 있고, 하나의 데이터 센터의 컴퓨팅 디바이스들의 수는 다른 데이터 센터의 컴퓨팅 디바이스들의 수와 상이할 수 있으며, 주어진 데이터 센터의 컴퓨팅 디바이스들의 수는 시간이 지남에 따라, 예컨대, 하드웨어가 제거, 교체, 업그레이드 또는 확장됨에 따라 변동될 수 있다는 것이 이해되어야 한다.
[0041] 각각의 데이터센터는 또한 하드 드라이브들, 랜덤 액세스 메모리, 디스크들, 디스크 어레이들, 테이프 드라이브들, 또는 임의의 다른 유형들의 저장 디바이스들과 같은 다수의 저장 디바이스들 또는 메모리(230)를 포함할 수 있다. 데이터 센터들은 DAS(direct attached storage), NAS(network attached storage), SAN(storage area network)들, FC(fibre channel), FCoE(fibre channel over Ethernet), 혼합 아키텍처 네트워크들 등을 포함(그러나 이에 제한되지 않음)하는 임의의 수의 아키텍처들 및 기술들을 구현할 수 있다. 데이터 센터들은 저장 디바이스 외에도, 동일한 데이터 센터 또는 상이한 데이터 센터들의 컴퓨팅 디바이스들 사이, 데이터 센터들의 컴퓨팅 디바이스들과 네트워크 시스템의 제어기들(도시되지 않음) 사이, 그리고 데이터 센터들의 컴퓨팅 디바이스들과 네트워크 시스템에 연결된 클라이언트 컴퓨팅 디바이스(도시되지 않음) 이를테면, 케이블링, 라우터들 등 사이의 입력 및 출력을 가능하게 하기 위한 통신 디바이스들(260)과 같은 다수의 다른 디바이스들을 포함할 수 있다.
[0042] 컴퓨팅 디바이스들 각각의 메모리(230)는 하나 이상의 컴퓨팅 디바이스들(210)에서 수신되거나 그에 의해 생성된 데이터(240), 및 하나 이상의 프로세서들(220)에 의해 실행될 수 있는 명령들(250)을 포함하여, 하나 이상의 프로세서들(220)에 의해 액세스 가능한 정보를 저장할 수 있다.
[0043] 데이터(240)는 저장된 데이터(242) 이를테면, 업로드된 데이터 오브젝트들, 업로드된 데이터 오브젝트(242)의 메타데이터를 추적하는 메타데이터 로그(244)뿐만 아니라, 하나 이상의 마이그레이션 파일(246) 및 업로드된 데이터 오브젝트(242)가 하나의 데이터 센터로부터 다른 데이터 센터로 전달되기 전에 저장될 수 있는 캐시된 데이터 파일(248)을 포함할 수 있다. 저장된 데이터의 위의 예들의 세부사항들은 아래에서 더 자세히 논의된다.
[0044] 명령들(250)은 주어진 데이터 오브젝트 파일이 액세스될 가능성이 높은 로케이션 또는 로케이션들을 예측하게 구성된 로케이션 액세스 예측 프로그램(252)을 포함할 수 있다. 이러한 로케이션들은 분산 네트워크의 하나 이상의 지역들일 수 있다. 명령들(250)은, 각각 하나 이상의 마이그레이션 파일들(246) 및 캐시된 데이터 파일들(248)에 저장된 데이터 오브젝트 파일들의 전달을 실행하게 구성된 데이터 마이그레이션 프로그램(254) 및 데이터 캐싱 프로그램(256)을 더 포함할 수 있다. 또한, 저장된 프로그램의 위의 예들의 세부사항들은 아래에서 더 자세히 논의된다.
[0045] 일부 예들에서, 제어기는 데이터 센터들의 컴퓨팅 디바이스들과 통신할 수 있고 프로그램들의 실행을 용이하게 할 수 있다. 예컨대, 제어기는 각각의 컴퓨팅 디바이스의 용량, 상태, 작업 부하 또는 다른 정보를 추적하고 이러한 정보를 사용하여 작업들을 할당할 수 있다. 제어기는 데이터 및 명령을 포함하여, 메모리 및 프로세서를 포함할 수 있다. 다른 예들에서, 그러한 동작들은 데이터 센터들 중 하나에 있는 컴퓨팅 디바이스들 중 하나 이상의 컴퓨팅 디바이스들에 의해 수행될 수 있고, 독립적인 제어기는 시스템으로부터 생략될 수 있다.
[0046] 데이터 센터들에 업로드되는 업로드된 데이터(101)는 업로드된 데이터의 다양한 속성들을 표시하는 메타데이터를 포함할 수 있다. 메타데이터는 데이터가 (도 1의 예에서, 데이터 센터(140b)에) 업로드되는 데이터 센터에서 로깅되거나 저장되거나 둘 다 이루어질 수 있다. 도 1의 예에서, 메타데이터 로그(150)는 업로드된 데이터의 메타데이터(155)를 저장하기 위해 데이터센터(140b)에서 제공된다.
[0047] 메타데이터(155)는 데이터가 업로드되는 지역, 데이터 센터, 또는 둘 모두의 식별을 포함할 수 있다. 아래에서 더 자세히 논의되는 바와 같이, 업로드된 데이터는 지리적 지역들 사이에서 전략적으로 마이그레이팅되기 때문에, 일부 경우들에서, 데이터가 업로드되는 로케이션은 데이터가 저장된 로케이션과 상이할 수 있다. 부가적으로, 일부 경우들에서, 데이터가 업로드되는 로케이션을 포함하거나 제외한 다수의 로케이션들에 데이터가 저장될 수 있다. 그러한 경우들에서, 메타데이터는 데이터가 저장되는 지역, 데이터 센터 또는 둘 모두의 식별을 더 포함할 수 있다.
[0048] 다른 메타데이터는 업로드 당사자의 고객 식별, 오브젝트 이름, 오브젝트 유형, 오브젝트 크기, 데이터가 업로드되는 디렉토리 또는 폴더의 이름(이를테면, 오브젝트를 저장하는데 사용되는 버킷 이름), 오브젝트 이름 프리픽스(이를테면, 오브젝트를 저장하는데 디렉토리 계층의 하나 초과의 레벨이 사용되는 경우 업로드된 오브젝트의 파일 경로), 업로드 시간, 최초 다운로드 시간, 후속 다운로드 시간들, 액세스 요청들의 수 등을 포함할 수 있다(그러나 이에 제한되지 않음). 기본적으로 메타데이터는 오브젝트의 속성들 및 오브젝트에 대한 실행 중인 액세스 로그 둘 모두를 포함할 수 있다.
[0049] 부가적으로, 데이터가 다수의 로케이션들에 저장되는 그러한 경우들에서, 각각의 로케이션이 동일한 데이터 오브젝트에 대한 상이한 메타데이터와 연관될 수 있다는 것이 인식되어야 한다. 예컨대, 지역 1에 저장된 오브젝트는 지역 2에 저장된 동일한 오브젝트보다 더 빨리 다운로드될 수 있다. 추가로 예를 들면, 오브젝트에 대한 액세스 요청들의 수는 하나의 로케이션으로부터 다음 로케이션까지 변동될 수 있다. 따라서, 업로드된 오브젝트로부터의 메타데이터는 오브젝트가 궁극적으로 저장되는 각각의 로케이션에 별개로 로깅될 수 있다. 도 1의 예에서, 데이터 센터들(110a, 110b, 120a, 120b, 130a, 130b, 140a, 140b) 각각은 그러한 오브젝트의 메타데이터들을 포함하여, 그 데이터 센터에 업로드된 데이터 오브젝트들 또는 파일들의 로그를 저장할 수 있는 자체 액세스 로그(데이터 센터(140b)를 제외하고는 도시되지 않음)를 포함할 수 있다.
[0050] 각각의 업로드된 오브젝트에 대한 메타데이터는 메타데이터 애그리게이터(160)를 사용하여 다수의 지역들에 걸쳐 추적될 수 있다. 애그리게이터(160)는 이를테면, 애그리게이션 스케줄에 따라 정규 단위로 각각의 데이터 센터의 메타데이터 로그들로부터 메타데이터를 수집할 수 있다. 애그리게이팅된 메타데이터는 메타데이터의 변화들이 시간 경과에 따라 추적되는 것을 가능하게 하도록 타임스탬핑될 수 있다. 예컨대, 메타데이터 로그 애그리게이터에 의해 수집된 애그리게이팅된 로그들은 이전 주(week)로부터의 메타데이터, 이전 달로부터의 메타데이터, 이전 3개월로부터의 메타데이터, 이전 3개월보다 긴 시간 기간으로부터의 메타데이터 등과 같이 각각의 애그리게이팅된 로그에 의해 표현되는 시간 지속기간에 따라 카테고리화된다. 카테고리화된 로그들에 걸친 메타데이터의 차이들은 업로드된 데이터의 액세스에 대한 관심의 증가 또는 감소와 같이 시간 경과에 따른 업로드된 데이터의 변화들을 표시할 수 있다. 부가적으로, 주어진 업로드된 데이터 오브젝트에 대한 메타데이터는 전체적으로 또는 저장 로케이션 별로 추적될 수 있다. 따라서 애그리게이팅된 로그들은 업로드된 데이터 오브젝트에 대한 지역 특정 또는 데이터 센터 특정 변화들뿐만 아니라 주어진 업로드된 데이터 오브젝트에 대한 메타데이터의 전반적인 변화들을 표시할 수 있다.
[0051] 그 후, 애그리게이팅된 데이터는 모델(170)을 트레이닝하기 위해 예측 모델(170)에 공급될 수 있다. 예측 모델을 트레이닝하는 것은 향후 업로드되는 데이터가 액세스될 가능성이 매우 높은 곳에 관한 더 양호한 예측들을 초래하고 그리하여 향후 업로드되는 데이터의 배치를 개선하여 향후 업로드되는 데이터에 대한 액세스를 보다 효율적으로 만들 수 있다. 예측 모델(170)은 시스템(100)에, 이를테면, 시스템의 데이터 센터들 중 하나에 저장된 기계 학습 알고리즘일 수 있다. 예측 모델은 판단 트리 모델일 수 있으며, 이에 의해 애그리게이팅된 데이터는 이전에 업로드된 데이터가 얼마나 자주 그리고 어디로부터 액세스되었는지에 관한 정보를 포함할 수 있고, 이에 따라 시스템에서 이전에 업로드된 데이터의 배치와 비용을 연관시킬 수 있다. 이 정보에 기초하여, 예측 모델(170)은 과거 업로드된 데이터의 액세스 패턴들에 기초하여 향후 업로드되는 데이터에 대한 전략적 배치들을 결정할 수 있다.
[0052] 다른 예들에서, 예측 모델을 구축하기 위해 다른 유형들의 기계 학습 알고리즘들이 적용될 수 있다. 또한, 보다 휴리스틱 유형 방법이 가능할 수 있으며 이에 의해 특정 정보가 향후 업로드되는 데이터의 배치를 지시할 수 있다. 예컨대, 주어진 사용자에 의해 업로드된 이전에 업로드된 여러 데이터 오브젝트들이 특정 지역들에서 임계 다운로드 횟수를 갖는 경우, 이는 그 사용자에 의해 업로드되는 향후 데이터 오브젝트들이 임계 다운로드 횟수를 갖는 지역들로 전송 및 저장되는 것을 정당화할 수 있다.
[0053] 예측 모델(170)은 동적일 수 있다. 예컨대, 애그리게이터(160)에 의한 메타데이터 및 액세스 로그들의 애그리게이션은 일관되고 가능한 스케줄링된 단위로, 이를테면, 매주 1회, 2주마다 1회, 매월 1회 또는 덜 자주 또는 더 자주 발생할 수 있다. 모델이 업데이트되는 빈도는 추가로, 이 시스템(100)이 적용되는 특정 네트워크 상에 저장되어 공유되는 데이터의 성질에 의존할 수 있다. 즉, 비교적 느린 변화를 갖는 일부 제품들에 대해, 한 달에 한 번이면 충분할 수 있다. 그러나 사용자 경향들이 지속적으로 변하고 액세스 패턴들이 지속적으로 시프트되는 다른 플랫폼들 또는 제품들에 대해, 주 1회와 같이 모델이 보다 정기적으로 업데이트되는 것이 바람직할 수 있으므로, 월 1회 업데이트로는 충분하지 않을 수 있다.
[0054] 예측 모델(170)이 이전에 업로드되고 저장된 데이터에 대해 트레이닝되면, 이는 현재 또는 향후 업로드되는 데이터가 액세스될 가능성이 가장 높을 곳을 예측하는 데 사용될 수 있다. 도 1의 예에서, 업로드된 데이터(101)의 주어진 유닛이 데이터 센터(140b)에서 수신될 때, 데이터는 그것이 액세스 로케이션 예측기(180)에 의해 프로세싱되기 때문에, 데이터 서버(145)에 먼저 저장된다. 액세스 로케이션 예측기(180)는 데이터가 업로드된 동일 지역에서 데이터가 액세스될 가능성이 높은지, 아니면 데이터가 시스템의 다른 지역에서 액세스될 가능성이 높은지를 결정할 수 있다. 액세스 로케이션 예측기(180)는 추가로, 업로드된 데이터(101)가 업로드되는 것과 그것이 다운로드되는 것 사이의 시간량을 예측할 수 있다. 이러한 결정들에 기초하여, 업로드된 데이터(101)는 데이터 서버(145)에 저장된 채로 유지될 수 있거나, 하나 이상의 마이그레이션 파일들(190)에 저장될 수 있거나, 캐싱 서버(195)에 저장될 수 있거나, 이들의 임의의 조합이 가능할 수 있다. 저장 결정 동작들은 도 5와 관련하여 아래에서 보다 상세히 논의된다.
[0055] 데이터 서버(145)의 저장은 일반적으로 영구적이며, 이는 데이터가 이동되지 않고 그곳에 저장되도록 의도되는 것을 의미하고 이에 따라 무기한으로 또는 수동으로 삭제할 때까지 저장된 채로 유지될 수 있다. 대조적으로, 마이그레이션 파일들(190) 및 캐싱 서버(195)의 저장은 일반적으로 임시적이며, 이는 데이터가 다른 로케이션으로 전달되도록 의도됨을 의미하고, 의도된 전달 이후의 시간에 자동으로 삭제될 수 있다. 데이터 전달 동작들은 도 6과 관련하여 아래에서 보다 상세히 논의된다.
[0056] 도 1에서 마이그레이션 파일들(190)이 데이터 서버와 별개로 도시되지만, 마이그레이션 파일들은 실제로 데이터 센터(140b)의 하나 이상의 서버들에 저장될 수 있고 따라서 데이터 서버에 저장될 수 있다는 것이 인식되어야 한다. 부가적으로, 마이그레이션 파일들의 콘텐츠들이 이를테면, 마이그레이션 후에 정기적으로 삭제될 수 있지만, 파일 그 자체는 영구적일 수 있다. 더욱이, 파일은 파일의 콘텐츠들이 전송되는 목적지를 표시하는 영구적인 정보 이를테면, 헤더 정보를 포함할 수 있다. 마이그레이션 파일들은 네트워크의 분산된 파일 시스템의 파일들일 수 있다. 또한, 데이터 서버들에 저장된 데이터는 분산 파일 시스템의 큰 파일들에 또한 저장될 수 있다는 것이 인식되어야 한다. 사실상, 데이터 서버의 큰 파일들은 파일의 콘텐츠들이 그의 의도된 목적지에 있음을 표시하는 정보를 갖는 파일들일 수 있다. 예컨대, 데이터 센터(140b)의 데이터 서버(145)에 기록된 파일은 지역 4의 목적지를 표시하는 헤더를 가질 수 있으며, 이에 의해 파일의 콘텐츠들이 상이한 지역으로 전송될 필요가 없다고 결정될 수 있다.
[0057] 캐싱 서버들(195)은 (본원에서 설명된 바와 같이 주입을 트리거하는 추측된 요청들과 비교하여) 실제 데이터 요청들에 대한 온-디맨드 캐싱뿐만 아니라 본원에서 설명된 바와 같은 예측 주입 캐싱 둘 모두를 위해 데이터 센터에 의해 사용될 수 있다.
[0058] 예시 목적을 위해, 도 1의 메타데이터 애그리게이터(160) 및 예측 모델(170)은 데이터 센터들 및 지리적 지역들(110, 120, 130, 140) 각각과 별개로 도시되고, 액세스 로케이션 예측기(180)는 데이터 센터(140b)에 포함되는 것으로 도시된다. 그러나 애그리게이터(160), 예측 모델(170) 및 액세스 로케이션 예측기(180)에 저장된 데이터 및 이들에 의해 실행되는 명령들은, 지리적 지역의 다수의 데이터 센터들에 걸쳐 분산되거나 시스템의 여러 지리적 지역들에 걸쳐 분산되는 것을 포함하여 도시된 지역들 및 데이터 센터들, 도시되지 않은 다른 지역들 또는 데이터 센터들, 또는 이들의 조합과 같은 시스템의 어느 곳에든 있을 수 있다는 것이 인식되어야 한다.
예시적인 방법들
[0059] 도 3은 분산 네트워크에 데이터를 저장하기 위한 예시적인 루틴(300)을 예시하는 흐름도이다. 네트워크는 도 1의 지역들(110, 120, 130 및 140과 같은 다양한 지리적 지역들에 걸쳐 분산되는 다수의 데이터 센터들 이를테면, 도 1의 데이터 센터들(110a, 110b, 120a, 120b, 130a, 130b, 140a 및 140b)을 포함할 수 있다. 방법에서의 동작들 중 일부는 데이터가 전달되는 데이터 센터들의 프로세서들에 의해 수행될 수 있는 반면, 일부 동작들은 다른 데이터 센터들의 프로세서들 또는 데이터 센터들 또는 지리적 지역들에 독립적인 프로세서들 및 서버들에 의해 수행될 수 있다.
[0060] 블록(310)에서, 네트워크의 제1 지역에 속하는 데이터 센터에 데이터가 업로드될 수 있다. 업로드된 데이터는 데이터 오브젝트뿐만 아니라 업로드된 데이터 오브젝트의 메타데이터 이를테면, 업로드 시간, 데이터 오브젝트의 유형, 오브젝트가 업로드되는 로케이션 등을 포함할 수 있다.
[0061] 블록(320)에서, 네트워크에 이전에 저장되었던 이전에 업로드된 데이터에 관한 액세스 정보가 수신되고 분석될 수 있다. 또한, 이전에 업로드된 데이터는 그의 업로드 시간에 포함된 메타데이터를 가질 수 있고, 이전에 업로드된 데이터에 액세스된 시간, 이전에 업로드된 데이터에 액세스된 로케이션들 등을 표시하는 메타데이터와 같이 업로드 후에 수집된 부가적인 메타데이터를 추가로 가질 수 있다.
[0062] 블록(330)에서, 업로드된 데이터가 액세스될 가능성이 높은 네트워크의 지리적 지역들에 대한 예측들이 이루어질 수 있다. 이 예측 또는 결정은 현재 업로드된 데이터의 메타데이터뿐만 아니라 이전에 업로드된 데이터에 관한 액세스 정보에 기초할 수 있다. 부가적으로, 예측은 액세스 중인 현재 업로드된 데이터에 선행할 수 있고, 이에 의해 업로드 시간에 현재 업로드된 데이터의 메타데이터가 예측을 위해 충분할 수 있다. 이전에 업로드된 데이터의 정보에서 인식된 패턴들은 현재 업로드된 데이터의 액세스에 대한 가능성 결과(likely outcome)를 표시할 수 있고, 이에 따라 현재 업로드된 데이터를 저장하기에 이상적인 로케이션을 예측하는 데 사용될 수 있다. 대부분의 경우들에서, 업로드된 데이터를 그것이 원래 업로드된 데이터 센터에 저장하는 것이 바람직할 수 있다. 그러나 다른 경우들에서, 업로드된 데이터를 상이한 데이터 센터에 또는 심지어 상이한 지리적 지역에 부가적으로 또는 대안적으로 저장하는 것이 바람직할 수 있다.
[0063] 블록(340)에서, 업로드된 데이터는 기원한 데이터 센터로부터, 데이터가 액세스될 가능성이 높은 다른 데이터 센터들로 전달되도록 지시된다. 다른 데이터 센터들은 제1 지리적 지역이 아닌 지리적 지역들에 로케이팅될 수 있고, 이에 따라 그 다른 지역들의 업로드된 데이터에 대한 액세스를 보다 효율적으로 만든다. 효율성은 데이터에 더 빨리 액세스하고, 전체 대역폭에 비용이 덜 들게 하고, 더 많은 사용 가능한 대역폭을 갖는 연결들을 통해 수행되는 것 또는 이들 및 다른 팩터들의 임의의 조합의 척도일 수 있다.
[0064] 도 4는 도 3의 루틴(300)의 예시적인 서브루틴(400)을 예시하는 흐름도이다. 서브루틴(400)은 업로드된 데이터 오브젝트에 대한 하나 이상의 목적지 지역들의 결정뿐만 아니라, 결정된 목적지 지역들의 하나 이상의 데이터 센터들에 대한 데이터 오브젝트의 분배를 수행하기 위해 수행될 수 있는 예시적인 동작들을 도시한다.
[0065] 블록(410)에서, 현재 업로드된 데이터가 액세스될 하나 이상의 지리적 지역들이 예측된다. 이 예측은 도 1에 도시된 액세스 로케이션 예측기(180)와 같은 액세스 예측 프로그램에 의해 이루어질 수 있고 도 1에 도시된 예측 모델(170)과 같이 이전에 업로드된 데이터의 액세스 로그에 대해 트레이닝된 예측 모델로부터의 출력에 기초할 수 있다. 예측 모델은 이전에 업로드된 데이터의 액세스 패턴들을 인식할 수 있고 현재 업로드된 데이터에 액세스될 가능성이 높은 그러한 패턴들에 기초하여 예측할 수 있다.
[0066] 블록(420)에서, 현재 업로드된 데이터는 도 1의 마이그레이션 파일(190)과 같이, 제1 지역 이외의 목적지 지역으로 업로드된 데이터의 마이그레이션을 위해 지정된 하나 이상의 파일들로 전송, 이를테면, 복사되거나 이동될 수 있다. 현재 업로드된 데이터가 전송되는 파일들은 블록(410)의 예측에 기초할 수 있으며, 이에 의해 데이터는 그것이 액세스될 것으로 예상되는 그러한 지역들로 전달될 것이다.
[0067] 블록(430)에서, 현재 업로드된 데이터가 예측된 지리적 지역에서 액세스될 때까지의 시간량이 예측된다. 이 예측은 또한 예측 모델로부터의 출력에 기초할 수 있다. 이 경우에, 트레이닝 데이터로서 예측 모델에 제공되는 이전에 업로드된 데이터의 액세스 로그들은 업로드와 이전에 업로드된 데이터의 최초 액세스 사이의 방향(direction)을 결정하거나 도출될 수 있게 하는 정보 이를테면, 업로드된 시간 및 데이터가 액세스될때마다 또는 데이터가 액세스된 최초 시간의 로그를 포함해야 한다. 예측 모델은 이전에 업로드된 데이터의 액세스 패턴들을 인식할 수 있고, 그러한 패턴들에 기초하여 현재 업로드된 데이터에 액세스될 가능성이 높을 때를 예측할 수 있다.
[0068] 블록(440)에서, 현재 업로드된 데이터가 액세스될 가능성이 높을 때의 예측은 현재 시간으로부터의 시간량과 같은 임계값과 비교될 수 있다. 현재 업로드된 데이터에 액세스될 때까지 예측된 시간량이 임계량을 초과하거나 그와 동일한 경우 ― 이는 현재 업로드된 데이터에 비교적 즉각적 기준으로 액세스될 것으로 예상되지 않는 것을 의미함 ― , 동작들이 종료될 수 있고 데이터는 하나 이상의 마이그레이션 파일들을 사용하여 비교적 느린 속도로 마이그레이팅된다. 반대로, 현재 업로드된 데이터가 액세스될 때까지 예측된 시간량이 임계량보다 작은 경우 ― 이는 현재 업로드된 데이터가 비교적 즉각적 기준으로 액세스될 것으로 예상됨 ― , 동작들은 블록(450)에서 계속될 수 있으며, 이에 의해 현재 업로드된 데이터는 동일한 지리적 지역 또는 하나 이상의 상이한 지리적 지역들에 있는 원격 데이터 센터의 캐싱 서버들 내로 주입되기 위해 도 1의 캐싱 서버(195)와 같은 캐싱 서버로 전송(복사 또는 이동)된다. 마이그레이션 파일들과 마찬가지로, 데이터가 어느 데이터 센터들, 지역들 또는 둘 모두에 주입될지에 관한 결정은 블록(410)에서 액세스 로케이션 예측자의 결정들에 기초할 수 있다.
[0069] 도 4의 예에서, 업로드된 데이터를 마이그레이션 파일로 전송하라는 판단은 데이터를 전달하는 긴급성 또는 우선순위를 결정하기 전에 내려지는 것으로 도시된다. 따라서 데이터를 마이그레이팅하라는 결정은 데이터가 곧 또는 추후에 필요한지, 즉 데이터가 목적지들에 또한 주입되는지 여부에 관계없이 내려진다. 그러나 다른 예들에서, 비교적 짧은 저장 수명을 갖는 라이브 스트리밍 비디오와 같이 즉각적 기준으로만 액세스되고 추후 시간들에 액세스되지 않을 가능성이 높은 데이터가 있을 수 있다. 이러한 경우들에서, 시스템은 업로드된 데이터를 원격 데이터 센터들의 캐싱 서버들에 주입하지만, 데이터가 불필요하게 원격 데이터 센터들에 영구적으로 저장되는 것을 방지하기 위해 업로드된 데이터를 마이그레이션 파일들에 추가하지 않기로 결정할 수 있다.
[0070] 도 5는 도 3의 루틴(300)의 블록들(330 및 340)에 도시된 바와 같이, 업로드된 데이터가 액세스될 가능성이 높은 네트워크의 지리적 지역들을 예측하고 업로드된 데이터가 예측된 지리적 지역들로 전달되도록 지시하는, 액세스 로케이션 예측기(520)의 예시적인 동작을 도시하는 동작 블록도(500)이다. 액세스 로케이션 예측기(520)는 지역 4의 데이터 센터에 업로드된 데이터 오브젝트들(5011, 501N)을, 마이그레이션 파일들(532, 534, 536), 캐싱 서버들(550), 또는 둘 모두에 선택적으로 이동시키거나 복사한다. 또한, 위에서 언급된 바와 같이, 액세스 로케이션 예측기(520)는 오브젝트로부터의 메타데이터 및 업로드된 데이터가 액세스될 가능성이 높은 로케이션 또는 로케이션들을 예측하는 데 사용되는 예측 모델의 출력에 기초하여 각각의 업로드된 데이터 오브젝트(5011, 501N)의 배치를 결정할 수 있다.
[0071] 도 5의 예에서, 업로드된 데이터 오브젝트들(5011, 501N) 각각은 상이한 메타데이터를 갖는다. 따라서, 액세스 로케이션 예측기(520)는 업로드된 데이터 오브젝트들(5011, 501N) 각각에 대해 상이한 배치 전략을 결정한다.
[0072] 업로드된 오브젝트 1(5011)의 예에서, 액세스 로케이션 예측기(520)는 이 오브젝트가 지역 2에서 액세스될 가능성이 높다고 결정한다. 따라서 오브젝트 1은 데이터 서버로부터 마이그레이션 파일(534)로 이동되며, 이는 오브젝트 1이 지역 2로 업로드되는 데이터 센터로부터 마이그레이팅되는 오브젝트들에 대해 전용되는 파일일 수 있다.
[0073] 도 5에 도시된 바와 같이, 각각의 마이그레이션 파일은 파일의 목적지를 표시할 수 있는 공통 메타데이터(542) 이를테면, 파일에 대한 헤더를 포함할 수 있다. 공통 메타데이터를 제시하는 것은 이 메타데이터가 각각의 첨부된 오브젝트(544)에 대해 마이그레이션 파일에 별개로 기록될 필요성을 회피하며, 이는 마이그레이션 파일의 공간을 절약할 수 있고 데이터 서버로부터 마이그레이션 파일로 오브젝트들을 이동시키기 위한 프로세싱 요건들을 추가로 감소시킬 수 있다. 또한, 목적지 지역의 경우에, 목적지 지역이 오브젝트 및 그 지역에 저장된 다른 모든 오브젝트들의 공통 메타데이터를 유지할 것이므로, 마이그레이션 후에 이 메타데이터가 오브젝트에 다시 기록될 필요가 없다. 목적지 지역과 같이, 공통 메타데이터를 제외하고, 각각의 오브젝트의 나머지 메타데이터는 마이그레이션 동안 오브젝트 메타데이터를 보존하기 위해 오브젝트와 함께 이동되거나 복사될 수 있다.
[0074] 일부 예들에서, 마이그레이션 파일은 미리 결정된 용량을 가질 수 있으며, 이에 의해 오브젝트를 마이그레이션 파일로 이동시키거나 복사하는 것이 마이그레이션 파일로 하여금 미리 결정된 용량에 도달하거나 초과하게 할 때 마이그레이션 파일은 목적지 지역의 하나 이상의 데이터 센터들로 전달될 수 있다. 부가적으로 또는 대안적으로, 마이그레이션 파일은 마이그레이션 파일을 생성한 이래로 미리 결정된 시간량이 경과한 후, 목적지 지역의 하나 이상의 데이터 센터들로 전달될 수 있다. 오브젝트들을 전달하기 위한 동작들은 도 4와 관련하여 아래에서 더 자세히 설명된다.
[0075] 오브젝트가 단 하나의 지역으로부터만 액세스될 가능성이 높다고 결정되는 경우, 오브젝트는 오브젝트 1(5011)의 예에서와 같이 단일 목적지로 이동될 수 있다. 그러나 다른 경우들에서, 오브젝트가 업로드되는 지역을 포함하거나 제외한 하나 초과의 지역으로부터 오브젝트가 액세스될 가능성이 높은 것으로 결정될 수 있다. 이러한 경우에, 액세스 로케이션 예측기(520)는 오브젝트를 하나 초과의 마이그레이션 파일로 이동시키거나 복사하기로 결정할 수 있다.
[0076] 업로드된 오브젝트 2(5012)의 예에서, 액세스 로케이션 예측기(520)는 이 오브젝트가 지역들 1, 3 및 4 각각에서 액세스될 가능성이 높다고 결정한다. 따라서 오브젝트 2는 데이터 서버로부터 마이그레이션 파일들(532 및 536) 각각으로 복사되며, 이는 오브젝트 2가 지역들 1 및 3으로 업로드되는 데이터 센터로부터 마이그레이팅되는 오브젝트들에 대해 전용되는 파일들일 수 있다. 또한, 오브젝트는 그것이 지역 4에서 액세스될 수 있도록 데이터 서버에 영구적으로 저장된 채로 유지될 수 있다.
[0077] 위에서 언급된 바와 같이, 파일이 여러 데이터 오브젝트들로 채워진 후에 하나의 지역으로부터 다른 지역으로 오브젝트들의 마이그레이션이 시작될 수 있다. 마이그레이션 파일이 클 수 있으므로, 마이그레이션 파일이 채워질 때까지 시간이 걸릴 수 있다. 그러나, 일부 경우들에서, 데이터 오브젝트는 데이터 마이그레이션이 발생하기 전의 시간 동안만, 네트워크의 원격 지역에서 수요가 높을 수 있다. 이 경우에, 마이그레이션 파일들을 사용한 데이터 오브젝트들의 느린 속도의 전략적 리로케이션은 그것이 수요가 높은 동안 다른 지역들의 사용자들이 데이터 오브젝트에 효율적으로 액세스하는 능력을 약화시킬 것이다. 예컨대, 사용자가 유럽에서 라이브 비디오를 스트리밍하고 있고 미국의 여러 사용자들이 스트리밍된 비디오에 즉시 액세스하려는 경우, 비디오 파일이 유럽의 데이터 센터로부터 미국의 데이터 센터로 마이그레이팅되기를 기다리는 것은 도움이 되지 않을 것이고, 스트리밍된 비디오가 미국의 데이터 센터에 저장된 후 그 스트리밍된 비디오에 대해 더 이상 수요가 없을 수도 있다.
[0078] 이 난제를 해결하기 위해, 오브젝트 파일은 데이터가 업로드된 후 데이터가 얼마나 곧바로 액세스될 수 있는지가 결정될 수 있게 하는 메타데이터를 포함할 수 있다. 예컨대, 도 1의 시스템에서, 메타데이터 애그리게이터(160)는 각각의 저장된 오브젝트에 대한 업로드 시간 및 가장 이른 다운로드 시간 둘 모두를 보여주는 메타데이터를 수집할 수 있다. 그 후, 이 데이터는 향후 업로드되는 데이터 오브젝트가, 오브젝트가 시스템에 업로드된 직후에 또는 오랜 후에 액세스될 것인지 여부를 예측하기 위해 예측 모델(170)을 트레이닝하는 데 사용될 수 있다. 차례로, 이 정보는 임의의 주어진 업로드된 데이터 오브젝트에 대해, 오브젝트가 다운로드될 가능성이 높을 때까지의 시간량을 결정하기 위해 액세스 로케이션 예측기(180)에 의해 사용될 수 있다. 시스템은 임계 시간 값을 추가로 저장할 수 있으며, 이에 의해 오브젝트가 다운로드될 가능성이 높은 예측된 시간량이 임계량 이하인 경우, 오브젝트는 마이그레이션 파일들을 통해 일반적인 데이터 마이그레이션 방식을 우회하고, 시스템의 다른 지역들로의 업로드된 데이터 오브젝트의 비교적 더 빠른 전달을 위해 캐싱 서버(350)로 이동되거나 복사될 수 있다.
[0079] 업로드된 오브젝트 3(5013)의 예에서, 액세스 로케이션 예측기(520)는 이 오브젝트가 임계량의 시간 내에서 수요가 높을 가능성이 높다고 결정한다. 따라서 오브젝트 3은 데이터 서버로부터 캐싱 서버(550)로 복사되어서, 파일은 액세스 로케이션 예측기(520)의 결정들에 기초하여, 지역 1, 지역 2 및 지역 3을 포함(그러나 이에 제한되지 않음)하는 다른 지역들뿐만 아니라 지역 4의 원격 데이터 센터들의 캐싱 서버들로 주입될 수 있다. 오브젝트 3은 데이터 센터의 데이터 서버에 저장된 채로 유지될 수 있다.
[0080] 다수의 경우들에서, 업로드된 오브젝트는, 그것이 업로드된 지역으로부터만 액세스될 가능성이 높다고 결정될 수 있다. 이는 사용자들 사이에서 공유되지 않는 개인적으로 저장된 파일들의 경우 또는 서로 지리적으로 매우 근접한 사용자들의 그룹 사이에서 공유되는 파일들의 경우 해당할 수 있다. 그러한 경우들에서, 액세스 로케이션 예측기(520)는 업로드된 오브젝트가 마이그레이션 파일(532, 534, 536) 또는 캐싱 서버(550) 중 어느 것에도 복사되어서는 안 된다고 결정할 수 있다. 대신, 오브젝트는 오브젝트가 업로드된 데이터 센터의 데이터 서버에 저장된 채로 유지될 수 있다. 업로드된 오브젝트 4(5014)의 예에서, 액세스 로케이션 예측기(520)는 이 오브젝트가 기원 지역 4에서만 액세스될 가능성이 높다고 결정한다. 따라서 오브젝트 4는 데이터 서버로부터 복사되지 않는다.
[0081] 데이터 서버에서 파일을 유지하거나, 파일을 마이그레이션 파일로 복사하거나, 파일을 캐싱 서버로 복사하는 것은 독립적인 동작들로서 취급될 수 있다는 것이 주의되어야 한다. 따라서 하나의 동작을 수행하라는 판단은 임의의 다른 동작이 수행되는 것을 배제하지 않는다. 예컨대, 스트리밍된 비디오 파일과 같은 브로드캐스트 데이터는 즉시 및 추후의 시간에 다수의 지역들에 걸쳐 수요가 높을 수 있다. 이러한 경우에, 파일이 기원 데이터 서버에서 유지될 뿐만 아니라 장기 및 단기 수요를 모두 처리하기 위해 마이그레이션 파일 및 캐싱 서버 둘 모두에 복사되어야 한다고 결정될 수 있다. 결정은 브로드캐스트 데이터인 업로드된 데이터뿐만 아니라 예측 모델에 의해 검출된 다른 액세스 패턴들에 적어도 부분적으로 기초할 수 있다.
[0082] 업로드된 오브젝트 N(501N)의 예에서 액세스 로케이션 예측기(520)는 이 오브젝트가 임계 시간량 안에 뿐만 아니라 추후 시간에 지역들 3 및 4 둘 모두에서 수요가 높을 가능성이 높다고 결정한다. 따라서 오브젝트 N은 데이터 서버로부터 마이그레이션 파일(536) 및 캐싱 서버(550) 둘 모두로 복사되어서, 오브젝트는 즉각적인 수요를 처리하기 위해 지역 3의 캐싱 서버들에 주입될 뿐만 아니라 장기 수요를 처리하기 위해 지역 3의 영구 저장소로 마이그레이팅될 수 있다.
[0083] 도 6은 도 1의 액세스 로케이션 예측기(180) 또는 도 5의 액세스 로케이션 예측기(520)와 같은 액세스 로케이션 예측기에 의해 내려진 결정에 따라 업로드된 데이터 오브젝트를 분배하기 위한 예시적인 동작을 도시하는 블록도이다. 도 6의 예는 분산 네트워크 시스템(600)의 지역 4(640)로부터 지역 1(610) 및 지역 2(620) 둘 모두로 마이그레이팅(장기) 및 주입(단기)되는 업로드된 오브젝트를 도시한다. 각각의 지역은 하나 이상의 데이터 센터들(610a, 620a, 640a)을 포함할 수 있으며, 이에 의해 각각의 데이터 센터는 하나 이상의 개개의 프로세서들(612, 622, 642), 데이터 서버들(614, 624)(지역 4에 대해 도시되지 않음), 및 캐싱 서버들(616, 626, 646)을 포함할 수 있다. 예시 목적들을 위해, 마이그레이션 파일들(644)은 지역 4의 데이터 센터(640)에 저장되는 것으로 도시되지만, 마이그레이션 파일들은 다른 지역들의 데이터 센터들에 또한 저장되어 그러한 다른 지역들에 업로드된 오브젝트들을 네트워크 전반에 걸쳐 또한 전달되게 하는 것을 용이하게 할 수 있다.
[0084] 동작에서, 지역 4 데이터 센터(640a)의 마이그레이션 파일들(644)의 콘텐츠들을 이동시키는 것은 시스템(600)의 데이터 마이그레이션 제어기(650)가 프로그램을 실행하는 것과 함께 시작할 수 있으며, 이에 의해 데이터 센터(610a)에는 그의 서버들에 저장된 데이터의 파일들에 대해 질의된다. 프로세서(642)는 질의를 수신할 수 있고, 응답으로 각각의 파일의 목적지를 표시하는 정보를 제공할 수 있다. 지역 4에 저장되는(이에 의해 목적지가 지역 4임) 파일들의 경우에, 데이터 마이그레이션 제어기(650)는 어떠한 추가 액션도 취하지 않을 수 있다. 반대로, 지역들 1 및 2와 같은 다른 지역들에 저장되는(이에 의해 파일에 의해 표시되는 목적지가 지역 4가 아님) 파일의 경우에, 데이터 마이그레이션 제어기(650)는 파일들로부터 식별된 목적지들로의 데이터의 마이그레이션을 개시하기로 결정할 수 있다. 데이터 마이그레이션 제어기(650)는 프로세서들(612, 622)과 같은 각각의 식별된 목적지의 하나 이상의 프로세서들에 명령을 송신할 수 있다. 이들 명령들에 기초하여, 프로세서들은 데이터 마이그레이션을 수행하도록 각자의 로케이션들의 데이터 서버들(614, 624)에 지시할 수 있으며, 이에 의해 각각의 데이터 서버(614, 624)는 지역 4에서 개개의 마이그레이션 파일(644)에 액세스하고 판독할 수 있다. 마이그레이션 파일(644)을 판독한 후, 마이그레이션 파일(644)의 콘텐츠들은 삭제될 수 있다. 이 프로세스는 지역 4(640)에서 데이터 센터(610a)로 업로드되는 향후의 데이터 오브젝트들에 대해 반복될 수 있다.
[0085] 지역 4 데이터 센터(640a)의 캐싱 서버(646)의 콘텐츠들을 이동시키는 것은 서버(646)가 전송될 데이터를 프리페칭(prefetching)하고, 이를 액세스 로케이션 예측기의 명령들에 따라 원격 데이터 센터들의 캐싱 서버들(616, 626)에 주입하는 것과 함께 시작할 수 있다. 주입은 비교적 즉각적인 스케일로 수행될 수 있으며, 이는 데이터 주입을 개시하기 전에 실행될 어떠한 추가 단계들도 없다는 것을 의미한다. 이는 데이터를 다른 데이터 센터들에서 가능한 한 빨리 사용 가능하게 할 수 있다. 데이터가 목적지 지역의 고정되고 제한된 수의 데이터 센터들 및 고정되고 제한된 수의 로케이션들에 저장될 수 있는 데이터 마이그레이션과 달리, 캐시 주입은 목적지 지역의 모든 데이터 센터들의 캐시들을 포함(그러나 이에 제한되지 않음)하여, 그것이 전송된 임의의 주어진 지역의 다수의 데이터 센터들에 업로드 및 전달된 오브젝트의 사본들을 배치할 수 있다. 이는 온 디맨드 데이터가 짧은 시간 기간에 다수의 사용자들에 의해 액세스되도록 허용할 수 있다. 동기식 캐시 주입은 동기식 복제에 비해 비교적 빠르고 효율적이다.
[0086] 위의 예들은 데이터 센터들 및 지역들에 따른 데이터 분배 방식들을 참조한다. 그러나, 당업자들은 동일한 원리들이 데이터가 상이하게 조직화되는 다른 시스템들에 적용될 수 있다는 것을 쉽게 인식할 것이다. 근본적인 원리는 글로벌 네트워크와 같은 대규모 네트워크의 일부 부분들이 네트워크의 다른 부분들보다 임의의 주어진 사용자에게 더 가까울 수 있고 데이터가 액세스될 로케이션들이 예측될 수 있는 한, 데이터가 업로드된 후 데이터가 액세스될 그러한 로케이션들에 더 가깝게 데이터를 이동시키는 것이 유리할 수 있다는 것이다. 이 정도로, 특정 사용자 또는 사용자들의 그룹이 향후에 데이터에 액세스할 가능성이 높다는 것이 예측될 수 있는 경우, 그 데이터는 예측된 액세스 사용자들에 더 가까운 데이터 센터들, 서버들 또는 다른 유닛 저장소들로 이동될 수 있다.
[0087] 부가적으로, 위의 예들은 일반적으로 로케이션이 지리적으로 더 가까울 때 사용자에게 더 가까운 것으로 로케이션들을 설명한다. 그러나, 당업자는 데이터의 "가까움"이 반드시 지리적 거리의 척도가 아니라 데이터에 액세스하기 위한 비용의 척도임을 인식할 것이다. 따라서 데이터가 사용자 또는 사용자의 그룹에 "더 가깝게” 또는 데이터가 액세스될 것으로 예측되는 로케이션에 "더 가깝게" 포지셔닝될 때, 로케이션은 데이터에 액세스하기 위한 전체 비용들 이를테면, 대역폭, 시간, 계약 당사자들에 의해 사용되는 대역폭에 대한 요금, 이들 또는 다른 팩터들의 임의의 조합을 감소시키도록 선택될 수 있다.
[0088] 본원에서의 기술이 특정 실시예들을 참조하여 설명되었지만, 이들 실시예들은 단지 본 기술의 원리들 및 애플리케이션들을 예시할 뿐이라는 것이 이해될 것이다. 따라서, 예시적인 실시예들에 대해 수많은 수정들이 이루어질 수 있고, 첨부된 청구항들에 의해 정의된 바와 같은 본 기술의 사상 및 범위로부터 벗어남이 없이 다른 어레인지먼트들이 창안될 수 있다는 것이 이해될 것이다.

Claims (20)

  1. 복수의 지리적 지역들에 걸쳐 분산된 복수의 데이터 센터들을 갖는 분산 네트워크에 데이터를 저장하기 위한 방법으로서,
    하나 이상의 프로세서들에 의해, 상기 분산 네트워크의 제1 데이터 센터에 업로드된 데이터를 수신하는 단계 ― 상기 업로드된 데이터는 메타데이터를 포함함 ― ;
    상기 하나 이상의 프로세서들에 의해, 이전에 업로드된 데이터에 관한 액세스 정보를 수신하는 단계;
    상기 업로드된 데이터가 액세스되기 전에, 상기 하나 이상의 프로세서들에 의해, 상기 메타데이터 및 상기 액세스 정보에 기초하여 상기 업로드된 데이터가 액세스될 상기 복수의 지리적 지역들 중 하나 이상을 예측하는 단계; 및
    상기 하나 이상의 프로세서들에 의해, 상기 업로드된 데이터가 상기 제1 데이터 센터로부터, 상기 예측된 지리적 지역들 중 하나 이상에 로케이팅된 하나 이상의 제2 데이터 센터들로 전달되도록 지시하는 단계를 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  2. 제1 항에 있어서,
    상기 액세스 정보는 상기 이전에 업로드된 데이터의 메타데이터에 대해 트레이닝된 예측 모델로부터 도출되는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  3. 제2 항에 있어서,
    상기 예측 모델은 판단 트리 모델인, 분산 네트워크에 데이터를 저장하기 위한 방법.
  4. 제1 항에 있어서,
    상기 메타데이터는 상기 업로드된 데이터를 업로드하는 사용자의 식별(identification) 및 상기 업로드된 데이터가 업로드되는 로케이션을 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  5. 제2 항에 있어서,
    상기 이전에 업로드된 데이터의 메타데이터는 상기 이전에 업로드된 데이터의 로케이션, 상기 이전에 업로드된 데이터를 업로드하는 사용자의 식별 및 상기 이전에 업로드된 데이터가 업로드되는 로케이션을 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  6. 제5 항에 있어서,
    상기 이전에 업로드된 데이터의 메타데이터는 상기 이전에 업로드된 데이터가 저장되는 디렉토리 또는 파일 경로의 식별을 더 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  7. 제1 항에 있어서,
    상기 액세스 정보는 상기 이전에 업로드된 데이터의 초기 업로드와 상기 이전에 업로드된 데이터의 최초 다운로드 사이의 시간량을 표시하며,
    상기 방법은,
    상기 하나 이상의 프로세서들에 의해, 상기 업로드된 데이터가 최초로 다운로드될 때까지의 시간량을 예측하는 단계; 및
    상기 하나 이상의 프로세서들에 의해, 상기 예측된 시간량에 기초하여 상기 업로드된 데이터가 상기 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하는 단계를 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  8. 제7 항에 있어서,
    상기 업로드된 데이터가 상기 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 메타데이터 및 상기 액세스 정보에 기초하여, 상기 업로드된 데이터가 브로드캐스트 데이터라고 결정하는 단계; 및
    상기 업로드된 데이터가 전달되도록 지시된 각각의 주어진 예측된 지리적 지역에 대해, 상기 하나 이상의 프로세서들에 의해, 상기 업로드된 데이터가 상기 주어진 예측된 지리적 지역의 각각의 데이터 센터의 적어도 하나의 캐싱 서버로 전달되도록 지시하는 단계를 더 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  9. 제1 항에 있어서,
    상기 하나 이상의 프로세서들에 의해, 상기 업로드된 데이터가 공통 예측된 지리적 지역을 갖는 이전에 업로드된 데이터를 포함하는 파일에 포함되도록 지시하는 단계; 및
    상기 하나 이상의 프로세서들에 의해, 상기 파일이 상기 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들에 전달되도록 지시하는 단계를 더 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  10. 제9 항에 있어서,
    상기 파일은 초기에 제1 데이터 센터에 로케이팅된 하나 이상의 소스 서버들에 저장되고,
    상기 파일이 전달되도록 지시하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 하나 이상의 소스 서버들로부터 상기 파일을 풀링하도록 상기 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들의 데이터 서버들에 지시하는 단계를 포함하는, 분산 네트워크에 데이터를 저장하기 위한 방법.
  11. 복수의 지리적 지역들에 걸쳐 분산된 복수의 데이터 센터들을 갖는 분산 네트워크에 데이터를 저장하기 위한 시스템으로서,
    제1 데이터 센터에 업로드된 데이터를 저장하게 구성되는, 상기 분산 네트워크의 상기 제1 데이터 센터에 있는 하나 이상의 저장 디바이스들 ― 상기 업로드된 데이터는 메타데이터를 포함함 ― ; 및
    상기 하나 이상의 저장 디바이스들과 통신하는 하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은,
    상기 분산 네트워크의 복수의 데이터 센터들에 이전에 저장된 이전에 업로드된 데이터에 관한 액세스 정보를 수신하고;
    상기 업로드된 데이터가 액세스되기 전에, 상기 메타데이터 및 상기 액세스 정보에 기초하여 상기 업로드된 데이터가 액세스될 상기 복수의 지리적 지역들 중 하나 이상을 예측하고; 그리고
    상기 업로드된 데이터가 상기 제1 데이터 센터로부터, 상기 예측된 지리적 지역들 중 하나 이상에 로케이팅된 하나 이상의 제2 데이터 센터들로 전달되도록 지시하게 구성되는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  12. 제11 항에 있어서,
    상기 액세스 정보는 상기 이전에 업로드된 데이터의 메타데이터에 대해 트레이닝된 예측 모델로부터 도출되는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  13. 제12 항에 있어서,
    상기 예측 모델은 판단 트리 모델인, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  14. 제11 항에 있어서,
    상기 메타데이터는 상기 업로드된 데이터를 업로드하는 사용자의 식별(identification) 및 상기 업로드된 데이터가 업로드되는 로케이션을 포함하는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  15. 제12 항에 있어서,
    상기 이전에 업로드된 데이터의 메타데이터는 상기 이전에 업로드된 데이터의 로케이션, 상기 이전에 업로드된 데이터를 업로드하는 사용자의 식별 및 상기 이전에 업로드된 데이터가 업로드되는 로케이션을 포함하는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  16. 제15 항에 있어서,
    상기 이전에 업로드된 데이터의 메타데이터는 상기 이전에 업로드된 데이터가 저장되는 디렉토리 또는 파일 경로의 식별을 더 포함하는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  17. 제11 항에 있어서,
    상기 액세스 정보는 상기 이전에 업로드된 데이터의 초기 업로드와 상기 이전에 업로드된 데이터의 최초 다운로드 사이의 시간량을 표시하며,
    상기 하나 이상의 프로세서들은,
    상기 업로드된 데이터가 최초로 다운로드될 때까지의 시간량을 예측하고; 그리고
    상기 예측된 시간량에 기초하여 상기 업로드된 데이터가 상기 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하게 구성되는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  18. 제17 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 메타데이터에 기초하여 상기 업로드된 데이터는 브로드캐스트 데이터라는 결정에 기초하여 상기 업로드된 데이터가 상기 하나 이상의 예측된 지리적 지역들에 로케이팅된 하나 이상의 캐싱 서버들에 송신되도록 지시하게 구성되고, 그리고
    상기 업로드된 데이터가 전달되도록 지시된 각각의 주어진 예측된 지리적 지역에 대해, 상기 하나 이상의 프로세서들은 상기 업로드된 데이터가 상기 주어진 예측된 지리적 지역의 각각의 데이터 센터의 적어도 하나의 캐싱 서버로 전달되도록 지시하게 구성되는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  19. 제11 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 업로드된 데이터가 공통 예측된 지리적 지역을 갖는 이전에 업로드된 데이터를 포함하는 파일에 포함되도록 지시하고; 그리고
    상기 파일이 상기 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들에 전달되도록 지시하게 구성되는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
  20. 제19 항에 있어서,
    상기 파일은 초기에 제1 데이터 센터에 로케이팅된 하나 이상의 소스 서버들에 저장되고,
    상기 하나 이상의 프로세서들은,
    상기 하나 이상의 소스 서버들로부터 상기 파일을 풀링하도록 상기 공통 예측된 지리적 지역에 로케이팅된 하나 이상의 제2 데이터 센터들의 데이터 서버들에 지시하게 구성되는, 분산 네트워크에 데이터를 저장하기 위한 시스템.
KR1020227012107A 2019-11-04 2020-11-03 클라우드 저장소의 액세스 패턴 주도식 데이터 배치 KR102659627B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/673,128 2019-11-04
US16/673,128 US11588891B2 (en) 2019-11-04 2019-11-04 Access pattern driven data placement in cloud storage
PCT/US2020/058641 WO2021091851A1 (en) 2019-11-04 2020-11-03 Access pattern driven data placement in cloud storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020247012756A Division KR20240055889A (ko) 2019-11-04 2020-11-03 클라우드 저장소의 액세스 패턴 주도식 데이터 배치

Publications (2)

Publication Number Publication Date
KR20220064391A true KR20220064391A (ko) 2022-05-18
KR102659627B1 KR102659627B1 (ko) 2024-04-22

Family

ID=

Also Published As

Publication number Publication date
JP7454661B2 (ja) 2024-03-22
CN114651433A (zh) 2022-06-21
US20230164219A1 (en) 2023-05-25
US20210136150A1 (en) 2021-05-06
EP4026303A1 (en) 2022-07-13
WO2021091851A1 (en) 2021-05-14
US11588891B2 (en) 2023-02-21
JP2023501084A (ja) 2023-01-18

Similar Documents

Publication Publication Date Title
US20230164219A1 (en) Access Pattern Driven Data Placement in Cloud Storage
US8612668B2 (en) Storage optimization system based on object size
US8745262B2 (en) Adaptive network content delivery system
US6874015B2 (en) Parallel CDN-based content delivery
EP2359536B1 (en) Adaptive network content delivery system
CA2588704A1 (en) System and method for managing quality of service for a storage system
CN108139974B (zh) 分布式缓存动态迁移
EP2939145B1 (en) System and method for selectively routing cached objects
US10560513B2 (en) Small disk support for large cloud-based storage systems
CN110324406B (zh) 一种获取业务数据的方法和云服务系统
US10782888B2 (en) Method and device for improving file system write bandwidth through hard disk track management
US11489911B2 (en) Transmitting data including pieces of data
CN105306570A (zh) 一种集群数据的存储方法
KR102659627B1 (ko) 클라우드 저장소의 액세스 패턴 주도식 데이터 배치
CN117215493A (zh) 文件共享系统
JP5192506B2 (ja) ファイルキャッシュの管理方法、装置、及び、プログラム
KR20240055889A (ko) 클라우드 저장소의 액세스 패턴 주도식 데이터 배치
CN105516223B (zh) 虚拟存储系统及其实现方法、服务器和虚拟机监控器
JP7174372B2 (ja) 分散ストレージネットワークにおけるデータ管理方法、装置、プログラム
KR101329759B1 (ko) 클라우드 컴퓨팅 환경에서 개인화 가상 머신을 제공하는 네트워크 블록 디바이스 및 그 제어 방법
KR20220078244A (ko) 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버
Lee et al. Dtstorage: Dynamic tape-based storage for cost-effective and highly-available streaming service
US10958760B2 (en) Data processing system using pre-emptive downloading
CN116633921A (zh) 基于边缘缓存的cdn-p2p网络及缓存方法、缓存放置方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant