KR20160119070A - 데이터 처리 애플리케이션의 모드를 동적으로 결정하는 방법 - Google Patents

데이터 처리 애플리케이션의 모드를 동적으로 결정하는 방법 Download PDF

Info

Publication number
KR20160119070A
KR20160119070A KR1020167018782A KR20167018782A KR20160119070A KR 20160119070 A KR20160119070 A KR 20160119070A KR 1020167018782 A KR1020167018782 A KR 1020167018782A KR 20167018782 A KR20167018782 A KR 20167018782A KR 20160119070 A KR20160119070 A KR 20160119070A
Authority
KR
South Korea
Prior art keywords
data
mode
processing application
data processing
size
Prior art date
Application number
KR1020167018782A
Other languages
English (en)
Other versions
KR102307221B1 (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 KR20160119070A publication Critical patent/KR20160119070A/ko
Application granted granted Critical
Publication of KR102307221B1 publication Critical patent/KR102307221B1/ko

Links

Images

Classifications

    • G06F9/4436
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F17/30106
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 방법은 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 단계를 포함한다. 본 발명의 방법은 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 단계를 포함한다. 본 발명의 방법은 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하는 단계를 포함한다.

Description

데이터 처리 애플리케이션의 모드를 동적으로 결정하는 방법{DYNAMICALLY DETERMING A MODE OF A DATA PROCESSING APPLICATION}
관련 출원에 대한 상호참조
본 출원은 2013 년 12 월 13 일에 출원된 미국 가출원 번호 제 61/915,805 호에 대한 우선권을 주장하는데, 그 전체 내용은 본 명세서에 그 전체로서 원용에 의하여 본 명세서에 통합된다.
본 명세서는 데이터 처리 애플리케이션의 동작의 모드를 동적으로 결정하는 것에 관한 것이다.
복잡한 계산들은 흔히 방향성을 가지는 그래프("데이터흐름 그래프"라고 불림)를 통해 데이터 흐름으로 표현될 수 있는데, 계산의 컴포넌트는 그래프의 꼭지점들에 연관되고 컴포넌트들 사이의 데이터 흐름은 그래프의 링크(아크, 에지)에 대응한다. 컴포넌트는 데이터를 하나 이상의 입력 포트에서 수신하고, 데이터를 처리하며, 하나 이상의 출력 포트로부터 데이터를 제공하는 데이터 처리 컴포넌트 및 데이터 흐름의 소스 또는 싱크로서의 역할을 하는 데이터셋 컴포넌트를 포함할 수 있다.
일반적 양태에서, 본 발명의 방법은 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 단계를 포함한다. 본 발명의 방법은 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 단계를 포함한다. 본 발명의 방법은 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하는 단계를 포함한다.
실시예들은 후속하는 특성들 중 하나 이상을 포함할 수도 있다.
하나 이상의 실행중인 프로세스는, 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 컴파일되고 메모리에 로딩된다.
상기 하나 이상의 실행중인 프로세스는 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 대기 모드에 있다.
상기 방법은, 상기 제 2 모드가 선택되는 경우, 상기 데이터 처리 애플리케이션을 컴파일하고, 컴파일된 데이터 처리 애플리케이션을 메모리에 로딩하는 단계를 포함한다.
상기 하나 이상의 새로운 프로세스는, 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 컴파일되거나 메모리에 로딩되지 않는 프로세스를 포함한다.
상기 데이터의 세트와 연관된 특징은, 상기 데이터의 세트의 크기, 상기 데이터의 세트의 포맷, 또는 상기 데이터의 세트의 복잡도 중 하나 이상을 포함한다.
상기 제 1 모드와 제 2 모드 사이에서 선택하는 단계는, 상기 데이터의 세트의 크기가 임계 크기 이하인 경우 상기 제 1 모드를 선택하는 단계; 및 상기 데이터의 세트의 크기가 임계 크기를 초과하는 경우 상기 제 2 모드를 선택하는 단계를 포함한다.
몇 가지 경우들에서, 상기 임계 크기는 상기 데이터의 세트의 포맷에 기초하고, 적어도 두 개의 상이한 포맷들이 상이한 임계 크기와 각각 연관된다. 몇 가지 경우들에서, 상기 임계 크기는 상기 데이터의 세트와 연관된 처리 요구 조건에 기초하고, 적어도 두 개의 상이한 처리 요구 조건들이 상이한 임계 크기와 각각 연관된다. 몇 가지 경우들에서, 상기 임계 크기는 상기 데이터 처리 애플리케이션의 동작을 표시하는 이력 데이터에 기초한다. 몇 가지 경우들에서, 상기 방법은, 상기 제 1 모드에 따라서 실행되는 상기 데이터 처리 애플리케이션이 기준 속도보다 느리게 실행되면 상기 임계 크기를 감소시키고; 상기 제 2 모드에 따라서 실행되는 상기 데이터 처리 애플리케이션이 기준 속도보다 느리게 실행되면 상기 임계 크기를 증가시킴으로써, 상기 데이터 처리 애플리케이션의 실행 도중에 상기 임계 크기를 결정하는 단계를 포함한다.
상기 방법은, 상기 데이터의 세트의 크기를 결정하는 단계를 포함한다. 몇 가지 경우들에서, 상기 데이터의 세트는 파일을 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 파일의 크기를 결정하는 단계를 포함한다. 몇 가지 경우들에서, 상기 데이터의 세트는 데이터베이스에 저장된 데이터를 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 상기 데이터베이스에 질의하는 단계를 포함한다.
데이터의 세트와 연관된 특징들은, 상기 데이터의 세트와 연관된 처리 특징, 예컨대 데이터의 세트를 처리하도록 허용된 시간을 포함한다.
상기 제 1 모드에서, 상기 데이터 처리 애플리케이션의 컴포넌트는 상기 요청을 수신하기 이전에 기계 코드로 컴파일되고, 상기 제 2 모드에서, 상기 컴포넌트는 상기 요청을 수신한 이후에 기계 코드로 컴파일된다.
상기 제 1 모드에서, 하나 이상의 실행중인 프로세스는 순차적으로 실행되고, 상기 제 2 모드에서, 하나 이상의 새로운 프로세스 중 적어도 일부는 동시에 실행된다.
일반적인 양태에서, 소프트웨어는 컴퓨터-판독가능 매체에 저장되고, 상기 소프트웨어는 컴퓨팅 시스템으로 하여금: 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하고; 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하며; 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하도록 하는 명령을 포함한다.
일반적 양태에서, 컴퓨팅 시스템은, 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하고; 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하며; 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하도록 구성되는, 적어도 하나의 프로세서를 포함한다. 일 양태에서, 본 명세서에서 기술되는 방법에 의하여 수행되는 동작들은 컴퓨팅 시스템 및/또는 컴퓨터-판독가능 매체에 저장된 소프트웨어에 의하여 실행될 수 있다.
일반적 양태에서, 컴퓨팅 시스템은, 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 수단: 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 수단; 및 상기 데이터의 세트를 처리하도록 상기 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하는 수단을 포함한다.
일반적 양태에서, 본 발명의 방법은 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 단계; 데이터의 세트의 크기에 기초하여 상기 데이터 처리 애플리케이션의 동작의 여러 모드들 중 동작의 특정 모드를 식별하는 단계; 및 데이터 처리 애플리케이션을 동작의 특정 모드에 따라서 실행하여 데이터의 세트를 처리하는 단계를 포함한다.
실시예들은 후속하는 피쳐들 중 하나 이상을 포함할 수 있다.
동작의 특정 모드는 배치 처리 모드 또는 연속 처리 모드 중 하나를 선택하는 것을 포함한다. 동작의 특정 모드를 식별하는 단계는, 상기 데이터의 세트의 크기가 임계 크기를 초과하는 경우 배치 처리 모드를 선택하는 단계; 및 상기 데이터의 세트의 크기가 임계 크기 미만인 경우 연속 처리 모드를 선택하는 단계를 포함한다.
상기 방법은, 상기 데이터의 세트의 크기를 결정하는 단계를 포함한다. 상기 데이터의 세트는 파일을 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 파일의 크기를 결정하는 단계를 포함한다. 상기 데이터의 세트는 데이터베이스에 저장된 데이터를 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 상기 데이터베이스에 질의하는 단계를 포함한다.
동작의 특정 모드를 식별하는 단계는, 상기 데이터의 세트의 크기가 임계 크기를 초과하는지 여부를 결정하는 단계를 포함한다. 임계 크기는 데이터의 세트의 포맷 또는 데이터의 세트와 연관된 처리 요구 조건에 기초한다. 처리 요구 조건은 데이터의 세트를 처리하기 위해 허용된 시간을 포함한다. 상기 방법은 임계 크기를 결정하는 단계를 포함한다. 상기 방법은 상기 임계 크기를 상기 데이터 처리 애플리케이션의 동작을 표시하는 이력 데이터에 기초하여 결정하는 단계를 포함한다. 상기 방법은 임계 크기를 동적으로 결정하는 단계를 포함한다.
데이터 처리 애플리케이션은 적어도 하나의 계산 그래프를 포함한다. 상기 계산 그래프는 배치 처리 모드 또는 연속 처리 모드에서 실행될 수 있다.
양태들은 후속하는 장점들 중 하나 이상을 포함할 수 있다.
데이터 처리 애플리케이션 동작의 모드를 동적으로 결정하기 위한 접근 방법에 의하면, 단일 애플리케이션의 동작을 통해 탄력적인 방식으로 데이터의 큰 세트 및 데이터의 작은 세트 양자 모두를 효율적으로 처리할 수 있다. 예를 들면, 거의 모든 요청은 데이터의 작은 세트를 수반하고 요청이 데이터의 큰 세트를 수반하는 것이 드문 경우에, 양자 모두의 타입의 요청이 동일한 처리 프레임워크에 의하여 효율적으로 처리될 수 있다. 추가적으로, 데이터 처리 애플리케이션이 자신의 동작 모드와 무관하게 동일한 알고리즘과 동일한 코드를 사용하기 때문에, 데이터 처리 애플리케이션을 설계하고 편집하는 것이 단순화될 수 있고, 따라서 연구, 개발 또는 물류와 같은 환경에서 비용, 개발 노력, 그리고 고장 시간을 줄여 준다.
본 발명의 다른 특성들, 및 이점들은 후속하는 상세한 설명 및 청구항들로부터 명확하게 될 것이다.
도 1 은 데이터 처리 시스템의 블록도이다.
도 2 는 데이터 처리 애플리케이션에 대한 처리 프레임워크의 블록도이다.
도 3 은 룩업 테이블의 일 예이다.
도 4 는 흐름도이다.
도 5 는 처리 프레임워크의 블록도이다.
도 6a 는 데이터 처리 애플리케이션의 블록도이다.
도 6b 및 도 6c 는 도 6a 의 데이터 처리 애플리케이션의 일부의 스크린샷이다.
본 명세서에서, 데이터 처리 애플리케이션의 동작의 모드를 동적으로 결정하는 접근 방법을 기술한다. 데이터의 세트를 처리하도록 실행될 수 있는 데이터 처리 애플리케이션은, 처리될 데이터의 특징, 예컨대 데이터의 특성 및 데이터의 처리와 연관된 요구 조건에 따라 다수의 모드에서 실행될 수 있다. 실행의 모드는 데이터 처리 애플리케이션을 실행하고 있는 컴퓨팅 시스템과 연관된 동작 특성에 따라 달라질 수도 있다. 예를 들면, 데이터의 큰 세트를 처리하기 위하여 배치 처리 모드가 사용될 수 있고, 최소의 기동 시간을 가지는 연속 처리 모드는 데이터의 더 작은 세트를 처리하기 위하여 사용될 수 있다. 데이터 처리 애플리케이션의 동작의 모드는, 예를 들어 데이터 처리 애플리케이션에 의한 데이터의 세트를 처리하라는 요청이 수신될 때에 동적으로 선택될 수 있다.
도 1 은 데이터 처리 애플리케이션의 동작의 모드를 동적으로 결정하기 기법이 사용될 수 있는 데이터 처리 시스템(100)의 일 예를 도시한다. 시스템(100)은, 스토리지 디바이스와 같은 데이터의 하나 이상의 소스 또는 온라인 데이터 스트림으로의 접속을 포함할 수 있는 데이터 소스(102)를 포함하는데, 이들 각각은 데이터를 다양한 포맷(예를 들어, 데이터베이스 표, 스프레드쉬트 파일, 평텍스트(flat text) 파일, 또는 메인프레임 컴퓨터에 의하여 사용되는 네이티브 포맷) 중 임의의 것 내에 저장하거나 제공할 수 있다. 데이터는 물류(logistical) 데이터, 해석(analytic) 데이터 또는 머신 데이터일 수 있다. 실행 환경(104)은 전-처리 모듈(106)과 실행 모듈(112)을 포함한다. 실행 환경(104)은, 예를 들어 UNIX 운영 체제의 일 버전과 같은 적합한 운영 체제에 의해 제어되는 하나 이상의 범용 컴퓨터에 호스팅될 수 있다. 예를 들어, 실행 환경(104)은, 국지적이거나(예를 들어, SMP(symmetric multi-processing) 컴퓨터와 같은 다중프로세서 시스템), 또는 국지적으로 분산되거나(예를 들어, 클러스터로서 커플링되는 다중 프로세서이거나, 원격이거나, 원격으로 분산되거나(예를 들어, 근거리 네트워크(LAN) 및/또는 광역 네트워크(WAN)를 통해 커플링되는 다중 프로세서)), 또는 이들의 임의의 조합인, 다수의 중앙 처리 유닛(CPU) 또는 프로세서 코어를 사용하는 컴퓨터 시스템의 구성을 포함하는 다중-노드 병렬 컴퓨팅 환경을 포함할 수 있다.
데이터 소스(102)를 제공하는 스토리지 디바이스는, 예를 들어 실행 환경(104)을 호스팅하는 컴퓨터에 연결된 저장 매체(예를 들어, 하드 드라이브(108)에 저장되면서 실행 환경(104)에 국부적으로 속할 수도 있고, 또는 원격 접속(예를 들어, 클라우드 컴퓨팅 기반구조에 의하여 제공됨)을 거쳐 실행 환경(104)을 호스팅하는 컴퓨터와 통신하는 원격 시스템(예를 들어, 메인프레임 컴퓨터(110)에 호스팅되면서 실행 환경(104)에 대해 원격일 수도 있다.
전-처리 모듈(106)은 데이터 소스(102)로부터 데이터를 읽어들이고 실행되도록 데이터 처리 애플리케이션을 준비시킨다. 예를 들면, 전-처리 모듈(106)은 데이터 처리 애플리케이션을 컴파일할 수 있고, 컴파일된 데이터 처리 애플리케이션을 실행 환경(104)이 액세스가능한 데이터 저장 시스템(116)으로 및/또는 데이터 저장 시스템으로부터 저장 및/또는 로딩할 수 있으며, 실행되도록 데이터 처리 애플리케이션을 준비시키는 다른 태스크를 수행할 수 있다.
실행 모듈(112)은 전-처리 모듈(106)에 의하여 준비된 데이터 처리 애플리케이션을 실행하여 데이터의 세트를 처리하고, 처리 결과로서 출력 데이터(114)를 생성한다. 출력 데이터(114)는 실행 환경(104)이 액세스가능한 데이터 소스(102) 내에 또는 데이터 저장 시스템(116) 내에 저장되거나, 그렇지 않으면 사용될 수도 있다. 데이터 저장 시스템(116)도 역시, 개발자(120)가 실행 모듈(112)에 의하여 실행될 데이터 처리 애플리케이션을 설계하고 편집할 수 있는 개발 환경(118)에 의하여 액세스가능하다. 몇 가지 구현형태들에서, 개발 환경(118)은 애플리케이션을 꼭지점들 사이의 방향성 링크(작업 엘리먼트, 즉 데이터의 흐름을 나타냄)에 의하여 연결되는 꼭지점들(데이터 처리 컴포넌트 또는 데이터셋을 나타냄)을 포함하는 데이터흐름 그래프로서 개발하기 위한 시스템이다. 예를 들어, 이러한 환경은 발명의 명칭이 "Managing Parameters for Graph-Based Applications"인 미국 특허 공개 번호 제 2007/0011668 호에 더욱 상세하게 설명되며, 이것은 원용에 의해 본 명세서에 포함된다. 이러한 그래프-기초 계산을 실행하기 위한 시스템은 미국 특허 제 5,966,072 호인 "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"에서 설명되는데, 이것의 내용은 전체로서 원용에 의해 본 명세서에 포함된다. 본 시스템에 따라서 만들어진 데이터흐름 그래프는 정보를 프로세스들 사이에서 이동시키기 위하여, 그리고 그 프로세스에 대한 실행 순서를 규정하기 위하여, 정보를 그래프 컴포넌트에 의하여 표현되는 개개의 프로세스 내에 집어넣고 그리고 그 밖으로 끄집어내기 위한 방법을 제공한다. 이러한 시스템은 임의의 가능한 방법 중 인터프로세스 통신 방법을 선택하는 알고리즘을 포함한다(예를 들어, 그래프의 링크에 따르는 통신 경로는 TCP/IP 또는 UNIX 도메인 소켓을 사용할 수 있거나 공유 메모리를 사용하여 데이터를 프로세스들 사이에서 전달할 수 있음).
전-처리 모듈(106)은 데이터 소스(102)를 구현할 수 있는, 상이한 형태의 데이터베이스 시스템을 포함하는 다양한 타입의 시스템으로부터 데이터를 수신할 수 있다. 데이터는 널(null) 값을 포함하는 것도 가능하며 개별 필드("속성" 또는 "열"이라고도 불림)에 대한 값을 가지는 레코드로서 조직화될 수 있다. 우선 데이터를 데이터 소스로부터 독출하면, 실행 모듈(106)은 통상적으로 그 데이터 소스 내의 레코드에 대한 몇몇 초기 포맷 정보와 함께 시작한다. 또는 몇 몇 상황에서는, 데이터 소스의 레코드 구조는 처음에 공지되지 않을 수도 있고 대신에 데이터 소스 또는 데이터의 분석 이후에 결정될 수도 있다. 예를 들어, 레코드에 대한 초기 정보는 별개의 값을 나타내는 비트수, 레코드 내의 필드의 순서, 및 그 비트에 의하여 표현되는 값의 타입(예를 들어, 스트링, 부호/무부호 정수)을 포함할 수 있다.
도 2 를 참조하면, 몇 가지 예들에서, 실행 모듈(112)은 데이터 처리 애플리케이션(200)으로의 인터페이스의 역할을 하는 처리 프레임워크(10)를 실행한다. 데이터 처리 애플리케이션(200)은, 파일(202), 데이터베이스(204), 또는 다른 타입의 데이터 소스와 같은 데이터 소스로부터의 데이터를 처리하는 임의의 실행가능한 애플리케이션일 수 있다. 예를 들면, 데이터 처리 애플리케이션(200)은 전화기 트랜잭션 데이터를 기록하는 애플리케이션, 요청된 신용 카드 트랜잭션 데이터를 취출하는 애플리케이션, 또는 다른 타입의 애플리케이션일 수 있다. 몇 가지 경우들에서, 데이터 처리 애플리케이션(200)은 데이터흐름 그래프로서 구현될 수 있다. 처리 프레임워크(10)는 데이터 처리 애플리케이션(200)에 인터페이스할 수 있지만 특정한 데이터 처리 애플리케이션(200)과는 무관한(agnostic) 하나 이상의 계산 컴포넌트의 세트이다. 처리 프레임워크(10)는 재사용가능할 수 있다. 즉, 예를 들면 상이한 데이터 처리 애플리케이션(200)과 인터페이스하기 위하여 처리 프레임워크(10)의 동일한 컴포넌트가 사용될 수 있다.
몇 가지 구현형태들에서, 처리 프레임워크(10)는, 특정한 데이터베이스(204)로부터 특정한 파일(202) 또는 특정한 레코드와 같은 데이터의 특정 세트를 처리하라는 요청(208)을 수신하는 인터페이스 블록(206)을 포함한다. 이러한 요청(208)은 사람 또는 자동화된 컴퓨팅 시스템과 같은 요청기(210)에 의하여 전송될 수 있다. 몇 가지 경우들에서, 요청(208)은 처리되도록 대기중인 하나 이상의 요청을 저장하는 큐(209)로부터 수신될 수 있다. 요청(208)은 데이터의 세트에 대하여 실행될 작업의 타입(예를 들어, 데이터 처리 애플리케이션(200)의 식별자)에 대한 정보 및 데이터의 세트의 소스(예를 들어, 파일(202) 또는 데이터베이스(204)의 식별자)에 대한 정보를 포함할 수 있다.
몇 가지 예들에서, 처리될 데이터의 세트는 유입 피드(inbound feed)인데, 이것은 요청(208)이 데이터의 세트를 포함하거나 직접적으로 식별한다(예를 들어, 요청(208)은 파일(202)에 대한 경로 및 파일명을 포함할 수 있음)는 것을 의미한다. 유입 피드의 일 예는, 다수의 고객에 대한 신용 카드 활동을 표시하는 데이터를 포함하고 인증, 매핑, 및 데이터베이스 테이블로 로딩되도록 데이터 처리 애플리케이션(200)으로 제공되는, 요청(208)과 함께 제공되는 결제 파일이다. 몇 가지 예들에서, 처리될 데이터의 세트는 유출 피드(outbound feed)인데, 이것은 요청(208)이 데이터베이스(204)로부터 데이터 처리 애플리케이션(200)에 의하여 취출되는 데이터를 식별한다는 것을 의미한다. 예를 들면, 요청(208)은 데이터베이스(204)에 적용될 질의를 생성하기 위하여 데이터 처리 애플리케이션(200)에 의하여 생성되는 정보를 포함할 수 있다. 유출 피드의 하나의 예는, 10 월의 개인 신용 카드 거래 내역을 보려는 개인 신용 카드 소비자의 요청을 만족시키는 데이터의 세트이다. 유출 피드의 다른 예는, 2013 년 2사분기 동안의 쇼핑 월드 백화점(Shopping World department store)의 모든 판매 트랜잭션에 대한 자동화된 과금 시스템으로부터의 요청을 만족하는 데이터의 세트이다.
요청(208)에 응답하여 데이터의 세트를 처리하기 위하여, 데이터 처리 애플리케이션(200)은 다수의 동작의 모드 중 임의의 모드(예를 들어, 배치 모드(214) 또는 연속 모드(216))에서 실행될 수 있다. 처리 프레임워크(10)의 결정 블록(212)은 데이터의 특정 세트(예를 들어, 특정한 파일(202) 또는 데이터베이스(204)로부터의 데이터)를 처리하기 위하여 데이터 처리 애플리케이션(200)에 의하여 사용될 동작의 모드를 선택할 수 있다. 예를 들면, 결정 블록(212)은 데이터 처리 애플리케이션(200)의 동작의 모드를 하나 이상의 데이터의 세트의 특징에 기초하여 선택할 수 있다. 데이터의 세트의 특징은, 예를 들어 데이터의 세트의 특성 또는 데이터의 세트의 처리와 관련된 요구 조건을 포함할 수 있다. 데이터의 세트의 예시적인 특성은, 예를 들어 데이터의 세트의 크기(예를 들어, 데이터의 세트의 볼륨, 데이터의 세트 내의 레코드의 개수, 데이터의 세트의 복잡도, 등), 데이터의 세트의 포맷(예를 들어, 데이터베이스(204) 내의 파일(202)의 파일 포맷 또는 레코드의 레코드 포맷), 데이터의 세트의 복잡도(예를 들어, 데이터의 세트와 관련된 벡터 또는 서브벡터), 및/또는 데이터의 세트의 다른 특성을 포함한다. 예를 들면, 일 예에서, 데이터 처리 애플리케이션(200)은 배치 모드(214)에서 동작하여 큰 볼륨의 데이터를 처리하도록 동작할 수 있고, 연속 모드(216)에서 동작하여 작은 볼륨의 데이터를 처리하도록 동작할 수 있다. 데이터의 세트를 처리하는 것과 관련되는 하나의 예시적인 요구 조건은 데이터의 세트를 처리하는 데에 할당된 시간의 양을 포함한다. 몇 가지 예들에서, 결정 블록(212)은 데이터 처리 애플리케이션(200)의 동작의 모드를 데이터 처리 애플리케이션(200)을 실행하고 있는 컴퓨팅 시스템과 연관된 하나 이상의 동작 특성, 예컨대 시간 또는 요일, 시스템 용량(예를 들어, 실시간 용량, 예견된(forecasted) 용량, 또는 평균 용량), 또는 다른 동작 특성에 기초하여 선택할 수 있다.
데이터 처리 애플리케이션을 배치 모드(214)에서 동작시키면, 데이터 처리 애플리케이션(200)이 많은 양의 데이터를 신속하게 처리하게 하지만 상대적으로 긴 기동 시간이 발생하게 된다. 연속 모드(216)에서 동작되면, 데이터 처리 애플리케이션(200)은 기동 시간이 없거나 거의 없지만, 데이터를 신속하게 처리하지는 않는다. 즉, 연속 모드(216)에서 동작되면, 데이터 처리 애플리케이션이 실행되고 있으며, 컴파일(compilation) 및 로딩과 같은 기동 프로세스는 후술되는 바와 같이 데이터를 처리하기 위하여 수행될 필요가 없다. 데이터 처리 애플리케이션(200)에 의하여 실행되는 동일한 데이터 처리 알고리즘은 배치 모드 또는 연속 모드에서 실행될 수 있다.
몇 가지 예들에서, 결정 블록(212)은 처리될 데이터의 세트의 크기(예를 들어, 질의에 응답하여 데이터베이스(204)로부터 취출될 파일(202)의 크기 또는 레코드의 크기)를 평가하고, 이러한 크기를 데이터 처리 애플리케이션(200)에 대한 임계 크기와 비교할 수 있다. 만일 데이터의 세트의 크기가 임계 크기보다 더 크면, 결정 블록(212)은 데이터 처리 애플리케이션(200)을 배치 모드(214)에서 실행하라는 커맨드(213)를 전송할 수 있다. 데이터의 세트의 크기가 임계 크기 미만인 경우, 커맨드(213)는 데이터 처리 애플리케이션(200)이 연속 모드(216)에서 실행되게 한다. 데이터(예를 들어, 데이터베이스(204)로부터의 파일(202) 또는 레코드)는 데이터 처리 애플리케이션(200)에서 수신되고, 커맨드(213)에 의하여 규정된 모드에 따라 처리된다.
임계 크기는 데이터의 세트의 하나 이상의 특징에 따라 달라질 수 있다. 예를 들면, 몇 가지 예들에서, 임계 크기는 데이터의 세트의 포맷, 예컨대 데이터베이스(204) 내의 파일(202) 파일 포맷 또는 레코드의 레코드 포맷에 따라 달라질 수 있다. 즉, 예를 들면 각각의 파일 포맷 또는 레코드 포맷은 연관된 임계 크기를 가질 수 있다. 예를 들면, 제 1 데이터베이스는 많은 수의 필드(예를 들어, sale_price 필드를 포함하는 50 개의 필드)를 가지는 판매 트랜잭션 레코드를 포함할 수 있는 반면에, 제 2 데이터베이스는 적은 수의 필드(예를 들어, sale_price 필드를 포함하는 5 필드)를 포함할 수 있다. 임의의 레코드의 sale_price 필드에서만 동작하는 데이터 처리 애플리케이션(200)에 대해서, 레코드의 절대 크기는 처리될 레코드의 개수보다 덜 중요하다. 즉, 제 1 데이터베이스의 레코드가 제 2 데이터베이스의 레코드보다 열 배 더 많기 때문에, 제 1 데이터베이스의 레코드의 임계 크기는 제 2 데이터베이스의 레코드의 임계 크기보다 약 10 배 더 클 수 있다.
몇 가지 예들에서, 임계 크기는 데이터의 세트를 처리하는 것과 연관되는 요구 조건에 따라 달라질 수 있다. 예를 들면, 그의 데이터가 데이터 처리 애플리케이션(200)(예를 들어, 신용 카드 회사)을 사용하여 처리되는 클라이언트는, 해당 클라이언트의 데이터에 대한 계약된 처리 횟수를 규정하는 서비스-레벨 합의(service-level agreement; SLA)와 같은 합의를 데이터 처리 애플리케이션(200)의 제공자와 가질 수 있다. 몇 가지 예들에서, 클라이언트는 처리될 데이터의 다수의 크기들 각각에 대한 계약된 처리 시간을 규정하는 계층화된(tiered) SLA를 가질 수 있다. 예를 들면, 계층화된 SLA는, 100,000 개 미만의 트랜잭션을 나타내는 데이터의 세트가 10 초 내에 처리되어야 한다고, 100,000 개 내지 백만 개 사이의 트랜잭션을 나타내는 데이터의 세트가 3 분 내에 처리되어야 한다고, 그리고 백만 개 내지 천만 개의 트랜잭션이 30 분 내에 처리되어야 한다고 규정할 수 있다. 특정 클라이언트의 SLA에 의하여 규정되는 처리 시간은 해당 클라이언트에 대한 임계 크기를 결정하기 위하여 사용될 수 있다. 예를 들면, 임계 크기는 클라이언트의 SLA가 만족되게 하도록 설정될 수 있다(예를 들어, SLA를 만족시키기 위하여 얼마나 많은 데이터의 세트가 데이터 처리 애플리케이션의 연속 모드 실행에 의하여 처리될 수 있는지).
몇 가지 예들에서, 임계 크기는 데이터 처리 애플리케이션(200)을 실행하고 있는 컴퓨팅 시스템과 연관된 동작 특성에 따라 달라질 수 있다. 예를 들면, 임계 크기는 배치 모드(214) 및 연속 모드(216)에 있는 데이터 처리 애플리케이션(200)의 성능을 표시하는 이력 데이터에 기초할 수 있다. 임계 크기는 데이터 처리 애플리케이션(200)의 진행중인 성능을 표시하는 실시간 데이터에 기초할 수 있다. 예를 들면, 일 예에서, 연속 모드(216) 데이터 처리 애플리케이션(200)이 기준 속도(예를 들어, 이력 평균 속도)보다 느리게 실행되고 있다는 것을 실시간 데이터가 나타내면, 임계 크기는 데이터의 더 많은 세트를 배치 모드 처리(214)로 천이시키도록 동적으로 감소될 수 있다. 배치 모드(214) 데이터 처리 애플리케이션(200)이 기준 속도(예를 들어, 이력 평균 속도)보다 느리게 실행되고 있다고 실시간 데이터가 표시하면, 임계 크기는 동적으로 증가될 수 있다. 일 예에서, 데이터 처리 애플리케이션(200)을 실행하고 있는 컴퓨팅 시스템이 보통보다 더 적은 용량을 가진다고 실시간 데이터가 표시하면, 임계 크기는 컴퓨팅 시스템의 감소된 용량에 대해 조절하도록 동적으로 변경될 수 있다.
몇 가지 예들에서, 임계 블록(218)은, 특정 클라이언트에 대한 특정 데이터 처리 애플리케이션에 의하여 처리될 데이터의 특정 세트에 대한 임계 크기를 임계 데이터베이스(220)에서, 예컨대 임계 데이터베이스의 룩업 테이블에서 룩업할 수 있다. 예를 들면, 임계 데이터베이스(220)는 특정 데이터 처리 애플리케이션에 대한 룩업 테이블을 포함할 수 있는데, 룩업 테이블은 다양한 데이터 포맷에 대한 그리고 다양한 클라이언트에 대한 임계 크기를 표시하는 레코드를 포함한다.
도 3 은 임계 데이터베이스(220)에 있는 룩업 테이블(30)의 일 예의 일부를 보여준다. 룩업 테이블(30)에서 각각의 엔트리(32)는 특정 데이터 포맷(34)에 대한 그리고 특정 클라이언트(36)에 대한 임계 크기를 나타낸다. 클라이언트(36)가 특정 크기의 데이터를 처리하기 위한 하나 이상의 계약된 처리 시간을 규정하는 SLA와 같은 합의 가지고 있으면, 임계 시간은 해당 클라이언트의 합의를 반영할 수 있다. 만일 클라이언트(36)가 합의를 가지고 있지 않으면, 디폴트 임계 크기가 사용될 수 있다. 도 3 의 예에서, 클라이언트들인 에이비씨 코퍼(ABC Corp.) 및 크레딧 컴(Credit Co.)은 공통 디폴트 임계 크기를 공유한다. 클라이언트 스미스사(Smith's)는 더 빠른 계약된 처리 시간을 제공하는 SLA와 같은 합의를 가지고 있고, 따라서 스미스사 데이터의 처리가 더 짧은 시간 안에 완료되어야 한다고 요구한다. 스미스사 SLA를 만족시키기 위해서, 스미스사 데이터에 대한 임계 크기는 더 크고, 이것이 데이터의 더 큰 세트가 연속 모드에서 처리되게 한다.
몇 가지 예들에서, 주어진 데이터 처리 애플리케이션에 대한 임계 크기, 데이터 포맷, 및/또는 클라이언트는 사용자에 의하여, 예를 들어 시스템 운영자에 의하여 규정된다. 몇 가지 예들에서, 임계 크기는 임계 블록(218)에 의하여 결정된다. 예를 들면, 임계 블록(218)은 특정 데이터 처리 애플리케이션(200)에 대한 그리고 특정 데이터 포맷에 대한 디폴트 임계 크기를 배치 모드(214)에서의 처리 시간이 연속 모드(216)에서의 처리 시간과 같거나 더 빠른 데이터의 세트의 크기를 식별함으로써 결정할 수 있다. 처리 시간과 관련되는 클라이언트-특유 합의를 포함하기 위하여, 임계 블록(218)은 배치 모드(214) 및/또는 연속 모드(216)에 의한 계약된 시간량 동안 처리될 수 있는 데이터 세트의 크기를 결정할 수 있다. 몇 가지 예들에서, 임계 블록(218)은 디폴트 임계 크기 또는 클라이언트-특유 임계 크기와 같은 임계 크기를 배치 모드(214) 및 연속 모드(216)에서의 데이터 처리 애플리케이션(200)의 성능을 표시하는 이력 데이터에 기초하여 결정할 수 있다.
몇 가지 경우들에서, 임계 블록(218)은 임계 크기를, 예를 들어 데이터 처리 애플리케이션(200)의 진행중인 성능을 표시하는 실시간 데이터에 기초하여 동적으로 결정할 수 있다. 예를 들면, 일 예에서, 연속 모드(216) 데이터 처리 애플리케이션(200)이 자신의 이력 평균보다 느리게 실행중이라고 실시간 데이터가 표시하면, 임계 블록(218)은 임계 크기를 동적을 감소시켜서 데이터의 더 많은 세트를 배치 모드 처리(214)로 천이시킬 수 있다. 일 예에서, 데이터 처리 애플리케이션(200)을 실행하고 있는 컴퓨팅 시스템이 보통보다 더 적은 용량을 가진다고 실시간 데이터가 표시하면, 임계 블록(218)은 임계 크기를 컴퓨팅 시스템의 감소된 용량에 대해 조절하도록 동적으로 변경될 수 있다.
위에서 언급된 바와 같이, 데이터 처리 애플리케이션(200)의 배치 모드 동작(214)은 데이터의 큰 세트를 처리하기 위하여 선택될 수 있다. 배치 모드는, 데이터의 세트를 처리하라는 요청을 수신한 이후에 시작되는(예를 들어, 컴파일되고 새로운 프로세스로서 론칭되는) 데이터 처리 애플리케이션(200)을 의미한다. 새로운 프로세스는 데이터를 처리하라는 요청이 수신된 이후에 컴파일되고 메모리에 로딩되는 프로세스이다. 몇 가지 예들에서 배치 모드 데이터 처리 애플리케이션은 데이터의 전체 세트를 처리한 이후에 종결될 수 있다. 몇 가지 예들에서, 배치 모드 처리에서, 데이터 처리 애플리케이션의 다수의 프로세스는, 데이터 처리 애플리케이션이 컴파일되고 론칭되면 동시에 실행될 수 있다. 일반적으로, 배치 모드 동작(214)은 연속 모드 동작(아래에 논의됨)보다 더 긴 기동 시간을 수반하는데, 이것은 데이터의 작은 양만을 처리할 경우에는 배치 모드가 연속 모드 보다 덜 효율적이 될게 할 수 있다. 그러나, 데이터 처리 애플리케이션(200)이 배치 모드(214)에서 론칭되면, 데이터 처리 애플리케이션(200)은 데이터를 신속하고 효율적으로 처리할 수 있다.
예를 들면, 배치 모드(214)에서 실행되는 경우, 데이터 처리 애플리케이션(200)은 새로운 프로세스로서 시작되고, 데이터의 세트의 제 1 아이템은 데이터 처리 애플리케이션에 의해 처리되도록 대기된다. 기동 태스크는 데이터 처리 애플리케이션의 컴포넌트를 컴파일하고 및 로딩하는 것, 그리고 컴파일되고 로드된 데이터 처리 애플리케이션을 처리 프레임워크(10)로 통합하는 것을 포함한다. 기동 태스크가 완료되면, 데이터 처리 애플리케이션과 관련된 다수의 프로세스들이 하나 이상의 컴퓨팅 디바이스에서 동시에 실행될 수 있고, 따라서 배치 모드 데이터 처리 애플리케이션이 많은 양의 데이터를 효율적으로 처리하게 한다. 처리가 완료되면, 데이터 처리 애플리케이션(200)의 동작은 종결된다. 즉, 데이터 처리 애플리케이션(200)을 배치 모드(214)에서 동작시키기 위하여, 데이터 처리 애플리케이션은 새로운 프로세스로서 기동되어, 데이터의 이산 세트를 처리하고 처리가 완료되면 종결된다.
컴파일 동작(compilation)은 데이터 처리 애플리케이션(200)과 같은 컴퓨터 프로그램이 컴퓨터에 의하여 실행되도록 준비되는 프로세스이다. 컴파일 동작에 의하여, 기계 코드, 컴퓨터에서 실행되게 대기되는 명령, 및/또는 컴퓨터에서 실행 중인 가상 머신에 의하여 실행될 중간 코드(예를 들어, 자바 바이트 코드)가 생성될 수 있다. 데이터 처리 애플리케이션(200)을 프로세스 컴파일하고 실행되도록 데이터 처리 애플리케이션(200)을 준비시키는 프로세스는 다양한 스테이지를 수반한다. 데이터 처리 애플리케이션(200)의 컴파일되지 않은 표현이 컴파일 프로세스에서 사용될 값을 제공하는 임의의 연관된 파라미터와 함께 데이터 스토리지로부터(예를 들어, 데이터 저장 시스템(116)으로부터) 취출된다. 예시적인 파라미터는, 예를 들어 데이터 처리 애플리케이션(200)을 실행하는 컴퓨팅 디바이스의 명칭, 데이터 처리 애플리케이션(200)의 결과가 출력될 결과, 결과를 기록할 파일의 파일명, 및 다른 파라미터와 같은 정보를 포함한다. 정적 파라미터 해상도 페이즈 동안에, 정적 파라미터(이들의 값은 런-타임 이전에 결정되도록 지정됨)가 결정되고 결정된 값들이 정적 파라미터에 지정된다. 몇 가지 파라미터들은 뒤에, 예를 들어 런-타임 직전에 결정되도록 컴파일 도중에는 결정되지 않은 채로 남는 동적 파라미터로서 지정될 수 있다. 몇 가지 예들에서, 미결정 파라미터들은 런-타임시에 배치 모드 데이터 처리 애플리케이션(200)에 의하여 파일로부터 판독된다. 컴파일 페이즈 도중에, 데이터 처리 애플리케이션(200)을 나타내는 데이터 구조가 데이터 처리 애플리케이션(200)이 실행되는 도중에 사용되도록 생성된다. 컴파일은, 스크립팅(scripting) 언어로 작성된 임베딩된 스크립트를 바이트코드(bytecode) 또는 기계 코드로 컴파일하는 동작을 더 포함할 수 있다. 런-타임 시에, 데이터 처리 애플리케이션(200)과 연관된 임의의 동적 파라미터는 결정된 값에 속한다. 컴파일된 데이터 처리 애플리케이션(200)의 데이터 구조는 하나 이상의 프로세스를 시작하고, 임의의 필요한 파일을 열며, 및/또는 동적 라이브러리를 링크시키는 것에 의하여 론칭된다. 데이터 처리 애플리케이션(200) 도중에 데이터의 흐름은, 예를 들어 공유된 메모리를 할당하거나 TCP/IP 스트림을 여는 것에 의하여 설정될 수도 있다.
배치 모드 데이터 처리 애플리케이션(200)이 컴파일되고 로드되면, 데이터의 세트는 상대적으로 신속하게 처리될 수 있다. 그러나, 데이터의 세트가 작다면, 데이터 처리 애플리케이션(200)의 컴파일, 데이터 처리 애플리케이션(200)의 로딩, 및 데이터 처리 애플리케이션(200)이 실행되도록 준비되는 것에 수반되는 시간(총괄하여 기동 시간이라고 불림)은 데이터 처리 애플리케이션(200)의 실행 시간의 대부분을 차지할 수 있다. 즉, 데이터의 작은 양만이 배치 모드 데이터 처리 애플리케이션(200)에 의하여 처리된다면, 기동 시간은 처리 시간과 거의 같거나 심지어 처리 시간을 초과할 수 있다. 예를 들면, 배치 모드 데이터 처리 애플리케이션(200)의 기동 시간이 약 5 초이고 데이터의 작은 세트에 대한 처리 시간이 약 5 초라면, 경과된 총 시간 중 절반만이 데이터의 세트의 실제 처리를 위해 사용된다. 따라서, 기동 시간이 상대적으로 길어지면, 데이터 처리 애플리케이션(200)을 배치 모드(214)에서 실행시키면 데이터의 작은 세트를 처리하는 것에 대하여 상대적으로 비효율적이 된다.
긴 기동 시간의 비효율성을 피하기 위해서, 데이터의 작은 세트는 데이터 처리 애플리케이션(200)에 의하여 연속 모드(216)에서 처리될 수 있다. 연속 모드란, 처리하기 위하여 데이터를 수신하기 이전에 컴파일되고 로딩되며 초기화되는 데이터 처리 애플리케이션을 의미한다. 처리하기 위하여 데이터를 수신하기 이전에 컴파일되고 로딩되며 초기화되는 데이터 처리 애플리케이션은 가끔 실행중인 프로세스라고 지칭된다. 어떤 프로세스는, 해당 프로세스가 능동적으로 데이터를 처리하고 있지 않더라도, 예를 들면 그 프로세스에 의하여 처리되기 위한 입력 데이터가 없어서 해당 프로세스가 대기 상태에 있다면, 실행중인 프로세스라고 간주될 수 있다. 몇 가지 예들에서, 연속 모드 프로세스는 데이터를 처리할 때에 순차적으로 실행될 수 있다. 연속 모드(216)에서, 배치 모드 데이터 처리 애플리케이션(200)의 기동 도중에 수행되는 태스크들 중 일부는 그 대신에 데이터의 모든 세트에 대해서 발생하지 않는 더 이른 컴파일 페이즈에서 수행된다. 오히려, 연속 모드(216)에서 실행되는 경우, 데이터 처리 애플리케이션(200)은 처리하기 위하여 데이터를 수신하기 이전에 컴파일되고 로드되며, 초기화된다. 즉, 예를 들어 연속 모드(216)에서, 데이터 처리 애플리케이션(200)은 컴퓨팅 디바이스에서 연속적으로 액티브 상태이고, 처리하라는 요청이 수신되자마자 데이터의 처리를 시작할 수 있다. 따라서, 데이터 처리 애플리케이션을 컴파일, 로딩, 및 준비시키는 것과 연관된 기동 시간은 데이터의 각각의 개개의 세트에 적용되지 않으며, 이것은 데이터의 작은 세트가 더 효율적으로 처리되게 한다. 연속 모드 데이터 처리 애플리케이션(200)이 해당 데이터의 세트에 대해 적합한 파라미터에 따라서 데이터의 특정 세트를 처리하도록 보장하기 위하여, 파라미터는 데이터의 세트를 처리하라는 요청과 함께 연속 모드 데이터 처리 애플리케이션(200)으로 전달된다.
몇 가지 예들에서, 연속 모드(216)에서 실행하기 위하여, 데이터 처리 애플리케이션(200)은 처리 프레임워크(10)로 동적으로 로딩될 수 있는(그리고 그로부터 로딩될 수 있는) 하나 이상의 "마이크로그래프(micrograph)"로서 구현될 수 있다. 마이크로그래프는 컴파일된 형태로 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(116))에 저장되는 사전컴파일된 데이터흐름 그래프이다. 컴파일된 마이크로그래프는, 마이크로그래프가 처리 프레임워크(10)로 통합되게 하는 마이크로그래프의 컴포넌트 및 링크를 나타내는 데이터 구조를 포함한다. 컴파일된 마이크로그래프는 동적으로 취출되고 실시간으로, 예를 들어 커맨드(208)가 데이터 처리 애플리케이션(200)이 연속 모드(216)에서 실행되도록 명령할 때에 처리 프레임워크(10) 내로 직접적으로 임베딩될 수 있다. 마이크로그래프는 2011 년 6 월 15 일에 출원된 미국 출원 번호 제 13/161,010 호에 좀 더 상세하게 기술되는데, 그 전체 내용은 본 명세서에 그 전체로서 원용에 의하여 통합된다.
예를 들면, 마이크로그래프를 신속하게 로딩하기 위하여, 마이크로그래프는 데이터 저장 시스템(116)에 저장되기 이전에 직렬화될 수 있다. 직렬화(serialization)는 컴파일된 데이터 처리 애플리케이션(200)이 0과 1의 이진 스트림으로 전환되어 데이터 처리 애플리케이션(200)이 지속성 메모리 내에 또는 메모리 버퍼 내에 용이하게 저장될 수 있는 형태가 되게 하는 프로세스이다. 직렬화된 마이크로그래프는 용이하게 취출될 수 있고 이것의 데이터 구조는 동적으로 런-타임 시에 역직렬화되고 로딩되며, 따라서 마이크로그래프가 신속하게 로딩되게 한다.
몇 가지 예들에서, 커맨드(208)가 데이터 처리 애플리케이션(200)을 연속 모드(216)에서 실행하여 데이터의 세트를 처리하도록 수신되면, 사전컴파일된 마이크로그래프가 로딩되고 처리 프레임워크(10)로 통합된다. 몇 가지 경우들에서, 마이크로그래프는 데이터의 세트의 처리가 완료되면 처리 프레임워크(10)로부터 분리되고 역로딩될 수 있다. 몇 가지 경우들에서, 마이크로그래프는 처리 프레임워크(10)로부터 분리될 수 있지만 메모리 내에 여전히 남을 수 있는데(예를 들어, 캐싱 메커니즘을 사용), 따라서 분리된 마이크로그래프가 마이크로그래프를 재로딩하지 않고 추후에 처리 프레임워크(10) 내에 신속하게 재통합될 수 있게 한다(예를 들어, 후속 데이터의 세트를 처리하도록 커맨드가 수신될 경우).
결정 블록(212) 자체는, 예를 들어 마이크로그래프로서 연속 모드에서 구현되어, 해당 데이터 처리 애플리케이션(200)에 대한 동작의 적합한 모드를 선택할 때에 지연이 생기지 않게 할 수 있다.
몇 가지 예들에서, 데이터 처리 애플리케이션은 단일 마이크로그래프의 다수의 카피를 구현하여, 예를 들면 데이터 처리 애플리케이션에 걸쳐 데이터 흐름에 대한 제어의 측정을 가능하게 할 수 있다. 예를 들면, 데이터 처리 애플리케이션(200)에 의하여 처리될 데이터의 세트는 부하 평형 알고리즘, 예컨대 라운드 로빈(round robin) 접근법, 최소 이용 마이크로그래프의 선택, 또는 다른 알고리즘에 따라 두 개 이상의 마이크로그래프의 세트 사이에 분할될 수 있다.
몇 가지 예들에서, 데이터 처리 애플리케이션(200)은 시리얼 배치 모드에서 실행될 수 있는데, 여기에서 데이터의 큰 세트가 데이터 처리 애플리케이션(200)에 의하여 직렬로 처리되도록 다수의 그룹으로 분할된다. 예를 들면, 시리얼 배치 모드에서 실행되는 경우, 데이터 처리 애플리케이션(200)은 한 번만 컴파일되고 데이터의 다수의 그룹을 처리하도록 직렬로 실행될 수 있다. 몇 가지 예들에서, 데이터 처리 애플리케이션(200)은 병렬 배치 모드에서 실행될 수 있는데, 여기에서 데이터의 큰 세트는 병렬로 실행 중인 다수의 동일한 데이터 처리 애플리케이션에 의하여 동시에 처리되도록 다수의 그룹으로 분할된다.
도 4 를 참조하면, 일반적 접근법에서, 데이터 처리 애플리케이션(400)을 사용하여 데이터의 세트를 처리하라는 요청이 수신된다. 몇 가지 예들에서, 요청은 데이터 처리 애플리케이션에 의하여 처리될 파일(유입 피드)과 같은 데이터의 세트를 포함할 수 있다. 예를 들어, 요청(208)은 파일(202)을 포함할 수 있다. 몇 가지 예들에서, 요청은 데이터베이스로부터 데이터 처리 애플리케이션에 의하여 취출될 데이터(유출 피드)를 식별할 수 있다.
데이터의 세트의 크기가 결정되거나 추정된다(402). 유입 피드(예를 들어, 파일)에 대하여, 데이터의 세트의 크기는 파일의 크기이고, 예를 들어 해당 파일과 관련된 성질에 액세스함으로써 결정될 수 있다. 예를 들면, 유입 피드가 데이터베이스에 추가될 신용 카드 트랜잭션 레코드를 포함하는 결제 파일인 경우, 데이터의 세트의 크기는 결제 파일의 크기이다. 유출 피드(예를 들어, 데이터베이스로부터 취출되는 데이터)에 대하여, 데이터의 세트의 크기는 질의에 응답하여 데이터베이스로부터 취출될 레코드의 크기이다. 몇 가지 예들에서, 유출 피드의 크기는, 예를 들어 질의를 만족하는 처음 100 개의 레코드를 요청함으로써 데이터베이스에 선-질의하여 결정될 수 있다. 데이터베이스가 처음 100 개의 레코드를 신속하게 반환하면, 작은 크기가 유출 피드에 대하여 추정될 수 있다. 데이터베이스가 처음 100 개의 레코드를 느리게 반환하거나 아예 반환하지 않으면, 유출 피드에 대하여 큰 크기가 추정될 수 있다. 몇 가지 예들에서, 유출 피드의 크기는 질의를 만족시키는 레코드들의 개수에 대하여 데이터베이스에 질의함으로써 결정될 수 있다.
데이터의 세트의 임계 크기는, 예를 들면 데이터 처리 애플리케이션에 대한 다양한 데이터 포맷 및/또는 다양한 클라이언트에 대한 임계 크기를 테이블화 하는 룩업 테이블에 액세스함으로써 식별된다(404). 임계 크기는 데이터의 세트의 특성, 예를 들어 데이터의 세트의 크기(예를 들어, 데이터의 세트의 볼륨, 데이터의 세트 내의 레코드의 개수, 데이터의 세트의 복잡도, 등), 데이터의 세트의 포맷(예를 들어, 데이터베이스(204) 내의 파일(202)의 파일 포맷 또는 레코드의 레코드 포맷), 데이터의 세트의 복잡도(예를 들어, 데이터의 세트와 관련된 벡터 또는 서브벡터), 및/또는 데이터의 세트의 다른 특성에 기초할 수 있다. 또한, 임계 크기 도 데이터의 세트를 처리하는 것과 연관된 요구 조건, 예컨대 데이터의 세트를 처리하기 위해 허용된 시간을 규정하는 클라이언트-특유 합의(예를 들어, SLA)에 기초할 수 있다. 임계 크기 도 데이터 처리 애플리케이션을 실행하는 컴퓨팅 시스템의 동작 특성, 예컨대 시간 또는 요일, 시스템의 용량, 또는 다른 동작 특성에 기초할 수 있다.
처리될 데이터의 세트의 크기는 임계 크기(406)와 비교되고, 데이터 처리 애플리케이션에 대한 동작의 모드가 비교 결과에 기초하여 선택된다. 예를 들면, 데이터의 세트의 크기가 임계 크기보다 더 크면, 배치 모드 처리가 선택된다(408). 처리될 데이터의 세트의 크기가 임계 크기 이하라면, 연속 모드 처리가 선택된다(410).
데이터 처리 애플리케이션은 데이터의 세트를 처리하는 동작의 선택된 모드에 따라서 실행된다(412). 예를 들면, 배치 모드 처리에 대하여, 데이터 처리 애플리케이션의 배치 모드 구현형태는 데이터의 세트를 처리하기 이전에 컴파일되고, 로딩되며, 자신의 처리 프레임워크에 집적된다. 연속 모드 처리에 대하여, 사전컴파일된 데이터 처리 애플리케이션(예를 들어, 사전컴파일된 마이크로그래프)은 동적으로 로딩되고, 데이터의 세트를 처리하도록 사용된다. 처리 결과는 데이터 처리 애플리케이션(414)로부터, 예컨대 큐, 파일, 데이터베이스, 및/또는 다운스트림 사용자로 보여지는 디스플레이로 출력된다.
도 5 를 참조하면, 처리 프레임워크(10)의 하나의 예시적인 그래픽 표현의 스크린샷에서, 데이터의 세트를 처리하라는 요청이 인터페이스 컴포넌트(500)에서 수신되고 판독된다. 이러한 요청은 데이터의 세트에 대해 실행될 작업의 타입(예를 들어, 데이터의 세트를 처리하도록 사용되는 데이터 처리 애플리케이션의 식별자)에 대한 정보 및 데이터의 세트의 소스(예를 들어, 파일 또는 데이터베이스의 식별자)에 대한 정보를 포함할 수 있다. 몇 가지 예들에서, 요청들은 인터페이스 컴포넌트(500)에 의하여 수신되기 이전에 큐(502) 내에 큐잉된다(queued). 몇 가지 예들에서, 인터페이스 컴포넌트(500)는 인터페이스 블록(206)에 대하여 위에서 기술된 기능을 수행한다.
요청은 셋업 컴포넌트(504)에 의하여 처리되고 결정 컴포넌트(506)에 도달한다. 결정 컴포넌트(506)는 요청을 평가하여 처리될 데이터의 세트를 큰 것으로 또는 작은 것으로 볼지를 결정한다. 이러한 평가에 기초하여, 결정 컴포넌트(506)는 하나의 연속 컴포넌트(509)로, 예를 들어 마이크로그래프 컴포넌트 또는 배치 컴포넌트(508)로 전송한다. 몇 가지 예들에서, 결정 컴포넌트(506)는 결정 블록(212)에 대하여 전술된 기능들을 실행한다.
도 6a 내지 도 6c 는 배치 모드 또는 연속 모드 중 하나에서 실행되도록 구성되는 데이터흐름 그래프(600)의 일 예를 도시한다. "작업 파일 판독(read job file)" 컴포넌트(602)는 데이터흐름 그래프(600)를 처리 프레임워크(10)에 통합시킨다(도 5). 예를 들면, "작업파일 판독" 컴포넌트(602)는 데이터흐름 그래프(600)가 배치 모드 또는 연속 모드에서 실행되느냐에 따라서 상이하게 실행되는 서브그래프(610)에 의하여 구현될 수 있다. 데이터흐름 그래프(600)가 배치 모드에서 실행되면, 그래프는 런-타임 파라미터를 배치 모드 데이터흐름 그래프(600)로 전달하는 작업 파일(612)을 판독함으로써 시작한다. 연속 모드에서, 런-타임 파라미터와 같은 작업 정보는 "job_info" 컴포넌트(614)를 통해 컴파일되고 로딩되며 초기화된 연속 모드 데이터흐름 그래프(600)에 도달한다.
데이터흐름 그래프(600)는 하나 이상의 처리 컴포넌트(604)에서, 배치 모드 또는 연속 모드에서 데이터를 처리한다. 예를 들면, 배치 모드에서, 처리 컴포넌트(604)는 신속하고 효율적인 데이터 처리를 제공하도록 동시에 실행될 수 있는 다수의 프로세스를 포함할 수 있다. 연속 모드에서, 처리 컴포넌트(604)는 순차적으로 실행될 다수의 프로세스를 포함할 수 있다. 처리가 완료되면, "응답 전송" 컴포넌트(606)는, 예를 들어 데이터흐름 그래프(600)의 출력을 적합하도록 포매팅하고 출력을 처리 프레임워크(10)로 전송함으로써, 데이터흐름 그래프(600)의 출력을 처리 프레임워크(10)로 다시 통합한다. 예를 들면, "응답 전송" 컴포넌트(606)는 데이터흐름 그래프(600)가 배치 모드 또는 연속 모드에서 실행되느냐에 따라서 상이하게 실행되는 서브그래프(620)에 의하여 구현될 수 있다. 출력 데이터는 큐(622)에 대한 데이터를 준비하는 모사(replicate) 컴포넌트(621) 또는 응답 컴포넌트(624)에 의하여, 데이터흐름 그래프(600)의 동작의 모드에 따라 처리된다. 데이터흐름 그래프가 배치 모드에서 실행되는 경우, 응답(예를 들어, 출력 데이터)은 큐(622)를 통해 프레임워크(10)로 반환된다. 연속 모드에서, 응답은 응답 컴포넌트(624)를 통해 반환된다.
데이터 처리 애플리케이션의 동작의 모드를 동적으로 결정하기 위한 접근법은 적합한 소프트웨어를 실행하는 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 소프트웨어는, 각각 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및 비-휘발성 메모리 및/또는 저장 소자를 포함), 적어도 하나의 사용자 인터페이스(적어도 하나의 입력 디바이스 또는 포트를 사용하여 입력을 수신하고, 적어도 하나의 출력 디바이스 또는 포트를 사용하여 출력을 제공하기 위함)를 포함하는 하나 이상의 프로그래밍된 또는 프로그래밍가능한 컴퓨팅 시스템(분산형, 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍처일 수 있음)에서 실행되는 하나 이상의 컴퓨터 프로그램 내의 프로시저를 포함할 수도 있다. 소프트웨어는, 예를 들어 데이터흐름 그래프의 디자인, 구성, 및 실행과 관련된 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 포함할 수도 있다. 프로그램의 모듈(예를 들어, 데이터흐름 그래프의 엘리먼트)은 데이터 저장소 내에 저장되는 데이터 모델에 따르는 데이터 구조 또는 다른 조직된 데이터로서 구현될 수 있다.
소프트웨어는 유형의(tangible) 비-일시적 매체, 예컨대 CD-ROM 또는 컴퓨터-판독가능 매체(범용 또는 특수 목적 컴퓨팅 시스템 또는 디바이스에 의하여 독출가능함)에 제공되거나, 네트워크의 통신 매체를 거쳐 이것이 실행되는 컴퓨팅 시스템의 비일시적 매체로 전송(전파되는 신호로 인코딩)될 수 있다. 처리의 일부 또는 전부는 특수 목적 컴퓨터에서, 또는 특수-목적 하드웨어, 예컨대 코프로세서 또는 필드-프로그래밍가능한 게이트 어레이(FPGAs) 또는 전용의 주문형 집적회로(ASICs)를 사용하여 수행될 수 있다. 처리는 소프트웨어에 의하여 특정된 계산의 상이한 부분들이 상이한 컴퓨팅 엘리먼트에 의하여 수행되는 방식인 분산 방식으로 구현될 수도 있다. 각각의 이러한 컴퓨터 프로그램은 바람직하게는 저장 디바이스 매체가 본 명세서에서 설명되는 프로시저를 수행하기 위하여 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 작동시키기 위하여, 범용 또는 특수 목적 프로그래밍가능 컴퓨터에 의하여 저장 디바이스의 컴퓨터-판독가능 스토리지 매체(예를 들어, 매체의 고상 메모리(solid state memory) 또는 자기적 또는 광학적 매체)에 저장되거나 다운로드된다. 진보적인 시스템은 또한 컴퓨터 프로그램으로써 구성된 유형의 비일시적 매체로서 구현될 수 있는 것으로 볼 수도 있는데, 이와 같이 구성된 매체는 컴퓨터가 본 명세서에서 설명된 처리 단계 중 하나 이상을 수행하기 위하여 특정하고 선정의된 방식으로 작동하도록 한다.
다수 개의 실시예들이 설명되었다. 그럼에도 불구하고, 앞선 설명이 예시하기 위하여 의도되고 후속하는 특허청구범위에 의하여 정의되는 본 발명의 범위를 한정하기 위한 것이 아님이 이해되어야 한다. 따라서, 다른 실시예들도 역시 후속하는 청구항들의 범위에 속한다. 예를 들어, 본 발명의 범위로부터 벗어나지 않고서 다양한 변경이 이루어질 수 있다. 추가적으로, 위에서 설명된 단계들 중 일부는 순서에 영향받지 않을 수도 있고, 설명된 것과 상이한 순서로 수행될 수 있다.
예를 들면, 위에서 설명된 피쳐들에 추가하거나 이를 대체하는 방식으로, 다음 실시예들이 기술된다:
실시예 1 은 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 단계; 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 단계; 및 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하는 단계를 포함하는, 방법에 관한 것이다.
실시예 2 는 실시예 1 에 관한 것인데, 하나 이상의 실행중인 프로세스는, 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 컴파일되고 메모리에 로딩된다.
실시예 3 은 위의 실시예들 중 임의의 것에 관한 것인데, 상기 하나 이상의 실행중인 프로세스는 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 대기 모드에 있다.
실시예 4 는 위의 실시예들 중 임의의 것에 관한 것인데, 상기 방법은, 상기 제 2 모드가 선택되는 경우, 상기 데이터 처리 애플리케이션을 컴파일하고, 컴파일된 데이터 처리 애플리케이션을 메모리에 로딩하는 단계를 포함한다.
실시예 5 는 위의 실시예들 중 임의의 것에 관한 것인데, 상기 하나 이상의 새로운 프로세스는, 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 컴파일되거나 메모리에 로딩되지 않는 프로세스를 포함한다.
실시예 6 은 위의 실시예들 중 임의의 것에 관한 것인데, 상기 데이터의 세트와 연관된 특징은, 상기 데이터의 세트의 크기, 상기 데이터의 세트의 포맷, 또는 상기 데이터의 세트의 복잡도 중 하나 이상을 포함한다.
실시예 7 은 위의 실시예들 중 임의의 것에 관한 것인데, 상기 제 1 모드와 제 2 모드 사이에서 선택하는 단계는, 상기 데이터의 세트의 크기가 임계 크기 이하인 경우 상기 제 1 모드를 선택하는 단계; 및 상기 데이터의 세트의 크기가 임계 크기를 초과하는 경우 상기 제 2 모드를 선택하는 단계를 포함한다.
실시예 8 은 실시예 7 에 관한 것인데, 상기 임계 크기는 상기 데이터의 세트의 포맷에 기초하고, 적어도 두 개의 상이한 포맷들이 상이한 임계 크기와 각각 연관된다.
실시예 9 는 실시예 7 또는 8 에 관한 것인데, 상기 임계 크기는 상기 데이터의 세트와 연관된 처리 요구 조건에 기초하고, 적어도 두 개의 상이한 처리 요구 조건들이 상이한 임계 크기와 각각 연관된다.
실시예 10 은 실시예 7 내지 실시예 9 중 어느 하나에 관한 것인데, 상기 임계 크기는 상기 데이터 처리 애플리케이션의 동작을 표시하는 이력 데이터에 기초한다.
실시예 11 은 실시예 7 내지 실시예 10 중 어느 하나에 관한 것인데, 상기 방법은 상기 데이터 처리 애플리케이션의 실행 도중에 상기 임계 크기를 결정하는 단계를 포함한다.
실시예 12 는 실시예 11 에 관한 것인데, 상기 데이터 처리 애플리케이션의 실행 도중에 상기 임계 크기를 결정하는 단계는, 상기 제 1 모드에 따라서 실행되는 상기 데이터 처리 애플리케이션이 기준 속도보다 느리게 실행되면 상기 임계 크기를 감소시키는 단계; 및 상기 제 2 모드에 따라서 실행되는 상기 데이터 처리 애플리케이션이 기준 속도보다 느리게 실행되면 상기 임계 크기를 증가시키는 단계를 포함한다.
실시예 13 은 위의 실시예들 중 임의의 것에 관한 것인데, 상기 방법은 상기 데이터의 세트의 크기를 결정하는 단계를 포함한다.
실시예 14 는 실시예 13 에 관한 것인데, 상기 데이터의 세트는 파일을 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 파일의 크기를 결정하는 단계를 포함한다.
실시예 15 는 실시예 13 또는 14 에 관한 것인데, 상기 데이터의 세트는 데이터베이스에 저장된 데이터를 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 상기 데이터베이스에 질의하는 단계를 포함한다.
실시예 16 은 위의 실시예들 중 임의의 것에 관한 것인데, 상기 데이터의 세트와 연관된 특징은, 상기 데이터의 세트와 연관된 처리 요구 조건을 포함한다.
실시예 17 은 실시예 16 에 관한 것인데, 상기 처리 요구 조건은 상기 데이터의 세트를 처리하기 위해 허용된 시간을 포함한다.
실시예 18 은 위의 실시예들 중 임의의 것에 관한 것인데, 상기 제 1 모드에서, 상기 데이터 처리 애플리케이션의 컴포넌트는 상기 요청을 수신하기 이전에 기계 코드로 컴파일되고, 상기 제 2 모드에서, 상기 컴포넌트는 상기 요청을 수신한 이후에 기계 코드로 컴파일된다.
실시예 19 는 위의 실시예들 중 임의의 것에 관한 것인데, 상기 제 1 모드에서, 하나 이상의 실행중인 프로세스는 순차적으로 실행되고, 상기 제 2 모드에서, 하나 이상의 새로운 프로세스 중 적어도 일부는 동시에 실행된다.
실시예 20 은 컴퓨터-판독가능 매체에 저장되는 소프트웨어에 관한 것인데, 상기 소프트웨어는 컴퓨팅 시스템으로 하여금: 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하고; 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하며; 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하도록 하는 명령을 포함한다.
실시예 21 은 적어도 하나의 프로세서를 포함하는 컴퓨팅 시스템에 관한 것인데, 적어도 하나의 프로세서는, 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하고; 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하며; 상기 데이터의 세트를 처리하도록, 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하도록 구성된다.
실시예 22 는, 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 수단: 상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 수단; 및 상기 데이터의 세트를 처리하도록 상기 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하는 수단을 포함하는 컴퓨팅 시스템에 관한 것이다.
실시예 23 은 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 단계; 데이터의 세트의 크기에 기초하여 상기 데이터 처리 애플리케이션의 동작의 여러 모드들 중 동작의 특정 모드를 식별하는 단계; 및 데이터 처리 애플리케이션을 동작의 특정 모드에 따라서 실행하여 데이터의 세트를 처리하는 단계를 포함하는 방법에 관한 것이다.
실시예 24 는 실시예 23 에 관한 것인데, 동작의 특정 모드는 배치 처리 모드 또는 연속 처리 모드 중 하나를 선택하는 것을 포함한다. 실시예 25 는 실시예 23 또는 24 에 관한 것인데, 동작의 특정 모드를 식별하는 단계는, 상기 데이터의 세트의 크기가 임계 크기를 초과하는 경우 배치 처리 모드를 선택하는 단계; 및 상기 데이터의 세트의 크기가 임계 크기 미만인 경우 연속 처리 모드를 선택하는 단계를 포함한다.
실시예 26 은 실시예 23 내지 25 중 어느 하나에 관한 것인데, 상기 방법은 데이터의 세트의 크기를 결정하는 단계를 포함한다.
실시예 27 은 실시예 26 에 관한 것인데, 상기 데이터의 세트는 파일을 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 파일의 크기를 결정하는 단계를 포함한다.
실시예 28 은 실시예 26 또는 27 에 관한 것인데, 상기 데이터의 세트는 데이터베이스에 저장된 데이터를 포함하고, 상기 데이터의 세트의 크기를 결정하는 단계는, 상기 데이터베이스에 질의하는 단계를 포함한다.
실시예 29 는 실시예 23 내지 실시예 28 중 어느 하나에 관한 것인데, 동작의 특정 모드를 식별하는 단계는, 상기 데이터의 세트의 크기가 임계 크기를 초과하는지 여부를 결정하는 단계를 포함한다.
실시예 30 은 실시예 29 에 관한 것인데, 임계 크기는 데이터의 세트의 포맷 또는 데이터의 세트와 연관된 처리 요구 조건에 기초한다.
실시예 31 은 실시예 30 에 관한 것인데, 상기 처리 요구 조건은 상기 데이터의 세트를 처리하기 위해 허용된 시간을 포함한다.
실시예 32 는 실시예 29 내지 31 중 어느 하나에 관한 것인데, 상기 방법은 임계 크기를 결정하는 단계를 포함한다.
실시예 33 은 실시예 29 내지 실시예 32 중 어느 하나에 관한 것인데, 상기 방법은 임계 크기를 상기 데이터 처리 애플리케이션의 동작을 표시하는 이력 데이터에 기초하여 결정하는 단계를 포함한다.
실시예 34 은 실시예 29 내지 33 중 어느 하나에 관한 것인데, 상기 방법은 임계 크기를 동적으로 결정하는 단계를 포함한다.
실시예 35 는 실시예 23 내지 실시예 34 중 어느 하나에 관한 것인데, 데이터 처리 애플리케이션은 적어도 하나의 계산 그래프를 포함한다.
실시예 36 은 실시예 35 에 관한 것인데, 계산 그래프는 배치 처리 모드 또는 연속 처리 모드에서 실행될 수 있다.

Claims (22)

  1. 데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 단계;
    상기 데이터의 세트와 연관된 특징(feature)에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 단계; 및
    선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하여 상기 데이터의 세트를 처리하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 실행중인 프로세스는, 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 컴파일되고 메모리에 로딩되는, 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 하나 이상의 실행중인 프로세스는 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 대기 모드에 있는, 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 방법은, 상기 제 2 모드가 선택되는 경우, 상기 데이터 처리 애플리케이션을 컴파일하고, 컴파일된 데이터 처리 애플리케이션을 메모리에 로딩하는 단계를 포함하는, 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 하나 이상의 새로운 프로세스는, 상기 데이터의 세트를 처리하라는 요청을 수신하기 이전에 컴파일되거나 메모리에 로딩되지 않는 프로세스를 포함하는, 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 데이터의 세트와 연관된 특징은, 상기 데이터의 세트의 크기, 상기 데이터의 세트의 포맷, 또는 상기 데이터의 세트의 복잡도 중 하나 이상을 포함하는, 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 제 1 모드와 제 2 모드 사이에서 선택하는 단계는,
    상기 데이터의 세트의 크기가 임계 크기 이하인 경우 상기 제 1 모드를 선택하는 단계; 및
    상기 데이터의 세트의 크기가 임계 크기를 초과하는 경우 상기 제 2 모드를 선택하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 임계 크기는 상기 데이터의 세트의 포맷에 기초하고, 적어도 두 개의 상이한 포맷들이 상이한 임계 크기와 각각 연관되는, 방법.
  9. 제 7 항 또는 제 8 항에 있어서,
    상기 임계 크기는 상기 데이터의 세트와 연관된 처리 요구 조건에 기초하고, 적어도 두 개의 상이한 처리 요구 조건들이 상이한 임계 크기와 각각 연관되는, 방법.
  10. 제 7 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 임계 크기는 상기 데이터 처리 애플리케이션의 동작을 표시하는 이력 데이터에 기초하는, 방법.
  11. 제 7 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 방법은, 상기 데이터 처리 애플리케이션의 실행 도중에 상기 임계 크기를 결정하는 단계를 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 데이터 처리 애플리케이션의 실행 도중에 상기 임계 크기를 결정하는 단계는,
    상기 제 1 모드에 따라서 실행되는 상기 데이터 처리 애플리케이션이 기준 속도보다 느리게 실행되면 상기 임계 크기를 감소시키는 단계; 및
    상기 제 2 모드에 따라서 실행되는 상기 데이터 처리 애플리케이션이 기준 속도보다 느리게 실행되면 상기 임계 크기를 증가시키는 단계를 포함하는, 방법.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 방법은, 상기 데이터의 세트의 크기를 결정하는 단계를 포함하는, 방법.
  14. 제 13 항에 있어서,
    상기 데이터의 세트는 파일을 포함하고,
    상기 데이터의 세트의 크기를 결정하는 단계는, 파일의 크기를 결정하는 단계를 포함하는, 방법.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 데이터의 세트는 데이터베이스에 저장된 데이터를 포함하고,
    상기 데이터의 세트의 크기를 결정하는 단계는, 상기 데이터베이스에 질의하는 단계를 포함하는, 방법.
  16. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 데이터의 세트와 연관된 특징은, 상기 데이터의 세트와 연관된 처리 요구 조건을 포함하는, 방법.
  17. 제 16 항에 있어서,
    상기 처리 요구 조건은 상기 데이터의 세트를 처리하기 위해 허용된 시간을 포함하는, 방법.
  18. 제 1 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 제 1 모드에서, 상기 데이터 처리 애플리케이션의 컴포넌트는 상기 요청을 수신하기 이전에 기계 코드로 컴파일되고, 상기 제 2 모드에서, 상기 컴포넌트는 상기 요청을 수신한 이후에 기계 코드로 컴파일되는, 방법.
  19. 제 1 항 내지 제 18 항 중 어느 한 항에 있어서,
    상기 제 1 모드에서, 상기 하나 이상의 실행중인 프로세스는 순차적으로 실행되고, 상기 제 2 모드에서, 상기 하나 이상의 새로운 프로세스 중 적어도 일부는 동시에 실행되는, 방법.
  20. 컴퓨터-판독가능 매체에 저장된 소프트웨어로서,
    상기 소프트웨어는 컴퓨팅 시스템으로 하여금:
    데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하고;
    상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하며;
    선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하여 상기 데이터의 세트를 처리하는 명령을 포함하는, 컴퓨터-판독가능 매체에 저장된 소프트웨어.
  21. 컴퓨팅 시스템으로서,
    적어도 하나의 프로세서를 포함하고,
    상기 프로세서는:
    데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하고;
    상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하며;
    선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하여 상기 데이터의 세트를 처리하도록 구성되는, 컴퓨팅 시스템.
  22. 컴퓨팅 시스템으로서,
    데이터 처리 애플리케이션을 사용하여 데이터의 세트를 처리하라는 요청을 수신하는 수단:
    상기 데이터의 세트와 연관된 특징에 기초하여, (1) 상기 데이터 처리 애플리케이션의 하나 이상의 실행중인 프로세스가 상기 데이터의 세트를 처리하도록 사용되는 제 1 모드와 (2) 상기 데이터 처리 애플리케이션의 하나 이상의 새로운 프로세스가 시작되는 제 2 모드 사이에서 선택하는 수단; 및
    상기 선택된 모드에 따라서 상기 데이터 처리 애플리케이션이 실행되게 하여 상기 데이터의 세트를 처리하는 수단을 포함하는, 컴퓨팅 시스템.
KR1020167018782A 2013-12-13 2014-12-12 데이터 처리 애플리케이션의 모드를 동적으로 결정하는 방법 KR102307221B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361915805P 2013-12-13 2013-12-13
US61/915,805 2013-12-13
PCT/US2014/070002 WO2015089390A1 (en) 2013-12-13 2014-12-12 Dynamically determing a mode of a data processing application

Publications (2)

Publication Number Publication Date
KR20160119070A true KR20160119070A (ko) 2016-10-12
KR102307221B1 KR102307221B1 (ko) 2021-09-29

Family

ID=52146777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167018782A KR102307221B1 (ko) 2013-12-13 2014-12-12 데이터 처리 애플리케이션의 모드를 동적으로 결정하는 방법

Country Status (8)

Country Link
US (2) US10261801B2 (ko)
EP (1) EP3080691B1 (ko)
JP (1) JP6573612B2 (ko)
KR (1) KR102307221B1 (ko)
CN (1) CN106104468B (ko)
AU (1) AU2014362192B2 (ko)
CA (1) CA2931335C (ko)
WO (1) WO2015089390A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210097010A (ko) * 2020-01-29 2021-08-06 삼성전자주식회사 키-값 스토리지 장치들에 대한 입출력 성능을 향상을 위한 키 값 객체 입출력들 그룹화

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10180821B2 (en) 2013-12-05 2019-01-15 Ab Initio Technology Llc Managing interfaces for sub-graphs
JP6573612B2 (ja) 2013-12-13 2019-09-11 アビニシオ テクノロジー エルエルシー データ処理アプリケーションのモードの動的決定
US10686814B2 (en) * 2015-04-10 2020-06-16 Hewlett Packard Enterprise Development Lp Network anomaly detection
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10530666B2 (en) * 2016-10-28 2020-01-07 Carrier Corporation Method and system for managing performance indicators for addressing goals of enterprise facility operations management
US11308119B2 (en) * 2018-12-03 2022-04-19 International Business Machines Corporation Replicating large statements with low latency
JP7298145B2 (ja) * 2018-12-04 2023-06-27 富士通株式会社 証券取引装置、証券取引方法及び証券取引プログラム
CN110058903B (zh) * 2019-04-16 2019-12-31 深圳市摩天之星企业管理有限公司 一种程序接入方法
US11527101B1 (en) 2021-08-11 2022-12-13 Alclear, Llc Biometric gallery management using wireless identifiers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228450A (ja) * 1997-02-13 1998-08-25 Fujitsu Ltd バッチプロセス管理方法およびクライアント/サーバシステムおよびクライアント/サーバコンピュータ
JP2005521938A (ja) * 2002-03-29 2005-07-21 グッド テクノロジー インコーポレイテッド データサービスによるデータ処理装置の全無線同期システム及び方法
US20110307897A1 (en) * 2010-06-15 2011-12-15 Ab Initio Technology Llc Dynamically loading graph-based computations

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3560935A (en) * 1968-03-15 1971-02-02 Burroughs Corp Interrupt apparatus for a modular data processing system
US3518413A (en) * 1968-03-21 1970-06-30 Honeywell Inc Apparatus for checking the sequencing of a data processing system
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US7962622B2 (en) 2001-08-07 2011-06-14 Motorola Mobility, Inc. System and method for providing provisioning and upgrade services for a wireless device
US6934714B2 (en) * 2002-03-04 2005-08-23 Intelesis Engineering, Inc. Method and system for identification and maintenance of families of data records
US8689185B1 (en) * 2004-01-27 2014-04-01 United Services Automobile Association (Usaa) System and method for processing electronic data
US7644050B2 (en) 2004-12-02 2010-01-05 International Business Machines Corporation Method and apparatus for annotation-based behavior extensions
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
EP2399192A4 (en) 2009-02-13 2016-09-07 Ab Initio Technology Llc COMMUNICATION WITH DATA STORAGE SYSTEMS
JP2010268150A (ja) 2009-05-13 2010-11-25 Ntt Docomo Inc 移動局及び無線通信方法
US8301798B2 (en) * 2009-06-12 2012-10-30 Barclays Captial Inc. System and method for processing large amounts of transactional data
KR101911793B1 (ko) 2010-10-25 2018-10-25 아브 이니티오 테크놀로지 엘엘시 컴퓨터 프로그램을 나타내는 데이터플로우 그래프 내의 데이터세트 객체의 관리
US8838431B1 (en) * 2011-02-15 2014-09-16 Xilinx, Inc. Mixed-language simulation
US8924252B2 (en) 2012-05-14 2014-12-30 Iqzone, Inc. Systems and methods for providing timely advertising to portable devices
WO2014068617A1 (en) * 2012-10-31 2014-05-08 Hitachi, Ltd. Storage apparatus and method for controlling storage apparatus
GB2508433A (en) * 2012-12-03 2014-06-04 Ibm Migration of processes in heterogeneous computing environments using emulating and compiling source code on target system
US8972465B1 (en) * 2013-03-15 2015-03-03 Emc Corporation Burst buffer appliance with small file aggregation
US9792325B2 (en) * 2013-08-25 2017-10-17 Microsoft Technology Licensing, Llc Continuous cloud-scale query optimization and processing
JP6573612B2 (ja) 2013-12-13 2019-09-11 アビニシオ テクノロジー エルエルシー データ処理アプリケーションのモードの動的決定

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228450A (ja) * 1997-02-13 1998-08-25 Fujitsu Ltd バッチプロセス管理方法およびクライアント/サーバシステムおよびクライアント/サーバコンピュータ
JP2005521938A (ja) * 2002-03-29 2005-07-21 グッド テクノロジー インコーポレイテッド データサービスによるデータ処理装置の全無線同期システム及び方法
US20110307897A1 (en) * 2010-06-15 2011-12-15 Ab Initio Technology Llc Dynamically loading graph-based computations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210097010A (ko) * 2020-01-29 2021-08-06 삼성전자주식회사 키-값 스토리지 장치들에 대한 입출력 성능을 향상을 위한 키 값 객체 입출력들 그룹화

Also Published As

Publication number Publication date
US11340910B2 (en) 2022-05-24
CA2931335C (en) 2022-08-23
EP3080691B1 (en) 2021-10-06
EP3080691A1 (en) 2016-10-19
JP2017504106A (ja) 2017-02-02
WO2015089390A1 (en) 2015-06-18
US20200073673A1 (en) 2020-03-05
JP6573612B2 (ja) 2019-09-11
KR102307221B1 (ko) 2021-09-29
US10261801B2 (en) 2019-04-16
US20150169332A1 (en) 2015-06-18
CN106104468B (zh) 2020-03-10
CN106104468A (zh) 2016-11-09
AU2014362192B2 (en) 2020-01-30
CA2931335A1 (en) 2015-06-18
AU2014362192A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
US11340910B2 (en) Dynamically determining a mode of a data processing application
US10346391B2 (en) Vertical tuning of distributed analytics clusters
US9401835B2 (en) Data integration on retargetable engines in a networked environment
US9104514B2 (en) Automated deployment of applications with tenant-isolation requirements
US10048955B2 (en) Accelerating software builds
US8434070B2 (en) Generating specifications of client-server applications for static analysis
US20140344123A1 (en) Dynamically modifying workload patterns in a cloud
US10534581B2 (en) Application deployment on a host platform based on text tags descriptive of application requirements
US10282208B2 (en) Cognitive thread management in a multi-threading application server environment
US10877805B2 (en) Optimization of memory usage by integration flows
WO2022100439A1 (en) Workflow patching
US10255057B2 (en) Locale object management
US20180260246A1 (en) Runtime piggybacking of concurrent jobs in task-parallel machine learning programs
US11194631B2 (en) Resource schedule optimization
US20230316188A1 (en) Workflow transformation framework

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