KR20190131557A - 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법 - Google Patents

가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20190131557A
KR20190131557A KR1020197031867A KR20197031867A KR20190131557A KR 20190131557 A KR20190131557 A KR 20190131557A KR 1020197031867 A KR1020197031867 A KR 1020197031867A KR 20197031867 A KR20197031867 A KR 20197031867A KR 20190131557 A KR20190131557 A KR 20190131557A
Authority
KR
South Korea
Prior art keywords
node
processing
layout
nodes
data
Prior art date
Application number
KR1020197031867A
Other languages
English (en)
Other versions
KR102549994B1 (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 KR20190131557A publication Critical patent/KR20190131557A/ko
Application granted granted Critical
Publication of KR102549994B1 publication Critical patent/KR102549994B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Image Generation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 기술은 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정하기 위한 것이다. 본 기술은: 데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드에서의 노드 간의 데이터플로우를 나타내고, 복수의 노드는: 제1 세트의 하나 이상의 노드; 및 제1 노드 세트로부터 분리된 하나 이상의 제2 노드 세트를 포함함 -; 제1 노드 세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것; 및 제1 처리 레이아웃 세트 및 하나 이상의 레이아웃 결정 규칙에 기초하여, 제2 노드 세트에서의 각 노드에 대한 처리 레이아웃을 결정하는 것 - 하나 이상의 레이아웃 결정 규칙은 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함함 - 을 포함한다.

Description

가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법
관련 출원에 대한 상호 참조
본 출원은 2017년 3월 29일에 출원된 "가변 레벨 병렬화(VARIABLE LEVEL PARALLELISM)를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법"이라는 명칭의 미국 가출원 일련번호 제62/478,390호의 35 U.S.C. §119(e) 하에서의 이익을 주장하며, 그 전체가 본원에 참조로서 포함된다.
데이터 처리 시스템은 데이터를 처리하기 위해 하나 이상의 컴퓨터 프로그램을 사용할 수 있다. 데이터 처리 시스템에 의해 이용되는 하나 이상의 컴퓨터 프로그램은 데이터플로우(dataflow) 그래프로서 개발될 수 있다. 데이터플로우 그래프는 입력 데이터에 대해 수행될 데이터 처리 동작을 나타내는, "노드" 또는 "정점(vertices)"로 지칭되는, 컴포넌트 및 데이터의 플로우를 나타내는 컴포넌트 사이의 링크를 포함할 수 있다. 데이터플로우 그래프의 노드는 각각의 입력 데이터세트를 나타내는 하나 이상의 입력 노드, 각각의 출력 데이터세트를 나타내는 하나 이상의 출력 노드, 및 데이터에 대해 수행될 데이터 처리 동작을 나타내는 하나 이상의 노드를 포함할 수 있다. 데이터플로우 그래프에 의해 인코딩된 계산을 실행하는 기술은 "그래프로 표현된 계산 실행"이라는 명칭의 미국특허 제5,966,072호 및 "그래프 기반 계산을 위한 파라미터 관리"라는 명칭의 미국특허 제7,716,630호에 기술되어 있고, 이들 각각은 그 전체가 본원에 참조로서 포함된다.
일부 구현예는 데이터 처리 시스템에 관한 것이다. 데이터 처리 시스템은 적어도 하나의 컴퓨터 하드웨어 프로세서; 및 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, (A) 데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는: 제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -; 하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및 하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고; (B) 일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것; (C) 일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 것; 및 (D) 제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는, 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체를 포함한다.
일부 구현예는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, (A) 데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는: 제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -; 하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및 하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고; (B) 일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것; (C) 일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 것; 및 (D) 제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는, 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체에 관한 것이다.
일부 구현예는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, (A) 데이터플로우 그래프를 특정하는 정보를 획득하기 위한 수단 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는: 제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -; 하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및 하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고; (B) 일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하기 위한 수단; (C) 일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하기 위한 수단; 및 (D) 제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하기 위한 수단을 포함하는, 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체에 관한 것이다.
일부 구현예는, 방법으로서, (A) 데이터플로우 그래프를 특정하는 정보를 획득하는 단계 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는: 제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -; 하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및 하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고; (B) 일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 단계; (C) 일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 단계; 및 (D) 제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 단계를 수행하기 위해, 적어도 하나의 컴퓨터 하드웨어 프로세서를 사용하는 단계를 포함하는 방법에 관한 것이다.
일부 구현예는 데이터 처리 시스템에 관한 것이다. 데이터 처리 시스템은 적어도 하나의 컴퓨터 하드웨어 프로세서; 및 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, (A) 데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는: 제1 세트의 하나 이상의 노드; 및 제1 노드 세트로부터 분리된 하나 이상의 제2 노드 세트를 포함하고; (B) 제1 노드 세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것; 및 (C) 제1 처리 레이아웃 세트 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제2 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는, 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체를 포함한다.
일부 구현예는 데이터 처리 시스템에 관한 것이다. 데이터 처리 시스템은 적어도 하나의 컴퓨터 하드웨어 프로세서; 및 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, (A) 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금 데이터베이스 쿼리를 실행하게 하는 컴퓨터 코드를 획득하는 것 - 컴퓨터 코드는: 각각의 입력 데이터세트에서 판독하기 위한 데이터 처리 동작을 각각 나타내는 제1 세트의 하나 이상의 컴퓨터 코드 부분; 각각의 출력 데이터세트를 기록하기 위한 데이터 처리 동작을 각각 나타내는 제2 세트의 하나 이상의 컴퓨터 코드 부분; 각각의 데이터 처리 동작을 각각 나타내는 제3 세트의 하나 이상의 컴퓨터 코드 부분을 포함함 -; (B) 제1 세트의 코드 부분에서 하나 이상의 코드 부분에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것; (C) 제2 세트의 코드 부분에서 하나 이상의 코드 부분에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 것; 및 (D) 제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 세트의 코드 부분의 각 코드 부분에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는, 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체를 포함한다.
전술한 내용은 첨부된 청구 범위에 의해 정의된 본 발명의 비제한적인 요약이다.
다양한 양태 및 구현예가 하기의 도면을 참조하여 설명될 것이다. 도면은 반드시 일정한 비율로 도시된 것은 아님을 이해해야 한다. 다수의 도면에 나타나는 아이템은 이들이 나타나는 모든 도면에서 동일하거나 유사한 참조번호에 의해 표시된다.
도 1a는 각 노드가 동일한 처리 레이아웃과 연관되어 있는 예시적인 데이터플로우 그래프의 다이어그램이다.
도 1b는 본원에 설명된 기술의 일부 구현예에 따라, 제1 노드 세트의 노드에 대해 상이한 처리 레이아웃을 갖고 제2 노드 세트의 노드에 대해 결정된 처리 레이아웃을 갖지 않는 예시적인 데이터플로우 그래프의 다이어그램이다.
도 1c는 본원에 설명된 기술의 일부 구현예에 따라, 제2 노드 세트의 노드 및 각각의 재파티셔닝(repartitioning) 동작과 연관된 삽입 노드에 대해 결정된 처리 레이아웃을 도시하는 도 1b의 예시적인 데이터플로우 그래프의 다이어그램이다.
도 2는 본원에 설명된 기술의 일부 구현예에 따라, 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정함으로써 적어도 부분적으로 데이터플로우 그래프에 대한 처리 구성을 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 3a 내지 도 3d는 본원에 설명된 기술의 일부 구현예에 따라, 하나 이상의 처리 레이아웃 결정 규칙을 사용하여 예시적인 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정하는 것을 도시한다.
도 4a 내지 도 4c는 본원에 설명된 기술의 일부 구현예에 따라, 하나 이상의 레이아웃 결정 규칙을 사용하여 다른 예시적인 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정하는 것을 도시한다.
도 5a 내지 도 5d는 본원에 설명된 기술의 일부 구현예에 따라, 하나 이상의 레이아웃 결정 규칙을 사용하여 또 다른 예시적인 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정하는 것을 도시한다.
도 6은 본원에 설명된 기술의 일부 구현예가 동작할 수 있는 예시적인 컴퓨팅 환경의 블록도이다.
도 7은 본원에 설명된 기술의 일부 구현예를 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 시스템 환경의 블록도이다.
본원에 설명된 기술의 양태는 데이터플로우 그래프를 사용하여 데이터 처리 동작을 수행하기 위한 종래의 기술을 개선함으로써 데이터 처리 시스템의 속도 및 처리량을 증가시키는 것과 관련된다.
전술한 바와 같이, 데이터플로우 그래프의 노드는 하나 이상의 입력 데이터세트로부터 액세스된 데이터에 적용될 수 있는 각각의 데이터 처리 동작을 나타낼 수 있다. 데이터 처리 동작을 데이터에 적용하기 전에, 데이터 처리 동작을 수행하기 위한 처리 레이아웃이 결정될 필요가 있다. 처리 레이아웃은 데이터 처리 동작을 수행하기 위해 얼마나 많은 컴퓨팅 장치를 사용할 것인지 특정할 수 있고 사용될 특정 컴퓨팅 장치를 식별할 수 있다. 따라서, 데이터 처리 시스템이 데이터플로우 그래프를 사용하여 데이터를 처리할 수 있기 전에, 데이터플로우 그래프에서 노드에 대한 처리 레이아웃이 결정될 필요가 있다.
데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 자동으로 결정하기 위한 일부 종래의 기술은 모든 처리 레이아웃이 동일한 병렬도를 갖도록 그래프의 각 노드에 처리 레이아웃을 할당하는 것을 수반한다. 예를 들어, 그래프의 각 노드에는 데이터플로우 그래프의 노드에 의해 표현되는 각각의 데이터 처리 동작이 N 컴퓨팅 장치를 사용하여 수행되도록 특정하는 N-웨이 처리 레이아웃이 할당될 수 있으며, 여기서 N은 1 이상의 정수이다. 상이한 데이터 처리 동작이 상이한 그룹의 컴퓨팅 장치에 의해 수행될 수 있더라도, 그와 같은 각각의 그룹은 동일한 수의 컴퓨팅 장치(즉, N개의 장치)를 가져야 한다. 결과적으로, 종래 기술은 데이터플로우 그래프의 하나의 노드가 N-웨이 (N > 1) 처리 레이아웃을 갖는 것과 다른 노드가 M-웨이 (N≠M > 1) 처리 레이아웃을 갖는 것을 허용하지 않는다.
본 발명자는 상이한 병렬도를 갖는 처리 레이아웃이 데이터플로우 그래프의 상이한 노드에 할당될 수 있는 경우, 데이터 처리 시스템이 데이터를 보다 신속하고 효율적으로 처리할 수 있음을 인식하였다. 데이터플로우 그래프에 의해 표시되는 다른 데이터 처리 동작에 대해 다른 병렬도를 허용하는 것은 데이터플로우 그래프를 사용하는 모든 데이터 처리 시스템의 속도와 처리량을 크게 증가시킬 수 있다. 일례로서, 데이터플로우 그래프에 의해 액세스된 상이한 데이터세트가 상이한 병렬도를 사용하여 저장되는 상황을 고려한다. 예를 들어, 하나의 입력 데이터세트("A")는 단일 위치에 저장된 파일일 수 있고 다른 입력 데이터세트("B")는 분산 파일 시스템(예를 들어, 하둡(Hadoop) 분산 파일 시스템)을 사용하여 4개의 다른 위치에 저장될 수 있으며, 출력 데이터세트("C")는 분산 데이터베이스 시스템을 사용하여 3개의 다른 위치에 저장될 수 있다. 동일한 병렬도를 갖는 처리 레이아웃을 사용하여 이러한 모든 데이터 처리 동작을 수행하는 것보다, 직렬 처리 레이아웃을 사용하여 입력 데이터세트(A)에서 데이터를 판독하고, 4-웨이 병렬 처리 레이아웃을 사용하여 입력 데이터세트(B)에서 데이터를 판독하고, 3-웨이 병렬 처리 레이아웃을 사용하여 출력 데이터세트(C)에 데이터를 기록하는 것이 더 효율적일 수 있는데, 입력 및 출력 데이터세트의 병렬도와 일치하는 병렬도를 갖는 처리 레이아웃을 사용하는 것이 액세스 속도를 증가시키고, 이어서 그 안에 포함된 데이터를 처리하기 때문이다. 또한, 일부 데이터세트는 특정된 병렬도만을 사용하여 액세스(예를 들어, 판독 및/또는 기록)될 수 있다. 다른 데이터세트에는 상이한 병렬도가 필요할 수 있다. 그와 같은 데이터세트는 본원에 설명된 기술을 사용하지 않고 동일한 데이터플로우 그래프를 사용하여 액세스될 수 없다.
예를 들어, 각각의 필터링 동작을 나타내는 입력 노드(102a, 102b, 102c), 노드(104, 110, 및 111), 정렬 동작을 나타내는 노드(106), 각각의 결합 동작을 나타내는 노드(108 및 112), 및 출력 노드(114a 및 114b)를 포함하는 도 1a에 도시된 예시적인 데이터플로우 그래프(100)를 고려하자. 도 1a에 도시된 바와 같이, 노드(102a)로 나타낸 입력 데이터세트로부터의 데이터는 출력 노드(114a)로 나타낸 출력 데이터세트에 기록되기 전에, 노드(102b)로 나타낸 입력 데이터세트로부터의 데이터의 필터링된 버전과 필터링, 정렬 및 결합된다. 노드(102b)로 나타낸 입력 데이터세트로부터의 데이터는 또한 노드(114b)로 나타낸 출력 데이터세트에 기록되기 전에, 노드(102c)로 나타낸 입력 데이터세트로부터의 데이터와 필터링 및 결합된다. 도 1a에 도시된 바와 같이, 처리 레이아웃을 자동으로 결정하기 위한 종래의 기술을 적용하는 것은 동일한 병렬 처리 레이아웃(PL1)이 데이터플로우 그래프(100)의 각 노드에 할당되는 것을 초래한다. 한편, 입력 및 출력 데이터세트가 상이한 병렬도를 사용하여 저장된다면, 도 1b에 도시된 바와 같이, 그래프(100)의 상이한 노드에 상이한 처리 레이아웃을 할당하는 것이 필요할 수 있다.
본원에 설명된 일부 구현예는 본 발명자가 데이터플로우 그래프를 사용하여 데이터 처리 동작을 수행하기 위한 종래의 기술로 인식한 상술된 모든 문제를 해결한다. 그러나, 이하에 설명되는 모든 구현예가 이러한 문제를 모두 해결하지는 않으며, 일부 구현예는 이들 중 어느 것도 해결하지 못할 수 있다. 이와 같이, 본원에 설명된 기술의 구현예는 데이터플로우 그래프를 사용하여 데이터 처리 동작을 수행하기 위한 상술된 종래 기술의 모든 또는 일부의 문제를 해결하는 것으로 제한되지 않음을 이해해야 한다.
본원에 설명된 기술의 일부 구현예는 데이터플로우 그래프의 하나 이상의 노드에 의해 나타내는 데이터 처리 동작을 수행하기 위한 처리 레이아웃을 자동으로 결정하는 기술에 관한 것이다. 데이터플로우 그래프를 사용하여 계산을 수행하는 기존의 기술과 달리, 상이한 노드에 대해 결정된 처리 레이아웃은 동일할 필요가 없고 - 그래프의 다른 노드로 나타낸 데이터 처리 동작은 다른 처리 레이아웃을 사용하여, 특히 상이한 병렬도를 갖는 처리 레이아웃을 사용하여 수행될 수 있다.
본원에서 사용되는 바와 같이, 데이터플로우 그래프에서 노드에 대한 처리 레이아웃은 노드로 나타낸 데이터 처리 동작을 수행하는 데 사용되는 처리 레이아웃을 지칭한다. 예를 들어, 데이터플로우 그래프의 입력 노드에 대한 처리 레이아웃은 입력 노드로 나타낸 입력 데이터세트에서 데이터를 판독하는 데 사용되는 처리 레이아웃을 지칭한다. 다른 예로서, 데이터플로우 그래프의 출력 노드에 대한 처리 레이아웃은 출력 노드로 나타낸 출력 데이터세트에 데이터를 기록하는 데 사용되는 처리 레이아웃을 지칭한다. 또 다른 예로서, 데이터 처리 동작(예를 들어, 필터링 동작, 결합 동작, 롤업 동작 등)을 나타내는 노드에 대한 처리 레이아웃은 데이터 처리 동작을 수행하기 위한 처리 레이아웃을 지칭한다.
일부 구현예에서, 데이터 처리 동작을 나타내는 노드에 대한 처리 레이아웃은 동작을 수행하기 위해 사용될 병렬도를 표시하고 병렬도에 따라 동작을 수행하기 위해 사용될 컴퓨팅 장치(들)를 특정할 수 있다. 예를 들어, 노드에 대한 처리 레이아웃은 단일의 병렬도(즉, 병렬 처리가 아닌 직렬)를 갖는 직렬 처리 레이아웃일 수 있고 노드로 나타낸 데이터 처리 동작을 수행하는 데 사용되는 컴퓨팅 장치(예를 들어, 프로세서, 서버, 랩톱 등)를 특정할 수 있다. 다른 예로서, 노드에 대한 처리 레이아웃은 N 병렬도를 갖는 (N-웨이(여기서 N ≥ 1) 1 초과) 병렬 처리 레이아웃일 수 있고 노드로 나타낸 데이터 처리 동작을 수행하는 데 사용되는 N 컴퓨팅 장치를 특정할 수 있다. 일부 구현예에서, 노드에 대한 처리 레이아웃은 노드로 나타낸 데이터 처리 동작을 수행하기 위해 사용되는 하나 이상의 컴퓨팅 장치 및/또는 컴퓨팅 장치(들)에서 실행되는 하나 이상의 프로세스를 특정할 수 있다.
일부 구현예에서, 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정하는 것은: (A) 데이터플로우 그래프를 특정하는 정보를 획득하는 것; (B) 데이터플로우 그래프의 입력 노드에 대한 처리 레이아웃을 획득하는 것; (C) 데이터플로우 그래프의 출력 노드에 대한 처리 레이아웃을 획득하는 것; 및 (D) 입력 노드에 대한 처리 레이아웃, 출력 노드에 대한 처리 레이아웃, 및 하나 이상의 레이아웃 결정 규칙에 기초하여 하나 이상의 다른 노드(즉, 입력 또는 출력 노드가 아닌 노드)에 대한 처리 레이아웃을 결정하는 것을 포함할 수 있다. 입력 및 출력 노드 이외의 데이터플로우 그래프 노드는 본원에서 "중간" 노드로 지칭될 수 있다. 레이아웃 결정 규칙의 예는 본원에서 도 2를 참조하여 설명된다.
일부 구현예에서, 데이터플로우 그래프의 입력 및 출력 노드에 대해 획득된 처리 레이아웃 중 적어도 2개의 처리 레이아웃은 상이한 병렬도를 가질 수 있다. 예를 들어, 2개의 상이한 입력 노드에 대해 획득된 처리 레이아웃은 상이한 병렬도를 가질 수 있다. 다른 예로서, 2개의 상이한 출력 노드에 대해 획득된 처리 레이아웃은 상이한 병렬도를 가질 수 있다. 또 다른 예로서, 입력 노드에 대해 획득된 처리 레이아웃은 출력 노드에 대해 획득된 처리 레이아웃과 상이한 병렬도를 가질 수 있다. 그럼에도 불구하고, 본원에 설명된 기술은 입력 및 출력 노드에 대해 획득된 적어도 2개의 처리 레이아웃이 상이한 병렬도를 갖는 그래프의 노드에 대한 처리 레이아웃을 자동으로 결정하는 데 사용될 수 있다. 하나의 예시적인 예로서, 본원에 설명된 기술은 도 1b에 도시된 데이터플로우 그래프(100)의 처리 레이아웃을 결정하는 데 적용될 수 있다. 데이터플로우 그래프(100)의 입력 및 출력 노드는 3개의 상이한 처리 레이아웃(즉, 직렬 레이아웃 SL1, 병렬 레이아웃 PL1, 및 병렬 레이아웃 PL2)과 연관되며, 이들 처리 레이아웃은, 본원에 설명된 레이아웃 결정 규칙과 함께, 도 1c에 도시된 바와 같이 노드(104, 106, 108, 110, 111, 및 112)에 대한 처리 레이아웃을 자동으로 결정하는 데 사용될 수 있다.
일부 구현예에서, 데이터플로우 그래프의 하나 이상의 중간 노드에 대한 처리 레이아웃은: (1) 중간 노드의 적어도 일부(예를 들어, 전부)에 대한 초기 처리 레이아웃을 결정하기 위해 (입력 노드(들)로부터 출력 노드(들)로의) 순방향 패스를 수행하며; 이어서 (2) 중간 노드에 대한 최종 처리 레이아웃을 결정하기 위해 (출력 노드(들)로부터 입력 노드(들)로의) 역방향 패스를 수행함으로써 결정될 수 있다. 순방향 패스 동안, 초기 처리 레이아웃은 입력 노드에 할당된 처리 레이아웃 및 본원에 설명된 하나 이상의 레이아웃 결정 규칙에 기초하여 결정될 수 있다. 예를 들어, 노드(104, 106, 108, 110, 111, 및 112)에 대한 초기 처리 레이아웃은 노드(102a, 102b, 및 102c)에 할당된 처리 레이아웃에 기초하여 결정될 수 있다. 역방향 패스 동안, 중간 노드에 대한 최종 처리 레이아웃은 출력 노드(들)에 할당된 처리 레이아웃, 중간 노드의 적어도 일부에 할당된 초기 처리 레이아웃, 및 하나 이상의 레이아웃 결정 규칙에 기초하여 결정될 수 있다. 예를 들어, 노드(104, 106, 108, 110, 111, 및 112)에 대한 최종 처리 레이아웃은 순방향 패스 동안 이들 노드에 대해 결정된 초기 처리 레이아웃, 출력 노드(114a 및 114b)에 할당된 처리 레이아웃, 및 하나 이상의 레이아웃 결정 규칙에 기초하여 결정될 수 있다.
일부 구현예에서, 데이터플로우 그래프에서 노드에 대한 처리 레이아웃이 결정된 후(예를 들어, 순방향 패스 및 역방향 패스를 수행한 후), 데이터플로우 그래프는 상이한 병렬도를 갖는 처리 레이아웃을 사용하여 처리된 후 특정 병렬도를 갖는 처리 레이아웃을 사용하여 처리될 임의의 데이터에 대해 재파티셔닝 동작을 수행하도록 구성될 수 있다. 일부 구현예에서, 데이터플로우 그래프는 상이한 병렬도의 처리 레이아웃을 갖는 그래프의 인접 노드 간의 데이터 플로잉(flowing)에 대해 재파티셔닝 동작을 수행하도록 구성될 수 있다. 이러한 방식으로, 하나의 처리 레이아웃을 사용하여(N≥1의 N 컴퓨팅 장치를 사용하여) 처리되어진 데이터는 다른 처리 레이아웃을 사용하는(M≥1의 M≠N 컴퓨팅 장치를 사용하는) 후속 처리에 적합할 수 있다.
예를 들어, 도 1c에 도시된 바와 같이, 인접 노드(102a 및 104)는 레이아웃 중 하나가 직렬(처리는 하나의 컴퓨팅 장치를 사용하여 수행됨)이고 다른 하나는 병렬(처리는 다수의 컴퓨팅 장치를 사용하여 수행됨)이기 때문에 상이한 병렬도를 갖는 처리 레이아웃을 갖는다. 이와 같은 예에서, 데이터플로우 그래프는 노드(102a)로부터 노드(104)로의 데이터 플로잉을 파티셔닝하도록 구성될 수 있으므로, 단일 컴퓨팅 장치를 사용하여 노드(102a)에 대해 결정된 처리 레이아웃(SL1)에 따라 처리된 후, 다수의 컴퓨팅 장치를 사용하여 노드(104)에 대해 결정된 처리 레이아웃(PL1)에 따라 처리될 수 있다. 이를 위해, 데이터플로우 그래프는 병렬도(예를 들어, 키별 파티션 동작)를 증가시키는 재파티셔닝 동작을 수행하도록 구성될 수 있다. 또한, 동일한 예에서, 인접 노드(102b 및 111)는 상이한 처리 레이아웃을 가지고 인접 노드(112 및 114)는 상이한 처리 레이아웃을 가지며, 데이터플로우 그래프(100)는 노드(102)로부터 노드(111)로의 데이터 플로잉에 대한 재파티셔닝 동작 및 노드(112)로부터 노드(114)로의 데이터 플로잉에 대한 재파티셔닝 동작(예를 들어, 수집 동작)을 수행하도록 구성될 수 있다.
일부 구현예에서, 데이터플로우 그래프는 재파티셔닝 동작을 나타내는 노드로 그래프를 증강시킴으로써 (그래프가 실행될 때) 재파티셔닝 동작을 수행하도록 구성될 수 있다. 그래프가 실행될 때, 재파티셔닝 동작을 수행하도록 구성된 소프트웨어가 실행될 수 있다. 예를 들어, 도 1c에 도시된 바와 같이, 데이터플로우 그래프는 노드(130, 132, 및 134)로 증강될 수 있으며, 각 노드는 각각의 재파티셔닝 동작과 연관된다. 다른 구현예에서, 데이터플로우 그래프의 하나 이상의 기존 노드는 재파티셔닝 동작을 수행하도록 구성될 수 있고 새로운 노드는 추가되지 않는다.
일부 구현예에서, 데이터플로우 그래프의 노드(노드 "A")가 그래프의 다음 인접 노드(노드 "B")의 병렬도보다 높은 병렬도를 갖는 처리 레이아웃과 연관될 때, 데이터플로우 그래프는 노드 "A"로 나타낸 데이터 처리 동작에 따라 처리 된 후 및 노드 "B"로 나타낸 데이터 처리 동작에 따라 처리되기 전에 데이터에 대한 재파티셔닝 동작을 수행하도록 구성될 수 있다. 이 경우, 재파티셔닝 동작은 병렬도를 감소시킬 수 있으며, 예를 들어 수집 동작1 또는 병합 동작2일 수 있다. 예를 들어, 도 1c에 도시된 바와 같이, 노드(112)의 병렬 처리 레이아웃(PL2)은 다음 인접 노드(114b)의 직렬 처리 레이아웃(SL1)보다 높은 병렬도를 갖는다. 이와 같은 예에서, 수집 동작과 연관된 노드(134)가 노드(112 및 114b) 사이에 추가되었다.
일부 구현예에서, 데이터플로우 그래프의 노드(노드 "A")가 그래프의 다음 인접 노드(노드 "B")의 병렬도보다 낮은 병렬도를 갖는 처리 레이아웃과 연관될 때, 데이터플로우 그래프는 노드 "A"로 나타낸 데이터 처리 동작에 따라 처리된 후 및 노드 "B"로 나타낸 데이터 처리 동작에 따라 처리되기 전에 데이터에 대한 재파티셔닝 동작을 수행하도록 구성될 수 있다. 이 경우, 재파티셔닝 동작은 병렬도를 증가시킬 수 있으며, 예를 들어 키별 파티션 동작3, 라운드-로빈 파티션 동작, 범위별 파티션 동작4, 또는 임의의 다른 적절한 유형의 파티셔닝 동작일 수 있다. 예를 들어, 도 1c에 도시된 바와 같이, 노드(102a)의 직렬 처리 레이아웃(SL1)은 다음의 인접 노드(114b)의 병렬 처리 레이아웃(PL1)보다 낮은 병렬도를 갖는다. 유사하게, 이와 같은 예에서, 노드(102b)의 병렬 처리 레이아웃(PL1)은 노드(111)의 병렬 처리 레이아웃(PL2)보다 낮은 병렬도를 갖는다. 이와 같은 예에서, 키별 파티션 동작을 나타내는 노드(130)가 노드(102a 및 104) 사이에 추가되었으며, 라운드-로빈 파티션 동작을 나타내는 노드(132)가 병렬도의 원하는 감소를 달성하는 수집 동작을 수반하였다.
수집 동작1 : 다수의 데이터 레코드 세트에 대해 수행된 수집 동작은 단일의 데이터 레코드 세트의 정렬성을 반드시 유지할 필요없이 다수의 데이터 레코드 세트를 단일의 데이터 레코드 세트로 결합할 수 있음.
병합 동작2 : 다수의 데이터 레코드 세트에 대해 수행된 병합 동작은 단일의 데이터 레코드 세트의 정렬성을 유지하면서 다수의 데이터 레코드 세트를 단일의 데이터 레코드 세트로 결합할 수 있음.
키별 파티션 동작3 : 키별 파티션 동작에서, 동일한 필드(들)(예 : 동일한 칼럼(들))에 대해 동일한 값(들)을 갖는 데이터 레코드는 동일한 파티션에 할당됨.
범위별 파티션 동작4 : 범위별 파티션 동작에서, 상이한 파티션은 상이한 중복되지 않는 범위의 값과 연관되며, 범위 내의 필드 값을 갖는 모든 데이터 레코드는 범위와 연관된 파티션에 할당됨.
일부 구현예에서, 데이터플로우 그래프의 노드(노드 "A")가 그래프의 다음 인접 노드(노드 "B")의 병렬도와 동일한 병렬도를 갖는 처리 레이아웃과 연관될 때, 재파티셔닝 동작은 필요하지 않다.
일부 구현예에서, 데이터플로우 그래프의 중간 노드에 대한 처리 레이아웃은 그래프의 입력 및 출력 노드에 할당된 처리 레이아웃에 기초하여 결정될 수 있지만, 본원에 설명된 기술은 입력 및 출력 노드의 레이아웃으로부터 중간 노드의 레이아웃을 결정하는 것으로 제한되지 않는다. 일부 구현예에서, 예를 들어, 처리 레이아웃은 데이터플로우 그래프의 하나 이상의 노드의 임의의 서브세트에 대해 획득될 수 있고, 데이터플로우 그래프에서 임의의 다른 노드(들)에 대한 처리 레이아웃은 이와 같이 획득된 처리 레이아웃, 데이터플로우 그래프의 구조, 및 하나 이상의 레이아웃 결정 규칙에 기초하여 결정될 수 있다.
본원에 설명된 기술의 일부 구현예는 데이터 처리 시스템에 의해, 구조화된 쿼리 언어(SQL : Structured Query Language) 쿼리와 같은, 데이터베이스 쿼리를 관리하는 데 적용될 수 있다. 일부 구현예에서, 데이터 처리 시스템은: (1) 데이터베이스 쿼리(예를 들어, SQL 쿼리)를 수신하고; (2) SQL 쿼리를 실행하기 위한 쿼리 플랜(예를 들어, 데이터베이스 쿼리가 실행된 경우 수행될 수 있는 데이터베이스 동작을 나타내는 플랜)을 생성하고; (3) 쿼리 플랜으로부터 데이터플로우 그래프를 생성하며; (4) 데이터플로우 그래프를 실행함으로써 수신된 데이터베이스 쿼리를 적어도 부분적으로 실행할 수 있다. 이러한 구현예는 2015년 8월 25일에 특허된 "데이터 쿼리 관리"라는 명칭의 미국특허 제9,116,955호에 더욱 상세하게 설명되어 있으며, 그 전체가 본원에 참조로 포함된다. 미국특허 제9,116,955호는 2011년 5월 2일에 출원된 "데이터 쿼리 관리"라는 명칭의 미국특허 출원 일련번호 제13/098,823호로부터 성숙되었고, 이 출원은 그 전체가 본원에 참조로 포함된다.
일부 구현예에서, 본원에 설명된 기술은 데이터베이스 쿼리(예를 들어, SQL 쿼리)로부터, 자동으로, 생성된 데이터플로우 그래프의 하나 이상의 노드에 대한 처리 레이아웃을 자동으로 결정하기 위해 사용될 수 있다.
일부 구현예에서, 데이터 처리 시스템은: (1) 데이터베이스 쿼리(예를 들어, SQL) 쿼리를 수신하고; (2) 수신된 데이터베이스 쿼리를, 실행될 때 데이터베이스 쿼리를 실행하는 컴퓨터 코드 부분을 포함하는 컴퓨터 코드로 변환하며; (3) 각각의 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃을 자동으로 결정할 수 있다. 일부 구현예에서, 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃은 컴퓨터 코드 부분의 실행 순서를 나타내는 정보를 사용하여 결정될 수 있다. 예를 들어, 일부 구현예에서, 각각의 컴퓨터 코드 부분은 데이터플로우 그래프의 각 노드와 연관될 수 있으며, 그래프의 구조(예를 들어, 노드 사이의 연결에서 구현된 바와 같이)는 노드 및, 연계(association)에 의해 노드와 연관된 컴퓨터 코드 부분에 처리 레이아웃을 할당하는 데 사용될 수 있다. 그러나, 일부 구현예에서, 컴퓨터 코드 부분의 실행 순서를 나타내는 정보가 데이터플로우 그래프로 인코딩되는 것으로 제한되지 않기 때문에, 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃은 데이터플로우 그래프를 사용하지 않고 결정될 수 있음을 이해해야 한다.
본원에 설명된 구현예는 임의의 많은 방식으로 구현될 수 있음을 이해해야 한다. 특정 구현예는 단지 예시의 목적으로 이하에 제공된다. 본원에 설명된 기술의 양태가 이와 관련하여 제한되지 않기 때문에, 이들 구현예 및 제공된 특징/능력은 개별적으로, 모두 함께, 또는 둘 이상의 임의의 조합으로 사용될 수 있음을 이해해야 한다.
도 2는 본원에 설명된 기술의 일부 구현예에 따라, 데이터플로우 그래프의 노드에 처리 레이아웃을 할당함으로써 적어도 부분적으로 데이터플로우 그래프에 대한 처리 구성을 결정하기 위한 예시적인 프로세스(200)의 흐름도이다. 프로세스(200)는 임의의 적절한 시스템 및/또는 컴퓨팅 장치에 의해 수행될 수 있고, 예를 들어, 도 6을 참조하여 본원에 설명된 데이터 처리 시스템(602)에 의해 수행될 수 있다. 프로세스(200)가 설명된 후, 프로세스(200)의 일부 양태가 도 3a 내지 도 3d, 도 4a 내지 도 4c, 및 도 5a 내지 도 5d에 도시된 예를 참조하여 예시된다. 도 3a 내지 도 3d의 예가 프로세스(200)의 설명 후에 상세하게 설명되더라도, 이와 같은 예는 또한 설명의 명확성을 위해 프로세스(200)의 설명 전체에 걸쳐 참조된다.
프로세스(200)는 동작(202)에서 시작하고, 여기서 데이터플로우 그래프를 특정하는 정보가 액세스될 수 있다. 본원에 설명된 바와 같이, 데이터플로우 그래프는 다수의 노드를 포함할 수 있는데, 다수의 노드는: (a) 하나 이상의 각각의 입력 데이터세트를 나타내는 하나 이상의 입력 노드; (b) 하나 이상의 각각의 출력 데이터세트를 나타내는, 하나 이상의 출력 노드; 및/또는 (c) 데이터에 대해 수행될 수 있는 데이터 처리 동작을 나타내는 하나 이상의 노드를 포함한다. 데이터플로우 그래프의 노드 간의 직접 링크 또는 에지는 노드 간의 데이터플로우를 나타낸다. 따라서, 동작(202)에서, 노드(전술된 임의의 유형의 노드를 포함함) 및 데이터플로우 그래프의 링크를 특정하는 정보가 액세스될 수 있다. 이와 같은 정보는 임의의 적절한 소스, 임의의 적절한 데이터 구조(들)로부터 액세스될 수 있으며, 본원에 설명된 기술의 양태가 이와 관련하여 제한되지 않기 때문에, 임의의 적절한 포맷일 수 있다. 예를 들어, 도 3a 내지도 3d에 도시된 예를 참조하면, 동작(202)에서, 데이터플로우 그래프(300)를 특정하는 정보가 액세스될 수 있다. 이하에서 더욱 상세히 설명되는, 일부 구현예에서, 동작(202)에서 정보가 액세스되는 것에 관한 데이터플로우 그래프는 자동으로 생성될 수 있고, 예를 들어 SQL(structured query language) 쿼리로부터 자동으로 생성될 수 있다.
다음으로, 동작(204)에서, 동작(202)에서 액세스된 데이터플로우 그래프의 각각의 입력 노드(즉, 입력 데이터세트를 나타내는 각각의 노드)에 대한 처리 레이아웃이 획득될 수 있다. 예를 들어, 도 3a 내지 도 3d의 예를 참조하면, 동작(204)에서, 입력 노드(302 및 304)에 대한 처리 레이아웃이 획득될 수 있다. 일부 구현예에서, 입력 노드에 대한 처리 레이아웃은 입력 노드로 나타낸 입력 데이터세트로부터 데이터를 판독하기 위한 병렬도(예를 들어, 직렬, 2-웨이 병렬, 3-웨이 병렬, …, 임의의 적절한 정수 N에 대한 N-웨이 병렬)를 특정한다. 일부 구현예에서, 입력 노드에 대한 처리 레이아웃은 입력 데이터세트로부터 데이터를 판독하는 데 사용하기 위한 하나 이상의 컴퓨팅 장치 세트(예를 들어, 하나 이상의 프로세서, 서버, 및/또는 임의의 다른 적절한 장치 세트)를 식별한다.
입력 노드에 대한 처리 레이아웃은 임의의 적절한 방식으로 획득될 수 있다. 일부 구현예에서, 입력 노드에 대한 처리 레이아웃은 프로세스(200)의 실행 시작 전에 결정될 수 있고, 동작(204) 동안 이전에 결정된 처리 레이아웃에 액세스될 수 있다. 다른 구현예에서, 입력 노드에 대한 처리 레이아웃은 프로세스(200)의 실행 동안 동적으로 결정될 수 있다. 일부 구현예에서, 입력에 대한 처리 레이아웃은 프로세스(200)의 실행 시작 전에 부분적으로 결정될 수 있고, 미지의 정보는 프로세스(200)의 실행 동안 동적으로 결정된다. 예를 들어, 프로세스(200)의 실행 전에, 입력 노드에 대한 처리 레이아웃이 직렬 또는 병렬이지만, 입력 동작(예를 들어, 하나 이상의 소스로부터 데이터를 판독)을 수행하는 데 사용되는 특정 컴퓨팅 장치(들)가 프로세스(200)의 실행 동안 결정될 수 있음을 알 수 있다. 다른 예로서, 병렬 처리 레이아웃이 출력 노드에 할당될 것이지만, 병렬도는 런타임 동안 결정될 수 있음을 프로세스(200)의 실행 전에 알 수 있다.
입력 노드에 대한 처리 레이아웃이 프로세스(200)의 실행 전 또는 실행 동안 결정되는지 여부에 관계없이, 그 결정은 임의의 적절한 방식으로 이루어질 수 있다. 예를 들어, 일부 구현예에서, 입력 노드에 대한 처리 레이아웃은 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스, 구성 파일 등)를 통해 사용자에 의해 수동으로 특정될 수 있다. 다른 예로서, 일부 구현예에서, 입력 노드에 대한 처리 레이아웃은 데이터 처리 시스템에 의해 자동으로 결정될 수 있다. 예를 들어, 데이터 처리 시스템은 입력 노드로 나타낸 입력 데이터세트가 저장되는 방법에 기초하여 입력 노드에 대한 처리 레이아웃을 자동으로 결정할 수 있다. 예를 들어, 입력 데이터세트가 다수의 장치(예를 들어, 4대의 서버, 하둡 클러스터 사용 등)에 저장될 때, 데이터 처리 시스템 실행 프로세스(200)는 병렬 처리 레이아웃(예를 들어, 4-웨이 병렬 처리 레이아웃, 하둡 클러스터의 노드 수)이 입력 데이터세트로부터 데이터 레코드를 판독하는 데 사용될 것으로 결정할 수 있다.
다음으로, 동작(206)에서, 동작(202)에서 액세스된 데이터플로우 그래프의 각각의 출력 노드(즉, 출력 데이터세트를 나타내는 각각의 노드)에 대한 처리 레이아웃이 획득될 수 있다. 예를 들어, 도 3a 내지도 3d의 예를 참조하면, 동작(206)에서, 출력 노드(314)에 대한 처리 레이아웃이 획득될 수 있다. 일부 구현예에서, 출력 노드에 대한 처리 레이아웃은 출력 노드로 나타낸 출력 데이터세트에 데이터를 기록하기 위한 병렬도(예를 들어, 직렬, 2-웨이 병렬, 3-웨이 병렬, …, 임의의 적절한 정수 N에 대한 N-웨이 병렬)를 특정한다. 일부 구현예에서, 출력 노드에 대한 처리 레이아웃은 데이터를 출력 데이터세트에 기록하는 데 사용하기 위한 하나 이상의 컴퓨팅 장치 세트(예를 들어, 하나 이상의 프로세서, 서버, 및/또는 임의의 다른 적절한 장치 세트)를 식별한다.
출력 노드에 대한 처리 레이아웃은 임의의 적절한 방식으로 획득될 수 있다. 일부 구현예에서, 출력 노드에 대한 처리 레이아웃은 프로세스(200)의 실행 시작 전에 결정될 수 있고, 동작(206) 동안, 이전에 결정된 처리 레이아웃에 액세스될 수 있다. 다른 구현예에서, 출력 노드에 대한 처리 레이아웃은 프로세스(200)의 실행 동안 동적으로 결정될 수 있다. 일부 구현예에서, 출력 노드에 대한 처리 레이아웃은 프로세스(200)의 실행 시작 전에 부분적으로 결정될 수 있고, 미지의 정보는 프로세스(200)의 실행 동안 동적으로 결정된다. 예를 들어, 프로세스(200)의 실행 전에 출력 노드에 대한 처리 레이아웃이 직렬 또는 병렬이지만, 출력 동작(예를 들어, 하나 이상의 출력 데이터세트에 데이터를 기록)을 수행하는 데 사용되는 특정 컴퓨팅 장치(들)가 프로세스(200)의 실행 동안 결정될 수 있음을 알 수 있다. 다른 예로서, 병렬 처리 레이아웃이 출력 노드에 할당될 것이지만, 병렬도는 런타임 동안 결정될 수 있음을 프로세스(200)의 실행 전에 알 수 있다.
출력 노드에 대한 처리 레이아웃이 프로세스(200)의 실행 전 또는 실행 동안 결정되는지 여부에 관계없이, 그 결정은 입력 노드에 대한 처리 레이아웃을 결정하기 위해 전술된 임의의 방식을 포함하는 임의의 적절한 방식으로 이루어질 수 있다. 예를 들어, 출력 노드에 대한 처리 레이아웃은 사용자 인터페이스를 통해 사용자에 의해 수동으로 특정되거나 데이터 처리 시스템에 의해 자동으로 결정될 수 있다(예를 들어, 출력 노드로 나타낸 출력 데이터세트가 저장되는 방법에 기초하여).
다음으로, 프로세스(200)는 동작(208)으로 진행하고, 여기서 처리 레이아웃은 동작(204) 및 동작(206)에서 처리 레이아웃이 획득되어진, 입력 및 출력 노드 이외의 데이터플로우 그래프의 노드에 대해 결정된다. 일부 구현예에서, 중간 노드에 대한 처리 레이아웃은 중간 노드로 나타낸 데이터 처리 동작을 수행하기 위한 병렬도(예를 들어, 직렬, 2-웨이 병렬, 3-웨이 병렬, …, 임의의 적절한 정수 N에 대한 N-웨이 병렬)를 특정한다. 일부 구현예에서, 중간 노드에 대한 처리 레이아웃은 데이터 처리 동작을 수행하는 데 사용하기 위한 하나 이상의 컴퓨팅 장치 세트(예를 들어, 하나 이상의 프로세서, 서버, 및/또는 임의의 다른 적절한 장치 세트)를 식별한다.
일부 구현예에서, 중간 노드에 대한 처리 레이아웃은 입력 및 출력 노드에 대한 처리 레이아웃(동작 204 및 206에서 획득됨)을 사용함으로써 적어도 부분적으로 결정될 수 있다. 예를 들어, 도 3a 내지 도 3d의 예를 참조. 동작(208)에서, 중간 노드(306, 308, 310, 및 312)에 대한 처리 레이아웃은 입력 노드(302 및 304) 및 출력 노드(314)에 대한 처리 레이아웃을 사용하여 결정될 수 있다. 일부 구현예에서, 중간 노드에 대한 처리 레이아웃은 데이터플로우 그래프의 구조 및 하나 이상의 레이아웃 결정 규칙에 기초하여 추가로 결정될 수 있다.
일부 구현예에서, 레이아웃 결정 규칙은 데이터플로우 그래프에서 노드에 대한 처리 레이아웃이 데이터플로우 그래프의 하나 이상의 다른 노드에 대한 처리 레이아웃에 기초하여 결정될 수 있는 방법을 특정할 수 있다. 예를 들어, 일부 구현예에서, 레이아웃 결정 규칙은 임의의 처리 레이아웃과 연관되지 않은, 특정 노드에 대한 처리 레이아웃이 그래프의 특정 노드에 인접한 하나 이상의 다른 노드에 대한 처리 레이아웃(들)에 기초하여 결정될 수 있는 방법을 특정할 수 있다. 하나의 예시적인 예로서, 도 3a의 예를 참조하면, 레이아웃 처리 규칙은 입력 노드(302)에 대한 처리 레이아웃에 기초하여 중간 노드(306)에 대한 처리 레이아웃을 결정하는 방법을 특정할 수 있다. 다른 예시적인 예로서, 노드(308 및 310)에 대한 처리 레이아웃이 결정되면, 레이아웃 처리 규칙은 노드(308 및 310)에 대해 결정된 처리 레이아웃에 기초하여 노드(312)에 대한 처리 레이아웃을 결정하는 방법을 특정할 수 있다.
다른 예로서, 일부 구현예에서, 레이아웃 결정 규칙은 특정 처리 레이아웃 및 그래프의 특정 노드에 인접한 하나 이상의 다른 노드의 처리 레이아웃에 기초하여, 특정 처리 레이아웃과 이미 연관된, 특정 노드에 대한 처리 레이아웃을 결정하는 방법을 특정할 수 있다. 하나의 예시적인 예로서, 도 3c의 예를 참조하면, 노드(312)에 대한 처리 레이아웃은 노드(312)에 대해 결정된 초기 처리 레이아웃(레이아웃 PL1) 및 출력 노드(314)에 대해 결정된 처리 레이아웃(레이아웃 SL2)에 기초하여 결정될 수 있다.
비제한적인 특정 레이아웃 결정 규칙의 비제한적인 예시적인 예가 하기에 설명된다. 일부 구현예에서, 본원에 설명된 예시적인 레이아웃 결정 규칙에 추가하여 또는 대신에 하나 이상의 다른 레이아웃 결정 규칙이 사용될 수 있음을 이해해야 한다. 본원에 설명된 하나 이상의 예시적인 레이아웃 규칙의 임의의 적절한 조합이 일부 구현예에서 사용될 수 있음을 또한 이해해야 한다. 본원에 설명된 기술의 양태가 이와 관련하여 제한되지 않기 때문에, 본원에 설명된 레이아웃 결정 규칙은 임의의 적절한 방식(예를 들어, 소프트웨어 코드, 하나 이상의 구성 파라미터 등을 사용하여)으로 구현될 수 있다.
일부 구현예에서, 하나의 예시적인 레이아웃 결정 규칙에 따르면, 아직 처리 레이아웃과 연관되지 않은 특정 노드에 대한 처리 레이아웃을 결정할 때, 특정 노드가 연관된 처리 레이아웃과 이웃(예를 들어, 데이터플로우 그래프의 특정 노드 바로 이전의 노드 또는 데이터플로우 그래프의 특정 노드 바로 다음의 노드)을 갖는 경우, 이웃 노드의 레이아웃은 특정 노드의 처리 레이아웃으로 결정될 수 있다. 이러한 방식으로, 이웃 노드의 처리 레이아웃은 특정 노드에 "복사"될 수 있다. 하나의 예시적인 예로서, 도 3a의 예에서, 노드(306)의 처리 레이아웃은 그 선행하는 이웃 노드(302)의 처리 레이아웃인 것으로 결정될 수 있다. 차례로, 노드(308)의 처리 레이아웃은 선행하는 노드(306)의 처리 레이아웃인 것으로 결정될 수 있다. 이 예에서 알 수 있는 바와 같이, 이와 같은 레이아웃 결정 규칙은 입력 노드(예를 들어, 노드(302))의 레이아웃을 하나 이상의 다른 노드(예를 들어, 노드(306, 308, 및 312))로 전파하기 위해 반복적으로 적용될 수 있다.
일부 구현예에서, 다른 예시적인 레이아웃 결정 규칙에 따르면, 특정 처리 레이아웃과 아직 연관되지 않은 특정 노드에 대한 처리 레이아웃을 결정할 때, 특정 노드가 연관된 처리 레이아웃과 다수의 이웃(예를 들어, 다수의 선행 이웃 또는 다수의 후속 이웃)을 갖는 경우, 특정 노드에 대한 처리 레이아웃은 그 이웃의 레이아웃 중에서 선택될 수 있다. 예를 들어, 도 3a의 데이터플로우 그래프에 대해, 노드(308 및 310)의 레이아웃이 결정되었지만 노드(312)의 레이아웃이 아직 결정되지 않았다고 가정하면, 노드(312)에 대한 레이아웃은 노드(308 및 310)에 대해 결정된 레이아웃 중 하나로 선택될 수 있다.
일부 구현예에서, 다른 예시적인 레이아웃 결정 규칙에 따르면, 특정 처리 레이아웃과 이미 연관된 특정 노드에 대한 처리 레이아웃을 결정할 때, 특정 노드가 각각의 처리 레이아웃과 연관된 하나 이상의 이웃을 갖는 경우, 특정 노드에 대한 레이아웃은 노드와 이미 연관된 특정 처리 레이아웃 및 그 이웃의 처리 레이아웃 중에서 선택함으로써 결정될 수 있다. 예를 들어, 도 3c에 도시된 바와 같이, 노드(312)는 초기 처리 레이아웃(PL1)과 연관되고 다른 처리 레이아웃(SL2)과 연관된 이웃 노드(314)를 갖는다. 이와 같은 예에서, 이들 2개의 레이아웃(즉, PL1 및 SL2) 중 하나는 노드(312)에 대한 업데이트된(예를 들어, 최종) 처리 레이아웃으로 선택될 수 있다.
상기로부터 알 수 있는 바와 같이, 일부 구현예에서, 특정 레이아웃 결정 규칙을 적용하는 것은 2 이상의 처리 레이아웃 중에서 하나의 처리 레이아웃을 선택하는 것을 수반한다. 이것은 다양한 방법으로 수행될 수 있다. 예를 들어, 일부 구현예에서, 2 이상의 처리 레이아웃의 그룹으로부터 노드에 대한 처리 레이아웃을 선택할 때, 가장 큰 병렬도를 갖는 처리 레이아웃이 선택될 수 있다. 예를 들어, 노드에 대한 처리 레이아웃을 N-웨이 병렬 처리 레이아웃(예를 들어, 10-웨이 병렬 레이아웃) 또는 M-웨이(M < N임) 병렬 처리 레이아웃(예를 들어, 5-웨이 병렬 레이아웃)으로 선택할 때, N-웨이 병렬 처리 레이아웃이 선택될 수 있다. 다른 예로서, 병렬 처리 레이아웃 및 직렬 처리 레이아웃으로부터 노드에 대한 처리 레이아웃을 선택할 때, 병렬 처리 레이아웃이 선택될 수 있다. 하나의 예시적인 예로서, 도 3b를 참조하면, 노드(312)에는 초기 직렬 처리 레이아웃(SL1)(예를 들어, 입력 노드(302)로부터 그 레이아웃을 전파한 결과로서)이 할당될 수 있고, 노드(310)에는 병렬 레이아웃(PL1)(예를 들어, 입력 노드(304)로부터 그 레이아웃을 전파한 결과로서)이 할당될 수 있다. 다음에, PL1과 SL1 사이에서와 같이, 레이아웃(PL1)이 분명히 보다 큰 병렬도를 갖기 때문에, 노드(312)에 대한 처리 레이아웃은 병렬 레이아웃(PL1)으로 업데이트될 수 있다.
다른 예로서, 일부 구현예에서, 동일한 병렬도를 갖는 처리 레이아웃 중에서 노드에 대한 처리 레이아웃을 선택할 때, 다수의 레코드를 처리하는 데 사용되는 처리 레이아웃이 선택될 수 있다. 예를 들어, 노드의 제1 선행 이웃에 할당되고 천만 개의 데이터 레코드를 처리하는 데 사용되는 4-웨이 레이아웃(PL1) 및 노드의 제2 선행 이웃에 할당되고 10,000개의 데이터 레코드를 처리하는 데 사용되는 4-웨이 레이아웃(PL2)으로부터 데이터플로우 그래프의 노드에 대한 처리 레이아웃을 선택할 때, 레이아웃(PL1)이 노드에 대해 선택될 수 있다. 이러한 방식으로, 노드와 연관된 데이터 처리 동작(예를 들어, 결합 동작)은 천만 개의 데이터 레코드를 처리하는 데 사용된 것과 동일한 처리 레이아웃(예를 들어, 동일한 컴퓨팅 장치)을 사용하여 수행될 수 있다. 결과적으로, 레이아웃(PL1 및 PL2)이 중첩되지 않는 컴퓨팅 장치 세트를 사용하여 구현될 때, 최대 10,000개의 데이터 레코드가 천만 개의 데이터 레코드를 처리하는 데 사용되는 컴퓨팅 장치로 이동될 필요가 있을 것이다. 한편, 레이아웃(PL2)이 선택된 경우, 가능한 천만 개의 모든 데이터 레코드가 10,000개의 데이터 레코드만을 처리하는 데 사용되는 컴퓨팅 장치로 이동될 필요가 있을 것이고, 이는 분명히 비효율적이다. 따라서, 다수의 레코드를 처리하는 데 사용되는 레이아웃을 선택하는 것은 데이터 처리 시스템의 성능을 향상시킬 수도 있다. 이것의 예는 도 4a 내지 도 4c를 참조하여 하기에 추가로 설명된다.
일부 구현예에서, 다른 예시적인 레이아웃 결정 규칙에 따르면, 처리 레이아웃이 데이터플로우 그래프의 입력 노드 및 출력 노드에 대해 결정된 후, 이들 처리 레이아웃은 후속적으로 변경되지 않는다. 이와 같은 규칙이 이용되는 구현예에서, 입력 및 출력 노드에 대한 처리 레이아웃이 동작(204 및 206)에서 획득된 후, 이들 처리 레이아웃은 후속적으로 변경되지 않는다.
일부 구현예에서, 다른 예시적인 레이아웃 결정 규칙에 따르면, 직렬 처리 레이아웃은 한계 동작을 나타내는 노드에 할당될 수 있으며, 이는 데이터 레코드 그룹에 적용될 때 고정된 수의 데이터 레코드를 출력하는 동작이다(예를 들어, 데이터 레코드가 이들 각각의 스코어에 기초하여 정렬된 후 상위 10개의 스코어를 갖는 데이터 레코드를 출력함).
일부 구현예에서, 데이터플로우 그래프의 하나 이상의 내부 노드는 미리 결정된 처리 레이아웃과 연관될 수 있다. 일부 구현예에서, 특정 유형의 노드는 미리 결정된 처리 레이아웃과 연관될 수 있다.
일부 구현예에서, 다른 예시적인 레이아웃 결정 규칙에 따르면, 처리 레이아웃이 데이터플로우 그래프의 특정 노드에 할당될 때, 특정 노드에 할당된 처리 레이아웃을 임의의 다른 노드로 전파하지 않도록 (예를 들어, 그래픽 사용자 인터페이스 또는 구성 파일과 같은 사용자 인터페이스를 통해 사용자에 의해) 표시가 제공될 수 있다. 예를 들어, 일부 구현예에서, 하나 이상의 입력 노드 및/또는 하나 이상의 출력 노드에 할당된 처리 레이아웃을 전파하지 않는다는 표시가 동작(204 및/또는 206)에서 입력 및/또는 출력 처리 레이아웃을 획득하는 것의 일부로서 제공될 수 있다.
이것의 예는 도 5a 내지 도 5d를 참조하여 하기에 추가로 설명된다.
전술된 레이아웃 결정 규칙 중 임의의 것이 프로세스(200)의 동작(208)에서 중간 노드에 대한 처리 레이아웃을 결정하는 데 사용될 수 있다. 전술된 레이아웃 결정 규칙 중 일부는 그 이웃에 이미 할당된 레이아웃에 기초하여 특정 노드에 대한 처리 레이아웃을 결정하는 방법을 특정한다는 점에서 "로컬"이지만, 일부 구현예에서, 이들 레이아웃 결정 규칙 중 하나 이상은 입력 및 출력 처리 노드에 대해 획득된 처리 레이아웃을 중간 노드로 전파하도록 반복적으로 적용될 수 있다. 이와 같은 전파는 임의의 적절한 방식으로 수행될 수 있다.
일부 구현예에서, 중간 노드에 대한 처리 레이아웃은: (1) 중간 노드의 적어도 일부(예를 들어, 전부)에 대한 초기 처리 레이아웃을 결정하기 위해 동작(208a)에서 순방향 패스를 수행하며; 그리고 (2) 중간 노드의 적어도 일부(예를 들어, 전부)에 대한 최종 처리 레이아웃을 결정하기 위해 동작(208b)에서 역방향 패스를 수행함으로써 동작(208)에서 결정될 수 있다.
순방향 패스 동안, 입력 노드(들)에 대해 획득된 처리 레이아웃은 본원에 설명된 하나 이상의 레이아웃 결정 규칙을 사용하여 데이터플로우 그래프의 중간 노드로 전파될 수 있다. 데이터플로우 그래프의 구조는 처리 레이아웃이 순방향 패스 동안 노드에 대해 결정되는 순서를 안내할 수 있다. 예를 들어, 입력 노드의 이웃에 대한 처리 레이아웃이 먼저 결정될 수 있고, 다음에 입력 노드의 이웃의 이웃에 대한 처리 레이아웃이 결정될 수 있으며, 입력 노드로부터의 모든 플로우가 출력 노드에서 그 끝까지 이어질 때까지 ... 계속된다. 하나의 예시적인 예로서, 도 3b를 참조하면, 입력 노드(302 및 304)에 대한 처리 레이아웃은 노드(306, 308, 310, 및 312)에 대한 초기 처리 레이아웃을 획득하기 위해 하나 이상의 레이아웃 결정 규칙을 사용하여 순방향 패스 동안 전파될 수 있다.
역방향 패스 동안, 출력 노드(들)에 대해 획득된 처리 레이아웃은 본원에 설명된 하나 이상의 레이아웃 결정 규칙을 사용하여 데이터플로우 그래프의 중간 노드로 전파될 수 있다. 순방향 패스의 경우에서와 같이, 데이터플로우 그래프의 구조는 처리 레이아웃이 역방향 패스 동안 노드에 대해 결정되는 순서를 안내할 수 있다. 예를 들어, 출력 노드의 이웃에 대한 처리 레이아웃이 먼저 결정될 수 있고,다음에 출력 노드의 이웃의 이웃에 대한 처리 레이아웃이 결정될 수 있으며, 출력 노드로부터의 모든 에지가 출력 노드에서 그 끝까지 이어질 때까지 ... 계속된다. 역방향 패스 동안의 수반되는 경로는 역방향이고, 순방향 패스에서 수반되는 경로의 역방향일 수 있다. 하나의 예시적인 예로서, 도 3c를 참조하면, 출력 노드(314)에 대한 처리 레이아웃 및 노드(306, 308, 310, 및 312)에 대한 초기 처리 레이아웃은 노드(306, 308, 310, 및 312)에 대한 최종 처리 레이아웃을 획득하기 위해 하나 이상의 레이아웃 결정 규칙과 함께 역방향 패스 동안 사용될 수 있다. 이것은 도 3a 내지 도 3d를 참조하여 하기에서 더 상세히 논의된다.
동작(208)에서 중간 노드에 대한 처리 레이아웃이 결정된 후, 프로세스(200)는 결정 블록(210)으로 진행하고, 여기서 데이터플로우 그래프의 임의의 인접 노드가 불일치 레이아웃을 갖는지 여부가 결정된다. 인접 노드("A" 및 "B")는 노드 A에 대해 결정된 처리 레이아웃이 노드 B에 대해 결정된 처리 레이아웃과 상이한 병렬도를 갖는 경우 불일치 레이아웃을 갖는다. 예를 들어, N-웨이(N > 1) 병렬 처리 레이아웃이 노드 A에 대해 결정되고 직렬 처리 레이아웃이 후속 노드 B에 대해 결정될 때, 노드는 불일치 레이아웃을 갖는다(N에서 1로의 전환이 있음). 다른 예로서, 직렬 처리 레이아웃이 노드 A에 대해 결정되고 M-웨이(M > 1) 병렬 처리 레이아웃이 다음 노드 B에 대해 결정될 때, 노드는 불일치 레이아웃을 갖는다(1에서 M으로의 전환이 있음). 다른 예로서, N-웨이 병렬 처리 레이아웃이 노드 A에 대해 결정되고 M-웨이 병렬 처리 레이아웃이 M ≠ N인, 인접 노드 B에 대해 결정될 때, 노드는 불일치 레이아웃을 갖는다 (N에서 M으로의 전환이 있음).
결정 블록(210)에서, 상이한 병렬도의 처리 레이아웃을 갖는 한 쌍의 인접 노드가 있다고 결정되면, 프로세스(200)는 동작(212)으로 진행하고, 여기서 데이터플로우 그래프는 하나 이상의 재파티셔닝 동작을 수행하도록 구성될 수 있다. 재파티셔닝 동작(들)은 하나의 수의 프로세서를 사용하는 하나의 처리 레이아웃을 사용하여 데이터 레코드가 처리되도록 하여, 다른 수의 프로세서를 사용하는 다른 처리 레이아웃을 사용하여 처리하기 위해 전환될 수 있게 한다. 재파티셔닝 동작의 예는 본원에서 설명되고, 예를 들어, 데이터의 처리에서 병렬도를 증가시키기 위한 재파티셔닝 동작(예를 들어, 키별 파티션 동작, 라운드 로빈 파티션 동작, 범위별 파티션 동작, 및/또는 임의의 다른 적절한 유형의 파티션 동작) 및 데이터의 처리에서 병렬도를 감소시키기 위한 재파티셔닝 동작(예를 들어, 병합 동작 및 수집 동작)을 포함한다. 예를 들어, 인접 노드 A와 B 사이에 N에서 1로의 전환이 있는 경우, 데이터플로우 그래프는 노드 A로 나타낸 동작에 따라 처리된 데이터의 병렬도를 (N에서 1로) 감소시키고 노드 B로 나타낸 동작에 따라 데이터가 처리되기 전에 재파티셔닝 동작을 수행하도록 구성될 수 있다. 다른 예로서, 인접 노드 A와 B 사이에 1에서 M으로의 전환이 있을 때, 데이터플로우 그래프는 노드 A로 나타낸 동작에 따라 처리된 데이터의 병렬도를 (1에서 M으로) 증가시키고 노드 B로 나타낸 동작에 따라 데이터가 처리되기 전에 재파티셔닝 동작을 수행하도록 구성될 수 있다. 또 다른 예로서, 인접 노드 A와 B 사이에 N에서 M으로의 전환이 있을 때, 데이터플로우 그래프는 노드 A로 나타낸 동작에 따라 처리된 데이터에 대한 병렬도를 (N에서 M으로) 변경하기 위해 그리고 노드 B에 의해 나타낸 동작에 의해 데이터가 처리되기 전에 다수의 재파티셔닝 동작을 수행하도록 구성될 수 있다. 다수의 재파티셔닝 동작은 병렬도를 (예를 들어, N에서 K로) 감소시키는 제1 재파티셔닝 동작 및 병렬도를 (예를 들어, K에서 M으로, 여기서 K는 N과 M의 공약수임) 증가시키는 제2 재파티셔닝 동작을 포함할 수 있다.
일부 구현예에서, 데이터플로우 그래프는 재파티셔닝 동작을 나타내는 새로운 노드를 추가함으로써 재파티셔닝 동작을 수행하도록 구성될 수 있다. 이것의 예는 하기에 설명되는 도 3d, 도 4c, 및 도 5d에 도시되어 있다. 이러한 구현예에서, 처리 레이아웃은 재파티셔닝 동작을 나타내는 노드에 대해 결정될 수 있다. 재파티셔닝 동작이 병렬도를 증가시킬 때(예를 들어, 키별 파티션 동작), 재파티셔닝 동작을 나타내는 노드에 할당된 처리 레이아웃은 선행 노드에 할당된 처리 레이아웃일 수 있다. 재파티셔닝 동작이 병렬도를 감소시킬 때(예를 들어, 병합 동작 또는 수집 동작), 재파티셔닝 동작을 나타내는 노드에 할당된 처리 레이아웃은 그래프의 후속 노드에 할당된 처리 레이아웃일 수 있다. 다른 구현예에서, 데이터플로우 그래프의 기존 노드는 재파티셔닝 동작을 수행하도록 구성될 수 있다.
일부 구현예에서, 프로세스(200)를 수행하는 데이터 처리 시스템은 특정 상황에서 특정 유형의 재파티셔닝 동작을 수행하기 위해 데이터플로우 그래프를 구성하도록 프로그래밍될 수 있다. 예를 들어, 일부 구현예에서, 데이터플로우 그래프가 병렬도를 감소시키기 위해 재파티셔닝 동작을 수행하도록 구성되고 데이터가 정렬될 때, 데이터의 정렬성이 재파티셔닝을 통해 유지되어야 한다면, 데이터플로우 그래프는 병렬도를 감소시키기 위해 병합 작업을 수행하도록 구성될 수 있다. 그렇지 않으면, 수집 동작이 병렬도를 감소시키기 위해 사용될 수 있다. 다른 예로서, 일부 구현예에서, 데이터플로우 그래프가 병렬도를 증가시키기 위해 재파티셔닝 동작을 수행하도록 구성될 때, 데이터의 특정 파티셔닝이 요구될 때, 데이터플로우 그래프는 특정 키 또는 키들에 대한 키별 파티션 동작을 수행하도록 구성될 수 있다. 그렇지 않으면, 라운드-로빈 파티션 동작 또는 다른 유형의 파티션 동작이 사용될 수 있다. 다른 예로서, 일부 구현예에서, 롤업 동작을 병렬 데이터에 적용하는 것은, 데이터가 롤업 키의 서브세트에서 아직 파티셔닝되지 않은 경우, 재파티셔닝을 요구할 수 있다. 이 경우, 롤업이 데이터의 양을 상당히 감소시키는 것으로 추정될 때(예를 들어, 적어도 10의 인자만큼), 이중 버블 롤업이 수행될 수 있다(즉, 먼저 소스 레이아웃 및 파티셔닝 스킴(scheme)에서의 롤업, 다음에 재파티션, 다음에 대상 레이아웃 및 파티셔닝 스킴에서의 제2 롤업).
한편, 결정 블록(210)에서, 상이한 병렬도의 처리 레이아웃을 갖는 인접 노드가 없거나, 상이한 병렬도의 레이아웃을 갖는 임의의 인접 노드에 대해, 적절한 재파티셔닝 로직이 데이터플로우 그래프에 추가 되었다고 결정되는 경우, 프로세스(200)는 완료된다.
일부 구현예에서, 처리 레이아웃이 프로세스(200)를 사용하여 할당된 후, 데이터플로우 그래프는 할당된 레이아웃에 따라 실행될 수 있다. 이러한 방식으로, 데이터플로우 그래프에서의 하나 이상의 데이터 처리 동작 각각은 그 데이터 처리 동작에 할당된 처리 레이아웃에 따라 실행된다.
일부 구현예에서, 프로세스(200)는 자동으로 생성된 데이터플로우 그래프에 적용될 수 있다. 예를 들어, 일부 구현예에서, 프로세스(200)는 SQL 쿼리로부터, 다른 데이터베이스 시스템에 의해 제공되는 쿼리를 특정하는 정보로부터, 및/또는 다른 데이터플로우 그래프로부터 자동으로 생성된 데이터플로우 그래프에 적용될 수 있다.
일부 구현예에서, 데이터플로우 그래프는: (1) SQL 쿼리를 수신하고; (2) 수신된 SQL 쿼리로부터 쿼리 플랜을 생성하며; (3) 쿼리 플랜으로부터 데이터플로우 그래프를 생성함으로써 SQL 쿼리로부터 생성될 수 있다. 차례로, 프로세스(200)는 이렇게 생성된 데이터플로우 그래프에 적용될 수 있다. (프로세스(200)가 적용될 수 있는 데이터플로우 그래프를 자동으로 생성하는 것의) 이들 3가지 동작 각각은 하기에서 더 상세하게 설명된다.
일부 구현예에서, SQL 쿼리는 사용자가 데이터 처리 시스템에 입력으로서 SQL 쿼리를 제공한 결과로서 데이터 처리 시스템(예: 예를 들어, 데이터 처리 시스템(602)과 같은 프로세스(200)를 실행하는 데이터 처리 시스템)에 의해 수신될 수 있다. 사용자는 그래픽 사용자 인터페이스 또는 임의의 다른 적절한 유형의 인터페이스를 통해 SQL 쿼리를 입력할 수 있다. 다른 구현예에서, SQL 쿼리는 다른 컴퓨터 프로그램에 의해 데이터 처리 시스템에 제공될 수 있다. 예를 들어, SQL 쿼리는 데이터 처리 시스템이 하나 이상의 SQL 쿼리를 실행하도록 구성된 컴퓨터 프로그램에 의해 제공될 수 있으며, 이들 각각은 사용자에 의해 특정되거나 자동으로 생성될 수 있다. SQL 쿼리는 임의의 적절한 유형일 수 있고, 본원에 설명된 기술의 양태가 이와 관련하여 제한되지 않기 때문에, 임의의 적절한 포맷으로 제공될 수 있다.
일부 구현예에서, 수신된 SQL 쿼리는 쿼리 플랜을 생성하는 데 사용될 수 있다. 생성된 쿼리 플랜은 SQL 쿼리가 실행된 경우 수행될 하나 이상의 데이터 처리 동작을 식별할 수 있다. 생성된 쿼리 플랜은 식별된 데이터 처리 동작이 실행될 순서를 추가로 특정할 수 있다. 이와 같이, 생성된 쿼리 플랜은 수신된 SQL 쿼리를 실행하기 위해 수행할 일련의 데이터 처리 동작을 나타낼 수 있다. 생성된 쿼리 플랜은 임의의 적절한 유형의 쿼리 플랜 생성기를 사용하여 생성될 수 있다. 쿼리 플랜을 생성하기 위한 일부 예시적인 기술은 "데이터 쿼리 관리"라는 명칭의 미국특허 제9,116,955호에 개시되어 있으며, 이는 그 전체가 본원에 참조로 포함된다.
차례로, 일부 구현예에서, 데이터플로우 그래프는 쿼리 플랜으로부터 생성될 수 있으며, 그 자체는 수신된 SQL 쿼리를 사용하여 생성되었다. 일부 구현예에서, 데이터플로우 그래프는 쿼리 플랜에서 식별된 데이터 처리 동작의 적어도 서브세트(예를 들어, 일부 또는 모든) 각각에 대한 노드를 포함하도록 데이터플로우 그래프를 생성함으로써 적어도 부분적으로 쿼리 플랜으로부터 생성될 수 있다. 일부 구현예에서, 쿼리 플랜의 단일 노드는 데이터플로우 그래프에서의 다수의 노드의 포함을 초래할 수 있다. 이어서, 쿼리 플랜에 특정된 데이터 처리 동작의 순서는 데이터플로우 그래프의 노드를 연결하는 링크를 생성하는 데 사용될 수 있다. 예를 들어, 생성된 쿼리 플랜이 제2 데이터 처리 동작 전에 제1 데이터 처리 동작이 수행됨을 나타낼 때, 생성된 데이터플로우 그래프는 제1 노드(제1 데이터 처리 동작을 나타냄) 및 제2 노드(제2 데이터 처리 동작을 나타냄) 및 제1 노드로부터 제2 노드로의 경로를 특정하는 하나 이상의 링크를 가질 수 있다.
일부 구현예에서, 쿼리 플랜으로부터 데이터플로우 그래프를 생성하는 것은 입력 및/또는 출력 데이터 소스를 나타내는 그래프에 하나 이상의 노드를 추가하는 것을 포함한다. 예를 들어, 데이터플로우 그래프를 생성하는 것은 SQL 쿼리의 실행 동안 데이터 레코드가 판독될 각각의 데이터 소스에 대한 입력 노드를 추가하는 것을 포함할 수 있다. 각각의 입력 노드는 각각의 데이터 소스와 연관된 파라미터 값으로 구성될 수 있다. 이들 값은 데이터 소스의 데이터 레코드에 액세스하는 방법을 나타낼 수 있다. 다른 예로서, 데이터플로우 그래프를 생성하는 것은 SQL 쿼리의 실행 동안 데이터 레코드가 기록될 각각의 데이터 싱크에 대한 출력 노드를 추가하는 것을 포함할 수 있다. 각각의 출력 노드는 각각의 데이터 싱크와 연관된 파라미터 값으로 구성될 수 있다. 이들 값은 데이터 레코드를 데이터 소스에 기록하는 방법을 나타낼 수 있다.
쿼리 플랜으로부터 생성된 데이터플로우 그래프는 쿼리 플랜 자체와는 다르다는 것을 이해해야 한다. 데이터플로우 그래프는 그래프 실행 환경(예를 들어, 협력 시스템(610) 또는 데이터플로우 그래프를 실행하기 위한 임의의 다른 적절한 실행 환경)을 사용하여 실행될 수 있는 반면, 쿼리 플랜은 그래프 실행 엔진에 의해 실행될 수 없다 - 데이터플로우 그래프를 생성하는 데 사용되는 중간 표현으로, SQL 쿼리를 실행하기 위해 그래프 실행 엔진에 의해 실행되는 데이터플로우 그래프이다. 쿼리 플랜은 실행할 수 없으며, 관계형 데이터베이스 관리 시스템의 맥락에서도, 실행 전략을 생성하기 위해 추가 처리가 필요하다. 반대로, 데이터플로우 그래프는 SQL 쿼리를 수행하기 위해 그래프 실행 엔진에 의해 실행 가능하다. 또한, 관계형 데이터베이스 시스템에 의한 추가 처리 후에도, 결과적인 실행 전략은 다른 유형의 데이터 소스 및/또는 데이터 싱크에서 데이터를 판독 및/또는 다른 유형의 데이터 소스 및/또는 데이터 싱크에 데이터를 기록하는 것을 허용하지 않는 반면, 데이터플로우 그래프는 이와 관련하여 제한되지 않는다.
일부 구현예에서, 쿼리 플랜으로부터 생성된 데이터플로우 그래프는 쿼리 플랜에 없는, 데이터 처리 동작을 나타내는 노드를 포함할 수 있다. 반대로, 일부 구현예에서, 쿼리 플랜으로부터 생성된 데이터플로우 그래프는 쿼리 플랜에 있는, 데이터 처리 동작을 나타내는 노드를 포함하지 않을 수 있다. 이러한 상황은 쿼리 플랜으로부터 데이터플로우 그래프를 생성하는 프로세스 동안 수행될 수 있는 다양한 최적화로 인해 발생할 수 있다. 일부 구현예에서, 데이터플로우 그래프는 데이터베이스 컴퓨터 시스템(예를 들어, 관계형 데이터베이스 관리 시스템)에서 수행되는 데이터베이스 동작 이외의 데이터 처리 동작을 나타내는 노드를 포함할 수 있다.
일부 구현예에서, 쿼리 플랜 및 데이터플로우 그래프는 상이한 유형의 데이터 구조로 구현될 수 있다. 예를 들어, 일부 구현예에서, 쿼리 플랜은 각각의 노드가 단일 부모 노드(예: 예를 들어, 이진 트리와 같은 트리)를 갖는 방향성(directed) 그래프로 구현될 수 있는 반면, 데이터플로우 그래프는 다수의 부모 노드를 갖는 적어도 하나의 노드를 가질 수 있는 방향성 비순환적 그래프로 구현될 수 있다.
프로세스(200)는 예시적이며 변형이 있다는 것을 이해해야 한다. 예를 들어, 도 2의 예시된 구현예에서, 중간 노드에 대한 처리 레이아웃은 역방향 패스가 수반되는 순방향 패스를 사용하여 결정되더라도, 다른 구현예에서, 처리 레이아웃은 대신에 순방향 패스가 수반되는 역방향 패스를 사용하여 결정될 수 있다. 다른 예로서, 예시된 구현예에서, 중간 노드에 대한 처리 레이아웃이 입력 및 출력 노드에 할당된 레이아웃에 기초하여 결정되었지만, 본원에 설명된 처리 레이아웃 결정 기술이 더 일반적으로 적용될 수 있다. 예를 들어, 처리 레이아웃은 데이터플로우 그래프의 하나 이상의 노드 세트에 대해 획득될 수 있으며 처리 레이아웃은: (1) 노드 세트에 대해 획득된 처리 레이아웃; (2) 데이터플로우 그래프의 링크 구조; 및 (3) 하나 이상의 레이아웃 결정 규칙에 기초하여 데이터플로우 그래프의 다른 노드에 대해 획득될 수 있다. 노드 세트는 입력 및 출력 노드를 포함할 수 있지만, 반드시 그럴 필요는 없다. 따라서, 노드 세트는 임의의 적절한 수(예를 들어, 0, 적어도 하나, 전부)의 입력 노드, 임의의 적절한 수(예를 들어, 0, 적어도 하나, 전부)의 출력 노드, 및 임의의 적절한 수(예를 들어, 0, 적어도 하나, 전부)의 다른 노드를 포함할 수 있다. 유일한 요구사항은 노드 세트가 비어 있지 않아야 한다는 것이다.
일부 구현예에서, 데이터 처리 시스템은: (1) 데이터베이스 쿼리(예를 들어, SQL) 쿼리를 수신하고; (2) 수신된 데이터베이스 쿼리를, 데이터 처리 시스템에 의해 실행될 때, 수신된 데이터베이스 쿼리를 실행하는 컴퓨터 코드 부분을 포함하는 컴퓨터 코드로 변환하며; (3) 각각의 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃을 자동으로 결정할 수 있다. 일부 구현예에서, 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃은 컴퓨터 코드 부분의 실행 순서를 나타내는 정보를 사용하여 결정될 수 있다. 예를 들어, 일부 구현예에서, 각각의 컴퓨터 코드 부분은 데이터플로우 그래프의 각각의 노드와 연관될 수 있고, 본원에 설명된 레이아웃 결정 규칙과 함께 그래프의 구조는 (예를 들어, 노드 사이의 연결에서 구현된 바와 같이) 처리 레이아웃을 노드에 할당하고, 연계에 의해, 노드와 연관된 컴퓨터 코드 부분에 처리 레이아웃을 할당하는 데 사용될 수 있다. 그러나, 일부 구현예에서, 컴퓨터 코드 부분의 실행 순서를 나타내는 정보가 데이터플로우 그래프로 인코딩되는 것으로 제한되지 않기 때문에, 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃은 데이터플로우 그래프를 사용하지 않고 결정될 수 있음을 이해해야 하며, 본원에 설명된 기술의 양태는 이와 관련하여 제한되지 않기 때문에, 임의의 다른 적절한 방식(예를 들어, 다른 유형의 데이터 구조 또는 데이터 구조)으로 인코딩될 수 있다.
따라서, 일부 구현예에서, 데이터 처리 시스템은 데이터 처리 시스템에 의해 실행될 때, 데이터 처리가 데이터베이스 쿼리를 실행하게 하는 컴퓨터 코드를 획득(예를 들어, 원격 소스로부터 및/또는 네트워크 연결을 통한 수신, 로컬 스토리지로부터의 액세스 등)할 수 있고, 컴퓨터 코드는: (A) 각각의 입력 데이터세트에서 판독하기 위한 데이터 처리 동작을 각각 나타내는 하나 이상의 제1 컴퓨터 코드 부분 세트; (B) 각각의 출력 데이터세트를 기록하기 위한 데이터 처리 동작을 각각 나타내는 하나 이상의 제2 컴퓨터 코드 부분 세트; 및 (C) 각각의 데이터 처리 동작을 각각 나타내는 하나 이상의 제3 컴퓨터 코드 부분 세트를 포함한다. 다음에, 데이터 처리 시스템은 컴퓨터 코드의 각각의 컴퓨터 코드 부분을 실행하기 위한 처리 레이아웃을 결정할 수 있다. 예를 들어, 일부 구현예에서, 데이터 처리 시스템은: (A) 제1 코드 부분 세트의 하나 이상의 코드 부분에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득(예를 들어, 수신, 액세스 등)하고; (B) 제2 코드 부분 세트의 하나 이상의 코드 부분에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하며; (C) 제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 본원에 설명된 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 코드 부분 세트의 각각의 코드 부분에 대한 처리 레이아웃을 결정할 수 있다.
일부 구현예에서, 컴퓨터 코드는 데이터베이스 쿼리로부터 생성될 수 있다. 예를 들어, 일부 구현예에서, 수신된 데이터베이스 쿼리(예를 들어, SQL 쿼리)는 쿼리 플랜으로 변환될 수 있고 쿼리 플랜은 컴퓨터 코드를 생성하도록 처리될 수 있다. 예를 들어, 쿼리 플랜은 (전술된 바와 같이) 복수의 노드 및 에지를 포함하는 데이터플로우 그래프로 변환될 수 있고, 컴퓨터 코드는 컴퓨터 코드 부분을 포함할 수 있고, 각각의 코드 부분은 데이터플로우 그래프의 노드로 나타낸 데이터 처리 동작을 수행하기 위한 코드를 포함한다. 이러한 방식으로, 일부 구현예에서, 컴퓨터 코드 부분은 데이터플로우 그래프의 각각의 노드와 연관될 수 있다.
컴퓨터 코드가 데이터플로우 그래프와 연관된 일부 구현예에서, 데이터플로우 그래프의 노드는: (A) 제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 각각의 입력 데이터세트를 나타내고, (전술된) 제1 컴퓨터 코드 부분 세트의 각각의 컴퓨터 코드 부분은 제1 노드 세트의 각각의 노드와 연관됨 -; (B) 하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 각각의 출력 데이터세트를 나타내고, (전술된) 제2 컴퓨터 코드 부분 세트의 각각의 컴퓨터 코드 부분은 제2 노드 세트의 각각의 노드와 연관됨 - ; 및 하나 이상의 제3 노드 세트 - 제3 노드 세트의 각각의 노드는 각각의 데이터 처리 동작을 나타냄 - 를 포함할 수 있다. 데이터 처리 시스템은: 하나 이상의 처리 레이아웃을 제3 노드 세트의 노드(들)에 할당하기 위해 (1) 제1 및 제2 노드 세트를 갖는 처리 레이아웃; (2) 본원에 설명된 하나 이상의 레이아웃 결정 규칙; 및 (3) (데이터 처리 동작 중의 순서를 나타내는) 그래프의 구조를 사용할 수 있다. 이들 처리 레이아웃은, 차례로, 제3 노드 세트의 노드와 연관된 컴퓨터 코드 부분을 실행하기 위해 데이터 처리 시스템에 의해 사용될 수 있다.
도 3a 내지 도 3d는 도 2를 참조하여 설명된 구현예를 포함하는 본원에 설명된 기술의 일부 구현예에 따라, 하나 이상의 레이아웃 결정 규칙을 사용하여 예시적인 데이터플로우 그래프(300)의 노드에 대한 처리 레이아웃을 결정하는 것을 도시한다. 다른 것들 중에서도, 도 3a 내지 도 3d의 예는, 일부 구현예에서, 상이한 병렬도를 갖는 2개의 상이한 처리 레이아웃으로부터 레이아웃을 선택함으로써 노드에 대한 처리 레이아웃을 결정할 때, 큰 병렬도를 갖는 처리 레이아웃이 노드에 대한 처리 레이아웃으로서 선택될 수 있음을 도시한다.
도 3a는 각각의 입력 데이터세트를 나타내는 노드(302 및 304); 각각의 데이터 처리 동작을 나타내는 노드(306, 308, 310, 및 312); 및 출력 데이터세트를 나타내는 노드(314)를 갖는 데이터플로우 그래프(300)를 도시한다. 데이터플로우 그래프(300)의 구조로부터 알 수 있는 바와 같이, 노드(302)로 나타낸 입력 데이터세트는 필터링되고, 정렬된 다음, 노드(314)로 나타낸 출력 데이터세트에 기록되기 전에 노드(304)로 나타낸 입력 데이터세트의 필터링된 버전과 결합된다. 이와 같은 예에서, 입력 및 출력 데이터세트에 대한 처리 레이아웃이 획득된 후에, 다음과 같이 결정될 수 있다: 도 3a에 도시된 바와 같이, 직렬 처리 레이아웃(SL1)은 노드(302)로 나타낸 데이터세트로부터 데이터를 판독하는 데 사용될 것이고, 병렬 레이아웃(PL1)은 노드(304)로 나타낸 데이터세트로부터 데이터를 판독하는 데 사용될 것이며, 직렬 처리 레이아웃(SL2)은 노드(314)로 나타낸 데이터세트에 기록하는 데 사용될 것이다. 각각의 직렬 처리 레이아웃(SL1 및 SL2)이 데이터가 직렬로(즉, 하나의 병렬도로) 처리될 것임을 나타내지만, 직렬 처리가 다른 프로세서들에 의해(예를 들어, 노드(302)로 나타낸 입력 데이터세트를 저장하는 데이터베이스의 프로세서에 의해 그리고 노드(314)로 나타낸 출력 데이터세트를 저장하는 다른 데이터베이스의 프로세서에 의해) 수행될 수 있기 때문에 이들 직렬 레이아웃이 동일할 필요는 없다는 것을 유의한다. 이와 같은 단계에서, 노드(306, 308, 310, 및 312)로 나타낸 데이터 처리 동작에 대한 처리 레이아웃은 아직 결정되지 않았다.
도 3b 및 도 3c는 노드(302, 304, 및 314)에 대해 획득된 처리 레이아웃에 기초하여 노드(306, 308, 310, 및 312)로 나타낸 데이터 처리 동작에 대한 처리 레이아웃을 결정하는 것을 예시한다. 먼저, 도 3b에 도시된 바와 같이, 초기 처리 레이아웃은 데이터플로우 그래프(300)의 구조 및 본원에 설명된 레이아웃 결정 규칙에 따라, 노드(302 및 304)로부터 시작하는 순방향 패스에서 노드(306, 308, 310, 및 312)에 대해 결정된다. 예를 들어, 노드(306)에 대한 처리 레이아웃은 데이터플로우 그래프의 선행하는 노드 - 노드(302)의 레이아웃에 기초하여 결정된다. 다음에, 노드(308)에 대한 처리 레이아웃은 데이터플로우 그래프에서 이를 선행하는 노드 - 노드(306)의 레이아웃에 기초하여 결정된다. 노드(310)에 대한 처리 레이아웃이 그 선행 노드(즉, 노드(304))의 레이아웃에 기초하여 결정되고 노드(308)에 대한 처리 레이아웃이 결정된 후, 노드(312)에 대한 처리 레이아웃은 노드(308 및 310)의 레이아웃에 기초하여 결정되고, 각각은 데이터플로우 그래프(300)의 노드(312)에 선행하여 연결된다.
이와 같은 예에서, 순방향 패스 동안, 노드(306) 바로 이전의 노드(302) 이외의 노드가 없고 노드(306)와 이미 연관된 레이아웃이 없기 때문에 노드(302)의 직렬 레이아웃(SL1)이 노드(306)로 나타낸 데이터 처리 동작을 수행하는 데 사용될 것으로 결정된다. 다음에, 노드(308)에 선행하는 노드(306) 이외의 노드가 없고 노드(308)와 이미 연관된 레이아웃이 없기 때문에 노드(306)의 레이아웃(SL1)이 노드(308)로 나타낸 데이터 처리 동작을 수행하는 데 사용될 것으로 결정된다. 유사하게, 노드(310)에 선행하는 노드(304) 이외의 노드가 없고 노드(310)와 이미 연관된 레이아웃이 없기 때문에 노드(304)의 병렬 레이아웃(PL1)이 노드(310)로 나타낸 데이터 처리 동작을 수행하는 데 사용될 것으로 결정된다. 이러한 방식으로, 레이아웃(SL1 및 PL1)은 그래프(300)를 통해 입력 노드(302 및 304)로부터 레이아웃이 아직 결정되지 않았고 단일의 선행 노드(즉, 이와 같은 예시적인 예에서, 노드(306, 308, 및 310))에 연결되는 임의의 노드로 전파된다.
순방향 패스 동안, 결합 동작을 나타내는 노드(312)에 대한 처리 레이아웃은 선행 노드(308)에 대한 직렬 레이아웃(SL1) 및 선행 노드(310)에 대한 병렬 레이아웃(PL1)으로부터 선택된다. 도 3b에 도시된 바와 같이, 병렬 레이아웃(PL1)은, 상이한 병렬도를 갖는 2 개의 잠재적 상이한 처리 레이아웃 중에서 선택될 때, 큰 병렬도를 갖는 처리 레이아웃이 선택될 것임을 나타내는 레이아웃 결정 규칙을 사용하여 순방향 패스 동안 노드(312)에 대해 선택된다. 병렬 처리 레이아웃(PL1)은 처리 레이아웃(SL1)보다 큰 병렬도를 가지기 때문에, 순방향 패스 동안 노드(312)에 대해 병렬 처리 레이아웃(PL1)이 선택된다.
다음으로, 도 3c에 도시된 바와 같이, 최종 처리 레이아웃은, 데이터플로우 그래프(300)의 구조, 도 3b에 도시된 초기 처리 레이아웃, 및 본원에 설명된 레이아웃 결정 규칙에 따라, 노드(314)로부터 시작하는 역방향 패스에서 노드(306, 308, 310, 및 312)에 대해 결정된다. 예를 들어, 노드(312)에 대한 최종 처리 레이아웃은 노드(312)에 대해 결정된 초기 처리 레이아웃 및 노드(314)의 레이아웃에 기초하여 결정된다. 노드(308)에 대한 최종 처리 레이아웃은 노드(308)에 대해 결정된 초기 처리 레이아웃 및 노드(312)에 대해 결정된 최종 처리 레이아웃에 기초하여 결정된다. 노드(306)에 대한 최종 처리 레이아웃은 노드(306)에 대해 결정된 초기 처리 레이아웃 및 노드(308)에 대해 결정된 최종 처리 레이아웃에 기초하여 결정된다. 노드(310)에 대한 최종 처리 레이아웃은 노드(310)에 대해 결정된 초기 처리 레이아웃 및 노드(312)에 대해 결정된 최종 처리 레이아웃에 기초하여 결정된다.
이와 같은 예에서, 역방향 패스 동안, 노드(312)에 대한 최종 처리 레이아웃은 순방향 패스 동안 노드(312)에 대해 결정된 초기 처리 레이아웃(PL1) 및 노드(314)와 연관된 직렬 처리 레이아웃(SL2)으로부터 선택된다. 도 3c에 도시된 바와 같이, 레이아웃(PL1)이 레이아웃(SL2)보다 큰 병렬도를 갖기 때문에 레이아웃(PL1)은 노드(312)에 대한 최종 처리 레이아웃인 것으로 결정된다. 노드(308)에 대한 최종 처리 레이아웃은 순방향 패스 동안 노드(308)에 대해 결정된 초기 레이아웃(SL1) 및 역방향 패스 동안 노드(312)에 대해 결정된 최종 처리 레이아웃(PL1)으로부터 선택된다. 도 3c에 도시된 바와 같이, 레이아웃(PL1)이 레이아웃(SL1)보다 큰 병렬도를 갖기 때문에 레이아웃(PL1)은 노드(308)에 대한 최종 처리 레이아웃인 것으로 결정된다. 노드(306)에 대한 최종 처리 레이아웃은 순방향 패스 동안 노드(306)에 대해 결정된 초기 레이아웃(SL1) 및 역방향 패스 동안 노드(308)에 대해 결정된 최종 처리 레이아웃(PL1)으로부터 선택된다. 도 3c에 도시된 바와 같이, 레이아웃(PL1)이 레이아웃(SL1)보다 큰 병렬도를 갖기 때문에 레이아웃(PL1)은 노드(304)에 대한 최종 처리 레이아웃인 것으로 결정된다. 순방향 패스 동안 노드(310)에 대해 결정된 초기 레이아웃은 PL1이고, 역방향 패스 동안 노드(312)에 대해 결정된 최종 레이아웃도 PL1이기 때문에 노드(310)에 대한 최종 처리 레이아웃은 PL1인 것으로 결정된다.
도 3c에 도시된 바와 같이, 처리 레이아웃이 데이터플로우 그래프(300)의 각 노드에 대해 결정된 후에, 데이터플로우 그래프(300)는 하나 이상의 재파티셔닝 동작을 수행하도록 구성될 수 있다. 본원에 설명된 바와 같이, 데이터플로우 그래프는 데이터플로우 그래프의 인접 노드가 상이한 병렬도를 갖는 처리 레이아웃을 사용하여 데이터 레코드에 대한 데이터 처리 동작을 수행하도록 구성될 때 데이터 레코드에 대한 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 3c에 도시된 바와 같이, 인접 노드(302(SL1) 및 306(PL1))에 대한 처리 레이아웃은 상이한 병렬도를 갖는다. 또한 인접 노드(312(PL1) 및 314(SL2))에 대한 처리 레이아웃은 상이한 병렬도를 갖는다.
일부 구현예에서, 데이터플로우 그래프는 재파티셔닝 동작을 나타내는 그래프에 새로운 노드를 추가함으로써 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 3d에 도시된 바와 같이, 파티션 동작(예를 들어, 키별 파티션 동작, PBKey)을 나타내는 새로운 노드(342)가 노드(302 및 306) 사이의 데이터플로우 그래프에 추가될 수 있다. 노드(342)를 갖는 데이터플로우 그래프에 따라 데이터 레코드가 처리될 때, 데이터 레코드는 노드(302)의 처리 레이아웃(SL1)을 사용하여 판독된 후, 하지만 노드(306)의 처리 레이아웃(PL1)을 사용하여 필터링되기 전에 노드(342)로 나타낸 파티셔닝 동작에 따라 파티셔닝된다. 파티셔닝 동작은 노드(308)의 레이아웃(SL1)에 따라 수행될 수 있다. 또한, 도 3d에 도시된 바와 같이, 병합 동작을 나타내는 새로운 노드(344)가 노드(312 및 314) 사이의 데이터플로우 그래프에 추가될 수 있다. 노드(344)를 갖는 데이터플로우 그래프에 따라 데이터 레코드가 처리될 때, 데이터 레코드는 노드(312)의 처리 레이아웃(PL1)을 사용하여 처리된 후, 하지만 노드(314)의 처리 레이아웃(SL2)을 사용하여 출력되기 전에 병합된다. 병합 동작은 노드(314)의 레이아웃(SL2)에 따라 수행될 수 있다.
도 3d의 예시적인 예에서, 데이터플로우 그래프(340)를 획득하기 위해 2 개의 새로운 노드가 데이터플로우 그래프(300)에 추가된다. 그러나, 일부 구현예에서, 데이터플로우 그래프는 그래프에 새로운 노드를 추가하지 않고 하나 또는 재파티셔닝 동작을 수행하도록 구성될 수 있음을 이해해야 한다. 일부 구현예에서, 하나 이상의 기존 노드의 각각은 각각의 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 3d의 예시적인 구현예에 도시된 바와 같이, 새로운 노드(342)를 추가하는 대신에, 노드(302) 또는 노드(306)가 파티셔닝 동작을 수행하도록 구성될 수 있다. 다른 예로서, 도 3d의 예시적인 구현예에 도시된 바와 같이, 새로운 노드(344)를 추가하는 대신에, 노드(312) 또는 노드(314)가 병합 동작을 수행하도록 구성될 수 있다.
도 4a 내지 도 4c는 도 2를 참조하여 설명된 구현예를 포함하여 본원에 설명된 기술의 일부 구현예에 따라, 하나 이상의 레이아웃 결정 규칙을 사용하여 예시적인 데이터플로우 그래프(400)의 노드에 대한 처리 레이아웃을 결정하는 것을 도시한다. 다른 것 중에서도, 도 4a 내지 도 4c의 예는, 일부 구현예에서, 동일한 병렬도를 갖는 2개의 처리 레이아웃으로부터 레이아웃을 선택함으로써 노드에 대한 처리 레이아웃을 결정할 때, 다수의 레코드에 적용되는 처리 레이아웃이 노드에 대한 처리 레이아웃으로서 선택될 수 있음을 도시한다.
도 4a는 각각의 입력 데이터세트를 나타내는 노드(402 및 404); 데이터 처리 동작을 나타내는 노드(406), 및 출력 데이터세트를 나타내는 노드(408)를 갖는 데이터플로우 그래프(400)를 도시한다. 데이터플로우 그래프(400)의 구조로부터 알 수 있는 바와 같이, N개의 데이터 레코드를 갖고 노드(402)로 나타낸 입력 데이터세트는 M개의 레코드를 가지며(M이 N 미만임) 노드(404)로 나타낸 입력 데이터세트와 결합된다. 데이터세트가 결합된 후, 이들은 노드(408)로 나타낸 출력 데이터세트에 기록된다. 이와 같은 예에서, 입력 및 출력 데이터세트에 대한 처리 레이아웃이 획득된 후에, 다음이 결정될 수 있다: 병렬 처리 레이아웃(PL1)은 노드(402)로 나타낸 데이터세트로부터 데이터를 판독하는 데 사용될 것이고, 병렬 처리 레이아웃(PL2)은 노드(404)로 나타낸 데이터세트로부터 데이터를 판독하는 데 사용될 것이며, 직렬 레이아웃(SL1)은 노드(408)로 나타낸 출력 데이터세트에 데이터 레코드를 기록하는 데 사용될 것이다. 처리 레이아웃(PL1 및 PL2)은 각각 동일한 병렬도를 갖는다. 이와 같은 단계에서, 노드(406)로 나타낸 결합 동작에 대한 처리 레이아웃은 아직 결정되지 않았다.
순방향 패스 동안, 데이터플로우 그래프(400)에서 노드(406)에 선행하는, 노드(402 및 404)에 대한 처리 레이아웃에 기초하여 초기 처리 레이아웃이 노드(406)에 대해 결정된다. 도시된 예에서, 노드(406)에 대한 초기 처리 레이아웃은 노드(402)와 연관된 처리 레이아웃(PL1)과 노드(404)와 연관된 처리 레이아웃(PL2) 중에서 선택된다. 각각의 레이아웃(PL1 및 PL2)이 동일한 병렬도를 갖더라도, PL1이 M < N 데이터 레코드의 처리에 적용되는(예를 들어, 노드(404)로 나타낸 입력 데이터세트로부터 M 데이터 레코드를 판독), 레이아웃(PL2)보다 다수의 레코드 N(예를 들어, 노드(402)로 나타낸 입력 데이터세트로부터 N 데이터 레코드를 판독)을 처리하는 데 적용되고 있기 때문에, 레이아웃(PL1)은 노드(406)에 대한 초기 처리 레이아웃으로 선택된다. 이와 같은 선택은 레이아웃(PL2)에 따라 결합 동작이 처리된 경우 이동해야 할 레코드의 수(예를 들어, N 레코드)보다 레이아웃(PL1)에 따라 노드(406)로 나타낸 결합 동작을 처리할 때 더 적은 수의 데이터 레코드가 이동될 필요가 있을 수 있기 때문에(예를 들어, M < N 레코드) 효율성의 목적을 위해 이루어질 수 있다.
다음으로, 역방향 패스 동안, 노드(406)에 대한 최종 처리 레이아웃은 노드(406)에 대해 결정된 초기 처리 레이아웃(PL1) 및 노드(408)와 연관된 처리 레이아웃(SL1)에 기초하여 결정된다. 레이아웃(PL1)이 레이아웃(SL1)보다 큰 병렬도를 갖기 때문에, PL1은 노드(406)에 대한 최종 처리 레이아웃인 것으로 결정된다. 따라서, 순방향 및 역방향 패스가 완료된 후, PL1은 도 4b에 도시된 바와 같이 노드(406)에 대한 최종 처리 레이아웃인 것으로 결정된다.
처리 레이아웃이, 도 4b에 도시된 바와 같이, 데이터플로우 그래프(400)의 각 노드에 대해 결정된 후, 데이터플로우 그래프(400)는 하나 이상의 재파티셔닝 동작을 수행하도록 구성될 수 있다. 본원에 설명된 바와 같이, 데이터플로우 그래프는 데이터플로우 그래프의 인접 노드가 상이한 병렬도를 갖는 처리 레이아웃을 사용하여 데이터 레코드에 대한 데이터 처리 동작을 수행하도록 구성될 때 데이터 레코드에 대한 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 4b에 도시된 바와 같이, 인접 노드(406(PL1) 및 408(SL1))에 대한 처리 레이아웃은 상이한 병렬도를 갖는다.
본원에서 논의된 바와 같이, 일부 구현예에서, 데이터플로우 그래프는 재파티셔닝 동작을 나타내는 그래프에 새로운 노드를 추가함으로써 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 4c에 도시된 바와 같이, 병합 동작을 나타내는 새로운 노드(407)가 데이터플로우 그래프(430)를 획득하기 위해 데이터플로우 그래프(400)에 추가될 수 있다. 노드(407)를 갖는 데이터플로우 그래프에 따라 데이터 레코드가 처리될 때, 데이터 레코드는 노드(406)의 처리 레이아웃(PL1)을 사용하여 처리된 후, 하지만 노드(408)의 처리 레이아웃(SL1)을 사용하여 출력되기 전에 병합된다. 병합 동작은 노드(408)의 레이아웃(SL1)에 따라 수행될 수 있다. 다른 구현예에서, 기존 노드 중 하나(예를 들어, 406 또는 408)는 그렇게 하기 위해 데이터플로우 그래프(400)에 새로운 노드를 추가하는 대신 병합 동작을 수행하도록 구성될 수 있다.
도 5a 내지 도 5d는 도 2를 참조하여 설명된 구현예를 포함하여 본원에 설명된 기술의 일부 구현예에 따라, 하나 이상의 레이아웃 결정 규칙을 사용하여 예시적인 데이터플로우 그래프(500)에서 노드에 대한 처리 레이아웃을 결정하는 것을 도시한다. 다른 것 중에서도, 도 5a 내지 도 5d의 예는, 일부 구현예에서, 처리 레이아웃이 다른 노드에 대한 처리 레이아웃을 결정할 때 특정 노드(들)를 넘어 전파되지 않아야 하는 특정 노드 또는 노드들에 대한 레이아웃으로서 지정될 수 있음을 도시한다.
도 5a는 다음을 갖는 데이터플로우 그래프(500)를 도시한다: 각각의 입력 데이터세트를 나타내는 노드(502 및 504); 각각의 데이터 처리 동작을 나타내는 노드(506, 508, 510, 및 512); 및 출력 데이터세트를 나타내는 노드(514). 데이터플로우 그래프(500)의 구조로부터 알 수 있는 바와 같이, 노드(502)로 나타낸 입력 데이터세트가 먼저 필터링되고, 다음에 필터링된 데이터에 대해 롤업 동작이 수행되며 롤업 동작의 결과로서 획득된 데이터 레코드는 노드(514)로 나타낸 출력 데이터세트에 기록되기 전에 노드(504)로 나타낸 입력 데이터세트의 필터링된 버전과 결합된다. 이와 같은 예에서, 입력 및 출력 데이터세트에 대한 처리 레이아웃이 획득된 후, 다음과 같이 결정될 수 있다: 도 5a에 도시된 바와 같이, 병렬 처리 레이아웃(PL1)은 노드(502)로 나타낸 입력 데이터세트로부터 데이터를 판독하는 데 사용될 것이고, 직렬 레이아웃(SL1)은 노드(504)로 나타낸 입력 데이터세트로부터 데이터를 판독하는 데 사용될 것이며, 직렬 처리 레이아웃(SL2)은 노드(514)로 나타낸 출력 데이터세트에 기록하는 데 사용될 것이다. 또한, 이와 같은 예에서, 처리 레이아웃(PL1)이 다른 노드로 전파되지 않는다는 표시가 획득될 수 있다. 이와 같은 표시는 임의의 적절한 방식으로 획득될 수 있으며, 예를 들어, 그래픽 사용자 인터페이스를 통해 사용자로부터 획득될 수 있다. 이와 같은 단계에서, 노드(506, 508, 510, 및 512)로 나타낸 데이터 처리 동작에 대한 처리 레이아웃은 아직 결정되지 않았다.
도 5b 및 도 5c는 노드(502, 504, 및 514)에 대해 획득된 처리 레이아웃에 기초하여 노드(506, 508, 510, 및 512)로 나타낸 데이터 처리 동작에 대한 처리 레이아웃을 결정하는 것을 도시한다. 먼저, 도 5b에 도시된 바와 같이, 초기 처리 레이아웃은 데이터플로우 그래프(500)의 구조 및 본원에 설명된 레이아웃 결정 규칙에 따라, 노드(502 및 504)로부터 시작하는 순방향 패스에서 노드(506, 508, 510, 및 512)에 대해 결정된다. 이와 같은 예에서, 노드(502)에 대한 처리 레이아웃(PL1)이 전파되지 않는다는 표시가 획득되었기 때문에, 레이아웃(PL1)은 필터링 동작을 나타내는 노드(506)에만 복사되지만(필터링 동작은 노드(502)로 나타낸 입력 데이터세트로부터 데이터 레코드를 판독하는 데 사용되는 레이아웃과 동일한 처리 레이아웃, 실제로 동일한 컴퓨팅 장치를 사용하여 수행될 수 있는 동작의 유형이기 때문에), 예를 들어, 롤업 동작을 나타내는 노드(508)와 같은 임의의 다른 노드에는 그렇지 않다.
따라서, 순방향 패스 동안, 노드(506)에 대한 초기 처리 레이아웃은 PL1인 것으로 결정되며, PL1이 노드(506)를 넘어 전파되지 않기 때문에 노드(508)에 대한 초기 처리 레이아웃은 결정되지 않는다. 후술하는 바와 같이, 노드(508)에 대한 처리 레이아웃은 역방향 패스에서 결정될 것이다.
또한, 순방향 패스 동안, 노드(510)에 대한 초기 처리 레이아웃은 노드(510)의 바로 이전의 노드(504) 이외의 노드가 없고 노드(510)와 이미 연관된 레이아웃이 없기 때문에 노드(504)의 직렬 레이아웃(SL1)인 것으로 결정된다. 차례로, 노드(510)가 특정 레이아웃과 연관된 노드(512)의 유일한 이전의 노드이기 때문에(전술된 바와 같이, 노드(508)가 노드(512)보다 선행하지만, 어떠한 초기 처리 레이아웃과도 연관되지 않음), 노드(510)에 대한 초기 처리 레이아웃(SL1)은 또한 노드(512)에 대한 초기 처리 레이아웃인 것으로 결정된다. 순방향 패스의 결과로서 결정된 초기 처리 레이아웃이 도 5b에 도시되어 있다. 노드(508)를 제외한, 모든 노드에는 초기 처리 레이아웃이 할당되었다.
다음에, 도 5c에 도시된 바와 같이, 최종 처리 레이아웃은 데이터플로우 그래프(500)의 구조, 도 5b에 도시된 초기 처리 레이아웃, 및 본원에 설명된 레이아웃 결정 규칙에 따라, 노드(514)로부터 시작하는 역방향 패스에서 노드(506, 508, 510, 및 512)에 대해 결정된다. 예를 들어, 노드(512)에 대한 최종 처리 레이아웃은 노드(512)에 대해 결정된 초기 처리 레이아웃 및 노드(514)와 연관된 처리 레이아웃에 기초하여 결정된다. 노드(508)에 대한 최종 처리 레이아웃은 노드(512)에 대해 결정된 최종 처리 레이아웃에 기초하여 결정된다(이와 같은 예에서 노드(508)에 대한 초기 레이아웃은 결정되지 않았다). 노드(506)에 대한 최종 처리 레이아웃은 노드(506)에 대해 결정된 초기 처리 레이아웃 및 노드(508)에 대해 결정된 최종 처리 레이아웃에 기초하여 결정된다. 노드(510)에 대한 최종 처리 레이아웃은 노드(510)에 대해 결정된 초기 처리 레이아웃 및 노드(512)에 대해 결정된 최종 처리 레이아웃에 기초하여 결정된다.
이와 같은 예에서, 역방향 패스 동안, 노드(512)에 대한 최종 처리 레이아웃은 순방향 패스 동안 노드(512)에 대해 결정된 초기 처리 레이아웃(SL1) 및 노드(514)와 연관된 직렬 처리 레이아웃(SL2)으로부터 선택된다. 도 5c에 도시된 바와 같이, 레이아웃(SL1)은 노드(512)에 대한 최종 처리 레이아웃인 것으로 결정된다. 노드(508)에 대한 최종 처리 레이아웃은 레이아웃(SL1)인 것으로 결정되는데, 이것이 노드(512)에 대한 최종 결정 레이아웃이고 노드(508)가 순방향 패스 후 임의의 초기 처리 레이아웃과 연관되지 않기 때문이다. PL1이 노드(508)에 대한 최종 처리 레이아웃인 것으로 결정된 레이아웃(SL1)보다 큰 병렬도를 갖기 때문에, 노드(506)에 대한 최종 처리 레이아웃이 PL1(노드(506)에 대해 결정된 초기 레이아웃)인 것으로 결정된다. 순방향 패스 동안 노드(510)에 대해 결정된 초기 레이아웃이 SL1이고 역방향 패스 동안 노드(512)에 대해 결정된 최종 레이아웃이 또한 SL1이기 때문에, 노드(510)에 대한 최종 처리 레이아웃은 SL1인 것으로 결정된다.
처리 레이아웃이 데이터플로우 그래프(500)의 각 노드에 대해 결정된 후, 도 5c에 도시된 바와 같이, 데이터플로우 그래프(500)는 하나 이상의 재파티셔닝 동작을 수행하도록 구성될 수 있다. 본원에 설명된 바와 같이, 데이터플로우 그래프는 데이터플로우 그래프의 인접 노드가 상이한 병렬도를 갖는 처리 레이아웃을 사용하여 데이터 레코드에 대한 데이터 처리 동작을 수행하도록 구성될 때 데이터 레코드에 대한 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 5c에 도시된 바와 같이, 인접 노드(506(PL1) 및 508(SL1))에 대한 처리 레이아웃은 상이한 병렬도를 갖는다.
본원에서 논의된 바와 같이, 일부 구현예에서, 데이터플로우 그래프는 재파티셔닝 동작을 나타내는 그래프에 새로운 노드를 추가함으로써 재파티셔닝 동작을 수행하도록 구성될 수 있다. 예를 들어, 도 5d에 도시된 바와 같이, 병합 동작을 나타내는 새로운 노드(532)가 데이터플로우 그래프(530)를 획득하기 위해 데이터플로우 그래프(500)에 추가될 수 있다. 데이터 레코드가 노드(532)를 갖는 데이터플로우 그래프에 따라 처리될 때, 노드(506)의 처리 레이아웃(PL1)을 사용하여 처리된 후, 하지만 노드(508)의 처리 레이아웃(SL1)을 사용하여 출력되기 전에 데이터 레코드가 수집된다. 수집 동작은 노드(508)의 레이아웃(SL1)에 따라 수행될 수 있다. 다른 구현예에서, 기존 노드 중 하나(예를 들어, 506 또는 508)는 그렇게 하기 위해 데이터플로우 그래프(500)에 새로운 노드를 추가하는 대신에 수집 동작을 수행하도록 구성될 수 있다.
도 6은 본원에 설명된 기술의 일부 구현예가 동작할 수 있는, 예시적인 컴퓨팅 환경(600)의 블록도이다. 환경(600)은 데이터 저장소(610, 612, 614, 및 616)에 액세스(예를 들어, 데이터를 판독 및/또는 데이터를 기록) 하도록 구성된 데이터 처리 시스템(602)을 포함한다. 각각의 데이터 저장소(610, 612, 614, 및 616)는 하나 이상의 데이터세트를 저장할 수 있다. 데이터 저장소는 임의의 적절한 방식으로 임의의 적절한 유형의 데이터를 저장할 수 있다. 데이터 저장소는 데이터베이스 시스템(예를 들어, 관계형 데이터베이스 시스템)을 사용하거나, 임의의 다른 적절한 방식으로 플랫 텍스트 파일, 스프레드시트와 같은 데이터를 저장할 수 있다. 일부 예에서, 데이터 저장소는 거래 데이터를 저장할 수 있다. 예를 들어, 데이터 저장소는 신용카드 거래, 전화 기록 데이터, 또는 은행 거래 데이터를 저장할 수 있다. 본원에 설명된 기술의 양태가 이와 관련하여 제한되지 않기 때문에, 데이터 처리 시스템(602)은 임의의 적절한 유형의 임의의 적절한 수의 데이터 저장소에 액세스하도록 구성될 수 있음을 이해해야 한다.
데이터 처리 시스템은 하나 이상의 사용자에게 데이터플로우 그래프를 생성하기 위한 인터페이스를 제공하는 그래픽 개발 환경(GDE : graphical development environment)(606)을 포함한다. GDE(606)를 사용하여 생성된 데이터플로우 그래프는 협력 시스템(610) 또는 데이터플로우 그래프를 실행하기 위한 임의의 다른 적절한 실행 환경을 사용하여 실행될 수 있다. 데이터플로우 그래프를 실행하기 위한 그래픽 개발 환경 및 환경의 양태는 "그래프로 나타낸 계산 실행"이라는 명칭의 미국특허 제5,966,072호 및 "그래프 기반 계산을 위한 파라미터 관리"라는 명칭의 미국특허 제7,716,630호에 개시되어 있고, 각각은 그 전체가 본원에 참고로 포함된다. GDE(606)를 사용하여 생성되거나 임의의 다른 적절한 방식으로 획득된 데이터플로우 그래프는 데이터 처리 시스템(602)의 일부인, 데이터플로우 그래프 저장소(608)에 저장될 수 있다.
데이터 처리 시스템(602)은 또한 병렬 처리 모듈(604)을 포함하는데, 이는 협력 시스템(610)에 의해 그 데이터플로우 그래프를 실행하기 전에 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정하도록 구성된다. 병렬 처리 모듈(604)은, 예를 들어, 도 2의 프로세스(200)를 참조하여 설명된 기술을 포함하여 본원에 설명된 임의의 기술을 사용하여 데이터플로우 그래프에서 노드에 대한 처리 레이아웃을 결정할 수 있다.
도 7은 본원에 설명된 기술이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(700)의 예를 도시한다. 컴퓨팅 시스템 환경(700)은 적절한 컴퓨팅 환경의 일 예일 뿐이며 본원에 설명된 기술의 사용 또는 기능성의 범위에 대한 어떤 제한을 제안하도록 의도되지 않는다. 컴퓨팅 환경(700)은 예시적인 동작 환경(700)에 도시된 구성요소 중 임의의 하나 또는 조합과 관련된 임의의 의존관계 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본원에 설명된 기술은 많은 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성으로 작동한다. 본원에 설명된 기술과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드 헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램 가능한 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이에 한정되는 것은 아니다.
컴퓨팅 환경은 프로그램 모듈과 같은 컴퓨터 실행 가능 명령을 실행할 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 본원에 설명된 기술은 또한 작업이 통신 네트워크를 통해 링크된 원격 처리 장치에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 모두에 위치될 수 있다.
도 7을 참조하면, 본원에 설명된 기술을 구현하기 위한 예시적인 시스템은 컴퓨터(710) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(710)의 구성요소는 처리 유닛(720), 시스템 메모리(730), 및 시스템 메모리를 포함하는 다양한 시스템 구성요소를 처리 유닛(720)에 결합시키는 시스템 버스(721)를 포함할 수 있지만 이에 한정되는 것은 아니다. 시스템 버스(721)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍처 중 하나를 사용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 임의의 것일 수 있다. 예로서, 이와 같은 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스(메자닌(Mezzanine) 버스라고도 알려짐)를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(710)는 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(710)에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있고, 휘발성 및 비-휘발성 매체, 분리형 및 비-분리형 매체 둘 모두를 포함한다. 예로서, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있으며, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비-휘발성, 분리형 및 비-분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(710)에 의해 액세스될 수 있는 임의의 다른 매체일 수 있지만, 이에 한정되는 것은 아니다. 통신 매체는 통상적으로 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 신호의 정보를 인코딩하는 방식으로 하나 이상의 그 특성이 설정되거나 변경된 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만, 이에 한정되는 것은 아니다. 상기 중 임의의 것의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(730)는 판독 전용 메모리(ROM)(731) 및 랜덤 액세스 메모리(RAM)(732)와 같은 휘발성 및/또는 비-휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 스타트 업(start-up) 동안과 같이, 컴퓨터(710) 내의 요소 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는, 기본 입출력 체계(BIOS; basic input/output system)(733)는 통상적으로 ROM(731)에 저장된다. RAM(732)은 통상적으로 처리 유닛(720)에 즉시 액세스 가능하고/가능하거나 현재 처리 유닛(720)에 의해 작동되는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 7은 운영 체제(734), 애플리케이션 프로그램(735), 다른 프로그램 모듈(736), 및 프로그램 데이터(737)를 도시하며, 이에 한정되는 것은 아니다.
컴퓨터(710)는 또한 다른 분리형/비-분리형, 휘발성/비-휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 7은 비-분리형, 비-휘발성 자기 매체로부터 판독하거나 그에 기록하는 하드 디스크 드라이브(741), 플래시 메모리와 같은 분리형, 비-휘발성 메모리(752)로부터 판독하거나 그에 기록하는 플래시 드라이브(751), 및 CD ROM 또는 다른 광학 매체와 같은 분리형, 비-휘발성 광학 디스크(756)로부터 판독하거나 그에 기록하는 광 디스크 드라이브(755)를 도시한다. 예시적인 연산 환경에서 사용될 수 있는 다른 분리형/비-분리형, 휘발성/비-휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다용도 디스크, 디지털 비디오 테이프, 솔리드 스테이트 RAM, 솔리드 스테이트 ROM 등을 포함하지만, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(741)는 통상적으로 인터페이스(740)와 같은 비-분리형 메모리 인터페이스를 통해 시스템 버스(721)에 접속되고, 자기 디스크 드라이브(751) 및 광 디스크 드라이브(755)는 통상적으로 인터페이스(750)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(721)에 접속된다.
전술되고 도 7에 도시된 드라이브 및 이들과 연관된 컴퓨터 저장 매체는, 컴퓨터(710)에 대해 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 7에서, 예를 들어 하드 디스크 드라이브(741)는 운영 체제(744), 애플리케이션 프로그램(745), 다른 프로그램 모듈(746), 및 프로그램 데이터(747)를 저장하는 것으로 도시되어 있다. 이들 구성요소는 운영 체제(734), 애플리케이션 프로그램(735), 다른 프로그램 모듈(736), 및 프로그램 데이터(737)와 동일하거나 상이할 수 있음에 유의한다. 운영 체제(744), 애플리케이션 프로그램(745), 다른 프로그램 모듈(746), 및 프로그램 데이터(747)는 최소한 이들이 상이한 복사본인 것을 나타내기 위해 여기에 상이한 번호가 부여된다. 사용자는 키보드(762) 및 일반적으로 마우스, 트랙볼 또는 터치 패드로 지칭되는 포인팅 장치(761)와 같은 입력 장치를 통해 컴퓨터(710)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 결합되는 사용자 입력 인터페이스(760)를 통해 처리 유닛(720)에 접속되지만, 다른 인터페이스 및 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 버스 구조에 의해 접속될 수 있다. 모니터(791) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(790)와 같은 인터페이스를 통해 시스템 버스(721)에 접속된다. 모니터 이외에도, 컴퓨터는 또한 스피커(797) 및 프린터(796)와 같은 다른 주변 출력 장치를 포함할 수 있고, 이는 출력 주변 인터페이스(795)를 통해 접속될 수 있다.
컴퓨터(710)는 원격 컴퓨터(780)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크 환경에서 작동할 수 있다. 원격 컴퓨터(780)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 메모리 저장 장치(781)만이 도 7에 도시되어 있지만, 통상적으로 컴퓨터(710)에 대해 전술한 많은 또는 모든 요소를 포함한다. 도 7에 도시된 논리적 접속은 근거리 통신망(LAN; local area network)(771) 및 광역 통신망(WAN; wide area network)(773)을 포함하지만, 또한 다른 네트워크를 포함할 수 있다. 이와 같은 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(710)는 네트워크 인터페이스 또는 어댑터(770)를 통해 LAN(771)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(710)는 통상적으로 인터넷과 같은 WAN(773)을 통해 통신을 설정하기 위한 모뎀(772) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(772)은, 사용자 입력 인터페이스(760), 또는 다른 적절한 메커니즘을 통해 시스템 버스(721)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(710) 또는 그 부분에 대하여 도시된 프로그램 모듈은, 원격 메모리 저장장치에 저장될 수 있다. 예로서, 한정되지 않고, 도 7은 메모리 장치(781) 상에 상주하는 원격 애플리케이션 프로그램(785)을 도시한다. 도시된 네트워크 접속은 예시적이며 컴퓨터 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있다고 이해될 것이다.
따라서 본 발명의 적어도 하나의 구현예에 대한 몇몇 양태를 설명하였으므로, 다양한 변경, 수정, 및 개선이 당업자에게 용이하게 발생할 수 있음을 이해해야 한다.
이와 같은 변경, 수정, 및 개선은 본원의 일부로서 의도되며, 본 발명의 사상 및 범위 내에 있는 것으로 의도된다. 또한, 본 발명의 장점이 표시되었지만, 본원에 설명된 기술의 모든 구현예가 설명된 모든 이점을 포함할 것이 아님을 이해해야 한다. 일부 구현예는 본원에서 유리한 것으로 설명된 임의의 특징을 구현하지 않을 수 있고, 몇몇 경우에 설명된 특징 중 하나 이상이 구현되어 다른 구현예를 달성할 수 있다. 따라서, 전술한 설명 및 도면은 단지 예시에 불과하다.
본원에 설명된 기술의 전술한 구현예는 수많은 방식으로 구현될 수 있다. 예를 들어, 구현예는 하드웨어, 소프트웨어 또는 이들의 조합을 사용하여 구현될 수 있다. 소프트웨어로 구현될 때, 소프트웨어 코드는 단일 컴퓨터에서 제공되거나 복수의 컴퓨터 간에 분산되든지 관계없이 임의의 적절한 프로세서 또는 프로세서 집합에서 실행될 수 있다. 이와 같은 프로세서는 CPU 칩, GPU 칩, 마이크로 프로세서, 마이크로 컨트롤러, 또는 코-프로세서와 같은 이름으로 당업계에 알려진 상업적으로 이용 가능한 집적 회로 구성요소를 포함하는, 집적 회로 구성요소에 하나 이상의 프로세서를 갖는, 집적 회로로서 구현될 수 있다. 대안으로, 프로세서는 ASIC과 같은 주문형 회로, 또는 프로그램 가능한 논리 장치를 구성함으로써 얻어지는 반주문형(semicustom) 회로로 구현될 수 있다. 또 다른 대안으로서, 프로세서는 상업적으로 이용 가능한, 반주문형 또는 주문형의 대형 회로 또는 반도체 장치의 일부분일 수 있다. 특정 예로서, 상업적으로 이용 가능한 일부 마이크로 프로세서는 이들 코어의 하나 또는 서브세트가 프로세서를 구성할 수 있도록 다수의 코어를 갖는다. 그러나, 프로세서는 임의의 적절한 포맷의 회로를 사용하여 구현될 수 있다.
또한, 컴퓨터는 랙-장착 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 태블릿 컴퓨터와 같은 다수의 형태로 구현될 수 있음을 이해해야 한다. 또한, 컴퓨터는 일반적으로 컴퓨터로 간주되지 않지만 PDA(Personal Digital Assistant), 스마트 폰 또는 임의의 다른 적절한 휴대용 또는 고정식 전자 장치를 포함하는 적절한 프로세싱 능력을 갖는 장치에 내장될 수 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 장치를 가질 수 있다. 이들 장치는, 무엇보다도 사용자 인터페이스를 제공하는 데 사용될 수 있다. 사용자 인터페이스를 제공하는 데 사용될 수 있는 출력 장치의 예는 출력의 시각적 표현을 위한 프린터 또는 디스플레이 스크린 및 출력의 청각적 표현을 위한 스피커 또는 다른 소리 발생 장치를 포함한다. 사용자 인터페이스에 사용될 수 있는 입력 장치의 예는 키보드, 및 마우스, 터치 패드, 및 디지털화 태블릿과 같은 포인팅 장치를 포함한다. 다른 예로서, 컴퓨터는 음성 인식 또는 다른 청취 가능한 포맷을 통해 입력 정보를 수신할 수 있다.
이와 같은 컴퓨터는 로컬 영역 네트워크 또는 엔터프라이즈 네트워크 또는 인터넷과 같은 광역 네트워크를 포함하는, 임의의 적절한 형태의 하나 이상의 네트워크에 의해 상호 접속될 수 있다. 이와 같은 네트워크는 임의의 적절한 기술에 기초할 수 있고 임의의 적절한 프로토콜에 따라 작동할 수 있고 무선 네트워크, 유선 네트워크 또는 광섬유 네트워크를 포함할 수 있다.
또한, 본원에 설명된 다양한 방법 또는 프로세스는 다양한 운영 체제 또는 플랫폼 중 임의의 하나를 채용하는 하나 이상의 프로세서 상에서 실행 가능한 소프트웨어로서 코딩될 수 있다. 또한, 이와 같은 소프트웨어는 다수의 적절한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 툴 중 임의의 것을 사용하여 기록될 수 있으며, 또한 프레임워크 또는 가상 머신에서 실행되는 실행 가능 기계 언어 코드 또는 중간 코드로서 컴파일링될 수 있다.
이와 같은 관점에서, 본 발명은 하나 이상의 컴퓨터 또는 다른 프로세서에서 실행될 때 상기 논의된 발명의 다양한 구현예를 구현하는 방법을 수행하는 하나 이상의 프로그램으로 인코딩된 컴퓨터 판독 가능 저장 매체(또는 복수의 컴퓨터 판독 가능 매체)(예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 콤팩트 디스크(CD), 광학 디스크, 디지털 비디오 디스크(DVD), 자기 테이프, 플래시 메모리, 필드 프로그래머블 게이트 어레이 또는 다른 반도체 장치의 회로 구성, 또는 다른 탠저블(tangible) 컴퓨터 저장 매체)로서 구현될 수 있다. 전술한 예로부터 명백한 바와 같이, 컴퓨터 판독 가능 저장 매체는 컴퓨터 실행 가능 명령을 비-일시적 형태로 제공하기에 충분한 시간 동안 정보를 보유할 수 있다. 이와 같은 컴퓨터 판독 가능 저장 매체 또는 매체들은 그 위에 저장된 프로그램 또는 프로그램들이 상기 논의된 바와 같이 본 발명의 다양한 양태를 구현하기 위해 하나 이상의 상이한 컴퓨터 또는 다른 프로세서 상에 로딩될 수 있도록 이동 가능한 것일 수 있다. 본원에 사용된 바와 같이, 용어 "컴퓨터 판독 가능 저장 매체"는 제조(즉, 제조 물품) 또는 기계로 간주될 수 있는 비-일시적 컴퓨터 판독 가능 매체만을 포함한다. 대안으로 또는 부가적으로, 본 발명은 전파 신호와 같은, 컴퓨터 판독 가능 저장 매체 이외의 컴퓨터 판독 가능 매체로서 구현될 수 있다.
용어 "프로그램" 또는 "소프트웨어"는 상기 논의된 바와 같이 본 발명의 다양한 양태를 구현하기 위해 컴퓨터 또는 다른 프로세서를 프로그램하기 위해 이용될 수 있는 임의의 유형의 컴퓨터 코드 또는 컴퓨터 실행 가능 명령의 세트를 지칭하는 일반적인 의미로 본원에서 사용된다. 또한, 이와 같은 구현예의 일 양태에 따르면, 실행될 때 본 발명의 방법을 수행하는 하나 이상의 컴퓨터 프로그램은 단일 컴퓨터 또는 프로세서 상에 상주할 필요는 없지만, 본 발명의 다양한 양태를 구현하기 위해 다수의 상이한 컴퓨터 또는 프로세서 사이에서 모듈 방식으로 분산될 수 있다는 것을 이해해야 한다.
컴퓨터 실행 가능 명령은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는, 프로그램 모듈과 같은 다양한 형태일 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 실시하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 구현예에서 요구되는 바와 같이 결합되거나 분산될 수 있다.
또한, 데이터 구조는 임의의 적절한 형태로 컴퓨터 판독 가능 매체에 저장될 수 있다. 예시의 단순화를 위해, 데이터 구조는 데이터 구조 내의 위치를 통해 관련된 필드를 갖는 것으로 나타낼 수 있다. 이와 같은 관계는 필드 간의 관계를 전달하는 컴퓨터 판독 가능 매체 내의 위치를 필드에 대한 저장장치에 할당함으로써 유사하게 달성될 수 있다. 그러나, 임의의 적절한 메커니즘이 데이터 요소 사이의 관계를 설정하는 포인터, 태그 또는 다른 메커니즘의 사용을 포함하여, 데이터 구조의 필드에서 정보 간의 관계를 설정하는 데 사용될 수 있다.
본 발명의 다양한 양태는 단독으로, 조합하여, 또는 전술한 구현예에서 구체적으로 논의되지 않은 다양한 배열로 사용될 수 있으며, 따라서 상기 설명에서 설명되거나 도면에 도시된 구성요소의 세부사항 및 배열에 대한 그 적용예에 한정되지 않는다. 예를 들어, 일 구현예에서 설명된 양태는 다른 구현예에서 설명된 양태와 임의의 방식으로 조합될 수 있다.
또한, 본 발명은 그 예가 제공되는 방법으로서 구체화될 수 있다. 방법의 일부로서 수행된 동작은 임의의 적절한 방법으로 명령될 수 있다. 따라서, 예시적인 구현예에서 순차적인 동작으로서 도시되었지만, 몇몇 동작을 동시에 수행하는 것을 포함할 수 있는, 도시된 것과 다른 순서로 동작이 수행되는 구현예가 구성될 수 있다.
또한, 일부 동작은 "사용자"에 의해 취해지는 것으로 설명된다. "사용자"는 단일 개인일 필요가 없고, 일부 구현예에서, "사용자"에 기인되는 동작은 컴퓨터 보조 도구 또는 다른 메커니즘과 결합하여 개인의 팀 및/또는 개인에 의해 수행될 수 있음을 이해해야 한다.
청구항 요소를 변경하기 위해 청구항에서 "제1", "제2", "제3" 등과 같은 서수 용어의 사용은 그 자체로는 다른 것 또는 방법의 동작이 수행되는 시간적 순서에 걸친 임의의 하나의 청구항 요소의 우선권, 우선순위, 또는 순서를 내포하지 않지만, 단지 청구항 요소를 구별하기 위해 특정 명칭을 갖는 하나의 청구항 요소를 동일한 명칭을 갖는(그러나 서수 용어의 사용을 위한) 다른 요소와 구별하기 위한 라벨로서 사용된다.
또한, 본원에서 사용된 어법 및 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안된다. 본원에서 "포함하는(including)", "포함하는(comprising)" 또는 "갖는(having)", "보유하는(containing)", "수반하는(involving)" 및 그의 변형의 사용은 이후에 나열된 항목 및 그의 등가물뿐만 아니라 추가적인 항목을 포괄하는 것을 의미한다.

