KR20140014123A - 데이터 질의 관리 - Google Patents

데이터 질의 관리 Download PDF

Info

Publication number
KR20140014123A
KR20140014123A KR1020137019988A KR20137019988A KR20140014123A KR 20140014123 A KR20140014123 A KR 20140014123A KR 1020137019988 A KR1020137019988 A KR 1020137019988A KR 20137019988 A KR20137019988 A KR 20137019988A KR 20140014123 A KR20140014123 A KR 20140014123A
Authority
KR
South Korea
Prior art keywords
data flow
flow graph
database
representing
data
Prior art date
Application number
KR1020137019988A
Other languages
English (en)
Other versions
KR101915591B1 (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 KR20140014123A publication Critical patent/KR20140014123A/ko
Application granted granted Critical
Publication of KR101915591B1 publication Critical patent/KR101915591B1/ko

Links

Images

Classifications

    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • 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/2452Query translation
    • G06F16/24526Internal representations for queries
    • 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
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Operations Research (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 구현예에서, 일반적으로 데이터베이스 질의(702)를 나타내는 데이터 흐름 그래프(716)를 생성하는 방법은, 데이터 소스(726a, 726b)를 나타내는 적어도 하나의 입력(734a, 734b) 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜(714)을 플랜 생성기(748)로부터 수신하는 단계; 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 단계로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프 생성 단계; 및 상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계를 포함한다.

Description

데이터 질의 관리{MANAGING DATA QUERIES}
본 명세서는 데이터 질의 관리에 관한 것이다.
데이터는 데이터베이스에 저장되고 데이터베이스 테이블과 같은 다양한 형태로 배열될 수 있다. 데이터베이스 테이블은 공통의 테마 또는 목적을 가진 데이터 세트를 포함할 수 있다. 데이터베이스 테이블의 배열은 데이터베이스 스킴(database scheme)에 의해 규정될 수 있고, 복수의 데이터베이스 테이블이 유사하거나 동일한 배열을 가질 수 있다. 나아가, 데이터베이스의 컨텐츠 및 이와 관련된 데이터베이스 테이블은, 데이터가 조정, 덧붙이기, 또는 삭제됨에 따라 시간에 걸쳐 변화할 수 있다. 데이터를 데이터베이스로 전달하고 데이터를 데이터베이스로부터 외부로 전달하며 이러한 데이터베이스 내에서 데이터를 조작(manipulate)하기 위해 다양한 기술이 이용될 수 있다.
일 구현예에서, 일반적으로 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법은, 데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하는 단계; 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 단계로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프 생성 단계; 및 상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계를 포함한다.
구현예는 다음의 특징 중 하나 이상의 특징을 포함할 수 있다. 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 상기 데이터 흐름 그래프의 적어도 하나의 컴포넌트를 제거하는 단계를 포함한다. 상기 데이터 흐름 그래프의 컴포넌트는 상기 질의 플랜이 나타내는 동작에 대응한다. 상기 적어도 하나의 동작은, 상기 적어도 하나의 입력이 나타내는 상기 데이터 소스와 연관되는 실행가능한 기능에 의해 수행될 수 있다. 상기 적어도 하나의 입력의 특성은, 상기 입력이 나타내는 상기 데이터 소스와 연관되는 실행가능한 기능을 포함한다. 상기 실행가능한 기능은 소트(sort) 기능을 포함한다. 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 제1 입력에 적용가능한 제1 동작을 나타내는 제1 컴포넌트와 제2 입력에 적용가능한 제2 동작을 나타내는 제2 컴포넌트를 단일 컴포넌트로 병합하는 단계를 포함하고, 상기 단일 컴포넌트는 상기 제1 동작 및 상기 제2 동작에 대응하는 단일한 동작을 나타내며, 상기 단일한 동작은 상기 제1 입력 및 상기 제2 입력에 적용가능하다. 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 제1 데이터 소스를 나타내는 제1 입력 컴포넌트와 제2 데이터 소스를 나타내는 제2 입력 컴포넌트를 단일 입력 컴포넌트로 병합하는 단계를 포함하고, 상기 단일 입력 컴포넌트는 상기 제1 데이터 소스 및 상기 제2 데이터 소스의 데이터에 액세스하기 위한 동작을 포함한다. 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 제1 입력에 적용가능한 제1 동작을 나타내는 제1 컴포넌트를 제거하고 상기 제1 입력에 제2 컴포넌트를 적용하는 단계를 포함하고, 상기 제2 컴포넌트는 상기 제1 동작과 동일한 기능에 대응하는 제2 동작을 나타내며, 상기 제2 동작은 제2 입력에 적용가능하다. 상기 방법은, 적어도 하나의 상기 데이터 소스를 나타내는 컴포넌트와 연관되는 데이터베이스와 연관되는 기능을 식별하고, 상기 식별에 기초하여 상기 컴포넌트로 하여금 상기 데이터베이스에 데이터베이스 질의를 제공하도록 구성하는 단계를 더 포함한다. 데이터세트를 나타내는 상기 적어도 하나의 입력은 데이터 파일, 데이터베이스 테이블, 제2 데이터 흐름 그래프의 출력 및 네트워크 소켓 중 적어도 하나를 포함한다. 상기 데이터 흐름 그래프의 출력은 데이터 파일, 데이터베이스 테이블, 제2 데이터 흐름 그래프 및 네트워크 소켓 중 적어도 하나에 할당된다. 상기 데이터베이스 질의는 SQL 질의를 포함한다. 상기 데이터 흐름 그래프는 상기 플랜 생성기로부터 출력을 수신하도록 구성되는 컴포넌트를 포함한다.
다른 구현예로서, 일반적으로 컴퓨터 판독가능 매체는 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 컴퓨터 프로그램을 저장하고, 이러한 컴퓨터 프로그램은 컴퓨터로 하여금: 데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하는 것; 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 것으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프를 생성하는 것; 및 상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 것을 수행하도록 하기 위한 명령을 포함한다.
또 다른 구현예로서, 일반적으로 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템은, 데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하기 위한 수단; 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하기 위한 수단으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프 생성 수단; 및 상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하기 위한 수단을 포함한다.
또 다른 구현예로서, 일반적으로 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템은, 데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하는 것; 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 것으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프를 생성하는 것; 및 상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 것을 수행하도록 구성되는 컴퓨터 시스템을 포함한다.
또 다른 구현예로서, 일반적으로 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템은, 데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 제공하는 플랜 생성기와 통신하는 인터페이스; 및 프로세서를 포함하고, 상기 프로세서는: 상기 플랜 생성기에 의해 제공되는 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 것으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프를 생성하는 것; 및 상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 것을 수행하도록 구성된다.
도 1은 데이터 흐름 그래프의 블록도이다.
도 2는 데이터베이스 질의 및 데이터 흐름 그래프를 나타낸다.
도 3은 데이터베이스 시스템 및 관련 컴포넌트의 개략도이다.
도 4는 데이터 흐름 그래프의 실행을 나타낸다.
도 5는 데이터베이스 테이블 및 데이터베이스 테이블의 구조적 표현을 나타낸다.
도 6은 데이터베이스 질의 및 실행가능한 펑션을 각각 포함하는 데이터 흐름 그래프를 나타낸다.
도 7은 데이터베이스 시스템 및 관련 컴포넌트의 개략도이다.
도 8은 질의 플랜 및 데이터 흐름 그래프를 나타낸다.
도 9는 데이터베이스 질의 사용자 인터페이스를 나타낸다.
도 10 내지 11은 질의 플랜 및 데이터 흐름 그래프를 나타낸다.
도 12는 데이터베이스 시스템의 동작에 대한 흐름도이다.
1. 데이터베이스, 질의 및 그래프
데이터베이스 관리 시스템은 하나 이상의 데이터베이스에 저장된 데이터를 다룬다. 이러한 데이터를 저장하기 위해서, 데이터베이스 저장소는 데이터베이스 테이블과 같은 하나 이상의 형태를 취할 수 있고, 이는 로우(row) 및 컬럼과 같은 데이터 구조로 조직화된 데이터의 집합일 수 있다. 일 구성에서, 각각의 로우는 데이터의 레코드를 나타내고, 각각의 컬럼은 각각의 로우 내에서 필드를 나타낸다.
데이터베이스에 포함되어 있는 정보는 데이터베이스 질의를 이용하여 액세스 및 처리(예컨대, 수정)될 수 있다. 데이터베이스 질의는 데이터베이스 컨텐츠의 서브세트를 기술하는 명령과, 이러한 서브세트 내의 데이터에 대해 취하게 될 동작의 세트이다. 예를 들어, 특정 데이터베이스 시스템은 SQL(구조화 질의어)과 같은 전용화된 데이터베이스 질의 언어로 쓰여져 있는 데이터베이스 질의를 수행한다. 이러한 데이터베이스 시스템에서는, SQL 질의가 데이터베이스의 컨텐츠를 조작하기 위한 1차적인 수단이다.
일부 구현예에서는, 데이터베이스 질의 및 기타 다른 연산이 시각적인 표현으로 데이터베이스 관리 시스템과 연관된다. 예를 들어, 데이터는 데이터 흐름이라 지칭되는 동작의 집합을 거치는 것으로 표현될 수 있다. 일 구성으로서, 데이터 흐름이 방향성 그래프를 통해 제공될 수 있고, 연산의 컴포넌트는 그래프의 정점(vertex)과 연관되며 컴포넌트 사이의 데이터 흐름은 그래프의 링크(호, 에지)에 대응한다. 그래프는 모듈형 엔티티이고, 다른 모듈형 그래프에 연결되거나 이와 조합될 수 있다. 각각의 그래프는 하나 이상의 다른 그래프로 이루어질 수 있고, 특정 그래프는 이보다 큰 그래프 내의 컴포넌트일 수 있다. 그래픽 개발 환경(GDE)은 실행가능한 그래프를 특정하고 그래프 컴포넌트에 대한 파라미터를 규정하기 위한 사용자 인터페이스를 제공한다. 이러한 그래프 기반 연산을 구현하는 시스템은 미국 특허 제5,966,072호, "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"에 기술되어 있으며, 이러한 문헌의 내용은 원용에 의해 전체로서 본원에 포함된다.
도 1을 참조하면, 데이터 흐름 그래프(101)의 일례는(예시적인 사용자 인터페이스로 표현됨), 데이터 흐름 그래프(101)의 실행가능한 컴포넌트(104a-104j)에 의해 처리될 데이터의 집합을 제공하는 입력 컴포넌트(102)를 포함한다. 일부 예에서, 입력 컴포넌트(102)는 데이터베이스 시스템과 연관되는 데이터 레코드 또는 트랜잭션 처리 시스템과 연관되는 트랜잭션을 포함할 수 있는 데이터 소스이다. 이러한 데이터 레코드는 예를 들어 데이터베이스 테이블과 같은 다양한 형태로 저장될 수 있다. 각각의 실행가능한 컴포넌트(104a-104j)는 전체적인 데이터 흐름 그래프(101)에 의해 규정되는 연산 중 일부와 연관된다. 작업 요소(예컨대, 데이터 집합 또는 데이터베이스 테이블로부터의 개별적인 데이터 레코드)는 컴포넌트의 하나 이상의 입력 포트로 들어오고, 출력 작업 요소(일부 경우에서는 입력 작업 요소이거나 입력 작업 요소의 처리된 버전임)는 통상적으로 컴포넌트의 하나 이상의 출력 포트로부터 빠져나간다. 데이터 흐름 그래프(101)에서, 컴포넌트(104e, 104g, 및 104j)로부터의 출력 작업 요소는 출력 데이터 컴포넌트(102a-102c)에 저장된다.
입력 컴포넌트(102) 및 출력 데이터 컴포넌트(102a-102c)는, 예를 들어 데이터 파일, 데이터베이스 테이블, 제2 데이터 흐름 그래프의 출력, 네트워크 소켓, 또는 이와 다른 데이터 소스 중 임의의 것에 대한 액세스를 각각 제공할 수 있다.
몇몇 그래프 기반 데이터베이스 시스템이 데이터베이스 질의를 처리하는데 이용된다. 예를 들어, 데이터베이스 질의는, 예컨대 데이터 흐름 내에서 처리를 위해, 데이터베이스 테이블 컨텐츠의 식별된 서브세트를 추출하도록, 하나 이상의 데이터베이스 테이블에 적용될 수 있다. 일부 구현예에서, 그래프 기반 데이터베이스 시스템은 데이터 흐름 그래프의 형태의 데이터베이스 질의를 수락하고 실행한다. 이와 다른 데이터베이스 시스템은 기타 다른 유형의 데이터베이스 질의를 이용할 수 있다.
일부 경우에서는, 하나 이상의 데이터베이스 테이블이, SQL을 이용하는 또 다른 종류의 데이터베이스 시스템으로부터 그래프 기반 데이터베이스 시스템으로 이동된다. 나머지 데이터베이스 시스템에는, 그래프 기반 데이터베이스 시스템과 호환가능하지 않은, 이미 쓰여져 있는 많은 SQL 질의가 있을 수 있다. 일부 구현예에서, 이러한 SQL 질의는 그래프 기반 데이터베이스 시스템과 호환가능한 데이터베이스 질의로 변환될 수 있다.
도 2는 SQL로 쓰여져 있는 데이터베이스 질의(200)의 일례를 나타낸다. 이러한 예시적인 데이터베이스 질의(200)는 그래프 기반 데이터베이스 관리 시스템에 의해 관리되는 데이터베이스 테이블(202, 204) 상에서 동작하도록 의도된다. 그래프 기반 데이터베이스 관리 시스템은, 데이터베이스 테이블이 그래프 기반 데이터베이스 관리 시스템에 고유한 포맷으로 되어 있기 때문에 데이터베이스 테이블(202, 204) 내의 데이터를 식별할 수 있다. 데이터베이스 테이블(202, 204)은 다른 데이터베이스 테이블, 예컨대 SQL 질의를 식별하고 데이터 흐름 그래프를 이용하지 않는 데이터베이스 시스템으로부터 기인하는 데이터베이스 테이블로부터 획득된 데이터를 포함할 수 있다.
그러나, 그래프 기반 데이터베이스 관리 시스템은 SQL 질의를 처리하기 위한 내장된(built-in) 기능을 가지지 않을 수 있고, 따라서 SQL 데이터베이스 질의(200)를 에뮬레이팅하도록 그래프 기반 데이터베이스 질의가 생성될 수 있다. 그래프 기반 데이터베이스 질의는 그래프 기반 데이터베이스 시스템에 의해 식별가능하다. 예를 들어, 데이터베이스 질의(200)는 (본원에서 기술되는 기술을 이용하여) SQL 질의로부터 데이터 흐름 그래프(208)로 변환될 수 있다(206). 데이터 흐름 그래프(208)는, 입력으로서 데이터베이스 테이블(202, 204)을 수락함으로써 데이터베이스 테이블(202, 204) 상에서 동작하고, 출력으로서 데이터베이스 질의(200)의 실행 결과를 제공한다.
2. 질의 플랜
일부 데이터베이스 시스템은 질의 플랜(종종 설명 플랜이라고도 지칭됨)에 기초하여 SQL 질의와 같은 데이터베이스 질의를 수행한다. 질의 플랜은 데이터베이스 질의가 실행되는 경우 수행될 수 있는 데이터베이스 동작에 대한 기술(description)이다. 질의 플랜은 데이터베이스 동작의 한 가지 가능한 배열을 기술할 수 있고, 이는 동작의 다른 배열 또는 동작의 상이한 세트가 동일한 결과를 달성하는 경우에도 그러하다.
이러한 질의 플랜을 제공하기 위해, 데이터베이스 시스템은 질의 플랜 생성기(종종 질의 플래너라고도 지칭됨)를 포함할 수 있다. 예를 들어, 질의 플랜 생성기는 데이터베이스 질의가 실행되는 때에 질의 플랜을 생성할 수 있고, 또는 질의 플랜 생성기는 질의의 실행에 관해 어떠한 결정이 내려지기 전에 질의 플랜을 생성할 수 있다.
일부 구성에서는, 데이터베이스 동작이 동등한 출력을 제공하면서도 다양한 순서로 실행될 수 있다. 이와 같이, 질의 플랜 생성기는 최적의 질의 플랜을 결정하는 기능을 가질 수 있다. 예를 들어 최적의 질의 플랜은, 최소량의 시간 내에 데이터베이스 질의를 실행하거나, 데이터 저장 공간과 같은 데이터베이스 리소스를 최소량으로 사용하거나, 또는 데이터베이스 시스템에 의해 식별된 제약조건 내에서 데이터베이스 질의를 달성하기 위한 데이터베이스 동작의 배열을 기술하는 질의 플랜일 수 있다. 최적의 질의 플랜을 결정하기 위한 질의 플랜 생성기의 기능에는, 많은 가능한 질의 플랜에 점수 또는 순위를 매기는 기능이 포함될 수 있고, 가능한 질의 플랜을 최적이거나 효율적인 구성으로 재배열하는 기능이 포함될 수도 있다.
단일한 데이터베이스 질의가 복수 회 실행될 수 있고, 각각의 실행은 고유한 최적의 질의 플랜을 가질 수 있다. 예를 들어, 데이터베이스 테이블 내의 데이터가, 데이터베이스 질의의 두 번의 실행 사이에 변화할 수 있다. 이러한 예에서, 데이터베이스 질의의 제1 실행에 대해 생성되었던 질의 플랜에서 기술되는 동작은, 데이터베이스 질의의 제2 실행 동안에, 이러한 제1 실행 동안 보다 더 많거나 더 적은 실행 시간을 요할 수 있다. 이러한 경우, 동작들의 다른 배열, 예를 들면 동일한 동작들의 다른 배열, 또는 다른 동작들의 배열이 데이터베이스 질의의 제2 실행에 보다 적합할 수 있다. 데이터베이스 질의의 제2 실행을 위해 최적화된 질의 플랜이, 데이터베이스 테이블의 순간적인 상태를 고려하여, 이러한 실행에 대해 생성될 수 있다.
3. 시스템 개괄
질의 플랜 생성기는 SQL 질의와 같은 다른 종류의 데이터베이스 질의를 에뮬레이팅하는 그래프 기반 데이터베이스 질의를 생성하는데 이용될 수 있다. 도 3에는, 데이터베이스 관리 컴퓨터 시스템(304) 상에서 실행되도록 데이터베이스 질의(302)를 준비하기 위한 데이터베이스 질의 관리 시스템(300)이 도시되어 있다. 도시되어 있는 데이터베이스 관리 컴퓨터 시스템(304)은 데이터 흐름 그래프로 구현되는 데이터베이스 동작을 다루는 그래프 실행 엔진(306)을 포함한다. 데이터베이스 질의 관리 시스템(300)은 또한 그래프 생성 컴퓨터 시스템(308)을 포함하고, 이러한 그래프 생성 컴퓨터 시스템(308)은, 데이터 흐름 그래프에 의해 수행될 동작에 대한 기술(description)로부터 데이터 흐름 그래프(312)를 만들어 낼 수 있는 그래프 생성 엔진(310)을 갖는다. 예를 들어, 이러한 동작에 대한 기술이 질의 플랜(314)일 수 있다. 그래프 생성 컴퓨터 시스템(308)은 데이터 소스를 나타내는 입력의 하나 이상의 특성에 기초하여 데이터 흐름 그래프의 컴포넌트를 변경할 수 있는 능력을 갖도록 구성되고, 이에 대해서는 이하 "6. 연합형 질의(federated query)" 부분에서 보다 상세하게 기술될 것이다.
데이터베이스 질의 관리 시스템(300)은 질의 플랜 생성기(318)를 실행하는 질의 플래닝 컴퓨터 시스템(316)을 더 포함한다. 질의 플랜 생성기(318)는 데이터베이스 질의로부터 질의 플랜을 생성하는 임의의 질의 플랜 생성기일 수 있고, 데이터 흐름 그래프 또는 그래프 생성과 관련된 어떠한 기능을 갖는 것으로도 설계될 필요가 없다. 나아가, 데이터베이스 질의 관리 시스템(300)은 또한, 데이터 저장소(예를 들면, 하드 드라이브, 광 디스크 등) 내에 데이터베이스(322)를 갖고 하나 이상의 데이터베이스 테이블(324a, 324b, 324c)을 포함하는 데이터베이스 컴퓨터 시스템(320)을 포함한다.
데이터베이스 관리 컴퓨터 시스템(304), 그래프 생성 컴퓨터 시스템(308), 질의 플래닝 컴퓨터 시스템(316), 및 데이터베이스 컴퓨터 시스템(320)에 대하여 별개의 컴퓨터 시스템들이 도시되어 있지만, 이러한 컴퓨터 시스템 중 둘 이상은 동일한 컴퓨터 시스템일 수 있거나, 동일한 컴퓨터 시스템의 컴포넌트일 수 있다. 이러한 컴퓨터 시스템 모두는 이들 각자의 실행가능한 컴포넌트를 실행하기 위한 적어도 하나의 프로세서 및 적어도 하나의 데이터 저장 시스템을 갖는다. 이러한 컴퓨터 시스템은 LAN(local area network), WAN(wide-area network), 인터넷과 같은 네트워크, 또는 다른 종류의 컴퓨터 네트워크를 이용하여 서로 연결될 수 있다.
하나 이상의 데이터베이스 질의(302)로부터 데이터 흐름 그래프(312)의 생성을 보여주기 위해, 데이터 흐름 그래프의 실행 전에 그래프 생성 컴퓨터 시스템(308)에 의해 데이터베이스 질의 및 데이터베이스 테이블(326)이 수신되고 처리된다. 그래프 생성 컴퓨터 시스템(308)은 데이터베이스 컴퓨터 시스템(320)으로부터 데이터베이스 테이블(326)을 수신한다.
데이터베이스 테이블(326)은 임의의 여러 형태를 취할 수 있다. 예를 들어, 데이터베이스 테이블(326)은 관계형 데이터베이스 테이블, 부분적 데이터베이스 테이블, 단층 파일, 또는 기타 다른 종류의 데이터 파일 또는 데이터 파일의 집합일 수 있다. 일부 예에서, 데이터베이스 테이블(326)은 데이터베이스 테이블에 관한 정보의 형태로, 예를 들면 데이터베이스 테이블에 관한 메타데이터, 또는 데이터베이스 테이블에 대한 기술(description)의 형태로 수신될 수 있다.
일부 구현예에서, 데이터베이스 테이블(326)은 데이터베이스 컴퓨터 시스템(320)과 연관되거나 이와 달리 그래프 생성 컴퓨터 시스템(308)에 액세스가능한 데이터 레지스트리에 의해 식별될 수 있다. 데이터 레지스트리는, 예를 들면 데이터베이스 테이블(326)과 연관되는 데이터 파일 위치, 및 데이터베이스 테이블과 연관되는 일차 키 및 인덱스 정보를 포함할 수 있는 룩업 파일 카탈로그의 형태일 수 있다. 데이터 레지스트리는 또한, 상이한 유형의 데이터베이스 테이블에 대해 데이터 포맷에 관한 정보를 제공할 수 있다. 나아가, 데이터 레지스트리는 또한, 데이터 흐름 그래프(312)가 데이터베이스 테이블에 어떻게 액세스할 수 있는지에 관한 정보를 제공할 수 있다.
그래프 생성 컴퓨터 시스템(308)은 또한, 데이터베이스 테이블(326)에 적용될 데이터베이스 질의(302)를 수신한다. 예를 들면, 데이터베이스 질의는 SQL 질의일 수 있다. 데이터베이스 질의(302)는 임의의 수의 가능한 소스로부터 수신될 수 있다. 예를 들어, 데이터베이스 질의(302)는 사용자(330)가 데이터베이스 질의를 입력한 사용자 인터페이스(328)로부터 수신될 수 있다. 일부 예에서, 데이터베이스 질의(302)는 데이터 저장 시스템으로부터 수신되거나, 데이터베이스 질의가 인터넷과 같은 컴퓨터 네트워크로부터 수신되거나, 데이터베이스 질의가 또 다른 이전에 수신된 데이터베이스 질의에 기초하여 생성된다.
일부 구현예에서, 그래프 생성 컴퓨터 시스템(308)은, 데이터베이스 테이블(326)에 관한 정보로부터 생성되는 데이터베이스 테이블(326)의 버전을 질의 플래닝 컴퓨터 시스템(316)에 제공한다(화살표(332)로 표시됨). 예를 들어, 질의 플래닝 컴퓨터 시스템(316)에 제공되는 데이터베이스 테이블(326)의 버전은, 데이터베이스 테이블보다 크기가 작아서 처리하기 위해 더 적은 컴퓨터 리소스를 필요로 하는 데이터베이스 테이블의 구조적 표현(334)일 수 있다. 데이터베이스 테이블(326)의 구조적 표현(334)은 데이터베이스 테이블에 관한 정보를 포함할 수 있지만, 데이터베이스 테이블의 데이터 중 일부 또는 이의 모두가 없을 수 있다. 예를 들어, 데이터베이스 테이블(326)의 구조적 표현(334)은 데이터베이스 테이블의 컬럼, 로우, 또는 필드와 같은 데이터베이스 테이블의 포맷을 반영하는 포맷을 포함할 수 있다. 데이터베이스 테이블(326)의 구조적 표현(334)은 또한, 데이터에 관한 정보, 예를 들면 데이터베이스 테이블 내의 요소의 데이터 저장 크기, 또는 데이터베이스 테이블 내의 요소의 데이터 유형 등을 포함한다.
그래프 생성 컴퓨터 시스템은 데이터베이스 테이블(326)의 구조적 표현(334) 및 데이터베이스 질의(302)를 질의 플래닝 컴퓨터 시스템(316)에 제공한다(화살표(332)로 표시됨). 질의 플래닝 컴퓨터 시스템(316)은 질의 플랜 생성기(318)를 실행하고, 이러한 질의 플랜 생성기(318)는 데이터베이스 테이블(326)을 통해 데이터베이스 질의(302)를 실행하기 위해 최적화된 질의 플랜을 생성한다. 데이터베이스 테이블(326)의 구조적 표현(334)은 데이터베이스 테이블(326) 그 자체에 의해 제공될 정보와 동일한 정보로서 질의 플랜 생성기(318)에 의해 이용되는 정보를 제공하며, 예를 들면 데이터 크기, 데이터 유형, 및 데이터베이스 테이블에 포함된 데이터에 관한 기타 다른 정보를 제공한다. 일부 구현예에서, 데이터베이스 테이블(326)의 구조적 표현(334)은, 데이터 룩업 및 검색(retrieval)을 최적화하는데 이용되는 데이터 요소의 인덱스를 포함한다. 질의 플랜 생성기(318)는 인덱스화된 데이터베이스 테이블(326)로부터 데이터 요소를 식별하고 검색하는 속도를 계산하기 위해 이러한 인덱스를 이용할 수 있다.
그래프 생성 컴퓨터 시스템(308)은 질의 플래닝 컴퓨터 시스템(316)으로부터 질의 플랜(314)을 수신한다. 질의 플랜(314)은 데이터베이스 테이블(326)을 통해 데이터베이스 질의(302)를 실행하는데 이용될 수 있는 데이터베이스 동작의 배열을 기술한다. 예를 들어, 질의 플랜(314)에서의 동작은 데이터 흐름 그래프(312)의 노드에 대응할 수 있다. 질의 플랜(314)은 또한, 질의 플랜에서의 동작에 의해 이용되는 데이터 유형에 관한 정보를 포함할 수 있다. 예를 들어, 질의 플랜에서의 동작은 파라미터를 가질 수 있고, 이러한 파라미터의 데이터 유형이 질의 플랜에서 기술될 수 있다.
일단 생성되면, 질의 플랜(314)은 그래프 생성 엔진(310)에 의한 데이터 흐름 그래프(312) 생성을 위해 그래프 생성 컴퓨터 시스템(308)에 제공된다. 그래프 생성 엔진(310)은 질의 플랜(314)에 대응하는 데이터 흐름 그래프(312)를 출력한다. 일부 구현예에서, 데이터 흐름 그래프(312)는 질의 플랜에서 기술되는 동작을 나타내는 노드, 및 동작들 간의 데이터 흐름을 나타내는 노드 링크를 구비한다. 실행되도록 데이터베이스 질의를 준비하는 각각의 인스턴스에 대해 데이터 흐름 그래프(312)가 생성되기 때문에, 그래프 생성 엔진(310)은 데이터베이스 질의를 실행하기 위한 실시간 요청에 대응하기에 충분히 신속하게 데이터 흐름 그래프를 생성할 수 있다. 일부 구현예에서, 그래프 생성 엔진(310)은 1초 미만의 기간 내에 질의 플랜으로부터 데이터 흐름 그래프를 생성할 수 있다.
그래프 생성 컴퓨터 시스템(308)은, 그래프 생성 엔진(316)에 의해 생성되는 데이터 흐름 그래프(312)를 데이터 관리 컴퓨터 시스템(304)에 제공한다(화살표(336)로 표시됨). 일부 실시예에서, 그래프 생성 컴퓨터 시스템(308)은 또한, 데이터베이스 관리 컴퓨터 시스템에 의해 이용되도록 데이터베이스 테이블(326)을 준비하고, 준비된 데이터베이스 테이블(338)을 제공한다. 예를 들어, 그래프 생성 컴퓨터 시스템(308)은 데이터베이스 테이블(326)을, 그래프 생성 컴퓨터 시스템(308)에 의해 이용되는 포맷으로부터 데이터베이스 관리 컴퓨터 시스템(304)에 의해 이용되는 포맷으로 변환할 수 있다.
일단 데이터베이스 관리 컴퓨터 시스템(304)에 제공되면, 데이터 흐름 그래프(312)는 실행을 위해 준비된다. 도 4에 도시된 바와 같이, 데이터베이스 관리 컴퓨터 시스템(304)은 데이터베이스 질의의 결과(402)를 생성하기 위해 데이터 흐름 그래프(312)의 동작을 실행하고 데이터베이스 테이블(326)을 이용할 수 있다. 데이터베이스 관리 컴퓨터 시스템(304)은 데이터 흐름 그래프(312)의 하나 이상의 노드들(404a, 404b, 404c)에 데이터베이스 테이블(326)을 제공하고, 그래프 실행 엔진(306)을 이용하여 데이터 흐름 그래프를 실행한다. 그래프 실행 엔진(306)은 데이터 흐름 그래프(312)의 노드들(404a, 404b, 404c)이 나타내는 동작을 수행하고, 이러한 노드들은 하부의 데이터베이스 질의를 실행하기 위한 데이터베이스 동작에 대응한다. 나아가, 노드들 사이의 링크들(408a, 408b, 408c)은 데이터베이스 테이블이 처리될 때 데이터베이스 동작들 사이에서의 데이터 흐름을 나타낸다. 데이터 흐름 그래프(312)는 데이터베이스 질의의 결과(402)를 출력한다.
4. 구조적 표현
도 5는 데이터베이스 테이블 및 이러한 데이터베이스 테이블의 구조적 표현(502)(데이터베이스 테이블로부터의 데이터를 포함하지 않음)의 일례를 나타낸다. 데이터베이스 테이블(500)은 유사하거나 상이한 유형의 데이터를 포함할 수 있는 컬럼(504a-504i)을 가진다. 데이터베이스 테이블(500)은 또한, 각 컬럼에 대응하는 필드를 각각 포함하는 로우(508a-508e)를 가진다. 로우의 각 필드는 대응하는 컬럼의 데이터 유형의 데이터 요소(510a, 510b, 510c)를 포함한다(예를 들면, 문자열, 정수, 부동 소수점 수 등). 나아가, 각각의 로우(508a-508e)는 고유의 데이터 저장 크기(512a-512e)를 갖는다. 예를 들어, 데이터 저장 크기(512a-512e)는, 로우가 메모리와 같은 데이터 저장소에 존재할 때 로우의 데이터 요소에 의해 이용되는 저장 공간의 양일 수 있다.
(도 3에 도시된 바와 같이 그래프 생성 컴퓨터 시스템(308)에 의해 생성되는) 데이터베이스 테이블(500)의 구조적 표현(502)은, 데이터베이스 테이블과 동일한 컬럼(514a-514i)을 갖고, 원래의 컬럼(504a-504i)과 동일한 데이터 유형을 포함한다. 데이터베이스 테이블(500)의 구조적 표현(502)은 또한 데이터베이스 테이블의 로우(508a-508e)에 대응하는 로우(518a-518e)를 갖는다. 그러나, 이러한 로우(518a-518e)는 데이터베이스 테이블(500)로부터의 데이터 요소(510a, 510b, 510c)를 포함하지 않는다. 각각의 로우(518a-518e)는 데이터 저장 크기 값(520a-520e)과 연관된다. 데이터베이스 테이블(500)에서 로우의 데이터 저장 크기(512a-512e)는 개별적인 데이터 요소(510a, 510b, 510c)의 데이터 저장 크기로부터 계산될 수 있지만, 각각의 로우(518a-518e)의 데이터 저장 크기 값(520a-520e)은 데이터베이스 테이블의 구조적 표현(502)에서 각각의 로우와 함께 저장되는 데이터 요소일 수 있다. 데이터베이스 테이블(500)의 구조적 표현(502)의 전체 데이터 저장 크기는, 데이터베이스 테이블의 전체 데이터 저장 크기의 작은 부분일 수 있는데, 이는 데이터베이스 테이블의 구조적 표현의 필드(522a, 522b, 522c)에 데이터베이스 테이블의 필드로부터의 데이터 요소(510a, 510b, 510c)가 없기 때문이다. 일부 구현예에서, 데이터베이스 테이블(500)의 구조적 표현(502)은 데이터베이스 테이블로부터의 일부 데이터 요소를 보유할 수 있고, 예를 들면 데이터베이스 테이블의 구조적 표현은 키 값(524, 526)에 대응하는 데이터 요소, 또는 데이터베이스 테이블의 구조, 조직화, 또는 포맷에서 이용되는 기타 다른 데이터 요소를 보유할 수 있다. 일부 구현예에서, 데이터베이스 테이블(500)의 구조적 표현(502)은 인덱스, 또는 데이터 검색에서 이용되는 정보를 제공하는 기타 다른 데이터 구조를 포함할 수 있다. 일부 구현예에서, 데이터베이스 테이블(500)의 구조적 표현(502)은 데이터베이스 테이블에 포함되는 데이터에 관한 기타 다른 통계치를 포함할 수 있다.
5. 펑션 호출
일부 구현예에서는 도 6에 도시된 바와 같이, 맞춤형(custom) 그래프 펑션(602)이 데이터베이스 질의(604)에 내장될 수 있다. 예를 들어, 맞춤형 그래프 펑션(602)은, 데이터 흐름 그래프의 실행 중에 데이터 흐름 그래프(606)가 수행할 수 있는 동작을 나타낼 수 있다. 맞춤형 그래프 펑션(602)은 데이터베이스 질의(604)의 컨텍스트 내에서 어떠한 기능도 가지지 않을 수 있고, 생성된 데이터 흐름 그래프(606)에 전달되도록 데이터베이스 질의에 위치된다. 예를 들어, 맞춤형 그래프 펑션(602)은 데이터 흐름 그래프로 변환되도록 준비하기 위해 데이터베이스 질의(604)에 부가될 수 있지만, 기존의 데이터베이스 질의 중 일부를 대체하거나 증가시킬 수 있다. 나아가, 질의 플랜 생성기는 맞춤형 그래프 펑션(602)의 기능에 관한 정보를 가지지 않을 수 있다. 맞춤형 그래프 펑션(602)은 데이터베이스 질의(604)의 언어로 어떠한 동등한 펑션도 갖지 않는 펑션일 수 있다. 일부 구현예에서, 질의 플랜 생성기는 맞춤형 그래프 펑션(602)에 대한 입력 데이터 유형 또는 출력 데이터 유형을 인식할 수 있다. 데이터 흐름 그래프(606)가 생성될 때(608), 맞춤형 그래프 펑션(602)은 데이터 흐름 그래프의 노드(610)로 동작할 수 있다.
일부 구현예에서, 맞춤형 그래프 펑션(602)은 특정한 포맷 또는 맞춤형 포맷의 데이터에 액세스하기 위해 이용되는 펑션일 수 있거나, 맞춤형 그래프 펑션은 정규 표현식 또는 패턴 매칭 표현식을 실행하기 위해 이용되는 펑션일 수 있거나, 맞춤형 그래프 펑션은 사용자, 예를 들어 데이터베이스 관리 컴퓨터 시스템의 사용자에 의해 구현되는 펑션일 수 있다.
6. 연합형 질의
일부 구현예에서, 질의 플랜 생성기(예를 들면, 도 3에 도시된 질의 플랜 생성기(318))는 복수의 데이터 소스 및/또는 복수의 유형의 데이터 소스로부터 획득되는 입력 데이터 상에서 동작하도록 구성되는 데이터베이스 질의 상에서 동작할 수 있다. 예를 들어, 데이터베이스 질의는 복수의 데이터베이스 테이블 상에서 동작하도록 구성될 수 있고, 데이터베이스 테이블은, 상이한 유형이면서 상이한 내부 기능을 갖는 데이터베이스에 속할 수 있다. 또한, 데이터베이스 질의는 기타 다른 데이터 소스에서 액세스가능한 데이터 상에서 동작하도록 구성될 수 있고, 예를 들면 복수의 데이터 파일, 복수의 네트워크 소켓, 기타 다른 데이터 흐름 그래프의 복수의 출력, 또는 데이터 소스의 이러한 유형 또는 데이터베이스 질의를 이용하여 액세스될 수 있는 데이터 소스의 다른 유형의 임의의 조합 상에서 동작하도록 구성될 수 있다. 그래프 생성 엔진이 질의 플랜으로부터 데이터 흐름 그래프를 생성할 때, 결과적인 데이터 흐름 그래프는, 데이터 소스의 수와 각각의 유형에 따라, 각각의 데이터 소스의 특성에 기초하여 데이터 소스를 나타내는 각각의 입력에 액세스하도록 최적화될 수 있다.
도 7은 그래프 생성 엔진(908) 및 그래프 최적화기(704)를 포함하는 그래프 생성 컴퓨터 시스템(706)을 나타낸다. 그래프 생성 컴퓨터 시스템(706)은 하나 이상의 데이터베이스 테이블(726a, 726b)을 수신한다. 예를 들어, 그래프 생성 컴퓨터 시스템(706)은, 하나 이상의 데이터베이스 컴퓨터 시스템, 예컨대 데이터 저장 시스템(예를 들면, 하드 드라이브, 광학 디스크 등)에 데이터베이스(722)를 가진 데이터베이스 컴퓨터 시스템(720)으로부터 데이터베이스 테이블(726a, 726b)을 수신할 수 있다. 그래프 생성 컴퓨터 시스템(706)은 또한, 데이터베이스 테이블(726a, 726b)에 적용될 데이터베이스 질의(702)를 수신한다. 예를 들어, 데이터베이스 질의(702)는 사용자 인터페이스로부터 수신될 수 있거나, 데이터베이스 질의(702)는 데이터 저장 시스템으로부터 수신될 수 있거나, 데이터베이스 질의는 인터넷과 같은 컴퓨터 네트워크로부터 수신될 수 있거나, 또는 데이터베이스 질의는 또 다른 이전에 수신된 데이터베이스 질의에 기초하여 생성될 수 있다.
그래프 생성 컴퓨터 시스템(706)은 데이터베이스 테이블(726a, 726b)의 버전(734a, 734b)을 질의 플래닝 컴퓨터 시스템(746)에 제공한다(화살표(932)로 표시됨). 일부 구현예에서, 데이터베이스 테이블(726a, 726b)의 버전(734a, 734b)은 데이터베이스 테이블(726a, 726b) 자체이다. 일부 예에서, 데이터베이스 테이블(726a, 726b)의 버전(734a, 734b)은 데이터베이스 테이블(726a, 726b)의 구조적 표현이다. 예를 들면, 데이터베이스 테이블(726a, 726b)의 버전(734a, 734b)은 도 5에 도시된 데이터베이스 테이블(500)의 구조적 표현(502)과 동일한 방식으로 포맷화된 구조적 표현일 수 있다.
그래프 생성 컴퓨터 시스템(706)은 데이터베이스 질의(702) 및 데이터베이스 테이블(726a, 726b)의 버전(734a, 734b)을 질의 플래닝 컴퓨터 시스템(746)에 제공한다(화살표(932)로 표시됨). 질의 플래닝 컴퓨터 시스템(746)은 질의 플랜 생성기(748)를 실행하고, 이러한 질의 플랜 생성기(748)는 데이터베이스 테이블(726a, 726b)을 통해 데이터베이스 질의(702)를 실행하기 위한 질의 플랜(714)을 생성한다. 일부 구현예에서, 데이터베이스 테이블(726a, 726b)의 버전(734a, 734b)이 데이터베이스 테이블(726a, 726b)의 구조적 표현인 경우, 이러한 구조적 표현은 데이터베이스 테이블(726a, 726b)에 의해 공급될 정보와 동일한 정보로서 질의 플랜 생성기(748)에 의해 이용되는 정보를 공급한다.
그래프 생성 컴퓨터 시스템(706)은 질의 플래닝 컴퓨터 시스템(746)으로부터 질의 플랜(714)을 수신한다. 도 3에 도시된 질의 플랜(314)과 마찬가지로, 이러한 질의 플랜(714)은 데이터베이스 테이블(726a, 726b)을 통해 데이터베이스 질의(702)를 실행하기 위해 이용될 수 있는 데이터베이스 동작의 배열을 기술한다. 그래프 생성 컴퓨터 시스템(706)은 입력으로서 질의 플랜(714)을 이용하여 그래프 생성 엔진(908)을 실행한다. 그래프 생성 엔진(908)은 질의 플랜(714)의 컨텐츠에 기초하여 데이터 흐름 그래프(716)를 생성한다. 일부 구현예에서, 데이터 흐름 그래프(716)는 질의 플랜(714)에서 기술되는 동작들을 나타내는 노드, 및 이러한 동작들 간의 데이터 흐름을 나타내는 노드 링크를 갖는다.
데이터 흐름 그래프(716)는 그래프 최적화기(704)에 의해 최적화된 데이터 흐름 그래프(718)로 변환될 수 있다. 일부 구현예에서 데이터 흐름 그래프(716)는, 질의 플랜(714)에 의해 규정되는 동작에 대응하는 동작을 수행하도록 컴퓨터 시스템(예를 들어, 데이터베이스 관리 컴퓨터 시스템(744))에 의해 실행될 수 있다. 데이터 흐름 그래프(716)에 의해 수행되는 동작 중 일부는 여분의(redundant) 동작일 수 있고, 제거되거나 다른 동작과 통합될 수 있다. 예를 들어, 데이터 흐름 그래프(716)는, 컴포넌트의 그룹과 동일한 동작을 수행하는 단일한 컴포넌트로 병합될 수 있는 컴포넌트의 그룹을 포함할 수 있다. 그래프 최적화기(704)는 데이터 흐름 그래프(716)를 분석하고, 데이터 흐름 그래프를 변경하도록, 예를 들면 여분의 컴포넌트를 제거하고, 컴포넌트를 병합하며, 또는 데이터 흐름 그래프(716) 내의 컴포넌트의 수를 줄이도록 최적화를 수행함으로써, 최적화된 데이터 흐름 그래프(718)를 생성한다. 최적화된 데이터 흐름 그래프(718)가 생성된 후에, 최적화된 데이터 흐름 그래프(718)는 실행을 위해 데이터베이스 관리 컴퓨터 시스템(744)에 제공될 수 있다.
일부 구현예에서, 데이터 흐름 그래프(716) 및/또는 최적화된 데이터 흐름 그래프(718)는 데이터 흐름 그래프(716)의 다른 컴포넌트에 질의 플랜 생성기(748)의 출력(예를 들면, 질의 플랜(714))을 제공하도록 구성되는 컴포넌트를 포함한다. 예를 들어, 데이터 흐름 그래프(716) 또는 최적화된 데이터 흐름 그래프(718)는 실행 중에("온 더 플라이(on the fly)"로) 데이터베이스 질의(702)를 수신할 수 있고, 따라서 데이터 흐름 그래프(716) 또는 최적화된 데이터 흐름 그래프(178)의 컴포넌트 또한, 실행 중에, 질의 플랜 생성기(748)로부터의 데이터베이스 질의(702)에 대응하는 질의 플랜(714)을 요청할 수 있다. 그 다음에, 질의 플랜 생성기(748)의 출력을 제공하는 컴포넌트는 데이터 흐름 그래프(718)의 다른 컴포넌트에 질의 플랜(714)을 제공할 수 있다.
일부 구현예에서, 그래프 최적화기(704)는 최적화된 데이터 흐름 그래프(718)를 생성할 때 데이터 흐름 그래프(176)에서의 컴포넌트의 수를 증가시킬 수 있다. 예를 들어 데이터 흐름 그래프(716)는, 복잡한 컴포넌트가 보다 효율적인 컴포넌트의 그룹으로 대체되는 경우 실행 시에 보다 신속하거나 보다 효율적으로 동작할 수 있다.
일부 구현예에서, 그래프 생성 컴퓨터 시스템(706)은 질의 플랜(714) 상에서 동작하는 질의 플랜 최적화기를 포함하고, 질의 플랜(714)은 데이터 흐름 그래프로 변환되기 전에 최적화된다.
도 8은 질의 플랜(806)으로부터 생성되는 데이터 흐름 그래프(802) 및 최적화된 데이터 흐름 그래프(804)의 일례를 나타낸다. 질의 플랜(806)은 다음의 SQL 질의를 나타낸다:
Figure pct00001
이러한 SQL 질의는 "federated_transactions"이라 지칭되는 데이터베이스 테이블로부터 레코드를 선택하고, 이들을 그룹핑(group)하며 오더링(order)한다. 질의 플랜(806)은 질의를 실행하기 위해 수행될 수 있는 3개의 동작을 기술한다. 질의 플랜(806)의 동작은 데이터 선택 동작(810), 소트 동작(812), 및 그룹 집합화 동작(814)이라 지칭되는 데이터 요약 동작이다. 이러한 동작은 동작에 대략적으로 대응하는 컴포넌트를 갖는 데이터 흐름 그래프(802)로 전환될 수 있다. 데이터 흐름 그래프(802)는 데이터 선택 컴포넌트(820), 소트 컴포넌트(822), 롤업 컴포넌트(824)라 지칭되는 데이터 요약 컴포넌트, 및 출력 컴포넌트(826)를 가진다.
데이터 선택 컴포넌트(820)는 데이터 소스를 나타낸다. 예를 들어, 데이터 선택 컴포넌트(820)는 데이터베이스 테이블, 제2 데이터 흐름 그래프의 출력, 네트워크 소켓, 또는 기타 다른 데이터 소스일 수 있다.
출력 컴포넌트(826)는 데이터 목적지를 나타낸다. 예를 들어, 출력 컴포넌트(826)는 데이터 파일, 데이터베이스 테이블, 제2 데이터 흐름 그래프로의 입력, 네트워크 소켓, 또는 출력 데이터에 대한 기타 다른 목적지 중 임의의 하나일 수 있다.
데이터 선택 컴포넌트(820)는 실행가능한 기능을 갖는 데이터의 소스를 나타낼 수 있다. 예를 들어, 데이터 선택 컴포넌트(820)는 데이터베이스 질의를 실행할 수 있는 데이터베이스에서의 데이터베이스 테이블을 나타낼 수 있고, 위에 나타난 SQL 질의와 같은 실행된 데이터베이스 질의에 기초하여 데이터를 반환한다. 데이터 흐름 그래프(802)는 데이터베이스 테이블을 저장하는 데이터베이스와 연관되는 기능에 액세스할 수 있다. 예를 들어, 데이터 흐름 그래프(802)는 실행가능한 기능과 연관되는 동작을 수행하기 위한 요청을 데이터베이스에 전송할 수 있는 컴포넌트를 가질 수 있다.
일부 구현예에서, SQL 질의는 데이터베이스에 속하는 데이터 상에서 동작한다. 예를 들어, 데이터 선택 컴포넌트(820)가 나타내는 "federated_transactions" 데이터베이스 테이블은 소트 컴포넌트(822) 및 롤업 컴포넌트(824)에 의해 수행되는 것과 동일한 기능을 수행할 수 있는 데이터베이스에 속할 수 있다. 최적화된 데이터 흐름 그래프(804)는 이러한 내장형 기능을 활용하는 질의 플랜(806)으로부터 생성될 수 있다. 최적화된 데이터 흐름 그래프(804)는 단지 2개의 컴포넌트, 즉 롤업 기능을 포함하는 데이터 선택 컴포넌트(830), 및 출력 컴포넌트(832)를 갖는다.
최적화된 데이터 흐름 그래프(804)는 질의 플랜(806)으로부터 직접 생성되는 데이터 흐름 그래프(802)보다 적은 컴포넌트를 가질 수 있고, 최적화된 데이터 흐름 그래프(804)는 또한 보다 효율적으로 동작할 수 있다. 예를 들어, 도시된 예에서, 데이터 흐름 그래프(802)는 "federated_transactions" 데이터베이스 테이블로부터 796,096개의 레코드를 선택하고, 이러한 레코드는 일단 롤업 동작이 완료되면 그 수가 3,754개인 레코드로 감소된다. 그러나, 최적화된 데이터 흐름 그래프(804)는 796,096개의 레코드의 전체 수를 선택 및 처리하는 단계를 취할 필요가 없는데, 이는 이미 소트되고 요약된 3,754개의 레코드를 획득하기 때문이다.
일부 구현예에서 이러한 최적화는, 질의 플랜(806) 중 일부를, 최적화된 데이터 흐름 그래프(804)에 의해 이용되는 기능을 갖는 데이터 소스에 적합한 질의로 역으로 전환함으로써 수행된다. 도 9는 최적화된 데이터 흐름 그래프(804)의 데이터 선택 컴포넌트(830)와 연관되는 사용자 인터페이스(940)의 일례를 나타낸다. 사용자 인터페이스(940)는 데이터 선택 컴포넌트(830)가 SQL 질의(942)를 이용하여 구성될 수 있게 한다. 데이터 선택 컴포넌트(830)와 연관되는 데이터 흐름 그래프(804)가 실행될 때, SQL 질의(942)는 데이터 선택 컴포넌트(830)가 나타내는 데이터의 소스에 전달되고, 데이터 선택 컴포넌트(830)와 연관되는 데이터베이스 기능에 의해 실행된다. 예를 들어, 데이터 선택 컴포넌트(830)가 데이터베이스 컴퓨터 시스템(720)(도 7)에 의해 저장되는 데이터베이스(722)와 연관되는 경우, SQL 질의(942)는 실행을 위해 데이터베이스 컴퓨터 시스템(720)에 전달된다. 이런 방식으로, 데이터 선택 컴포넌트(830)는 SQL 질의(942)를 이용하여 데이터베이스(722)와 연관되는 기능에 액세스할 수 있다.
입력으로서 복수의 데이터 소스를 갖는 질의 플랜을 나타내는 데이터 흐름 그래프는 복수의 입력의 특성에 기초하여 최적화될 수 있다. 도 10은 질의 플랜(1010)이 최적화된 데이터 흐름 그래프(1030)로 전환 과정을 거치는 것을 나타낸다. 질의 플랜(1010)은 연합형 질의를 나타내고, 입력으로서 2개의 데이터베이스 테이블(1012, 1014)을 가진다. 질의 플랜은 데이터 흐름 그래프(1020)로 변환될 수 있다(1016). 예를 들어, 도 7에 도시된 그래프 생성 엔진(908)이 이러한 변환을 수행할 수 있다.
데이터 흐름 그래프(1020)는 데이터베이스 테이블(1012) 중 하나를 나타내는 데이터 선택 컴포넌트(1022) 및 나머지 데이터베이스 테이블(1014)을 나타내는 데이터 컴포넌트(1026)를 포함한다. 데이터 선택 컴포넌트(1022)는 데이터를 롤업 컴포넌트(1024)로 출력하고, 데이터 컴포넌트(1026)는 데이터를 제2 롤업 컴포넌트(1028)로 출력한다. 데이터 선택 컴포넌트(1022)는, 데이터 흐름 그래프(1020) 내에서 롤업 컴포넌트(1024)가 수행하는 것과 동일한 동작을 수행하기 위해 이용될 수 있는 내부 기능을 갖는다. 예를 들어, 데이터 선택 컴포넌트(1022)는 실행가능한 기능을 갖는 데이터베이스 시스템을 나타낼 수 있고, 제공되는 데이터 상에서 자신의 동작을 수행할 수 있다. 예를 들어, 데이터 선택 컴포넌트(1022)는 도 7에 도시된 데이터베이스(722)와 같은 데이터베이스 상에서 액세스가능한 데이터베이스 테이블을 나타낼 수 있다.
데이터 컴포넌트(1026)는 데이터 흐름 그래프(1020) 내에서 롤업 컴포넌트(1028)가 수행하는 것과 동일한 동작을 수행하는데 이용될 수 있는 기능을 가지지 않는다. 예를 들어, 데이터 컴포넌트(1026)는 실행가능한 기능을 포함하지 않는 데이터 파일과 같은 엔티티일 수 있다.
데이터 흐름 그래프(1020)는 (예를 들어, 도 7에 도시된 그래프 최적화기(704)와 같은 그래프 최적화기에 의해) 최적화된 데이터 흐름 그래프(1030)로 변환될 수 있고(1018), 이러한 최적화된 데이터 흐름 그래프에서는 데이터 선택 컴포넌트(1022) 및 데이터 컴포넌트(1026)의 내부 기능에 기초하여 일부 컴포넌트가 제거된다. 데이터 선택 컴포넌트(1022)가 롤업 기능을 포함하기 때문에, 데이터 선택 컴포넌트(1022) 및 이와 연관된 롤업 컴포넌트(1024)는, 그렇지 않은 경우 롤업 컴포넌트(1024)에 의해 수행되는 롤업 동작을 통합하는, 조합된 데이터 선택 컴포넌트(1032)로 병합될 수 있다. 조합된 데이터 선택 컴포넌트(1032)에는, 이러한 조합된 데이터 선택 컴포넌트(1032)로 하여금 최적화된 데이터 흐름 그래프(1030)에 데이터를 제공하기 전에 롤업 동작을 수행하도록 명령하는 데이터베이스 질의가 제공될 수 있다. 예를 들어, 조합된 데이터 선택 컴포넌트(1032)에는 도 8에 도시된 SQL 질의(942)와 같은 데이터베이스 질의가 제공될 수 있다. 데이터 컴포넌트(1026)와 연관되는 롤업 컴포넌트(1028)는 최적화된 데이터 흐름 그래프(1030)에 남아 있게 되는데, 그렇지 않으면 롤업 컴포넌트(1028)에 의해 중복되는 내부 롤업 기능을 데이터 컴포넌트(1026)가 가지지 않기 때문이다.
도 11은 질의 플랜(1110)이 최적화된 데이터 흐름 그래프(1130)로의 전환 과정을 거치는 것을 나타낸다. 질의 플랜(1110)은 연합형 질의를 나타내고 입력으로서 2개의 데이터베이스 테이블(1112, 1114)을 가진다. 질의 플랜은 데이터 흐름 그래프(1120)로 변환될 수 있다(1116). 예를 들어, 도 7에 도시된 그래프 생성 엔진(908)이 이러한 변환을 수행할 수 있다.
데이터 흐름 그래프(1120)는 질의 플랜(1110)의 동작에 대응하는 컴포넌트를 포함한다. 이러한 데이터 흐름 그래프(1120)는 질의 플랜(1110)의 데이터베이스 테이블(1112, 1114)을 나타내는 데이터 소스 컴포넌트(1122, 1124)를 포함하고, 데이터베이스 테이블(1112, 1114)의 데이터를 단일한 데이터 소스로 조합하기 위해 데이터 소스 컴포넌트(1122, 1124)에 의해 제공되는 데이터 상에서 동작하는 조인(join) 컴포넌트(1126)를 더 포함한다.
데이터베이스 테이블(1112, 1114)은 동일한 데이터베이스, 예컨대 도 7에 도시된 데이터베이스(722)에 속할 수 있다. 데이터베이스(722)는 2개의 데이터베이스 테이블(1112, 1114)의 데이터를 단일한 데이터 소스로서, 예컨대 조인 동작의 결과인 단일한 데이터베이스 테이블로서 제공할 수 있는 기능을 가질 수 있다. 그래프 최적화기, 예컨대 도 7에 도시된 그래프 최적화기(704)는 데이터베이스 테이블(1112, 1114)과 연관되는 데이터베이스(722)의 기능을 식별할 수 있고, 데이터 흐름 그래프(1120)의 컴포넌트의 수를 줄임으로써 데이터 흐름 그래프(1120)가 단순화될 수 있는지 여부를 결정할 수 있다. 그래프 최적화기(704)는, 데이터베이스(722)가 데이터베이스 테이블(1112, 1114) 상에서 조인 동작을 수행할 수 있다고 결정할 수 있고, 데이터베이스(722)가 2개의 데이터베이스 테이블(1112, 1114) 상에서 조인 동작을 수행할 때 데이터베이스(722)에 의해 제공되는 데이터를 나타내는 병합된 데이터 소스 컴포넌트(1132)를 포함하는 최적화된 데이터 흐름 그래프(1130)를 생성할 수 있다. 최적화된 데이터 흐름 그래프(1130)는 조인 컴포넌트(1126)를 포함하지 않는데, 조인 컴포넌트(1125)가 나타내는 기능이 그 대신 데이터베이스(722)에 의해 수행되기 때문이다.
도 12는 그래프 생성 컴퓨터 시스템(706)(도 7에 도시됨)의 예시적인 동작을 나타내는 흐름도(1200)이다. 단계(1202)에서, 그래프 생성 컴퓨터 시스템은 질의 플랜, 예를 들면 질의 플래닝 컴퓨터 시스템의 질의 플랜 생성기에 의해 생성되는 질의 플랜을 수신한다. 질의 플랜은 데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타낸다. 단계(1204)에서, 그래프 생성 컴퓨터 시스템은 그래프 생성 엔진을 이용하여, 질의 플랜에서 기술되는 동작에 기초하여 질의 플랜으로부터 데이터 그래프를 생성하게 된다. 결과적인 데이터 흐름 그래프는 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 노드를 포함하고, 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함한다. 단계(1206)에서, 그래프 생성 컴퓨터 시스템은 데이터 소스를 나타내는 입력의 특성에 기초하여 데이터 흐름 그래프의 컴포넌트를 변경한다. 이러한 컴포넌트는 데이터 흐름 그래프를 최적화하도록, 예를 들면 데이터 흐름 그래프의 컴포넌트의 수를 줄이도록 변경될 수 있다.
전술한 데이터베이스 질의 관리 접근법은 컴퓨터 상에서 실행하기 위한 소프트웨어를 이용하여 구현될 수 있다. 예컨대, 소프트웨어는 하나 이상의 프로세서, 하나 이상의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함), 하나 이상의 입력 장치 또는 입력 포트, 및 하나 이상의 출력 장치 또는 출력 포트를 각각 포함하는, 하나 이상의 프로그래밍 되거나 또는 프로그래밍 가능한 컴퓨터 시스템(분산형, 클라이언트/서버형, 또는 그리드형 등의 다양한 아키텍처로 될 수 있음) 상에서 실행되는 하나 이상의 컴퓨터 프로그램에서의 프로시저(procedure)를 형성한다. 소프트웨어는 예컨대 연산 그래프의 설계 및 구성에 관련된 다른 서비스를 제공하는 대형 프로그램의 하나 이상의 모듈을 형성할 수 있다. 그래프의 노드 및 요소는 컴퓨터 판독가능 매체에 저장된 데이터 구조 또는 데이터 리포지토리 내에 저장된 데이터 모델에 부합하는 다른 조직화된 데이터로서 구현될 수 있다.
소프트웨어는 범용 또는 전용의 프로그래밍 가능한 컴퓨터로 판독가능한 CD-ROM과 같은 저장 매체에 제공되거나, 네트워크의 통신 매체를 통하여 이러한 소프트웨어가 실행되는 컴퓨터로 전달(전파 신호로 부호화된 상태로)될 수 있다. 모든 기능은 전용의 컴퓨터상에서 수행될 수도 있고, 또는 코프로세서와 같은 전용의 하드웨어를 사용해서 수행될 수도 있다. 소프트웨어는 해당 소프트웨어에 의해 특정된 연산의 상이한 부분이 상이한 컴퓨터에 의해 수행되는 분산형 방식으로 구현되어도 된다. 이러한 각각의 컴퓨터 프로그램은, 저장 매체 또는 저장 장치가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터로 하여금 본 명세서에서 설명된 프로시저를 수행하도록 구성하고 동작시키기 위한, 범용 또는 전용의 프로그래밍 가능한 컴퓨터에 의해 판독가능한 저장 매체 또는 저장 장치(예컨대, 솔리드 스테이트 메모리 또는 매체, 또는 자기 또는 광학 매체)에 저장되거나 다운로드되는 것이 바람직하다. 본 발명의 시스템은 컴퓨터 프로그램을 이용하여 구성된 컴퓨터 판독가능 저장 매체로서 구현될 수도 있으며, 이와 같이 구성된 저장 매체는 컴퓨터 시스템을 본 명세서에 설명된 기능의 수행을 위해 특정되고 미리 정해진 방식으로 동작하게 한다.
본 발명에 대하여 많은 실시예를 설명하였다. 그렇지만, 본 발명의 사상 및 범위를 벗어남이 없이 다양한 변형이 가능하다는 점을 이해할 것이다. 예컨대, 전술한 단계들 중 몇몇은 반드시 그 순서대로 수행되지 않아도 되며, 설명된 것과 다른 순서로 수행되어도 된다.
이상의 설명은 본 발명의 범위를 제한하기 위한 것이 아니라 예시하기 위한 것이며, 본 발명의 범위는 첨부된 청구범위에 의해 정해진다는 점을 이해할 것이다. 예컨대, 전술한 많은 기능적 단계들은 전체적인 처리에 실질적인 영향을 미치지 않으면서 다른 순서로 수행되어도 된다. 다른 실시예가 이하의 청구항들의 범위에 포함된다.

Claims (21)

  1. 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법으로서,
    데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하는 단계;
    상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 단계로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 컴포넌트를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프 생성 단계; 및
    상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계
    를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  2. 제1항에 있어서,
    상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 상기 데이터 흐름 그래프의 적어도 하나의 컴포넌트를 제거하는 단계를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  3. 제2항에 있어서,
    상기 데이터 흐름 그래프의 컴포넌트는 상기 질의 플랜이 나타내는 동작에 대응하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  4. 제2항에 있어서,
    상기 적어도 하나의 동작은, 상기 적어도 하나의 입력이 나타내는 상기 데이터 소스와 연관되는 실행가능한 기능에 의해 수행될 수 있는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  5. 제1항에 있어서,
    상기 적어도 하나의 입력의 특성은, 상기 입력이 나타내는 상기 데이터 소스와 연관되는 실행가능한 기능을 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  6. 제5항에 있어서,
    상기 실행가능한 기능은 소트(sort) 기능을 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  7. 제1항에 있어서,
    상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 제1 입력에 적용가능한 제1 동작을 나타내는 제1 컴포넌트와 제2 입력에 적용가능한 제2 동작을 나타내는 제2 컴포넌트를 단일 컴포넌트로 병합하는 단계를 포함하고, 상기 단일 컴포넌트는 상기 제1 동작 및 상기 제2 동작에 대응하는 단일한 동작을 나타내며, 상기 단일한 동작은 상기 제1 입력 및 상기 제2 입력에 적용가능한, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  8. 제1항에 있어서,
    상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 제1 데이터 소스를 나타내는 제1 입력 컴포넌트와 제2 데이터 소스를 나타내는 제2 입력 컴포넌트를 단일 입력 컴포넌트로 병합하는 단계를 포함하고, 상기 단일 입력 컴포넌트는 상기 제1 데이터 소스 및 상기 제2 데이터 소스의 데이터에 액세스하기 위한 동작을 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  9. 제1항에 있어서,
    상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 단계는, 제1 입력에 적용가능한 제1 동작을 나타내는 제1 컴포넌트를 제거하고 상기 제1 입력에 제2 컴포넌트를 적용하는 단계를 포함하고, 상기 제2 컴포넌트는 상기 제1 동작과 동일한 기능에 대응하는 제2 동작을 나타내며, 상기 제2 동작은 제2 입력에 적용가능한, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  10. 제1항에 있어서,
    적어도 하나의 상기 데이터 소스를 나타내는 컴포넌트와 연관되는 데이터베이스와 연관되는 기능을 식별하고, 상기 식별에 기초하여 상기 컴포넌트로 하여금 상기 데이터베이스에 데이터베이스 질의를 제공하도록 구성하는 단계를 더 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  11. 제1항에 있어서,
    데이터세트를 나타내는 상기 적어도 하나의 입력은 데이터 파일, 데이터베이스 테이블, 제2 데이터 흐름 그래프의 출력 및 네트워크 소켓 중 적어도 하나를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  12. 제1항에 있어서,
    상기 데이터 흐름 그래프의 출력은 데이터 파일, 데이터베이스 테이블, 제2 데이터 흐름 그래프 및 네트워크 소켓 중 적어도 하나에 할당되는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  13. 제1항에 있어서,
    상기 데이터베이스 질의는 SQL 질의를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  14. 제1항에 있어서,
    상기 데이터 흐름 그래프는 상기 플랜 생성기로부터 출력을 수신하도록 구성되는 컴포넌트를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  15. 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체로서, 상기 컴퓨터 프로그램은 컴퓨터로 하여금:
    데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하는 것;
    상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 것으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 컴포넌트를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프를 생성하는 것; 및
    상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 것
    을 수행하도록 하기 위한 명령을 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체.
  16. 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템으로서,
    데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하기 위한 수단;
    상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하기 위한 수단으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 컴포넌트를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프 생성 수단; 및
    상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하기 위한 수단
    을 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템.
  17. 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템으로서, 컴퓨터 시스템을 포함하고, 상기 컴퓨터 시스템은:
    데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 플랜 생성기로부터 수신하는 것;
    상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 것으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 컴포넌트를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프를 생성하는 것; 및
    상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 것
    을 수행하도록 구성되는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템.
  18. 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템으로서,
    데이터 소스를 나타내는 적어도 하나의 입력 상에서 데이터베이스 질의를 실행하기 위한 동작을 나타내는 질의 플랜을 제공하는 플랜 생성기와 통신하는 인터페이스; 및
    프로세서를 포함하고,
    상기 프로세서는:
    상기 플랜 생성기에 의해 제공되는 상기 질의 플랜으로부터 데이터 흐름 그래프를 생성하는 것으로서, 상기 데이터 흐름 그래프는 상기 질의 플랜이 나타내는 적어도 하나의 동작을 나타내는 적어도 하나의 컴포넌트를 포함하고, 상기 질의 플랜과 연관되는 적어도 하나의 데이터 흐름을 나타내는 적어도 하나의 링크를 포함하는, 데이터 흐름 그래프를 생성하는 것; 및
    상기 데이터 소스를 나타내는 상기 적어도 하나의 입력의 적어도 하나의 특성에 기초하여 상기 데이터 흐름 그래프의 하나 이상의 컴포넌트를 변경하는 것
    을 수행하도록 구성되는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하기 위한 시스템.
  19. 제1항에 있어서,
    상기 데이터 흐름 그래프의 상기 하나 이상의 컴포넌트를 변경함으로써 제2 데이터 흐름 그래프를 생성하는 단계를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  20. 제1항에 있어서,
    상기 데이터 흐름 그래프는 상기 질의 플랜에 대응하는 동작을 나타내는 컴포넌트를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
  21. 제1항에 있어서,
    상기 변경하는 단계는:
    상기 질의 플랜이 나타내는 제1 동작을 식별하는 단계로서, 상기 제1 동작은 상기 적어도 하나의 입력 중 하나의 입력이 나타내는 제1 데이터 소스에 의해 수행되는, 제1 동작 식별 단계; 및
    상기 제1 동작을 나타내는 노드를, 상기 제1 동작의 출력을 나타내는 노드로 대체하는 단계
    를 포함하는, 데이터베이스 질의를 나타내는 데이터 흐름 그래프를 생성하는 방법.
KR1020137019988A 2011-05-02 2012-04-30 데이터 질의 관리 KR101915591B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/098,823 US9116955B2 (en) 2011-05-02 2011-05-02 Managing data queries
US13/098,823 2011-05-02
PCT/US2012/035762 WO2012151149A2 (en) 2011-05-02 2012-04-30 Managing data queries

Publications (2)

Publication Number Publication Date
KR20140014123A true KR20140014123A (ko) 2014-02-05
KR101915591B1 KR101915591B1 (ko) 2019-01-07

Family

ID=46124726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137019988A KR101915591B1 (ko) 2011-05-02 2012-04-30 데이터 질의 관리

Country Status (8)

Country Link
US (3) US9116955B2 (ko)
EP (2) EP4216069A1 (ko)
JP (2) JP6133274B2 (ko)
KR (1) KR101915591B1 (ko)
CN (2) CN103562910B (ko)
AU (1) AU2012250970B2 (ko)
CA (3) CA3022050C (ko)
WO (1) WO2012151149A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190131557A (ko) * 2017-03-29 2019-11-26 아브 이니티오 테크놀로지 엘엘시 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법
KR102141640B1 (ko) * 2020-04-13 2020-08-05 주식회사 데이터월드 실시간 네트워크 데이터 관리 방법 및 이를 실행하는 서버

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
KR102031402B1 (ko) 2012-07-24 2019-10-11 아브 이니티오 테크놀로지 엘엘시 데이터 모델에서의 엔티티 매핑
US9880815B2 (en) * 2013-01-22 2018-01-30 Aptitude Software Limited SQL visualizer
US9659043B2 (en) * 2013-02-07 2017-05-23 Enigma Technologies, Inc. Data system and method
US20140280042A1 (en) * 2013-03-13 2014-09-18 Sap Ag Query processing system including data classification
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
CA2941115C (en) 2014-03-14 2023-04-04 Ab Initio Technology Llc Mapping attributes of keyed entities
US9607073B2 (en) * 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US9805079B2 (en) 2014-08-22 2017-10-31 Xcalar, Inc. Executing constant time relational queries against structured and semi-structured data
US10108744B2 (en) * 2014-10-07 2018-10-23 Oracle International Corporation Administrative tool and physical execution plan interface for plug-in architecture of business intelligence platform using data source cartridges
US10353912B2 (en) 2014-10-10 2019-07-16 Salesforce.Com, Inc. Navigation of a data extraction graph of data and metadata from a data repository
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) * 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
CN110149801A (zh) * 2015-05-05 2019-08-20 华为技术有限公司 用于在处理系统中进行数据流图转换的系统和方法
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9378241B1 (en) * 2015-09-18 2016-06-28 Linkedin Corporation Concatenated queries based on graph-query results
US9378239B1 (en) * 2015-09-18 2016-06-28 Linkedin Corporation Verifying graph-based queries
US9378303B1 (en) 2015-09-18 2016-06-28 Linkedin Corporation Representing compound relationships in a graph database
US9535963B1 (en) * 2015-09-18 2017-01-03 Linkedin Corporation Graph-based queries
US9330138B1 (en) 2015-09-18 2016-05-03 Linkedin Corporation Translating queries into graph queries using primitives
US10942922B2 (en) 2015-09-28 2021-03-09 Microsoft Technology Licensing, Llc Generation of data flow from syntax tree
US9514247B1 (en) 2015-10-28 2016-12-06 Linkedin Corporation Message passing in a distributed graph database
US10210236B2 (en) 2015-11-23 2019-02-19 Ab Initio Technology Llc Storing and retrieving data of a data cube
WO2017112654A2 (en) 2015-12-21 2017-06-29 Ab Initio Technology Llc Sub-graph interface generation
WO2017131623A1 (en) * 2016-01-26 2017-08-03 Hewlett Packard Enterprise Development Lp Performing operations on a graph
US10180992B2 (en) 2016-03-01 2019-01-15 Microsoft Technology Licensing, Llc Atomic updating of graph database index structures
CN109219808B (zh) * 2016-06-23 2022-01-18 施耐德电气美国股份有限公司 分布式系统的上下文特征数据驱动的顺序联合查询方法
US10789295B2 (en) 2016-09-28 2020-09-29 Microsoft Technology Licensing, Llc Pattern-based searching of log-based representations of graph databases
US10754859B2 (en) 2016-10-28 2020-08-25 Microsoft Technology Licensing, Llc Encoding edges in graph databases
US11016973B2 (en) * 2016-11-29 2021-05-25 Sap Se Query plan execution engine
US10445321B2 (en) 2017-02-21 2019-10-15 Microsoft Technology Licensing, Llc Multi-tenant distribution of graph database caches
US10540364B2 (en) 2017-05-02 2020-01-21 Home Box Office, Inc. Data delivery architecture for transforming client response data
US11055352B1 (en) * 2017-06-08 2021-07-06 Amazon Technologies, Inc. Engine independent query plan optimization
US10671671B2 (en) 2017-06-09 2020-06-02 Microsoft Technology Licensing, Llc Supporting tuples in log-based representations of graph databases
US10445370B2 (en) 2017-06-09 2019-10-15 Microsoft Technology Licensing, Llc Compound indexes for graph databases
US10628492B2 (en) 2017-07-20 2020-04-21 Microsoft Technology Licensing, Llc Distributed graph database writes
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
US11423031B2 (en) 2018-02-22 2022-08-23 Microsoft Technology Licensing, Llc Standing query creation using store query
US11727059B2 (en) 2018-03-14 2023-08-15 Nec Corporation Retrieval sentence utilization device and retrieval sentence utilization method
US10983997B2 (en) 2018-03-28 2021-04-20 Microsoft Technology Licensing, Llc Path query evaluation in graph databases
US20190370407A1 (en) 2018-05-30 2019-12-05 Ab Initio Technology Llc Systems and methods for dataflow graph optimization
US10922145B2 (en) 2018-09-04 2021-02-16 Target Brands, Inc. Scheduling software jobs having dependencies
JP7242343B2 (ja) * 2019-02-25 2023-03-20 Kddi株式会社 分析装置及び分析方法
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11567995B2 (en) 2019-07-26 2023-01-31 Microsoft Technology Licensing, Llc Branch threading in graph databases
US11113267B2 (en) 2019-09-30 2021-09-07 Microsoft Technology Licensing, Llc Enforcing path consistency in graph database path query evaluation
KR102177064B1 (ko) 2019-11-18 2020-11-10 재단법인대구경북과학기술원 다항 조인 연산자를 이용한 쿼리 처리 방법 및 그 장치
JP2023511631A (ja) * 2020-01-28 2023-03-20 アビニシオ テクノロジー エルエルシー 計算グラフを生成するためのエディタ
US20210318851A1 (en) * 2020-04-09 2021-10-14 Virtualitics, Inc. Systems and Methods for Dataset Merging using Flow Structures
DE112022000886T5 (de) 2021-01-31 2023-12-21 Ab Initio Technology Llc Datenverarbeitungssystem mit manipulation logischer datensatzgruppen
US20230073887A1 (en) * 2021-09-09 2023-03-09 Microsoft Technology Licensing, Llc Standing query to reactive database
WO2023056003A1 (en) 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US20240143590A1 (en) * 2022-10-28 2024-05-02 Microsoft Technology Licensing, Llc Distribution of federated graph queries using schemas

