KR20210025024A - 데이터흐름 그래프 최적화를 위한 시스템 및 방법 - Google Patents
데이터흐름 그래프 최적화를 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR20210025024A KR20210025024A KR1020207037986A KR20207037986A KR20210025024A KR 20210025024 A KR20210025024 A KR 20210025024A KR 1020207037986 A KR1020207037986 A KR 1020207037986A KR 20207037986 A KR20207037986 A KR 20207037986A KR 20210025024 A KR20210025024 A KR 20210025024A
- Authority
- KR
- South Korea
- Prior art keywords
- dataflow graph
- data processing
- nodes
- representing
- graph
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금: 자동으로 생성된 초기 데이터흐름(dataflow) 그래프를 획득하는 것 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함함 -을 수행하게 하는 프로세서-실행가능 명령을 저장한다.
Description
데이터 프로세싱 시스템은 데이터를 프로세싱하기 위해 하나 이상의 컴퓨터 프로그램을 사용할 수 있다. 데이터 프로세싱 시스템에 의해 이용되는 컴퓨터 프로그램 중 하나 이상은 데이터흐름(dataflow) 그래프로서 개발될 수 있다. 데이터흐름 그래프는 입력 데이터에 대해 수행될 데이터 프로세싱 동작을 나타내는, "노드" 또는 "정점(vertices)"으로 지칭되는, 컴포넌트 및 데이터의 흐름을 나타내는 컴포넌트 사이의 링크를 포함할 수 있다. 데이터흐름 그래프의 노드는 각각의 입력 데이터세트를 나타내는 하나 이상의 입력 노드, 각각의 출력 데이터세트를 나타내는 하나 이상의 출력 노드, 및 데이터에 대해 수행될 데이터 프로세싱 동작을 나타내는 하나 이상의 노드를 포함할 수 있다. 데이터흐름 그래프에 의해 인코딩된 계산을 실행하는 기술은 "Executing Computations Expressed as Graphs"이라는 명칭의 미국 특허 제5,966,072호 및 "Managing Parameters for Graph-Based Computations"라는 명칭의 미국 특허 제7,716,630호에 기술되어 있고, 이들 각각은 그 전체가 본원에 인용에 의해 포함된다.
일부 실시형태들은 데이터 프로세싱 시스템에 관한 것이고, 데이터 프로세싱 시스템은: 적어도 하나의 컴퓨터 하드웨어 프로세서; 및 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체를 포함하고, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금: 자동으로 생성된 초기 데이터흐름 그래프를 획득하는 것 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및 제1 컴퓨터 시스템 프로세스를 사용하여 제1 데이터 프로세싱 동작을 실행하고 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 제2 데이터 프로세싱 동작을 실행함으로써 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하는 것을 수행하게 하는 프로세서-실행가능 명령을 저장한다.
일부 실시형태들은 적어도 하나의 컴퓨터 하드웨어 프로세서를 사용하여: 자동으로 생성된 초기 데이터흐름 그래프를 획득하는 단계 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 단계 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및 제1 컴퓨터 시스템 프로세스를 사용하여 제1 데이터 프로세싱 동작을 실행하고 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 제2 데이터 프로세싱 동작을 실행함으로써 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하는 단계를 수행하는 단계를 포함하는 방법에 관한 것이다.
일부 실시형태들은 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체에 관한 것이고, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금: 자동으로 생성된 초기 데이터흐름 그래프를 획득하는 것 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및 제1 컴퓨터 시스템 프로세스를 사용하여 제1 데이터 프로세싱 동작을 실행하고 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 제2 데이터 프로세싱 동작을 실행함으로써 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하는 것을 수행하게 하는 프로세서-실행가능 명령을 저장한다.
일부 실시형태들은 프로세서-실행가능 명령을 저장하는 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체에 관한 것이고, 프로세서-실행가능 명령은: 자동으로 생성된 초기 데이터흐름 그래프를 획득하기 위한 수단 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하기 위한 수단 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및 제1 컴퓨터 시스템 프로세스를 사용하여 제1 데이터 프로세싱 동작을 실행하고 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 제2 데이터 프로세싱 동작을 실행함으로써 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하기 위한 수단을 포함한다.
일부 실시형태들은 데이터 프로세싱 시스템에 관한 것이고, 데이터 프로세싱 시스템은: 적어도 하나의 컴퓨터 하드웨어 프로세서; 및 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체를 포함하고, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금: 구조화 질의 언어(SQL) 질의를 획득하는 것; SQL 질의에 대한 질의 계획을 생성하는 것; 질의 계획을 사용하여 초기 데이터흐름 그래프를 생성하는 것 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 적어도 하나의 데이터흐름 그래프 최적화 규칙을 사용하여 업데이트된 데이터흐름 그래프를 생성하는 것 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드를 포함함 -을 수행하게 하는 프로세서-실행가능 명령을 저장한다.
일부 실시형태들은 적어도 하나의 컴퓨터 하드웨어 프로세서를 사용하여: 구조화 질의 언어(SQL) 질의를 획득하는 단계; SQL 질의에 대한 질의 계획을 생성하는 단계; 질의 계획을 사용하여 초기 데이터흐름 그래프를 생성하는 단계 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 적어도 하나의 데이터흐름 그래프 최적화 규칙을 사용하여 업데이트된 데이터흐름 그래프를 생성하는 단계 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드를 포함함 -를 수행하는 단계를 포함하는 방법에 관한 것이다.
일부 실시형태들은 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체에 관한 것이고, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금: 구조화 질의 언어(SQL) 질의를 획득하는 것; SQL 질의에 대한 질의 계획을 생성하는 것; 질의 계획을 사용하여 초기 데이터흐름 그래프를 생성하는 것 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 적어도 하나의 데이터흐름 그래프 최적화 규칙을 사용하여 업데이트된 데이터흐름 그래프를 생성하는 것 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드를 포함함 -을 수행하게 하는 프로세서-실행가능 명령을 저장한다.
일부 실시형태들은 프로세서-실행가능 명령을 저장하는 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체에 관한 것이고, 프로세서-실행가능 명령은: 구조화 질의 언어(SQL) 질의를 획득하기 위한 수단; SQL 질의에 대한 질의 계획을 생성하기 위한 수단; 질의 계획을 사용하여 초기 데이터흐름 그래프를 생성하는 수단 - 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드를 포함함 -; 및 초기 데이터흐름 그래프를 업데이트하기 위해 적어도 하나의 데이터흐름 그래프 최적화 규칙을 사용하여 업데이트된 데이터흐름 그래프를 생성하기 위한 수단 - 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드를 포함함 -을 포함한다.
전술한 내용은 첨부된 청구 범위에 의해 정의된 본 발명의 비-제한적인 요약이다.
다양한 양태 및 실시형태가 하기의 도면을 참조하여 설명될 것이다. 도면은 반드시 실척으로 도시된 것은 아님이 이해되어야 한다. 다수의 도면에 나타나는 아이템은 이들이 나타나는 모든 도면에서 동일하거나 유사한 참조번호에 의해 표시된다.
도 1a는 본원에 설명된 기술의 일부 실시형태가 동작할 수 있는 예시적인 컴퓨팅 환경의 블록도이다.
도 1b는 본원에 설명된 기술의 일부 실시형태에 따른, 입력 구조화 질의 언어(SQL) 질의로부터 데이터흐름 그래프를 자동으로 생성하기 위한 예시적인 프로세스의 흐름도이다.
도 2는 본원에 설명된 기술의 일부 실시형태에 따른, 입력 SQL 질의로부터 데이터흐름 그래프를 자동으로 생성하기 위한 예시적인 프로세스(200)의 흐름도이다.
도 3a는 본원에 설명된 기술의 일부 실시형태에 따른, 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 3b는 본원에 설명된 기술의 일부 실시형태에 따른, 다른 예시적인 데이터흐름 그래프에 최적화 규칙의 적용을 용이하게 하기 위해 데이터 프로세싱 동작을 커뮤팅(commute)하는 순서를 변경하는 것을 예시한다.
도 3c는 본원에 설명된 기술의 일부 실시형태에 따른, 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 3d는 본원에 설명된 기술의 일부 실시형태에 따른, 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 또 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 4a는 본원에 설명된 기술의 일부 실시형태에 따른, 세기 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 4b는 본원에 설명된 기술의 일부 실시형태에 따른, 다른 세기 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5a는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5b는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5c는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 또 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5d는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 또 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 6은 본원에 설명된 기술의 일부 실시형태에 따른, 참조되지 않은 데이터 프로세싱 동작을 제거하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 7은 본원에 설명된 기술의 일부 실시형태에 따른, 폭 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 8a는 본원에 설명된 기술의 일부 실시형태에 따른, 중복 제거 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 8b는 본원에 설명된 기술의 일부 실시형태에 따른, 지퍼링(zippering)으로 중복 제거 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 9는 본원에 설명된 기술의 일부 실시형태에 따른, 직렬 대 병렬 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 10aa 및 도 10ab는 본원에 설명된 기술의 일부 실시형태에 따른, 초기 데이터흐름 그래프를 예시한다.
도 10b는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10aa 및 도 10ab에 도시된 초기 데이터흐름 그래프에 최적화 규칙을 반복적으로 적용하여 획득된 업데이트된 데이터흐름 그래프를 예시한다
도 10c는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10aa 및 도 10ab의 초기 데이터흐름 그래프의 다른 도면을 예시한다.
도 10d는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10b의 업데이트된 데이터흐름 그래프의 다른 도면을 예시한다.
도 11은 여기에 설명된 기술의 일부 실시형태를 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 시스템 환경의 블록도이다
도 1a는 본원에 설명된 기술의 일부 실시형태가 동작할 수 있는 예시적인 컴퓨팅 환경의 블록도이다.
도 1b는 본원에 설명된 기술의 일부 실시형태에 따른, 입력 구조화 질의 언어(SQL) 질의로부터 데이터흐름 그래프를 자동으로 생성하기 위한 예시적인 프로세스의 흐름도이다.
도 2는 본원에 설명된 기술의 일부 실시형태에 따른, 입력 SQL 질의로부터 데이터흐름 그래프를 자동으로 생성하기 위한 예시적인 프로세스(200)의 흐름도이다.
도 3a는 본원에 설명된 기술의 일부 실시형태에 따른, 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 3b는 본원에 설명된 기술의 일부 실시형태에 따른, 다른 예시적인 데이터흐름 그래프에 최적화 규칙의 적용을 용이하게 하기 위해 데이터 프로세싱 동작을 커뮤팅(commute)하는 순서를 변경하는 것을 예시한다.
도 3c는 본원에 설명된 기술의 일부 실시형태에 따른, 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 3d는 본원에 설명된 기술의 일부 실시형태에 따른, 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 또 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 4a는 본원에 설명된 기술의 일부 실시형태에 따른, 세기 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 4b는 본원에 설명된 기술의 일부 실시형태에 따른, 다른 세기 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5a는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5b는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5c는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 또 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 5d는 본원에 설명된 기술의 일부 실시형태에 따른, 결합 동작 최적화를 수행하기 위해 또 다른 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 6은 본원에 설명된 기술의 일부 실시형태에 따른, 참조되지 않은 데이터 프로세싱 동작을 제거하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 7은 본원에 설명된 기술의 일부 실시형태에 따른, 폭 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 8a는 본원에 설명된 기술의 일부 실시형태에 따른, 중복 제거 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 8b는 본원에 설명된 기술의 일부 실시형태에 따른, 지퍼링(zippering)으로 중복 제거 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 9는 본원에 설명된 기술의 일부 실시형태에 따른, 직렬 대 병렬 최적화를 수행하기 위해 예시적인 데이터흐름 그래프에 최적화 규칙을 적용하는 것을 예시한다.
도 10aa 및 도 10ab는 본원에 설명된 기술의 일부 실시형태에 따른, 초기 데이터흐름 그래프를 예시한다.
도 10b는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10aa 및 도 10ab에 도시된 초기 데이터흐름 그래프에 최적화 규칙을 반복적으로 적용하여 획득된 업데이트된 데이터흐름 그래프를 예시한다
도 10c는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10aa 및 도 10ab의 초기 데이터흐름 그래프의 다른 도면을 예시한다.
도 10d는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10b의 업데이트된 데이터흐름 그래프의 다른 도면을 예시한다.
도 11은 여기에 설명된 기술의 일부 실시형태를 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 시스템 환경의 블록도이다
본원에 설명된 기술의 양태는 데이터흐름 그래프를 사용하여 데이터 프로세싱 동작을 수행하기 위한 종래의 기법을 개선함으로써 데이터 프로세싱 시스템의 속도, 처리량, 및 정확도를 증가시키는 것과 관련된다.
일부 데이터 프로세싱 시스템은 데이터흐름 그래프를 사용하여 데이터를 프로세싱한다. 많은 경우에서, 데이터흐름 그래프는 수동으로 특정되지 않고 자동으로 생성된다. 예를 들어, 일부 데이터 프로세싱 시스템은 구조화 질의 언어(SQL) 질의로부터 데이터흐름 그래프를 자동으로 생성할 수 있다. 이러한 경우, 사용자 또는 컴퓨터 프로그램은 입력 SQL 질의를 데이터 프로세싱 시스템에 제공할 수 있고, 데이터 프로세싱 시스템은 SQL 질의로부터 데이터흐름 그래프를 생성하고 생성된 데이터흐름 그래프를 실행하여 SQL 질의를 실행할 수 있다. 다른 예로서, 데이터 프로세싱 시스템은 사용자 또는 컴퓨터 프로그램으로부터, 표현이 SQL 질의가 아닌 입력 질의의 표현을 수신할 수 있고, 질의의 표현으로부터 데이터흐름 그래프를 자동으로 생성할 수 있다. 또 다른 예로서, 데이터 프로세싱 시스템은 다른 데이터 프로세싱 시스템으로부터 입력 데이터흐름 그래프를 수신할 수 있다. 입력 데이터흐름 그래프는 (심지어 입력 데이터흐름 그래프가 다른 데이터 프로세싱 시스템에서 실행하기에 적합할 수 있는 경우에도) 데이터 프로세싱 시스템에서 실행하기에 적합하지 않을 수 있다. 따라서, 데이터 프로세싱 시스템은 입력 데이터흐름 그래프로부터, 데이터 프로세싱 시스템에서 실행하기에 적합한 새로운 데이터흐름 그래프를 생성한다.
본 발명자들은, (예를 들어, 상기 논의된 바와 같은 SQL 질의, 다른 질의 표현, 또는 입력 데이터흐름 그래프로부터) 데이터흐름 그래프를 자동으로 생성하기 위한 종래의 기법이 개선될 수 있음을 인식하였다. 자동으로 생성된 데이터흐름 그래프가 데이터 프로세싱 시스템에서 실행될 수 있지만, 데이터흐름 그래프를 자동으로 생성하기 위한 종래의 기법은, 실행에 상당한 계산 리소스(예를 들어, 프로세서 리소스, 메모리 리소스, 네트워크 리소스 등) 및 상당한 시간이 필요한 데이터흐름 그래프를 생성한다. 예를 들어, 자동으로 생성된 데이터흐름 그래프는: (1) 중복 데이터 프로세싱 동작을 나타내는 노드를 포함할 수 있고/있거나; (2) 결과가 나중에 사용되지 않는 데이터 프로세싱 동작을 수행하는 것을 요구할 수 있고/있거나; (3) 병렬 프로세싱이 가능한 경우 직렬 프로세싱을 불필요하게 수행하는 것을 요구할 수 있고/있거나; (4) 원하는 결과를 획득하기 위해 필요한 것보다 더 많은 데이터에 데이터 프로세싱 동작을 적용할 수 있고/있거나; (5) 각각의 데이터흐름 그래프 노드에 대한 데이터 프로세싱이 컴퓨터 프로그램, 전용 컴퓨터 프로그램(예를 들어, 운영 체제에서의 프로세스), 및/또는 전용 컴퓨팅 디바이스의 전용 스레드에 의해 수행되는 상황에서 계산을 수행하는 계산 비용을 크게 증가시키는 다수의 노드를 통한 계산을 발생시킬 수 있고/있거나; (6) 더 적은 계산을 요구하는 약한 유형의 데이터 프로세싱 동작(예를 들어, 그룹 내 정렬 동작, 그룹 내 롤업(rollup) 동작, 등)이 충분할 때 더 많은 계산(예컨대, 정렬 동작, 롤업 동작 등)을 요구하는 더 강력한 유형의 데이터 프로세싱 동작을 수행하는 것을 요구할 수 있고/있거나; (7) 2배의 프로세싱 노력을 요구할 수 있다.
본 발명자들은, 일부 종래의 최적화 기법이 데이터흐름 그래프 생성 프로세스의 부분으로서 사용되었더라도 데이터흐름 그래프를 생성하기 위한 종래의 자동화 기법이, 실행에 상당한 계산 리소스 및 상당한 시간이 필요한 데이터흐름 그래프를 생성할 수 있다는 것을 추가로 인식하였다. 예를 들어, 데이터흐름 그래프는 SQL 질의로부터 질의 계획을 생성하고 생성된 질의 계획으로부터 데이터흐름 그래프를 생성하여 SQL 질의로부터 생성될 수 있다. 그러나, 질의 계획의 생성이 소정의 최적화를 수행하는 것을 수반하였더라도, (질의 계획에서 생성된) 결과 데이터흐름 그래프는 여전히 상당한 계산 리소스 비용을 요구할 수 있다. 실제로, 질의 계획으로부터 데이터흐름 그래프를 생성하는 종래의 기법은 종종 비효율성의 도입을 초래하고 계산적으로 효율적인 방식으로 실행될 수 있는 데이터흐름 그래프를 생성할 만큼 정교하지 않을 수 있다.
본 발명자들은, 자동으로 생성된 데이터흐름 그래프가 생성된 데이터흐름 그래프를 실행하는 데 사용되는 계산 리소스의 양을 감소시키기 위해 추가로 프로세싱되고 최적화된 경우 데이터 프로세싱 시스템의 성능이 개선될 것임을 인식하였다. 본 출원에서 설명된 데이터흐름 그래프 최적화 기법 중 일부는 이러한 이유로 본 발명가에 의해 개발되었다. 본원에 설명된 데이터흐름 그래프 최적화 기법은 데이터흐름 그래프 최적화 기법을 사용하여 적어도 부분적으로 생성된 데이터흐름 그래프를 실행하는 데 사용되는 계산 리소스(예를 들어, 프로세서 리소스, 메모리 리소스, 네트워크 리소스 등)의 양을 감소시킴으로써 데이터 프로세싱 시스템의 성능(예를 들어, 처리량, 속도, 정확도 등)을 개선한다.
본원에 설명된 데이터흐름 그래프 최적화 기법의 다른 이점은, 데이터 프로세싱 시스템의 일부로서 데이터흐름 그래프 최적화기의 존재에 의해 다른 데이터 프로세싱 시스템 컴포넌트의 개발자 및/또는 데이터 프로세싱 시스템의 사용자가 그들의 작업의 일부로서 임시 최적화를 수행하려고 하기보다 데이터흐름 그래프 최적화기에 의존하게 한다는 것이다. 이것은 이러한 개발자 및/또는 사용자에 의해 수행되는 작업을 감소시키는 역할을 할 뿐만 아니라, 이들이 실수로 데이터 프로세싱 시스템에 오류를 도입하는 것을 방지하고, 이는 물론 또한 오류 수를 감소시킴으로써 데이터 프로세싱 시스템을 개선시킨다.
본원에 설명된 데이터흐름 그래프 최적화 기법이 어떤 의미에서 "최적"인 데이터흐름 그래프를 생성할 수 있지만, 반드시 그런 것이 아님을 이해해야 한다. 오히려, 최적화 기법은 일반적으로, 데이터흐름 그래프를 실행할 때, 데이터흐름 그래프 실행의 계산 효율을 개선하기 위해 데이터흐름 그래프가 실행되기 전에 데이터흐름 그래프를 변화시킴으로써 데이터 프로세싱 시스템의 성능을 개선하는 것을 시도한다.
본원에 설명된 일부 실시형태는, 본 발명자들이 데이터흐름 그래프를 자동으로 생성하기 위한 종래의 기법으로 인식한 상술된 모든 문제를 처리한다. 그러나, 본원에 설명되는 모든 실시형태가 이러한 문제를 모두 처리하지는 못하고, 일부 실시형태는 이들 중 어느 것도 처리하지 못할 수 있다. 이와 같이, 본원에 설명된 기술의 실시형태가 데이터흐름 그래프를 자동으로 생성하기 위한 종래의 기법의 상술된 문제 모두 또는 일부를 처리하는 것으로 제한되지 않는 것이 이해되어야 한다. 예를 들어, 이러한 데이터흐름 그래프가 또한 비효율성을 포함하고 필요한 것보다 더 많은 컴퓨팅 리소스를 요구할 수 있기 때문에, 본원에 설명된 기술의 일부 실시형태는 수동으로-특정된 데이터흐름 그래프를 최적화하는 데 적용될 수 있다.
따라서, 일부 실시형태는 SQL 질의 및/또는 다른 입력으로부터 데이터흐름 그래프를 자동으로 생성하기 위한 새로운 기법을 제공한다. 이러한 다른 입력의 예가 본원에 제공된다. 일부 실시형태에서, 데이터 프로세싱 시스템은: (1) 구조화 질의 언어(SQL) 질의를 획득하고; (2) SQL 질의에 대한 질의 계획을 생성하고; (3) 질의 계획을 사용하여 초기 데이터흐름 그래프를 생성하고; (4) 초기 데이터흐름 그래프를 업데이트하기 위해 적어도 하나의 데이터흐름 그래프 최적화 규칙을 사용하여 업데이트된 데이터흐름 그래프를 생성할 수 있다.
일부 실시형태에서, 업데이트된 데이터흐름 그래프는 후속 사용을 위해 (예를 들어, 비-휘발성 메모리에) 저장될 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에서, 업데이트된 데이터흐름 그래프는 데이터 프로세싱 시스템에 의해 실행될 수 있다. 실행 전에, 데이터 프로세싱 시스템은 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 프로세싱 레이아웃을 할당할 수 있다.
일부 실시형태에서, 초기 데이터흐름 그래프는, 초기 데이터흐름 그래프가 데이터 프로세싱 시스템에 의해 실행되었다면 수행될 각각의 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드를 포함할 수 있다. 업데이트된 데이터흐름 그래프는, 업데이트된 데이터흐름 그래프가 데이터 프로세싱 시스템에 의해 실행되었다면 수행될 각각의 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드를 포함할 수 있다. 일부 실시형태에서, 제2 복수의 노드는 제1 복수의 노드보다 더 적은 노드를 갖는다. 이러한 실시형태에서, 업데이트된 데이터흐름 그래프의 노드 수는 초기 데이터흐름 그래프의 노드 수보다 더 적다. 그래프에서 노드 수의 감소는, 초기 데이터흐름 그래프가 대신 실행된 경우 데이터 프로세싱 시스템에서 사용되었을 계산 리소스에 비해 업데이트된 데이터흐름 그래프를 실행하는 데 요구되는 계산 리소스의 양을 감소시킬 수 있다.
일부 실시형태에서, 데이터 프로세싱 시스템은 초기 데이터흐름 그래프의 하나 이상의 부분에 하나 이상의 데이터흐름 그래프 최적화 규칙(이의 예가 본원에 제공됨)을 적용함으로써 초기 데이터흐름 그래프로부터 업데이트된 데이터흐름 그래프를 생성할 수 있다. 최적화 규칙은 반복적으로 적용될 수 있다. 예를 들어, 일부 실시형태에서, 데이터 프로세싱 시스템은: (1) 제1 최적화 규칙을 선택; (2) 제1 최적화 규칙을 적용할 초기 데이터흐름 그래프의 제1 부분을 식별; 및 (3) 초기 데이터흐름 그래프의 제1 부분에 제1 최적화 규칙을 적용함으로써 초기 데이터흐름 그래프를 업데이트할 수 있다. 후속하여, 데이터 프로세싱 시스템은: (1) 제1 최적화 규칙과 상이한 제2 최적화 규칙을 선택; (2) 제2 최적화 규칙을 적용할 초기 데이터흐름 그래프의 제2 부분을 식별; 및 (3) 초기 데이터흐름 그래프의 제2 부분에 제2 최적화 규칙을 적용함으로써 초기 데이터흐름 그래프를 계속 업데이트할 수 있다.
업데이트되는 초기 데이터흐름 그래프에 관하여 최적화 규칙의 적용이 고려될 수 있는 다수의 방식이 있다. 예를 들어, 일부 실시형태에서, 각각의 특정 최적화 규칙에 대해, 데이터 프로세싱 시스템은, 특정 최적화 규칙이 적용 가능한 데이터흐름 그래프의 부분을 식별하고 식별된 부분에 최적화 규칙을 적용할 수 있다. 다른 예로서, 일부 실시형태에서, 데이터흐름 그래프의 각각의 특정 부분에 대해, 데이터 프로세싱 시스템은 특정 부분에 적용될 수 있는 최적화 규칙을 식별하고 식별된 최적화 규칙을 특정 부분에 적용할 수 있다. 이러한 실시형태에서, 초기 데이터흐름 그래프는 토폴로지적으로 정렬될 수 있고 토폴로지적으로 정렬된 그래프는 최적화 규칙이 적용될 수 있는 특정 부분을 식별하기 위해 (예를 들어, 좌측에서 우측으로) 순회될 수 있다.
일부 실시형태에서, 데이터 프로세싱 시스템은 하나 이상의 최적화 규칙을 적용할 초기 데이터흐름 그래프의 하나 이상의 부분을 식별하기 위해 데이터흐름 서브그래프 패턴 매칭 언어를 이용할 수 있다. 데이터흐름 서브그래프 패턴 매칭 언어는 데이터흐름 그래프에서 식별될 각각의 패턴을 나타내는 하나 이상의 표현을 포함할 수 있다. 이러한 표현의 예가 본원에 제공된다.
일부 실시형태에서, 특정 최적화 규칙을 적용할 초기 데이터흐름 그래프의 일부를 식별하기 위해, 데이터 프로세싱 시스템은, 하나 이상의 노드가 하나 이상의 다른 노드와 커뮤팅하는지 여부를 결정할 수 있다. 즉, 데이터 프로세싱 시스템은, 프로세싱 결과를 변경하지 않고 데이터흐름 그래프에서 하나 이상의 노드의 출현 순서가 변경될 수 있는지 여부를 결정할 수 있다. 이는, 커뮤팅 노드가 있는 경우, 커뮤팅 노드의 적어도 일부의 순서를 변경하여, 최적화 규칙이 그래프의 일부에 적용가능하게 될 수 있지만, 그렇지 않으면 상기 규칙은 적용가능하지 않을 것이기 때문에, 중요한 기능이다.
예를 들어, 최적화 규칙은 각각의 정렬 동작을 나타내는 초기 데이터흐름 그래프에서 2개의 인접한 노드를 식별하는 것을 수반할 수 있고, 제2 정렬 동작은, 제1 동작이 삭제되어야 하므로 제1 동작의 효과를 무효화한다(예를 들어, 도 3b 및 도 3c에 도시된 예를 참조). 정의에 따라, 이러한 최적화 규칙은 정렬 동작을 나타내는 인접한 노드가 없는 데이터흐름 그래프에 적용되지 않을 것이다. 그러나, 제1 정렬 동작을 나타내는 제1 노드가 하나 이상의 다른 노드와 커뮤팅하는 경우, 제1 정렬 동작을 나타내는 제1 노드가 제2 정렬 동작을 나타내는 제2 노드에 인접하게 배치되도록 하나 이상의 다른 노드 중 적어도 하나를 사용하여 제1 노드의 순서를 변경하는 것이 가능할 수 있다. 이러한 방식으로 노드를 커뮤팅한 결과, 중복 제1 정렬 동작을 제거하는 최적화 규칙은 데이터흐름 그래프에 적용될 수 있다. 따라서, 일부 실시형태에서, 초기 데이터흐름 그래프의 제1 부분을 식별하는 것은 제1 노드에 연결된 제2 노드에 의해 표현되는 데이터 프로세싱 동작과 커뮤팅하는 정렬 데이터 프로세싱 동작을 나타내는 제1 노드를 식별하는 것을 포함할 수 있다.
일부 실시형태에서, 초기 데이터흐름 그래프로부터 업데이트된 데이터흐름 그래프를 생성할 때 다양한 유형의 최적화 규칙 중 임의의 하나 이상이 적용될 수 있다. 제한이 아닌 예로서, 최적화 규칙을 초기 데이터흐름 그래프에 적용하는 것은 하나 이상의 중복 데이터 프로세싱 동작 제거, 하나 이상의 참조되지 않은 데이터 프로세싱 동작 제거, 하나 이상의 세기 감소 최적화 수행, 하나 이상의 결합 동작 최적화 수행, 하나 이상의 폭 감소 최적화 수행, 및/또는 하나 이상의 중복 제거 최적화 수행을 수반할 수 있다.
일부 실시형태에서, 최적화 규칙은, 실행될 때, 해당 최적화가 데이터흐름 그래프에서 수행되도록 하는 프로그램 코드로 구현될 수 있다. 예를 들어, 중복을 제거하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용된 데이터흐름 그래프로부터) 중복으로 결정된 데이터 프로세싱 동작을 나타내는 적어도 하나의 노드의 제거를 유발하는 프로그램 코드로 구현될 수 있다. 프로그램 코드는, 본원에 설명된 기술의 양태가 이에 관하여 제한되지 않기 때문에, 임의의 프로그래밍 언어로 기록될 수 있다.
또 다른 예로서, 하나 이상의 참조되지 않은 데이터 프로세싱 동작을 제거하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용되는 데이터흐름 그래프로부터) 참조되지 않고/않거나 사용되지 않는 결과를 갖는 데이터 프로세싱 동작(예컨대, 정렬로부터 발생하는 순서가 후속 프로세싱에 필요하거나 의존되지 않기 때문에 참조되지 않는 정렬 데이터 프로세싱 동작)을 나타내는 적어도 하나의 노드의 제거를 유발하는 프로그램 코드로 구현될 수 있다.
또 다른 예로서, 세기 감소 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용된 데이터흐름 그래프에서) 제1 데이터 프로세싱 동작을 나타내는 제1 노드(예를 들어, 정렬 데이터 프로세싱 동작을 나타내는 노드)의 제1 데이터 프로세싱 동작보다 약한 유형의 제2 데이터 프로세싱 동작을 나타내는 제2 노드(예를 들어, 그룹 내 정렬 데이터 프로세싱 동작을 나타내는 노드)로의 대체를 유발하는 프로그램 코드로 구현될 수 있다.
또 다른 예로서, 결합 동작 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용된 데이터흐름 그래프에서) 다중 동작을 나타내는 다중 노드의 이들 다중 동작의 결합을 나타내는 단일 노드로의 대체를 유발하는 프로그램 코드로 구현될 수 있다.
또 다른 예로서, 폭-감소 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, 데이터(즉, 삭제된 데이터)가 후속 동작에 사용되지 않고 프로세싱의 일부로서 전파될 필요가 없기 때문에 후속 동작의 수행 전에 그래프의 소정 부분에서 일부 데이터(예를 들어, 하나 이상의 데이터 열)가 삭제되도록 하는 프로그램 코드로 구현될 수 있다. 또 다른 예로서, 데이터흐름 그래프의 노드는 여러 계산을 수행하도록 구성될 수 있고, 이들 계산의 일부의 결과는 사용되지 않을 수 있다. 따라서, 일부 실시형태에서, 폭 감소 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, 특정 노드가, 결과가 사용되는 이들 계산만을 수행하도록 구성된 다른 노드로 대체되도록 하는 프로그램 코드로 구현될 수 있고; 불필요한 계산이 더 이상 수행되지 않는다.
또 다른 예로서, 중복 제거 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, 규칙이 적용된 데이터흐름 그래프의 다른 분기가 병합되도록 하는 프로그램 코드로 구현될 수 있다.
기법이 임의의 특정 구현 방식으로 제한되지 않기 때문에, 상기에서 소개되고 하기에서 더 상세히 논의되는 기법이 임의의 다양한 방식으로 구현될 수 있다는 것이 이해되어야 한다. 구현의 세부 사항의 예는 오로지 예시 목적으로 본원에 제공된다. 또한, 본원에 설명된 기술의 양태가 임의의 특정 기법 또는 기법 조합의 사용으로 제한되지 않기 때문에, 본원에 개시된 기법은 개별적으로 또는 임의의 적절한 조합으로 사용될 수 있다.
도 1a는 본원에 설명된 기술의 일부 실시형태에 따른, 예시적인 데이터 프로세싱 시스템(100)의 다이어그램이다. 도 1a에 예시된 바와 같이, 데이터 프로세싱 시스템(100)은 질의 입력 모듈(104), 질의 계획 생성기(106), 데이터흐름 그래프 생성기(108), 그래프 최적화기(110), 레이아웃 할당 모듈(112) 및 그래프 실행 엔진(115)을 포함한다.
데이터 프로세싱 시스템(100)은 데이터 저장소(102-1, 102-2, ..., 및 102-n)에 액세스(예를 들어, 데이터를 판독 및/또는 기록)하도록 구성된다. 각각의 데이터 저장소(102-1, 102-2, ..., 및 102-n)는 하나 이상의 데이터세트를 저장할 수 있다. 데이터 저장소는 임의의 적절한 방식으로 임의의 적절한 유형의 데이터를 저장할 수 있다. 데이터 저장소는 데이터베이스 시스템(예를 들어, 관계형 데이터베이스 시스템)을 사용하거나, 임의의 다른 적절한 방식으로 데이터를 플랫 텍스트 파일(flat text file), 스프레드시트(spreadsheet)로 저장할 수 있다. 일부 경우에서, 데이터 저장소는 거래 데이터를 저장할 수 있다. 예를 들어, 데이터 저장소는 신용 카드 거래, 전화 기록 데이터, 또는 은행 거래 데이터를 저장할 수 있다. 본원에 설명된 기술의 양태가 이에 관하여 제한되지 않기 때문에, 데이터 프로세싱 시스템(100)은 임의의 적절한 유형의 임의의 적절한 데이터 저장소의 수에 액세스하도록 구성될 수 있다는 것이 이해되어야 한다. 데이터 프로세싱 시스템(100)이 데이터를 판독하도록 구성될 수 있는 데이터 저장소는 데이터 소스로 지칭될 수 있다. 데이터 프로세싱 시스템(100)이 데이터를 기록하도록 구성될 수 있는 데이터 저장소는 데이터 싱크(sink)로 지칭될 수 있다.
일부 실시형태에서, 데이터 저장소(102-1, 102-2, ..., 102-n)는 동일한 유형(예를 들어, 모두가 관계형 데이터베이스일 수 있음) 또는 상이한 유형(예를 들어, 하나는 관계형 데이터베이스일 수 있지만, 다른 하나는 플랫 파일에 데이터를 저장하는 데이터 저장소일 수 있음)일 수 있다. 본원에 설명된 기술의 양태가 이에 관하여 제한되지 않기 때문에, 데이터 저장소는 SQL 서버 데이터 저장소, ORACLE 데이터 저장소, TERADATA 데이터 저장소, 플랫 파일 데이터 저장소, 다중-파일 데이터 저장소, HADOOP 데이터 저장소, DB2 데이터 저장소, Microsoft SQL SEVER 데이터 저장소, INFORMIX 데이터 저장소, SAP 데이터 저장소, MongoDB 데이터 저장소, 메타데이터 데이터 저장소, 및/또는 임의의 다른 적절한 유형의 데이터 저장소일 수 있다.
일부 실시형태에서, 질의 입력 모듈(104)은 입력 SQL 질의를 수신하도록 구성될 수 있다. 일부 실시형태에서, 질의 입력 모듈(104)은 사용자로부터 입력 SQL 질의를 수신하도록 구성될 수 있다. 예를 들어, 질의 입력 모듈(104)은, 사용자가 SQL 질의를 입력할 수 있는 그래픽 사용자 인터페이스를 생성하도록 구성될 수 있다. 다른 예로서, 질의 입력 모듈(104)은 그래픽 사용자 인터페이스(질의 입력 모듈(104) 자체에 의해 반드시 생성되지 않은 인터페이스)를 통해 사용자가 제공한 정보를 수신하도록 구성될 수 있다. 일부 실시형태에서, 질의 입력 모듈(104)은 다른 컴퓨터 프로그램으로부터 입력 SQL 질의를 수신하도록 구성될 수 있다. 예를 들어, 질의 입력 모듈(104)은, 입력 SQL 질의가 제공될 수 있는 애플리케이션 프로그래밍 인터페이스(API)(예를 들어, 개방형 데이터베이스 접속성(ODBC) API 및 자바 데이터베이스 접속성(JDBC) API)를 노출시킬 수 있거나, SQL 질의에 액세스해야 한다는 통지에 대한 응답으로 SQL 질의에 액세스할 수 있거나, 임의의 다른 적절한 방식으로 다른 컴퓨터 프로그램으로부터 입력 SQL 질의를 수신할 수 있다.
질의 입력 모듈(104)에 의해 수신된 SQL 질의는 단일 데이터 저장소로부터 데이터를 판독하고/하거나 단일 데이터 저장소에 데이터를 기록하는 것을 수반할 수 있다. 대안적으로, 질의 입력 모듈(104)에 의해 수신된 SQL 질의는 다수의 데이터 저장소로부터 데이터를 판독하고/하거나 다수의 데이터 저장소에 데이터를 기록하는 것을 수반할 수 있다. 데이터 저장소의 유형이 상이할 때, SQL 질의는 연합된 SQL 질의라고 지칭될 수 있다. 일부 실시형태에서, SQL 질의는 연합된 데이터베이스로부터 데이터를 판독하고/하거나 연합된 데이터베이스에 데이터를 기록하는 것을 수반할 수 있다.
일부 실시형태에서, 질의 계획 생성기(106)는 질의 입력 모듈(104)에 의해 수신된 SQL 질의로부터 질의 계획을 생성하도록 구성된다. 생성된 질의 계획은, SQL 질의가 실행된 경우 수행될 하나 이상의 데이터 프로세싱 동작을 식별할 수 있다. 생성된 질의 계획은, 식별된 데이터 프로세싱 동작이 실행될 순서를 추가로 특정할 수 있다. 이와 같이, 생성된 질의 계획은 질의 입력 모듈(104)에 의해 수신된 SQL 질의를 실행하기 위해 수행할 데이터 프로세싱 동작의 시퀀스를 나타낼 수 있다. 질의 계획 생성기(106)는 임의의 적절한 방식으로 질의 계획을 생성하도록 구성될 수 있다. 예를 들어, 일부 실시형태에서, 질의 계획 생성기(106)는 그 전체가 본원에 인용에 의해 포함된 "Managing Data Queries"라는 명칭의 미국 특허 제9,116,955호에 설명된 질의 계획을 생성하기 위한 기법 중 임의의 기법을 구현할 수 있다.
일부 실시형태에서, 데이터흐름 그래프 생성기(108)는 질의 계획 생성기(106)에 의해 생성된 질의 계획으로부터 초기 데이터흐름 그래프를 생성하도록 구성된다. 데이터흐름 그래프 생성기(108)는 임의의 적절한 방식으로 질의 계획으로부터 초기 데이터흐름 그래프를 생성하도록 구성될 수 있다. 예를 들어, 일부 실시형태에서, 데이터흐름 그래프 생성기(108)는 그 전체가 본원에 인용에 의해 포함된 "Managing Data Queries"라는 명칭의 미국 특허 제9,116,955호에 설명된 질의 계획을 생성하기 위한 기법 중 임의의 기법을 구현할 수 있다.
일부 실시형태에서, 데이터흐름 그래프는 입력 데이터에 대해 수행될 데이터 프로세싱 동작을 나타내는 "노드" 또는 "정점"으로 지칭되는 컴포넌트 및 데이터의 흐름을 나타내는 컴포넌트 사이의 링크를 포함할 수 있다. 데이터흐름 그래프의 노드는 각각의 입력 데이터세트를 나타내는 하나 이상의 입력 노드, 각각의 출력 데이터세트를 나타내는 하나 이상의 출력 노드, 및 데이터에 대해 수행될 데이터 프로세싱 동작을 나타내는 하나 이상의 노드를 포함할 수 있다. 일부 실시형태에서, 입력 노드는 연합된 데이터베이스 또는 임의의 다른 유형의 데이터베이스를 나타낼 수 있다. 유사하게, 일부 실시형태에서, 출력 노드는 연합된 데이터베이스 또는 임의의 다른 유형의 데이터베이스를 나타낼 수 있다.
일부 실시형태에서, 데이터흐름 그래프의 상이한 노드에 의해 표현되는 상이한 데이터 프로세싱 동작은 상이한 각각의 컴퓨터 시스템 프로세스를 사용하여 실행될 수 있다. 예를 들어, 데이터흐름 그래프는 제1 데이터 프로세싱 동작(예를 들어, "정렬" 동작)을 나타내는 제1 노드 및 제1 데이터 프로세싱 동작과 상이한 제2 데이터 프로세싱 동작(예를 들어, "조인(join)" 동작)을 나타내는 제2 노드를 포함할 수 있고, 일부 실시형태에서, 제1 컴퓨터 시스템 프로세스는 제1 데이터 프로세싱 동작을 실행하는 데 사용될 수 있고 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스는 제2 데이터 프로세싱 동작을 실행하는 데 사용될 수 있다. 일부 실시형태에서, 제1 및 제2 컴퓨터 시스템 프로세스는 동일한 컴퓨팅 디바이스에서 실행될 수 있고, 예를 들어 동일한 운영 체제에 의해 관리될 수 있다. 다른 실시형태에서, 제1 및 제2 컴퓨터 시스템 프로세스는 상이한 컴퓨팅 디바이스에서 실행될 수 있다.
일부 실시형태에서, 데이터흐름 그래프의 노드에 의해 표현된 데이터 프로세싱 동작을 실행하는 데 사용되는 컴퓨터 시스템 프로세스는 데이터 프로세싱 동작을 인코딩하기 위한 프로세서-실행가능 명령을 실행하도록 구성된 컴퓨터 프로그램의 인스턴스일 수 있다. 컴퓨터 시스템 프로세스는 단일-스레드 또는 다중-스레드 프로세스일 수 있다. 컴퓨터 시스템 프로세스는 제한이 아닌 예로서, 데이터 프로세싱 동작을 인코딩하는 것을 나타내는 프로세서-실행가능 명령, 메모리(예를 들어, 실행가능 코드, 프로세스-특정 입력 및/또는 출력 데이터, 호출 스택, 계산 힙(heap), 및/또는 기타 데이터를 보유하는 물리적 메모리 및/또는 가상 메모리의 영역), (예를 들어, 컴퓨터 시스템 프로세스를 식별하기 위해 운영 체제에 의해 사용되는) 프로세스 식별자, 보안 속성(예를 들어, 컴퓨터 시스템 프로세스가 수행하도록 허용된 프로세스 및/또는 동작의 하나 이상의 소유자를 나타내는 권한), 및/또는 컴퓨터 시스템 프로세스의 상태를 특정하는 정보를 포함하는 하나 이상의 컴퓨터 시스템 리소스와 연관될 수 있다.
일부 실시형태에서, 초기 데이터흐름 그래프는 적어도 질의 계획에서 식별된 데이터 프로세싱 동작의 서브세트(예를 들어, 일부 또는 모두) 각각에 대한 노드를 포함하도록 초기 데이터흐름 그래프를 생성함으로써 적어도 부분적으로 질의 계획으로부터 생성될 수 있다. 후속하여, 질의 계획에 특정된 데이터 프로세싱 동작의 순서는 초기 데이터흐름 그래프의 노드를 연결하는 링크를 생성하는 데 사용될 수 있다. 예를 들어, 생성된 질의 계획이, 제2 데이터 프로세싱 동작 전에 제1 데이터 프로세싱 동작이 수행됨을 나타낼 때, 생성된 초기 데이터흐름 그래프는 (제1 데이터 프로세싱 동작을 나타내는) 제1 노드 및 (제2 데이터 프로세싱 동작을 나타내는) 제2 노드 및 제1 노드로부터 제2 노드로의 경로를 특정하는 하나 이상의 링크를 가질 수 있다.
일부 실시형태에서, 질의 계획으로부터 초기 데이터흐름 그래프를 생성하는 것은 입력 및/또는 출력 데이터 소스를 나타내는 그래프에 하나 이상의 노드를 추가하는 것을 포함한다. 예를 들어, 초기 데이터흐름 그래프를 생성하는 것은 SQL 질의의 실행 동안 데이터 기록이 판독될 데이터 소스 각각에 대한 입력 노드를 추가하는 것을 포함할 수 있다. 입력 노드 각각은 각각의 데이터 소스와 연관된 파라미터 값으로 구성될 수 있다. 이들 값은 데이터 소스의 데이터 기록에 액세스하는 방법을 나타낼 수 있다. 다른 예로서, 초기 데이터흐름 그래프를 생성하는 것은 SQL 질의의 실행 동안 데이터 기록이 기록될 데이터 싱크 각각에 대한 출력 노드를 추가하는 것을 포함할 수 있다. 출력 노드 각각은 각각의 데이터 싱크와 연관된 파라미터 값으로 구성될 수 있다. 이들 값은 데이터 기록을 데이터 소스에 기록하는 방법을 나타낼 수 있다. 일부 실시형태에서, 초기 데이터흐름 그래프는 그래프 실행 엔진에 의해 실행가능할 수 있다. 다른 실시형태에서, 초기 데이터흐름 그래프는 그래프 실행 엔진에 의해 실행가능하지 않을 수 있다.
일부 실시형태에서, 그래프 최적화기(110)는 데이터흐름 그래프 생성기(108)에 의해 생성된 초기 데이터흐름 그래프를 업데이트하기 위해 하나 이상의 데이터흐름 그래프 최적화 규칙을 사용함으로써 업데이트된 데이터흐름 그래프를 생성하도록 구성된다. 그래프 최적화기(110)는 본원에 설명된 임의의 다양한 유형의 최적화 규칙 중 하나 이상을 초기 데이터흐름 그래프에 적용하도록 구성될 수 있다. 예를 들어, 그래프 최적화기(110)는 하나 이상의 중복 데이터 프로세싱 동작을 제거하고/하거나, 하나 이상의 참조되지 않은 데이터 프로세싱 동작을 제거하고/하거나, 하나 이상의 세기 감소 최적화를 수행하고/하거나, 하나 이상의 결합 동작 최적화를 수행하고/하거나, 하나 이상의 폭 감소 최적화를 수행하고/하거나, 하나 이상의 중복 제거 최적화를 수행함으로써 초기 데이터흐름 그래프를 업데이트하도록 구성될 수 있다. 그래프 최적화기(110)는 임의의 적절한 방식으로 동작하도록 구성될 수 있고, 예를 들어, 도 2를 참조하여 설명된 예시적인 프로세스(200) 또는 이의 하나 이상의 변형에 따라 동작하도록 구성될 수 있다.
일부 실시형태에서, 레이아웃 할당 모듈(112)은 그래프 최적화기(110)에 의해 생성된 업데이트된 데이터흐름 그래프의 각각의 노드에 의해 표현된 하나 이상의 데이터 프로세싱 동작 각각에 대한 프로세싱 레이아웃을 결정할 수 있다. 데이터 프로세싱 동작을 위한 프로세싱 레이아웃은 얼마나 많은 컴퓨팅 디바이스가 데이터 프로세싱 동작을 수행하기 위해 사용될지를 특정할 수 있고 데이터 프로세싱 동작을 수행하기 위해 사용될 특정 컴퓨팅 디바이스를 식별할 수 있다. 따라서, 일부 실시형태에서, 레이아웃 할당 모듈(112)은 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 대해, 데이터 프로세싱 동작이 단일 디바이스(예를 들어, 단일 프로세서, 단일 가상 머신 등)를 사용하여 수행되어야 하는지 또는 다중 디바이스(예를 들어, 다중 프로세서, 다중 가상 머신 등)를 사용하여 수행되어야 하는지 및 어느 디바이스가 사용되어야 하는지를 결정할 수 있다. 일부 실시형태에서, 레이아웃 할당 모듈은 업데이트된 데이터흐름 그래프의 다른 노드에 다른 병렬성(parallelism)을 할당할 수 있다. 이와 같이, 그래프 최적화기(110)에 의해 생성된 업데이트된 데이터흐름 그래프의 실행 동안 수행될 상이한 데이터 프로세싱 동작에 상이한 프로세싱 레이아웃이 할당될 수 있다는 것이 이해되어야 한다.
일부 실시형태에서, 업데이트된 데이터흐름 그래프는 상이한 데이터 프로세싱 동작을 나타내는 다중(예를 들어, 2개 이상의) 노드를 포함할 수 있고, 데이터 프로세싱 동작을 실행하기 위해 상이한 프로세스가 사용될 수 있다. 예를 들어, 하나 이상의 컴퓨터 시스템 프로세스가 제1 노드에 의해 표현된 데이터 프로세싱 동작을 실행하는 데 사용될 수 있고(예를 들어, 데이터 프로세싱 동작이 병렬화될 때 다중 컴퓨터 시스템 프로세스가 사용될 수 있음) 하나 이상의 다른 컴퓨터 시스템 프로세스가 제1 노드와 상이한 업데이트된 데이터흐름 그래프의 제2 노드에 의해 표현된 데이터 프로세싱 동작을 실행하는 데 사용될 수 있다.
일부 실시형태에서, 그래프 실행 엔진(115)은 하나 이상의 데이터흐름 그래프를 실행하도록 구성된다. 예를 들어, 초기 데이터흐름 그래프가 실행가능한 일부 실시형태에서, 그래프 실행 엔진(115)은 데이터흐름 그래프 생성기(108)에 의해 생성된 임의의 초기 데이터흐름 그래프를 실행하도록 구성될 수 있다. 다른 예로서, 그래프 실행 엔진(115)은 그래프 최적화기(110)에 의해 생성된 임의의 업데이트된 데이터흐름 그래프를 실행하도록 구성될 수 있다. 그래프 실행 엔진은 데이터흐름 그래프를 실행하기 위한 협력 시스템 또는 임의의 다른 적절한 실행 환경을 포함할 수 있다. 데이터흐름 그래프를 개발 및 실행하기 위한 환경의 양태는 "Executing Computations Expressed as Graphs"이라는 명칭의 미국 특허 제5,966,072호 및 "Managing Parameters for Graph-Based Computations"라는 명칭의 미국 특허 제7,716,630호에서 설명되고, 이 특허 각각은 그 전체가 본원에 인용에 의해 포함된다.
도 1b는 본원에 설명된 기술의 일부 실시형태에 따른, 입력 구조화 질의 언어(SQL) 질의로부터 데이터흐름 그래프를 자동으로 생성하기 위한 예시적인 프로세스(120)의 흐름도이다. 프로세스(120)는 임의의 적절한 데이터 프로세싱 시스템에 의해 수행될 수 있고, 예를 들어, 도 1a를 참조하여 설명된 데이터 프로세싱 시스템(100)에 의해 수행될 수 있다.
프로세스(120)는, SQL 질의가 수신되는 단계(122)에서 시작된다. SQL 질의는 질의 입력 모듈(104)을 사용하여 수신될 수 있다. 이것은 프로세스(200)의 단계(202)를 참조하여 설명된 임의의 방식을 포함하는 임의의 적절한 방식으로 수행될 수 있다.
다음으로, 프로세스(120)는 단계(124)로 진행하고, 여기서 질의 계획은 단계(122)에서 수신된 SQL 질의로부터 생성된다. 질의 계획은 질의 계획 생성기(106)를 사용하여 생성될 수 있다. 이것은 프로세스(200)의 단계(204)를 참조하여 설명된 임의의 방식을 포함하는 임의의 적절한 방식으로 수행될 수 있다.
다음으로, 프로세스(120)는 단계(126)로 진행하고, 여기서 초기 데이터흐름 그래프는 단계(124)에서 획득된 질의 계획으로부터 생성된다. 초기 질의 계획은 데이터흐름 그래프 생성기(108)에 의해 생성될 수 있다. 이것은 프로세스(200)의 단계(206)를 참조하여 설명된 임의의 방식을 포함하는 임의의 적절한 방식으로 수행될 수 있다.
다음으로, 프로세스(120)는 단계(128)로 진행하고, 여기서 업데이트된 데이터흐름 그래프는 초기 데이터흐름 그래프에 하나 이상의 최적화 규칙을 적용함으로써 초기 데이터흐름 그래프로부터 생성된다. 업데이트된 데이터흐름 그래프는 그래프 최적화기(110)에 의해 생성될 수 있다. 이것은 프로세스(200)의 단계(207)를 참조하여 설명된 임의의 방식을 포함하는 임의의 적절한 방식으로 수행될 수 있다.
업데이트된 데이터흐름 그래프는 후속 사용을 위해 저장되거나 데이터 프로세싱 시스템에 의해 실행될 수 있다. 실행 전에, 프로세싱 레이아웃은 업데이트된 데이터흐름 그래프의 노드에 의해 표현된 하나 이상의 데이터 프로세싱 동작에 할당될 수 있다. 프로세싱 레이아웃은 레이아웃 할당 모듈(112)에 의해 데이터 프로세싱 동작에 할당될 수 있다.
도 2는 본원에 설명된 기술의 일부 실시형태에 따른, 입력 SQL 질의로부터 데이터흐름 그래프를 자동으로 생성하기 위한 예시적인 프로세스(200)의 흐름도이다. 프로세스(200)는 예를 들어 도 1a를 참조하여 설명된 데이터 프로세싱 시스템(100)을 포함하는 임의의 적절한 데이터 프로세싱 시스템을 사용하여 실행될 수 있다.
프로세스(200)는, SQL 질의가 수신되는 단계(202)에서 시작된다. 일부 실시형태에서, SQL 질의는 사용자가 SQL 질의를 데이터 프로세싱 시스템에 대한 입력으로 제공한 결과로서 프로세스(200)를 실행하는 데이터 프로세싱 시스템에 의해 수신될 수 있다. 사용자는 그래픽 사용자 인터페이스 또는 임의의 다른 적절한 유형의 인터페이스를 통해 SQL 질의를 입력할 수 있다. 다른 실시형태에서, SQL 질의는 다른 컴퓨터 프로그램에 의해 데이터 프로세싱 시스템에 제공될 수 있다. 예를 들어, SQL 질의는 데이터 프로세싱 시스템이 하나 이상의 SQL 질의를 실행하게 하도록 구성된 컴퓨터 프로그램에 의해 제공될 수 있으며, SQL 질의 각각은 사용자에 의해 특정되거나 자동으로 생성될 수 있다. SQL 질의는 임의의 적절한 유형일 수 있고, 본원에 설명된 기술의 양태가 이에 관하여 제한되지 않기 때문에, 임의의 적절한 포맷으로 제공될 수 있다.
다음으로, 프로세스(200)는 단계(204)로 진행하고, 여기서 질의 계획은 단계(202)에서 수신된 SQL 질의로부터 생성된다. 생성된 질의 계획은, SQL 질의가 실행된 경우 수행될 하나 이상의 데이터 프로세싱 동작을 식별할 수 있다. 생성된 질의 계획은, 식별된 데이터 프로세싱 동작이 실행될 순서를 추가로 특정할 수 있다. 이와 같이, 생성된 질의 계획은 단계(202)에서 수신된 SQL 질의를 실행하기 위해 수행할 데이터 프로세싱 동작의 시퀀스를 나타낼 수 있다. 생성된 질의 계획은 임의의 적절한 유형의 질의 계획 생성기(예를 들어, 질의 계획 생성기(106))를 사용하여 생성될 수 있다. 질의 계획을 생성하기 위한 일부 예시적인 기법은 "Managing Data Queries"라는 명칭의 미국 특허 제9,116,955호에서 설명되고, 이 특허는 그 전체가 본원에 인용에 의해 포함된다.
다음으로, 프로세스(200)는 단계(206)로 진행하고, 여기서 초기 데이터흐름 그래프는 단계(202)에서 수신된 SQL 질의를 사용하여 단계(204)에서 생성된 질의 계획으로부터 생성된다. 일부 실시형태에서, 초기 데이터흐름 그래프는 적어도 질의 계획에서 식별된 데이터 프로세싱 동작의 서브세트(예를 들어, 일부 또는 모두) 각각에 대한 노드를 포함하도록 초기 데이터흐름 그래프를 생성함으로써 적어도 부분적으로 질의 계획으로부터 생성될 수 있다. 일부 실시형태에서, 질의 계획의 단일 노드는 초기 데이터흐름 그래프의 다수의 노드의 포함을 초래할 수 있다. 후속하여, 질의 계획에 특정된 데이터 프로세싱 동작의 순서는 초기 데이터흐름 그래프의 노드를 연결하는 링크를 생성하는 데 사용될 수 있다. 예를 들어, 생성된 질의 계획이, 제2 데이터 프로세싱 동작 전에 제1 데이터 프로세싱 동작이 수행됨을 나타낼 때, 생성된 초기 데이터흐름 그래프는 (제1 데이터 프로세싱 동작을 나타내는) 제1 노드 및 (제2 데이터 프로세싱 동작을 나타내는) 제2 노드 및 제1 노드로부터 제2 노드로의 경로를 특정하는 하나 이상의 링크를 가질 수 있다.
일부 실시형태에서, 질의 계획으로부터 초기 데이터흐름 그래프를 생성하는 것은 입력 및/또는 출력 데이터 소스를 나타내는 그래프에 하나 이상의 노드를 추가하는 것을 포함한다. 예를 들어, 초기 데이터흐름 그래프를 생성하는 것은 SQL 질의의 실행 동안 데이터 기록이 판독될 데이터 소스 각각에 대한 입력 노드를 추가하는 것을 포함할 수 있다. 입력 노드 각각은 각각의 데이터 소스와 연관된 파라미터 값으로 구성될 수 있다. 이들 값은 데이터 소스의 데이터 기록에 액세스하는 방법을 나타낼 수 있다. 다른 예로서, 초기 데이터흐름 그래프를 생성하는 것은 SQL 질의의 실행 동안 데이터 기록이 기록될 데이터 싱크 각각에 대한 출력 노드를 추가하는 것을 포함할 수 있다. 출력 노드 각각은 각각의 데이터 싱크와 연관된 파라미터 값으로 구성될 수 있다. 이들 값은 데이터 기록을 데이터 소스에 기록하는 방법을 나타낼 수 있다.
단계(206)에서 생성된 초기 데이터흐름 그래프가 단계(204)에서 생성된 질의 계획과 상이하다는 것이 이해되어야 한다. 데이터흐름 그래프는 그래프 실행 엔진(예를 들어, 그래프 실행 엔진(115))에 의해 실행될 수 있는 반면, 질의 계획은 그래프 실행 엔진에 의해 실행될 수 없고 - 이는 데이터흐름 그래프를 생성하는 데 사용되는 중간 표현이고, 데이터흐름 그래프는 SQL 질의를 실행하기 위해 그래프 실행 엔진에 의해 실행된다. 질의 계획은 실행가능하지 않고, 관계형 데이터베이스 관리 시스템의 맥락에서도, 실행 전략을 생성하기 위해 추가 프로세스가 필요하다. 반대로, 데이터흐름 그래프는 SQL 질의를 수행하기 위해 그래프 실행 엔진에 의해 실행가능하다. 또한, 관계형 데이터베이스 시스템에 의한 추가 프로세스 후에도, 결과적인 실행 전략은 다른 유형의 데이터 소스 및/또는 데이터 싱크에서 데이터를 판독 및/또는 데이터를 기록하는 것을 허용하지 않는 반면, 데이터흐름 그래프는 이에 관하여 제한되지 않는다.
일부 실시형태에서, 단계(206)에서 생성된 초기 데이터흐름 그래프는 단계(204)에서 생성된 질의 계획에 있지 않은 데이터 프로세싱 동작을 나타내는 노드를 포함할 수 있다. 반대로, 일부 실시형태에서, 단계(206)에서 생성된 초기 데이터흐름 그래프는 단계(204)에서 생성된 질의 계획에 있는 데이터 프로세싱 동작을 나타내는 노드를 포함하지 않을 수 있다. 이러한 상황은 질의 계획으로부터 데이터흐름 그래프를 생성하는 프로세스 동안 수행될 수 있는 다양한 최적화로 인해 발생할 수 있다. 일부 실시형태에서, 단계(206)에서 생성된 초기 데이터흐름 그래프는 데이터베이스 컴퓨터 시스템(예를 들어, 관계형 데이터베이스 관리 시스템)에서 수행되는 데이터베이스 동작 이외의 데이터 프로세싱 동작을 나타내는 노드를 포함할 수 있다.
일부 실시형태에서, 질의 계획 및 데이터흐름 그래프는 상이한 유형의 데이터 구조로 구현될 수 있다. 예를 들어, 일부 실시형태에서, 질의 계획은, 각각의 노드가 단일 부모 노드(예: 예를 들어, 이진 트리와 같은 트리)를 갖는 방향성(directed) 그래프로 구현될 수 있는 반면, 데이터흐름 그래프는 다수의 부모 노드를 갖는 적어도 하나의 노드를 가질 수 있는 방향성 비순환적 그래프로 구현될 수 있다.
다음으로, 프로세스(200)는 단계(207)로 진행하고, 여기서 초기 데이터흐름 그래프는 업데이트된 데이터흐름 그래프를 획득하기 위해 업데이트된다. 이것은 임의의 다양한 방식으로 수행될 수 있다. 예를 들어, 예시된 실시형태에서, 데이터흐름 그래프 최적화 규칙은 단계(208)에서 선택된다. 다음으로, 프로세스(200)를 실행하는 데이터 프로세싱 시스템은 단계(208)에서 식별된 최적화 규칙을 적용할 초기 데이터흐름 그래프의 일부를 식별한다. 단계(212)에서, 선택된 최적화 규칙은 그래프의 식별된 부분에 적용된다. 다음으로, 프로세스(200)는 판정 블록(214)으로 진행하고, 여기서 데이터흐름 그래프의 적어도 하나 이상의 부분에 적용할 최적화 규칙이 있는지 여부가 결정된다. 그래프의 적어도 하나 이상의 부분에 적용할 최적화 규칙이 있다고 결정되면(예를 들어, 단계(208)에서 선택된 최적화 규칙은 단계(210)에서 식별된 부분과 상이한 그래프의 다른 부분에 적용될 수 있고, 상이한 최적화 규칙이 함께 선택될 수 있고, 등등), 프로세스(200)는 단계(208)로 리턴한다. 그렇지 않으면, 프로세스(200)는 단계(216)로 진행한다.
일부 실시형태에서, 단계(208)에서 선택된 각각의 특정 최적화 규칙에 대해, 데이터 프로세싱 시스템은, 선택된 최적화 규칙이 적용가능한 데이터흐름 그래프의 부분을 식별하고 식별된 부분에 최적화 규칙을 적용할 수 있다. 이러한 부분이 모두 식별되면, 상이한 최적화 규칙이 선택될 수 있다. 그러나, 데이터흐름 그래프에 동일한 최적화 규칙의 적용이 여러 번 고려될 수 있도록 이전에-적용된 최적화 규칙이 또한 선택될 수 있다(이는 최적화 규칙이 과하게 선택되고 1회 적용한 후 사용되지 않는 접근법보다 더 최적화된 데이터흐름 그래프를 생성할 수 있음). 본원에 설명된 기술의 양태가 이에 관하여 제한되지 않기 때문에, 최적화 규칙은 임의의 적절한 순서로 선택될 수 있다. 일 예로서, 중복 제거 최적화를 수행한 후, 중복 동작을 나타내는 임의의 노드가 제거될 수 있고, 임의의 빈 노드가 제거될 수 있다. 빈 노드를 제거한 후, 폭 감소 최적화 등이 수행될 수 있다.
일부 실시형태에서, 단계(208 및 210)의 순서가 변경될 수 있다. 이러한 실시형태에서, 데이터 프로세싱 시스템은 먼저 데이터흐름 그래프의 일부를 식별하고, 이어서 식별된 데이터흐름 그래프 부분에 적용될 수 있는 최적화 규칙을 선택할 수 있다. 이러한 실시형태에서, 초기 데이터흐름 그래프는 토폴로지적으로 정렬될 수 있고 토폴로지적으로 정렬된 그래프는 최적화 규칙이 적용될 수 있는 특정 부분을 식별하기 위해 (예를 들어, 좌측에서 우측으로) 순회될 수 있다.
일부 실시형태에서, 데이터 프로세싱 시스템은 하나 이상의 최적화 규칙을 적용할 초기 데이터흐름 그래프의 하나 이상의 부분을 식별하기 위해 데이터흐름 서브그래프 패턴 매칭 언어를 이용할 수 있다. 데이터흐름 서브그래프 패턴 매칭 언어는 데이터흐름 그래프에서 특정 유형의 서브그래프를 식별하기 위해 하나 이상의 표현을 포함할 수 있다. 일부 실시형태에서, 프로세스(200)를 실행하는 데이터 프로세싱 시스템은 하나 이상의 최적화 규칙을 적용할 데이터흐름 그래프의 부분을 식별하기 위해 서브그래프 패턴 매칭 언어의 표현을 사용하도록 구성될 수 있다. 특정 표현은 특정 최적화 규칙 또는 다중 최적화 규칙의 적용을 위한 하나 이상의 부분의 식별을 용이하게 할 수 있다. 일부 실시형태에서, 데이터흐름 그래프 최적화기(예를 들어, 그래프 최적화기(110))가 하나 이상의 새로운 최적화 규칙으로 구성될 때, 그래프 최적화기는, 새로운 최적화 규칙(들)이 적용될 수 있는 데이터흐름 그래프의 부분의 식별을 용이하게 하기 위해 서브그래프 패턴 매칭 언어로 기록된 하나 이상의 새로운 표현으로 구성될 수 있다.
예를 들어, 패턴 매칭 언어는 결합 동작 최적화 규칙을 사용하여 그래프에서 단일 노드에 의해 표현되고 결합될 수 있는 각각 일련의 계산을 나타내는 적어도 임계 길이(예를 들어, 적어도 2, 3, 4, 5 등)의 일련의 노드를 식별하기 위한 표현을 포함할 수 있다. 이러한 패턴을 식별하는 것은 결합 동작 최적화 규칙의 적용을 용이하게 할 수 있고, 이는 도 5a 내지 도 5d를 참조하여 포함된 하기에서 추가로 설명된다. 하나의 이러한 표현의 비-제한적인 예는 "A→B→C→D"이고, 이는 결합될 수 있는 일련의 4개의 연속적인 데이터 프로세싱 동작을 식별하는 것을 도울 수 있다.
다른 예로서, 패턴 매칭 언어는, 특정 유형의 노드가 다른 노드와 커뮤팅할 수 있는 데이터흐름 그래프의 부분을 식별하기 위한 표현을 포함할 수 있다. 이것은 데이터흐름 그래프에 다수의 상이한 유형의 최적화 규칙의 적용을 용이하게 할 수 있다. 데이터 프로세싱 시스템이, 데이터흐름 그래프에서 하나 이상의 노드 순서가 프로세싱 결과를 변경하지 않고 변경될 수 있다고 결정할 때, 이것은, 최적화 규칙이 적용될 수 있는 부분을 식별하기 위해 데이터 프로세싱 시스템이 (커뮤팅 동작을 통해 이용가능한 자유도에 의해 허용되는 바와 같이) 데이터흐름 그래프의 구조 변경을 고려하게 한다. 커뮤팅-기반 변경을 고려한 결과, 하나 이상의 최적화 규칙은, 규칙(들)이 다르게 적용가능하지 않은 그래프 부분에 적용가능할 수 있다.
예를 들어, 최적화 규칙은 각각의 정렬 동작을 나타내는 초기 데이터흐름 그래프에서 2개의 인접한 노드를 식별하는 것을 수반할 수 있고, 제2 정렬 동작은, 제1 동작이 삭제되어야 하므로 제1 동작의 효과를 무효화한다(예를 들어, 도 3b 및 도 3c에 도시된 예를 참조). 정의에 따라, 이러한 최적화 규칙은 정렬 동작을 나타내는 인접한 노드가 없는 데이터흐름 그래프에 적용되지 않을 것이다. 그러나, 제1 정렬 동작을 나타내는 제1 노드가 하나 이상의 다른 노드와 커뮤팅하는 경우, 제1 정렬 동작을 나타내는 제1 노드가 제2 정렬 동작을 나타내는 제2 노드에 인접하게 배치되도록 하나 이상의 다른 노드 중 적어도 하나를 사용하여 제1 노드의 순서를 변경하는 것이 가능할 수 있다. 이러한 방식으로 노드를 커뮤팅한 결과, 중복 제1 정렬 동작을 제거하는 최적화 규칙은 데이터흐름 그래프에 적용될 수 있다.
따라서, 일부 실시형태에서, 서브그래프 매칭 언어는, 데이터흐름 그래프의 순서 노드가 변경될 수 있는 상황에서 데이터흐름 그래프의 서브그래프를 식별하기 위한 하나 이상의 표현을 포함할 수 있다. 일 예로서, "A*→(…)→B"라는 표현(A와 B 각각은 정렬, 병합 등과 같은 임의의 적절한 데이터 프로세싱 동작일 수 있음)은 노드 "A"(즉, 동작 "A"를 나타내는 노드)와 (동작 B를 나타내는) 노드 B, 및 노드 A가 커뮤팅하는 노드 A와 B 사이의 하나 이상의 노드를 갖는 데이터흐름 그래프의 일부를 찾는 데 사용될 수 있다(예를 들어, 노드의 순서가 변경되는 경우, 이들 노드에 의해 수행되는 프로세싱 결과는 변경되지 않음). 이러한 부분이 식별되면, 데이터흐름 그래프는 "AB" 부분을 획득하기 위해 노드 B에 인접한 노드 A를 이동시킴으로써 변경될 수 있다. 구체적인 예로서, 데이터흐름 그래프가 노드 ACDB를 갖고, 동작 A가 동작 C 및 D와 커뮤팅하는 경우, 데이터흐름 그래프는 "CDAB"가 되도록 변경될 수 있다. 차례로, 데이터 프로세싱 시스템은, 최적화 규칙이 "AB"부분에 적용되는지 여부를 고려할 수 있다. 예를 들어, 동작 A가 정렬이고 동작 B가 정렬인 경우, 데이터 프로세싱 시스템은, 도 5b의 예에서와 같이 이들 2개의 정렬이 단일 정렬로 대체될 수 있는지 여부를 결정하려고 시도할 수 있다.
다른 예로서, "A→(…)→B*"라는 표현은 노드 A, 제2 노드 B, 및 노드 B가 커뮤팅하는 이들 노드 사이의 하나 이상의 노드를 갖는 데이터흐름 그래프의 일부를 찾는 데 사용될 수 있다. 구체적인 예로서, 데이터흐름 그래프가 노드 ACDB를 갖고, 동작 B가 동작 C 및 D와 커뮤팅하는 경우, 데이터흐름 그래프는 "ABCD"가 되도록 변경될 수 있다. 차례로, 데이터 프로세싱 시스템은, 최적화 규칙이 "AB"부분에 적용되는지 여부를 고려할 수 있다.
다른 예로서, "A→(…)→B**"라는 표현은 노드 A, 노드 B, 및 노드 B가 커뮤팅하지 않는 노드 A와 노드 B 사이의 하나 이상의 노드(예를 들어, C 및 D)를 갖는 데이터흐름 그래프의 일부를 찾는 데 사용될 수 있다. 그 경우, 시스템은, 가능한 경우 노드 C와 D가 노드 A의 좌측으로 푸시되는 "푸시" 커뮤팅을 수행하도록 시도할 수 있다. 구체적인 예로서, 데이터흐름 그래프가 노드 ACEDB를 갖고, 동작 B가 동작 C와 D가 아닌 동작 E와 커뮤팅하는 경우, 데이터흐름 그래프는 "CDABE"로 변경될 수 있고 - B는 E와 커뮤팅되지만 C와 D가 A의 좌측으로 푸시된다.
또 다른 예로서, "A**→(…)→B"라는 표현은 노드 A, 노드 B, 및 노드 A가 커뮤팅하지 않는 노드 A와 노드 B 사이의 하나 이상의 노드(예를 들어, C 및 D)를 갖는 데이터흐름 그래프의 일부를 찾는 데 사용될 수 있다. 그 경우, 시스템은, 가능한 경우 노드 C와 D가 노드 B의 우측으로 푸시되는 "푸시" 커뮤팅을 수행하도록 시도할 수 있다. 구체적인 예로서, 데이터흐름 그래프가 노드 ACEDB를 갖고, 동작 A가 동작 C와 D가 아닌 동작 E와 커뮤팅하는 경우, 데이터흐름 그래프는 "EABCD"로 변경될 수 있고 - 노드 A는 E와 커뮤팅되지만, C와 D가 B의 우측으로 푸시된다.
상술된 서브그래프 매칭 언어 표현의 예가 예시적이라는 것이 이해되어야 한다. 일부 실시형태에서, 하나 이상의 다른 표현은 상술된 예에 추가하여 또는 대신에 서브그래프 매칭 언어의 일부일 수 있다.
일부 실시형태에서, 단계(207)에서 초기 데이터흐름 그래프로부터 업데이트된 데이터흐름 그래프를 생성할 때 임의의 하나 이상의 다양한 유형의 최적화 규칙이 적용될 수 있다. 예를 들어, 최적화 규칙을 초기 데이터흐름 그래프에 적용하는 것은 하나 이상의 중복 데이터 프로세싱 동작 제거, 하나 이상의 참조되지 않은 데이터 프로세싱 동작 제거, 하나 이상의 세기 감소 최적화 수행, 하나 이상의 결합 동작 최적화 수행, 하나 이상의 폭 감소 최적화 수행, 및/또는 하나 이상의 중복 제거 최적화 수행을 수반할 수 있다.
일부 실시형태에서, 최적화 규칙은, 실행될 때, 해당 최적화가 데이터흐름 그래프에서 수행되도록 하는 프로그램 코드로 구현될 수 있다. 예를 들어, 중복을 제거하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용된 데이터흐름 그래프로부터) 중복으로 결정된 데이터 프로세싱 동작을 나타내는 적어도 하나의 노드의 제거를 유발하는 프로그램 코드로 구현될 수 있다. 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 데이터흐름 그래프에 최적화 규칙을 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 3a 내지 도 3c에 예시된다.
다른 예로서, 세기 감소 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용된 데이터흐름 그래프에서) 제1 데이터 프로세싱 동작을 나타내는 제1 노드(예를 들어, 정렬 데이터 프로세싱 동작을 나타내는 노드)의 제1 데이터 프로세싱 동작보다 약한 유형의 제2 데이터 프로세싱 동작을 나타내는 제2 노드(예를 들어, 그룹 내 정렬 데이터 프로세싱 동작을 나타내는 노드)로의 대체를 유발하는 프로그램 코드로 구현될 수 있다. 세기 감소 최적화를 수행하기 위해 데이터흐름 그래프에 최적화 규칙을 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 4a 및 도 4b에 예시된다.
다른 예로서, 결합 동작 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용된 데이터흐름 그래프에서) 다중 동작을 나타내는 다중 노드의 이들 다중 동작의 결합을 나타내는 단일 노드로의 대체를 유발하는 프로그램 코드로 구현될 수 있다. 결합 동작 최적화를 수행하기 위해 데이터흐름 그래프에 최적화 규칙을 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 5a 내지 도 5d에 예시된다.
또 다른 예로서, 하나 이상의 참조되지 않은 데이터 프로세싱 동작을 제거하기 위한 최적화 규칙은, 실행될 때, (규칙이 적용되는 데이터흐름 그래프로부터) 참조되지 않고/않거나 사용되지 않는 결과를 갖는 데이터 프로세싱 동작(예컨대, 정렬로부터 발생하는 순서가 후속 프로세싱에 필요하거나 의존되지 않기 때문에 참조되지 않는 정렬 데이터 프로세싱 동작)을 나타내는 적어도 하나의 노드의 제거를 유발하는 프로그램 코드로 구현될 수 있다. 이러한 최적화 규칙을 데이터흐름 그래프에 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 6에 예시된다.
다른 예로서, 폭-감소 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, 데이터(즉, 삭제된 데이터)가 후속 동작에 사용되지 않고 프로세싱의 일부로서 전파될 필요가 없기 때문에 후속 동작의 수행 전에 그래프의 소정 부분에서 일부 데이터(예를 들어, 하나 이상의 데이터 열, 데이터 행 등)가 삭제되도록 하는 프로그램 코드로 구현될 수 있다. 데이터흐름 그래프에 이러한 최적화 규칙을 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 7에 예시된다.
다른 예로서, 중복 제거 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, 규칙이 적용된 데이터흐름 그래프의 다른 분기가 병합되도록 하는 프로그램 코드로 구현될 수 있다. 데이터흐름 그래프에 이러한 최적화 규칙을 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 8a 및 도 8b에 예시된다.
다른 예로서, 직렬 대 병렬 최적화를 수행하기 위한 최적화 규칙은, 실행될 때, 직렬로 수행되는 프로세싱이 병렬로 수행되게 하는 프로그램 코드로 구현될 수 있다. 데이터흐름 그래프에 이러한 최적화 규칙을 적용하는 예가 아래에 더 상세히 설명된 바와 같이, 도 9에 예시된다.
상기 설명된 최적화 규칙 및 최적화가 예시적인 비-제한적 예라는 것이 이해되어야 한다. 프로세스(200)의 일부로서, 하나 이상의 다른 최적화 규칙 및/또는 최적화가 상술된 최적화 규칙 및/또는 최적화 대신에 또는 이에 추가하여 초기 데이터흐름 그래프에 적용될 수 있다.
다음으로, 프로세스(200)는 단계(216)로 진행하고, 여기서 업데이트된 데이터흐름 그래프가 출력된다. 일부 실시형태에서, 단계(216)에서, 업데이트된 데이터흐름 그래프는 후속 사용을 위해 (예를 들어, 비-휘발성 메모리에) 저장될 수 있다.
저장되는 것에 추가로 또는 대신에, 업데이트된 데이터흐름 그래프가 실행될 수 있다. 업데이트된 데이터흐름 그래프가 실행되는 일부 실시형태에서, 프로세싱 레이아웃은 프로세스(200)의 단계(218)에서 업데이트된 데이터흐름 그래프의 하나 이상의 노드에 할당된다. 데이터 프로세싱 동작을 나타내는 노드에 대한 프로세싱 레이아웃은 얼마나 많은 컴퓨팅 디바이스가 데이터 프로세싱 동작을 수행하기 위해 사용될지를 특정할 수 있고 데이터 프로세싱 동작을 수행하기 위해 사용될 특정 컴퓨팅 디바이스를 식별할 수 있다. 이것은 2018년 3월 29일에 출원된 "Systems and Methods for Performing Data Processing Operations Using Variable Level Parallelism"라는 명칭의 미국 특허 출원 제15/939,829호에 설명된 레이아웃 할당 기법 중 임의의 기법을 사용함으로써 포함된 임의의 적절한 방식으로 수행될 수 있고, 이 출원은 그 전체가 본원에 인용에 의해 포함된다. 일부 실시형태에서, 노드가 단일 컴퓨팅 디바이스를 사용하여 프로세싱되는지 또는 다중 컴퓨팅 디바이스를 사용하여 프로세싱되는지(예를 들어, 병렬 프로세싱이 적용될지 및 어떤 레벨의 병렬성이 이용될지) 여부에 대한 결정은 더 일찍(예를 들어, 단계(207) 동안) 이루어질 수 있고, 계산을 위해 사용될 특정 컴퓨팅 디바이스는 단계(218)에서 할당된다.
단계(218)에서 프로세싱 레이아웃이 할당된 후, 업데이트된 데이터흐름 그래프가 실행될 수 있다. 예를 들어, 데이터 프로세싱 시스템에 의해 프로세스(200)가 수행될 때, 데이터 프로세싱 시스템(100)은 그래프 실행 엔진(115)을 사용하여 업데이트된 데이터흐름 그래프를 실행할 수 있다. 일부 실시형태에서, 단계(207)에서 생성된 업데이트된 데이터흐름 그래프는, 그것이 생성되자마자 그리고 임의의 사용자 입력 없이 실행될 수 있다. 다른 실시형태에서, 업데이트된 데이터흐름 그래프는 단계(207)에서 생성될 수 있지만, 그 실행은 그렇게 하기 위한 커맨드에 대한 응답으로만 시작될 수 있고, 커맨드는 인터페이스를 통해 또는 다른 컴퓨터 프로그램에 의해(예를 들어, API 호출을 통해) 사용자가 제공할 수 있다.
프로세스(200)가 예시적이고 변형이 있다는 것이 이해되어야 한다. 예를 들어, 일부 실시형태에서, 선택적 단계(218 및 220)는 생략될 수 있고 프로세스(200)는, 업데이트된 데이터흐름 그래프가 생성되고 저장된 후에 완료될 수 있다. 다른 예로서, 프로세스(200)는 예시된 실시형태의 경우와 같이 입력 SQL 질의로부터 생성된 데이터흐름 그래프가 아닌 다른 소스(예를 들어, 다른 데이터 프로세싱 시스템)로부터 제공되는 데이터흐름 그래프를 최적화하는 데 사용될 수 있다. 이러한 실시형태에서, 단계(202 내지 204)는 생략될 수 있고 초기 데이터흐름 그래프는 단계(206)에서 다른 소스로부터 제공된 데이터흐름 그래프로부터 생성될 수 있다. 이러한 생성은 수신된 데이터흐름 그래프를, 프로세스(200)를 실행하는 데이터 프로세싱 시스템과 함께 사용하도록 구성된 것으로 변환하는 것을 수반할 수 있다.
데이터흐름 그래프에 최적화 규칙을 적용하는 예시적인 예는 도 3a 내지 도 9를 참조하여 아래에 제공된다. 이들 도면에 도시된 데이터흐름 그래프 각각은 (예를 들어, 프로세스(200)의 단계(207)의 일부로서) 최적화되는 더 큰 데이터흐름 그래프의 서브그래프일 수 있다. 예를 들어, 이들 도면에 도시된 하나 이상의 데이터흐름 그래프 각각은 프로세스(200)의 단계(206)에서 생성된 초기 데이터흐름 그래프의 서브그래프 및/또는 단계(207)의 일부로서 초기 데이터흐름 그래프를 변환하여 획득된 하나 이상의 데이터흐름 그래프의 서브그래프일 수 있다.
도 3a는 하나 이상의 중복 데이터 프로세싱 동작을 제거하기 위해 예시적인 데이터흐름 그래프(300)에 최적화 규칙을 적용하는 것을 예시한다. 도 3a에 도시된 바와 같이, 데이터흐름 그래프(300)는 재분할 데이터 프로세싱 동작(다른 컴퓨팅 디바이스에서 병렬 프로세싱을 위해 데이터를 분할)을 나타내는 노드(302), 이어서 직렬화 동작을 나타내는 노드(304)(단일 컴퓨팅 디바이스에 의한 직렬 프로세싱을 위해 모든 데이터를 결합하도록 동작함)를 포함한다. 재분할 효과가 후속 직렬화 커맨드에 의해 무효화될 것이기 때문에, 재분할 데이터 프로세싱 동작을 수행할 필요가 없다. 따라서, 데이터흐름 그래프 최적화기(예를 들어, 데이터 프로세싱 시스템(100)의 그래프 최적화기(110))는 재분할 동작을 나타내는 노드(302)를 제거할 수 있다. 결과적으로, 데이터흐름 그래프의 부분(300)은 부분(305)으로 변환된다.
도 3b는 본원에 설명된 기술의 일부 실시형태에 따른, 다른 예시적인 데이터흐름 그래프에 최적화 규칙의 적용을 용이하게 하기 위해 데이터 프로세싱 동작을 커뮤팅하는 순서를 변경하는 것을 예시한다. 도 3b에 도시된 바와 같이, 데이터흐름 그래프(310)는 정렬 데이터 프로세싱 동작(키 A에 대해 수행되는 정렬)을 나타내는 노드(311), 이어서 하나 이상의 노드(도시되지 않음), 이어서 다른 정렬 데이터 프로세싱 동작(키 B에 대해 수행되는 정렬)을 나타내는 노드(312)를 포함한다. 이 예에서, 노드(311)에 의해 표현된 정렬 동작이 노드(311 및 312) 사이의 노드에 의해 표현된 데이터 프로세싱 동작(들)과 커뮤팅하는지 여부를 결정하는 것은 데이터흐름 그래프(310)에 하나 이상의 최적화 규칙의 적용을 용이하게 할 수 있다. 예를 들어, 노드(311)에 의해 표현된 정렬 동작이 노드(311 및 312) 사이의 노드에 의해 표현된 데이터 프로세싱 동작(들)과 커뮤팅하는 경우, 노드의 순서를 변경하는 것은 데이터흐름 그래프(313)에 도시된 바와 같이 노드(311 및 312)를 서로 인접하게 배치하게 할 수 있다. 차례로, 이는, 하나 이상의 최적화 규칙이 결과 그래프(313)에 적용될 수 있는지 여부를 고려할 수 있게 한다(규칙은, 노드(311)에 의해 표현된 정렬 동작이 그래프에 나타나는 순서를 변경하기 전에 데이터흐름 그래프(310)에 적용가능하지 않았을 수 있음). 예를 들어, 이 경우, 키 A에 대한 정렬의 효과(노드 311)는 키 B에 대한 후속 재정렬(노드 312)에 의해 무효화된다. 따라서, 노드(311)에 의해 표현된 정렬 동작은 불필요하고 도 3c에 도시된 바와 같이 노드가 제거되어, 데이터흐름 그래프(314)를 생성할 수 있다.
도 3d는 중복 데이터 프로세싱 동작을 제거하기 위해 다른 예시적인 데이터흐름 그래프(320)에 최적화 규칙을 적용하는 것을 예시한다. 도 3d에 도시된 바와 같이, 데이터흐름 그래프(320)는 키 A에 대한 정렬 동작을 나타내는 노드(322)를 포함한다. 그러나, 데이터가 상기 동일한 키에 대해 이미 정렬되었을 때, 데이터흐름 그래프 최적화기는 키 A에 대한 정렬 동작을 나타내는 노드(322)를 제거하여, 데이터흐름 그래프(323)를 생성할 수 있다. 도 3a 내지 도 3d에 도시된 모든 예에서, 중복 노드의 제거는 데이터흐름 그래프를 생성하고, 데이터흐름 그래프의 실행은, 이러한 노드가 제거되지 않은 경우보다 더 적은 컴퓨팅 리소스를 소비한다.
도 4a는 세기 감소 최적화를 수행하고 데이터흐름 그래프(402)를 획득하기 위해 예시적인 데이터흐름 그래프(400)에 최적화 규칙을 적용하는 것을 예시한다. 도 4a에 도시된 바와 같이, 데이터흐름 그래프(400)는 메이저 키 A(예를 들어, 성에 의해 정렬) 및 이어서 마이너 키 B(예를 들어, 동일한 성을 가진 사람들을 이름으로 정렬)에 대해 인입 데이터를 정렬하기 위한 정렬 동작을 나타내는 노드(401)를 포함한다. 그러나, 노드(401)로 들어오는 데이터가 이미 키 A에 대해 정렬된 것(예를 들어, 이미 성으로 정렬됨)을 그래프 최적화기가 검출할 때, 그래프 최적화기는 정렬 동작을 그룹 내 정렬 동작(그래프(402)에서 노드(403)에 의해 표현됨)으로 대체하여 세기 감소 최적화를 수행할 수 있고, 이에 의해 정렬 동작의 세기를 감소시키지만, 동일한 결과를 획득하고 불필요한 계산 수행을 방지할 수 있다.
도 4b는 다른 세기 감소 최적화를 수행하고 데이터흐름 그래프(412)를 획득하기 위해 예시적인 데이터흐름 그래프(410)에 최적화 규칙을 적용하는 것을 예시한다. 도 4b에 도시된 바와 같이, 데이터흐름 그래프(410)는 메이저 키 A 및 마이너 키 B에서 수행될 롤업 동작을 나타내는 노드(411)를 포함한다. 그러나, 노드(411)로 들어오는 데이터가 이미 키 A에 대해 정렬된 것을 그래프 최적화기가 검출할 때, 최적화기는 롤업 동작을 그룹화된 롤업 동작(그래프(412)에서 노드(413)에 의해 표현됨)으로 대체하여 세기 감소 최적화를 수행할 수 있고, 이에 의해 롤업 동작의 세기를 감소시키지만, 동일한 결과를 획득하고 불필요한 계산 수행을 방지할 수 있다.
도 5a는 결합 동작 최적화를 수행하기 위해 예시적인 데이터흐름 그래프(500)에 최적화 규칙을 적용하는 것을 예시한다. 도 5a에 도시된 바와 같이, 데이터흐름 그래프(500)는 각각의 계산을 각각 나타내는 노드(502, 504, 및 506)의 시퀀스를 포함한다. 일부 실시형태에서, 데이터흐름 그래프의 실행 동안, 개별 노드에 의해 표현된 데이터 프로세싱 동작은 하나 또는 다중 컴퓨팅 디바이스에서 실행되는 상이한 프로세스에 의해 실행될 수 있다. 그래프 최적화기는, 모든 동작이 단일 컴퓨팅 디바이스에서 실행되는 단일 프로세스에 의해 수행되도록 3개의 노드의 시퀀스를 단일 노드(예를 들어, 데이터흐름 그래프(505)의 노드(508))로 대체하여 결합 동작 최적화를 수행하고, 이는 프로세스 간(및 잠재적으로 디바이스 간) 통신의 오버 헤드를 감소시킬 수 있다.
도 5b는 결합 동작 최적화를 수행하기 위해 다른 예시적인 데이터흐름 그래프(510)에 최적화 규칙을 적용하는 것을 예시한다. 도 5b에 도시된 바와 같이, 데이터흐름 그래프(510)는 키 A1 및 B1을 사용하여 데이터세트 A 및 B에 대한 조인 동작을 나타내는 노드(512), 이어서 키 A1 및 C1을 사용하여 노드(512) 및 데이터세트 C에 의해 표현된 조인 동작의 출력에 대한 조인 동작을 나타내는 노드(514)를 포함한다. 이 예에서, 그래프 최적화기는 데이터흐름 그래프(515)의 노드(516)로 도시된 바와 같이, 키 A1, B1, 및 C1을 사용하여 데이터세트 A, B, 및 C에 대한 조인 동작을 나타내는 단일 노드에 의해, 각각의 조인 동작을 나타내는 2개의 별개의 노드를 대체함으로써 결합 동작 최적화를 수행할 수 있다. 이러한 방식으로, 조인 프로세싱은 단일 컴퓨팅 디바이스에서 실행되는 단일 프로세스에 의해 수행되고, 이는 프로세스 간(및 잠재적으로 디바이스 간) 통신의 오버 헤드를 감소시킨다.
도 5c는 결합 동작 최적화를 수행하기 위해 다른 예시적인 데이터흐름 그래프(520)에 최적화 규칙을 적용하는 것을 예시한다. 도 5c에 도시된 바와 같이, 데이터흐름 그래프(520)는 키 A에서 필터링 동작을 나타내는 노드(522), 이어서 키 B에서 다른 필터링 동작을 나타내는 노드(524)를 포함한다. 이 예에서, 그래프 최적화기는 데이터흐름 그래프(525)의 노드(526)로 도시된 바와 같이, 양쪽 키 A 및 B에서 필터링하는 필터 동작을 나타내는 단일 노드에 의해, 각각의 필터 동작을 나타내는 2개의 별개의 노드(522 및 524)를 대체함으로써 결합 동작 최적화를 수행할 수 있다. 이러한 방식으로, 필터링은 단일 컴퓨팅 디바이스에서 실행되는 단일 프로세스에 의해 수행되고, 이는 프로세스 간(및 잠재적으로 디바이스 간) 통신의 오버 헤드를 감소시킨다.
도 5d는 결합 동작 최적화를 수행하기 위해 다른 예시적인 데이터흐름 그래프(530)에 최적화 규칙을 적용하는 것을 예시한다. 도 5d에 도시된 바와 같이, 데이터흐름 그래프(530)는 키 A에서 필터링 동작을 나타내는 노드(532), 이어서 롤업 동작을 나타내는 노드(534)를 포함한다. 이 예에서, 그래프 최적화기는 데이터흐름 그래프(535)의 노드(536)로 도시된 바와 같이, 키 A에서 선택된 입력을 프로세싱하는 롤업 동작을 나타내는 단일 노드에 의해, 2개의 별개의 노드(522 및 524)를 대체함으로써 결합 동작 최적화를 수행할 수 있다. 이러한 방식으로, 단일 디바이스에서 실행되는 단일 프로세스는 롤업 및 필터링 동작과 동일한 동작을 수행할 수 있고, 이는 프로세스 간(및 잠재적으로 디바이스 간) 통신의 오버 헤드를 감소시킬 수 있다.
도 6은 불필요한 데이터 프로세싱 동작을 제거하기 위해 예시적인 데이터흐름 그래프(600)에 최적화 규칙을 적용하는 것을 예시한다. 도 6에 도시된 바와 같이, 데이터흐름 그래프(600)는 키 A에 관하여 정렬 동작을 나타내는 노드(602), 이어서 재포맷 커맨드를 나타내는 노드(604), 이어서 순서화되지 않은 기록 커맨드를 나타내는 노드(606)를 포함한다. 기록 커맨드가 순서화되지 않고, 따라서 노드(602)에 의해 표현된 정렬 동작에 의해 데이터에 부과된 순서가 기록 동작을 통해 보존되지 않는 경우, 그래프 최적화기는 정렬 동작을 나타내는 노드를 제거할 수 있고, 이는 결과적으로 데이터흐름 그래프(605)를 생성한다.
도 7은 본원에 설명된 기술의 일부 실시형태에 따른, 폭 감소 최적화를 수행하기 위해 예시적인 데이터흐름 그래프(700)에 최적화 규칙을 적용하는 것을 예시한다. 도 7에 도시된 바와 같이, 데이터흐름 그래프(700)는 데이터 열 A의 값을 열 B 및 C에 저장된 데이터의 논리적 "또는"으로 설정하는 노드(702), 이어서 노드(702)에 의해 제공된 데이터 열 A에서 필터링 동작을 나타내는 노드(704), 및 키 D를 사용한 정렬 동작을 나타내는 노드(706)를 포함한다. 필터링 동작 후, 데이터 열 A는 다운스트림 계산에 사용되지 않을 수 있다. 따라서, 일부 실시형태에서, 그래프 최적화기는 추가로 전파되지 않도록, (예를 들어, 데이터흐름 그래프(705)의 노드(708)로 도시된 바와 같이 노드 사이의 링크를 따라 이동하는 데이터로부터 이들 데이터를 삭제하기 위한 노드의 도입에 의해) 데이터 열 A의 데이터를 제거함으로써 폭 감소 최적화를 수행할 수 있다. 이것은 데이터흐름 그래프(705)의 노드(704)의 다운스트림에서 (예를 들어, 활용되는 네트워크, 메모리 및 프로세싱 리소스를 감소시킴으로써) 후속 계산을 통해 데이터를 전달하는 데 필요한 계산 리소스의 양을 감소시킨다.
도 8a는 중복 제거 최적화를 수행하기 위해 예시적인 데이터흐름 그래프(800)에 최적화 규칙을 적용하는 것을 예시한다. 도 8a에 도시된 바와 같이, 데이터흐름 그래프(800)는 노드(802 및 804)를 포함하고, 이 둘 모두는 동일한 기본 파일(A.dat)로부터의 판독 동작을 나타낸다. 그래프 최적화기는, 데이터가 한 번만 판독되도록 (예를 들어, 데이터흐름 그래프(805)의 노드(806)에 의해 도시된 바와 같이) 이러한 둘 모두의 노드를 단일 노드로 대체함으로써 중복 제거 최적화를 수행할 수 있다. 데이터가 후속적으로 데이터흐름 그래프(805)의 상이한 부분에 의해 사용되더라도, 동일한 데이터를 2번 판독하지 않음으로써 데이터에 액세스하는 데 사용되는 컴퓨팅 리소스의 양을 감소시킨다.
도 8b는 지퍼링으로 중복 제거 최적화를 수행하기 위해 예시적인 데이터흐름 그래프(811)에 최적화 규칙을 적용하는 것을 예시한다. 도 8b에 도시된 바와 같이, 데이터흐름 그래프(811)는 "A.dat"라는 파일로부터 데이터를 판독하는 데이터 프로세싱 동작을 나타내는 노드(810)를 포함한다. 이어서, 데이터는 2개의 상이한 분기에서 프로세싱된다. 제1 분기는 노드(812)(데이터 "A.f"의 열을 꺼내 해당 열의 데이터에 "1"을 더함) 및 814(열 "A.k"의 데이터를 정렬)를 포함한다. 제2 분기는 노드(816)(데이터 "A.g"의 열을 꺼내 해당 열의 데이터에 3을 곱함) 및 818(열 "A.k"의 데이터를 정렬)을 포함한다. 도 8a의 예에서, 중복 제거는 동일한 프로세싱(동일한 파일로부터 동일한 데이터를 판독)을 수행한 노드를 제거하는 것을 수반하였다. 그러나, 도 8b의 예에서, 그래프(811)의 상이한 분기에 의해 수행되는 프로세싱은 동일하지 않다. 그러나, 상이한 분기에서 수행된 프로세싱은 단일 경로로 함께 접힐 수 있을 만큼 충분히 유사하다. 접기는 좌측에서 우측으로 경로를 결합하여 수행될 수 있다(지퍼가 2개의 측면을 연결하는 방식과 유사함).
이 예에서, 그래프 최적화기는, 노드(812 및 816)에 의해 표현된 계산이 (병렬이 아니라) 직렬로 수행되도록 그래프(811)를 변경할 수 있다. 결과는 데이터흐름 그래프(821)에 도시된다. 다음으로, 그래프 최적화기는 그래프(821)를 변경하여 각각의 정렬 동작을 나타내는 노드(826 및 828)가 단일 노드(836)로 결합될 수 있다. 결과는 데이터흐름 그래프(831)에 도시된다. 알 수 있는 바와 같이, 그래프(831)의 노드 수는 그래프(811)에 비해 감소되고, 동일한 데이터의 프로세싱은 동일한 위치에서 수행되고, 이에 의해 요구된 계산 리소스를 감소시킬 수 있다. 또한, 추가 최적화는 예를 들어, 노드(832 및 834)에 의해 표현된 동작을 단일 노드로 결합함으로써 결과 그래프(831)에 적용될 수 있다.
도 9는 직렬 대 병렬 최적화를 수행하기 위해 예시적인 데이터흐름 그래프(900)에 최적화 규칙을 적용하는 것을 예시한다. 도 9에 도시된 바와 같이, 데이터흐름 그래프(900)는 k개의 다중 컴퓨팅 디바이스에 걸쳐 이전에 프로세싱된 데이터에 적용되는 직렬화 동작을 나타내는 노드(902), 및 (키 A에서) 정렬 동작을 나타내는 노드(904)를 포함한다. 일부 실시형태에서, 데이터흐름 그래프 최적화기는, 직렬화된 데이터에 적용되는 하나 이상의 동작이 대신 병렬화된 방식으로 적용되도록 데이터흐름 그래프를 변경할 수 있다. 이 예에서, 데이터흐름 그래프 최적화기는 데이터흐름 그래프(905)의 노드(906)를 사용하여 도시된 바와 같이, 직렬화 동작을 제거하고 정렬이 k-방식의 병렬 방식으로 적용될 수 있도록 그래프(900)를 변경할 수 있다. 이어서, k 병렬 정렬의 결과는 데이터흐름 그래프(905)의 노드(908)를 사용하여 도시된 바와 같이, 병합 동작을 사용하여 결합될 수 있다.
도 10aa 및 도 10ab는 본원에 설명된 기술의 일부 실시형태에 따른, 초기 데이터흐름 그래프(1000)를 예시한다. 도 10b는 본원에 설명된 기술의 일부 실시형태에 따른, 도 10aa 및 도 10ab에 도시된 초기 데이터흐름 그래프에 최적화 규칙을 반복적으로 적용하여 획득된 업데이트된 데이터흐름 그래프(1050)를 예시한다. 도 10aa 및 도 10ab의 초기 데이터흐름 그래프(1000)와 도 10b의 업데이트된 데이터흐름 그래프(1050)를 비교하여 알 수 있는 바와 같이, 업데이트된 데이터흐름 그래프는 초기 데이터흐름 그래프보다 더 적은 노드 및 링크를 가지며 초기 데이터흐름 그래프보다 더 효율적으로 실행될 수 있다. 본원에 설명된 기술의 일부 실시형태에 따라 초기 데이터흐름 그래프(1000)에 적용된 다수의 최적화기가 아래에 상세히 설명된다.
도 10aa, 도 10ab, 및 도 10b의 예시적인 예에서, 다중 결합 동작 최적화는 도 10b의 업데이트된 데이터흐름 그래프(1050)를 생성하기 위해 도 10aa 및 도 10ab의 초기 데이터흐름 그래프(1000)에 적용된다. 예를 들어, 노드(1002)에 의해 표현된 데이터 프로세싱 동작(노드(1002)를 통한 데이터 흐름에서 임의의 적절한 계산을 수행하기 위한 표현일 수 있고, 이 경우 출력을 위해 데이터를 포맷하는 것인 "expr") 및 노드(1004)에 의해 표현된 기록 데이터 프로세싱 동작("파일 기록(write_file)")은 이들 데이터 프로세싱 동작 둘 모두를 수행하도록 구성된 노드(1054)를 포함하는 업데이트된 데이터흐름 그래프(1050)의 생성 동안 결합 동작 최적화를 사용하여 결합된다. 다른 예로서, 노드(1006)에 의해 표현된 데이터 프로세싱 동작("expr") 및 노드(1008)에 의해 표현된 필터 데이터 프로세싱 동작("필터(filter)")은 이들 데이터 프로세싱 동작 둘 모두를 수행하도록 구성된 노드(1056)를 포함하는 업데이트된 데이터흐름 그래프(1050)의 생성 동안 결합 동작 최적화를 사용하여 결합된다. 또 다른 예로서, 노드(1010)에 의해 표현된 데이터 프로세싱 동작("expr") 및 노드(1012)에 의해 표현된 기록 데이터 프로세싱 동작("파일 기록(write_file)")은 이들 데이터 프로세싱 동작 둘 모두를 수행하도록 구성된 노드(1058)를 포함하는 업데이트된 데이터흐름 그래프(1050)의 생성 동안 결합 동작 최적화를 사용하여 결합된다. 본원에서 논의된 바와 같이, 일부 실시형태에서, 단일 데이터흐름 그래프 노드와 연관된 데이터 프로세싱 동작이 단일 컴퓨팅 디바이스에서 실행되는 단일 프로세스에 의해 수행되기 때문에, 노드를 결합하는 것은 프로세스 간(및 잠재적으로 디바이스 간) 통신의 오버 헤드를 감소시키고, 이는 데이터 프로세싱 시스템의 성능을 개선시킨다.
도 10aa, 도 10ab 및 도 10b의 예시적인 예에서, 중복을 감소시키기 위한 다중 최적화는 도 10b의 업데이트된 데이터흐름 그래프(1050)를 생성하기 위해 도 10aa 및 도 10ab의 초기 데이터흐름 그래프(1000)에 적용된다. 예를 들어, 초기 데이터흐름 그래프(1000)의 노드(1030, 1032 및 1034)에 의해 표현된 정렬 동작은 제거되고 업데이트된 데이터흐름 그래프(1050)에 대응 상대가 없다. 이들 정렬 동작은, 이들 노드로 들어오는 데이터가 각각 노드(1022, 1026 및 1028)를 통해 적용된 정렬 동작에 의해 이미 정렬되었기 때문에 제거된다. 노드(1022, 1026 및 1028)에서 프로세싱을 통해 적용된 정렬 순서는 후속 데이터 프로세싱 동작(예를 들어, 정렬된 롤업 동작)에 의해 보존되고 데이터의 정렬 순서는, 노드(1030, 1032 및 1034)에서 추가 정렬이 필요하지 않도록 유지된다. 따라서, 노드(1030, 1032 및 1034)는 업데이트된 데이터흐름 그래프(1050)의 생성 동안 제거된다. 반면, 노드(1022, 1026 및 1028)에 의해 표현된 정렬 동작은 보존된다. 예를 들어, 초기 데이터흐름 그래프(1000)의 노드(1022 및 1026)는 업데이트된 데이터흐름 그래프(1050)의 노드(1070 및 1072)에 대응한다. 대조적으로, 노드(1036)에 의해 표현된 정렬 동작은, 이전의 완전 외부 병합 조인 동작이 정렬성을 보존하지 않아 중복되지 않기 때문에 보존된다(노드(1074)는 업데이트된 데이터흐름 그래프(1050)에서 대응하는 노드임).
도 10aa, 도 10ab 및 도 10b는 또한 불필요한 데이터 프로세싱 동작을 제거하는 다른 예를 예시한다. 도 10aa 및 도 10ab에 도시된 바와 같이, 초기 데이터흐름 그래프(1000)는 정렬 동작을 나타내는 노드(1024), 이어서 결국 순서화되지 않은 기록 커맨드를 나타내는 노드(1004)를 포함한다. 기록 커맨드가 순서가 없고, 그러므로 노드(1024)에 의해 표현된 정렬 동작에 의해 데이터에 부과된 순서가 기록 동작을 통해 보존되지 않는 경우, 정렬 동작을 나타내는 노드(1024)는 제거될 수 있다. 도 10b에서 알 수 있는 바와 같이, 노드(1024)에 대응하는 정렬 동작이 없다 - 상기 동작은 제거되었다.
불필요한 데이터 프로세싱 동작을 제거하는 또 다른 예로서, 초기 데이터흐름 그래프(1000)는 노드(1040, 1045, 1046 및 1047)에 의해 표현된 레이아웃 및 분할 동작을 포함하고, 이는, 이들 각각이 개별 레이아웃 및 분할 노드를 뒤따르고 그렇지 않으면 레이아웃이 변경되지 않기 때문에 중복이다. 따라서, 이들 노드는 초기 데이터흐름 그래프(1000)로부터 제거된다 - 대응하는 노드는 데이터흐름 그래프(1050)에 존재하지 않는다. 초기 데이터흐름 그래프(1000)에 적용된 관련 최적화에서, 노드(1048)에 의해 표현된 레이아웃 및 분할 동작은 노드(1088)에 의해 표현된 수집 동작으로 대체된다. 대조적으로, 노드(1044)에 의해 표현된 레이아웃 및 분할 데이터 프로세싱 동작은 중복되지 않기 때문에 유지된다; 이는 최종 분할 및 레이아웃을 담당하고, 최종 그래프(1050)에서 노드(1080)(키에 의한 분할(partition_by_key))를 생성한다.
도 10aa, 도 10ab, 및 도 10b는 또한 폭 감소 최적화의 예를 예시한다. 노드(1014)에 의해 표현된 판독 데이터 프로세싱 동작을 사용하여 프로세싱되는 데이터의 열의 수는 도 10b의 업데이트된 데이터흐름 그래프(1050)에 도시된 "임플리시트의 리포맷(reformat_implicit)" 노드(1064)의 도입에 의해 알 수 있는 바와 같이, 감소된다. 이 예에서, 그래프 최적화기는, 데이터의 판독 열의 수가, 열이 노드(1012)에 의해 표현된 기록 동작에 의해 기록된 것을 결정함으로써 후속하여 사용되지 않는 것을 검출한다.
도 10c는 본원에 설명된 기술의 일부 실시형태에 따른 도 10aa 및 도 10ab의 초기 데이터흐름 그래프(1000)의 다른 도면을 예시한다. 이 도면에서, 데이터흐름 그래프 노드의 라벨은 이들의 두문자어로 대체되었다. 유사하게, 도 10d는 도 10b의 업데이트된 데이터흐름 그래프의 다른 도면을 예시하고, 이 도면에서, 데이터흐름 그래프 노드의 라벨은 이들의 두문자어로 대체되었다.
도 11은, 본원에 설명된 기술이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(1100)의 예를 예시한다. 컴퓨팅 시스템 환경(1100)은 적절한 컴퓨팅 환경의 일 예일 뿐이며 본원에 설명된 기술의 사용 또는 기능성의 범위에 대한 어떤 제한을 제안하도록 의도되지 않는다. 컴퓨팅 환경(1100)은 예시적인 동작 환경(1100)에 예시된 컴포넌트 중 임의의 하나 또는 조합과 관련된 임의의 의존관계 또는 요건을 갖는 것으로 해석되어서는 안된다.
본원에 설명된 기술은 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성으로 동작한다. 본원에 설명된 기술과 함께 사용하기에 적절할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드 헬드 또는 랩톱 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램 가능한 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 디바이스 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이에 제한되지 않는다.
컴퓨팅 환경은 프로그램 모듈과 같은 컴퓨터-실행 가능 명령을 실행할 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 실시하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본원에 설명된 기술은 또한 작업이 통신 네트워크를 통해 링크된 원격 프로세싱 디바이스에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 모두에 위치될 수 있다.
도 11을 참조하면, 본원에 설명된 기술을 구현하기 위한 예시적인 시스템은 컴퓨터(1110) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(1110)의 컴포넌트는 프로세싱 유닛(1120), 시스템 메모리(1130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(1120)에 결합시키는 시스템 버스(1121)를 포함할 수 있지만 이에 제한되지 않는다. 시스템 버스(1121)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 하나를 사용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 임의의 것일 수 있다. 제한이 아닌 예로서, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스(메자닌(Mezzanine) 버스라고도 알려짐)를 포함한다.
컴퓨터(1110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(1110)에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있고, 휘발성 및 비-휘발성 매체, 분리형 및 비-분리형 매체 둘 모두를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있으며, 이에 제한되지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비-휘발성, 분리형 및 비-분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(1010)에 의해 액세스될 수 있는 임의의 다른 매체일 수 있지만, 이에 제한되지 않는다. 통신 매체는 통상적으로 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 신호의 정보를 인코딩하는 방식으로 하나 이상의 그 특성이 설정되거나 변경된 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만, 이에 제한되지 않는다. 상기 중 임의의 것의 조합은 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(1130)는 판독 전용 메모리(ROM)(1131) 및 랜덤 액세스 메모리(RAM)(1132)와 같은 휘발성 및/또는 비-휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 스타트 업(start-up) 동안과 같이, 컴퓨터(1110) 내의 엘리먼트 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는, 기본 입출력 체계(BIOS; basic input/output system)(1133)는 통상적으로 ROM(1131)에 저장된다. RAM(1132)은 통상적으로 프로세싱 유닛(1120)에 즉시 액세스 가능하고/하거나 현재 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 11은 운영 체제(1134), 애플리케이션 프로그램(1135), 다른 프로그램 모듈(1036), 및 프로그램 데이터(1137)를 도시하며, 이에 제한되지 않는다.
컴퓨터(1110)는 또한 다른 분리형/비-분리형, 휘발성/비-휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 11은 비-분리형, 비-휘발성 자기 매체로부터 판독하거나 그에 기록하는 하드 디스크 드라이브(1141), 플래시 메모리와 같은 분리형, 비-휘발성 메모리(1152)로부터 판독하거나 그에 기록하는 플래시 드라이브(1151), 및 CD ROM 또는 다른 광학 매체와 같은 분리형, 비-휘발성 광학 디스크(1156)로부터 판독하거나 그에 기록하는 광 디스크 드라이브(1155)를 도시한다. 예시적인 동작 환경에서 사용될 수 있는 다른 분리형/비-분리형, 휘발성/비-휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다용도 디스크, 디지털 비디오 테이프, 솔리드 스테이트 RAM, 솔리드 스테이트 ROM 등을 포함하지만, 이에 제한되지 않는다. 하드 디스크 드라이브(1141)는 통상적으로 인터페이스(1140)와 같은 비-분리형 메모리 인터페이스를 통해 시스템 버스(1121)에 접속되고, 자기 디스크 드라이브(1151) 및 광 디스크 드라이브(1155)는 통상적으로 인터페이스(1150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(1121)에 접속된다.
위에서 논의되고 도 11에 도시된 드라이브 및 이들과 연관된 컴퓨터 저장 매체는, 컴퓨터(1110)에 대해 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 11에서, 예를 들어 하드 디스크 드라이브(1141)는 운영 체제(1144), 애플리케이션 프로그램(1145), 다른 프로그램 모듈(1146), 및 프로그램 데이터(1147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트는 운영 체제(1134), 애플리케이션 프로그램(1135), 다른 프로그램 모듈(1136), 및 프로그램 데이터(1137)와 동일하거나 상이할 수 있음에 유의한다. 운영 체제(1144), 애플리케이션 프로그램(1145), 다른 프로그램 모듈(1146), 및 프로그램 데이터(1147)는 최소한 이들이 상이한 복사본인 것을 나타내기 위해 여기에 상이한 번호가 부여된다. 사용자는 키보드(1162) 및 일반적으로 마우스, 트랙볼 또는 터치 패드로 지칭되는 포인팅 디바이스(1161)와 같은 입력 디바이스를 통해 컴퓨터(1110)에 명령 및 정보를 입력할 수 있다. 다른 입력 디바이스(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스는 종종 시스템 버스에 결합되는 사용자 입력 인터페이스(1160)를 통해 프로세싱 유닛(1120)에 접속되지만, 다른 인터페이스 및 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 버스 구조에 의해 접속될 수 있다. 모니터(1191) 또는 다른 유형의 디스플레이 디바이스는 또한 비디오 인터페이스(1190)와 같은 인터페이스를 통해 시스템 버스(1121)에 접속된다. 모니터 이외에도, 컴퓨터는 또한 스피커(1197) 및 프린터(1196)와 같은 다른 주변 출력 디바이스를 포함할 수 있고, 이는 출력 주변 인터페이스(1195)를 통해 접속될 수 있다.
컴퓨터(1110)는 원격 컴퓨터(1180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크 환경에서 작동할 수 있다. 원격 컴퓨터(1180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있고, 메모리 저장 디바이스(1181)만이 도 11에 도시되어 있지만, 통상적으로 컴퓨터(1110)에 대해 전술한 많은 또는 모든 엘리먼트를 포함한다. 도 11에 도시된 논리적 접속은 근거리 통신망(LAN; local area network)(1171) 및 광역 통신망(WAN; wide area network)(1173)을 포함하지만, 또한 다른 네트워크를 포함할 수 있다. 이와 같은 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(1110)는 네트워크 인터페이스 또는 어댑터(1170)를 통해 LAN(1171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(1110)는 통상적으로 인터넷과 같은 WAN(1173)을 통해 통신을 설정하기 위한 모뎀(1172) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(1172)은, 사용자 입력 인터페이스(1160), 또는 다른 적절한 메커니즘을 통해 시스템 버스(1121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(1110) 또는 그 부분에 대하여 도시된 프로그램 모듈은, 원격 메모리 저장 디바이스에 저장될 수 있다. 예로서, 한정되지 않고, 도 11은 메모리 디바이스(1181) 상에 상주하는 원격 애플리케이션 프로그램(1185)을 도시한다. 도시된 네트워크 접속은 예시적이며 컴퓨터 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있다고 이해될 것이다.
따라서 본 발명의 적어도 하나의 실시형태에 대한 몇몇 양태를 설명하였으므로, 다양한 변경, 수정, 및 개선이 통상의 기술자에게 용이하게 발생할 수 있음을 이해해야 한다.
이와 같은 변경, 수정, 및 개선은 본원의 일부로서 의도되며, 본 발명의 사상 및 범위 내에 있는 것으로 의도된다. 또한, 본 발명의 장점이 표시되었지만, 본원에 설명된 기술의 모든 실시형태가 설명된 모든 이점을 포함할 것이 아님을 이해해야 한다. 일부 실시형태는 본원에서 유리한 것으로 설명된 임의의 특징을 구현하지 않을 수 있고, 몇몇 경우에 설명된 특징 중 하나 이상이 구현되어 다른 실시형태를 달성할 수 있다. 따라서, 전술한 설명 및 도면은 단지 예시에 불과하다.
본원에 설명된 기술의 위에서-설명된 실시형태는 수많은 방식으로 구현될 수 있다. 예를 들어, 실시형태는 하드웨어, 소프트웨어 또는 이들의 조합을 사용하여 구현될 수 있다. 소프트웨어로 구현될 때, 소프트웨어 코드는 단일 컴퓨터에서 제공되거나 복수의 컴퓨터 간에 분산되든지 관계없이 임의의 적절한 프로세서 또는 프로세서 집합에서 실행될 수 있다. 이와 같은 프로세서는 CPU 칩, GPU 칩, 마이크로 프로세서, 마이크로 제어기, 또는 코-프로세서와 같은 이름으로 관련 기술분야에 알려진 상업적으로 이용 가능한 집적 회로 컴포넌트를 포함하는, 집적 회로 컴포넌트에 하나 이상의 프로세서를 갖는, 집적 회로로서 구현될 수 있다. 대안으로, 프로세서는 ASIC과 같은 주문형 회로, 또는 프로그램 가능한 논리 디바이스를 구성함으로써 얻어지는 반주문형(semicustom) 회로로 구현될 수 있다. 또 다른 대안으로서, 프로세서는 상업적으로 이용 가능한, 반주문형 또는 주문형의 대형 회로 또는 반도체 디바이스의 일부분일 수 있다. 특정 예로서, 상업적으로 이용 가능한 일부 마이크로 프로세서는 이들 코어의 하나 또는 서브세트가 프로세서를 구성할 수 있도록 다수의 코어를 갖는다. 그러나, 프로세서는 임의의 적절한 포맷의 회로를 사용하여 구현될 수 있다.
또한, 컴퓨터는 랙-장착 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 태블릿 컴퓨터와 같은 다수의 형태로 구현될 수 있음을 이해해야 한다. 또한, 컴퓨터는 일반적으로 컴퓨터로 간주되지 않지만 PDA(Personal Digital Assistant), 스마트 폰 또는 임의의 다른 적절한 휴대용 또는 고정식 전자 디바이스를 포함하는 적절한 프로세싱 능력을 갖는 디바이스에 내장될 수 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 디바이스를 가질 수 있다. 이들 디바이스는, 무엇보다도 사용자 인터페이스를 제공하는 데 사용될 수 있다. 사용자 인터페이스를 제공하는 데 사용될 수 있는 출력 디바이스의 예는 출력의 시각적 표현을 위한 프린터 또는 디스플레이 스크린 및 출력의 청각적 표현을 위한 스피커 또는 다른 소리 발생 디바이스를 포함한다. 사용자 인터페이스에 사용될 수 있는 입력 디바이스의 예는 키보드, 및 마우스, 터치 패드, 및 디지털화 태블릿과 같은 포인팅 디바이스를 포함한다. 다른 예로서, 컴퓨터는 음성 인식 또는 다른 청취 가능한 포맷을 통해 입력 정보를 수신할 수 있다.
이와 같은 컴퓨터는 로컬 영역 네트워크 또는 엔터프라이즈 네트워크 또는 인터넷과 같은 광역 네트워크를 포함하는, 임의의 적절한 형태의 하나 이상의 네트워크에 의해 상호 접속될 수 있다. 이와 같은 네트워크는 임의의 적절한 기술에 기초할 수 있고 임의의 적절한 프로토콜에 따라 작동할 수 있고 무선 네트워크, 유선 네트워크 또는 광섬유 네트워크를 포함할 수 있다.
또한, 본원에 설명된 다양한 방법 또는 프로세스는 다양한 운영 체제 또는 플랫폼 중 임의의 하나를 채용하는 하나 이상의 프로세서 상에서 실행 가능한 소프트웨어로서 코딩될 수 있다. 또한, 이와 같은 소프트웨어는 다수의 적절한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 툴 중 임의의 것을 사용하여 기록될 수 있으며, 또한 프레임워크 또는 가상 머신에서 실행되는 실행 가능 기계 언어 코드 또는 중간 코드로서 컴파일링될 수 있다.
이와 같은 관점에서, 본 발명은 하나 이상의 컴퓨터 또는 다른 프로세서에서 실행될 때 상기 논의된 발명의 다양한 실시형태를 구현하는 방법을 수행하는 하나 이상의 프로그램으로 인코딩된 컴퓨터 판독가능 저장 매체(또는 복수의 컴퓨터 판독가능 매체)(예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 콤팩트 디스크(CD), 광학 디스크, 디지털 비디오 디스크(DVD), 자기 테이프, 플래시 메모리, 필드 프로그래머블 게이트 어레이 또는 다른 반도체 디바이스의 회로 구성, 또는 다른 유형의(tangible) 컴퓨터 저장 매체)로서 구현될 수 있다. 전술한 예로부터 명백한 바와 같이, 컴퓨터 판독가능 저장 매체는 컴퓨터 실행 가능 명령을 비-일시적 형태로 제공하기에 충분한 시간 동안 정보를 보유할 수 있다. 이와 같은 컴퓨터 판독가능 저장 매체 또는 매체들은 그 위에 저장된 프로그램 또는 프로그램들이 상기 논의된 바와 같이 본 발명의 다양한 양태를 구현하기 위해 하나 이상의 상이한 컴퓨터 또는 다른 프로세서 상에 로딩될 수 있도록 이동 가능한 것일 수 있다. 본원에 사용된 바와 같이, 용어 "컴퓨터 판독가능 저장 매체"는 제조(즉, 제조 물품) 또는 기계로 간주될 수 있는 비-일시적 컴퓨터 판독가능 매체만을 포함한다. 대안으로 또는 부가적으로, 본 발명은 전파 신호와 같은, 컴퓨터 판독가능 저장 매체 이외의 컴퓨터 판독가능 매체로서 구현될 수 있다.
용어 "프로그램" 또는 "소프트웨어"는 상기 논의된 바와 같이 본 발명의 다양한 양태를 구현하기 위해 컴퓨터 또는 다른 프로세서를 프로그램하기 위해 이용될 수 있는 임의의 유형의 컴퓨터 코드 또는 컴퓨터 실행 가능 명령의 세트를 지칭하는 일반적인 의미로 본원에서 사용된다. 또한, 이와 같은 실시형태의 일 양태에 따르면, 실행될 때 본 발명의 방법을 수행하는 하나 이상의 컴퓨터 프로그램은 단일 컴퓨터 또는 프로세서 상에 상주할 필요는 없지만, 본 발명의 다양한 양태를 구현하기 위해 다수의 상이한 컴퓨터 또는 프로세서 사이에서 모듈 방식으로 분산될 수 있다는 것을 이해해야 한다.
컴퓨터 실행 가능 명령은 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행되는, 프로그램 모듈과 같은 다양한 형태일 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 실시하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시형태에서 요구되는 바와 같이 결합되거나 분산될 수 있다.
또한, 데이터 구조는 임의의 적절한 형태로 컴퓨터 판독가능 매체에 저장될 수 있다. 예시의 단순화를 위해, 데이터 구조는 데이터 구조 내의 위치를 통해 관련된 필드를 갖는 것으로 나타낼 수 있다. 이와 같은 관계는 필드 간의 관계를 전달하는 컴퓨터 판독가능 매체 내의 위치를 필드에 대한 저장장치에 할당함으로써 유사하게 달성될 수 있다. 그러나, 임의의 적절한 메커니즘이 데이터 엘리먼트 사이의 관계를 설정하는 포인터, 태그 또는 다른 메커니즘의 사용을 포함하여, 데이터 구조의 필드에서 정보 간의 관계를 설정하는 데 사용될 수 있다.
본 발명의 다양한 양태는 단독으로, 조합하여, 또는 전술한 실시형태에서 구체적으로 논의되지 않은 다양한 배열로 사용될 수 있으며, 따라서 상기 설명에서 설명되거나 도면에 도시된 컴포넌트의 세부사항 및 배열에 대한 그 적용예에 한정되지 않는다. 예를 들어, 일 실시형태에서 설명된 양태는 다른 실시형태에서 설명된 양태와 임의의 방식으로 조합될 수 있다.
또한, 본 발명은 그 예가 제공되는 방법으로서 구체화될 수 있다. 방법의 일부로서 수행된 동작은 임의의 적절한 방법으로 명령될 수 있다. 따라서, 예시적인 실시형태에서 순차적인 동작으로서 도시되었지만, 몇몇 동작을 동시에 수행하는 것을 포함할 수 있는, 도시된 것과 다른 순서로 동작이 수행되는 실시형태가 구성될 수 있다.
또한, 일부 동작은 "사용자"에 의해 취해지는 것으로 설명된다. "사용자"는 단일 개인일 필요가 없고, 일부 실시형태에서, "사용자"에 기인되는 동작은 컴퓨터 보조 도구 또는 다른 메커니즘과 결합하여 개인의 팀 및/또는 개인에 의해 수행될 수 있음을 이해해야 한다.
청구항 엘리먼트를 변경하기 위해 청구항에서 "제1", "제2", "제3" 등과 같은 서수 용어의 사용은 그 자체로는 다른 것 또는 방법의 동작이 수행되는 시간적 순서에 걸친 임의의 하나의 청구항 엘리먼트의 우선권, 우선순위, 또는 순서를 내포하지 않지만, 단지 청구항 엘리먼트를 구별하기 위해 특정 명칭을 갖는 하나의 청구항 엘리먼트를 동일한 명칭을 갖는(그러나 서수 용어의 사용을 위한) 다른 엘리먼트와 구별하기 위한 라벨로서 사용된다.
또한, 본원에서 사용된 어법 및 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안된다. 본원에서 "포함하는(including)", "포함하는(comprising)" 또는 "갖는(having)", "포함하는(containing)", "수반하는(involving)" 및 그의 변형의 사용은 이후에 나열된 항목 및 그의 등가물뿐만 아니라 추가적인 항목을 포괄하는 것을 의미한다.
Claims (38)
- 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체로서, 상기 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
자동으로 생성된 초기 데이터흐름(dataflow) 그래프를 획득하는 것 - 상기 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 상기 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -;
상기 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 상기 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 상기 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 상기 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및
제1 컴퓨터 시스템 프로세스를 사용하여 상기 제1 데이터 프로세싱 동작을 실행하고 상기 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 상기 제2 데이터 프로세싱 동작을 실행함으로써 상기 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하는 것을 수행하게 하는 프로세서-실행가능 명령을 저장하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제1항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
상기 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 프로세싱 레이아웃을 할당하는 것을 수행하게 하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제2항에 있어서, 상기 업데이트된 데이터흐름 그래프를 실행하는 것은 할당된 하나 이상의 프로세싱 레이아웃에 따라 수행되는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 제2 복수의 노드는 상기 제1 복수의 노드보다 더 적은 노드를 갖는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제4항에 있어서, 상기 제2 복수의 링크는 상기 제1 복수의 링크보다 더 적은 링크를 갖는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은:
제1 최적화 규칙을 선택하는 것;
상기 제1 최적화 규칙을 적용할 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 것; 및
상기 초기 데이터흐름 그래프의 제1 부분에 상기 제1 최적화 규칙을 적용하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제5항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은 추가로:
상기 제1 최적화 규칙과 상이한 제2 최적화 규칙을 선택하는 것;
상기 제2 최적화 규칙을 적용할 상기 초기 데이터흐름 그래프의 제2 부분을 식별하는 것; 및
상기 초기 데이터흐름 그래프의 제2 부분에 상기 제2 최적화 규칙을 적용하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제6항에 있어서, 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 것은 데이터흐름 서브그래프 패턴 매칭 언어를 사용하여 수행되는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제6항에 있어서, 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 것은 제1 노드에 연결된 제2 노드에 의해 표현되는 제2 데이터 프로세싱 동작과 커뮤팅(commute)하는 제1 데이터 프로세싱 동작을 나타내는 상기 제1 노드를 식별하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제6항에 있어서, 상기 제1 최적화 규칙을 적용하는 것은 중복 데이터 프로세싱 동작 제거, 세기 감소 최적화, 결합 동작 최적화, 폭 감소 최적화, 및 중복 제거 최적화로 이루어진 그룹으로부터 선택된 최적화를 적용하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은 중복 동작을 나타내는 제1 노드를 식별하는 것 및 상기 초기 데이터흐름 그래프로부터 상기 제1 노드를 제거하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은 각각의 정렬 데이터 프로세싱 동작을 나타내는 상기 초기 데이터흐름 그래프에서 2개의 노드를 식별하는 것 및 상기 2개의 노드를 정렬 데이터 프로세싱 동작을 나타내는 단일 노드로 대체하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제12항에 있어서, 상기 2개의 노드는 상기 초기 데이터흐름 그래프에서 서로 인접하지 않는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은 제1 데이터 프로세싱 동작을 나타내는 제1 노드를 상기 제1 데이터 프로세싱 동작보다 더 약한 유형의 제2 데이터 프로세싱 동작을 나타내는 제2 노드로 대체하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은 각각의 조인(join) 데이터 프로세싱 동작을 나타내는 상기 초기 데이터흐름 그래프에서 2개의 노드를 식별하는 것 및 상기 2개의 노드를 조인 데이터 프로세싱 동작을 나타내는 단일 노드로 대체하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 자동으로 생성된 초기 데이터흐름 그래프를 획득하는 것은 상기 초기 데이터흐름 그래프를 자동으로 생성하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제1항에 있어서, 상기 초기 데이터흐름 그래프를 자동으로 생성하는 것은:
구조화 질의 언어(SQL) 질의를 획득하는 것;
상기 SQL 질의에 대한 질의 계획을 생성하는 것; 및
상기 질의 계획을 사용하여 상기 초기 데이터흐름 그래프를 생성하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 적어도 하나의 컴퓨터 하드웨어 프로세서를 사용하여:
자동으로 생성된 초기 데이터흐름 그래프를 획득하는 단계 - 상기 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 상기 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -;
상기 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 단계 - 상기 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 상기 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 상기 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및
제1 컴퓨터 시스템 프로세스를 사용하여 상기 제1 데이터 프로세싱 동작을 실행하고 상기 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 상기 제2 데이터 프로세싱 동작을 실행함으로써 상기 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하는 단계를 수행하는 단계를 포함하는, 방법. - 제18항에 있어서,
상기 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 프로세싱 레이아웃을 할당하는 단계를 더 포함하고,
상기 실행은 상기 할당된 하나 이상의 프로세싱 레이아웃에 따라 수행되는, 방법. - 제18항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 단계는:
제1 최적화 규칙을 선택하는 단계;
상기 제1 최적화 규칙을 적용할 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 단계; 및
상기 초기 데이터흐름 그래프의 제1 부분에 상기 제1 최적화 규칙을 적용하는 단계를 포함하는, 방법. - 제20항에 있어서, 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 단계는 제1 노드에 연결된 제2 노드에 의해 표현되는 제2 데이터 프로세싱 동작과 커뮤팅하는 제1 데이터 프로세싱 동작을 나타내는 상기 제1 노드를 식별하는 단계를 포함하는, 방법.
- 제20항에 있어서, 상기 제1 최적화 규칙을 적용하는 단계는 중복 데이터 프로세싱 동작 제거, 세기 감소 최적화, 결합 동작 최적화, 폭 감소 최적화, 및 중복 제거 최적화로 이루어진 그룹으로부터 선택된 최적화를 적용하는 단계를 포함하는, 방법.
- 제18항에 있어서,
구조화 질의 언어(SQL) 질의를 획득하는 단계;
상기 SQL 질의에 대한 질의 계획을 생성하는 단계; 및
상기 질의 계획을 사용하여 상기 초기 데이터흐름 그래프를 생성하는 단계를 더 포함하는, 방법. - 적어도 하나의 컴퓨터 하드웨어 프로세서; 및
프로세서-실행가능 명령을 저장하는 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체를 포함하고, 상기 프로세서-실행가능 명령은, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
자동으로 생성된 초기 데이터흐름 그래프를 획득하는 것 - 상기 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 상기 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -;
상기 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 상기 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 상기 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 상기 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및
제1 컴퓨터 시스템 프로세스를 사용하여 상기 제1 데이터 프로세싱 동작을 실행하고 상기 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 상기 제2 데이터 프로세싱 동작을 실행함으로써 상기 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하는 것을 수행하게 하는, 데이터 프로세싱 시스템. - 제24항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
상기 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 프로세싱 레이아웃을 할당하는 것을 수행하게 하고,
상기 실행은 상기 할당된 하나 이상의 프로세싱 레이아웃에 따라 수행되는, 데이터 프로세싱 시스템. - 제24항에 있어서, 상기 업데이트된 데이터흐름 그래프를 생성하는 것은:
제1 최적화 규칙을 선택하는 것;
상기 제1 최적화 규칙을 적용할 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 것; 및
상기 초기 데이터흐름 그래프의 제1 부분에 상기 제1 최적화 규칙을 적용하는 것을 포함하는, 데이터 프로세싱 시스템. - 제26항에 있어서, 상기 초기 데이터흐름 그래프의 제1 부분을 식별하는 것은 제1 노드에 연결된 제2 노드에 의해 표현되는 제2 데이터 프로세싱 동작과 커뮤팅하는 제1 데이터 프로세싱 동작을 나타내는 상기 제1 노드를 식별하는 것을 포함하는, 데이터 프로세싱 시스템.
- 제27항에 있어서, 상기 제1 최적화 규칙을 적용하는 것은 중복 데이터 프로세싱 동작 제거, 세기 감소 최적화, 결합 동작 최적화, 폭 감소 최적화, 및 중복 제거 최적화로 이루어진 그룹으로부터 선택된 최적화를 적용하는 것을 포함하는, 데이터 프로세싱 시스템.
- 제24항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
구조화 질의 언어(SQL) 질의를 획득하는 것;
상기 SQL 질의에 대한 질의 계획을 생성하는 것; 및
상기 질의 계획을 사용하여 상기 초기 데이터흐름 그래프를 생성하는 것을 수행하게 하는, 데이터 프로세싱 시스템. - 프로세서-실행가능 명령을 저장하는 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체로서, 상기 프로세서-실행가능 명령은:
자동으로 생성된 초기 데이터흐름 그래프를 획득하기 위한 수단 - 상기 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 상기 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -;
상기 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하기 위한 수단 - 상기 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 상기 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 상기 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -; 및
제1 컴퓨터 시스템 프로세스를 사용하여 상기 제1 데이터 프로세싱 동작을 실행하고 상기 제1 컴퓨터 시스템 프로세스와 상이한 제2 컴퓨터 시스템 프로세스를 사용하여 상기 제2 데이터 프로세싱 동작을 실행함으로써 상기 업데이트된 데이터흐름 그래프를 적어도 부분적으로 실행하기 위한 수단을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체로서, 상기 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
자동으로 생성된 초기 데이터흐름 그래프를 획득하는 것 - 상기 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 상기 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및
상기 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 상기 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 상기 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 상기 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -을 수행하게 하는 프로세서-실행가능 명령을 저장하고, 상기 생성하는 것은:
제1 노드에 연결된 제2 노드에 의해 표현되는 제2 데이터 프로세싱 동작과 커뮤팅하는 제1 데이터 프로세싱 동작을 나타내는 상기 제1 노드를 식별함으로써 제1 최적화 규칙을 적용할 상기 초기 데이터흐름 그래프의 제1 부분을 적어도 부분적으로 식별하는 것; 및
상기 초기 데이터흐름 그래프의 제1 부분에 상기 제1 최적화 규칙을 적용하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제31항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
상기 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 프로세싱 레이아웃을 할당하는 것을 수행하게 하고,
상기 실행은 상기 할당된 하나 이상의 프로세싱 레이아웃에 따라 수행되는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제31항에 있어서, 상기 제1 데이터 프로세싱 동작은 정렬 동작인, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제31항에 있어서, 상기 제1 최적화 규칙을 적용하는 것은 중복 데이터 프로세싱 동작 제거, 세기 감소 최적화, 결합 동작 최적화, 폭 감소 최적화, 및 중복 제거 최적화로 이루어진 그룹으로부터 선택된 최적화를 적용하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
- 제31항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
구조화 질의 언어(SQL) 질의를 획득하는 것;
상기 SQL 질의에 대한 질의 계획을 생성하는 것; 및
상기 질의 계획을 사용하여 상기 초기 데이터흐름 그래프를 생성하는 것을 수행하게 하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체로서, 상기 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체는, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
자동으로 생성된 초기 데이터흐름 그래프를 획득하는 것 - 상기 초기 데이터흐름 그래프는 제1 복수의 데이터 프로세싱 동작을 나타내는 제1 복수의 노드 및 상기 제1 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제1 복수의 링크를 포함함 -; 및
상기 초기 데이터흐름 그래프를 업데이트하기 위해 데이터흐름 그래프 최적화 규칙을 반복적으로 적용함으로써 업데이트된 데이터흐름 그래프를 생성하는 것 - 상기 업데이트된 데이터흐름 그래프는 제2 복수의 데이터 프로세싱 동작을 나타내는 제2 복수의 노드 및 상기 제2 복수의 노드의 노드들 사이에서 데이터의 흐름을 나타내는 제2 복수의 링크를 포함하고, 상기 제2 복수의 노드는 제1 데이터 프로세싱 동작을 나타내는 노드 및 제2 데이터 프로세싱 동작을 나타내는 다른 노드를 포함함 -을 수행하게 하는 프로세서-실행가능 명령을 저장하고, 상기 생성하는 것은:
중복 데이터 프로세싱 동작 제거, 세기 감소 최적화, 폭 감소 최적화, 및 중복 제거 최적화 중에서 상기 초기 데이터흐름 그래프의 제1 부분에 적용할 제1 최적화 규칙을 선택하는 것; 및
상기 초기 데이터흐름 그래프의 제1 부분에 상기 제1 최적화 규칙을 적용하는 것을 포함하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제36항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
상기 업데이트된 데이터흐름 그래프의 하나 이상의 노드 각각에 프로세싱 레이아웃을 할당하는 것을 수행하게 하고,
상기 실행은 상기 할당된 하나 이상의 프로세싱 레이아웃에 따라 수행되는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체. - 제36항에 있어서, 상기 프로세서-실행가능 명령은 추가로 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
구조화 질의 언어(SQL) 질의를 획득하는 것;
상기 SQL 질의에 대한 질의 계획을 생성하는 것; 및
상기 질의 계획을 사용하여 상기 초기 데이터흐름 그래프를 생성하는 것을 수행하게 하는, 적어도 하나의 비-일시적 컴퓨터-판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/993,284 | 2018-05-30 | ||
US15/993,284 US12032631B2 (en) | 2018-05-30 | 2018-05-30 | Systems and methods for dataflow graph optimization |
PCT/US2019/033573 WO2019231793A1 (en) | 2018-05-30 | 2019-05-22 | Systems and methods for dataflow graph optimization |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210025024A true KR20210025024A (ko) | 2021-03-08 |
Family
ID=66858007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207037986A KR20210025024A (ko) | 2018-05-30 | 2019-05-22 | 데이터흐름 그래프 최적화를 위한 시스템 및 방법 |
Country Status (11)
Country | Link |
---|---|
US (2) | US12032631B2 (ko) |
EP (3) | EP4250135B1 (ko) |
JP (2) | JP7487115B2 (ko) |
KR (1) | KR20210025024A (ko) |
CN (1) | CN112534401B (ko) |
AU (3) | AU2019276969B2 (ko) |
CA (1) | CA3102118A1 (ko) |
CL (1) | CL2020003100A1 (ko) |
MX (1) | MX2020012906A (ko) |
SG (1) | SG11202011682SA (ko) |
WO (1) | WO2019231793A1 (ko) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10673716B1 (en) * | 2017-10-31 | 2020-06-02 | Amazon Technologies, Inc. | Graph-based generation of dependency-adherent execution plans for data center migrations |
US11188434B2 (en) | 2017-12-08 | 2021-11-30 | Ab Initio Technology Llc | Systems and methods for monitoring execution of structured query language (SQL) queries |
WO2020030807A1 (en) * | 2018-08-09 | 2020-02-13 | Inesc Tec Instituto De Engenharia De Sistemas De Computadores, Tecnologia E Ciência | Method and apparatus for optimizing code for field programmable gate arrays |
US11061596B2 (en) * | 2019-11-04 | 2021-07-13 | Google Llc | Multi-pass distributed data shuffle |
US11281721B2 (en) * | 2019-11-22 | 2022-03-22 | International Business Machines Corporation | Augmenting relational database engines with graph query capability |
US10949178B1 (en) * | 2019-12-13 | 2021-03-16 | Intuit Inc. | Method and system for decomposing a global application programming interface (API) graph into an application-specific API subgraph |
BR112022014874A2 (pt) * | 2020-01-28 | 2022-09-20 | Ab Initio Technology Llc | Editor para gerar gráficos computacionais |
US11210285B2 (en) | 2020-03-06 | 2021-12-28 | Ab Initio Technology Llc | Generation of optimized logic from a schema |
US12038921B2 (en) | 2020-09-04 | 2024-07-16 | Ab Initio Technology Llc | Transforming operations of a computer program for execution at a database |
WO2022165321A1 (en) | 2021-01-31 | 2022-08-04 | Ab Initio Technology Llc | Data processing system with manipulation of logical dataset groups |
CN114911514A (zh) * | 2021-02-10 | 2022-08-16 | 北京字跳网络技术有限公司 | 算法资源的配置方法、装置、电子设备及存储介质 |
US11567998B2 (en) * | 2021-03-25 | 2023-01-31 | Databricks, Inc. | Dataflow graph processing |
CN113297262A (zh) * | 2021-06-18 | 2021-08-24 | 中国农业银行股份有限公司 | 数据流图的布局方法和装置 |
CN113626192A (zh) * | 2021-08-10 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | 用于对算子节点进行扩缩容调整的方法、装置及系统 |
CN113852571B (zh) * | 2021-08-20 | 2023-11-28 | 阿里巴巴(中国)有限公司 | 分配流量的方法以及装置 |
US20230093911A1 (en) * | 2021-09-30 | 2023-03-30 | Ab Initio Technology Llc | Systems and methods for performing data processing operations using variable level parallelism |
US20230229514A1 (en) * | 2022-01-14 | 2023-07-20 | Dell Products L.P. | Intelligent orchestration of classic-quantum computational graphs |
US20240070163A1 (en) * | 2022-08-23 | 2024-02-29 | Ab Initio Technology Llc | Operationalizing metadata |
CN115098093B (zh) * | 2022-08-24 | 2022-12-02 | 湖南云畅网络科技有限公司 | 一种数据流程表达式处理方法及系统 |
CN115964372B (zh) * | 2023-01-03 | 2023-11-21 | 中国科学院空间应用工程与技术中心 | 一种空间站有效载荷分布式事件提取方法和系统 |
WO2024197264A1 (en) | 2023-03-23 | 2024-09-26 | Ab Initio Technology Llc | Logical access for previewing expanded view datasets |
CN116107154B (zh) * | 2023-04-13 | 2023-09-05 | 长鑫存储技术有限公司 | 掩膜版数据生成方法、装置、设备及介质 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06161773A (ja) | 1992-11-20 | 1994-06-10 | Sanyo Electric Co Ltd | 並列処理プログラムの作成装置 |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
US5918255A (en) * | 1997-08-01 | 1999-06-29 | Ut Automotive Dearborn, Inc. | Method for testing motor armature shafts |
US6438741B1 (en) * | 1998-09-28 | 2002-08-20 | Compaq Computer Corporation | System and method for eliminating compile time explosion in a top down rule based system using selective sampling |
US7047232B1 (en) | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
JP2001222452A (ja) | 2000-02-10 | 2001-08-17 | Ricoh Co Ltd | リレーショナルデータベースシステムにおける問い合わせ処理最適化装置 |
US7089172B2 (en) * | 2001-12-28 | 2006-08-08 | Testout Corporation | System and method for simulating a computer environment and evaluating a user's performance within a simulation |
JP2003256221A (ja) | 2002-02-28 | 2003-09-10 | Fujitsu Ltd | 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ |
US7155612B2 (en) | 2003-04-30 | 2006-12-26 | International Business Machines Corporation | Desktop database data administration tool with row level security |
US7249141B2 (en) | 2003-04-30 | 2007-07-24 | Microsoft Corporation | Automated layout of relational databases |
US7146352B2 (en) | 2003-06-23 | 2006-12-05 | Microsoft Corporation | Query optimizer system and method |
CA2529925C (en) | 2003-06-25 | 2016-08-23 | Ab Initio Software Corporation | Computer-aided parallelizing of computation graphs |
JP4331045B2 (ja) | 2004-04-20 | 2009-09-16 | 株式会社エヌ・ティ・ティ・データ | データベースシステム、および、プログラム |
US20060095406A1 (en) | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | Displaying explain data for a SQL query of a database |
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 |
US20090077013A1 (en) | 2007-09-19 | 2009-03-19 | International Business Machines Corporation | Methods, systems, and computer program products for user-driven targeted query re-optimizations using delta values |
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 |
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US9208141B2 (en) | 2010-02-05 | 2015-12-08 | Oracle International Corporation | Generating and displaying active reports |
KR20150042297A (ko) | 2010-06-15 | 2015-04-20 | 아브 이니티오 테크놀로지 엘엘시 | 동적으로 로딩하는 그래프 기반 계산 |
US8356027B2 (en) | 2010-10-07 | 2013-01-15 | Sap Ag | Hybrid query execution plan generation and cost model evaluation |
WO2012061109A1 (en) | 2010-10-25 | 2012-05-10 | Ab Initio Technology Llc | Managing data set objects in a dataflow graph that represents a computer program |
US8195643B2 (en) | 2010-10-28 | 2012-06-05 | Sap Ag | Database calculation engine |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US8838579B2 (en) * | 2012-04-26 | 2014-09-16 | Sap Ag | Data flow graph optimization using adaptive rule chaining |
US8793243B2 (en) | 2012-04-26 | 2014-07-29 | Sap Ag | Rule-based extendable query optimizer |
US8856766B2 (en) | 2012-05-11 | 2014-10-07 | International Business Machines Corporation | Generating layouts for graphs of data flow applications |
CN103713958B (zh) | 2012-09-28 | 2016-12-21 | 国际商业机器公司 | 在不同语言的机器间同步图形用户界面操作的方法和设备 |
WO2014209260A1 (en) | 2013-06-24 | 2014-12-31 | Hewlett-Packard Development Company, L.P. | Processing a data flow graph of a hybrid flow |
US20150039587A1 (en) | 2013-07-31 | 2015-02-05 | Oracle International Corporation | Generic sql enhancement to query any semi-structured data and techniques to efficiently support such enhancements |
JP6204753B2 (ja) | 2013-08-28 | 2017-09-27 | Kddi株式会社 | 分散クエリ処理装置、処理方法及び処理プログラム |
US9990398B2 (en) * | 2013-09-20 | 2018-06-05 | Oracle International Corporation | Inferring dimensional metadata from content of a query |
CN103699515B (zh) | 2013-12-27 | 2017-01-18 | 中国科学院计算技术研究所 | 一种fft并行处理装置和方法 |
WO2016078072A1 (zh) | 2014-11-21 | 2016-05-26 | 华为技术有限公司 | 一种实现业务优化的方法及系统 |
CN107111505B (zh) | 2015-01-19 | 2020-07-14 | 华为技术有限公司 | 用于在并行异构系统上执行算法的系统和方法 |
EP3106982B1 (en) | 2015-06-18 | 2021-03-10 | ARM Limited | Determination of branch convergence in a sequence of program instructions |
WO2017019879A1 (en) * | 2015-07-29 | 2017-02-02 | Algebraix Data Corp. | Multi-query optimization |
US10657134B2 (en) | 2015-08-05 | 2020-05-19 | Ab Initio Technology Llc | Selecting queries for execution on a stream of real-time data |
US9535963B1 (en) | 2015-09-18 | 2017-01-03 | Linkedin Corporation | Graph-based queries |
US10133778B2 (en) * | 2015-11-20 | 2018-11-20 | Sap Se | Query optimization using join cardinality |
US10877816B2 (en) * | 2016-04-20 | 2020-12-29 | Samsung Electronics Co., Ltd. | Optimal task scheduler |
US10437821B2 (en) * | 2016-10-26 | 2019-10-08 | Sap Se | Optimization of split queries |
US10528599B1 (en) * | 2016-12-16 | 2020-01-07 | Amazon Technologies, Inc. | Tiered data processing for distributed data |
US9798527B1 (en) | 2017-01-06 | 2017-10-24 | Google Inc. | Loop and library fusion |
DE112018001789T5 (de) | 2017-03-29 | 2019-12-19 | Ab Initio Technology Llc | Systeme und verfahren zum durchführen von datenverarbeitungsoperationen unter verwendung von parallelität variabler grade |
US11188434B2 (en) | 2017-12-08 | 2021-11-30 | Ab Initio Technology Llc | Systems and methods for monitoring execution of structured query language (SQL) queries |
US20230093911A1 (en) | 2021-09-30 | 2023-03-30 | Ab Initio Technology Llc | Systems and methods for performing data processing operations using variable level parallelism |
-
2018
- 2018-05-30 US US15/993,284 patent/US12032631B2/en active Active
-
2019
- 2019-05-22 EP EP23191246.0A patent/EP4250135B1/en active Active
- 2019-05-22 AU AU2019276969A patent/AU2019276969B2/en active Active
- 2019-05-22 EP EP23191257.7A patent/EP4250136A3/en active Pending
- 2019-05-22 CN CN201980049799.4A patent/CN112534401B/zh active Active
- 2019-05-22 EP EP19730617.8A patent/EP3803570B1/en active Active
- 2019-05-22 MX MX2020012906A patent/MX2020012906A/es unknown
- 2019-05-22 WO PCT/US2019/033573 patent/WO2019231793A1/en unknown
- 2019-05-22 KR KR1020207037986A patent/KR20210025024A/ko active Search and Examination
- 2019-05-22 SG SG11202011682SA patent/SG11202011682SA/en unknown
- 2019-05-22 CA CA3102118A patent/CA3102118A1/en active Pending
- 2019-05-22 JP JP2020567012A patent/JP7487115B2/ja active Active
-
2020
- 2020-11-27 CL CL2020003100A patent/CL2020003100A1/es unknown
-
2023
- 2023-11-23 AU AU2023270294A patent/AU2023270294A1/en active Pending
- 2023-11-23 AU AU2023270295A patent/AU2023270295A1/en active Pending
-
2024
- 2024-05-07 JP JP2024075264A patent/JP2024107001A/ja active Pending
- 2024-05-21 US US18/670,461 patent/US20240311427A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3803570A1 (en) | 2021-04-14 |
US20240311427A1 (en) | 2024-09-19 |
CN112534401A (zh) | 2021-03-19 |
CA3102118A1 (en) | 2019-12-05 |
EP4250135A8 (en) | 2023-12-13 |
EP4250135A3 (en) | 2023-12-27 |
CL2020003100A1 (es) | 2021-05-14 |
EP4250136A2 (en) | 2023-09-27 |
AU2019276969B2 (en) | 2023-08-24 |
US12032631B2 (en) | 2024-07-09 |
WO2019231793A1 (en) | 2019-12-05 |
JP7487115B2 (ja) | 2024-05-20 |
JP2021525925A (ja) | 2021-09-27 |
EP4250136A3 (en) | 2023-12-20 |
AU2023270294A1 (en) | 2023-12-14 |
MX2020012906A (es) | 2021-05-27 |
AU2023270295A1 (en) | 2023-12-14 |
JP2024107001A (ja) | 2024-08-08 |
US20190370407A1 (en) | 2019-12-05 |
EP3803570B1 (en) | 2023-08-30 |
CN112534401B (zh) | 2024-07-12 |
EP4250136A8 (en) | 2023-12-13 |
EP4250135A2 (en) | 2023-09-27 |
AU2019276969A1 (en) | 2020-12-17 |
SG11202011682SA (en) | 2020-12-30 |
EP4250135B1 (en) | 2024-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7487115B2 (ja) | データフローグラフ最適化のシステム及び方法 | |
KR102549994B1 (ko) | 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법 | |
CA3064561A1 (en) | Automated dependency analyzer for heterogeneously programmed data processing system | |
US20100175049A1 (en) | Scope: a structured computations optimized for parallel execution script language | |
Burgueño et al. | On the concurrent execution of model transformations with linda | |
CN116628066B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
Ha et al. | Translating a distributed relational database to a document database | |
US20150286700A1 (en) | Recording medium having stored thereon database access control program, method for controlling database access, and information processing apparatus | |
AU2023265391A1 (en) | Dataflow graph datasets | |
Kunkel | Data Models & Data Processing Strategies | |
KR20150074611A (ko) | 관계형 데이터베이스, 데이터를 xml로 변환하는 방법 및 장치 | |
CN117762976A (zh) | 数据查询方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |