KR20020079849A - 네트워크 상에 분포된 데이터 처리 작업의 신속한 종료를위한 시스템 및 방법 - Google Patents

네트워크 상에 분포된 데이터 처리 작업의 신속한 종료를위한 시스템 및 방법 Download PDF

Info

Publication number
KR20020079849A
KR20020079849A KR1020027010416A KR20027010416A KR20020079849A KR 20020079849 A KR20020079849 A KR 20020079849A KR 1020027010416 A KR1020027010416 A KR 1020027010416A KR 20027010416 A KR20027010416 A KR 20027010416A KR 20020079849 A KR20020079849 A KR 20020079849A
Authority
KR
South Korea
Prior art keywords
data
file
central processing
routine
executable code
Prior art date
Application number
KR1020027010416A
Other languages
English (en)
Other versions
KR100502878B1 (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 KR20020079849A publication Critical patent/KR20020079849A/ko
Application granted granted Critical
Publication of KR100502878B1 publication Critical patent/KR100502878B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

네트워크 상에서 작업을 실행하기 위한 방법은, 범용 데이터로부터 한개 이상의 서브그룹 데이터를 생성하고(200), 실행 코드를 내장한 헤더로 서브그룹 데이터를 식별하며(202), 상기 서브그룹 데이터를 가용한 프로세서로 전송하고(204), 헤더 내 실행 코드에 내장된 명령 및 서브그룹 데이터를 이용하여 결과 데이터를 얻도록 가용프로세서로 작업을 실행하는(206) 과정을 포함한다.

Description

네트워크 상에 분포된 데이터 처리 작업의 신속한 종료를 위한 시스템 및 방법{SYSTEM AND METHOD FOR RAPID COMPLETION OF DATA PROCESSING TASKS DISTRIBUTED ON A NETWORK}
많은 기업체들이 가능한 짧은 시간 프레임 내에서 대용량 데이터를 처리할 수 있기를 희망하고 있다. 최근 수년간에는, 이러한 대용량 데이터를 처리해야하는 기업체들이 매우 고가이면서 특화된 멀티-프로세서 하드웨어를 구매하고 있다. 이 하드웨어를 메인프레임 컴퓨터, 수퍼컴퓨터, 대용량 병렬 컴퓨터라고도 부른다. 이러한 하드웨어의 비용은 수백만 달러에 이르며, 시스템 관리를 위해 특별한 인력을 고용해야 할 필요성과 보조장치 계약으로 인해 추가 비용이 또한 발생된다. 이러한 수퍼컴퓨터의 능력은 고가일 뿐 아니라, 주어진 작업이 멀티프로세서 사이에서 어떻게 분포되는 지에 대해 사용자에게 자유로운 제어를 제공하지 않는다. 어떤 연산 작업이 어떻게 분포되는 지는 이러한 수퍼컴퓨터의 운영 체제의 기능이 된다.
데이터 처리 분야에서, 서로 다른 그룹의 데이터에 대해 매우 비슷한 연산이 실행되는 경우가 자주 있다. 예를 들어, 수개의 서로 다른 클래스에 대해 한 클래스의 독자적 사례(가령, 데이터 그룹)를 카운팅하고 싶어하고, 주어진 클래스에 대해 어떤 산술 연산이 사용되는 지, 또는 두 클래스의 교차점이 무엇인지에 대해 알고 싶어할 수 있다. 수퍼컴퓨터 환경에서, 여러 중앙처리장치(CPU) 간에 한 작업의 여러 부분을 어떻게 분포시키는 지에 관해 온전한 결정을 하기 위해 운영체제에 의지하여야 한다. 그러나 오늘날의 운영체제는 데이터 처리 내용에서 이러한 종류의 의사결정 능력이 없다.
따라서, 이 결점들을 극복하는 시스템 및 방법이 필요하다.
첨부물 A는 컴퓨터 루틴 목록이고, 총쪽수는 40쪽이다.
도 1은 선호되는 실시예에 따라 본 방법을 실행하기 위한 시스템의 블록도표.
도 2는 선호되는 실시예에 따른 본 방법의 개관.
도 3은 선호되는 실시예에 따라 본 방법이 작업 큐를 어떻게 구축하는 지에 관한 순서도.
도 4는 선호되는 실시예에 따라 네트워크 상의 컴퓨터에 작업 데이터 및 작업 명령을 전송하는 과정의 블록도표.
도 5는 선호되는 실시예에 따라 작업자 루틴이 작업을 완료하였을 때 파일 결과를 재조립하는 과정의 블록도표.
선호되는 실시예에 따라, 네트워크 상에서 컴퓨터의 중앙처리장치(CPU)와 같은 멀티프로세서가 다양한 숫자와 종류의 데이터 처리 작업을 실행하게 하는, 시스템 및 방법이 기술된다. 본 시스템 및 방법을 위해 준비된 네트워크 상에서 가용한 CPU 중 어떤 CPU에 데이터 처리 작업이 제공된다. 이 시스템 및 방법은 작업 완료를 위해 필요한 최소량의 데이터를 가지는 CPU와 작업 완료를 위해 필요한 소프트웨어 명령을 실행하는 작업을 제공한다.
특히, 선호되는 시스템 및 방법은 데이터 처리의 시간 및 비용 측면에서 개선된 효율성을 보인다. 소프트웨어 사용자는 주어진 데이터 처리 작업을 고려하여, 각 작업에 필요한 데이터 종류에 대한 규정 세트를 제공하며, 그리고 주어진 데이터 그룹에 대한 작업을 세분화한다. 그후 이 시스템 및 방법은 입력 파일을 서브작업 데이터 파일로 나누고, 주어진 데이터와 작업 명세서를 네트워크 상의 가용한 컴퓨터로 전달한다. CPU는 이 작업을 실행하고, 작업을 요청한 컴퓨터로 완료 결과를 되보낸다.
따라서, 윈도우즈 NT나 유닉스처럼 기존 운영체제를 이용하는 기존 개인용 컴퓨터에 의해 대용량 데이터가 신속하게 처리될 것이다. 선호되는 실시예의 소프트웨어를 구동하는 20개의 이중-프로세서 컴퓨터나 24개의 단일-프로세서 컴퓨터(예임)의 작은 집합체(cluster)가 동등한 수의 CPU를 가진 수퍼컴퓨터의 성능을 뛰어넘지는 않더라도 그와 동등할 수 있다.
본 시스템 및 방법의 선호되는 실시예는 데이터 처리 실행을 위한 네트워크 상의 다수의 처리장치와, 마스터 작업이라 알려진 큰 작업 내의 한 개의 구분된 작업에서의 각각의 작업에 대해 컴퓨터를 제어하기 위한 소프트웨어를 포함한다. 작업은 그래버 루틴(grabber routine), 작업자 루틴(worker routine), 그리고 재조립루틴(reassembling routine)같은 한개의 루틴이며, 이 모두는 아래에서 상세하게 설명될 것이다. 본 시스템은 검색 엔진으로 이용될 수 있다. 적저한 검색 엔진은 함께 계류중인 1999년 5월 28일자 미국특허출원 09/322,677 호, "System and Method for Influencing a Position on a Search Result List Generated by a Computer Network Search Engine"에 설명되어 있고 본 발명에서 참고로 인용된다.
도 1에서, 본 시스템에 사용되는 루틴들을 실행하는 프로세서(102)의 네트워크(100)가 도시된다. 네트워크(100)에 추가하여, 프로세서(102)가 LAN 상에, 또는 인터넷에, 등등에 연결될 수 있다. 프로세서(102)는 보통의 상용컴퓨터, 수퍼컴퓨터, 랩탑 등의 CPU일 수 있다. 프로세서(102) 중 적어도 하나가 메인 프로세서(104)로 작용한다. 메인 프로세서(104)는 프로세서(102) 중 어느것도 가능하다.
도 2에서, 상기 시스템은 본 방법의 실행을 위해 이용될 수 있다. 본 방법은 다량의 범용 데이터를 취한 후, 이 데이터들을 작업 전용의 소그룹 데이터로 나눈다(블록 200). 다시 말해서, 소그룹 데이터는 특정 작업에 필요한 데이터만을 포함하도록 구성된다. 예를 들어, 사용자는 작업 큐와 작업 데이터 큐를 준비할 수 있다. 작업 큐는 실행할 작업과, 실행할 작업의 순서를 규정한다. 작업 데이터 큐는 데이터 처리 작업의 완료에 필요한 데이터 요소와, 개별적인 서브-작업들이 원활하게 실행될 수 있도록 한 파일에 데이터 처리 작업용 데이터가 어떻게 펼쳐지는 지를 규정한다. 그후, 서브그룹은 헤더로 식별된다(블록 202). 헤더는 아래에서 보다 상세하게 설명될 것이다. 서브그룹의 데이터는 가용한 프로세서로 전달된다(블록204). 가용한 프로세서는 서브그룹의 데이터에 대해 필요한 작업을 실행할 수 있다(블록 206).
도 3에서, 그래빙 작업을 실행하는 CPU에 위치한, 멍키그랩(monkeyGrab)이라 불리는 그래버 루틴(grabber routine)은 앞서 생성된 작업 데이터 파일로부터 그래빙하여야 할 데이터 요소들에 대한 명령을 수신한다(블록 300). 루틴에 의해 이용되는 데이터와 파일 헤더의 조합에 의해 상기 작업 데이터 파일이 규정된다. 그래버 루틴은 작업자 루틴이 데이터 파일 내의 요소들에 대해 작용할 수 있도록 출력 데이터를 설명하는 파일 헤더를 생성한다(블록 302). 그래버 루틴은 데이터 파일 내의 데이터 요소들만이 이어지는 작업자 작업에 의해 요구되는 데이터 요소들임을 보증한다(블록 304). 그래버 루틴은 아래에 보다 상세하게 설명된다.
도 4에서, 작업을 원격 호스트에 전송하는 과정이 도시된다. 예를 들어, 소프트웨어는 가용 CPU의 상태와 가용 CPU의 메모리 데이터베이스를 스캔한다(블록 400). 가용 상태의 제 1 CPU에 작업 명령 파일과 작업 데이터 파일이 전달된다(각각, 블록 402, 블록 404). 작업 명령은 아래에 상세히 설명되는 멍키카운트(monkeyCount)같은 작업자 루틴을 포함한다. 작업 데이터 파일은 아래에 설명되는 멍키드저널(monkeyDeJournal)같은 루틴의 결과일 수 있다. 제어기 루틴은 가용 호스트가 실행하고 있는 작업의 추적을 위해 데이터 파일과 메모리 엔트리를 생성한다(블록 406). 작업 완료시, 작업 루틴은 결과 데이터를 제어기 루틴에서 가용하게 한다(블록 408). 제어기 루틴은 작업 루틴이 완료를 표시해주기를 기다린다. 성공적 완료시, 제어기 루틴은 가용 호스트의 멍키 데이터 파일을 갱신한다(블록 410). 그러나 성공적 완료에 실패하였을 경우, 제어기 루틴은 데이터 파일과 메모리 엔트리를 갱신하고, 작업을 또다른 가용 CPU에 재할당한다.
도 5에 도시되는 바와 같이, 작업 완료로부터 생긴 데이터 파일은 최초 요청한 컴퓨터(즉, 메인 프로세서)로 다시 전달되어, 다른 완료 작업으로부터의 데이터 파일과 재조합된다(블록 500). 메인 프로세서는 재조합 명령을 만들어서, 한 파일로 재조합될 서브작업 데이터 파일을 명시하게 한다(블록 502). 각각의 서브작업에 대하여, 아래 설명되는 멍키조인(monkeyJoin)같은 재조합 코드는 키와 데이터를 규정하는 데이터 열(data column)을 식별하기 위해 파일 헤더를 판독하고 평가한다(블록 504). 각각의 서브작업에 대한 결과 파일 헤더를 판독한 후, 재조합 루틴은 각 파일로부터 데이터 라인을 읽어들이고, 키가 일치할 경우 데이터 라인 내 키에 대한 데이터값을 출력한다. 키가 일치하지 않을 경우, 재조합 루틴은 잃어버린 데이터값을 어떻게 나타내고 처리할 지를 위해 파일 헤더를 판독한다. 모든 작업 결과 파일은 동일한 입력 데이터 파일로부터 생기며, 따라서 복수의 키를 처리할 필요가 없다. 작업 결과 데이터 파일은 주어진 키 중 하나만을 내장할 것이다. 마찬가지로, 소팅된 순서로 키를 출력하도록 작업 루틴이 쓰여지는 것이 선호되며, 따라서 더 이상의 소팅이 필요하지 않다. 그후, 데이터가 재조합된다(블록 508).
I. 하드웨어 및 네트워크
하드웨어의 보다 구체적인 예를 생각해보면, 하드웨어의 선호되는 실시예는 상용 개인용컴퓨터 세트이다. 사용자가 공지 환경 내에서 작업할 수 있도록, 각각의 컴퓨터가 현재 모델의 CPU, 동일한 크기의 메모리, 그리고 한개 이상의 고속 네트워크 인터페이스 카드를 내장하는 것이 선호된다. 설명을 위해, 선호되는 실시예는 12개의 이중 CPU 컴퓨터, 1기가바이트의 RAM, 그리고 두개의 100BaseT 이더넷 네트워크 어댑터 카드로 구성되며, 각각의 CPU는 500MHz 클럭 속도로 구동된다. 이 구성 내의 각 컴퓨터는 레드햇 리눅스(RedHat Linux) 운영체제를 사용한다. 마이크로소프트 윈도우즈와 윈도우즈 NT, 선 솔라리스(Sun Solaris), 매킨토시 등의 다른 운영체제도 물론 사용될 수 있다. 12개의 컴퓨터는 고속 네트워크 스위치를 통해 서로 연결된다. 각각의 컴퓨터에는 예를 들어, 한개의 SCSI II 인터페이스와 한개의 9기가바이트 하드드라이브가 내장된다. 물론, 성능에 손상을 입히지 않으면서 이 그룹에 여러대의 컴퓨터가 추가될 수 있다.
II. 소프트웨어
이 소프트웨어의 선호되는 실시예는 펄(Perl) 프로그래밍 언어처럼 실행중에 해역되는 언어로 구현되는 여러개의 별개의 컴퓨터 프로그램으로 구성된다. 자바, PHP3, 피톤(Python), 그리고 Tcl/Tk처럼 실행중에 해역되는 다른 프로그래밍 언어가 사용될 수도 있다.
데이터 사전처리 루틴으로 알려진 제 1 컴퓨터 루틴은 입력 데이터 파일을 읽어들이고, 작업 데이터 큐 제어 파일을 읽어들이며, 작업 데이터 큐 파일에 명시된 다수의 임의적 명령을 실행하고, 그리고 파일 헤더와 데이터 파일을 생성한다. 제 2 컴퓨터 루틴은 제 1 루틴에 의해 생성된 데이터 파일로부터 특정 데이터 처리 작업에 필요한 데이터 필드만을 추출한다. 그래버 루틴은 파일 헤더 세그먼트와, 작업자 루틴이 이용하는 데이터 세그먼트를 포함하는 파일을 생성한다. 출력 데이터 파일의 파일 헤더 세그먼트는 실행가능하거나 평가가능한 코드를 포함한다. 제 3 루틴인 작업자 루틴은 그래버 루틴에 의해 생성된 데이터 파일에 대한 연산을 실행한다. 작업자 루틴은 그래버 루틴에 의해 생성된 파일 헤더를 분석하여, 파일 헤더에 이어지는 파일의 데이터 부분에 대해 요청된 연산을 실행한다(선호됨). 이 분석과정은 파일 헤더의 판독 과정과, 이어지는 데이터의 구조를 규정하는 해시 테이블(hash table)을 생성하기 위해 프로그래밍된 코드를 평가하는 과정을 포함한다. 해시 테이블은 데이터 값으로 매핑되는 키를 이용하는 데이터 구조이다.
소프트웨어에 의해 실행되는 여러 작업들이 일종의 집합에 관련된 작업들이기 때문에, 본 발명의 선호되는 실시예는 여러 작업 파일을 합치게 하는 제 4 소프트웨어 루틴을 포함한다. 작업 파일이 합쳐져서, 주어진 클래스에 대해, 모든 집체 측정값이 한개의 데이터 행에 놓이게되고, 이는 데이터베이스 로딩을 용이한 작업으로 만든다. 네 개의 소프트웨어 루틴 각각은 아래에서 보다 상세하게 다루어질 것이다.
A. 데이터 사전처리 루틴
첨부물에서 멍키드저널(monkeyDeJournal)이라 명명된 데이터 사전처리 루틴은 사용자에 의해 선택된 데이터를 포맷하여, 데이터를 처리작업에 필요한 구분된 형태가 되도록 한다. 데이터 사전처리 루틴의 선호되는 실시예는 입력 데이터 파일과 제어 파일을 판독하고, 제어 파일에 명시된 데이터 그룹들을 되돌려보내고, 그리고 본 발명의 나머지 루틴들에 의해 판독될 새 파일을 출력한다.
입력 데이터 파일을 판독하는 것은 추출 메커니즘을 통해 이루어진다. 즉,데이터 사전처리 루틴은 기존 데이터 파일 분석 루틴을 향하게 된다. 데이터 파일 분석 루틴에 관한 두가지 가정은 1) 데이터 그룹을 식별할 수 있다는 것과, 2) 해시테이블 데이터 구조의 이러한 데이터 그룹을 되돌릴 수 있다는 점이다. 예를 들어, 입력 데이터 파일이 웹사이트 상에서 사용자 클릭을 위한 데이터 그룹(그룹: userClick)과 검색 엔진에 의해 실행되는 검색용 데이터 그룹(그룹: search)을 내장하면, 'userClick'과 'search'는 입력 데이터 파일에 대한 모든 공지 데이터 그룹의 해시 테이블 내 키일 것이다. 이 두 그룹 키 각각은 또다른 해시 테이블을 향할 수 있다. 본 해시 테이블에서 키들의 명칭은 데이터 요소의 명칭일 수 있고, 그 값들은 그룹의 특정 사례 내 상기 데이터 요소에 대한 실제 데이터값일 수 있다. 그룹 'userClick'은 예를 들어, 'timeStamp', 'IPAddress', 'rank', 'AccountID'라는 명칭의 데이터 요소들을 포함할 수 있다. 'search'라는 명칭의 그룹은 'query', 'timestamp', 그리고 'resultsFound'라는 명칭의 데이터 요소들을 내장한다. 데이터 파일이 판독됨에 따라 그룹 및 그 개별적 요소들은 데이터 사전처리 루틴이 판독해야하는 제어 파일 내의 데이터를 바탕으로 하여 되돌아온다.
제어 파일을 판독하고 그 데이터에 대해 작용하는 것은 데이터 사전처리 루틴의 코드에 의해 좌우된다. 제어 파일은 실행중에 평가가능한 해시 테이블로 명시된다. 해시 테이블 내의 키들은 임의적 명칭으로서, 각각의 명칭은 작업 큐를 나타낸다. 이 키들에 대한 값들 역시 해시 테이블이다. 이 자리잡은 해시 테이블은 세 개의 필수 키들과, 그 외 가변적인 수의 옵션 키를 가진다. 필수 키는 'event', 'columns', 그리고 'delimiter'라고 불린다. 옵션 키는 차후에 설명될 것이다.'event'라 불리는 키에 대한 값은 관심있는 데이터 요소를 내장하는 입력 파일로부터의 데이터 그룹을 명시한다. 입력 데이터 파일 파서(parser)는 그룹명을 식별한다. 예를 들어, 'event'라 불리는 키에 대한 값은 'userClick'일 수 있다. 'column'이라 불리는 키는 또다른 해시 테이블을 가리킨다. 이 자리잡은 해시테이블의 키들은 임의적으로 할당된 열 명칭으로서 차후의 어떤 데이터 처리 작업을 필요로할 수 있다. 'column'이라는 명칭의 키들에 대한 값은 한개의 가장안쪽의 해시 테이블로서, 데이터 처리 작업에 대해 관심있는 열을 만드는 방법을 사용자가 명시하게 한다. 이는 두 키, 즉, 'source_args'라는 키와, 'source_routine'이라는 명칭의 키를 이용하여 행하여진다. 'source_args'라는 키는 원하는 출력 필드를 만드는 데 사용될 데이터 그룹으로부터의 데이터 요소를 명시한다. 'source_routine'이라는 명칭의 키는 유효한 펄(Pearl) 서브루틴으로 명시된다. 마지막으로, 'delimiter'라는 명칭의 키는 출력 파일의 데이터 세그먼트에서 관심있는 데이터 열이 어떻게 분리되는 지를 명시한다. 선호되는 실시예에서, 이 제어 파일은 최소한 다음과 같이 제시될 수 있다.
본 예에서, 'AdvertiserQueue'는 작업 데이터 큐에 할당된 임의적 명칭이다. 관심있는 데이터 그룹은 'userClick'으로부터 생긴다. 'AdListingX'라는 열과 'IP_Address'라는 열의 두 출력 열이 요망된다. 출력 열 'AdListingX'는 'userClick' 데이터 그룹의 일부인 데이터 요소 'AccountID'와 'rank'로 구성될 수 있다. 'AdListingX' 데이터 열의 최종 표시는, 광고자 ID가 'ABC'이고 순위가 '3'이라고 가정할 때, ABC###의 형태를 취한다. 출력 열 'IP_Address'는 데이터 요소'ClientIP'가 데이터 그룹 'userClick'의 사례로부터 가지는 데이터값만을 내장할 수 있다. 관심있는 입력 데이터 필드에 변화 및 수정을 행하고자 'source_routine'값에 어떤 유효한 펄 구문(Perl syntax)도 사용될 수 있다. '\t'라는 값을 가지는 'delimiter'라는 키는 출력 필드가 탭 문자만큼 분리되어야 함을 표시한다.
본 발명의 현 사례에서, 제어 파일은 세 개의 추가적 옵션키를 포함할 수 있다. 이 옵션키는 'deltaT', 'restriction_args', 'restriction'의 명칭을 가진다. 'deltaT'는 데이터 사전처리 파일의 출력이 데이터를 내장해야 하는 시간 중에 한시간 내에 가장 이른 분에 관한 데이터 사전처리 루틴에 대한 정보를 제공한다. 이 키에 대한 법적인 값은 0에서 59 사이(0과 59를 포함)이다. 단일 디지털 번호는 0을 앞에붙여 시작된다. 즉, 그 값이 1일 경우 '01'이라 호칭한다. 'restriction_args' 키가 앞서 언급한 'source_args' 키와 똑같이 동작한다. 이 키에 대한 이 값은 사용자 정의 함수에 대한 입력 인수를 제공한다. 목록의 요소들은 관심있는 데이터 그룹 내의 데이터 요소들의 명칭이어야 한다. 'restriction' key 값은 유효한 펄 서브루틴(Perl subroutine)이다. 예를 들어,
위 프로그램은 파일 분석 루틴에 의해 나타나는 데이터의 첫 번째 시간 이후 9분을 지나기전에는 출력 파일에 포함될 관심있는 제 1 데이터 그룹이 발생하지 않음을 명시한다. 되돌아올 데이터 그룹 사례들은 그 '비드(bid)' 요소가 0보다 큰 값을 가지는 사례들이다. '비드(bid)' 요소는 '제한' 키를 통해 명시된 사용자 정의 함수로 전달된다.
데이터 사전처리 루틴이 제어 파일을 판독 하고 그 내용을 평가하면, 파일 헤더 세그먼트와 함께 시작하는 출력 파일을 생성한다. 이 파일 헤더 세그먼트는 펄 평가 해시 테이블 형태로 쓰여져 있다. 이 파일 헤더 세그먼트는 네 개의 필수 키와 세 개의 옵션 키를 가진다. 이들은 다음 섹션(B. 그래버 루틴)에서 설명될 것이다. 파일 헤더를 출력한 후, 데이터 사전처리 루틴은 다음 출력 라인의 'EndOffHeader'라는 명칭의 코튼에 들어간다. 이 점에서, 어떤 제한 기준에 부합하는 데이터 그룹의 어떤 사례들도 제어 파일에 명시된 규칙에 따라 조합되고 출력 파일의 데이터 부분에 기록되어가며, 이때 열들은 제어 파일에 명시된 한계 문자에의해 한정된다.
B. 그래버 루틴(Grabber routine)
멍키그랩(monkeyGrab)이라 불리는 그래버 루틴의 선호되는 실시예에 따라, 사전처리장치(preprocessor)는 사용자가 연산하길 원하는 데이터를 이용하여 이 데이터들을 파일 내에 위치시킨다. 그후, 실행 코드와 함께 파일 헤더를 판독할 수 있고 코드를 실행할 수 있는 다른 루틴은 작용할 데이터를 판독할 수 있다. 따라서, 그래버 루틴의 요구사항은 적절한 데이터 요소들을 추출할 수 있도록 사전처리 루틴에 의해 생성된 파일 헤더를 판독할 수 있어야 한다는 점이다. 그래버 루틴이 주어진 작업을 위해 필요한 최소량의 데이터를 작업 파일에 기록하기 때문에, 그래버 루틴은 사전처리 루틴의 파일 헤더와 유사한 규칙에 의해 구분되는 파일 헤더를 기록할 수 있다.
그래버 루틴은 그래버 루틴에 운반된 입력 인수를 통해 제공되는 열 명칭을 바탕으로 하여 데이터 열을 그래빙(grabbing)한다. 예를 들어, 한개의 데이터 파일이 검색 결과 비드 열같은 프라이스값을 내장한 열과, 한개 이상의 필드로 구성되는 있는 키 필드인 클래스 디스크립터를 내장한 열을 내장할 수 있다. 이러한 경우에, 그래버 루틴은 'grab-g price-g myKeyField'처럼 호출될 수 있다. 그래버 루틴의 작업 원천이 되는 데이터 파일은 'price'와 'myKeyField'라는 명칭의 열들에 대한 엔트리를 파일 헤더 내에 가진다. 사전처리된 루틴으로부터의 파일 헤더는 적절한 헤더 엔트리를 내장하여야 한다. 즉, 데이터 열을 기술하는 해시 테이블에 대한 키 명칭을 내장하여야 한다. 그래버 루틴은 열 위치의 데이터 파일 내 위치에 관한정보를 얻기 위해 데이터 파일로부터 헤더 정보를 판독하고, 데이터 열을 한정짓는 문자와, 빈 열 위치를 처리하기나 가치를 부여하는 방법같은 어떤 특별한 처리 규칙을 얻기 위해 데이터 파일로부터 헤더 정보를 판독한다. 그래버가 열 위치를 확인하고 주어진 열에 대해 어떤 처리 규칙이 필요한 지를 확인하며, 그래버 루틴은 관심있는 상기 열들을 로딩하고, 이들을 출력 파일 내에 위치시킨다.
그래버 루틴에 의해 기록되는 출력 파일은 추출된 열에 관한 헤더 정보를 가진다. 설명을 위해, 헤더는 그 안에 네 개의 키를 가진 펄 해시 테이블 형태를 취한다. 네 개의 키는 프리프로세서 루틴의 출력과 함께 포함되는 일곱 개 키중 네 개에 대응한다. 이 네 개의 키는 데이터 열에 대한 것으로, 데이터 열의 네 개의 키나 열 그룹의 네 개의 키는 주어진 데이터 행을 독자적인 데이터 열 라벨과 출력 데이터 필드 리미터로 만든다. 데이터 열에 대한 키는 제 2 해시 테이블을 가리킨다. 제 2 해시 테이블은 그 키로 열 명칭을 가지며, 그 값으로 두 키의 해시 테이블을 가진다. 가장 안쪽 해시 테이블의 제 1 키는 파일 데이터부 내 데이터 열의 위치를 설명하며, 이때 가장 안쪽 해시 테이블은 일련의 해시 테이블중 가장 깊은 해시 테이블이다. 가장 안쪽 해시 테이블의 제 2 키는 0 데이터 값을 어떻게 나타내는 지를 기술한다.
어떤 주어진 데이터 행을 독자적으로 기술하는 열에 대한 키는 데이터 행을 기술하는 열의 명칭을 가져야 한다. 이 명칭은 열의 해시 테이블 내 키다. 데이터 열 라벨에 대한 키는 펄 목록(Perl list)의 값을 가진다. 마지막으로, 열 딜리미터(column delimiter)를 설명하는 키는 열 딜리미터에 대응하는 값을 가진다. 열 딜리미터가 펄(Perl)의 탈출 순서인 어떤 문자를 포함할 경우, 이 탈출 문자 앞에는 백슬래시 '\'문자가 선행한다. 선호되는 실시예의 파일 헤더의 말미에 토큰을 위치시켜서, 헤더 정보 판독이 언제 종료되고 데이터 판독을 언제 시작하는 지를 소프트웨어가 알 수 있게 한다.
C. 작업자 루틴(Worker Routine)
멍키카운트(monkeyCount)라 불리는 작업자 루틴의 선호되는 실시예는 프리프로세서와 그래버 루틴의 선호되는 실시예와 매우 유사한 특징을 가지며, 데이터 파일 헤더를 판독하고 이러한 파일 헤더를 출력한다. 그래버 루틴처럼, 작업자 루틴은 판독중인 열이 어느 열인지, 그리고 입력 파일의 데이터 세그먼트에 이 열들이 어떤 순서로 나타나는 지, 그리고 입력 데이터 열 중 어느것이 클래스, 키를 구성한ㄴ 지를 결정하기 위해 파일 헤더를 판독한다. 이 정보를 읽고난 후, 작업자 루틴은 입력 데이터에 대해 원하는 연산을 실행한다. 작업자 루틴이 카운팅 루틴일 경우, 클래스의 디스크립터와 함께 이 클래스에 속한 행 숫자의 카운트를 각각의 클랙스에 대해 출력할 것이다. 예를 들어, 입력 데이터가 7개의 행과 두개의 열로 구성될 경우, 키와, 상기 키에 대해 카운팅될 아이템은 다음과 같다.
검색 용어
Adv01dog
Adv02cat
Adv05house
Adv03mouse
Adv01travel
Adv05music
Adv01sound
출력 데이터 파일은 다음의 데이터 행을 내장한다.
검색 횟수
Adv013
Adv032
Adv052
마찬가지로, 작업자 루틴이 가산 프로그램일 경우, 관심있는 각 키의 열 내 데이터 값을 더할 것이다.
작업자 루틴은 파일 입력/출력 및 복잡도 측면에서 어떤 주어진 작업도 최소화시킨다. 예를 들어, 카운트가 요청되었을 경우, 작업자 루틴은 카운팅될 키와 데이터 요소만을 수신한다. 이로인해, 메모리 작업자 할당이 어떤 임의적 숫자의 장치에서 발생할 수 있다. 한개의 작업자 루틴은 각 광고자에 대한 총 검색수를 카운팅할 수 있고, 또다른 작업자 루틴은 특정 시간 주기 내에서 주어진 광고자 목록에 대해 클릭되는 고유 IP 주소의 숫자를 카운팅할 수 있다. 작업자 루틴이 그 할당을 마치면, 이는 입력 파일과 같은 헤더 포맷을 가지는 파일을 기록할 것이지만, 그 열들을 설명하는 해시 테이블 내 값들은 데이터에 대해 작업된 입력 파일 및 명칭으로부터의 키 디스크립터가 될 것이다. 예를 들어, 입력 데이터 파일이 'Advertiser ID'의 키와 'Search Term'의 열을 가지며 작업자 루틴이 주어진 광고자에게 되돌려보내는 검색 횟수를 카운팅하도록 설정되었다면, 출력 파일은 'Advertiser ID'의 키와 'Count of Searches'의 열을 가질 것이다.
D. 데이터 재구성 루틴(Data Reconstruction Routine)
멍키조인(monkeyJoin)이라 불리는, 데이터 재구성 루틴의 선호되는 실시예에 따라, 모든 필드는 키에 의해 조직되는 한개의 파일로 재구성된다. 작업할 데이터가 사전처리된 후, 즉, 작은 작업 단위로 나누어진 후, 작은 작업 단위가 처리를 위해 네트워크 상의 기계로 전달된 후 재구성이 일어난다. 데이터 재구성은 편리한 데이터베이스 로딩을 촉진시킨다. 데이터 재구성을 달성하기 위해, 어느 데이터 파일이 한 개의 데이터 파일로 합쳐질 필요가 있는 지에 관해 데이터 재구성 루틴이 입력을 받는다. 데이터베이스 로드 파일의 일부가 될 각각의 데이터 파일은 리스트 포맷으로, 데이터 재구성 루틴에 대한 인수로 공급된다. 예를 들어, 데이터 재구성 루틴, 가령, 멍키조인(monkeyJoin)은 다음과 같이 불린다.
재구성 파일1 파일2 파일3... 파일N(reconstruction file1 file2 file3... fileN)
입력 인수로 공급되는 각 파일에 대하여, 재구성 루틴은 파일 헤더 정보를 판독하고 해시 테이블에 데이터와 헤더 정보를 저장한다. 모든 헤더와 데이터가 판독되면, 각 키 값은 순환된다. 일치 키를 가지는 모든 입력 파일에 대하여, 대응하는 출력 열이 기록된다. 입력 파일 중 하나가 키 엔트리나 값을 가지지 않을 경우,놓치거나 정의되지 않은 값의 조작이 호출되고, 재구성 루틴은 입력 파일 헤더 해시 테이블 내 표기법에 따라 적절한 값을 공급한다. 이 파일이 나머지 파일들처럼 기록되고, 이때 헤더 정보는 펄 해시 테이블의 형태를 취한다. 해시 테이블은 그래버 및 작업자 루틴에 의해 공급되는 해시 테이블 헤더와 동일한 네 개의 키를 내장한다. 이 해시 테이블의 키에 대한 값들은 이 장치에 의해 요구되는 동일한 기본 네 개의 키를 포함한다. 즉, 열 해시 테이블, 키 해시 테이블, 열 딜리미터 명세서, 그리고 열 라벨의 해시 테이블을 포함한다.
E. 디스패치 루틴(Dispatching routine)
멍키디스패처(monkeyDistpatcher)라 불리는 작업로드 분포 루틴의 선호되는 실시예에 따라, CPU와 컴퓨터 메모리의 집약적 작업은 클래스 내 독자적 사례를 카운팅 하는 등의 관심있는 연산을 실행하는 작업자 루틴에서 발생한다. CPU와 메모리의 집약적 작업이 수많은 컴퓨터에 분배되는 것이 이상적이다. 본 시스템 및 방법은 네트워크 상에서 분배 소프트웨어의 공지 컴퓨터 이용 로드를 바탕으로 하여 네트워크 상의 가용 컴퓨터에 작업을 보낸다. 디스패치 루틴은 한개의 작업자나 그래버 루틴이 네트워크에 딸린 컴퓨터의 각각의 CPU에 대해 동작하게 한다. 예를 들어, 실행될 연산이 24개 있다면, 그리고 두개씩의 CPU를 가지는 컴퓨터가 24대 있다면, 두 작업자 연산이 카운팅 작업의 가장 신속한 완료를 보장하기 위해 동시적 처리를 위해 12대의 컴퓨터 각각에 맡겨질 수 있다. 마찬가지로, 디스패처 루틴은 어느 작업이나 작업 성분이 동시에 실행될 수 있는 지, 그리고 어느 작업이 일부 다른 작업 성분의 완료를 필요로하는 지에 관한 정보를 필요로한다.
따라서, 디스패치 루틴은 작업 명령을 수신할 수 있는 기계에 관한 데이터, 그리고 얼마나 많은 작업 명령들을 한번에 수신할 수 있는 지에 관한 데이터를 필요로 한다. 예를 들어, 네 개의 CPU 장치는 한번에 네 개의 명령을 수신할 수 있다. 루틴은 또한, 1) 시간 내에 어떤 주어진 점에서 얼마나 많은 작업들을 어느 장치가 현재 실행중인 지에 관한 데이터와, 2) 시간내에 어떤 주어진 점에서 이 장치들의 어떤 작업이 실행중인 지에 관한 데이터를 저장한다. 마지막으로, 디스패치 루틴은 원격 장치에 대한 데이터 처리를 위해 코드 개시를 시작할 수 있다.
선호되는 실시예는 주어진 장치에서 CPU의 총숫자와 네트워크 상에서 가용한 장치의 명칭을 명시하는 펄 해시 테이블로 쓰여진 데이터 파일로 시작된다. 마지막으로 공지된 시작 시간에 주어진 장치에 대해 각 CPU의 마지막으로 공지된 "busy/idle" 상태가 또한 명시된다. 예를 들어, 정수 형태에서, 작업이 CPU에서 시작되었음을 한 정수가 표시하며, 주어진 장치의 CPU에서 어떤 작업도 현재 실행되지 않고있음을 한 공백값(a blank value)이 표시한다. 네트워크 상의 각각의 장치는 해시 테이블 내 한개의 키를 가진다. 이 해시 테이블 내 각각의 키는 제 2 해시 테이블을 가리키고, 상기 제 2 해시 테이블은 주어진 장치에 대해 공지된 CPU의 수와, 상기 장치에 대한 작업을 하고자 현재 점유된 CPU의 수에 대한 키 엔트리를 가진다. 해시 테이블의 첫 번째 구성에서, 작업을 실행하기 위해 현재 점유중인 CPU의 값은 0이다.
또한 데이터 파일 내에서 작업 큐가 명시된다. 본 세트의 작업 해시 테이블 내 가장 바깥쪽 키는 작업의 구성성분들을 명시하는 한개 이상의 해시 테이블을 가리키며, 이 서브작업들이 동시에 실행될 수 있는 지 여부를 가리킨다. 이 가장 바깥쪽 작업 해시 테이블의 키는 간단한 정수로서, 1에서 시작하여 각각의 작업 세트에 대해 1씩 증가한다. 이처럼 번호매겨지는 각각의 작업은, 작업의 태양(데이터 사전처리, 데이터 그래빙/카운팅, 데이터 조이닝 등)을 나타내기 위한 키를 내장하는, 또다른 해시 테이블을 가리킨다. 선호되는 실시예는 이 개별적 작업 키들을 한개의 해시 테이블 내에 감싼다. 그 단일 키는 예를 들어 'parms'라고 명칭한다. 'parms' 키는 네 개의 키 엔트리: 'key', 'name', 'tasks', 그리고 'masterTaskFile'을 가지는 한개의 해시 테이블을 가리킨다. 이 키들은 대응하는 값을 가진다. 즉, 이 열의 디스크립터가, 데이터 사전처리 루틴의 출력 파일의 명칭과, 동시에 실행될 수 있는 짝을 이룬 그래빙 및 카운팅 작업의 목록, 데이터 사전처리 작업의 지정된 표현인 토큰화된, 광고자 ID같은 클래스 레벨 키를 구성한다.
선호되는 실시예에 따라, 디스패치 루틴은 네트워크 상에서 가용한 장치와 이 장치의 가용성을 식별하기 위해 제어 파일 내를 판독한다. 작업이 장치로 급파되기 때문에, 디스패치 소프트웨어는 가용한 장치의 해시 테이블의 메모리 사본을 갱신한다. 따라서, 한 장치가 두개의 CPU를 가지고 있고 디스패치 루틴이 두개의 CPU를 가진 장치에 작업을 전송하였을 경우, 디스패치 소프트웨어는 네트워크 상의 장치에 한개의 작업이 전송되었음을 표시하기 위해 사용중인(busy) CPU의 번호를 0에서 1로 증가시킨다. 작업자 루틴 작업을 실행중인 장치가 작업을 종료할 때, 디스패처는 작업을 실행한 장치에 대해 사용중인(busy) CPU값을 1만큼 줄인다.
이 메카니즘으로, 네트워크 상의 장치에 작업을 할당하기 전에, 디스패치 소프트웨어는 한 장치에 할당된 현재 작업에 의해 가용 장치를 소팅한다. 네트워크 상의 장치 X가 0의 사용중인 CPU를 가지고 장치 Y가 1의 사용중인 CPU를 가지며 두 장치 X와 Y가 총 두개의 CPU를 가질 경우, 디스패치 소프트웨어는 장치 X에 작업을 먼저 할당할 것이다(선호됨). 이는 디스패치 소프트웨어가 결정할 수 있는 한 장치 X가 사용중인 CPU를 가지고 있지 않기 때문에 발생한다. 장치 X는 디스패치 루틴 지식없이 일부 CPU에 독립적인 소프트웨어를 실행중일 수 있다. CPU를 가진 컴퓨터는 워드프로세서 작업처럼 컴퓨터의 프로세서가 부적절한 작업과 묶인, 이러한 컴퓨터로 작업이 전달되는 문제점을 방지하기 위해 필요한 운영 체제 소프트웨어를 가지는 것이 선호된다. 선호되는 실시예에서, 컴퓨터는 운영체제, 프로그램 인터프리터(가령, 펄 인터프리터), 그리고 (필요시) 보안 복제 프로그램만을 포함한다. 네트워크 상의 모든 장치가 동일하게 사용중일 경우, 디스패치 소프트웨어는 장치 명칭에 의해 가용 장치의 스택을 소팅하고, 이 방식으로 작업을 할당한다. 한 장치가 완전히 점유되면, 할당된 작업 중 한개 이상을 마쳤다고 사용중인 장치가 보고할 때까지 디스패치 소프트웨어는 가용 장치 스택으로부터 이 장치를 제거한다.
모든 장치가 사용중일 경우, 디스패치 소프트웨어는 작업 디스패치 재시도를 위해 제 1 시간 주기, 가령, 몇분동안을 대기한다. 디스패처 소프트웨어가 대기 작업을 가지지만 제 2 시간 주기, 가령 15분 후에도 가용 장치를 찾지 못할 경우, 디스패처 소프트웨어는 경고 메시지를 생성한다. 이 조건은 소프트웨어 시스템 및 작업들을 재설정하는 것을 필요로하는 대형 시스템 고장을 표시한다. 발명의 선호되는 실시예는 네트워크 상에서 모든 하드웨어가 어떤 주어진 15분동안 모두 사용중이기는 쉽지 않도록 네트워크 상에서 충분한 하드웨어를 공급한다.
디스패치 소프트웨어가 주어진 작업을 할당받은 장치를 식별할 경우, 디스패치 소프트웨어는 원격 컴퓨터에서 실행될 명령 세트를 조합하는 과정을 시작한다. 소프트웨어가 조합하는 명령 세트는 디스패치 소프트웨어의 제어 파일 내에 제공되는 정보에 의해 제시되는 작업별로 특정한 것이다. 이 명령들의 구성은 다음과 같이 명시된다. 장치는 작업과 작업이 실행될 장치를 독자적으로 식별할 명칭을 생성한다. 이 명칭은 작업이 실행중이거나 완료되었음을 나타내기 위해 소프트웨어가 이용하는 디렉토리 엔트리 표시로 이용된다. 고유 명칭을 구성한 후, 디스패치 소프트웨어는 원격 컴퓨터에서 프로그램을 실행시킬 명령을 생성하기 위해 가용한 보안 쉘 유틸리티(ssh라고 알려짐)의 구문(syntax)을 이용한다. 원격 쉘 실행(rsh라 알려짐)도 물론 사용될 수 있다.
현재 형태에서, 선호되는 실시예는 네트워크 상의 컴퓨터를 공유 디스크 공간에 접속하게 만들어서, 원격 컴퓨터가 프로그램 코드 및 데이터에 대한 공유 디스크 공간을 참고한다. 또한, 기존 네트워크 및 원격 실행 툴을 이용함으로서, 프로그램 코드 및 데이터가 원격 컴퓨터의 사설 디스크에 복제될 수 있다는 것을 인식할 것이다. 그후, 원격 실행 유틸리티는 프로그램 코드 및 데이터의 새 위치에 작업자 컴퓨터를 향하게 할 수 있다. 마지막으로, 디스패치 소프트웨어는, 파일을 제거하고 원격 실행된 작업이 완료될 경우 파일을 제거하고 생성된 명령 구문을 표시하기 위해 명령 구문을 추가한다. 이 구문이 구성되면, 디스패처 루틴은 그 사본을 생성하고, 그 사본을 구성된 명령에 대한 호출과 함께 덮어쓴다. 이 과정을 설명하기 위해 슈도-코드가 사용된다.
디스패처 루틴의 제어 파일이 특정 과정이나 과정의 쌍이 동시에 실행될 수 있다고 표시할 경우, 기존 네트워크에 의해 처리될 수 있으면서 제어 파일에 의해 요구되는 바와 같이 여러 처리과정처럼 시작하기 위해 앞서 언급한 단계들을 반복한다. 한개 이상의 다른 처리과정이 반드시 시작하기 전에 한 과정이 반드시 종료되어야 한다는 것을 제어 파일이 표시하는 경우에, 디스패처 루틴은 작업 큐 내 많은 직렬이나 병렬 작업을 개시하기 전에 이러한 일련의 작업 완료를 대기한다.
F. 특별 경우 및 일반적 확장성
선호되는 실시예는 monkeyLoad(멍키로드)라 불리는 작업자 루틴의 특별한 경우를 포함한다. 본 시스템 및 방법의 틀 내에 생성될 수 있는 모든 다른 작업자 루틴처럼, 멍키로드는 펄 평가 코드 형태의 파일 헤더 분석 능력을 가진다. 멍키로드 루틴은 파일 헤더 정보를 취하고 SQL(구조화된 질의 언어) 문장 세트를 생성하여 파일 헤더에 이어지는 데이터를 데이터베이스에 넣는다. 펄 언어용 표준화 및 가용 데이터베이스 인터페이스 세트를 통해, 이 루틴은 출력 파일 내 데이터 라인을 판독할 수 있고, 이들을 행으로 데이터베이스에 삽입할 수 있다. 오라클의 SQL 로더 루틴(aqlldr)처럼 데이터베이스 루틴을 가진 보다 효율적인 상호작용을 할 수 있는, 또다른 루틴에 대한 제어 파일을 생성하기 위해, 작업자 루틴이 파일 헤더를 판독하고 평가할 수 있다. 이 루틴의 특별한 요구사항이란, 데이터베이스 열이 파일 헤더에 제공된 열 라벨과 일치한다는 점이다. 이 세부사항은, 사용자가 임의 데이터 열 라벨을 명시할 수 있고 사용자가 생성하는 초기 제어 파일 내에서, 처리과정의 시작때부터 수반되었다. 어떤 주어진 작업자 루틴도 팡ㄹ 헤더 정보를 판독하고, 이를 평가하며, 출력에 따라 최소 숫자의 키를 가지는 또다른 파일 헤더를 생성함으로서 기능한다.
작업자 루틴의 한가지 특별한 사례는 본 시스템 및 방법이 일반화될 수 있다는 것을 보여준다. 작업자 루틴이 파일 헤더 정보를 분석할 수 있기 때문에, 작업자 루틴은 여러 유용한 것들을 달성할 수 있다. 독자적 사례를 카운팅하라고 명령받는 대신에, 작업자 루틴은 덧셈, 뺄셈, 곱셈, 나눗셈, 표준 편차 계산, 등등을 위해 기록될 수 있다. 어떤 이러한 루틴도 필요로하는 독자적 기능은 최소 숫자의 키로 해시 테이블 내로 변환시키는 실행코드로 데이터 파일 내 헤더 정보를 평가하는 능력이다.