Family Cites Families (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586137A (en) 1982-10-18 1986-04-29 Dresser Industries, Inc. Method for generating variable well logging data composites
JPH01108638A (ja) 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
US5072371A (en) 1989-03-01 1991-12-10 The United States Of America As Represented By The United States Department Of Energy Method for simultaneous overlapped communications between neighboring processors in a multiple
US5121494A (en) 1989-10-05 1992-06-09 Ibm Corporation Joining two database relations on a common field in a parallel relational database field
US5367619A (en) 1990-04-27 1994-11-22 Eaton Corporation Electronic data entry system employing an expert system to facilitate generation of electronic data forms with complex interrelationships between fields and subforms
JPH0816429B2 (ja) 1990-10-16 1996-02-21 トステム株式会社 シャッターの非常時脱出機構
US5347639A (en) 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5632022A (en) 1991-11-13 1997-05-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Encyclopedia of software components
US5313584A (en) 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
JPH05257709A (ja) 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
US5432940A (en) 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5574898A (en) 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
US5446915A (en) 1993-05-25 1995-08-29 Intel Corporation Parallel processing system virtual connection method and apparatus with protection and flow control
US5475842A (en) 1993-08-11 1995-12-12 Xerox Corporation Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution
US5600833A (en) 1993-09-17 1997-02-04 Digital Equipment Corp. Attribute portion based document retrieval system with system query language interface
JP4050339B2 (ja) 1994-04-28 2008-02-20 株式会社東芝 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
US5588150A (en) 1994-09-29 1996-12-24 International Business Machines Corporation Push down optimization in a distributed, multi-database system
US5768564A (en) 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
FI98690C (fi) 1994-10-18 1997-07-25 Nokia Telecommunications Oy Menetelmä alueryhmäpuhelun muodostamiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5734886A (en) 1994-11-16 1998-03-31 Lucent Technologies Inc. Database dependency resolution method and system for identifying related data files
FI98973C (fi) 1994-11-22 1997-09-10 Nokia Telecommunications Oy Menetelmä ryhmätietojen ylläpitämiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5546576A (en) * 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US5619692A (en) 1995-02-17 1997-04-08 International Business Machines Corporation Semantic optimization of query order requirements using order detection by normalization in a query compiler system
FI100215B (fi) 1995-03-17 1997-10-15 Nokia Telecommunications Oy Matkaviestijärjestelmän tilaajatietojen päivittäminen
US5706509A (en) 1995-04-28 1998-01-06 Intel Corporation Application independent record level synchronization
US5678044A (en) 1995-06-02 1997-10-14 Electronic Data Systems Corporation System and method for improved rehosting of software systems
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US5799149A (en) 1996-06-17 1998-08-25 International Business Machines Corporation System partitioning for massively parallel processors
US5870743A (en) 1996-06-24 1999-02-09 Oracle Corporation Method and apparatus for parallelizing operations that create a table
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH10232875A (ja) 1997-02-19 1998-09-02 Hitachi Ltd データベース管理方法および並列データベース管理システム
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5956074A (en) 1997-03-11 1999-09-21 Sclafani; Peter J. Cable television return display unit
JP3155991B2 (ja) 1997-04-09 2001-04-16 日本アイ・ビー・エム株式会社 集約演算実行方法及びコンピュータ・システム
US5956704A (en) 1997-06-05 1999-09-21 Oracle Corporation Method and apparatus for parallelizing operations that insert data into an existing data container
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
US5943666A (en) * 1997-09-15 1999-08-24 International Business Machines Corporation Method and apparatus for optimizing queries across heterogeneous databases
US6077313A (en) 1997-10-22 2000-06-20 Microsoft Corporation Type partitioned dataflow analyses
US6295518B1 (en) 1997-12-09 2001-09-25 Mci Communications Corporation System and method for emulating telecommunications network devices
US6266804B1 (en) 1997-12-23 2001-07-24 Ab Initio Software Corporation Method for analyzing capacity of parallel processing systems
US6625593B1 (en) * 1998-06-29 2003-09-23 International Business Machines Corporation Parallel query optimization strategies for replicated and partitioned tables
US6205465B1 (en) 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6453464B1 (en) 1998-09-03 2002-09-17 Legacyj. Corp., Inc. Method and apparatus for converting COBOL to Java
US6378126B2 (en) 1998-09-29 2002-04-23 International Business Machines Corporation Compilation of embedded language statements in a source code program
JP2000148699A (ja) 1998-11-06 2000-05-30 Nec Corp ネットワークマネージメントシステム
JP4406944B2 (ja) 1998-11-11 2010-02-03 株式会社日立製作所 計算機システム及び問合せに対する処理分散システム
US7047232B1 (en) 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US7080062B1 (en) 1999-05-18 2006-07-18 International Business Machines Corporation Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries
US6560593B1 (en) 1999-07-20 2003-05-06 Computer Associates Think, Inc. Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query
JP4552242B2 (ja) 1999-10-06 2010-09-29 株式会社日立製作所 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US6615203B1 (en) 1999-12-17 2003-09-02 International Business Machines Corporation Method, computer program product, and system for pushdown analysis during query plan generation
US6947934B1 (en) 2000-02-16 2005-09-20 International Business Machines Corporation Aggregate predicates and search in a database management system
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6785668B1 (en) 2000-11-28 2004-08-31 Sas Institute Inc. System and method for data flow analysis of complex data filters
US8412746B2 (en) 2001-05-25 2013-04-02 International Business Machines Corporation Method and system for federated querying of data sources
US6877000B2 (en) 2001-08-22 2005-04-05 International Business Machines Corporation Tool for converting SQL queries into portable ODBC
US6725212B2 (en) 2001-08-31 2004-04-20 International Business Machines Corporation Platform-independent method and system for graphically presenting the evaluation of a query in a database management system
JP2003099441A (ja) 2001-09-21 2003-04-04 Hitachi Ltd データ検索手順探索方法
US6915290B2 (en) * 2001-12-11 2005-07-05 International Business Machines Corporation Database query optimization apparatus and method that represents queries as graphs
US7409474B2 (en) * 2002-06-27 2008-08-05 Broadcom Corporation Method and system for rate adaptation
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7953891B2 (en) 2003-03-18 2011-05-31 Microsoft Corporation Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow
CA2429910A1 (en) 2003-05-27 2004-11-27 Cognos Incorporated System and method of query transformation
US7249120B2 (en) 2003-06-27 2007-07-24 Microsoft Corporation Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables
US20050038788A1 (en) 2003-08-14 2005-02-17 International Business Machines Corporation Annotation security to prevent the divulgence of sensitive information
US20050119999A1 (en) 2003-09-06 2005-06-02 Oracle International Corporation Automatic learning optimizer
WO2005029280A2 (en) 2003-09-19 2005-03-31 Netezza Corporation Performing sequence analysis as a multipart plan storing intermediate results as a relation
US7165063B2 (en) 2003-11-19 2007-01-16 International Business Machines Corporation Context quantifier transformation in XML query rewrite
US7133861B2 (en) 2003-12-04 2006-11-07 International Business Machines Corporation Query access plan rebuilds
US7676453B2 (en) * 2004-04-22 2010-03-09 Oracle International Corporation Partial query caching
US7930432B2 (en) 2004-05-24 2011-04-19 Microsoft Corporation Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow
CN100518079C (zh) * 2004-09-30 2009-07-22 北京航空航天大学 分布式性能数据采集方法
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US7461052B2 (en) * 2004-12-06 2008-12-02 International Business Machines Corporation Abstract query plan
US7890532B2 (en) 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7359922B2 (en) 2004-12-22 2008-04-15 Ianywhere Solutions, Inc. Database system and methodology for generalized order optimization
US20060265362A1 (en) 2005-05-18 2006-11-23 Content Analyst Company, Llc Federated queries and combined text and relational data
US7856523B2 (en) * 2005-06-01 2010-12-21 Microsoft Corporation Random Access Memory (RAM) based Content Addressable Memory (CAM) management
US8935273B2 (en) * 2005-06-23 2015-01-13 International Business Machines Corporation Method of processing and decomposing a multidimensional query against a relational data source
US7584205B2 (en) 2005-06-27 2009-09-01 Ab Initio Technology Llc Aggregating data with complex operations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
CA2519010A1 (en) * 2005-09-13 2007-03-13 Cognos Incorporated Query framework system and method
CA2519001A1 (en) * 2005-09-13 2007-03-13 Cognos Incorporated System and method of data agnostic business intelligence query
US20070067274A1 (en) 2005-09-16 2007-03-22 International Business Machines Corporation Hybrid push-down/pull-up of unions with expensive operations in a federated query processor
WO2007061430A1 (en) 2005-11-22 2007-05-31 Bea Systems, Inc. System and method for translating sql queries into xml query language
US7464084B2 (en) 2006-01-30 2008-12-09 International Business Machines Corporation Method for performing an inexact query transformation in a heterogeneous environment
US7945562B2 (en) 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
EP2021951B1 (de) 2006-06-01 2010-09-01 mediareif Möstl & Reif Kommunikations- und Informationstechnologien OEG Verfahren zum steuern eines relationalen datenbanksystems
EP2527983A3 (en) 2006-08-10 2013-06-12 Ab Initio Technology LLC Distributing services in graph-based computations
JP4872529B2 (ja) 2006-08-22 2012-02-08 株式会社日立製作所 リバースエンジニアリング支援方法
TWI348139B (en) 2006-08-24 2011-09-01 Wintek Corp A lcd scan lines driving method
JP2008158664A (ja) 2006-12-21 2008-07-10 Sony Corp 通信システム、サーバ、通信端末及び通信方法
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8122088B2 (en) 2007-06-28 2012-02-21 International Business Machines Corporation Adding personal note capabilities to text exchange clients
US9424315B2 (en) * 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US20100005077A1 (en) * 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
WO2009039352A1 (en) 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations
US8527976B2 (en) * 2007-11-14 2013-09-03 Nec Laboratories America, Inc. System and method for generating error traces for concurrency bugs
CN101436192B (zh) 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
US9165032B2 (en) * 2007-11-21 2015-10-20 Hewlett-Packard Development Company, L.P. Allocation of resources for concurrent query execution via adaptive segmentation
US20090198703A1 (en) * 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
KR101510355B1 (ko) * 2008-02-26 2015-04-14 아브 이니티오 테크놀로지 엘엘시 데이터 관계의 그래픽 표현
US7933916B2 (en) 2008-02-28 2011-04-26 Microsoft Corporation Querying nonSQL data stores with a SQL-style language
US8537160B2 (en) 2008-03-05 2013-09-17 Microsoft Corporation Generating distributed dataflow graphs
JP2009217405A (ja) 2008-03-07 2009-09-24 Nec Corp ジョブネットワーク自動生成方式及びプログラム
US8538985B2 (en) 2008-03-11 2013-09-17 International Business Machines Corporation Efficient processing of queries in federated database systems
US20100295833A1 (en) 2008-04-11 2010-11-25 Masaaki Nishio Display device and method of driving display device
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
JP5349581B2 (ja) * 2008-04-16 2013-11-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 照会処理視覚化システム、照会処理を視覚化する方法及びコンピュータ・プログラム
US20100057695A1 (en) 2008-08-28 2010-03-04 Microsoft Corporation Post-processing search results on a client computer
US7917463B2 (en) 2008-10-10 2011-03-29 Business.Com, Inc. System and method for data warehousing and analytics on a distributed file system
US20100121868A1 (en) 2008-11-07 2010-05-13 Yann Le Biannic Converting a database query to a multi-dimensional expression query
US9218209B2 (en) * 2008-12-31 2015-12-22 Pivotal Software, Inc. Apparatus and method for parallel processing of a query
US8666966B2 (en) 2009-01-30 2014-03-04 Hewlett-Packard Development Company, L.P. Providing parallel result streams for database queries
JP4659888B2 (ja) * 2009-02-13 2011-03-30 株式会社日立製作所 データベース処理システム、計算機及びデータベース処理方法
CN105843684B (zh) 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
US20100241893A1 (en) * 2009-03-18 2010-09-23 Eric Friedman Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment
US8392398B2 (en) 2009-07-29 2013-03-05 International Business Machines Corporation Query optimization over graph data streams
US9477778B2 (en) 2009-08-21 2016-10-25 Oracle International Corporation XML query optimization with order analysis of XML schema
US9064047B2 (en) 2009-09-24 2015-06-23 International Business Machines Corporation Parallel processing of ETL jobs involving extensible markup language documents
US8620903B2 (en) * 2009-11-04 2013-12-31 Nec Laboratories America, Inc. Database distribution system and methods for scale-out applications
US8688683B2 (en) 2009-11-30 2014-04-01 Business Objects Software Ltd. Query plan reformulation
US8555263B2 (en) 2010-01-20 2013-10-08 Aetna Inc. System and method for code automation
US8204903B2 (en) 2010-02-16 2012-06-19 Microsoft Corporation Expressing and executing semantic queries within a relational database
US9286370B2 (en) 2010-02-24 2016-03-15 International Business Machines Corporation Viewing a dimensional cube as a virtual data source
US8555265B2 (en) 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US9495427B2 (en) * 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
US8326821B2 (en) 2010-08-25 2012-12-04 International Business Machines Corporation Transforming relational queries into stream processing
JP5199317B2 (ja) * 2010-08-25 2013-05-15 株式会社日立製作所 データベース処理方法、データベース処理システム及びデータベースサーバ
US9128983B2 (en) 2010-10-13 2015-09-08 Aol Inc. Systems and methods for query optimization
US20120246158A1 (en) * 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8782081B2 (en) 2011-05-11 2014-07-15 Google Inc. Query template definition and transformation
US9177021B2 (en) * 2011-06-09 2015-11-03 International Business Machines Corporation Relational query planning for non-relational data sources
US9449030B2 (en) 2011-06-30 2016-09-20 International Business Machines Corporation Method for native program to inherit same transaction content when invoked by primary program running in separate environment
US9177022B2 (en) 2011-11-02 2015-11-03 Microsoft Technology Licensing, Llc User pipeline configuration for rule-based query transformation, generation and result display
US9183302B1 (en) 2012-03-23 2015-11-10 The Mathworks, Inc. Creating a technical computing environment (TCE)-based search engine
US9182957B2 (en) 2012-07-10 2015-11-10 Loring Craymer Method and system for automated improvement of parallelism in program compilation
KR102031402B1 (ko) 2012-07-24 2019-10-11 아브 이니티오 테크놀로지 엘엘시 데이터 모델에서의 엔티티 매핑
US9135301B2 (en) 2013-03-14 2015-09-15 Oracle International Corporation Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system
US9633104B2 (en) 2013-05-03 2017-04-25 Sas Institute Inc. Methods and systems to operate on group-by sets with high cardinality

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190131557A (ko) * 2017-03-29 2019-11-26 아브 이니티오 테크놀로지 엘엘시 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법
KR102141640B1 (ko) * 2020-04-13 2020-08-05 주식회사 데이터월드 실시간 네트워크 데이터 관리 방법 및 이를 실행하는 서버

Also Published As

Publication number Publication date
AU2012250970A1 (en) 2013-05-02
WO2012151149A3 (en) 2013-06-20
CA3022050C (en) 2023-11-14
US20120284255A1 (en) 2012-11-08
CN107622103B (zh) 2021-12-28
JP2017130236A (ja) 2017-07-27
CN103562910A (zh) 2014-02-05
KR101915591B1 (ko) 2019-01-07
CN107622103A (zh) 2018-01-23
EP2705446A2 (en) 2014-03-12
EP4216069A1 (en) 2023-07-26
JP6133274B2 (ja) 2017-05-24
US9116955B2 (en) 2015-08-25
CA2828914A1 (en) 2012-11-08
US20170132281A1 (en) 2017-05-11
CA3022073A1 (en) 2012-11-08
CA3022073C (en) 2019-11-26
CA2828914C (en) 2019-09-24
WO2012151149A2 (en) 2012-11-08
JP6364107B2 (ja) 2018-07-25
CA3022050A1 (en) 2012-11-08
JP2014519080A (ja) 2014-08-07
US20150169687A1 (en) 2015-06-18
WO2012151149A4 (en) 2013-08-08
US10521427B2 (en) 2019-12-31
AU2012250970B2 (en) 2015-08-13
US9576028B2 (en) 2017-02-21
CN103562910B (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
US10521427B2 (en) Managing data queries
JP6578333B2 (ja) データクエリの管理
AU2017202899B2 (en) Managing data queries

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant