KR101063556B1 - 컴퓨팅 시스템에서 데이터를 업로드하기 위한 방법, 장치 및 컴퓨터 프로그램 제품 - Google Patents

컴퓨팅 시스템에서 데이터를 업로드하기 위한 방법, 장치 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR101063556B1
KR101063556B1 KR1020097012918A KR20097012918A KR101063556B1 KR 101063556 B1 KR101063556 B1 KR 101063556B1 KR 1020097012918 A KR1020097012918 A KR 1020097012918A KR 20097012918 A KR20097012918 A KR 20097012918A KR 101063556 B1 KR101063556 B1 KR 101063556B1
Authority
KR
South Korea
Prior art keywords
file
slot
computer
data
client
Prior art date
Application number
KR1020097012918A
Other languages
English (en)
Other versions
KR20090097165A (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 KR20090097165A publication Critical patent/KR20090097165A/ko
Application granted granted Critical
Publication of KR101063556B1 publication Critical patent/KR101063556B1/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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

데이터 무결성을 확보하면서 하나 이상의 서버로 파일을 동시 멀티채널 업로드하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품이다. 검증 방식은 데이터 파일의 세그먼트가 개별적으로 유효로 될 수 있게 하기 위해 해시를 채용한다. 따라서, 업로드 처리가 인터럽트되거나 또는 파손된 경우, 정확하게 전송된 이전에 전송된 데이터의 세그먼트는 유효로 되어, 정확하게 전송된 데이터가 재전송될 필요가 없다. 바람직하게는, 그리드 브로커가 병합되어, 그리드 컴퓨팅 환경에서 데이터의 동시 멀티채널 업로드를 가능하게 할 수 있다.

Description

컴퓨팅 시스템에서 데이터를 업로드하기 위한 방법, 장치 및 컴퓨터 프로그램 제품{METHOD, APPARATUS, AND COMPUTER PROGRAM PRODUCT FOR DATA UPLOAD IN A COMPUTING SYSTEM}
본 발명은 컴퓨터 데이터 처리에 관한 것이다. 특히 다수 채널을 통해 데이터를 동시에 업로딩하는 방법, 시스템, 컴퓨터 프로그램 제품에 관한 것이다.
전통적으로, 하나의 클라이언트로부터 하나의 원격 수신처 컴퓨터로 파일 업로드가 이루어지며, 그들을 접속하는 네트워크의 성능에 따라 제약을 받는다. 예를 들어, TCP(Transmission Control Protocol)를 하부 전송 프로토콜로서 이용하는 처리량은 조절이 어려운 창 크기와 높은 대기 시간에 의해 제한될 수 있다.
그리드 컴퓨팅(Grid computing)은 사용자 및 애플리케이션이 거대한 IT 능력을 끊김없이 이용할 수 있게, 처리 능력, 네트워크, 대역폭 및 저장 용량 등의 분산된 컴퓨팅 자원을 가상화하는 것이다. 그리드 컴퓨팅에 대한 보다 상세한 정보원은, 월드 와이드 웹 "www.globus.org/research/papers/ogsa.pdf"에 공개된 포스터(Foster), 케젤만(Kesselman), 닉(Nick) 및 터케(Tuecke)에 의한 "The Physiology of the Grid-an open grid services architecture for distributed systems integration"에서 찾을 수 있다.
레비스트(Llevist) 및 벵손(Bengsson)에 의한" Grid Computing Distribution Using Network Processors"라는 제목의 논문에서 그리드 컴퓨팅에 관한 더욱 많은 정보를 얻을 수 있다. 그 논문에는 네트워크의 노드(그리드)로 코드와 데이터를 둘다 배포하는 새로운 컴퓨팅 모델에 대한 개념이 개시되며, 여기에서 네트워크의 라우터가 어느 노드가 라우터에 의해 수집된 정보에 근거한 코드를 실행하도록 선택되는지를 판정한다.
다수의 업로드 채널을 이용하여 데이터를 업로드 하는 것은 종래 기술에서 알려져 있다. 예를 들어, FTP(Transfer Protocol) 및 SFTP(Secure File Transfer Protocol)는 각기, 일부가 동시에 업로드될 수 있는 파일의 일부를 클라이언트가 업로드 할 수 있게 한다. 그러나, 동시 업로드에는 동시 파일 갱신을 위해 하위 파일 시스템에서의 확고한 지원이 요구된다. 클라이언트는 다중 업로드의 조정을 담당하며, 업로드된 파일의 정확성을 보증한다. 예를 들어, 클라이언트는, 파일의 고유 부분이 각 채널에 의해 업로드되는 것과, 필요에 따라서, 업로드의 검증이 전체 파일을 다운로딩하고 그것을 소스 파일과 비교하는 것에 의해서만 달성될 수 있다는 것을 보증할 필요가 있다. 결국, 멀티 사이트 파일 업로드는 멀티 사이트가 동일한 파일 저장소로 접속될 때에만 가능할 것이다.
효율적이고 신뢰성 있게 다수의 채널을 통해 데이터를 동시 업로딩할 수 있게 하면서 재개(re-start) 기능도 제공하는 방법, 시스템 및 컴퓨터 프로그램 제품 이 바람직할 것이다.
발명의 개시
제 1 형태에 있어서, 본 발명은 컴퓨팅 시스템에서 다수의 채널을 통해 클라이언트 컴퓨터로부터 적어도 하나의 원격 수신처 컴퓨터로 데이터 파일을 업로드하는 컴퓨터 구현 방법이다. 그 방법은 클라이언트 컴퓨터에 업로드 요청을 통신하는 단계를 포함한다. 데이터 파일은 복수의 파일 슬롯과 복수의 파일 컴포넌트로 분할된다. 복수의 파일 슬롯은 동시에 전송되고, 클라이언트 컴퓨터로부터 적어도 하나의 수신처 컴퓨터로 데이터 파일을 업로드하도록, 각 파일 슬롯은 각기 다수의 채널 중 하나를 통해 전송된다. 데이터 파일이 수신처 컴퓨터로 전송될 때, 각 파일 슬롯 내의 데이터에 근거해서 수신측(destination-side) 파일 슬롯 해시가 산출된다. 수신측 파일 컴포넌트 해시는 각 파일 컴포넌트 내의 데이터에 근거하여 산출된다. 전송된 데이터 파일에 근거한 수신측 누적 해시도 산출된다. 클라이언트측 누적 해시는 클라이언트 컴퓨터 상에 존재하는 데이터 파일에 근거하여 산출된다. 전송된 파일의 무결성을 검증하기 위해, 수신측 누적 해시와 클라이언트측 누적 해시가 비교된다. 전송에서의 에러를 나타내는, 클라이언트측 누적 해시와 수신측 누적 해시의 매칭이 실패한 경우, 어느 파일 슬롯 및 어느 파일 컴포넌트에서 에러가 발생했는지 판정함으로써, 에러가 포함되는 파일 슬롯 및 파일 컴포넌트로부터 데이터 파일의 업로드의 재개를 시작할 수 있다.
제 2 형태에 있어서, 본 발명은 다수의 채널을 통해 클라이언트 컴퓨터로부터 적어도 하나의 원격 수신처 컴퓨터로 데이터 파일을 업로딩하는 컴퓨팅 시스템이다. 그 컴퓨팅 시스템은 적어도 하나의 원격 수신처 컴퓨터와 유효하게 통신하는 클라이언트 컴퓨터를 포함한다. 클라이언트 컴퓨터와 적어도 하나의 수신처 컴퓨터 사이의 통신을 제어하기 위해 데이터 업로드 코디네이터 제품이 동작하고 있다. 데이터 업로드 코디네이터 제품은 데이터 파일을 복수의 파일 슬롯과 복수의 파일 컴포넌트로 분할하는 수단을 포함한다. 또한, 클라이언트 컴퓨터로부터 적어도 하나의 수신처 컴퓨터로 데이터 파일을 업로드하도록, 다수의 파일 슬롯의 동시 전송을 제어하는 수단이 제공되며, 각 파일 슬롯은 다수의 채널 중 하나를 통해 전송된다. 데이터 업로드 통신 제품은 데이터 파일이 수신처 컴퓨터로 전송될 때, 각 파일 슬롯 내의 데이터에 근거한 수신측 파일 슬롯 해시, 각 파일 컴포넌트 내의 데이터에 근거한 수신측 파일 컴포넌트 해시 및 전송된 데이터 파일에 근거한 수신측 누적 해시를 산출하는 수단을 더 포함한다. 그 수단은 클라이언트 컴퓨터 상에 존재하는 데이터 파일에 근거하여 클라이언트측 누적 해시를 더 산출한다. 전송된 파일의 무결성을 검증하도록, 수신측 누적 해시와 클라이언트측 누적 해시를 비교하는 수단이 제공된다. 또한, 클라이언트측 누적 해시와 수신측 누적 해시가 매칭에 실패한 경우, 어느 파일 슬롯 및 어느 파일 컴포넌트에서 에러가 발생했는지 판정하는 수단을 제공함으로써, 에러가 포함되는 파일 슬롯 및 파일 컴포넌트로부터 데이터 파일의 업로드의 재개가 시작될 수 있다.
제 3 형태에 있어서, 본 발명은 다수의 채널을 통해 클라이언트 컴퓨터로부터 적어도 하나의 원격 수신처 컴퓨터로 데이터 파일을 업로드하는 컴퓨터 판독 가능 프로그램 코드를 포함하는 컴퓨터 이용 가능 매체를 구비하는 컴퓨터 프로그램 제품이다. 그 컴퓨터 프로그램 제품은 데이터 파일을 복수의 파일 슬롯과 복수의 파일 컴포넌트로 분할하는 제 1 컴퓨터 프로그램 코드 수단을 포함한다. 제 2 컴퓨터 프로그램 코드 수단은, 클라이언트 컴퓨터로부터 적어도 하나의 수신처 컴퓨터로 데이터 파일을 업로드하도록, 각기 다수의 채널 중 하나를 통해 전송되는 다수의 파일 슬롯의 전송을 제어한다. 제 3 컴퓨터 프로그램 코드 수단은, 클라이언트 컴퓨터로부터 수신처 컴퓨터로 데이터 파일이 전송될 때, 각 파일 슬롯 내의 데이터에 근거한 수신측 파일 슬롯 해시, 각 파일 컴포넌트 내의 데이터에 근거한 수신측 파일 컴포넌트 해시 및 수신측 누적 해시를 산출한다. 제 4 컴퓨터 프로그램 코드 수단은 클라이언트 컴퓨터 상에 존재하는 데이터 파일에 근거하여 클라이언트측 누적 해시를 산출한다. 제 5 컴퓨터 프로그램 코드 수단은, 전송된 파일의 무결성을 검증하도록, 수신측 누적 해시와 클라이언트측 누적 해시를 비교한다. 제 6 컴퓨터 프로그램 코드 수단은, 클라이언트측 누적 해시와 수신측 누적 해시가 매칭에 실패한 경우, 어느 파일 슬롯 및 어느 파일 컴포넌트에서 에러가 발생했는지 판정함으로써, 에러가 포함되는 파일 슬롯 및 파일 컴포넌트로부터 데이터 파일의 업로드의 재개를 시작할 수 있다.
이하의 본 발명의 바람직한 실시예의 상세한 설명은 첨부된 도면과 연계하여 읽으면 보다 잘 이해될 것이다. 본 발명을 설명하기 위하여, 현재 바람직한 실시예가 도면에 도시되어 있다. 그러나, 본 발명은 도시된 배열 및 수단으로 엄격하게 제한되는 것은 아니라는 점을 알아야 한다.
도 1은 종래 기술에서 알려진 통상의 컴퓨터 시스템을 나타내는 개략도,
도 2는 종래 기술에서 알려진 클라이언트/서버 네트워크를 나타내는 개략도,
도 3은 종래 기술에서 알려진 그리드 컴퓨팅 네트워크(grid computing network)를 나타내는 개략도,
도 4는 본 발명에 따른 업로드 그리드의 하이레벨 아키텍처를 나타내는 개략도,
도 5는 본 발명에 따라 업로드될 파일이 파일 컴포넌트 및 파일 슬롯으로 분할된 것을 나타내는 개략도,
도 6은 본 발명에 따라 클라이언트에 의해 파일을 업로딩하는 방법을 나타내는 흐름도,
도 6a는, 도 6의 방법 내에 포함되는 것으로서, 업로드 에이전트에 의한 데이터 전송을 관리하기 위한 처리를 나타내는 흐름도,
도 7은, 도 6의 방법 내에 포함되는 것으로서, 파일 슬롯을 할당하기 위한 처리를 나타내는 흐름도,
도 8은, 도 6의 방법 내에 포함되는 것으로서, 파일 슬롯을 발췌하기 위한 처리를 나타내는 흐름도,
도 9는, 도 6의 방법 내에 포함되는 것으로서, 업로드 서버에 의해 슬롯 데 이터를 수신하기 위한 처리를 나타내는 흐름도이다.
본 발명은 데이터 무결성을 보증하면서 하나 이상의 서버로 파일을 동시에 멀티 채널 업로드하는 방법, 시스템, 컴퓨터 프로그램 제품에 관한 것이다. 검증 방안은 데이터 파일의 세그먼트가 개별적으로 유효로 될 수 있게 하기 위해 해시를 채용한다. 따라서, 업로드 처리가 인터럽트되거나 또는 파손된 경우, 이전에 정확하게 전송된 데이터의 세그먼트가 유효로 될 수 있어, 정확하게 전송된 데이터를 재전송할 필요가 없게 한다. 본 발명은 단일 업로드 사이트에 대한 동시 채널 업로드를 지원하는 데 이용되거나, 그리드 브로커가 병합과 함께 그리드 컴퓨터 환경 내의 다수의 업로드 사이트에 대한 동시 채널 업로드를 지원하는 데 이용될 수 있다.
본 발명은, 전통적인/클라이언트 컴퓨터 또는 피어 투 피어 모델을 이용하는 것이 아니라, 서비스 제공자, 소비자 및 브로커의 모델을 이용한다. 브로커는 서비스의 로드맵을 제공하고, 애플리케이션을 안전하게 하고, 기록을 유지하는 신뢰성을 갖는다. 브로커로부터 필수 인증 및 자격을 획득한 후에만, 서비스 공급자와 접촉하여 그들로부터 서비스를 받을 수 있다. 또한, 브로커는 소비자가 다수의 서비스 공급자로부터 동시에 서비스를 받도록 지시할 수 있다. 업로드 그리드의 문맥(context)에서, 브로커는 관리 서비스로서 구현되고, 서비스 생산자는 업로드 서버로서 구현되며, 소비자는 클라이언트 에이전트로서 구현된다. 에이전트는 최종 사용자를 대신해서 파일 업로드를 개시하여 처리한다. 이 모델은 다양한 그리드 애플리케이션에 적용될 수 있다.
그리드 컴퓨팅 환경에서 이용되는 경우, 업로드 그리드는 확장성, 신뢰성, 보안성, 적응성 및 효율성을 가져야 한다. 특히, 다음과 같다.
확장성 : 본 발명은 그리드에 속하는 모든 자원의 세트를 이용할 것이다. 업로드 그리드는 동적인 업로드 서버의 세트를 이용한다. 따라서, 본 발명은 확장성이 있다.
신뢰성 : 단일 서버에 의존하지 않고, 업로드 그리드는 많은 서버를 구비한다. 개별 서버의 실패로 인해 업로드 서비스를 못하지 않을 것이다. 따라서, 본 발명은 신뢰성이 있다.
보안성 : 본 발명은 클라이언트 인증을 위해 표준 LDAP(Lightweight Dirctory Access Protocol)를 이용하고, 운반 보안뿐만 아니라 서버 검증 모두를 위해 SSL/TLS(Secure Socket Layer/Transport Layer Security)를 이용한다. 따라서, 본 발명은 보안성이 있다.
적응성 : 업로드 그리드는 다수의 클라이언트 에이전트로부터 그리드의 다수의 서버로 동시에 업로드될 파일의 일부를 동적으로 할당할 수 있다. 개개의 서버의 인지 능력에 근거하여 할당이 이루어지므로, 본 발명은 적응성이 있다.
효율성 : 관리 서비스는 특정 업로드를 위해 자원의 어떤 서브세트가 이용될 수 있는지 제어한다. 네트워크 자원의 전체 이용량(대역폭 이용량)을 조절하면서 최대 업로드 처리 능력을 위해 이 선택을 수행한다. 따라서 본 발명은 효율적이 다.
도 1은 본 발명이 행해질 수 있는 종래의 대표적인 워크스테이션 또는 서버 하드웨어 시스템(100)을 나타낸다. 도 1의 시스템(100)은 선택적 주변 장치를 포함하는 개인용 컴퓨터, 워크스테이션 또는 서버 등의 대표적인 컴퓨터(101)를 포함한다. 주지된 기술에 따라, 컴퓨터(101)는 하나 이상의 프로세서(106)와, 프로세서(106)와 시스템(100)의 다른 컴포넌트 사이를 접속하여 통신할 수 있게 채용된 버스를 포함한다. 버스는, 예를 들어 하드 드라이브, 디스켓 드라이브 또는 테이프 드라이브를 포함할 수 있는 메모리(105) 및 장기 저장 매체(107)로 프로세서(106)를 접속한다. 또한, 컴퓨터(101)는 버스를 통해 마이크로프로세서(106)를 하나 이상의 인터페이스 장치 및/또는 다른 인터페이스 장치로 접속하는 사용자 인터페이스 어댑터도 포함할 수 있으며, 하나 이상의 인터페이스 장치로는 키보드(104), 마우스(103), 프린터/스캐너(110) 등을 들 수 있고, 다른 인터페이스 장치는 터치 스크린, 디지털 입력 패드 등의 임의의 사용자 인터페이스일 수 있다. 또한, 버스는 LCD 스크린 또는 모니터와 같은 표시 장치(102)를 표시 어댑터를 통해 마이크로프로세서(106)로 접속한다.
컴퓨터(101)는 네트워크(109)와 통신할 수 있는 네트워크 어댑터에 의해 다른 컴퓨터 또는 컴퓨터의 네트워크와 통신할 수 있다. 네트워크 어댑터의 예로는 통신 채널, 토큰 링, 이더넷 또는 모뎀을 들 수 있다. 그 대신에, 컴퓨터(101)는 CDPD(cellular digital packet data) 카드 등의 무선 인터페이스를 이용하여 통신할 수 있다. 컴퓨터(101)는 LAN(Local Area Network) 또는 WAN(Wide Area Network)으로 다른 컴퓨터와 연관되거나, 또는 다른 컴퓨터 등과의 클라이언트/서버 배치에서 클라이언트로 될 수 있다. 적절한 통신 하드웨어 및 소프트웨어뿐만 아니라 이들 모든 구성은 본 기술 분야에서 알려져 있다.
도 2는 본 발명이 행해질 수 있는 종래의 데이터 처리 네트워크(200)를 나타낸다. 데이터 처리 네트워크(200)는 각기 복수의 개별 워크스테이션(101)을 포함할 수 있는 무선 네트워크 및 유선 네트워크 등의 복수의 개별 네트워크를 포함할 수 있다. 네트워크(200)는 복수의 개별 클라이언트 컴퓨터(201-205)를 더 포함하여, 사용자(210, 211)로 액세스할 수 있다. 또한, 당업자가 충분히 이해할 수 있는 바와 같이, LAN이 호스트 프로세서에 연결된 복수의 지능형 워크스테이션을 포함할 수 있는 경우, 하나 이상의 LAN이 포함될 수 있다.
계속 도 2를 참조하면, 네트워크는 게이트웨이 컴퓨터(클라이언트 컴퓨터(206)) 또는 애플리케이션 서버(데이터 저장소에 액세스할 수 있는 원격 서버(208)) 등의 메인프레임 컴퓨터 또는 서버도 포함할 수 있다. 게이트웨이 컴퓨터(206)는 각 네트워크(207)로의 진입 지점으로서 작용한다. 게이트웨이는 하나의 네트워킹 프로토콜을 다른 네트워킹 프로토콜에 접속할 때 필요하다. 게이트웨이(206)는 통신 링크에 의해 다른 네트워크(예를 들어 인터넷(207))로 연결되는 것이 바람직할 수 있다. 또한, 게이트웨이 컴퓨터(206)는 통신 링크를 이용하여 하나 이상의 워크스테이션(101)에 직접 연결될 수 있다. 게이트웨이 컴퓨터는 뉴욕주 암몽크에 위치한 IBM사로부터 이용할 수 있는 이서버(eServer : 상표) z900 서버를 이용하여 구현할 수 있다.
본 발명을 구현하는 소프트웨어 프로그래밍 코드는 일반적으로 시스템(101)의 프로세서(106)에 의해 디스켓, 하드 드라이브, 또는 CD-ROM과 같은 장기 저장 매체(107)로부터 액세스될 수 있다. 소프트웨어 프로그래밍 코드는, 디스켓, 하드 드라이브, 또는 CD-ROM 등의, 데이터 처리 시스템에서 이용하기 위한 다양한 주지의 매체 중 어느 하나의 매체 상에서 구현할 수 있다. 코드는, 그러한 미디어 상에 배포되거나, 또는 하나의 컴퓨터 시스템의 메모리 또는 저장 매체로부터 네트워크를 거쳐서 다른 시스템의 이용자에 의해 이용되는 다른 컴퓨터 시스템으로, 사용자에게 배포될 수 있다.
그 대신에, 프로그래밍 코드는 메모리(105)에서 구현되어, 프로세서 버스를 이용하는 프로세서(106)에 의해 액세스될 수 있다. 그러한 프로그래밍 코드는 다양한 컴퓨터 컴포넌트의 기능 및 상호 작용을 제어하는 운영 시스템 및 하나 이상의 애플리케이션 프로그램을 포함한다. 프로그램 코드는 고밀도 미디어(107)로부터 프로세서(106)에 의해 처리될 수 있는 고속 메모리(105)로 호출되는 것이 일반적이다. 메모리에서, 물리적 매체 상에, 및/또는 네트워크를 통해 소프트웨어 코드를 배포하는 기술 및 방법은 주지되어 있으며, 본 명세서에서는 더 이상 논의하지 않는다.
바람직한 실시예에 있어서, 본 발명은 하나 이상의 컴퓨터 프로그램 제품으로서 구현된다. 본 발명의 소프트웨어는 요청에 따라 호출되는 하나 이상의 모듈 또는 애플리케이션(서브루틴 또는 객체 지향 프로그래밍에서 객체라고도 함)으로서 구현되어 사용자의 워크스테이션 상에서 동작할 수 있다. 그 대신에, 소프트웨어 는, 네트워크 내의 서버 상에서 동작하거나, 본 발명을 구현하는 프로그램 코드를 실행할 수 있는 소정의 장치에서 동작할 수 있다. 본 발명을 구현하는 로직은, 본 명세서에 개시된 발명의 착상으로부터 벗어나지 않는다면, 애플리케이션 프로그램의 코드 내에 통합되거나, 또는 그 애플리케이션에 의해 호출되는 하나 이상의 분리된 유틸리티 모듈로서 구현될 수 있다. 웹 서버가 인터넷을 거쳐 접속된 클라이언트로부터의 요청에 응답하여 서비스를 제공하는 경우, 웹 환경에서 애플리케이션이 실행될 수 있다. 다른 실시예에 있어서, 기업 인트라넷 또는 엑스트라넷, 또는 소정의 다른 네트워크 환경에서 애플리케이션이 실행될 수 있다. 환경에 관한 구성에는 클라이언트/서버 네트워크, 피어 투 피어(Peer-to-Peer) 네트워크(여기서, 클라이언트는 클라이언트 및 서버 양측의 기능을 수행함으로써 직접 상호작용함)뿐만 아니라 다층 환경이 포함된다. 이들 환경 및 구성은 본 기술 분야에 잘 알려져 있다.
도 3은 네트워크 구조(313)를 통해 통신하는 서버(301-312)의 종래 그리드 구조의 하이레벨 표현을 나타낸다. 서버(309)는 로컬 네트워크에 의해 서버(310) 및 서버(311)와 접속된다. 서버(308)는 그리드 브로커 서비스를 제공한다. 그리드 브로커의 개념은, 2006년 5월 간행된 "Concurrency and Computation(Practice and Experience)"의 베누고팔(Venugopal) 등의 "A Grid Service Broker for Scheduling e-Science Applications on Global Data Grids"에서 논의된다.
도 4는 업로드 그리드 시스템(404)의 하이레벨 아키텍처를 나타낸다. 계층 구조를 이용하면, 업로드 그리드(404)는 하나 이상의 업로드 사이트(409)(각 업로 드 사이트(409)는 하나 이상의 수신처 컴퓨터를 포함함), 메타데이터 데이터베이스(407), 및 바람직하게는 브로커 모듈(410)을 포함한다. 각 업로드 사이트는 코디네이터 모듈(405), 하나 이상의 업로드 서버 모듈(406) 및 파일 저장소(408)를 포함한다. 업로드 서버(406)는 코디네이터(405)에 등록된다. 각 사이트의 코디네이터(405)는 브로커(410)에 등록된다. 브로커(410)는 인증, 파일 선언, 업로드 사이트 구성(choreography) 및 업로드 그리드(404)용 부하 조절과 같은 기본 서비스를 제공한다. 코디네이터(405)는 업로드 사이트(409)에 대한 인증, 파일 선언, 업로드 구성 및 업로드 조절 등의 기본 서비스뿐만 아니라 컴포넌트 관리 및 데이터 해시 관리 등과 같은 각 업로드 사이트에서의 브로커(410)에 대한 중재 서비스를 제공한다. 대표적인 구현에 있어서, 클라이언트(401)는 업로드 그리드(404)로 파일을 업로드하는 것과 동시에 작업하는 복수의 업로드 에이전트(402)를 이용하는 것이 바람직하다. 브로커(410)는 업로드할 파일의 위치뿐만 아니라 이용할 업로드 사이트(409)를 각 업로드 에이전트(402)에 대해 규정한다. 코디네이터(405)는 부하 조절을 위해 업로드 에이전트(402)를 거절할 수 있다. 업로드 에이전트(402)는 하나 이상의 시스템(100)에 걸쳐 배포될 수 있다(도 1). 참조 구현에서, 각 업로드 에이전트(402)는 주어진 클라이언트 시스템(400) 상에서 실행되는 분리된 스레드(thread)로서 규정된다.
운영에 있어서, 클라이언트(401)는 기본 서비스를 위해 브로커(410)와 접촉하여 업로드 서비스를 위한 특정 업로드 사이트(409)로 연결된다. 일단 업로드 사이트(409)에 연결되면, 기본 서비스를 위해 클라이언트(401)가 그 사이트에서 브로 커(405)와 접촉하거나, 그 대신에 브로커(410)가 이용될 수 있다. 코디네이터(405)는 도 4에 도시된 구현에서 기본 서비스에 관해 브로커(410)에게 맡긴다. 대표적인 구현으로, 단일 사이트를 이용하는 것을 선택할 수 있다. 이 경우, 코디네이터(405), 업로드 서버(406), 및 브로커(410)의 기능은 단일 모듈로 결합될 수 있다.
브로커(410)와 코디네이터(405)의 몇몇 서비스는 구현 사양일 수 있다. 바람직한 일 구현에 있어서, 하나의 업로드 사이트(409)가 이용된다. 브로커(410), 코디네이터(405) 및 업로드 서버(402)는 웹 서비스로서 구현된다. 그에 따라, 웹 서버 미들웨어가 인증 및 부하 조절 서비스를 제공한다.
도 5를 참조하면, 업로드 그리드 상의 메타데이터 및 파일 데이터의 구조가 도시되어 있다. 파일 데이터(501)는 물리적으로 파일의 일부를 포함하는 파일 컴포넌트(502)로 분할된다. 컴포넌트(502)는, 예를 들어 업로드 그리드의 구성에 의해 결정되는, 고정된 크기로 설정된다. 파일에 대한 컴포넌트(502)는 순서가 정해진 세트이다. 그들의 고정된 크기 및 순서가 부여되면, 파일의 오프셋에서의 데이터는 특정 컴포넌트(502)에 정확하게 배치된다.
파일의 각 컴포넌트(502)는 그것과 연관된 2개의 재개 가능한 해시 객체(바람직하게는, MD5)를 갖는다. 제 2 재개 가능 해시가 컴포넌트(502) 자신의 컨텐츠에 근거한 MD5 해시인데 반해, 누적 MD5 해시는 컴포넌트 내의 모든 발췌 데이터를 포함하는 전체 파일의 컨텐츠에 근거한다. 본 발명은 MD5 해시의 이용으로 제한되지는 않는다. 모든 종래의 적절한 해시가 이용될 수 있지만, 재개 가능 특성은 성 능을 위해 미리 정해진다.
컴포넌트(502)는 브로커(410)에 의해 파일 슬롯(503)으로 분할된다. 각 파일 슬롯, 또는 슬롯(503)은 초기 오프셋 및 의도된 길이 등에 의해 규정되는 파일의 세그먼트를 참조한다. 컴포넌트(502)와 마찬가지로, 각 개별 슬롯(503)에 대하여, 재개 가능 해시 객체(바람직하게는 MD5 해시)가 그 슬롯(503) 내의 데이터에 근거하여 산출된다.
슬롯(503)은 최저 오프셋으로부터 최고 오프셋까지 순차적으로 채워지고, 업로드되는 데이터의 길이가 슬롯의 의도된 크기와 같아질 때 완료 슬롯(504)이 된다. 파일 오프셋 0에 대한 슬롯은 발췌 슬롯(505)으로 알려져 있다. 발췌 슬롯(505)에 인접하는 완료 슬롯(504)은 발췌 슬롯(505)으로 병합되고, 누적 MD5 해시는 갱신된다. 이 발췌 슬롯(505)은 파일 메타데이터의 일부로서 저장된다. 파일 데이터 전체가 업로드되면, 발췌 슬롯(505)에 해당하는 하나의 완료 슬롯이 될 것이다.
컴포넌트(502)는 업로드 그리드(404)가 임의 크기의 파일을 수용할 수 있게 한다. 컴포넌트(502)는 기초 파일 저장소가 업로드 그리드(404)의 사용자에 대해 제한받는 것을 방지한다.
멀티 채널 업로드는 파일 저장소에 동시 액세스 지원을 요구한다. 동시 액세스가 되지 않는 파일 스토어를 위해, 슬롯(503)과 컴포넌트(502)를 같은 크기로 한다. 각 슬롯(503)이 자신의 파일에 기입되기 때문에, 이 동시 액세스 요구가 극복된다.
도 6을 참조하면, 다수의 채널을 통해 클라이언트 컴퓨터(400)로부터 적어도 하나의 수신처 컴퓨터로 데이터 파일을 업로딩하는 바람직한 방법이 도시되어 있다. 클라이언트(401)는 먼저 단계 600에서 브로커(410)와의 세션을 개시한다. 단계 601에서, 업로드될 파일이 이미 존재하는지를 판정한다. 이 판정은, 브로커(410)를 접촉하여, 업로드될 파일과 연관된 메타데이터가 메타데이터 데이터베이스(407) 상에 존재하는지 여부를 체크하는 것에 의해 이루어진다.
파일이 존재하지 않으면, 단계 602에서, 클라이언트(401)는 브로커(410)가 메타데이터 데이터베이스(407) 상에 파일 메타데이터를 생성할 것을 요청한다. 브로커(410)는 파일에 대한 메타데이터 엔트리를 생성한다. 메타데이터에는 파일명, 의도된 크기, 타임스탬프 및 빈 MD5 해시가 포함된다. 처리중 이 지점에서 0으로 규정된 슬롯이 존재한다.
이어서 단계 603에서, 클라이언트(401)는 브로커(410)에게 업로드 예약, 또는 슬롯을 요청한다. 슬롯(503)은 개시 오프셋과 길이뿐만 아니라 세크먼트가 저장될 사이트 등의 파일의 세그먼트를 규정한다. 단계 603에는 본 명세서에서 후술하는 단계 700-711(도 7 참조)이 포함된다.
단계 604에서, 브로커(410)가 슬롯(503)을 제공했는지 여부가 판정된다. 브로커(410)가 슬롯(503)을 제공했으면, 단계 605에서, 클라이언트(401)는 분리된 채널과 마찬가지로 슬롯(503)에 대한 데이터 운반을 취급하도록 업로드 에이전트를 생성한다. 업로드 에이전트(402)는 클라이언트(401)와 병행하여 작동되는 실행(execution)의 분리된 스레드이다. 일단 업로드 에이전트(402)가 생성되면, 클 라이언트(401)는 단계 603에 이어서 추가 채널을 생성하려고 시도한다. 업로드 에이전트는 단계 650(도 6a 참조)에서 개시되고, (단계 651을 통해) 단계 900-904(도 9 참조)와, (단계 652를 통해) 단계 700-711(도 7 참조)을 포함한다.
브로커(410)가 업로드 예약 요청에 응답하여 슬롯을 제공하지 않는 경우, 단계 610에서, 클라이언트(401)는 가능한 추가 채널이 없다고 결론을 내린다. 클라이언트(401)는 존재하는 모든 채널이 완료되길 기다린다.
단계 611에서, 전체 파일이 완전히 업로드되는지 여부를 판정한다. 파일이 완전히 업로드되지 않았으면, 단계 614에서, 클라이언트(401)는 사용자에게 피드백을 제공하여 최종 전송 상태를 알려준다. 요구되는 추가 작업이 없으며, 처리는 단계 615에서 종료된다.
단계 611에서, 전체 파일이 완전히 업로드되었다고 판정되면, 단계 612에서, 클라이언트(401)는 클라이언트(401)에 국부적으로 저장된 파일에 근거하여 산출된 누적 MD5를, 전송된 데이터에 근거해서 수신처 컴퓨터에 의해 산출되어 브로커(410)에 의해 클라이언트(401)로 제공되는 누적 MD5 해시를 비교한다.
단계 613에서, 국부 누적 MD5 해시가 전송된 데이터에 근거해서 산출된 누적 MD5 해시와 매칭되는지 여부를 판정한다. 두 MD5 해시가 매칭되는 경우, 클라이언트는 사용자에게 피드백을 제공하여, 최종 전송 상태(단계 614)와 요구되는 추가 작업이 없다는 점을 알려준다(단계 615).
로컬 MD5 해시와 서버 MD5 해시가 매칭되지 않는 경우, 단계 609에서, 클라이언트(401)는, 클라이언트(401)에 국부적으로 저장된 파일에 근거하여 산출된 컴 포넌트 고유의 해시를 업로드 사이트(409)로 전송되는 파일 컴포넌트 데이터에 근거하여 산출되어 브로커(410)에 의해 클라이언트(401)로 제공되는 컴포넌트 고유의 MD5 해시와 비교하는, 각 컴포넌트에 대한 데이터를 유효로 한다. 2개의 컴포넌트 고유의 MD5값이 같은 경우, 전송 컴포넌트(502)에 포함되는 데이터는 로컬 파일로부터의 데이터이고, 전송된 컴포넌트(502)는 유효이다. MD5 값이 같지 않은 경우, 전송된 컴포넌트(502)는 유효가 아니고, 브로커(410)는 컴포넌트(502)를 삭제하도록 요청한다. 모든 컴포넌트(502)가 유효로 된 후, 클라이언트(401)는 단계 603으로 진행하여, 업로드 예약 처리를 재개한다.
단계 601로 돌아가면, 파일이 이미 존재하는 경우, 단계 606에서, 클라이언트(401)는 브로커(410)에게 파일에 대해 모든 슬롯(503)을 요청한다. 각 슬롯(503)은 초기 오프셋 및 길이와, 슬롯(503)에 포함된느 데이터에 대한 슬롯 고유의 MD5 해시를 포함한다.
단계 607에서, 클라이언트(401)는 각 슬롯(503)에 대한 데이터를 유효로 한다. 즉, 로컬 파일(클라이언트(401)에 존재함)은 각 슬롯에 대한 MD5 해시를 생성하는데 이용되고, 각 슬롯 고유의 MD5 해시는, 전송된 슬롯(503)에 포함되는 데이터에 근거하여 산출되며, 브로커(410)에 의해 제공되는 해당 MD5 해시와 비교된다. 주어진 MD5값의 세트가 같은 경우, 해당 슬롯(503)에 포함되는 데이터는 로컬 파일로부터의 데이터이고, 슬롯(503)은 유효이다. 주어진 MD5값의 세트가 같지 않은 경우, 슬롯(503)은 유효가 아니고 브로커(410)는 관련 슬롯(503)에 대한 데이터를 삭제할 것을 요청한다.
단계 608에서, 발췌 슬롯(505)의 값이 결정된다. 발췌 슬롯이 유효라고 판정된 경우(전송되어 발췌 데이터에 해당하는 데이터에 근거하여 산출된 누적 해시를 이용하는, 상술한 동일 MD5 해시 비교를 이용함), 클라이언트(401)는 단계 603으로 진행하여, 업로드 예약 처리를 시작한다.
발췌 슬롯이 유효가 아닌 경우, 클라이언트는 단계 609에서 각 컴포넌트(502)에 대한 데이터를 유효값으로 한다. 상술한 바와 같이, 단계 609에서, 클라이언트(401)는 로컬 파일을 이용하여 각 컴포넌트(502)에 대한 MD 해시를 생성해서, 브로커(410)에 의해서 제공되는 해당 MD5 해시와 비교한다. MD5 값들이 같은 경우, 컴포넌트(502)에 포함되는 데이터는 로컬 파일로부터의 데이터이고, 전송된 컴포넌트(502)는 유효이다. MD5 값들이 다른 경우, 컴포넌트(502)는 무효이고 브로커(410)는 컴포넌트(502)를 삭제할 것을 요청한다. 클라이언트(401)는 단계 603으로 직행하여, 업로드 예약 처리를 시작한다.
발췌 슬롯(505)은, 파일의 완료된 전반부로서, 하나의 MD5 해시에 의해 표현된다. 발췌 슬롯(505)이 무효인 경우, 그것은 삭제될 수 있지만, 그에 따라 대량의 데이터가 폐기될 수 있다. 발췌 슬롯(505)을 포함하는 컴포넌트(502)에 대한 MD5 해시를 유지함으로써, 클라이언트(401)는 완료된 파일의 일부를 살려낼 수 있다. 컴포넌트(502)가 발췌 슬롯(505)으로부터 삭제되는 경우, 삭제된 컴포넌트에 후속하는 모든 컴포넌트(502)는 그들의 누적 MD5 해시가 무효로 되어야 한다. "적절히 크기가 조절된" 컴포넌트를 선택함으로써, 최소 서버 자원을 요구하는 다수의 무결점 체크포인트가 클라이언트(401)에 이용할 수 있게 된다.
위에서 논의되고 상술한 도 6에 도시된 본 바람직한 처리예의 방법은 클라이언트와 업로드 그리드(404)의 관계를 나타낸다. 다수의 업로드 채널을 달성하는 데는 다양한 변형이 있다. 참조적인 구현에서는, 슬롯이 제공되고(단계 604에서 판정되는 바와 같이), 단계 603에서 업로드 예약을 위한 요청이 곧바로 반복되는 경우, 시스템(400) 상의 분리된 실행 스레드를 생성한다. 브로커(410)가 업로드 예약의 제공을 거절할 때까지 분리된 실행 스레드의 생성이 계속된다. 개별 실행 스레드는 슬롯 데이터를 업로드하고나서(단계 605), 신규 예약을 요청한다(단계 603). 다른 방안으로서는, 상기 클라이언트(401)의 여러 인스턴스가 동일 시스템 또는 다른 시스템 상에서 동일 파일에 대해 실행될 수 있다.
일 인스턴스는 시스템 상에 파일을 연속적으로 생성할 수 있다. 다른 인스턴스는, 예컨대 이미 존재하는, 파일을 나타낼 것이다. 모든 인스턴스 파일의 일부분을 업로드할 것이다. 브로커(410)는 앞으로의 업로드 예약을 최종적으로 거절함으로써 얼마나 많은 인스턴스를 허용할지 제어할 것이다.
도 6a를 참조하면, 업로드 에이전트를 이용하여 업로드 채널을 관리하는 바람직한 처리가 도시되어 있다.
단계 651에서, 업로드 에이전트(402)는 슬롯(503)에 의해 규정되는 파일의 일부를 업로드한다. 단계 651은 본 명세서에서 후술하는 단계 900-904를 포함한다.
단계 652에서, 단계 651이 종료되면, 업로드 에이전트(402)는 브로커(410)에게 다른 업로드 예약 또는 슬롯(503)을 요청한다.
단계 653에서, 브로커(410)가 슬롯(503)을 제공했는지 여부가 판정된다. 슬롯(503)이 제공되지 않았으면, 업로드 에이전트(402)는 단계 651을 반복하여, 데이터의 새로운 부분을 업로드한다.
브로커(410)가 슬롯(503)을 제공하지 않은 경우, 업로드 에이전트(402)는 요구되는 추가 작업이 없다고 판정하여, 실행 스레드(650-653)를 종료한다. 단계 610에서, 클라이언트(401)는 미리 생성된 업로드 에이전트(402)가 모두 종료되기를 기다릴 수 있다.
도 7을 참조하면, 클라이언트(401) 또는 업로드 에이전트(402)가 업로드 예약을 요청하는 단계 700으로부터 시작하는 경우, 브로커(410)에 의해 슬롯 관리가 제공된다.
단계 701에서, 브로커(410)는 허용된 최대수의 액티브 슬롯이 배치되었는지 여부를 판정한다. 파일에 대한 액티브 슬롯의 최대수에 도달하면, 반환될 슬롯이 없어, 브로커(410)는 하위 처리를 종료하는 단계 711로 진행하여 단계 603 또는 단계 652로 운영을 복귀한다(두 단계 모두 단계 700에서 요청의 기점임). 액티브 슬롯의 최대수는 동시 업로드 채널의 수를 제한한다. 최고 한도는 동적이며, 클라이언트가 부정 사용하는 것을 방지하면서 네트워크 자원 및 계산 자원을 둘 다 조절하는 데 도움이 된다.
파일에 대한 액티브 슬롯의 최대수에 도달하지 않은 경우, 단계 702에서 브로커(410)는 완료된 슬롯(503)을 발췌한다. 단계 702는 단계 800-803을 포함한다. 발췌 처리는 후술한다.
단계 703에서, 업로드 처리가 완료되었는지 여부를 판정한다. 완료된 슬롯을 발췌한 후, 파일이 완료된 것으로 판정되면, 반환될 슬롯이 없어, 처리는 종료 단계 711로 진행한다.
파일이 완료되지 않은 경우, 단계 704에서, 브로커(410)는 새로운 슬롯을 포함하기 적절한 사이트를 판정한다. 브로커(410)는 최적 조절 성능과 가용 자원에 대해 메타데이터에게 자문하여 슬롯(503)에 대한 최적 사이트(409)를 판정한다.
단계 705에서, 브로커(410)는 미리 규정되지만 선택된 사이트(409)에서 미사용 슬롯(503)을 체크한다. 임대가 실효된 슬롯(503)은 미사용으로 간주한다. 클라이언트(401)는 슬롯을 명백하게 공개할 수도 있다. 클라이언트(401)가 포기한 경우, 임대에 의해 서버가 할당 슬롯을 재생할 수 있게 한다. 예를 들어, 클라이언트(401)가 이례적으로 종료되었거나 또는 네트워크 실패가 발생된다.
미사용 슬롯이 존재하는 경우, 단계 706에서, 브로커(410)는 그것을 클라이언트(401)에 할당하고, 그 임대 기간을 설정하며, 슬롯을 반환한다. 운영 처리는 종료 단계 711로 진행한다.
단계 705의 질의에 근거하여 이용 가능한 슬롯(503)이 없는 경우, 단계 707에서, 파일에 대한 컴포넌트(502)가 할당된 적이 없는 적어도 하나의 영역을 갖는지의 여부에 관한 질문이 이루어진다. 그런 경우, 단계708에서 새로운 슬롯(503)을 생성하고, 반환하며, 처리는 종료 단계 711로 진행한다. 참조예는 아직 발췌 슬롯 또는 임의의 기존 슬롯에 의해 표현되지 않은 최소 파일 오프셋을 선택함으로써 신규 슬롯을 규정한다. 이 기술은 다른 슬롯 할당 방안이 이용될 수 있더라도, 메타 데이터에 의해 보유될 필요가 있는 슬롯의 수를 제한한다.
파일에 대한 콤포넌트(502)가 미사용 영역을 갖지 않는 경우, 단계 709에서, 신규 컴포넌트(502)가 생성되고, 단계 710에서 신규 슬롯(503)도 생성되고, 반환 되며, 처리는 종료 단계 711로 진행한다.
도 8을 참조하면, 슬롯 발췌 처리는 개시 단계 800으로부터 시작하고, 운영은 단계 702(상술함)와 단계 903(후술함) 중 어느 하나로부터 유도된다.
단계 801에서, 발췌 슬롯(505)에 인접하는 슬롯(503)이 완료되었는지 여부에 관해서 판정된다. 그런 경우, 단계 802에서, 브로커(410)는 인접 슬롯을 발췌 슬롯(505)으로 병합되도록 코디네이터(405)에게 지시한다. 코디네이터(405)는 사이트에서 완료된 모든 잔여 인접 슬롯을 발췌할 수 있다. 예컨대 각 슬롯(503)에 부가되어 있는, 발췌 슬롯(505)의 MD5 해시 상태는 메타데이터로서 저장된다. 따라서, 각 추가 슬롯(503)이 발췌 슬롯(505)에 부가되기 때문에, 전체 발췌 슬롯(505)에 대해 신규 MD5 해시 상태를 반복적으로 산출하기보다는, MD5 해시 상태를 이전 발췌 슬롯 종점에서만 갱신하여, 새롭게 부가되는 슬롯(503)과 연관된 정보를 통합한다. 코디네이터(405)가 완료된 슬롯의 발췌를 종료하면, 브로커(410)는 단계 800으로 진행한다.
발췌 슬롯(505)에 인접하는 슬롯이 완료되지 않은 경우, 발췌가 완료되고, 종료 단계 803에서, 필요에 따라 운영이 단계 702 또는 단계 903으로 복귀된다.
도 9를 참조하면, 단계 651은 단계 900-904를 포함하고, 단계 900에서 개시된다. 단계 901에서, 업로드 서버(406)는 슬롯 정보 및 슬롯(503)에 대한 데이터 를 수신한다. 데이터는 적절한 컴포넌트(502)에 저장된다. 데이터가 저장될 때, 슬롯의 MD5 해시가 산출된다. 데이터가 저장될 때, 재기동 가능 슬롯 고유의 MD5 해시 및 신규 길이가 슬롯 메타데이터에 저장된다.
단계 902에서, 슬롯(502)의 전송이 완료되는지 여부가 판정된다. 완료되지 않았으면, 운영은 종료 단계 904로 진행하여, 단계 651로 복귀된다.
슬롯(503)의 전송이 완료된 경우, 단계 903에서, 브로커(410)는 슬롯(503)의 발췌를 시도한다. 단계 903은 단계 800-803의 발췌 처리를 포함한다. 발췌가 종료되면, 종료 단계 904는 단계 651로 운영을 복귀한다.
본 발명의 기능은 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합에 의해 구현될 수 있다.
일 예로서, 본 발명의 하나 이상의 형태는, 예컨대 컴퓨터 이용 가능 매체를 구비하는 제조물(예를 들어, 하나 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 본 명세서에서 채용된 매체는, 예를 들어, 본 발명의 기능을 제공하고 촉진하는 컴퓨터 판독 가능 프로그램 코드 수단이다. 제조물은 컴퓨터 시스템의 일부로서 포함되거나 또는 따로 판매될 수 있다.
또한, 본 발명의 기능을 수행하는 장치에 의해 실행될 수 있는 적어도 하나의 명령어 프로그램을 확실히 구현하는, 장치에서 판독할 수 있는 적어도 하나의 프로그램 저장 장치가 제공될 수 있다.
본 명세서에 묘사된 흐름도는 단지 예이다. 본 명세서에서 설명된 이들 도면 또는 단계(또는 운영)는 본 발명의 사상을 벗어나지 않는 범주에서 다양하게 변 형될 수 있다. 예를 들어, 단계들이 다른 순서로 수행되거나, 단계가 추가, 삭제, 변경될 수 있다. 이들 모든 변경은 청구된 발명의 일부로서 간주한다.
본 발명의 바람직한 실시예를 본 명세서에서 도시하고 설명했지만, 본 발명은 본 명세서에 개시된 정확한 구성으로 제한되는 것이 아니며, 권리는 첨부된 클레임에 의해서 규정되는 바와 같이, 본 발명의 범주 내에서 모든 변경 및 변형에 대해 "유보된다"는 점이 이해될 것이다.

Claims (10)

  1. 컴퓨팅 시스템에서 다수의 채널을 통해 클라이언트 컴퓨터로부터 적어도 하나의 원격 수신측 컴퓨터로 데이터 파일을 업로드하는 컴퓨터 구현 방법으로서,
    상기 데이터 파일을, 복수의 파일 슬롯과, 하나 이상의 슬롯을 포함하는 복수의 파일 컴포넌트로 분할하는 단계와,
    상기 클라이언트 컴퓨터로부터 적어도 하나의 상기 수신측 컴퓨터로 상기 데이터 파일을 업로드하기 위해, 다수의 파일 슬롯을 전송하는 단계 - 각각의 파일 슬롯은 상기 다수의 채널 중 하나를 통해 전송되도록 동작가능함 - 와,
    상기 수신측 컴퓨터로 전송된 상기 데이터 파일에 근거하여, 각 파일 슬롯 내의 데이터에 근거한 수신측(destination-side) 파일 슬롯 해시(file slot hash), 각 파일 컴포넌트 내의 데이터에 근거한 수신측 파일 컴포넌트 해시(file component hash) 및 상기 전송된 데이터 파일에 근거한 수신측 누적 해시(cumulative hash)를 산출하는 단계와,
    상기 클라이언트 컴퓨터 상에 존재하는 데이터 파일에 근거하여 클라이언트측 누적 해시를 산출하는 단계와,
    상기 전송된 파일의 무결성을 검증하기 위해, 상기 수신측 누적 해시와 상기 클라이언트측 누적 해시를 비교하는 단계와,
    상기 클라이언트측 누적 해시와 수신측 누적 해시가 매칭되지 않으면, 에러를 포함하는 파일 슬롯 및 파일 컴포넌트로부터 상기 데이터 파일의 업로드의 재개가 시작될 수 있도록, 어느 파일 슬롯 및 어느 파일 컴포넌트에서 상기 에러가 발생했는지 판정하는 단계를 포함하는
    컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 어느 파일 슬롯 및 어느 파일 컴포넌트에서 상기 에러가 발생했는지 판정하는 단계는,
    상기 수신측 파일 컴포넌트 해시 및 상기 수신측 파일 슬롯 해시를 클라이언트측 파일 컴포넌트 해시 및 클라이언트측 파일 슬롯 해시와 각각 비교하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    발췌 슬롯(a culled slot)을 생성하는 단계와,
    상기 발췌 슬롯과, 상기 발췌 슬롯에 인접하는 전송된 데이터를 병합하는 단계를 더 포함하되,
    상기 수신측 누적 해시의 산출은, 결과로서 생긴 상기 발췌 슬롯에 대응하는 데이터를 이용하여 수행되는
    컴퓨터 구현 방법.
  4. 제 3 항에 있어서,
    수신측 누적 해시 상태를 메타데이터(metadata)로서 저장하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    만료될 수 있는 임대(lease)를 슬롯과 연관시키는 단계를 더 포함하는
    컴퓨터 구현 방법.
  6. 제 5 항에 있어서,
    상기 임대가 만료되었는지 여부를 판정하는 단계와,
    상기 임대가 만료되었다는 판정에 응답하여, 상기 슬롯을 요구(reclaim)하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  7. 제 3 항에 있어서,
    상기 발췌 슬롯 또는 임의의 기존 슬롯에 의해 나타나지 않는 최소 파일 오프셋을 선택하여 신규 슬롯을 생성하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    상기 단계들은, 다수의 채널과 개수가 같은 다수의 클라이언트측 지능형 에이전트 및 적어도 하나의 수신측 지능형 에이전트를 이용하여 구현될 수 있는
    컴퓨터 구현 방법.
  9. 컴퓨팅 시스템에서 다수의 채널을 통해 클라이언트 컴퓨터로부터 적어도 하나의 원격 수신측 컴퓨터로 데이터 파일을 업로드하는 장치로서,
    상기 데이터 파일을, 복수의 파일 슬롯과, 하나 이상의 슬롯을 포함하는 복수의 파일 컴포넌트로 분할하는 수단과,
    상기 클라이언트 컴퓨터로부터 적어도 하나의 상기 수신측 컴퓨터로 상기 데이터 파일을 업로드하기 위해, 다수의 파일 슬롯의 전송을 제어하는 수단 - 각각의 파일 슬롯은 상기 다수의 채널 중 하나를 통해 전송될 수 있음 - 과,
    상기 수신측 컴퓨터로 전송된 상기 데이터 파일에 근거하여, 각 파일 슬롯 내의 데이터에 근거한 수신측 파일 슬롯 해시, 각 파일 컴포넌트 내의 데이터에 근거한 수신측 파일 컴포넌트 해시 및 상기 전송된 데이터 파일에 근거한 수신측 누적 해시를 산출하는 수단과,
    상기 클라이언트 컴퓨터 상에 존재하는 데이터 파일에 근거하여 클라이언트측 누적 해시를 산출하는 수단과,
    상기 전송된 파일의 무결성을 검증하기 위해, 상기 수신측 누적 해시와 상기 클라이언트측 누적 해시를 비교하는 수단과,
    상기 클라이언트측 누적 해시와 상기 수신측 누적 해시가 매칭되지 않으면, 에러를 포함하는 파일 슬롯 및 파일 컴포넌트로부터 상기 데이터 파일의 업로드의 재개가 시작될 수 있도록, 어느 파일 슬롯 및 어느 파일 컴포넌트에서 상기 에러가 발생했는지 판정하는 수단을 포함하는
    데이터 파일 업로드 장치.
  10. 다수의 채널을 통해 클라이언트 컴퓨터로부터 적어도 하나의 원격 수신측 컴퓨터로 데이터 파일을 업로드하는 컴퓨터 판독 가능 프로그램 코드를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 데이터 파일을, 복수의 파일 슬롯과, 하나 이상의 슬롯을 포함하는 복수의 파일 컴포넌트로 분할하는 제 1 컴퓨터 프로그램 코드 수단과,
    상기 클라이언트 컴퓨터로부터 적어도 하나의 상기 수신측 컴퓨터로 상기 데이터 파일을 업로드하기 위해, 다수의 파일 슬롯의 전송을 제어하는 제 2 컴퓨터 프로그램 코드 수단 - 각각의 파일 슬롯은 상기 다수의 채널 중 하나를 통해 전송됨 - 과,
    상기 수신측 컴퓨터로 전송된 상기 데이터 파일에 근거하여, 각 파일 슬롯 내의 데이터에 근거한 수신측 파일 슬롯 해시, 각 파일 컴포넌트 내의 데이터에 근거한 수신측 파일 컴포넌트 해시 및 수신측 누적 해시를 산출하는 제 3 컴퓨터 프로그램 코드 수단과,
    상기 클라이언트 컴퓨터 상에 존재하는 데이터 파일에 근거하여 클라이언트측 누적 해시를 산출하는 제 4 컴퓨터 프로그램 코드 수단과,
    상기 전송된 파일의 무결성을 검증하기 위해, 상기 수신측 누적 해시와 상기 클라이언트측 누적 해시를 비교하는 제 5 컴퓨터 프로그램 코드 수단과,
    상기 클라이언트측 누적 해시와 상기 수신측 누적 해시가 매칭되지 않으면, 에러를 포함하는 파일 슬롯 및 파일 컴포넌트로부터 상기 데이터 파일의 업로드의 재개가 시작될 수 있도록, 어느 파일 슬롯 및 어느 파일 컴포넌트에서 상기 에러가 발생했는지 판정하는 제 6 컴퓨터 프로그램 코드 수단을 포함하는
    컴퓨터 판독가능 저장 매체.
KR1020097012918A 2007-01-12 2007-12-21 컴퓨팅 시스템에서 데이터를 업로드하기 위한 방법, 장치 및 컴퓨터 프로그램 제품 KR101063556B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/622,711 US8055902B2 (en) 2007-01-12 2007-01-12 Method, system, and computer program product for data upload in a computing system
US11/622,711 2007-01-12
PCT/EP2007/064431 WO2008083914A1 (en) 2007-01-12 2007-12-21 Method, apparatus, and computer program product for data upload in a computing system

Publications (2)

Publication Number Publication Date
KR20090097165A KR20090097165A (ko) 2009-09-15
KR101063556B1 true KR101063556B1 (ko) 2011-09-07

Family

ID=39332072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097012918A KR101063556B1 (ko) 2007-01-12 2007-12-21 컴퓨팅 시스템에서 데이터를 업로드하기 위한 방법, 장치 및 컴퓨터 프로그램 제품

Country Status (6)

Country Link
US (1) US8055902B2 (ko)
EP (1) EP2108228B1 (ko)
KR (1) KR101063556B1 (ko)
AT (1) ATE465589T1 (ko)
DE (1) DE602007006058D1 (ko)
WO (1) WO2008083914A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100121828A1 (en) * 2008-11-11 2010-05-13 You Wang Resource constraint aware network file system
WO2012081099A1 (ja) * 2010-12-15 2012-06-21 富士通株式会社 データ移行プログラム、計算機およびデータ移行方法
US20120246205A1 (en) * 2011-03-23 2012-09-27 Hitachi, Ltd. Efficient data storage method for multiple file contents
CN102833294B (zh) 2011-06-17 2015-05-20 阿里巴巴集团控股有限公司 基于云存储的文件处理方法、系统及服务器集群系统
US8635270B2 (en) * 2011-09-19 2014-01-21 Verizon Patent And Licensing Inc. Thread mechanism for media and metadata upload
JP5857684B2 (ja) * 2011-11-30 2016-02-10 ブラザー工業株式会社 通信装置
US9160697B2 (en) * 2012-01-01 2015-10-13 Qualcomm Incorporated Data delivery optimization
CN103309768B (zh) * 2012-03-16 2015-03-11 腾讯科技(深圳)有限公司 系统文件修复方法和装置
JP5987445B2 (ja) * 2012-04-20 2016-09-07 富士通株式会社 通信制御装置、方法、プログラムおよびシステム
SG11201500836QA (en) * 2012-08-08 2015-03-30 Amazon Tech Inc Archival data storage system
US20140143201A1 (en) * 2012-11-20 2014-05-22 International Business Machines Corporation Dynamic content file synchronization
CN103248711B (zh) * 2013-05-23 2016-08-24 华为技术有限公司 一种文件上传的方法和服务器
CN107403016A (zh) * 2017-08-08 2017-11-28 郑州云海信息技术有限公司 一种文件上传方法及装置
US12086450B1 (en) 2018-09-26 2024-09-10 Amazon Technologies, Inc. Synchronous get copy for asynchronous storage
US11768954B2 (en) 2020-06-16 2023-09-26 Capital One Services, Llc System, method and computer-accessible medium for capturing data changes
KR102246581B1 (ko) 2021-01-04 2021-04-29 이선웅 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버
FI129641B (en) * 2021-01-27 2022-06-15 Nokia Technologies Oy Receiving segments in a system information block message

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040172476A1 (en) 2003-02-28 2004-09-02 Chapweske Justin F. Parallel data transfer over multiple channels with data order prioritization

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1912885B (zh) * 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6049892C1 (en) 1997-02-24 2002-06-04 Ethos Software Corp Process and apparatus for downloading data from a server computer to a client computer
US6477522B1 (en) 1999-06-10 2002-11-05 Gateway, Inc. Dynamic performance based server selection
US6339785B1 (en) 1999-11-24 2002-01-15 Idan Feigenbaum Multi-server file download
US20030074465A1 (en) 2001-10-15 2003-04-17 Zhicheng Tang ADSL downloading with priority transmit queue
US7716659B2 (en) 2001-10-23 2010-05-11 Pitney Bowes Inc. Remote monitoring and software distribution system for servicing inserter systems
US8261059B2 (en) 2001-10-25 2012-09-04 Verizon Business Global Llc Secure file transfer and secure file transfer protocol
US7627617B2 (en) * 2004-02-11 2009-12-01 Storage Technology Corporation Clustered hierarchical file services
US7631098B2 (en) 2004-06-08 2009-12-08 International Business Machines Corporation Method, system and program product for optimized concurrent data download within a grid computing environment
JP4337675B2 (ja) * 2004-07-23 2009-09-30 ソニー株式会社 暗号処理装置および暗号処理方法
US8103870B2 (en) * 2006-09-12 2012-01-24 Foleeo, Inc. Hive-based peer-to-peer network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040172476A1 (en) 2003-02-28 2004-09-02 Chapweske Justin F. Parallel data transfer over multiple channels with data order prioritization

Also Published As

Publication number Publication date
US8055902B2 (en) 2011-11-08
WO2008083914A1 (en) 2008-07-17
ATE465589T1 (de) 2010-05-15
US20080172392A1 (en) 2008-07-17
WO2008083914B1 (en) 2008-08-28
EP2108228B1 (en) 2010-04-21
EP2108228A1 (en) 2009-10-14
DE602007006058D1 (de) 2010-06-02
KR20090097165A (ko) 2009-09-15

Similar Documents

Publication Publication Date Title
KR101063556B1 (ko) 컴퓨팅 시스템에서 데이터를 업로드하기 위한 방법, 장치 및 컴퓨터 프로그램 제품
US20210014279A1 (en) Network-accessible service for executing virtual machines using client-provided virtual machine images
US7631098B2 (en) Method, system and program product for optimized concurrent data download within a grid computing environment
JP3566626B2 (ja) 異種サーバ装置内の資源を管理するためのシステム
US10320891B2 (en) Node selection for message redistribution in an integrated application-aware load balancer incorporated within a distributed-service-application-controlled distributed computer system
Maggs et al. Algorithmic nuggets in content delivery
US6466980B1 (en) System and method for capacity shaping in an internet environment
US7793308B2 (en) Setting operation based resource utilization thresholds for resource use by a process
US8972366B2 (en) Cloud-based directory system based on hashed values of parent and child storage locations
US20120096461A1 (en) Load balancing in multi-server virtual workplace environments
US8131693B2 (en) Methods and systems for transferring data over electronic networks
US20100011364A1 (en) Data Storage in Distributed Systems
US9740705B2 (en) Storlet workflow optimization leveraging clustered file system roles
US20110314232A2 (en) Electronic data store
KR100618159B1 (ko) 정책 쿼럼 기반의 그리드 자원 관리 시스템 및 그 방법
Elwaer et al. Attic: a case study for distributing data in BOINC projects
US20210344771A1 (en) System and Method for Cloud Computing
Cuenca-Acuna et al. Self-managing federated services
Tusch Towards an adaptive distributed multimedia streaming server architecture based on service-oriented components
CN116233057A (zh) 数据传输方法、云中心、边缘节点及存储介质
Liu et al. Moving huge scientific datasets over the Internet
TWI401574B (zh) 於一柵網計算環境中用在最佳化同作資料下載之方法、系統及程式產品
Kosar et al. Coordination of access to large-scale datasets in distributed environments
Hildebrand et al. nfsv4 and high performance file systems: Positioning to scale
Kimmatkar et al. Applications sharing using binding server for distributed environment

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