Claims (45)

  1. 데이터 처리 시스템으로서,
    적어도 하나의 컴퓨터 하드웨어 프로세서; 및
    적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는:
    제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -;
    하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및
    하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고;
    일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것;
    일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 것; 및
    제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는,
    프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체를 포함하는, 데이터 처리 시스템.
  2. 제1항에 있어서, 일련의 입력 데이터세트는 제1 입력 데이터세트 및 제2 입력 데이터세트를 포함하고, 제1 노드 세트는 제1 입력 데이터세트와 연관된 제1 노드 및 제2 입력 데이터세트와 연관된 제2 노드를 포함하며, 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것은:
    제1 입력 데이터세트로부터 데이터를 판독하기 위한 제1 처리 레이아웃을 획득하는 것 - 제1 레이아웃은 제1 병렬도를 적어도 부분적으로 특정함 -; 및
    제2 입력 데이터세트로부터 데이터를 판독하기 위한 제2 처리 레이아웃을 획득하는 것 - 제2 처리 레이아웃은 적어도 부분적으로 특정된 제1 병렬도와 상이한 제2 병렬도를 적어도 부분적으로 특정함 -;을 포함하는, 데이터 처리 시스템.
  3. 제1항 또는 제2항 중 어느 한 항에 있어서,
    제1 노드 세트는 일련의 입력 데이터세트의 제1 입력 데이터세트와 연관된 제1 노드를 포함하고,
    제2 노드 세트는 일련의 출력 데이터세트의 제1 출력 데이터세트와 연관된 제2 노드를 포함하고,
    하나 이상의 제1 처리 레이아웃 세트를 획득하는 것은 제1 입력 데이터세트로부터 데이터를 판독하기 위한 제1 처리 레이아웃을 획득하는 것 - 제1 처리 레이아웃은 제1 병렬도를 적어도 부분적으로 특정함 - 을 포함하며,
    하나 이상의 제2 처리 레이아웃 세트를 획득하는 것은 제1 출력 데이터세트에 데이터를 기록하기 위한 제2 처리 레이아웃을 획득하는 것 - 제2 처리 레이아웃은 적어도 부분적으로 특정된 제1 병렬도와 상이한 제2 병렬도를 적어도 부분적으로 특정함 - 을 포함하는, 데이터 처리 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 일련의 출력 데이터세트는 제1 출력 데이터세트 및 제2 출력 데이터세트를 포함하고, 제2 노드 세트는 제1 출력 데이터세트와 연관된 제1 노드 및 제2 출력 데이터세트와 연관된 제2 노드를 포함하며, 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것은:
    제1 출력 데이터세트에 데이터를 기록하기 위한 제1 처리 레이아웃을 획득하는 것 - 제1 레이아웃은 적어도 부분적으로 제1 병렬도를 특정함 -; 및
    제2 출력 데이터세트에 데이터를 기록하기 위한 제2 처리 레이아웃을 획득하는 것 - 제2 처리 레이아웃은 적어도 부분적으로 특정된 제1 병렬도와 상이한 제2 병렬도를 적어도 부분적으로 특정함 - 을 포함하는, 데이터 처리 시스템.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것은:
    데이터플로우 그래프의 구조에 따라 그리고 제1 처리 레이아웃 세트 및 하나 이상의 레이아웃 결정 규칙을 사용하여 제1 노드 세트의 노드로부터 시작하여 수행되는 순방향 패스에서 제3 세트 노드 중 하나 이상의 노드에 대한 초기 처리 레이아웃을 결정하는 것; 및
    데이터플로우 그래프의 구조에 따라 그리고 제2 처리 레이아웃 세트 및 하나 이상의 레이아웃 결정 규칙을 사용하여 제2 노드 세트의 노드로부터 시작하여 수행되는 역방향 패스에서 제3 노드 세트의 각 노드에 대한 최종 처리 레이아웃을 결정하는 것을 포함하는, 데이터 처리 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 제3 노드 세트는 제1 노드를 포함하고, 복수의 에지는 데이터플로우 그래프에서 제1 노드와 제1 노드에 선행하는 제2 노드 간의 제1 에지를 포함하며, 제3 노드 세트의 각 노드에 대한 초기 처리 레이아웃을 결정하는 것은:
    제2 노드에 대해 결정된 처리 레이아웃에 기초하여 제1 노드에 대한 제1 초기 처리 레이아웃을 결정하는 것을 포함하는, 데이터 처리 시스템.
  7. 제6항 또는 선행하는 청구항 중 어느 한 항에 있어서, 복수의 에지는 데이터플로우 그래프에서 제1 노드와 제1 노드에 선행하는 제3 노드 간의 제2 에지를 포함하고, 제3 초기 처리 레이아웃은 제3 노드와 연관되며, 제1 노드에 대한 제1 초기 처리 레이아웃을 결정하는 것은:
    제2 및 제3 처리 레이아웃 중 하나를 제1 처리 레이아웃으로 선택하는 것을 포함하는, 데이터 처리 시스템.
  8. 제7항 또는 선행하는 청구항 중 어느 한 항에 있어서, 제2 초기 처리 레이아웃은 제1 병렬도를 특정하고, 제3 초기 처리 레이아웃은 제1 병렬도와 상이한 제2 병렬도를 특정하며, 선택하는 것은:
    제1 병렬도가 제2 병렬도를 초과하는 경우 제2 처리 레이아웃을 선택하는 것; 및
    제1 병렬도가 제2 병렬도 미만인 경우 제3 처리 레이아웃을 선택하는 것을 포함하는, 처리 시스템.
  9. 제7항 내지 제8항 중 어느 한 항에 있어서, 제2 초기 처리 레이아웃 및 제3 초기 처리 레이아웃은 각각 동일한 병렬도를 특정하고, 제1 에지는 제1 개수의 데이터 레코드에 대한 데이터플로우를 나타내고, 제2 에지는 제2 개수의 데이터 레코드에 대한 데이터플로우를 나타내며, 선택하는 것은:
    제1 개수의 데이터 레코드가 제2 개수의 데이터 레코드를 초과하는 경우 제2 처리 레이아웃을 선택하는 것; 및
    제1 개수의 데이터 레코드가 제2 개수의 데이터 레코드 미만인 경우 제3 처리 레이아웃을 선택하는 것을 포함하는, 데이터 처리 시스템.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 결정하는 동안, 제1 처리 레이아웃은 제3 노드 세트 중 제1 노드에 대해 결정되고, 제1 처리 레이아웃은 제1 병렬도를 특정하고,
    그래프에서 제1 노드의 바로 이전의 제2 노드에 대한 제2 처리 레이아웃은 제1 병렬도와 상이한 제2 병렬도를 특정하며,
    프로세서 실행 가능 명령은 추가로 적어도 하나의 컴퓨터 하드웨어 프로세서가 적어도 하나의 재파티셔닝 동작을 수행하도록 데이터플로우 그래프의 적어도 하나의 노드를 구성하게 하는, 데이터 처리 시스템.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 결정하는 동안, 제1 처리 레이아웃은 제3 노드 세트 중 제1 노드에 대해 결정되고, 제1 처리 레이아웃은 제1 병렬도를 특정하고,
    그래프에서 제1 노드의 바로 이전의 제2 노드에 대한 제2 처리 레이아웃은 제1 병렬도와 상이한 제2 병렬도를 특정하며,
    프로세서 실행 가능 명령은 추가로 적어도 하나의 컴퓨터 하드웨어 프로세서가 제1 노드와 제2 노드 간의 새로운 노드를 데이터플로우 그래프에 추가하도록 하고, 새로운 노드는 적어도 하나의 재파티셔닝 동작을 나타내는, 데이터 처리 시스템.
  12. 제10항 내지 제11항 중 어느 한 항에 있어서, 적어도 하나의 재파티셔닝 동작과 연관된 새로운 노드를 추가하는 것은 수집 동작, 병합 동작, 또는 파티션 동작과 연관된 노드를 추가하는 것을 포함하는, 데이터 처리 시스템.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 결정하는 것은 제3 노드 세트 중 제1 노드에 대한 제1 처리 레이아웃을 결정하는 것을 포함하고, 제1 노드는 제1 데이터 처리 동작을 나타내며, 제1 처리 레이아웃을 결정하는 것은:
    제1 데이터 처리 동작을 수행하기 위한 병렬도를 결정하는 것; 및
    결정된 병렬도에 따라 제1 데이터 처리 동작을 수행하기 위해 하나 이상의 컴퓨팅 장치 세트를 식별하는 것을 포함하는, 데이터 처리 시스템.
  14. 제13항 또는 선행하는 청구항 중 어느 한 항에 있어서, 제1 처리 레이아웃을 결정하는 것은:
    제1 데이터 처리 동작을 수행하기 위해 단일 프로세서가 사용될지 여부를 결정하는 것; 및
    제1 데이터 처리 동작을 수행하기 위한 컴퓨팅 장치를 식별하는 것을 포함하는, 데이터 처리 시스템.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서, 처리 레이아웃을 결정하는 것은 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 사용하여 수행되는, 데이터 처리 시스템.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서, 프로세서 실행 가능 명령은 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    데이터플로우 그래프에서 각 노드에 대한 처리 레이아웃을 결정한 후, 데이터플로우 그래프에서 각 노드에 대해 결정된 처리 레이아웃에 따라 데이터플로우 그래프를 실행하는 것을 수행하도록 하는, 데이터 처리 시스템.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서, 프로세서 실행 가능 명령은 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    구조화 쿼리 언어(SQL) 쿼리를 수신하는 것;
    SQL 쿼리로부터 쿼리 플랜을 생성하는 것; 및
    생성된 쿼리 플랜으로부터 데이터플로우 그래프를 생성하는 것을 수행하도록 하는, 데이터 처리 시스템.
  18. 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는:
    제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -;
    하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및
    하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고;
    일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것;
    일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 것; 및
    제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체.
  19. 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 프로세서 실행 가능 명령이,
    데이터플로우 그래프를 특정하는 정보를 획득하기 위한 수단 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는:
    제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -;
    하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및
    하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고;
    일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하기 위한 수단;
    일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하기 위한 수단; 및
    제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하기 위한 수단을 포함하는,
    프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체.
  20. 방법으로서,
    데이터플로우 그래프를 특정하는 정보를 획득하는 단계 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는:
    제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 일련의 하나 이상의 입력 데이터세트의 각각의 입력 데이터세트를 나타냄 -;
    하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 일련의 하나 이상의 출력 데이터세트의 각각의 출력 데이터세트를 나타냄 -; 및
    하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 적어도 하나의 각각의 데이터 처리 동작을 나타냄 -;를 포함하고;
    일련의 입력 데이터세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 단계;
    일련의 출력 데이터세트에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 단계를 수행하기 위해,
    적어도 하나의 컴퓨터 하드웨어 프로세서를 사용하는 단계; 및
    제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 단계를 포함하는, 방법.
  21. 제20항에 있어서, 일련의 입력 데이터세트는 제1 입력 데이터세트 및 제2 입력 데이터세트를 포함하고, 제1 노드 세트는 제1 입력 데이터세트와 연관된 제1 노드 및 제2 입력 데이터세트와 연관된 제2 노드를 포함하며, 하나 이상의 제1 처리 레이아웃 세트를 획득하는 단계는:
    제1 입력 데이터세트로부터 데이터를 판독하기 위한 제1 처리 레이아웃을 획득하는 단계 - 제1 레이아웃은 제1 병렬도를 적어도 부분적으로 특정함 -; 및
    제2 입력 데이터세트로부터 데이터를 판독하기 위한 제2 처리 레이아웃을 획득하는 단계 - 제2 처리 레이아웃은 적어도 부분적으로 특정된 제1 병렬도와 상이한 제2 병렬도를 적어도 부분적으로 특정함 -;를 포함하는, 방법.
  22. 제20항 내지 제21항 중 어느 한 항에 있어서,
    제1 노드 세트는 일련의 입력 데이터세트의 제1 입력 데이터세트와 연관된 제1 노드를 포함하고,
    제2 노드 세트는 일련의 출력 데이터세트의 제1 출력 데이터세트와 연관된 제2 노드를 포함하고,
    하나 이상의 제1 처리 레이아웃 세트를 획득하는 단계는 제1 입력 데이터세트로부터 데이터를 판독하기 위한 제1 처리 레이아웃을 획득하는 단계 - 제1 처리 레이아웃은 제1 병렬도를 적어도 부분적으로 특정함 - 를 포함하며,
    하나 이상의 제2 처리 레이아웃 세트를 획득하는 단계는 제1 출력 데이터세트에 데이터를 기록하기 위한 제2 처리 레이아웃을 획득하는 단계 - 제2 처리 레이아웃은 적어도 부분적으로 특정된 제1 병렬도와 상이한 제2 병렬도를 적어도 부분적으로 특정함 - 를 포함하는, 방법.
  23. 제20항 내지 제22항 중 어느 한 항에 있어서, 일련의 출력 데이터세트는 제1 출력 데이터세트 및 제2 출력 데이터세트를 포함하고, 제2 노드 세트는 제1 출력 데이터세트와 연관된 제1 노드 및 제2 출력 데이터세트와 연관된 제2 노드를 포함하며, 하나 이상의 제1 처리 레이아웃 세트를 획득하는 단계는:
    제1 출력 데이터세트에 데이터를 기록하기 위한 제1 처리 레이아웃을 획득하는 단계 - 제1 레이아웃은 적어도 부분적으로 제1 병렬도를 특정함 -; 및
    제2 출력 데이터세트에 데이터를 기록하기 위한 제2 처리 레이아웃을 획득하는 단계 - 제2 처리 레이아웃은 적어도 부분적으로 특정된 제1 병렬도와 상이한 제2 병렬도를 적어도 부분적으로 특정함 - 를 포함하는, 방법.
  24. 제20항 내지 제23항 중 어느 한 항에 있어서, 제3 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 단계는:
    데이터플로우 그래프의 구조에 따라 그리고 제1 처리 레이아웃 세트 및 하나 이상의 레이아웃 결정 규칙을 사용하여 제1 노드 세트의 노드로부터 시작하여 수행되는 순방향 패스에서 제3 노드 세트 중 하나 이상의 노드에 대한 초기 처리 레이아웃을 결정하는 단계; 및
    데이터플로우 그래프의 구조에 따라 그리고 제2 처리 레이아웃 세트 및 하나 이상의 레이아웃 결정 규칙을 사용하여 제2 노드 세트의 노드로부터 시작하여 수행되는 역방향 패스에서 제3 노드 세트의 각 노드에 대한 최종 처리 레이아웃을 결정하는 단계를 포함하는, 방법.
  25. 제20항 내지 제24항 중 어느 한 항에 있어서, 제3 노드 세트는 제1 노드를 포함하고, 복수의 에지는 데이터플로우 그래프에서 제1 노드와 제1 노드에 선행하는 제2 노드 간의 제1 에지를 포함하며, 제3 노드 세트의 각 노드에 대한 초기 처리 레이아웃을 결정하는 단계는:
    제2 노드에 대해 결정된 처리 레이아웃에 기초하여 제1 노드에 대한 제1 초기 처리 레이아웃을 결정하는 단계를 포함하는, 방법.
  26. 제25항 또는 선행하는 청구항 중 어느 한 항에 있어서, 복수의 에지는 데이터플로우 그래프에서 제1 노드와 제1 노드에 선행하는 제3 노드 간의 제2 에지를 포함하고, 제3 초기 처리 레이아웃은 제3 노드와 연관되며, 제1 노드에 대한 제1 초기 처리 레이아웃을 결정하는 단계는:
    제2 및 제3 처리 레이아웃 중 하나를 제1 처리 레이아웃으로 선택하는 단계를 포함하는, 방법.
  27. 제26항 또는 선행하는 청구항 중 어느 한 항에 있어서, 제2 초기 처리 레이아웃은 제1 병렬도를 특정하고, 제3 초기 처리 레이아웃은 제1 병렬도와 상이한 제2 병렬도를 특정하며, 선택하는 단계는:
    제1 병렬도가 제2 병렬도를 초과하는 경우 제2 처리 레이아웃을 선택하는 단계; 및
    제1 병렬도가 제2 병렬도 미만인 경우 제3 처리 레이아웃을 선택하는 단계를 포함하는, 방법.
  28. 제26항 내지 제27항 중 어느 한 항에 있어서, 제2 초기 처리 레이아웃 및 제3 초기 처리 레이아웃은 각각 동일한 병렬도를 특정하고, 제1 에지는 제1 개수의 데이터 레코드에 대한 데이터플로우를 나타내고, 제2 에지는 제2 개수의 데이터 레코드에 대한 데이터플로우를 나타내며, 선택하는 단계는:
    제1 개수의 데이터 레코드가 제2 개수의 데이터 레코드를 초과하는 경우 제2 처리 레이아웃을 선택하는 단계; 및
    제1 개수의 데이터 레코드가 제2 개수의 데이터 레코드 미만인 경우 제3 처리 레이아웃을 선택하는 단계를 포함하는, 방법.
  29. 제20항 내지 제28항 중 어느 한 항에 있어서, 결정하는 동안, 제1 처리 레이아웃은 제3 노드 세트 중 제1 노드에 대해 결정되고, 제1 처리 레이아웃은 제1 병렬도를 특정하고,
    그래프에서 제1 노드의 바로 이전의 제2 노드에 대한 제2 처리 레이아웃은 제1 병렬도와 상이한 제2 병렬도를 특정하며,
    적어도 하나의 컴퓨터 하드웨어 프로세서는 적어도 하나의 재파티셔닝 동작을 수행하도록 데이터플로우 그래프의 적어도 하나의 노드를 추가로 구성하는, 방법.
  30. 제20항 내지 제29항 중 어느 한 항에 있어서, 결정하는 동안, 제1 처리 레이아웃은 제3 노드 세트 중 제1 노드에 대해 결정되고, 제1 처리 레이아웃은 제1 병렬도를 특정하고,
    그래프에서 제1 노드의 바로 이전의 제2 노드에 대한 제2 처리 레이아웃은 제1 병렬도와 상이한 제2 병렬도를 특정하며,
    적어도 하나의 컴퓨터 하드웨어 프로세서는 제1 노드와 제2 노드 간의 새로운 노드를 데이터플로우 그래프에 추가하도록 구성되고, 새로운 노드는 적어도 하나의 재파티셔닝 동작을 나타내는, 방법.
  31. 제30항 또는 선행하는 청구항 중 어느 한 항에 있어서, 적어도 하나의 재파티셔닝 동작과 연관된 새로운 노드를 추가하는 단계는 수집 동작, 병합 동작, 또는 파티션 동작과 연관된 노드를 추가하는 단계를 포함하는, 방법.
  32. 제20항 내지 제31항 중 어느 한 항에 있어서, 결정하는 단계는 제3 노드 세트 중 제1 노드에 대한 제1 처리 레이아웃을 결정하는 단계를 포함하고, 제1 노드는 제1 데이터 처리 동작을 나타내며, 제1 처리 레이아웃을 결정하는 단계는:
    제1 데이터 처리 동작을 수행하기 위한 병렬도를 결정하는 단계; 및
    결정된 병렬도에 따라 제1 데이터 처리 동작을 수행하기 위해 하나 이상의 컴퓨팅 장치 세트를 식별하는 단계를 포함하는, 방법.
  33. 제32항 또는 선행하는 청구항 중 어느 한 항에 있어서, 제1 처리 레이아웃을 결정하는 단계는:
    제1 데이터 처리 동작을 수행하기 위해 단일 프로세서가 사용될지 여부를 결정하는 단계; 및
    제1 데이터 처리 동작을 수행하기 위한 컴퓨팅 장치를 식별하는 단계를 포함하는, 방법.
  34. 제20항 내지 제33항 중 어느 한 항에 있어서, 처리 레이아웃을 결정하는 단계는 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 사용하여 수행되는, 방법.
  35. 제20항 내지 제34항 중 어느 한 항에 있어서, 데이터플로우 그래프에서 각 노드에 대한 처리 레이아웃을 결정한 후, 데이터플로우 그래프에서 각 노드에 대해 결정된 처리 레이아웃에 따라 데이터플로우 그래프를 실행하는 단계를 더 포함하는, 방법.
  36. 제20항 내지 제35항 중 어느 한 항에 있어서,
    구조화된 쿼리 언어(SQL) 쿼리를 수신하는 단계;
    SQL 쿼리로부터 쿼리 플랜을 생성하는 단계; 및
    생성된 쿼리 플랜으로부터 데이터플로우 그래프를 생성하는 단계를 더 포함하는, 방법.
  37. 데이터 처리 시스템으로서,
    적어도 하나의 컴퓨터 하드웨어 프로세서; 및
    적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    데이터플로우 그래프를 특정하는 정보를 획득하는 것 - 데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하고, 복수의 에지는 복수의 노드 중 노드 간의 데이터플로우를 나타내고, 복수의 노드는:
    제1 세트의 하나 이상의 노드; 및
    제1 노드 세트로부터 분리된 하나 이상의 제2 노드 세트를 포함하고;
    제1 노드 세트에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것; 및
    제1 처리 레이아웃 세트 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제2 노드 세트의 각 노드에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는,
    프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체를 포함하는, 데이터 처리 시스템.
  38. 제37항에 있어서,
    제1 세트의 하나 이상의 노드는:
    일련의 하나 이상의 입력 노드 - 일련의 입력 노드 중 각 노드는 일련의 하나 이상의 입력 데이터세트에서 각각의 입력 데이터세트를 나타냄 -; 및
    일련의 하나 이상의 출력 노드 - 일련의 출력 노드 중 각 노드는 일련의 하나 이상의 출력 데이터세트에서 각각의 출력 데이터세트를 나타냄 -;를 포함하며,
    제1 처리 레이아웃 세트를 획득하는 것은:
    일련의 입력 데이터세트에 대한 일련의 하나 이상의 처리 레이아웃을 획득하는 것; 및
    일련의 출력 데이터세트에 대한 일련의 하나 이상의 처리 레이아웃을 획득하는 것을 포함하는, 데이터 처리 시스템.
  39. 데이터 처리 시스템으로서,
    적어도 하나의 컴퓨터 하드웨어 프로세서; 및
    적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금 데이터베이스 쿼리를 실행하게 하는 컴퓨터 코드를 획득하는 것 - 컴퓨터 코드는:
    각각의 입력 데이터세트에서 판독하기 위한 데이터 처리 동작을 각각 나타내는 제1 세트의 하나 이상의 컴퓨터 코드 부분;
    각각의 출력 데이터세트를 기록하기 위한 데이터 처리 동작을 각각 나타내는 제2 세트의 하나 이상의 컴퓨터 코드 부분;
    각각의 데이터 처리 동작을 각각 나타내는 제3 세트의 하나 이상의 컴퓨터 코드 부분을 포함함 -;
    제1 세트의 코드 부분에서 하나 이상의 코드 부분에 대한 하나 이상의 제1 처리 레이아웃 세트를 획득하는 것;
    제2 세트의 코드 부분에서 하나 이상의 코드 부분에 대한 하나 이상의 제2 처리 레이아웃 세트를 획득하는 것; 및
    제1 처리 레이아웃 세트, 제2 처리 레이아웃 세트, 및 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 포함하는 하나 이상의 레이아웃 결정 규칙에 기초하여 제3 세트의 코드 부분의 각 코드 부분에 대한 처리 레이아웃을 결정하는 것을 수행하게 하는,
    프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장매체를 포함하는, 데이터 처리 시스템.
  40. 제39항 또는 선행하는 청구항 중 어느 한 항에 있어서, 결정하는 것은 컴퓨터 코드에서 적어도 일부 컴퓨터 코드 부분의 실행 순서를 적어도 부분적으로 나타내는 정보에 기초하여 추가로 수행되는, 데이터 처리 시스템.
  41. 제39항에 있어서,
    컴퓨터 코드는 데이터플로우 그래프와 연관되고,
    데이터플로우 그래프는 복수의 노드 및 복수의 노드를 연결하는 복수의 에지를 포함하며 - 복수의 에지는 복수의 노드에서의 노드 간의 데이터플로우를 나타냄 -,
    컴퓨터 코드의 컴퓨터 코드 부분은 데이터플로우 그래프에서의 각각의 노드와 연관되는, 데이터 처리 시스템.
  42. 제41항 또는 선행하는 청구항 중 어느 한 항에 있어서, 복수의 노드는:
    제1 세트의 하나 이상의 노드 - 제1 노드 세트의 각 노드는 각각의 입력 데이터세트를 나타내고, 제1 세트의 컴퓨터 코드 부분 중 각각의 컴퓨터 코드 부분은 제1 노드 세트의 각 노드와 연관됨 -;
    하나 이상의 제2 노드 세트 - 제2 노드 세트의 각 노드는 각각의 출력 데이터세트를 나타내고, 제2 세트의 컴퓨터 코드 부분 중 각각의 컴퓨터 코드 부분은 제2 노드 세트의 각 노드와 연관됨 -; 및
    하나 이상의 제3 노드 세트 - 제3 노드 세트의 각 노드는 각각의 데이터 처리 동작을 나타냄 -를 포함하는, 데이터 처리 시스템.
  43. 제41항 내지 제42항 중 어느 한 항에 있어서, 처리 레이아웃을 결정하는 것은 상이한 병렬도를 갖는 처리 레이아웃 중에서 선택하기 위한 적어도 하나의 규칙을 사용하여 수행되는, 데이터 처리 시스템.
  44. 제41항 내지 제43항 중 어느 한 항에 있어서, 프로세서 실행 가능 명령은 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    데이터플로우 그래프에서 각 노드에 대한 처리 레이아웃을 결정한 후, 데이터플로우 그래프에서 각 노드에 대해 결정된 처리 레이아웃에 따라 데이터플로우 그래프를 실행하는 것을 수행하게 하는, 데이터 처리 시스템.
  45. 제41항 내지 제44항 중 어느 한 항에 있어서, 프로세서 실행 가능 명령은 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금,
    구조화된 쿼리 언어(SQL) 쿼리를 수신하는 것;
    SQL 쿼리로부터 쿼리 플랜을 생성하는 것; 및
    쿼리 플랜에서 컴퓨터 코드를 생성하는 것을 수행하게 하는, 데이터 처리 시스템.