Claims (80)

  1. 네트워크 상에서 작업들을 실행하는 방법으로서,
    - 범용 데이터로부터 적어도 한개의 서브그룹 데이터를 생성하고,
    - 실행 코드를 내장한 헤더로 상기 서브그룹 데이터를 식별하며,
    - 상기 서브그룹 데이터를 가용 프로세서로 전달하고, 그리고
    - 헤더 내 실행 코드에 내장된 명령과 서브그룹 데이터를 이용하여 결과 데이터를 얻기 위해 가용 프로세서로 작업을 실행하는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서, 각 데이터 서브그룹에 대한 결과 데이터 파일을 추가적 처리를 위해 메인 프로세서로 되돌려보내는 과정을 추가로 포함하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 돌아온 결과 데이터가 재조합되어, 수많은 개별 결과 데이터 파일로 구성되는 단일 결과 데이터 파일을 형성하는 것을 특징으로 하는 방법.
  4. 데이터를 사전처리하기 위한 방법으로서,
    - 입력 데이터 파일을 판독하고,
    - 입력 데이터를 한개의 데이터 구조물로 위치시키며,
    - 상기 데이터 구조물로부터 데이터 요소들을 선택하고,
    - 선택된 데이터 요소들을 한 파일로 설명하는 파일 헤더를 출력하며, 그리고
    - 선택된 데이터 요소들을 파일로 출력하는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서, 데이터 구조물이 해시 테이블(hash table)인 것을 특징으로 하는 방법.
  6. 제 4 항에 있어서, 선택된 데이터 요소들이 해시 데이터처럼 프로그램 코드의 블록을 실행중에 평가함으로서 선정되는 것을 특징으로 하는 방법.
  7. 제 4 항에 있어서, 파일 헤더가 실행중에 평가될 수 있는 해시 테이블인 것을 특징으로 하는 방법.
  8. 데이터 추출을 위한 방법으로서,
    - 실행 코드를 내장한 파일 헤더를 판독하고,
    - 범용 데이터로부터 추출할 데이터를 결정하기 위해 상기 코드를 실행하며, 그리고
    - 데이터 구조물로부터 추출되는 데이터를 얻는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서, 추출된 데이터를 출력 파일에 로딩시키는 과정을 추가로 포함하는 것을 특징으로 하는 방법.
  10. 제 8 항에 있어서, 상기 데이터 구조물이 해시 테이블인 것을 특징으로 하는 방법.
  11. 데이터를 처리하기 위한 방법으로서,
    - 실행 코드를 내장한 파일 헤더를 판독하고,
    - 실행 코드를 실행시키며,
    - 실행된 코드로부터 원하는 연산을 결정하고, 그리고
    - 데이터에 대해 원하는 연산을 실행하는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서, 원하는 연산을 실행한 후 결과 데이터를 출력하는 과정을 추가로 포함하는 것을 특징으로 하는 방법.
  13. 제 11 항에 있어서, 상기 원하는 연산이 실행중에 이행되는 언어로 쓰여진것을 특징으로 하는 방법.
  14. 제 13 항에 있어서, 원하는 연산이 덧셈, 뺄셈, 곱셈, 나눗셈, 한 클래스 내 사례들의 전체 숫자 카운팅, 한 클래스의 독자적 사례들의 계수화, 표준편차같은 통계치 연산, 평균의 표준오차, 중간값, 산술평균, 분산, 공분산(covariance), 상관 계수, 그리고 차이의 비(odds ratio)의 그룹으로부터 선택된 한가지 연산인 것을 특징으로 하는 방법.
  15. 네트워크 상에 위치하는 중앙 처리 장치에 데이터와 작업을 디스패치하기 위한 방법으로서,
    - 파일 헤더에 놓인 코드를 실행하고,
    - 네트워크 상에서 중앙 처리 장치 중 한개 이상이 가용한 지를 결정하며, 그리고
    - 가용성을 바탕으로 작업을 중앙 처리 장치에 디스패치하는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서, 중앙 처리 장치의 가용성이 제어 파일을 읽어들임으로서 결정되는 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서, 제어 파일은 실행 중에 해시 테이블로 평가를 위해 포맷되는 것을 특징으로 하는 방법.
  18. 제 16 항에 있어서, 중앙 처리 장치의 상태를 표시하는 새 제어 파일을 다시 기록함으로서 제어 파일을 갱신하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  19. 제 16 항에 있어서,
    - 중앙 처리 장치에 의해 실행될 한개 이상의 명령을 조합하고, 그리고
    - 실행을 위해 중앙 처리 장치에 상기 한개 이상의 명령을 전송하는,
    이상의 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  20. 제 19 항에 있어서, 상기 한개 이상의 명령이 작업 식별을 위한 명칭 생성을 포함하는 것을 특징으로 하는 방법.
  21. 제 15 항에 있어서, 작업 상태를 표시하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  22. 제 21 항에 있어서, 작업 상태가 실행중이거나 종료의 둘 중 하나인 것을 특징으로 하는 방법.
  23. 제 15 항에 있어서, 모든 중앙 처리 장치가 사용중일 경우 일정 시간 주기 경과 후, 상기 한개 이상의 중앙 처리 장치가 가용한 지의 결정을 재시도하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  24. 제 23 항에 있어서, 시간 주기가 사용자에 의해 명시될 수 있는 것을 특징으로 하는 방법.
  25. 제 24 항에 있어서, 상기 시간 주기가 15분인 것을 특징으로 하는 방법.
  26. 데이터를 로딩하기 위한 방법으로서,
    - 실행 코드를 내장하는 파일 헤더를 판독하고,
    - 파일 헤더 정보를 얻기 위해 상기 코드를 실행시키며, 그리고
    - 파일 헤더 정보를 바탕으로 구조적 질의 언어(SQL) 문장을 생성하는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  27. 네트워크 상에서 작업을 실행하기 위한 방법으로서,
    - 범용 데이터로부터 한개 이상의 서브그룹 데이터를 생성하고,
    - 실행 코드를 내장한 헤더로 상기 서브그룹 데이터를 식별하며,
    - 상기 서브그룹 데이터를 가용 프로세서에 전달하고,
    - 헤더 내 실행 코드에 내장된 명령과 서브그룹 데이터를 이용하여 결과 데이터를 얻기 위해 가용 프로세서로 작업을 실행하며, 그리고
    - 결과 데이터를 메인 프로세서에 되돌려보내고, 이때 되돌려보낸 결과 데이터가 재조합되어 한개의 최종 결과를 형성하는,
    이상의 단계를 포함하는 것을 특징으로 하는 방법.
  28. 네트워크 상에서 작업을 실행하기 위한 방법으로서,
    - 입력 데이터 파일을 판독하고,
    - 입력 데이터를 데이터 구조물로 위치시키며,
    - 상기 데이터 구조물로부터 데이터 요소들을 선택하고,
    - 선택한 데이터 요소들을 설명하는 파일 헤더를 한 파일로 출력하며,
    - 선택한 데이터 요소들을 상기 파일로 출력하고,
    - 실행 코드를 내장한 파일 헤더를 판독하며, 그리고
    - 범용 데이터로부터 추출할 데이터를 결정하기 위해 상기 코드를 실행시키는,
    이상의 단계들을 포함하는 것을 특징으로 하는 방법.
  29. 제 28 항에 있어서, 추출된 데이터를 출력 파일로 로딩하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  30. 제 28 항에 있어서, 상기 데이터 구조물이 해시 테이블인 것을 특징으로 하는 방법.
  31. 네트워크 상에서 작업을 실행하기 위한 방법으로서,
    - 실행 코드를 내장한 파일 헤더를 판독하고,
    - 실행 코드를 실행시키며,
    - 실행된 코드로부터 원하는 연산을 결정하고,
    - 데이터에 대해 원하는 연산을 실행하며,
    - 연산 실행 후 결과 데이터를 출력하는,
    이상의 단계들을 포함하는 것을 특징으로 하는 방법.
  32. 제 31 항에 있어서, 상기 원하는 연산이 실행중에 이행되는 언어로 쓰여지는 것을 특징으로 하는 방법.
  33. 제 32 항에 있어서, 원하는 연산이 덧셈, 뺄셈, 곱셈, 나눗셈, 한 클래스 내 사례들의 전체 숫자 카운팅, 한 클래스의 독자적 사례들의 계수화, 표준편차같은 통계치 연산, 평균의 표준오차, 중간값, 산술평균, 분산, 공분산(covariance), 상관 계수, 그리고 차이의 비(odds ratio)의 그룹으로부터 선택된 한가지 연산인 것을 특징으로 하는 방법.
  34. 네트워크 상에 위치하는 중앙 처리 장치에 작업과 데이터를 디스패치하기 위한 방법으로서,
    - 파일 헤더에 위치한 코드를 실행하고,
    - 네트워크 상에서 적어도 한개의 중앙 처리 장치가 가용한 지를 결정하며,
    - 모든 중앙 처리 장치가 사용중일 경우 일정 시간 주기가 경과한 후, 한개 이상의 중앙 처리 장치가 가용한 지를 결정하는 것을 재시도하고,
    - 가용성을 바탕으로 중앙 처리 장치에 작업을 디스패치하며,
    - 중앙 처리 장치에 의해 실행될 한개 이상의 명령을 조합하고, 이때 한개 이상의 명령이란 작업 식별을 위한 명칭 생성 과정을 포함하는,
    이상의 단계들을 포함하는 것을 특징으로 하는 방법.
  35. 제 34 항에 있어서, 제어 파일을 판독함으로서 중앙 처리 장치의 가용성이 결정되는 것을 특징으로 하는 방법.
  36. 제 35 항에 있어서, 제어 파일의 갱신 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  37. 제 34 항에 있어서, 작업 상태 표시 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  38. 제 37 항에 있어서, 작업 상태가 실행중이거나 종료됨의 둘 중 하나인 것을특징으로 하는 방법.
  39. 제 34 항에 있어서, 상기 시간 주기가 사용자에 의해 결정될 수 있는 것을 특징으로 하는 방법.
  40. 제 39 항에 있어서, 상기 시간 주기가 15분인 것을 특징으로 하는 방법.
  41. 네트워크 상에서 작업을 실행하기 위한 시스템으로서,
    - 범용 데이터로부터 한개 이상의 서브그룹 데이터를 생성하기 위한 데이터 사전처리 루틴,
    - 상기 서브그룹 데이터를 식별하는 실행 코드를 내장한 데이터 헤더, 그리고
    - 가용한 프로세서에 상기 서브그룹 데이터를 전송하기 위한 디스패치 루틴
    을 포함하고, 이때 가용한 프로세서는 헤더 내 실행 코드에 내장된 명령 및 서브그룹 데이터를 이용하여 결과 데이터를 얻는 것을 실행하는 것을 특징으로 하는 시스템.
  42. 제 41 항에 있어서, 각각의 데이터 서브그룹에 대한 결과 데이터를 조합하기 위한 메인 프로세서를 추가로 포함하는 시스템.
  43. 제 42 항에 있어서, 한개의 최종 결과 형성을 위해 결과 데이터를 재구성하기 위한 데이터 재구성 루틴을 추가로 포함하는 것을 특징으로 하는 시스템.
  44. 데이터 사전처리를 위한 시스템으로서,
    - 입력 데이터 파일을 판독하기 위한 프로세서, 그리고
    - 입력 데이터를 한개의 데이터 구조물에 위치시키고, 데이터 구조물로부터 데이터 요소들을 선택하며, 선택한 데이터 요소들을 설명하는 파일 헤더를 한 파일로 출력하고, 그리고 선택한 데이터 요소들을 상기 파일로 출력하기 위한 사전처리 루틴
    을 포함하는 것을 특징으로 하는 시스템.
  45. 제 44 항에 있어서, 데이터 구조물이 해시 테이블인 것을 특징으로 하는 시스템.
  46. 제 45 항에 있어서, 선택한 데이터 요소들이 해시 테이블처럼 프로그램 코드의 블록을 평가함으로서 선정되는 것을 특징으로 하는 시스템.
  47. 제 41 항에 있어서, 파일 헤더가, 실행중에 평가될 수 있는 해시 테이블인 것을 특징으로 하는 시스템.
  48. 데이터 추출을 위한 시스템으로서,
    - 범용 데이터로부터 추출할 데이터를 결정하기 위해 프로세서가 실행 코드를 실행할 때 실행 코드를 내장한 파일 헤더를 판독하기 위한 프로세서, 그리고
    - 데이터 구조물로부터 추출될 데이터를 얻기 위한 데이터 그래버 루틴
    을 포함하는 것을 특징으로 하는 시스템.
  49. 제 48 항에 있어서, 추출된 데이터를 출력 파일로 로딩하기 위해 디스패치 루틴을 추가로 포함하는 것을 특징으로 하는 시스템.
  50. 제 48 항에 있어서, 데이터 구조물이 해시 테이블인 것을 특징으로 하는 시스템.
  51. 데이터를 처리하기 위한 시스템으로서,
    - 실행 코드를 내장한 파일 헤더를 판독하기 위한 프로세서, 그리고
    - 실행 코드를 실행하기 위해 해역된 언어를 지원하는 운영체제
    를 포함하고, 이때 프로세서는 실행 코드로부터 원하는 연산을 결정하고 데이터에 대해 원하는 연산을 실행하는 것을 특징으로 하는 시스템.
  52. 제 51 항에 있어서, 프로세서는 원하는 연산을 실행한 후 결과 데이터를 출력하는 것을 특징으로 하는 시스템.
  53. 제 51 항에 있어서, 원하는 연산이, 실행 중에 시행되는 언어로 쓰여지는 것을 특징으로 하는 시스템.
  54. 제 53 항에 있어서, 원하는 연산이 덧셈, 뺄셈, 곱셈, 나눗셈, 한 클래스 내 사례들의 전체 숫자 카운팅, 한 클래스의 독자적 사례들의 계수화, 표준편차같은 통계치 연산, 평균의 표준오차, 중간값, 산술평균, 분산, 공분산(covariance), 상관 계수, 그리고 차이의 비(odds ratio)의 그룹으로부터 선택된 한가지 연산인 것을 특징으로 하는 시스템.
  55. 네트워크 상에 위치하는 중앙 처리 장치에 작업 및 데이터를 디스패치 하기 위한 시스템으로서,
    - 파일 헤더에 위치한 실행 코드에 대한 해역 언어를 지원하는 운영 체제,
    - 네트워크 상에서 가용한 한개 이상의 중앙 처리 장치를 결정하여 가용성을 바탕으로 중앙 처리 장치에 작업을 디스패치하기 위한 디스패치 루틴
    을 포함하는 것을 특징으로 하는 시스템.
  56. 제 55 항에 있어서, 제어 파일을 판독함으로서 중앙 처리 장치의 가용성이 결정되는 것을 특징으로 하는 시스템.
  57. 제 56 항에 있어서, 제어 파일이, 실행중에 해시 테이블같이 평가를 위해 포맷되는 것을 특징으로 하는 시스템.
  58. 제 56 항에 있어서, 디스패치 루틴이 중앙 처리 장치의 상태를 표시하는 새 제어 파일을 다시 기록함으로서 제어 파일을 갱신하는 것을 특징으로 하는 시스템.
  59. 제 55 항에 있어서, 디스패치 루틴은 중앙 처리 장치에 의해 실행될 한개 이상의 명령을 조합하고, 그리고 시행을 위해 중앙 처리 장치에 상기 한개 이상의 명령을 전송하는 것을 특징으로 하는 시스템.
  60. 제 59 항에 있어서, 명령은 작업 식별을 위한 명칭 생성을 포함하는 것을 특징으로 하는 시스템.
  61. 제 55 항에 있어서, 디스패치 루틴이 작업 상태를 표시하는 것을 특징으로 하는 시스템.
  62. 제 61 항에 있어서, 작업 상태가 실행 중이거나 종료 상태 중 하나인 것을 특징으로 하는 시스템.
  63. 제 55 항에 있어서, 모든 중앙 처리 장치가 사용중일 경우 일정 시간 주기가경과한 후, 한개 이상의 중앙 처리 장치의 가용성을 결정하고자 디스패치 루틴이 재시도하는 것을 특징으로 하는 시스템.
  64. 제 63 항에 있어서, 시간 주기가 사용자에 의해 결정될 수 있는 것을 특징으로 하는 시스템.
  65. 제 64 항에 있어서, 상기 시간 주기가 15분인 것을 특징으로 하는 시스템.
  66. 데이터를 로딩하기 위한 시스템으로서,
    - 실행 코드를 내장한 파일 헤더를 판독하고 파일 헤더 정보를 얻기 위해 코드를 실행하기 위한 프로세서, 그리고
    - 파일 헤더 정보를 바탕으로 구조화된 질의 언어(SQL)를 생성하기 위한 사전처리 루틴
    을 포함하는 것을 특징으로 하는 시스템.
  67. 네트워크 상에서 작업을 실행하기 위한 시스템으로서,
    - 범용 데이터로부터 한개 이상의 서브그룹 데이터를 생성하기 위한 사전처리 루틴,
    - 상기 서브그룹 데이터를 식별하는 실행 코드를 내장한 데이터 헤더,
    - 헤더 내 실행 코드에 내장된 명령과 서브그룹 데이터를 이용하여 결과 데이터를 얻는 것을 가용 프로세서가 실행할 때, 가용 프로세서에 서브그룹 데이터를 전송하기 위한 디스패치 루틴, 그리고
    - 되돌아온 결과 데이터를 조합하기 위한 메인 프로세서
    를 포함하고, 이때 되돌아온 결과 데이터는 한가지 결과를 얻기 위해 재구성되는 것을 특징으로 하는 시스템.
  68. 네트워크 상에서 작업을 실행하기 위한 시스템으로서,
    - 입력 데이터 파일을 판독하기 위한 프로세서,
    - 입력 데이터를 한개의 데이터 구조물로 위치시키고, 상기 데이터 구조물로부터 데이터 요소들을 선택하며, 선택한 데이터 요소들을 설명하는 파일 헤더를 한 파일로 출력하고, 그리고 선택한 데이터 요소들을 상기 파일로 출력하기 위한 사전처리 루틴, 그리고
    - 표(table)로부터 추출될 데이터를 얻기 위한 데이터 그래버 루틴
    을 포함하며, 이때 상기 프로세서는 실행 코드를 내장한 파일 헤더를 판독하고, 프로세서는 범용 데이터로부터 추출할 데이터를 결정하기 위해 상기 코드를 실행하는 것을 특징으로 하는 시스템.
  69. 제 68 항에 있어서, 추출된 데이터를 출력 파일로 로딩하기 위해 디스패치 루틴을 추가로 포함하는 것을 특징으로 하는 시스템.
  70. 제 68 항에 있어서, 데이터 구조물이 해시 테이블인 것을 특징으로 하는 시스템.
  71. 네트워크 상에서 작업을 실행하기 위한 시스템으로서,
    - 실행 코드를 내장한 파일 헤더를 판독하기 위한 프로세서, 그리고
    - 실행 코드의 실행을 위해 해역된 언어를 지원하는 운영 체제
    를 포함하고, 이때 프로세서는 실행된 코드로부터 원하는 연산을 결정하고 데이터에 대하여 원하는 연산을 실행하며, 프로세서는 상기 연산을 실행한 후 결과 데이터를 출력하는 것을 특징으로 하는 시스템.
  72. 제 71 항에 있어서, 원하는 연산이, 실행 중에 시행되는 언어로 쓰여지는 것을 특징으로 하는 시스템.
  73. 제 72 항에 있어서, 원하는 연산이 덧셈, 뺄셈, 곱셈, 나눗셈, 한 클래스 내 사례들의 전체 숫자 카운팅, 한 클래스의 독자적 사례들의 계수화, 표준편차같은 통계치 연산, 평균의 표준오차, 중간값, 산술평균, 분산, 공분산(covariance), 상관 계수, 그리고 차이의 비(odds ratio)의 그룹으로부터 선택된 한가지 연산인 것을 특징으로 하는 시스템.
  74. 네트워크 상에 위치하는 중앙 처리 장치에 작업 및 데이터를 디스패치하기위한 시스템으로서,
    - 파일 헤더에 위치한 실행 코드에 대한 해역 언어를 지원하는 운영 체제, 그리고
    - 네트워크 상에서 가용한 한개 이상의 중앙 처리 장치를 결정하고 가용성을 바탕으로 중앙 처리 장치에 작업을 디스패치하기 위한 디스패치 루틴
    을 포함하고, 이때 모든 중앙 처리 장치가 사용중일 경우 일정 시간 주기가 경과한 후, 디스패치 루틴이 한개 이상의 상기 중앙 처리 장치의 가용성 결정을 재시도하는 것을 특징으로 하는 시스템.
  75. 제 74 항에 있어서, 중앙 처리 장치의 가용성이 제어 파일을 판독함으로서 결정되는 것을 특징으로 하는 시스템.
  76. 제 75 항에 있어서, 디스패치 루틴이 제어 파일을 갱신하는 것을 특징으로 하는 시스템.
  77. 제 74 항에 있어서, 디스패치 루틴이 작업 상태를 표시하는 것을 특징으로 하는 시스템.
  78. 제 77 항에 있어서, 작업 상태가 실행 중이거나 종료 상태 중 하나인 것을 특징으로 하는 시스템.
  79. 제 74 항에 있어서, 상기 시간 주기가 사용자에 의해 결정될 수 있는 것을 특징으로 하는 시스템.
  80. 제 79 항에 있어서, 시간 주기가 15분인 것을 특징으로 하는 시스템.