KR1020197031867A 2017-03-29 2018-03-29 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법 KR102549994B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762478390P 2017-03-29 2017-03-29
US62/478,390 2017-03-29
PCT/US2018/025144 WO2018183676A1 (en) 2017-03-29 2018-03-29 Systems and methods for performing data processing operations using variable level parallelism

Publications (2)

Publication Number Publication Date
KR20190131557A true KR20190131557A (ko) 2019-11-26
KR102549994B1 KR102549994B1 (ko) 2023-06-29

Family

ID=62063179

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031867A KR102549994B1 (ko) 2017-03-29 2018-03-29 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법

Country Status (11)

Country Link
US (2) US10817495B2 (ko)
EP (2) EP4198731A1 (ko)
JP (1) JP7216654B2 (ko)
KR (1) KR102549994B1 (ko)
CN (1) CN110612513B (ko)
AU (2) AU2018243278B2 (ko)
CA (1) CA3058223A1 (ko)
DE (1) DE112018001789T5 (ko)
SG (1) SG11201908969WA (ko)
WO (1) WO2018183676A1 (ko)
ZA (1) ZA201906585B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3058223A1 (en) * 2017-03-29 2018-10-04 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
US10990595B2 (en) * 2018-05-18 2021-04-27 Oracle International Corporation Fast distributed graph query engine
CN111209309B (zh) * 2020-01-13 2023-03-10 腾讯科技(深圳)有限公司 数据流图处理结果确定方法、装置、设备及存储介质
US11675785B2 (en) 2020-01-31 2023-06-13 Oracle International Corporation Dynamic asynchronous traversals for distributed graph queries
CN111737371B (zh) * 2020-08-24 2020-11-13 上海飞旗网络技术股份有限公司 可动态预测的数据流量检测分类方法及装置
AU2022213419A1 (en) 2021-01-31 2023-08-03 Ab Initio Technology Llc Data processing system with manipulation of logical dataset groups
US11461297B1 (en) 2021-06-09 2022-10-04 T-Mobile Usa, Inc. Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider
WO2023056003A1 (en) * 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003529808A (ja) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション スクリプト駆動ツールの並列処理アプリケーション
KR20120106827A (ko) * 2010-01-15 2012-09-26 아브 이니티오 테크놀로지 엘엘시 데이터 쿼리 관리
KR20130130706A (ko) * 2010-10-25 2013-12-02 아브 이니티오 테크놀로지 엘엘시 컴퓨터 프로그램을 나타내는 데이터플로우 그래프 내의 데이터세트 객체의 관리
KR20140014123A (ko) * 2011-05-02 2014-02-05 아브 이니티오 테크놀로지 엘엘시 데이터 질의 관리

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US7249141B2 (en) * 2003-04-30 2007-07-24 Microsoft Corporation Automated layout of relational databases
US7155612B2 (en) 2003-04-30 2006-12-26 International Business Machines Corporation Desktop database data administration tool with row level security
CA2891143C (en) * 2003-06-25 2019-02-12 Craig W. Stanfill Computer-aided parallelizing of computation graphs
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
US20080140622A1 (en) 2006-12-12 2008-06-12 Bestgen Robert J Displaying Explain Data for a SQL Query of a Database
US7979578B2 (en) * 2009-09-02 2011-07-12 International Business Machines Corporation Dynamic and evolutionary placement in an event-driven component-oriented network data processing system
US9208141B2 (en) 2010-02-05 2015-12-08 Oracle International Corporation Generating and displaying active reports
US8356027B2 (en) * 2010-10-07 2013-01-15 Sap Ag Hybrid query execution plan generation and cost model evaluation
US8195643B2 (en) 2010-10-28 2012-06-05 Sap Ag Database calculation engine
US8838579B2 (en) 2012-04-26 2014-09-16 Sap Ag Data flow graph optimization using adaptive rule chaining
US8856766B2 (en) * 2012-05-11 2014-10-07 International Business Machines Corporation Generating layouts for graphs of data flow applications
WO2014209260A1 (en) 2013-06-24 2014-12-31 Hewlett-Packard Development Company, L.P. Processing a data flow graph of a hybrid flow
CN103699515B (zh) * 2013-12-27 2017-01-18 中国科学院计算技术研究所 一种fft并行处理装置和方法
WO2016116132A1 (en) * 2015-01-19 2016-07-28 Huawei Technologies Co., Ltd. Systems and methods for execution of algorithms on parallel heterogeneous systems
EP3106982B1 (en) * 2015-06-18 2021-03-10 ARM Limited Determination of branch convergence in a sequence of program instructions
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9798527B1 (en) 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
CA3058223A1 (en) * 2017-03-29 2018-10-04 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003529808A (ja) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション スクリプト駆動ツールの並列処理アプリケーション
KR20120106827A (ko) * 2010-01-15 2012-09-26 아브 이니티오 테크놀로지 엘엘시 데이터 쿼리 관리
KR20130130706A (ko) * 2010-10-25 2013-12-02 아브 이니티오 테크놀로지 엘엘시 컴퓨터 프로그램을 나타내는 데이터플로우 그래프 내의 데이터세트 객체의 관리
KR20140014123A (ko) * 2011-05-02 2014-02-05 아브 이니티오 테크놀로지 엘엘시 데이터 질의 관리