KR10-2002-7010416A 2000-02-11 2001-02-06 네트워크 상에 분포된 데이터 처리 작업의 신속한 완료를 위한 시스템 및 방법 KR100502878B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/502,692 2000-02-11
US09/502,692 US6775831B1 (en) 2000-02-11 2000-02-11 System and method for rapid completion of data processing tasks distributed on a network

Publications (2)

Publication Number Publication Date
KR20020079849A true KR20020079849A (ko) 2002-10-19
KR100502878B1 KR100502878B1 (ko) 2005-07-21

Family

ID=23998951

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-7010416A KR100502878B1 (ko) 2000-02-11 2001-02-06 네트워크 상에 분포된 데이터 처리 작업의 신속한 완료를 위한 시스템 및 방법

Country Status (10)

Country Link
US (1) US6775831B1 (ko)
EP (1) EP1277108A4 (ko)
JP (1) JP2003523010A (ko)
KR (1) KR100502878B1 (ko)
CN (1) CN1262915C (ko)
AU (2) AU2001241453B2 (ko)
CA (1) CA2400216C (ko)
DE (1) DE10195549T1 (ko)
GB (1) GB2392997B (ko)
WO (1) WO2001059561A1 (ko)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233942B2 (en) * 2000-10-10 2007-06-19 Truelocal Inc. Method and apparatus for providing geographically authenticated electronic documents
US7685224B2 (en) * 2001-01-11 2010-03-23 Truelocal Inc. Method for providing an attribute bounded network of computers
US20020174244A1 (en) * 2001-05-18 2002-11-21 Telgen Corporation System and method for coordinating, distributing and processing of data
US8024395B1 (en) 2001-09-04 2011-09-20 Gary Odom Distributed processing multiple tier task allocation
US8590013B2 (en) 2002-02-25 2013-11-19 C. S. Lee Crawford Method of managing and communicating data pertaining to software applications for processor-based devices comprising wireless communication circuitry
US7010596B2 (en) * 2002-06-28 2006-03-07 International Business Machines Corporation System and method for the allocation of grid computing to network workstations
US7127446B1 (en) * 2002-10-30 2006-10-24 Advanced Micro Devices, Inc. File system based task queue management
US7243098B2 (en) * 2002-12-19 2007-07-10 International Business Machines Corporation Method, system, and program for optimizing aggregate processing
US20050149507A1 (en) * 2003-02-05 2005-07-07 Nye Timothy G. Systems and methods for identifying an internet resource address
US7953667B1 (en) * 2003-02-07 2011-05-31 Britesmart Corp. Method and system to detect invalid and fraudulent impressions and clicks in web-based advertisement systems
US7325002B2 (en) * 2003-04-04 2008-01-29 Juniper Networks, Inc. Detection of network security breaches based on analysis of network record logs
US7613687B2 (en) * 2003-05-30 2009-11-03 Truelocal Inc. Systems and methods for enhancing web-based searching
US20060095483A1 (en) * 2004-04-23 2006-05-04 Waratek Pty Limited Modified computer architecture with finalization of objects
US7849452B2 (en) * 2004-04-23 2010-12-07 Waratek Pty Ltd. Modification of computer applications at load time for distributed execution
US20050262513A1 (en) * 2004-04-23 2005-11-24 Waratek Pty Limited Modified computer architecture with initialization of objects
US7844665B2 (en) * 2004-04-23 2010-11-30 Waratek Pty Ltd. Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers
US20050257219A1 (en) * 2004-04-23 2005-11-17 Holt John M Multiple computer architecture with replicated memory fields
US7707179B2 (en) * 2004-04-23 2010-04-27 Waratek Pty Limited Multiple computer architecture with synchronization
WO2006110937A1 (en) * 2005-04-21 2006-10-26 Waratek Pty Limited Modified computer architecture with coordinated objects
US7516152B2 (en) * 2005-07-05 2009-04-07 International Business Machines Corporation System and method for generating and selecting data mining models for data mining applications
US7512626B2 (en) * 2005-07-05 2009-03-31 International Business Machines Corporation System and method for selecting a data mining modeling algorithm for data mining applications
US8805339B2 (en) 2005-09-14 2014-08-12 Millennial Media, Inc. Categorization of a mobile user profile based on browse and viewing behavior
US7676394B2 (en) 2005-09-14 2010-03-09 Jumptap, Inc. Dynamic bidding and expected value
US8229914B2 (en) 2005-09-14 2012-07-24 Jumptap, Inc. Mobile content spidering and compatibility determination
US9703892B2 (en) 2005-09-14 2017-07-11 Millennial Media Llc Predictive text completion for a mobile communication facility
US8615719B2 (en) 2005-09-14 2013-12-24 Jumptap, Inc. Managing sponsored content for delivery to mobile communication facilities
US7752209B2 (en) 2005-09-14 2010-07-06 Jumptap, Inc. Presenting sponsored content on a mobile communication facility
US8666376B2 (en) 2005-09-14 2014-03-04 Millennial Media Location based mobile shopping affinity program
US8364540B2 (en) 2005-09-14 2013-01-29 Jumptap, Inc. Contextual targeting of content using a monetization platform
US8238888B2 (en) 2006-09-13 2012-08-07 Jumptap, Inc. Methods and systems for mobile coupon placement
US8503995B2 (en) 2005-09-14 2013-08-06 Jumptap, Inc. Mobile dynamic advertisement creation and placement
US8209344B2 (en) 2005-09-14 2012-06-26 Jumptap, Inc. Embedding sponsored content in mobile applications
US7912458B2 (en) 2005-09-14 2011-03-22 Jumptap, Inc. Interaction analysis and prioritization of mobile content
US7702318B2 (en) 2005-09-14 2010-04-20 Jumptap, Inc. Presentation of sponsored content based on mobile transaction event
US7860871B2 (en) 2005-09-14 2010-12-28 Jumptap, Inc. User history influenced search results
US7603360B2 (en) 2005-09-14 2009-10-13 Jumptap, Inc. Location influenced search results
US9471925B2 (en) 2005-09-14 2016-10-18 Millennial Media Llc Increasing mobile interactivity
US8819659B2 (en) 2005-09-14 2014-08-26 Millennial Media, Inc. Mobile search service instant activation
US8156128B2 (en) 2005-09-14 2012-04-10 Jumptap, Inc. Contextual mobile content placement on a mobile communication facility
US7660581B2 (en) 2005-09-14 2010-02-09 Jumptap, Inc. Managing sponsored content based on usage history
US8103545B2 (en) 2005-09-14 2012-01-24 Jumptap, Inc. Managing payment for sponsored content presented to mobile communication facilities
US8989718B2 (en) 2005-09-14 2015-03-24 Millennial Media, Inc. Idle screen advertising
US8364521B2 (en) 2005-09-14 2013-01-29 Jumptap, Inc. Rendering targeted advertisement on mobile communication facilities
US7769764B2 (en) 2005-09-14 2010-08-03 Jumptap, Inc. Mobile advertisement syndication
US8027879B2 (en) 2005-11-05 2011-09-27 Jumptap, Inc. Exclusivity bidding for mobile sponsored content
US7577665B2 (en) 2005-09-14 2009-08-18 Jumptap, Inc. User characteristic influenced search results
US8290810B2 (en) 2005-09-14 2012-10-16 Jumptap, Inc. Realtime surveying within mobile sponsored content
US20110313853A1 (en) 2005-09-14 2011-12-22 Jorey Ramer System for targeting advertising content to a plurality of mobile communication facilities
US8131271B2 (en) 2005-11-05 2012-03-06 Jumptap, Inc. Categorization of a mobile user profile based on browse behavior
US10038756B2 (en) 2005-09-14 2018-07-31 Millenial Media LLC Managing sponsored content based on device characteristics
US8688671B2 (en) 2005-09-14 2014-04-01 Millennial Media Managing sponsored content based on geographic region
US9058406B2 (en) 2005-09-14 2015-06-16 Millennial Media, Inc. Management of multiple advertising inventories using a monetization platform
US8195133B2 (en) 2005-09-14 2012-06-05 Jumptap, Inc. Mobile dynamic advertisement creation and placement
US9076175B2 (en) 2005-09-14 2015-07-07 Millennial Media, Inc. Mobile comparison shopping
US10592930B2 (en) 2005-09-14 2020-03-17 Millenial Media, LLC Syndication of a behavioral profile using a monetization platform
US9201979B2 (en) 2005-09-14 2015-12-01 Millennial Media, Inc. Syndication of a behavioral profile associated with an availability condition using a monetization platform
US7548915B2 (en) 2005-09-14 2009-06-16 Jorey Ramer Contextual mobile content placement on a mobile communication facility
US8832100B2 (en) 2005-09-14 2014-09-09 Millennial Media, Inc. User transaction history influenced search results
US8660891B2 (en) 2005-11-01 2014-02-25 Millennial Media Interactive mobile advertisement banners
US10911894B2 (en) 2005-09-14 2021-02-02 Verizon Media Inc. Use of dynamic content generation parameters based on previous performance of those parameters
US8812526B2 (en) 2005-09-14 2014-08-19 Millennial Media, Inc. Mobile content cross-inventory yield optimization
US8311888B2 (en) 2005-09-14 2012-11-13 Jumptap, Inc. Revenue models associated with syndication of a behavioral profile using a monetization platform
US8515400B2 (en) 2005-09-14 2013-08-20 Jumptap, Inc. System for targeting advertising content to a plurality of mobile communication facilities
US8302030B2 (en) 2005-09-14 2012-10-30 Jumptap, Inc. Management of multiple advertising inventories using a monetization platform
US7761670B2 (en) * 2005-10-25 2010-07-20 Waratek Pty Limited Modified machine architecture with advanced synchronization
US7581069B2 (en) * 2005-10-25 2009-08-25 Waratek Pty Ltd. Multiple computer system with enhanced memory clean up
US8015236B2 (en) * 2005-10-25 2011-09-06 Waratek Pty. Ltd. Replication of objects having non-primitive fields, especially addresses
US7958322B2 (en) * 2005-10-25 2011-06-07 Waratek Pty Ltd Multiple machine architecture with overhead reduction
US7849369B2 (en) * 2005-10-25 2010-12-07 Waratek Pty Ltd. Failure resistant multiple computer system and method
US7660960B2 (en) * 2005-10-25 2010-02-09 Waratek Pty, Ltd. Modified machine architecture with partial memory updating
US20070100828A1 (en) * 2005-10-25 2007-05-03 Holt John M Modified machine architecture with machine redundancy
US8175585B2 (en) 2005-11-05 2012-05-08 Jumptap, Inc. System for targeting advertising content to a plurality of mobile communication facilities
US8571999B2 (en) 2005-11-14 2013-10-29 C. S. Lee Crawford Method of conducting operations for a social network application including activity list generation
JP4402051B2 (ja) * 2006-01-16 2010-01-20 株式会社ソニー・コンピュータエンタテインメント データ処理システムおよびデータ処理方法
US7682961B2 (en) * 2006-06-08 2010-03-23 International Business Machines Corporation Methods of forming solder connections and structure thereof
US20080126506A1 (en) * 2006-10-05 2008-05-29 Holt John M Multiple computer system with redundancy architecture
WO2008040083A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Adding one or more computers to a multiple computer system
JP5318768B2 (ja) * 2006-10-05 2013-10-16 ワラテック プロプライエタリー リミテッド 高度な競合検出
US20080133691A1 (en) * 2006-10-05 2008-06-05 Holt John M Contention resolution with echo cancellation
US20080120478A1 (en) * 2006-10-05 2008-05-22 Holt John M Advanced synchronization and contention resolution
WO2008040066A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Redundant multiple computer architecture
WO2008040082A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Multiple computer system with dual mode redundancy architecture
WO2008040085A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Network protocol for network communications
US20080155127A1 (en) * 2006-10-05 2008-06-26 Holt John M Multi-path switching networks
WO2008040071A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention detection
US20080130652A1 (en) * 2006-10-05 2008-06-05 Holt John M Multiple communication networks for multiple computers
US20080134189A1 (en) * 2006-10-05 2008-06-05 Holt John M Job scheduling amongst multiple computers
US20080140975A1 (en) * 2006-10-05 2008-06-12 Holt John M Contention detection with data consolidation
US7949837B2 (en) * 2006-10-05 2011-05-24 Waratek Pty Ltd. Contention detection and resolution
US20080130631A1 (en) * 2006-10-05 2008-06-05 Holt John M Contention detection with modified message format
US20080140970A1 (en) * 2006-10-05 2008-06-12 Holt John M Advanced synchronization and contention resolution
US20100121935A1 (en) * 2006-10-05 2010-05-13 Holt John M Hybrid replicated shared memory
US20080140633A1 (en) * 2006-10-05 2008-06-12 Holt John M Synchronization with partial memory replication
WO2008040084A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Cyclic redundant multiple computer architecture
WO2008040080A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Silent memory reclamation
US20080114899A1 (en) * 2006-10-05 2008-05-15 Holt John M Switch protocol for network communications
US7852845B2 (en) * 2006-10-05 2010-12-14 Waratek Pty Ltd. Asynchronous data transmission
US20080151902A1 (en) * 2006-10-05 2008-06-26 Holt John M Multiple network connections for multiple computers
WO2008040069A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Hybrid replicated shared memory
US20080250221A1 (en) * 2006-10-09 2008-10-09 Holt John M Contention detection with data consolidation
US8316190B2 (en) * 2007-04-06 2012-11-20 Waratek Pty. Ltd. Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping
US20080277314A1 (en) * 2007-05-08 2008-11-13 Halsey Richard B Olefin production utilizing whole crude oil/condensate feedstock and hydrotreating
GB0714394D0 (en) * 2007-07-24 2007-09-05 Keycorp Ltd Graphic user interface parsing
US8682875B2 (en) * 2007-10-24 2014-03-25 International Business Machines Corporation Database statistics for optimization of database queries containing user-defined functions
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US9253053B2 (en) * 2012-10-11 2016-02-02 International Business Machines Corporation Transparently enforcing policies in hadoop-style processing infrastructures
US10558581B1 (en) * 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
US9448742B2 (en) * 2014-03-27 2016-09-20 Western Digital Technologies, Inc. Communication between a host and a secondary storage device
CN107133086B (zh) 2016-02-29 2020-09-04 阿里巴巴集团控股有限公司 基于分布式系统的任务处理方法、装置和系统
CN113660530B (zh) * 2021-07-27 2024-03-19 中央广播电视总台 节目流数据抓取方法、装置、计算机设备及可读存储介质

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3913070A (en) 1973-02-20 1975-10-14 Memorex Corp Multi-processor data processing system
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US5146559A (en) * 1986-09-29 1992-09-08 Hitachi, Ltd. System for recognizing program constitution within a distributed processing system by collecting constitution messages generated by different processors
CA1322422C (en) * 1988-07-18 1993-09-21 James P. Emmond Single-keyed indexed file for tp queue repository
US5025369A (en) * 1988-08-25 1991-06-18 David Schwartz Enterprises, Inc. Computer system
JP2785455B2 (ja) * 1990-07-03 1998-08-13 株式会社日立製作所 コンピュータの制御命令実行方法
JP3200932B2 (ja) * 1992-03-24 2001-08-20 株式会社日立製作所 電子対話システム
WO1993020511A1 (en) * 1992-03-31 1993-10-14 Aggregate Computing, Inc. An integrated remote execution system for a heterogenous computer network environment
JPH0695986A (ja) * 1992-06-19 1994-04-08 Westinghouse Electric Corp <We> リアルタイムデータ・イメージングネットワークシステム及びその操作方法
US5495618A (en) * 1992-08-26 1996-02-27 Eastman Kodak Company System for augmenting two dimensional data sets in a two dimensional parallel computer system
JP3003440B2 (ja) 1993-01-19 2000-01-31 株式会社日立製作所 負荷分散制御方法および分散処理システム
US5995996A (en) 1993-06-15 1999-11-30 Xerox Corporation Pipelined image processing system for a single application environment
US5394394A (en) * 1993-06-24 1995-02-28 Bolt Beranek And Newman Inc. Message header classifier
EP0694838A1 (en) * 1994-07-25 1996-01-31 International Business Machines Corporation Step level recovery
US5687372A (en) * 1995-06-07 1997-11-11 Tandem Computers, Inc. Customer information control system and method in a loosely coupled parallel processing environment
US5794210A (en) 1995-12-11 1998-08-11 Cybergold, Inc. Attention brokerage
US5778367A (en) 1995-12-14 1998-07-07 Network Engineering Software, Inc. Automated on-line information service and directory, particularly for the world wide web
WO1997022066A1 (en) 1995-12-15 1997-06-19 The Softpages, Inc. Method for computer aided advertisement
US5812793A (en) * 1996-06-26 1998-09-22 Microsoft Corporation System and method for asynchronous store and forward data replication
US5944779A (en) * 1996-07-02 1999-08-31 Compbionics, Inc. Cluster of workstations for solving compute-intensive applications by exchanging interim computation results using a two phase communication protocol
US5946463A (en) * 1996-07-22 1999-08-31 International Business Machines Corporation Method and system for automatically performing an operation on multiple computer systems within a cluster
US5862223A (en) 1996-07-24 1999-01-19 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically-assisted commercial network system designed to facilitate and support expert-based commerce
US6285987B1 (en) 1997-01-22 2001-09-04 Engage, Inc. Internet advertising system
CA2209549C (en) * 1997-07-02 2000-05-02 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for loading data into a database in a multiprocessor environment
US6009455A (en) * 1998-04-20 1999-12-28 Doyle; John F. Distributed computation utilizing idle networked computers
US6185698B1 (en) * 1998-04-20 2001-02-06 Sun Microsystems, Incorporated Method and apparatus using ranking to select repair nodes in formation of a dynamic tree for multicast repair
US6151633A (en) * 1998-04-20 2000-11-21 Sun Microsystems, Inc. Method and apparatus for routing and congestion control in multicast networks
US6078866A (en) 1998-09-14 2000-06-20 Searchup, Inc. Internet site searching and listing service based on monetary ranking of site listings
US6336118B1 (en) * 1998-12-03 2002-01-01 International Business Machines Corporation Framework within a data processing system for manipulating program objects
US6292888B1 (en) * 1999-01-27 2001-09-18 Clearwater Networks, Inc. Register transfer unit for electronic processor
US6269373B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for persisting beans as container-managed fields
US6269361B1 (en) 1999-05-28 2001-07-31 Goto.Com System and method for influencing a position on a search result list generated by a computer network search engine
US20020004735A1 (en) 2000-01-18 2002-01-10 William Gross System and method for ranking items

Also Published As

Publication number Publication date
WO2001059561A1 (en) 2001-08-16
CA2400216A1 (en) 2001-08-16
AU4145301A (en) 2001-08-20
CA2400216C (en) 2012-08-28
KR100502878B1 (ko) 2005-07-21
WO2001059561A9 (en) 2002-02-07
AU2001241453B2 (en) 2004-10-14
CN1262915C (zh) 2006-07-05
US6775831B1 (en) 2004-08-10
DE10195549T1 (de) 2003-03-13
GB2392997B (en) 2005-03-30
EP1277108A4 (en) 2007-01-03
EP1277108A1 (en) 2003-01-22
JP2003523010A (ja) 2003-07-29
GB0219491D0 (en) 2002-10-02
GB2392997A (en) 2004-03-17
CN1422403A (zh) 2003-06-04

Similar Documents

Publication Publication Date Title
KR100502878B1 (ko) 네트워크 상에 분포된 데이터 처리 작업의 신속한 완료를 위한 시스템 및 방법
AU2001241453A1 (en) System and method for rapid completion of data processing tasks distributed on a network
US7996838B2 (en) System and program storage device for facilitating workload management in a computing environment
US6490585B1 (en) Cellular multiprocessor data warehouse
US6571215B1 (en) System and method for generating a schedule based on resource assignments
EP0547903B1 (en) Method and system for isolating data and information collection components from other components in a distributed environment
US7467371B1 (en) Binding for business workflow processes
US6889243B1 (en) Job scheduling analysis method and system using historical job execution data
EP0546663A1 (en) Computer system
JPH06202823A (ja) タイマを動的にタイムアウトさせる装置及び方法
US8214809B2 (en) Grid-enabled ANT compatible with both stand-alone and grid-based computing systems
CN1277387A (zh) 监视和处理数据处理系统中相关线程事件的方法和设备
JPH06502941A (ja) 異種オペレーティングシステムを有する高レベル仮想コンピュータのシステム
US6470346B2 (en) Remote computation framework
Morrison Data stream linkage mechanism
US6782535B1 (en) Dynamic queue width system and method
Ousterhout Partitioning and cooperation in a distributed multiprocessor operating system: Medusa
Smith Applying synthesis principles to create responsive software systems
Friedman et al. Windows 2000 performance guide
JP2001265726A (ja) コンピュータ作業負荷の高速リカバリおよび再配置を可能にする自動化アプリケーションおよび手順
Gray et al. Metacomputing with the IceT system
Team CondorR O Version 6.6. 11 Manual
Zimmerli Symbiotic computer system measurement and evaluation
Kozaczynski Categorization of business systems components
Lu et al. Correctness criteria for process migration

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
FPAY Annual fee payment

Payment date: 20130618

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150618

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160617

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 15