Also Published As

Publication number Publication date
US10817495B2 (en) 2020-10-27
CA3058223A1 (en) 2018-10-04
JP2020512643A (ja) 2020-04-23
DE112018001789T5 (de) 2019-12-19
CN110612513A (zh) 2019-12-24
EP4198731A1 (en) 2023-06-21
EP3602297A1 (en) 2020-02-05
AU2018243278B2 (en) 2022-12-15
US20180285401A1 (en) 2018-10-04
EP3602297B1 (en) 2023-03-22
JP7216654B2 (ja) 2023-02-01
CN110612513B (zh) 2024-01-30
WO2018183676A1 (en) 2018-10-04
AU2023201414A1 (en) 2023-04-06
US20210182263A1 (en) 2021-06-17
SG11201908969WA (en) 2019-10-30
ZA201906585B (en) 2024-02-28
KR102549994B1 (ko) 2023-06-29
AU2018243278A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
KR102549994B1 (ko) 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법
AU2019276969B2 (en) Systems and methods for dataflow graph optimization
EP3631618B1 (en) Automated dependency analyzer for heterogeneously programmed data processing system
US9336184B2 (en) Representation of an interactive document as a graph of entities
US9304672B2 (en) Representation of an interactive document as a graph of entities
KR101535813B1 (ko) 복합 이벤트 처리를 위한 이벤트 구성 규칙의 동적 업데이트를 위한 시스템 및 방법
US20170300461A1 (en) Representation of an Interactive Document as a Graph of Entities
US20230093911A1 (en) Systems and methods for performing data processing operations using variable level parallelism
Sklyarov et al. Hardware accelerators for information retrieval and data mining
Lee et al. Application of filters to multiway joins in MapReduce
US20230359668A1 (en) Dataflow graph datasets
이태휘 Join Processing with Filtering Techniques on MapReduce Cluster

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