KR20100046198A - 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 - Google Patents

에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 Download PDF

Info

Publication number
KR20100046198A
KR20100046198A KR1020107003442A KR20107003442A KR20100046198A KR 20100046198 A KR20100046198 A KR 20100046198A KR 1020107003442 A KR1020107003442 A KR 1020107003442A KR 20107003442 A KR20107003442 A KR 20107003442A KR 20100046198 A KR20100046198 A KR 20100046198A
Authority
KR
South Korea
Prior art keywords
graph
component
error
processing
transaction
Prior art date
Application number
KR1020107003442A
Other languages
English (en)
Other versions
KR101635945B1 (ko
Inventor
크레이그 더블유. 스탠필
요셉 스케핑튼 3 홀리
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 KR20100046198A publication Critical patent/KR20100046198A/ko
Application granted granted Critical
Publication of KR101635945B1 publication Critical patent/KR101635945B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Complex Calculations (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

그래프 기반의 연산을 사용하여 트랜잭션을 처리하는 과정에는, 하나 이상의 일련의 연산 그래프 중의 어느 하나의 연산 그래프의 다수의 그래프 요소 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하는 단계, 각각의 그래프 요소와 연관된 재사용가능한 연산 요소를 포함하는, 연산 그래프의 인스턴스를, 소정의 트랜잭션과 연관시키는 단계, 및 그래프를 실행하여 연산을 수행하는 단계를 포함한다.

Description

에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 {TRANSACTIONAL GRAPH-BASED COMPUTATION WITH ERROR HANDLING}
본 발명은 그래픽에 기반을 둔 연산의 실행에 관한 것이다.
관련출원
본 출원은 2007년 7월 26일에 제출된 미국출원 60/952,075에 대한 우선권을 주장하며, 상기 출원을 본 명세서에서 참조에 의해 원용한다.
복잡한 연산(complex computations)은, 방향성 그래프(directed graph)를 사용하여 데이터 흐름(data flow)으로서 표현될 수 있는데, 이러한 연산의 성분은 그래프의 정점(vertex) 및 그래프의 링크(아크, 에지)에 대응하는 성분들 사이에서의 데이터 흐름과 연관되어 있다. 이러한 그래프 기반의 연산을 구현하는 시스템은, "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"란 명칭의 미국특허 5,966,072호에 언급되어 있다. 그래프 기반의 연산을 실행하기 위한 한가지 방안은, 그래프의 여러 상이한 정점(vertex)과 각각 연관된 다수의 프로세스를 실행하고, 그래프의 링크에 따라 프로세스들 간에 통신 경로(communication paths: 전달 경로)를 확립하는 것이다. 예를 들어, 통신 경로는 TCP/IP 또는 UNIX(등록상표) 도메인 소켓(domain socket)을 사용하거나, 프로세스들 사이에서 데이터를 전달(pass)하기 위한 공유 메모리(shared memory)를 사용할 수 있다.
하나의 관점에서, 일반적으로, 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 방법은, 하나 이상의 일련의 연산 그래프(computation graph) 중의 어느 하나의 연산 그래프의 다수의 그래프 요소(graph element) 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하는 단계와, 각각의 그래프 요소와 연관된 재사용가능한(reusable) 연산 요소(computation elements)를 포함하는, 연산 그래프의 인스턴스(instance)를, 소정의 트랜잭션과 연관(associate)시키는 단계(310), 및 그래프를 실행하여 연산을 수행하는 단계를 포함한다.
본 발명의 관점에는 다음에 설명하는 특징들 중의 하나 이상이 포함될 수 있다.
일련의 연산 그래프 내의 그래프의 적어도 몇몇 인스턴스는, 하나 이상의 연산 요소를 공유(share)한다.
연산 요소는, 운영 체제 프로세스 및 프로세스 쓰레드(process thread) 중 하나 이상에 의해 실행되는 연산을 포함한다.
그래프 요소는 연산 그래프의 정점(vertex)을 포함한다.
연산 그래프의 인스턴스를 트랜잭션과 연관시키는 단계는, 연산 그래프 내의 각각의 그래프 요소에 대응하는 연산 요소를, 그래프 요소의 실행을 시작하기 전에, 연산 그래프의 인스턴스에 할당(assign)하는 단계를 포함한다.
연산 그래프의 인스턴스를 트랜잭션과 연관시키는 단계는, 연산 그래프 내의 그래프 요소에 대응하는 연산 요소를, 연산 그래프의 인스턴스에 할당하는 단계를 포함하며, 연산 그래프의 인스턴스에 할당하는 단계는, 인스턴스에 이미 할당된 연산 요소를 사용하여 다른 그래프 요소를 실행한 후에 수행된다.
그래프 요소 중의 둘 이상의 그래프 요소는 공통 리소스(common resource)를 사용하며, 그래프를 실행하여 연산을 수행하는 단계는, 공통 리소스를 사용하는 각각의 그래프 요소를 단일의 연산 요소에 할당하는 단계를 포함한다.
단일의 연산 요소는, 그래프 요소가 연산 요소에 할당될 때에 이미 초기화되어 있다.
공통 리소스는 데이터베이스(database)를 포함한다.
공통 리소스는 특정의 포트(specific port)를 포함한다.
트랜잭션을 처리하는 방법은 트랜잭션에 대한 요청(request)을 수신하는 단계를 더 포함한다.
본 발명의 방법은, 연산 그래프가, 트랜잭션과 다른 제2 트랜잭션에 대해 수행될 연산과 연관되는지를 판정하는 단계, 제2 트랜잭션을 연산 그래프의 인스턴스와 다른 제2 인스턴스와 연관시키는 단계, 및 그래프의 제2 인스턴스를 실행하여, 제2 트랜잭션에 대한 연산을 수행하는 단계를 포함한다.
연산 그래프의 상이한 인스턴스를 사용하여 수행되는 트랜잭션에 대한 연산은, 타임 인터리브드(time interleaved) 방식으로 수행된다.
트랜잭션이 동시에 여러 개가 처리된다.
트랜잭션은 대응하는 연산 그래프에 따라 처리되는 하나 이상의 작업 요소와 각각 연관된다.
적어도 몇 개의 트랜잭션은, 대응하는 연산 그래프에 따라 처리되는 작업 요소와 각각 하나씩 연관된다.
본 방법은, 연산 그래프의 적어도 몇몇의 다수의 인스턴스를 형성하는 단계를 더 포함한다.
본 방법은, 트랜잭션 중의 하나의 트랜잭션에 대한 연산을 수행하는 중에 에러가 생겼음을 확인(identify)하는 단계와, 트랜잭션 중의 다른 하나의 트랜잭션에 대한 연산을 계속해서 수행하는 단계를 더 포함한다.
다수의 상기 트랜잭션 중의 제1 트랜잭션에 대한 처리를 제1 시간에 시작하고, 다수의 트랜잭션 중의 제2 트랜잭션에 대한 처리를 제1 시간보다 늦은 제2 시간에 시작하며, 본 방법은, 제1 트랜잭션에 대한 연산의 수행을 완료하기 전에 제2 트랜잭션에 대한 연산의 수행을 완료하는 단계를 더 포함한다.
다른 관점으로서, 일반적으로, 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 시스템은, 하나 이상의 일련의 연산 그래프 중의 어느 하나의 연산 그래프의 다수의 그래프 요소 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하기 위한 수단, 각각의 그래프 요소와 연관된 재사용가능한 연산 요소를 포함하는, 연산 그래프의 인스턴스를, 소정의 트랜잭션과 연관시키기 위한 수단, 및 그래프를 실행하여 연산을 수행하기 위한 수단을 포함한다.
다른 관점으로서, 일반적으로, 컴퓨터로 판독가능한 매체는, 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 컴퓨터 프로그램을 기억한다. 컴퓨터 프로그램은, 컴퓨터 시스템으로 하여금, 하나 이상의 일련의 연산 그래프 중의 어느 하나의 연산 그래프의 다수의 그래프 요소 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하고, 각각의 그래프 요소와 연관된 재사용가능한 연산 요소를 포함하는, 연산 그래프의 인스턴스를, 소정의 트랜잭션과 연관시키며, 그래프를 실행하여 연산을 수행하도록 하기 위한 명령(instructions)을 포함한다.
다른 관점으로서, 일반적으로, 그래프 기반의 연산을 처리하기 위한 방법은, 그래프 내에 그래프 성분(graph components)을 나타내는 정점을 포함하여, 정점을 연결(join)하는 링크에 따라 작업 요소(work elements)를 처리하는 단계, 그래프 외부의 프로세스에 에러 정보(error information)를 제공하도록 구성된 하나 이상의 에러 핸들링(error-handling) 그래프 성분을 제공하는 단계, 및 데이터를 처리하는 단계로서, 처리를 행하는 동안 에러를 인식한 그래프 성분에 따라, 작업 요소 중의 적어도 몇몇 작업 요소를, 에러 핸들링 성분을 나타내는 정점에 대한 하나 이상의 링크에 따라 에러 핸들링 성분으로 다이렉트(direct)하는 단계를 포함해서 에러 핸들링 그래프 성분으로 처리를 리다이렉트(redirect)하는 단계를 포함하는 데이터 처리 단계를 포함한다.
본 발명의 관점은 다음과 같은 특징들을 하나 이상 포함할 수 있다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 하나 이상의 입력 대기행렬(input queue)로부터 작업 요소를 제거(remove)하는 단계를 포함한다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러 핸들링 그래프 성분으로 다이렉트된 작업 요소를 처리하는 단계를 포함한다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러가 생기기 전에 만들어진 데이터베이스에 대한 변경을 롤백(rolling back)하는 단계를 포함한다.
데이터를 처리하는 단계는, 에러를 핸들링하는 데에 포함되지 않은 그래프 성분에 대하여, 그래프 성분들로 다이렉트된 작업 요소를 폐기하는(discard) 단계를 포함한다.
서브 그래프(sub-graph)를 제공하며, 서브 그래프는 서브 그래프의 출력으로서 에러 코드(error code)를 제공하도록 구성된 에러 핸들링 서브 그래프 성분을 포함한다.
서브 그래프에 의해 제공된 출력이 서브 그래프에서 에러가 발생했음을 나타내는 경우에, 에러 핸들링 그래프 성분으로 처리가 리다이렉트된다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러를 인식한 그래프로부터 에러 핸들링 그래프 성분으로, 에러가 발생했을 때에 그래프 성분이 처리한 작업 요소를 통신하는 단계를 포함한다.
작업 요소는 에러 핸들링 성분을 나타내는 정점에 대한 링크에 따라 통신이 행해진다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러를 인식한 그래프 성분으로부터 에러 핸들링 그래프 성분까지 에러에 관한 정보를 보고(report)하는 통신을 행하는 단계를 포함한다.
정보의 보고는, 에러를 인식한 그래프 성분과 에러 핸들링 성분 사이에서의 암시적 접속(implicit connection)에 따라 통신이 행해진다.
암시적 접속을, 사용자의 요청에 따라, 에러를 인식한 그래프 성분을 나타내는 정점과 에러 핸들링 성분을 표현하는 정점 사이에 명시적 링크(explicit link)로서 나타낸다.
에러 핸들링 그래프 성분을 제공하는 단계는, 다수의 에러 핸들링 그래프 성분을 제공하는 단계를 포함하며, 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러를 인식한 그래프 성분으로부터 제공된 출력에 기초하여 에러 핸들링 그래프 성분을 선택하는 단계를 포함한다.
데이터를 처리하는 단계는, 처리를 행하는 동안 그래프 성분이 에러를 인식하면, 에러의 원인이 된 작업 요소의 식별정보(identification)를 출력하는 단계를 포함한다.
데이터를 처리하는 단계는, 그래프의 제1 성분을 인에이블(enable)시키는 단계, 에러 핸들링 성분을 디스에이블(disable)시키는 단계, 및 에러 핸들링 성분 외의 제1 성분의 다운스트림 방향으로의 각각의 성분에 대하여, 성분의 바로 업스트림 방향의 성분이 인에이블되어 있는 경우에, 상기 성분을 인에이블시키는 단계를 포함한다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 인에이블된 각각의 그래프 성분의 실행을 중단(stop)시키는 단계, 에러를 인식한 성분을 디스에이블시키는 단계, 에러 핸들링 성분을 인에이블시키는 단계, 다운스트림 방향의 에러 핸들링 성분이 아닌, 에러를 인식한 성분의 다운스트림 방향의 성분을 디스에이블시키는 단계, 및 에러 핸들링 성분의 업스트림 방향의 성분을 인에이블시키는 단계를 포함한다.
에러 핸들링 그래프 성분으로 연산을 리다이렉트하는 단계는, 에러가 제1 성분에서 발생한 경우에, 에러가 제1 상태하에서 발생하였다면, 제1 성분으로부터 제1 성분의 업스트림 방향으로의 제1 에러 핸들링 성분으로 프로세스 흐름을 다이렉트하는 단계를 포함하고, 에러가 제2 상태하에서 발생하였다면, 제1 성분으로부터 제1 성분의 다운스트림 방향으로의 제2 에러 핸들링 성분으로 프로세스 흐름을 다이렉트하는 단계를 포함한다.
제1 상태는 카운터가 한계 이하인 것이다.
제2 상태는 카운터가 한계를 초과한 것이다.
에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러에 앞서 정해졌던 일련의 그래프 성분을 인에이블시키는 단계를 포함한다.
다른 관점에서, 일반적으로, 그래프 기반의 연산을 처리하기 위한 시스템은, 그래프 내에 그래프 성분(graph components)을 나타내는 정점을 포함하여, 정점을 연결(join)하는 링크에 따라 작업 요소(work elements)를 처리하며, 그래프 외부의 프로세스에 에러 정보(error information)를 제공하도록 구성된 하나 이상의 에러 핸들링(error-handling) 그래프 성분을 제공하기 위한 수단, 및 데이터를 처리하는 수단으로서, 처리를 행하는 동안 에러를 인식한 그래프 성분에 따라, 작업 요소 중의 적어도 몇몇 작업 요소를, 에러 핸들링 성분을 나타내는 정점에 대한 하나 이상의 링크에 따라 에러 핸들링 성분으로 다이렉트(direct)하는 수단을 포함해서 에러 핸들링 그래프 성분으로 처리를 리다이렉트(redirect)하는 수단을 포함하는 데이터 처리 수단을 포함한다.
다른 관점에서, 일반적으로, 컴퓨터로 판독가능한 매체는, 그래프 기반의 연산을 처리하기 위한 컴퓨터 프로그램을 기억한다. 컴퓨터 프로그램은, 컴퓨터 시스템으로 하여금, 그래프 내에 그래프 성분을 나타내는 정점을 포함하여, 정점을 연결하는 링크에 따라 작업 요소를 처리하며, 그래프 외부의 프로세스에 에러 정보를 제공하도록 구성된 하나 이상의 에러 핸들링 그래프 성분을 제공하고, 및 데이터의 처리를 위해, 처리를 행하는 동안 에러를 인식한 그래프 성분에 따라, 작업 요소 중의 적어도 몇몇 작업 요소를, 에러 핸들링 성분을 나타내는 정점에 대한 하나 이상의 링크에 따라 에러 핸들링 성분으로 다이렉트(direct)하는 것을 포함해서 에러 핸들링 그래프 성분으로 처리를 리다이렉트(redirect)하도록 하는 명령을 포함한다.
본 발명의 다른 특징과 장점은 이하의 상세한 설명과 특허 청구의 범위로부터 명백하게 될 것이다.
도 1은 그래프 기반의 연산의 예를 나타내는 도면이다.
도 2는 작업 흐름을 처리하기 위한 시스템의 논리 블록도이다.
도 3a는 각각의 작업 흐름을 처리하기 위한 플로차트이다.
도 3b는 에러를 핸들링하기 위한 플로차트이다.
도 4a, 도 4b, 도 5, 도 6은 에러-핸들링 그래프의 예이다.
1. 개요
본 출원은 "Startup and Control of Graph-Based Computation"이란 명칭으로 2002년 10월 10일 출원된 미국특허출원 10/268,509호, 미국특허출원 10/268,509호의 계속 출원으로서 "Transactional Graph-Based Computation"이란 명칭으로 2007년 4월 10일 출원된 미국특허출원 11/733,579호에 관한 것으로서, 상기 2개의 특허문헌 모두 본 명세서에서 참조에 의해 원용한다.
이하에 설명하는 시스템은 연산 그래프(computation graph)에 관하여 정의된 연산을 실행하기 위한 방법을 구현한다. 도 1을 보면, 연산 그래프(100)의 예는, 단방향성 링크(unidirectional links)(120)에 의해 연결된 다수의 정점(vertex)(110)을 포함한다. 도 1에 나타낸 예에서, 정점(110)은 1부터 6까지의 번호가 매겨져 있으며, 링크(120)도 1부터 6까지의 번호가 부여되어 있다. 연산 그래프(100)는, 트랜잭션 처리 시스템과 연관된 연산 그래프에 따라 처리되는 개별 트랜잭션(individual transactions)과 같은 일련의 직업 요소(work elements: 130)로 이루어진 작업 흐름(work flow)을 처리한다. 트랜잭션은 다수의 작업 요소를 포함하여 이루어질 수 있다. 각각의 정점은, 연산 중의 전체적인 연산 그래프에 의해 정의되는 부분과 연관되어 있다. 이 예에서, 정점(1)은, 하나 이상의 트랜잭션과 연관된 일련의 최초의 작업 요소(130)에 관한 기억장소에 대한 액세스를 제공하며, 일련의 작업 요소를 출력 링크(1)를 통해 보낸다. 각각의 정점과 연관된 연산을 수행하는 프로세스는, 작업 요소(130)를 처리하고, 전형적으로는 해당 정점의 하나 이상의 출력 링크에 작업 요소를 생성한다.
정점에 대한 프로세스는, 적어도 하나의 작업 요소가 각 정점의 입력에 대기행렬로 대기(queue)하게 되면, 실행할 준비가 된 것이다. 도 1에 나타낸 바와 같이, 작업 요소(130)는 링크(1)를 통해 전달되어, 정점(3)에서의 처리를 위해 하나의 작업 요소가 대기행렬로 대기하고, 정점(4)에서의 처리를 위해 2개의 작업 요소가 대기행렬로 대기한다. 이에 따라, 정점(3)과 정점(4)에서, 대기행렬로 대기하고 있는 작업 요소를 처리하는 프로세스를 실행할 준비가 된 것이다. 도시된 바와 같이, 정점(5)은 자신의 입력 중 하나, 즉 링크(4)에서 대기행렬로 대기하고, 다른 입력, 즉 링크(5)에서는 대기행렬로 대기하지 않는다. 따라서, 정점(5)과 연관된 프로세스는 실행할 준비가 되지 않은 것이다.
다른 예로서, 작업 흐름에는, 다수의 트랜잭션으로부터의 작업 요소가 포함될 수 있다[즉, 하나 이상의 작업 요소의 제1 세트는 제1 트랜잭션에 대응하고, 하나 이상의 작업 요소의 제2 세트는 제2 트랜잭션에 대응한다]. 트랜잭션은, 세트(set)로서 처리될 모든 행동(actions)을 나타내는 작업 요소 세트를 포함함으로써, 하나의 행동이 실패하면, 아무것도 실행해서는 안 된다. 다수의 트랜잭션을 처리하기 위해 많은 예의 그래프가 사용될 수 있으며, 재사용가능한(reusable) 연산 요소[예를 들어, 운영 체제 프로세스]를 가진 그래프 성분의 연산을 수행함으로써, 필요에 따라, 개별적인 그래프 성분[연산 그래프의 정점으로 나타냄]의 많은 인스턴스(instance)가 만들어질 수 있다. 여러 상이한 트랜잭션을 여러 상이한 각각의 그래프의 인스턴스와 연관시킴으로써, 다수의 트랜잭션을 동시에 처리할 수 있다. 다수의 연산 요소를 그래프 인스턴스에 필요에 따라 할당(assign)할 수 있도록 함으로써, 연산 요소가 하나의 그래프 인스턴스에 의해 사용되도록 하고 다른 그래프에 의해 재사용되도록 하여, 효과적인 자원 할당이 실현될 수 있다. 이에 대해서는, 나중에 구체적으로 설명한다.
도 2를 참조하면, 트랜잭션을 포함하는 작업 흐름을 처리하는 연산 그래프를 실행시키기 위한 시스템(200)은, 기억된 그래프 데이터 구조(210)를 포함한다. 이들 데이터 구조는, 그래프의 정점과 링크의 특성을 포함하는 연산 그래프의 사양(specifications)을 포함한다. 이들 데이터 구조의 부분은 전체 그래프를 로딩하지 않고도 액세스가 가능하다. 예를 들어, 새롭게 생성한 그래프 성분에 작업 요소를 할당하기 위해, 개별적인 그래프 성분의 사양이 로딩될 수 있다.
시스템의 트랜잭션 서브스크립션(transaction subscription) 모듈(220)은, 기억된 그래프 데이터 구조(210)에서 규정한, 대응하는 연산 그래프를 사용하는 특정의 작업 흐름(232)을 처리하기 위한 커맨드를 포함하는, 그래프 성분[예를 들어, 도 10의 정점(10)으로 표현된 성분과 같은, 작업 요소를 반드시 처리하지 않고도 커맨드를 제공하는 성분]을 서브스크라이브(subscribe)하는 트랜잭션으로부터 제어 입력(222)을 수신한다. 트랜잭션 서브스크립션 모듈(220)은, 특정의 트랜잭션에 할당될 그래프 인스턴스를 인스턴스화(instantiate)하는 데에 사용할 수 있는 그래프 연산 처리 리소스(230)를 기록한다. 트랜잭션 서브스크립션 모듈(220)은, 그래프 연산 처리 리소스(230)를 사용하여 그래프 인스턴스를 어떻게 인스턴스화할지를 판정하기 위해 연산 그래프의 사양을 이용하는 스케줄러(scheduler)를 포함한다. 이 스케줄러는, 일반적으로 다수의 프로세서[또는 프로세스의 풀(pool)]로 이루어져 있으며, 스케줄러 내에서, 각 프로세스는 그래프 인스턴스 내의 소정의 그래프 성분을 인스턴스화하는 재사용가능한 연산 요소로서 작용한다. 그래프의 성분의 연산을 수행하기 위해 실행되는 프로세스는, 외부 데이터 및 프로세스(240)를 사용할 수 있다. 이 외부 데이터 및 프로세스는, 데이터베이스 엔진, 데이터 기억장치, 또는 연산 그래프의 정점과 연관된 처리 과정 중에 액세스되는 다른 모듈을 포함한다. 다른 예에서, 단일의 프로세스 또는 다수의 상이한 동작을 수행할 수 있는 일련의 프로세스는, 해당 인스턴스의 모든 동작을 처리하기 위한 그래프의 소정의 인스턴스에 한정된다.
다른 예에서, 트랜잭션 서브스크립션 모듈(220)의 스케줄러는, 원격 프로시저 호출(RPC: remote procedure call) 프로세스를 사용한다. 스케줄러가 소정의 트랜잭션에 대한 작업 요소를 수신하면, 해당 작업 요소를, 트랜잭션과 연관된(즉, 트랜잭션에 할당된) 그래프 인스턴스의 적절한 성분에 할당한다. 해당 그래프 인스턴스에 할당된 프로세스는 해당 성분의 연산을 실행한다. 작업 요소와 연관된 데이터는, 그래프 인스턴스에 의해 이용가능하고 프로세스에 의해 액세스가능한 임시 장소에 기록된다. 트랜잭션 서브스크립션 모듈(220)이 해당 성분에 의해 행해졌다는 통보를, 스케줄러가 받으면, 스케줄러는 실행을 위한 모든 다운스트림(downstream) 그래프 성분을 스케줄링한다. 결국, 트랜잭션은 그래프 전체를 통해 진행될 것이며[그래프는 그래프 연산 처리 리소스(230)를 사용하여 실행됨], RPC 퍼블리시 프로세스(publish process)에 의해 출력될 것이다. 이 과정은 임시 장소에 축적된 데이터를 취하고, 취한 데이터를 적절한 출력 채널, 예컨대 도 1의 데이터베이스 출력(6)에 커밋(commit)한다. RPC 퍼블리시 프로세스는, PRC 서브스크라이브 프로세스(subscribe process)에 의해 다중화(multiplex)되어, 트랜잭션에 최초에 수신되었던 소켓(socket)을 액세스할 수 있게 된다.
일반적으로, 여러 상이한 트랜잭션이 각각 상이한 그래프 인스턴스에 의해 동시에 처리될 수 있다. 시스템(200)은, 트랜잭션 서브스크립션 모듈(220)을 통해, 연산 그래프의 인스턴스에 대한 리소스를 각 트랜잭션에 할당하고, 그래프 연산 처리 리소스(230)를 통해, 작업 흐름을 처리하기 위한 이들의 실행을 제어한다.
2. 그래프 데이터 구조 (graph data structures)
시스템(200)은, 제한된 리소스를 효율적으로 공유하는 것뿐만 아니라, 그래프 연산의 기동(startup)을 신속하게 하는 많은 특징을 포함한다.
연산 그래프의 인스턴스에 의해 트랜잭션을 처리하기 전에, 트랜잭션 서브스크립션 모듈(220)은 기능적으로 공유된 메모리 내의 그래프 인스턴스에 대하여 런타임(runtime) 데이터 구조를 생성한다. 일실시예에서, 단일의 공유 메모리 세그먼트가 생성되는데, 그 내부에, 그래프 인스턴스에 대한 모든 런타임 데이터 구조가 생성된다.
트랜잭션에 한정된 하나의 프로세스 또는 여러 프로세스는, 그래프의 정점과 연관되어 있으며, 이들 프로세스의 각각은, 공유 메모리 세그먼트를 어드레스 공간에 매핑(map)한다. 이들 프로세스는 그래프 인스턴스가 개별 트랜잭션에 대해 생성될 때 정점과 연관될 수 있으며, 또는 개별 그래프 성분의 인스턴스가 생성되거나 실행될 때까지 정점과 연관되지 않을 수도 있다. 프로세스는 트랜잭션을 처리하는 동안, 그래프 인스턴스에 대한 런타임 데이터 구조로부터 작업 요소를 판독(read)하고 런타임 데이터 구조에 작업 요소를 기입(write)한다. 즉, 그래프를 통해 전달되는 트랜잭션에 대한 데이터가 하나의 성분에서 다른 성분으로 전달되고, 하나 이상의 프로세스가 트랜잭션에 한정되어 있는 경우에는, 공유 메모리 세그먼트 내의 런타임 데이터 구조를 통해, 하나의 프로세스에서 다른 프로세스로 전달된다. 그래프의 각 성분에 대해 액세스가능한 메모리 공간 내의 소정의 트랜잭션에 대한 데이터를 포함하고, 각 성분을 해당 프로세스 또는 일련의 프로세스에서 실행함으로써, 성분들 사이에서 상태(state)가 공유될 수 있다. 다른 장점들 중에서, 이러한 구성에 의하면, 트랜잭션이 성공적으로 실행되었다는 것을 확인한 후에, 트랜잭션에 대한 성분을 실행하는 것과 연관된 모든 데이터베이스 동작이 한 번에 커밋(commit)될 수 있다.
3. 프로세스 풀(process pools)
앞서 언급한 바와 같이, 그래프 인스턴스(graph instance)의 성분을 실행하기 위한 그래프 연산 처리 리소스(230)는, 스케줄러에 의해 관리되고 할당된 프로세스 풀(process pools)을 사용하여 구현될 수 있다. 여러 상이한 타입의 연산의 각각에 대해, 프로세스 풀은, 해당 타입의 연산을 필요로 하는 그래프 성분을 사용하여 트랜잭션의 작업 흐름의 처리를 시작하기 전에 생성된다. 트랜잭션이 그래프 인스턴스에 할당될 때에, 그래프 인스턴스의 소정의 성분에 대한 연산을 수행하기 위해 특정 타입의 연산이 필요하게 되면, 스케줄러는 그래프 인스턴스에 의한 그리고 소정의 성분과의 사용을 위한 프로세스 풀의 멤버(member)를 할당한다. 프로세스 풀의 멤버가 트랜잭션의 처리 과정 동안 그래프 인스턴스와 계속 연관되며, 동일한 타입의 성분을 필요로 하는 그래프 인스턴스 내의 다른 성분에 대해 재사용될 수 있다. 이 프로세스는, 해당 타입의 성분을 필요로 하는 해당 트랜잭션에 대한 그래프 인스턴스 내의 마지막 성분의 업스트림(upstream)을 유지하는 작업 요소가 없으면, 해당 프로세스 풀로 다시 릴리즈될 수 있다. 대응하는 타입의 연산과 각각 연관되는 많은 상이한 프로세스 풀이 있을 수 있다. 풀 내의 프로세스는, 상이한 그래프 인스턴스 내의 소정 타입의 성분을 포함하는, 동일하거나 상이한 그래프 인스턴스 내의 성분과, 예를 들어 하나의 그래프 인스턴스 내의 여러 상이한 성분에 대해 사용될 수 있다.
다른 실시예에서, 프로세스 풀 내의 각각의 프로세스는, 프로세스 풀을 관리(manage)하는, 트랜잭션 서브스크립션 모듈(220)에 의해 유발(invoke)되는 별개의 프로세스[예컨대, UNIX(등록상표) 프로세스]이다. 트랜잭션 서브스크립션 모듈(220)은, 각 프로세스 풀에 대해 별개의 작업 대기행렬(work queue)을 유지한다. 작업 대기행렬 내의 각각의 엔트리(entry)는 프로세스가 연산을 수행할 그래프 인스턴스의 특정의 정점을 식별한다.
몇몇 프로세스는 고정 리소스(fixed resources)를 보존(reserve) 또는 소비(consume)한다. 이러한 프로세서의 예는, Oracle(등록상표) 데이터베이스와 같은 데이터베이스에 접속되는 프로세스이다. 리소스는 각각의 데이터베이스 접속을 형성 및 유지함으로써 소비되기 때문에, 액티브 상태인 이러한 프로세스의 수를 제한하는 것이 바람직하다. 그래프가 데이터베이스를 엑세스하는 다수의 성분을 포함하고 있으면, 소정의 트랜잭션을 위한 모든 데이터베이스 동작은 단일의 데이터베이스 프로세스에서 이루어지도록 하는 것이 바람직할 수 있다. 이를 위하여, 데이터베이스에의 접속을 각각 유지하고, 소정의 그래프 인스턴스가 필요로 할 수 있는 데이터베이스 기능(database function)을 각각 수행할 수 있는 일련의 프로세스를 구축할 수 있다. 소정의 트랜잭션에 그래프 인스턴스가 할당되면, 앞서 설명한 바와 같이, 일련의 프로세스 중의 하나의 프로세스가 전체 트랜잭션을 위한 해당 그래프 인스턴스에 할당되고, 모든 데이터베이스 성분이 해당 프로세스에 다중화된다. 트랜잭션의 작업 요소를 처리하기 위해 데이터베이스에 액세스하기 위한 프로세스를, 정점이 필요로 하게 되면, 해당 정점에 대해, 할당된 프로세스(데이터베이스와의 접속이 이미 구축되어 있음)가 연관된다. 이에 의하여, 해당 데이터베이스에의 접속을 필요로 했던 해당 프로세스의 초기화 단계(initialization step)의 오버헤드(overhead)를 피하게 되며, 소정의 트랜잭션에 대한 모든 데이터베이스 행동이, 해당 프로세스에 의해 처리될 수 있다. 다른 타입의 프로세스도 동일한 방식으로 처리될 수 있다.
시스템(200)은, 정점이 프로세스와 연관될 때와 정점에 대한 연산이 개시될 때가 상이한, 정점에 대한 프로세스를 구성(configure)하는 여러 상이한 방식을 지원한다. 한가지 타입의 구성으로서, 프로세스는, 모든 입력된 작업 요소에서의 모든 데이터가 완전히 이용가능하게 될 때까지 정점과 연관되지 않는다. 작업 요소가 크면, 업스트림 정점(upstream vertex)에 의해 계산되고 이용가능하게 될 전체 작업 요소에 대한 시간이 많이 걸릴 수 있다. 이러한 타입의 구성에 의하면, 입력을 대기하고 있는 프로세스가 사용되는 것을 차단(block)함으로써, 해당 그래프 인스턴스 내의 다른 정점에 의해 사용될 수 있도록 한다.
다른 타입의 구성은, 스트리밍(streaming) 방식을 사용한다. 프로세스는 정점과 연관되며, 각 입력의 적어도 시작부분이 사용가능하게 될 때에 개시된다. 각 입력의 나머지 부분은, 프로세스가 실행되는 동안에 사용가능하게 된다. 해당 입력이 충분히 신속하게 사용가능하게 되면, 프로세스는 입력에 대한 대기를 차단하지 않는다. 그러나, 입력이 사용가능하게 되지 않으면, 프로세스는 차단될 수 있다.
4. 연산 제어(computation control)
도 3a는 그래프 인스턴스를 사용하여 각 트랜잭션을 처리하는 프로세스(300)에 대한 플로차트이다. 트랜잭션 서브스크립션 모듈(220)(도 1 참조)이 트랜잭션의 처리에 대한 요청을 받으면, 먼저 연산 그래프(및 이에 대응하는 타입)가 트랜잭션의 처리에 적합한지 여부를 판정한다(단계 305). 예를 들어, 스케줄러는 소정의 연산 그래프가 트랜잭션에 대한 연산을 수행하기에 적합한지(예컨대, 적절한 성분을 포함하는지)를 판정한다. 트랜잭션 자체에서 이것을 특정할 수 있거나, 또는 트랜잭션 서브스크립션 모듈(220)이 특정의 트랜잭션 타입을 특정의 연산 그래프에 연관시키는 데이터에 대한 액세스를 포함할 수 있다. 다음에, 트랜잭션 서브스크립션 모듈(220)은, 해당 트랜잭션을 처리하는 데에 필요한 타입의 연산 그래프의 그래프 인스턴스(필요한 경우)를 생성하고(단계 310), 그 트랜잭션을 그래프 인스턴스에 연관시킨다. 이 프로세스의 일부분으로서, 트랜잭션 서브스크립션 모듈(220)은 그래프 인스턴스에 대한 런타임 데이터 구조의 공유 메모리 세그먼트의 일부를 할당하고, 해당 타입의 연산 그래프에 대한 그래프 템플릿(graph template)을 런타임 데이터 구조에 복제(copy)함으로써, 런타임 데이터 구조를 초기화한다. 그래프 템플릿의 사용 예는, 미국특허 7,167,850호에 구체적으로 개시되어 있으며, 이 특허문헌의 내용을 본 명세서에 참조에 의해 원용한다. 다른 예에서, 그래프 인스턴스는 이미 생성되어 있으며, 이 단계에서는 단지 현재의 트랜잭션에 할당될 뿐이다. 다음으로, 트랜잭션 서브스크립션 모듈(220)은, 이하 구체적으로 설명된 바와 같이, 스케줄러의 제어에 따라, 그래프 인스턴스를 실행한다(단계 320). 그래프 인스턴스는 재사용가능한 각각의 성분과 연관된(할당된) 연산 요소(예를 들어, 프로세스)를 포함한다. 트랜잭션의 전체 작업 흐름이 처리되었으면, 트랜잭션 서브스크립션 모듈(220)은 그래프의 실행 결과를 커밋(commit)하고(예를 들어, 변경사항을 출력 데이터베이스에 커밋함), 할당된 리소스와 연산 요소를 선택적으로 릴리즈(release)하며, 그래프 인스턴스에 대한 런타임 데이터 구조를 삭제(delete)함으로써, 공유 메모리 세그먼트의 일부를 다른 그래프 인스턴스에 대해 재사용할 수 있게 된다(단계 330).
5. 변형 예
앞서 언급한 바와 같이, 필요로 하게 될 트랜잭션이 있을 것으로 예상하고, 연산 그래프의 미리 인스턴스화된 인스턴스의 그래프 풀을 사전생성(pre-create)하는 것이 가능하다. 트랜잭션을 받고 그래프 인스턴스를 필요로 할 때에, 그 그래프 인스턴스를 그래프 풀로부터 사용가능하다면, 생성하는 것이 아니라, 풀로부터 할당된다. 이에 의하면, 트랜잭션에 대한 개시 비용(startup cost)을 더 감축할 수 있다. 트랜잭션에 대한 연산이 완료되면, 트랜잭션에 할당하고 임의의 동적으로 할당된 메모리를 자유롭게 하기 전에 변수들(variables)을 이들의 초기값으로 복원(restore)함으로써 리셋된다. 그래프 인스턴스가 리셋된 후에는 풀로 복귀한다.
다른 실시예에서, 그래프 풀 내의 그래프 인스턴스의 수는 필요에 따라 증가될 수 있다. 예를 들어, 각 그래프의 인스턴스를 최소 개수로 해도 되고, 필요에 따라 더 많은 수를 생성해도 된다.
상기 설명에서, 프로세스는 온디멘드(on-demand) 방식으로 그래프 내의 정점에 할당될 수 있다. 온디멘드 방식에서, 프로세스는, 특정의 그래프 인스턴스와 트랜잭션에 한정(bound)되어 있어도, 해당 정점에 대한 모든 입력이 사용가능하게 될 때까지 정점과 연관되지 않는다. 다른 방식은, 트랜잭션이 그래프 인스턴스와 연관된 경우에, 프로세스를 정점에 연관시키고, 트랜잭션의 전체 작업 흐름이 처리될 때까지 그 연관을 유지하는 것이다.
6. 애플리케이션
상기 설명한 타입의 연산 그래프의 한가지 애플리케이션은, 은행 애플리케이션에서의 금융 트랜잭션(financial transactions)의 처리이다. 일반적으로, 여러 상이한 타입의 트랜잭션은 상이한 타입의 연산 그래프를 필요로 한다. 전형적인 연산 그래프는, 트랜잭션을 처리하는 데에 필요한 "백엔드"(backend) 서비스와 한가지 타입의 고객 트랜잭션(customer transaction)의 몇몇 조합과 연관된다. 예를 들어, 트랜잭션은 ATM 리퀘스트(requests), 은행직원(bank teller) 입력, 및 컴퓨터 또는 웹서버 간의 비투비(business-to-business) 트랜잭션이 될 수 있다. 여러 고객들은, 특히 은행들이 통합되고 고객들이 원래의 여러 은행으로부터 연합될 때에, 여러 가지 백엔드 시스템을 가질 수 있다. 이들의 계정(accounts)은, 모든 고객이 매입 은행(acquiring bank)의 고객인 경우에도, 매우 상이한 벡엔드 시스템에서 유지될 수 있다. 따라서, 그래프에서의 상이한 정점은 상이한 트랜잭션을 처리하는 데에 사용될 수 있다. 여러 서비스가 그래프 내의 정점과 연관될 수 있다. 예를 들어, 몇몇 정점은 잔고를 업데이트 하거나, 계좌에 돈을 입금하거나, 자금이 계좌에 유지되도록 계좌 홀드(account hold)를 수행하는 것과 같은 기능과 연관될 수 있다. 몇몇 구현 예에서, 프로세스의 정점으로의 동적인(on-the-fly) 배치(assignment)에 의해, 사용하지 않는 정점에 대한 프로세스를 아이들(idle) 상태로 하는 오버헤드(overhead)를 피할 수 있다.
그래프 인스턴스를 트랜잭션 단위(per-transation basis)로 할당하는 장점은, 이에 의해, 그렇지 않았으면 직렬로 처리되었어야 했을, 데이터 스트림의 병렬화(parallelization)가 가능하다는 것이다. 상이한 트랜잭션에 할당된 그래프 인스턴스는 처음과 다른 순서로 종료할 수 있는데, 예를 들어, 제1 트랜잭션이 제2 트랜잭션보다 더 복합한 경우에 그렇게 할 수 있다. 이에 의하면, 직렬화된 시스템이 계속해서 제1 트랜잭션을 처리할 때에, 제2 그래프 인스턴스를 릴리즈할 수 있고, 제3 트랜잭션을 처리하는 데에 사용할 수 있게 된다.
7. 에러 핸들링(error handling)
그래프 인스턴스를 트랜잭션 단위로 할당하는 장점은, 그래프 인스턴스를 실행할 때의 에러에 기인한 실패(failures)가, 해당 트랜잭션에만 한정되며, 다른 그래프 인스턴스의 동시 처리에 영향을 미치지 않는다는 것이다. 전체 트랜잭션이 완료될 때까지 연산 그래프의 결과를 커밋하는 것을 지연(delay)시킴으로써, 에러가 발생한 경우, 데이터를, 시스템이 트랜잭션의 처리를 시작하기 전의 상태로 "롤백"(rolled-back)시킬 수 있다. 에러는 여러 가지 방식으로 핸들링될 수 있다.
다른 실시예에서, "에러 핸들링" 성분은 그래프에 포함된다. 에러 핸들링 성분은, 완료를 위해 그래프를 실행할 필요가 없는 특별한 경우이다. 임의의 정점에서의 성분이 에러를 발생시키는 경우에, 전체 성분을 어보트(abort)하는 것이 아니라, 그래프의 실행을, 에러 핸들링 성분으로 리다이렉트(redirect)한다. 소정의 성분과 에러 핸들링 성분(성분의 출력 포트로부터 에러 핸들링 성분의 입력 포트까지의 작업 흐름을 포함) 간의 명백한 관계를, 예외 흐름(exception flow)이라고 한다. 스케줄러(scheduler)는 연산의 실패한 부분에 해당하는 작업 요소를 그래프 인스턴스로부터 제거하고, 에러 핸들링 성분은 그래프가 에러 메시지를 제공하기 위해 사용할 수 있는 출력을, 제공되는 프로세스로 출력한다. 에러 핸들링 성분은, 그 구현 방법에 따라, 예외 흐름 외의 다른 데이터 입력을 수신할 수 있다.
도 3b는 그래프에서 발생하는 에러를 핸들링하고 그래프를 실행하기 위한 과정(350)의 예를 나타내는 플로차트이다. 스케줄러는, 링크에 따라 그래프 성분 내의 작업 요소의 작업 흐름을 처리하고(단계 360), 에러가 그래프 성분 내에서 발생했음을 스케줄러가 인식하게 되면(단계 370), 스케줄러는 에러 핸들링 성분에 대한 처리를 리다이렉트(redirect)한다. 이러한 리다이렉트에 대한 한가지 관점은, 해당 에러 핸들링 성분에 대한 임의의 예외 흐름에 따라 작업 요소를 에러 핸들링 성분으로 다이렉트(단계 380)하는 것이다. 이하 상세하게 설명하는 바와 같이, 예외 흐름의 처리에 의하면, 에러 핸들링 성분은 그래프의 외부 프로세스에, 그래프가 에러가 발생한 트랜잭션의 처리를 시작하기 전에 그래프 처리 상태를 나타내는 에러 정보를 제공할 수 있다(단계 390).
그래프 내의 임의의 성분에 대해, 지정된(designated) 에러 핸들링 성분이 있다. 이것은 예외 흐름 출력 또는 다른 그래프 성분으로부터의 다른 에러 데이터 출력을 직접 수신하는 성분이 될 수 있거나, 또는 예외 흐름을 수신하는지 여부에 관계없이, 일련의 성분에 대한 지정된 에러 핸들링 성분으로서 정의될 수 있다. 다른 실시예에서, 예외 흐름은 도 4a 및 도 4b에 도시된 것과 같이 핸들링될 수 있다. 이 예에서, 그래프는 트랜잭션 연산을 수행하도록 지정되고, 서브스크라이브 성분(902)과 퍼블리시 성분(904)이 도시되어 있지만, 논트랜잭션(non-transactional) 작업 흐름에 대한 그래프에서 동일한 기술이 사용될 수 있다. 도 4a에서, 스케줄러는 그래프(900)를 액티브시킨다. 제1 성분인, 서브스크라이브 성분(902)에서 시작해서, 다운스트림 방향의 임의의 비-예외 경로(non-exception path) 내의 각 성분을 "enabled"(인에이블)로 표시한다. 예외 경로(exception path)는, 예외가 생긴 경우에[예를 들어, 앞서 설명한 바와 같이 에러 핸들링 성분으로 이어지는 예외 흐름], 작업 요소의 흐름이나 다른 에러 데이터만을 수신하는 경로이다. 이것을 인에이블 전달(enablement propagation)이라고 한다. 다른 다운스트림 방향에서의 소정의 성분은, 임의의 입력이 인에이블된 업스트림 성분에 접속된 경우에, 인에이블된다. 즉, 레플리케이트(replicate) 성분(906), 리포맷(reformat) 성분(908), 호출 웹 서비스(call web service) 성분(910), 롤업(rollup) 성분(912), 퓨즈(fuse) 성분(914), 퍼블리시(publish) 성분(904)이 모두 인에이블되지만, 다운스트림 방향에 있으며, 임의의 인에이블 성분으로부터 비-예외 입력 흐름을 수신하지 않는, 에러 핸들러(error handler) 성분(916), 롤백(rollback) 성분(918) 및 에러 로그(error log) 성분(920)은 "disabled"(디스에이블) 상태를 유지한다.
에러가 생기면, 스케줄러는 에러가 생긴 성분의 실행을 중단하고, 이미 실행을 하고 있는 임의의 다른 성분으로 하여금 완료하도록 하고, 임의의 관련된 데이터[예를 들어, 완료된 성분의 예외 흐름 출력, 즉 에러가 생긴 성분의 "에러 보고 출력"(error reporting output)]를 에러 핸들링 성분으로 전달(propagate)한다. 예를 들어, 호출 웹 서비스 성분(910)이 에러를 트리거(trigger)하면, 레플리케이트 성분(906)으로부터의 예외 흐름과, 호출 웹 서비스 성분(910)의 리젝트(reject) 포트(921)로부터의 에러 보고 출력이, 에러 핸들링 성분(916)의 입력(922) 및 입력(924)에 각각 제공된다. 에러 보고 출력 포트[그래프(900)에서 몇몇 성분의 바닥 부분의 포트로서 도시됨]는, 예컨대, 에러가 발생한 대상, 에러가 발생한 위치, 및 에러와 연관된 임의의 리젝트된 작업 흐름을 특징짓는 정보를 포함하는 임의의 에러에 관한 정보를 제공하는 데에 사용될 수 있다.
본 예에서는, 레플리케이트 성분(906)에 대해 에러를 보고하는 출력 포트가 3개 있다. 리젝트 포트(921)는 에러를 발생시켰을 수도 있는 작업 흐름을 제공하거나, 에러와 관련된 몇몇 방식에 속할 수 있는 작업 요소를 제공한다. 에러 포트(error port)(923)는 에러에 관련된 정보를 설명하는 에러 메시지를 제공한다. 로그 포트(log port)(925)는 에러가 발생된 것을 로깅하는 정보를 선택적으로 제공할 수 있다. 로그 포트(925)는 또한 에러가 발생하지 않은 경우에서도 정상적인 실행 과정 동안의 이벤트에 관한 로그 정보(log information)를 제공할 수 있다. 본 예에서, 리젝트 포트(921)는 해당 포트를 사용할 필요가 있을 수 있는 성분들[예컨대, 호출 웹 서비스 성분(910)]에 접속된 것으로 명확히 도시되어 있다. 그러나, 에러 포트(923)와 로그 포트(925)는 접속된 것으로 명확히 도시되어 있지는 않지만, 에러 핸들링 성분(916)에 암시적으로 접속(implicit connections)된 것을 알 수 있다. 예를 들어, 포트는 디벨로퍼(developer)에 의해 접속될 수 있으며, 인터페이스 컨트롤을 사용하여 숨겨질 수 있다. 다른 예에서, 시스템은, 디벨로퍼에 의해 오버라이드될 수 있는, 디폴트 에러 핸들링 성분에의 암시적 접속을 자동으로 판정할 수 있다. 대형 및/또는 복잡한 그래프의 경우, 한 가지 타입 이상의 에러 보고 포트에 대한 이러한 "암시적 와이어링"(implicit wiring)은, 디벨로퍼에 의해 그래프의 시각적 인식(visual comprehension)을 향상시키는데, 이것은 그래프에 기반을 둔 프로그래밍의 장점 중 하나이다. 다른 예에서, 포트가 다른 성분의 포트에 암시적으로 접속된 것을 나타내기 위해 시각적 단서(visual cues)가 제공될 수 있다[예를 들어, 아이콘, 음영, 또는 채색한 포트]. 숨겨진 암시적 작업 흐름 접속의 몇몇 또는 모두는 사용자의 요청에 따라 명시적인 링크(explicit links)로서 보여질 수도 있다[예를 들어, 버튼을 클릭하거나 포트 위를 이동시킴으로써].
레플리케이트 성분(906)으로부터 출력된 예외 흐름은, 에러가 발생하기 전에 레플리케이트 동작이 완료된 경우, 입력(922)에 이미 대기행렬로 대기하고 있을 수 있다. 다음에, 스케줄러에 의해, 에러 핸들링 성분(본 예에서는, 도면부호 916)이, 에러 성분(본 예에서는, 도면부호 910)을 디스에이블시키고, 에러 핸들링 성분으로부터 인에이블 전달(enablement propagation)을 수행한다(본 예에서는, 918, 904, 920을 인에이블시킴). 디스에이블된 에러 성분의 다운스트림 방향의 임의의 성분도 또한, 해당 성분을 에러 핸들링 성분의 다운스트림 방향으로의 인에이블된 성분으로부터의 흐름을 수신하지 않는 한, 디스에이블된다(본 예에서는, 912 및 914를 디스에이블시킴). 마지막으로, 인에이블된 성분에 흐름을 제공하는 남은 모든 성분을 인에이블시킨다(본 예에서는, 906 및 902를 인에이블시킴).
따라서, 이 과정의 결과는, 도 4b에 "<enabled>"(인에이블됨) 및 "<disabled>"(디스에이블됨)으로 표시되어 있다. 퍼블리시 성분(904)은, 그 출력에 에러 메시지가 있더라도, 에러 핸들러(916)에 의해 트랜잭션이 완료된 후, 흐름으로 다시 접속된다. 현재 디스에이블된 성분, 예컨대 리포맷 성분(908)로부터의 출력으로 이미 전달된 데이터는 폐기(discard)된다.
앞서 설명한 바와 같이, 데이터는 예외 흐름의 일부로서 또는 다른 성분의 에러 보고 출력의 일부로서 에러 핸들링 성분으로 흐를 수 있다. 에러가 발생하기 전에 이용가능한 데이터, 예를 들어 도 4b의 레플리케이트 모듈(906)로부터의 출력 데이터는, 그것이 한번이라도 있는 경우, 필요로 할 때까지, 에러 핸들러(916)에 대한 입력 대기행렬에 에스크로(escrow)로 유지된다. 그래프가 에러 없이 완료되면, 에러 핸들러(916)는 전혀 액티브되지 않으며, 데이터는 폐기된다. 에러가 발생하면, 에러 핸들러(916)는 응답을 하기 위해 수신한 모든 입력 데이터를 사용한다. 도 4b에 나타낸 것과 같은 다른 예에서는, 롤백 성분(918)이 사용된다. 레플리케이트 성분(906)으로부터의 입력 데이터는, 그래프가 트랜잭션의 처리를 시작하기 전에 어떤 상태였는지 에러 핸들러(916)에게 보고한다. 에러 핸들러(916)는 이것을 롤백 성분(918)에 출력하고, 롤백 성분(918)에서는, 다른 성분에 의해 변경된 임의의 데이터를 트랜잭션을 실행하기 전의 상태로 복원하는 데에 사용한다. 다음으로, 예외 흐름은, 에러를 로그하는 에러 로그(920)와 퍼블리시 성분(904)으로 진행함으로써, 에러가 보고될 수 있도록 하고, 그래프(900)로 전달된 모든 상위 레벨에 의해 적절히 핸들링되도록 할 수 있다. 임의의 성분으로부터 에러 핸들러(916)로의 예외 흐름에는 데이터가 포함될 수도 있다. 호출 웹 서비스 성분(910)으로부터의 에러 출력이나 임의의 다른 성분(도시 안 함)으로부터의 예외 흐름과 같이, 레플리케이트 성분(906)으로부터의 최초 데이터(original data) 외에, 에러 핸들러(916)에 대한 입력이 존재하면, 보다 구체적인 에러 메시지를 에러 로그 또는 퍼블리시 성분에 형성하는 데에 사용될 수 있다.
도 5에 나타낸 것과 같은 다른 예로서, 그래프는, 자신의 에러 핸들링 성분(952)을 각각 가질 수 있는 서브 그래프(950)와 같은 서브 그래프로서 구현된 정점을 포함한다. 따라서, 하위 "그래프 레벨"이 서브 그래프인 정점을 갖는, 최상단 레벨 그래프를 가진 서브 그래프의 계층이 있을 수 있다.
서브 그래프(950)의 임의의 성분(954, 956, 958, 960, 962)에서 에러가 발생하면, 프로세스 흐름은, 서브 그래프 에러 보고 포트(974)에 에러 보고 출력을 제공하는 에러 핸들링 성분(952)으로 경로 설정된다. 에러 핸들링 성분(952)의 범위(scope)는 서브 그래프(950)이다. 에러 핸들링 성분은, 다른 그래프 요소[예컨대, 요소(954)]로부터의 예외 흐름 또는 스스로 내포된(nested) 서브 그래프가 될 수 있는 다른 그래프 요소[예컨대, 요소(958)]의 에러 출력(959)으로부터의 출력을 수신하는 입력(966, 968)을 가질 수 있다. 다른 예에서, 에러 핸들링 성분이 다수의 입력을 갖는다면, 가장 최근에 데이터를 수신한 입력만 사용된다. 서브 그래프(950)의 모든 성분이 자신의 동작을 성공적으로 완료하면, 출력(작업 흐름)이 정상적인 서브 그래프 출력 포트(970)로 제공되고, 서브 그래프(950) 이후의 프로세스 흐름이 계속 정상적으로 된다. 에러가 발생하면, 에러 흐름 출력(972) 또는 에러 보고 출력(974)에서 핸들링 및 보고될 수 있다. 다른 예에서는, 에러가 표준 출력(970)으로 보고될 수도 있다.
서브 그래프가 에러 핸들링 기능을 갖지 않는다면, 에러가 에러 핸들링 기능을 갖는 그래프 레벨에 도달할 때까지, 그 일부를 이루는 서브 그래프의 계층에서 상방으로 에러가 흐르고, 이 시점에서, 해당 레벨의 에러 핸들링 성분이 액티브된다.
에러 핸들링 성분의 입력에서 에스크로된 데이터는 작업 흐름의 서브세트가 될 수 있으며, 트랜잭션과 연관된 모든 데이터가 될 수 있거나, 전체 데이터 흐름이 될 수 있다. 에러 핸들링 성분이 에러 출력 포트를 갖는 경우, 에러를 발생시킨 레코드나 에스크로된 데이터에 기초한 다른 에러 정보 또는 에러가 생긴 성분으로부터 수신한 입력을 출력할 것이다. 에러 핸들링 성분이, 이러한 포트를 갖지 않는다면, 그 출력 포트에 정상적인 출력으로서 오펜딩 레코드(offending record)를 출력하기만 하면 된다.
서브 그래프가 에러 핸들링을 갖지 않는 경우, 해당 성분에서의 에러는, 에러가 에러 핸들링 기능을 갖는 그래프 레벨에 도달할 때까지, 그 일부를 이루는 서브 그래프의 계층에서 상방(upwards)으로 흐른다. 이 시점에서, 해당 레벨의 에러 핸들링 성분은 적절한 입력을 수신하고 적절한 에러 출력을 생성한다.
에러 핸들링에 의해, 그래프 기반의 연산 프로세싱에서 정상적으로 회피하게 되는 순환적인 그래프 방식이 가능하게 된다. 예를 들어, 도 6에 나타낸 것과 같이, 그래프(1100)에서는, 에러 핸들러(1104)로부터 다운스트림 방향으로 연산 성분(1112)으로부터의 에러 출력(1116)이 해당 에러 핸들러(1104)로 다시 흐른다. 에러 핸들러(1104)는, 도 4a에 나타낸 바와 같이, 서브스크라이브 성분(1102)으로부터 입력을 수신하고, 롤백 성분(1106)에 출력을 제공한다. 롤백 성분(1106)은, 서브스크라이브 성분(1102)에 의한 에러 핸들러(1104)에 대한 데이터 입력에 기초하여, 데이터를, 실패한 연산이 시도되기 전의 상태로 되돌린다. 카운터(counter) 성분(1108)은 롤백 성분(1106)으로부터의 흐름을 수신하고, 수집 성분(1110)에 대한 흐름을 되돌리기 전의 값을 증분시킬 수 있다. 연산 성분(1112)은 카운터 성분(1108)으로부터 입력된 값을 여러 가지 방식으로 사용할 수 있다. 연산 성분은 해당 연산을 수행하기 전의 값을 참고(consult)할 수 있다. 예를 들어, 연산 성분이 자신의 동작에 관하여 어떤 것을 변경하여야 하는 지를 참고할 수 있다. 연산 성분은, 몇몇 임계의 시도 횟수가 이루어졌는지 여부를 알기 위해, 에러 이후의 카운터를 참고할 수 있다. 임계값이 초과되었으면, 에러 출력을 출력(1116)을 통해 다시 에러 핸들러(1104)로 되돌리지 않고, 해당 출력을 제2 에러 핸들러(1120)로 이어지는 제2 에러 출력(1118)으로 보낸다. 카운터 성분이 사용되지 않는 경우, 순환(cycle)을 해제(break)하고 그래프가 결국 완료되는 것을 보장하기 위해 몇몇 다른 기술이 사용될 수 있다.
순환적인 그래프의 특징이 명확하게 되는(well-defined) 것을 보장하기 위해, 에러에 대해 인에이블되는 일련의 요소를, 앞서 설명한 바와 같이 필요에 따라 수행하는 것이 아니라, 그래프의 토폴로지(topology)에 기초하여 미리 정한다.
다른 예로서, 에러 핸들링을 정확하게 수행하는 것을 보장하기 위해 다른 규칙이 사용된다. 예를 들어, 다른 구현 예로서, 에러 핸들링은 그래프 내의 하나의 성분의 하나의 예외 포트에 대해서만 트리거될 수 있다(동시에 발생하는 임의의 에러는 무시될 수 있다). 그래프 성분 또는 서브 그래프가, 에러 핸들링 성분에 링크되어 있으면, 임의의 에러에 대한 해당 성분을 사용하여야 한다. 그래프 성분 또는 서브 그래프가 에러 핸들링 성분에 링크되어 있지 않으면, 에러는 현재의 범위에 대해 일반적인 에러 핸들러에 의해 처리되어야 한다. 각각의 그래프 성분은 통상적으로 정확히 하나의 에러 핸들러와 연관된다. 이러한 규칙은 시스템의 요건에 따라 변경 또는 조합될 수 있다. 이러한 규칙은 각 트랜잭션에 대한 프로세스의 빈틈없는 제어가 필요한 경우에 유용할 수 있다.
다른 예로서, 에러가 발생하면, 운영 체제는, 어떤 에러 핸들링 성분이, 에러가 생긴 성분과 연관되어 있는지를 판정하고, 해당 에러 핸들링 성부에 대하여 어떤 입력 흐름이 사용되어야 하는지를 판정한다. 다수의 입력이 존재한다면, 가장 최근에 데이터가 기입된 입력을 사용한다.
에러 핸들링이, 앞서 설명한 바와 같이, 성분 또는 서브 그래프가 자신들의 에러를 핸들링하고 에러와 관련해서 진단 또는 작업을 하기 위해 다른 성분에 의해 사용될 수 있는 에러 코드를 생성하는 경우에는 액티브(active) 상태가 될 수 있으며, 그렇지 않으면 패시브(passive) 상태가 될 수 있다. 패시브 시스템에서, 에러가 생긴 그래프는 실패하게 되고, 운영 체제로 하여금, 예컨대 프로세스를 디버깅하기 위한 스택 덤프(stack dump)를 제공함으로써, 에러 핸들링을 제공하도록 한다.
그래프의 각각의 성분은 에러에 개입하여 처리하기 위해 그래프로부터 특별한 요청을 필요로 하지 않는 스케줄러에 암시적으로 접속된다. 스케줄러는 그래프 인스턴스로부터 에러에 관련된 데이터를 제거할 수 있으며, 다른 예에서는, 에러의 특성을 알 필요가 없다. 몇몇 경우에, 스케줄러는 그래프에 할당된 리소스를 단계별로 그들 각각의 풀로 돌려보낼 수 있으며, 이에 의해 그래프는 에러에 의해 영향을 받지 않았던 작업 요소의 처리를 완료할 수 있게 된다.
8. 구현 (implememtation)
본 발명은 하드웨어나 소프트웨어, 또는 이들의 조합(예컨대, 프로그램가능한 로직 어레이)에 의해 구현될 수 있다. 달리 특정하지 않는 한, 개시한 알고리즘은 임의의 특정 컴퓨터나 다른 장치에만 국한되는 것이 아니다. 특히, 다양한 범용의 머신이, 본 명세서에 따라 작성된 프로그램과 함께 사용되거나, 특정의 기능을 수행하기 위해 보다 특화된 장치(예를 들어, 집적 회로)를 구성하는 것이 더 편리하게 될 수 있다. 따라서, 본 발명은 하나 이상의 프로세서, 하나 이상의 데이터 기억 시스템(휘발성 및 불휘발성 메모리 및/또는 기억요소를 포함), 하나 이상의 입력 디바이스 또는 포트, 및 하나 이상의 출력 디바이스 또는 포트를 각각 포함하는 하나 이상의 프로그램된 또는 프로그램가능한(programmed or programmable) 컴퓨터 시스템(분산형, 클라이언트/서버, 또는 그리드와 같은 다양한 구조가 가능함)에서 실행되는 하나 이상의 컴퓨터 프로그램에서 구현될 수 있다. 프로그램 코드는 본 명세서에 개시된 기능을 수행하고 출력 정보를 생성하도록 입력 데이터에 적용된다. 출력 정보는, 주지의 방식에 따라, 하나 이상의 출력 디바이스에 적용된다.
이러한 각각의 프로그램은, 컴퓨터 시스템과 통신을 행하기 위해 임의의 바람직한 컴퓨터 언어(머신, 어셈블리, 또는 상위의 절차적, 논리적 또는 객체지향적 프로그래밍 언어를 포함)로 구현될 수 있다. 어떤 경우에나, 언어는 컴파일링 또는 인터프리팅된 언어가 될 수 있다.
이러한 각각의 컴퓨터 프로그램은, 기억 매체 또는 디바이스가 컴퓨터 시스템에 의해 판독되어, 본 명세서에 개시된 과정을 수행할 때에, 컴퓨터를 구성하고 동작하는, 범용 또는 전용의 프로그램가능한 컴퓨터에 의해 판독가능한 기억 매체 또는 디바이스(예를 들어, 고체 메모리 또는 매체, 또는 자기, 광학 매체)에 바람직하게 기억 또는 다운로드된다. 본 발명의 시스템은, 컴퓨터 프로그램으로 구성된, 컴퓨터로 판독가능한 기억 매체로서 구현될 수 있다, 이 기억 매체는, 컴퓨터 시스템으로 하여금, 본 명세서에 개시한 기능을 수행하도록 특정되고 미리 정해진 방식으로 동작하도록 구성될 수 있다.
이상의 설명은 본 발명의 예시일 뿐으로서 청구범위에 의해 한정되는 본 발명의 범위를 제한하기 위한 것이 아니다. 다른 실시예도 물론 특허 청구범위의 범위 내에 속한다.

Claims (43)

  1. 그래프 기반(graph-based)의 연산(computation)을 사용하여 트랜잭션(transaction)을 처리하기 위한 방법으로서,
    하나 이상의 일련의 연산 그래프(computation graph) 중의 어느 하나의 연산 그래프의 다수의 그래프 요소(graph element) 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하는 단계(305);
    각각의 상기 그래프 요소와 연관된 재사용가능한(reusable) 연산 요소(computation elements)를 포함하는, 상기 연산 그래프의 인스턴스(instance)를, 상기 소정의 트랜잭션과 연관(associate)시키는 단계(310); 및
    상기 그래프를 실행하여 상기 연산을 수행하는 단계(320)
    를 포함하는 것을 특징으로 하는 트랜잭션 처리 방법.
  2. 제1항에 있어서,
    상기 일련의 연산 그래프 내의 그래프의 적어도 몇몇 인스턴스는, 하나 이상의 상기 연산 요소를 공유(share)하는, 트랜잭션 처리 방법.
  3. 제1항에 있어서,
    상기 연산 요소는, 운영 체제 프로세스 및 프로세스 쓰레드(process thread) 중 하나 이상에 의해 실행되는 연산을 포함하는, 트랜잭션 처리 방법.
  4. 제1항에 있어서,
    상기 그래프 요소는 상기 연산 그래프의 정점(vertex)을 포함하는, 트랜잭션 처리 방법.
  5. 제1항에 있어서,
    상기 연산 그래프의 인스턴스를 상기 트랜잭션과 연관시키는 단계는, 상기 연산 그래프 내의 각각의 그래프 요소에 대응하는 연산 요소를, 상기 그래프 요소의 실행을 시작하기 전에, 상기 연산 그래프의 인스턴스에 할당(assign)하는 단계를 포함하는, 트랜잭션 처리 방법.
  6. 제1항에 있어서,
    상기 연산 그래프의 인스턴스를 상기 트랜잭션과 연관시키는 단계는, 상기 연산 그래프 내의 그래프 요소에 대응하는 연산 요소를, 상기 연산 그래프의 인스턴스에 할당하는 단계를 포함하며,
    상기 연산 그래프의 인스턴스에 할당하는 단계는, 상기 인스턴스에 이미 할당된 연산 요소를 사용하여 다른 그래프 요소를 실행한 후에 수행되는, 트랜잭션 처리 방법.
  7. 제1항에 있어서,
    상기 그래프 요소 중의 둘 이상의 그래프 요소는 공통 리소스(common resource)를 사용하며,
    상기 그래프를 실행하여 상기 연산을 수행하는 단계는, 상기 공통 리소스를 사용하는 각각의 상기 그래프 요소를 단일의 연산 요소에 할당하는 단계를 포함하는, 트랜잭션 처리 방법.
  8. 제7항에 있어서,
    상기 단일의 연산 요소는, 상기 그래프 요소가 상기 연산 요소에 할당될 때에 이미 초기화되어 있는, 트랜잭션 처리 방법.
  9. 제7항에 있어서,
    상기 공통 리소스는 데이터베이스(database)를 포함하는, 트랜잭션 처리 방법.
  10. 제7항에 있어서,
    상기 공통 리소스는 특정의 포트(specific port)를 포함하는, 트랜잭션 처리 방법.
  11. 제1항에 있어서,
    상기 트랜잭션에 대한 요청(request)을 수신하는 단계를 더 포함하는 트랜잭션 처리 방법.
  12. 제1항에 있어서,
    상기 연산 그래프가, 상기 트랜잭션과 다른 제2 트랜잭션에 대해 수행될 연산과 연관되는지를 판정하는 단계;
    상기 제2 트랜잭션을, 상기 연산 그래프의 상기 인스턴스와 다른 제2 인스턴스와 연관시키는 단계; 및
    상기 그래프의 제2 인스턴스를 실행하여, 상기 제2 트랜잭션에 대한 연산을 수행하는 단계를 더 포함하는 트랜잭션 처리 방법.
  13. 제12항에 있어서,
    상기 연산 그래프의 상이한 인스턴스를 사용하여 수행되는 트랜잭션에 대한 연산은, 타임 인터리브드(time interleaved) 방식으로 수행되는, 트랜잭션 처리 방법.
  14. 제12항에 있어서,
    상기 트랜잭션이 동시에 여러 개가 처리되는, 트랜잭션 처리 방법.
  15. 제12항에 있어서,
    상기 트랜잭션은 대응하는 연산 그래프에 따라 처리되는 하나 이상의 작업 요소와 각각 연관된, 트랜잭션 처리 방법.
  16. 제15항에 있어서,
    적어도 몇 개의 상기 트랜잭션은, 대응하는 연산 그래프에 따라 처리되는 작업 요소와 각각 하나씩 연관된, 트랜잭션 처리 방법.
  17. 제1항에 있어서,
    적어도 몇몇의 상기 연산 그래프 중의 다수의 인스턴스를 형성하는 단계를 더 포함하는 트랜잭션 처리 방법.
  18. 제1항에 있어서,
    상기 트랜잭션 중의 하나의 트랜잭션에 대한 연산을 수행하는 중에 에러가 생겼음을 확인(identify)하는 단계와, 상기 트랜잭션 중의 다른 하나의 트랜잭션에 대한 연산을 계속해서 수행하는 단계를 더 포함하는 트랜잭션 처리 방법.
  19. 제1항에 있어서,
    다수의 상기 트랜잭션 중의 제1 트랜잭션에 대한 처리를 제1 시간에 시작하고, 상기 다수의 트랜잭션 중의 제2 트랜잭션에 대한 처리를 상기 제1 시간보다 늦은 제2 시간에 시작하며,
    상기 트랜잭션 처리 방법은, 상기 제1 트랜잭션에 대한 연산의 수행을 완료하기 전에 상기 제2 트랜잭션에 대한 연산의 수행을 완료하는 단계를 더 포함하는 트랜잭션 처리 방법.
  20. 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 시스템으로서,
    하나 이상의 일련의 연산 그래프 중의 어느 하나의 연산 그래프의 다수의 그래프 요소 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하기 위한 수단;
    각각의 상기 그래프 요소와 연관된 재사용가능한 연산 요소를 포함하는, 상기 연산 그래프의 인스턴스를, 상기 소정의 트랜잭션과 연관시키기 위한 수단; 및
    상기 그래프를 실행하여 상기 연산을 수행하기 위한 수단
    을 포함하는 것을 특징으로 하는 트랜잭션 처리 시스템.
  21. 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 컴퓨터 프로그램을 기억하는 컴퓨터로 판독가능한 매체로서,
    상기 컴퓨터 프로그램은, 컴퓨터 시스템으로 하여금,
    하나 이상의 일련의 연산 그래프 중의 어느 하나의 연산 그래프의 다수의 그래프 요소 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하고,
    각각의 상기 그래프 요소와 연관된 재사용가능한 연산 요소를 포함하는, 상기 연산 그래프의 인스턴스를, 상기 소정의 트랜잭션과 연관시키며,
    상기 그래프를 실행하여 상기 연산을 수행하도록 하기 위한 명령(instructions)을 포함하는 것을 특징으로 하는 컴퓨터로 판독가능한 매체.
  22. 그래프 기반의 연산을 처리하기 위한 방법에 있어서,
    그래프 내에 그래프 성분(graph components)을 나타내는 정점을 포함하여, 상기 정점을 연결(join)하는 링크에 따라 작업 요소(work elements)를 처리(360)하는 단계;
    상기 그래프 외부의 프로세스에 에러 정보(error information)를 제공하도록 구성된 하나 이상의 에러 핸들링(error-handling) 그래프 성분을 제공하는 단계(390); 및
    데이터를 처리하는 단계로서, 상기 처리를 행하는 동안 에러를 인식한 그래프 성분에 따라(370), 상기 작업 요소 중의 적어도 몇몇 작업 요소를, 상기 에러 핸들링 성분을 나타내는 정점에 대한 하나 이상의 링크에 따라 상기 에러 핸들링 성분으로 다이렉트(direct)하는 단계(380)를 포함해서 상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트(redirect)하는 단계를 포함하는 데이터 처리 단계
    를 포함하는 것을 특징으로 하는 그래프 기반의 연산 처리 방법.
  23. 제22항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 하나 이상의 입력 대기행렬(input queue)로부터 작업 요소를 제거(remove)하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  24. 제22항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 상기 에러 핸들링 그래프 성분으로 다이렉트된 상기 작업 요소를 처리하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  25. 제24항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 에러가 생기기 전에 만들어진 데이터베이스에 대한 변경을 롤백(rolling back)하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  26. 제24항에 있어서,
    상기 데이터를 처리하는 단계는, 상기 에러를 핸들링하는 데에 포함되지 않은 그래프 성분에 대하여, 상기 그래프 성분들로 다이렉트된 작업 요소를 폐기하는(discard) 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  27. 제22항에 있어서,
    서브 그래프(sub-graph)를 제공하는 단계로서, 상기 서브 그래프의 출력으로서 에러 코드(error code)를 제공하도록 구성된 에러 핸들링 서브 그래프 성분을 포함하는 상기 서브 그래프를 제공하는 단계를 더 포함하는 그래프 기반의 연산 처리 방법.
  28. 제25항에 있어서,
    상기 서브 그래프에 의해 제공된 출력이 상기 서브 그래프에서 에러가 발생했음을 나타내는 경우에, 상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계를 더 포함하는 그래프 기반의 연산 처리 방법.
  29. 제22항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 상기 에러를 인식한 상기 그래프로부터 상기 에러 핸들링 그래프 성분으로, 상기 에러가 발생했을 때에 상기 그래프 성분이 처리한 작업 요소를 통신(communicate)하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  30. 제29항에 있어서,
    상기 작업 요소는 상기 에러 핸들링 성분을 나타내는 정점에 대한 링크에 따라 통신이 행해지는, 그래프 기반의 연산 처리 방법.
  31. 제29항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 상기 에러를 인식한 상기 그래프 성분으로부터 상기 에러 핸들링 그래프 성분까지 상기 에러에 관한 정보를 보고(report)하는 통신을 행하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  32. 제31항에 있어서,
    상기 정보의 보고는, 상기 에러를 인식한 상기 그래프 성분과 상기 에러 핸들링 성분 사이에서의 암시적 접속(implicit connection)에 따라 통신이 행해지는, 그래프 기반의 연산 처리 방법.
  33. 제32항에 있어서,
    상기 암시적 접속을, 사용자의 요청에 따라, 상기 에러를 인식한 상기 그래프 성분을 나타내는 정점과 상기 에러 핸들링 성분을 표현하는 정점 사이에 명시적 링크(explicit link)로서 나타내는(reveal) 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  34. 제22항에 있어서,
    상기 에러 핸들링 그래프 성분을 제공하는 단계는, 다수의 에러 핸들링 그래프 성분을 제공하는 단계를 포함하며,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 상기 에러를 인식한 상기 그래프 성분으로부터 제공된 출력에 기초하여 에러 핸들링 그래프 성분을 선택하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  35. 제22항에 있어서,
    상기 데이터를 처리하는 단계는, 처리를 행하는 동안 그래프 성분이 에러를 인식하면, 상기 에러의 원인이 된 작업 요소의 식별정보(identification)를 출력하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  36. 제22항에 있어서,
    상기 데이터를 처리하는 단계는,
    상기 그래프의 제1 성분을 인에이블(enable)시키는 단계;
    상기 에러 핸들링 성분을 디스에이블(disable)시키는 단계; 및
    상기 에러 핸들링 성분 외의 상기 제1 성분의 다운스트림 방향으로의 각각의 성분에 대하여, 상기 성분의 가장 가까운 업스트림 방향의 성분이 인에이블되어 있는 경우에, 상기 성분을 인에이블시키는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  37. 제36항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는,
    인에이블된 각각의 그래프 성분의 실행을 중단(stop)시키는 단계;
    상기 에러를 인식한 성분을 디스에이블시키는 단계;
    상기 에러 핸들링 성분을 인에이블시키는 단계;
    다운스트림 방향의 상기 에러 핸들링 성분이 아닌, 상기 에러를 인식한 성분의 다운스트림 방향의 성분을 디스에이블시키는 단계; 및
    상기 에러 핸들링 성분의 업스트림 방향의 성분을 인에이블시키는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  38. 제22항에 있어서,
    상기 에러 핸들링 그래프 성분으로 연산을 리다이렉트하는 단계는,
    상기 에러가 제1 성분에서 발생한 경우에, 상기 에러가 제1 상태하에서 발생하였다면, 상기 제1 성분으로부터 상기 제1 성분의 업스트림 방향으로의 제1 에러 핸들링 성분으로 프로세스 흐름을 다이렉트하는 단계를 포함하고,
    상기 에러가 제2 상태하에서 발생하였다면, 상기 제1 성분으로부터 상기 제1 성분의 다운스트림 방향으로의 제2 에러 핸들링 성분으로 프로세스 흐름을 다이렉트하는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  39. 제38항에 있어서,
    상기 제1 상태는 카운터가 한계(limit) 이하인 것인, 그래프 기반의 연산 처리 방법.
  40. 상기 제2 상태는 카운터가 한계를 초과한 것인, 그래프 기반의 연산 처리 방법.
  41. 제38항에 있어서,
    상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트하는 단계는, 상기 에러에 앞서 정해졌던 일련의 그래프 성분을 인에이블시키는 단계를 포함하는, 그래프 기반의 연산 처리 방법.
  42. 그래프 기반의 연산을 처리하기 위한 시스템에 있어서,
    그래프 내에 그래프 성분(graph components)을 나타내는 정점을 포함하여, 상기 정점을 연결(join)하는 링크에 따라 작업 요소(work elements)를 처리하며;
    상기 그래프 외부의 프로세스에 에러 정보(error information)를 제공하도록 구성된 하나 이상의 에러 핸들링(error-handling) 그래프 성분을 제공하기 위한 수단; 및
    데이터를 처리하는 수단으로서, 상기 처리를 행하는 동안 에러를 인식한 그래프 성분에 따라, 상기 작업 요소 중의 적어도 몇몇 작업 요소를, 상기 에러 핸들링 성분을 나타내는 정점에 대한 하나 이상의 링크에 따라 상기 에러 핸들링 성분으로 다이렉트(direct)하는 수단을 포함해서 상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트(redirect)하는 수단을 포함하는 데이터 처리 수단
    을 포함하는 것을 특징으로 하는 그래프 기반의 연산 처리 시스템.
  43. 그래프 기반의 연산을 처리하기 위한 컴퓨터 프로그램을 기억하는 컴퓨터로 판독가능한 매체에 있어서,
    상기 컴퓨터 프로그램은, 컴퓨터 시스템으로 하여금,
    그래프 내에 그래프 성분을 나타내는 정점을 포함하여, 상기 정점을 연결하는 링크에 따라 작업 요소를 처리하며;
    상기 그래프 외부의 프로세스에 에러 정보를 제공하도록 구성된 하나 이상의 에러 핸들링 그래프 성분을 제공하고; 및
    데이터의 처리를 위해, 상기 처리를 행하는 동안 에러를 인식한 그래프 성분에 따라, 상기 작업 요소 중의 적어도 몇몇 작업 요소를, 상기 에러 핸들링 성분을 나타내는 정점에 대한 하나 이상의 링크에 따라 상기 에러 핸들링 성분으로 다이렉트(direct)하는 것을 포함해서 상기 에러 핸들링 그래프 성분으로 처리를 리다이렉트(redirect)하도록 하는 명령을 포함하는 것을 특징으로 하는 컴퓨터로 판독가능한 매체.
KR1020107003442A 2007-07-26 2008-07-25 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 KR101635945B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US95207507P 2007-07-26 2007-07-26
US60/952,075 2007-07-26

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017122A Division KR101758670B1 (ko) 2007-07-26 2008-07-25 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20100046198A true KR20100046198A (ko) 2010-05-06
KR101635945B1 KR101635945B1 (ko) 2016-07-04

Family

ID=40281847

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167017122A KR101758670B1 (ko) 2007-07-26 2008-07-25 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
KR1020107003442A KR101635945B1 (ko) 2007-07-26 2008-07-25 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167017122A KR101758670B1 (ko) 2007-07-26 2008-07-25 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템

Country Status (8)

Country Link
US (1) US8706667B2 (ko)
EP (2) EP2234017A3 (ko)
JP (3) JP5520219B2 (ko)
KR (2) KR101758670B1 (ko)
CN (2) CN101821721B (ko)
AU (1) AU2008279001B2 (ko)
CA (2) CA2965896C (ko)
WO (1) WO2009015342A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
EP2527983A3 (en) * 2006-08-10 2013-06-12 Ab Initio Technology LLC Distributing services in graph-based computations
US8706667B2 (en) 2007-07-26 2014-04-22 Ab Initio Technology Llc Transactional graph-based computation with error handling
US7979479B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Transaction-controlled graph processing and management
CN105843684B (zh) * 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
US9032362B2 (en) * 2012-09-10 2015-05-12 Sap Se System and method for generating high performance calculators for calculation graphs
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US11061539B2 (en) * 2013-03-15 2021-07-13 The Mathworks, Inc. Reference nodes in a computational graph
CA2909751C (en) 2013-04-23 2021-02-16 Ab Initio Technology Llc Controlling tasks performed by a computing system
US9348560B2 (en) 2013-06-04 2016-05-24 Qualcomm Incorporated Efficient execution of graph-based programs
WO2015058216A1 (en) * 2013-10-20 2015-04-23 Pneuron Corp. Event-driven data processing system
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
US20150186427A1 (en) * 2013-12-26 2015-07-02 Telefonica Digital Espana, S.L.U. Method and system of analyzing dynamic graphs
WO2016144299A1 (en) * 2015-03-06 2016-09-15 Hewlett Packard Enterprise Development Lp Graph update flush to a shared memory
US20160364794A1 (en) * 2015-06-09 2016-12-15 International Business Machines Corporation Scoring transactional fraud using features of transaction payment relationship graphs
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10120744B1 (en) * 2015-11-20 2018-11-06 VCE IP Holding Company LLC Graph execution system and method for a computing environment
WO2017112654A2 (en) 2015-12-21 2017-06-29 Ab Initio Technology Llc Sub-graph interface generation
US10678515B1 (en) 2016-09-20 2020-06-09 Amazon Technologies, Inc. Simplifying and reusing visual programming graphs
US10642580B1 (en) * 2016-09-20 2020-05-05 Amazon Technologies, Inc. Simplifying and reusing visual programming graphs
US10318355B2 (en) 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US11057276B2 (en) 2017-10-04 2021-07-06 Servicenow, Inc. Bulk service mapping
US10732940B2 (en) 2018-04-27 2020-08-04 EMC IP Holding Company LLC Enterprise services framework for presentation layer management
CN110515681B (zh) * 2018-05-21 2024-04-09 吕纪竹 一种实时判断流数据自身给定延迟重复性的方法
CN110515680B (zh) * 2018-05-21 2024-04-09 吕纪竹 一种实时判断大数据自身给定延迟重复性的方法
WO2020068927A2 (en) * 2018-09-25 2020-04-02 Ab Initio Technology Llc A dedicated audit port for implementing recoverability in outputting audit data
US10740537B2 (en) * 2018-11-01 2020-08-11 Dell Products L.P. Enterprise form dependency visualization and management
US11250059B2 (en) 2020-01-09 2022-02-15 Oracle International Corporation Optimizing graph queries by performing early pruning
US11675785B2 (en) 2020-01-31 2023-06-13 Oracle International Corporation Dynamic asynchronous traversals for distributed graph queries
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11456946B2 (en) 2020-06-11 2022-09-27 Oracle International Corporation Regular path queries (RPQS) for distributed graphs

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006504160A (ja) * 2002-10-10 2006-02-02 エービー イニティオ ソフトウェア コーポレーション グラフに基づく計算の起動および制御
KR20090018113A (ko) * 2006-05-16 2009-02-19 아브 이니티오 소프트웨어 엘엘시 그래프 기반 계산에서의 계산 자원의 관리

Family Cites Families (182)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US179923A (en) * 1876-07-18 Improvement in hose-couplings
US3662343A (en) * 1970-07-29 1972-05-09 Docutel Corp Credit card automatic currency dispenser
US3662401A (en) * 1970-09-23 1972-05-09 Collins Radio Co Method of program execution
US4814979A (en) * 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4720780A (en) 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
JPS6347841A (ja) * 1986-08-15 1988-02-29 Hitachi Ltd デ−タフロ−計算機
US5127104A (en) * 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JPH02272645A (ja) * 1989-04-14 1990-11-07 Hitachi Ltd プログラム・デバツグ支援方法
US5357632A (en) * 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
US5280619A (en) * 1990-05-17 1994-01-18 Texas Instruments Incorporated System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions
JPH05134886A (ja) * 1990-11-30 1993-06-01 Fujitsu Ltd デツドロツク検出方式
US5323452A (en) 1990-12-18 1994-06-21 Bell Communications Research, Inc. Visual programming of telephone network call processing logic
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US6400996B1 (en) * 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US5333319A (en) * 1992-03-02 1994-07-26 International Business Machines Corporation Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
JPH07168743A (ja) * 1993-12-16 1995-07-04 Nec Corp 利用者プログラム異常終了時の情報表示システム
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US6044211A (en) * 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
JPH08106540A (ja) * 1994-10-06 1996-04-23 Toshiba Corp 編集装置
US5692168A (en) 1994-10-18 1997-11-25 Cyrix Corporation Prefetch buffer using flow control bit to identify changes of flow within the code stream
US5701400A (en) 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US5805462A (en) 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
JP3154942B2 (ja) 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5630047A (en) 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
JP3258228B2 (ja) 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US7415466B2 (en) 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
US6006242A (en) 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5857204A (en) * 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP3672208B2 (ja) * 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
US6016516A (en) * 1996-08-07 2000-01-18 Fuji Xerox Co. Ltd. Remote procedure processing device used by at least two linked computer systems
US5930794A (en) * 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
US6038558A (en) * 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
US6151531A (en) * 1996-12-12 2000-11-21 Charles Frankel Et Al System and method for managing the alteration of garments
US5924095A (en) * 1997-02-05 1999-07-13 Oracle Corporation Processing distributed transactions in heterogeneous computing environments using two-phase commit
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5933640A (en) 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US6088716A (en) 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6032158A (en) * 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6044394A (en) * 1997-07-21 2000-03-28 International Business Machines Corporation Managing independently executing computer tasks that are interrelated by dataflow
US6145017A (en) * 1997-08-05 2000-11-07 Adaptec, Inc. Data alignment system for a hardware accelerated command interpreter engine
US6173276B1 (en) * 1997-08-21 2001-01-09 Scicomp, Inc. System and method for financial instrument modeling and valuation
US6574661B1 (en) * 1997-09-26 2003-06-03 Mci Communications Corporation Integrated proxy interface for web based telecommunication toll-free network management using a network manager for downloading a call routing tree to client
US5958004A (en) * 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US6014670A (en) * 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6339775B1 (en) * 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6044374A (en) * 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
US6272650B1 (en) * 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6437796B2 (en) 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6256637B1 (en) 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6675189B2 (en) 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6480876B2 (en) 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6314114B1 (en) 1998-06-23 2001-11-06 Oracle Corporation Distributed resource management
JP2000010788A (ja) * 1998-06-25 2000-01-14 Sharp Corp 緊急動作処理機能を有するコンピュータ装置
US6259988B1 (en) 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6608628B1 (en) 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users
US6570579B1 (en) 1998-11-09 2003-05-27 Broadcom Corporation Graphics display system
JP4094752B2 (ja) * 1998-11-27 2008-06-04 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US6449711B1 (en) 1999-02-04 2002-09-10 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs
US6538651B1 (en) * 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6728879B1 (en) * 1999-06-02 2004-04-27 Microsoft Corporation Transactional log with multi-sector log block validation
US6816825B1 (en) 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
JP2001022571A (ja) * 1999-07-09 2001-01-26 Riso Kagaku Corp 電子機器及び該電子機器の制御プログラム書き換え方法
US6647408B1 (en) * 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6715145B1 (en) * 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US20020129340A1 (en) 1999-10-28 2002-09-12 Tuttle Douglas D. Reconfigurable isomorphic software representations
US7137116B2 (en) 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
US6879946B2 (en) 1999-11-30 2005-04-12 Pattern Discovery Software Systems Ltd. Intelligent modeling, transformation and manipulation system
US6584581B1 (en) * 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
US7409679B2 (en) * 1999-12-20 2008-08-05 Headway Research Limited System and method for computer-aided graph-based dependency analysis
US6848100B1 (en) 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
US7062483B2 (en) 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
US6922685B2 (en) * 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US6813761B1 (en) 2000-06-30 2004-11-02 Microsoft Corporation Methods for enhancing flow analysis
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6832369B1 (en) 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US6496961B2 (en) 2000-10-27 2002-12-17 Nec Usa, Inc. Dynamic detection and removal of inactive clauses in SAT with application in image computation
US20020152244A1 (en) 2000-12-22 2002-10-17 International Business Machines Corporation Method and apparatus to dynamically create a customized user interface based on a document type definition
US6804800B2 (en) * 2000-12-29 2004-10-12 Intel Corporation Method and apparatus for detecting and recovering from errors in a source synchronous bus
JP4294879B2 (ja) * 2001-02-05 2009-07-15 株式会社日立製作所 サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム
US20020111876A1 (en) 2001-02-09 2002-08-15 Rudraraju Panduranga R. Transaction aggregation system and method
US7082386B2 (en) 2001-02-21 2006-07-25 International Business Machines Corporation Generalized software modeling tool
US7188091B2 (en) * 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
US6651234B2 (en) 2001-04-06 2003-11-18 Nec Corporation Partition-based decision heuristics for SAT and image computation using SAT and BDDs
US20020147745A1 (en) * 2001-04-09 2002-10-10 Robert Houben Method and apparatus for document markup language driven server
US7082604B2 (en) * 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US20040093559A1 (en) * 2001-05-25 2004-05-13 Ruth Amaru Web client for viewing and interrogating enterprise data semantically
GB2376094A (en) 2001-05-30 2002-12-04 Ibm Flexible navigation of a workflow graph in a data processing system
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US20030033432A1 (en) 2001-08-08 2003-02-13 Simpson Shell S. Web based imaging service that converts web pages into content on behalf of another web site
US20040006745A1 (en) * 2001-08-31 2004-01-08 Van Helden Wico Methods, apparatuses, system, and articles for associating metadata with datastream
US7165030B2 (en) 2001-09-17 2007-01-16 Massachusetts Institute Of Technology Concatenative speech synthesis using a finite-state transducer
US7130484B2 (en) 2001-10-15 2006-10-31 Jonas August Biased curve indicator random field filters for enhancement of contours in images
US7085426B2 (en) 2001-10-15 2006-08-01 Jonas August Volterra filters for enhancement of contours in images
DE10152213B4 (de) 2001-10-23 2006-04-27 Onespin Solutions Gmbh Verfahren zur Verifikation digitaler arithmetischer Schaltungen mittels eines Äquivalenzvergleiches
US7092401B2 (en) * 2001-11-15 2006-08-15 International Business Machines Corporation Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram
DE60106467T2 (de) * 2001-12-14 2006-02-23 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Installieren Überwachungsagenten, System und Computerprogramm von Objekten in einem IT-Netz Überwachung
US7240247B2 (en) * 2002-04-29 2007-07-03 Intel Corporation Providing a chain of tokenized error and state information for a call stack
JP2003345610A (ja) * 2002-05-27 2003-12-05 Nippon Telegr & Teleph Corp <Ntt> トランザクション処理装置、同装置のトランザクション処理方法、トランザクション処理プログラムおよび同プログラムを記録したコンピュータ読み取り可能な記録媒体
US20040041838A1 (en) * 2002-09-04 2004-03-04 Adusumilli Venkata J.R.B. Method and system for graphing data
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7694272B2 (en) * 2002-10-21 2010-04-06 Sungard (Israel) Ltd Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language
US7711772B2 (en) * 2002-11-15 2010-05-04 Schlumberger Technology Corporation Web-based system and method for electronic data delivery
US7430747B2 (en) * 2002-12-04 2008-09-30 Microsoft Corporation Peer-to peer graphing interfaces and methods
US7441008B2 (en) 2002-12-18 2008-10-21 International Business Machines Corporation Method for correlating transactions and messages
US20050193056A1 (en) * 2002-12-26 2005-09-01 Schaefer Diane E. Message transfer using multiplexed connections in an open system interconnection transaction processing environment
US20040148373A1 (en) 2003-01-23 2004-07-29 International Business Machines Corporation Service level agreement compliance measurement
US7707564B2 (en) * 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US7395540B2 (en) * 2003-03-12 2008-07-01 Microsoft Corporation Automated business software application integration
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7417645B2 (en) * 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7669129B2 (en) * 2003-04-04 2010-02-23 Avid Technology, Inc. Graphical user interface for providing editing of transform hierarchies within an effects tree
US7665025B2 (en) * 2003-04-16 2010-02-16 The Mathworks, Inc. Signal navigation and label propagation in block diagrams
US20040225657A1 (en) * 2003-05-07 2004-11-11 Panacea Corporation Web services method and system
US8265979B2 (en) 2003-06-17 2012-09-11 International Business Machines Corporation Automatic generation of process models
EP1636730A2 (en) * 2003-06-18 2006-03-22 Applera Corporation Methods and systems for the analysis of biological sequence data
EP1639510A1 (en) 2003-06-24 2006-03-29 BAE Systems PLC A method, tool and system for increasing the efficiency of a design process
CA2891145C (en) * 2003-06-25 2019-02-19 Craig W. Stanfill Computer-aided parallelizing of computation graphs
EP1652072A4 (en) * 2003-07-11 2008-12-31 Computer Ass Think Inc METHOD AND APPARATUS FOR PROCESSING PARALLEL ACTIONS
US7590971B2 (en) * 2003-08-01 2009-09-15 Idx Investment Corporation Enterprise task manager
GB0318196D0 (en) * 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7444595B2 (en) * 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
WO2005022417A2 (en) * 2003-08-27 2005-03-10 Ascential Software Corporation Methods and systems for real time integration services
US7174479B2 (en) 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
US20050102670A1 (en) * 2003-10-21 2005-05-12 Bretl Robert F. Shared object memory with object management for multiple virtual machines
US20080052687A1 (en) * 2003-11-03 2008-02-28 Agustin Gonzales-Tuchmann Development environment for data transformation applications
US7296072B2 (en) * 2003-12-12 2007-11-13 International Business Machines Corporation Enhanced port type agnostic proxy support for web services intermediaries
US7404189B2 (en) * 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
US7467383B2 (en) 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
US20050256818A1 (en) 2004-04-30 2005-11-17 Xerox Corporation Workflow auto generation from user constraints and hierarchical dependence graphs for workflows
US7143120B2 (en) * 2004-05-03 2006-11-28 Microsoft Corporation Systems and methods for automated maintenance and repair of database and file systems
JP2007536634A (ja) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US7415704B2 (en) * 2004-05-20 2008-08-19 Sap Ag Sharing objects in runtime systems
US7614037B2 (en) 2004-05-21 2009-11-03 Microsoft Corporation Method and system for graph analysis and synchronization
US7316001B2 (en) * 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
JP2008503011A (ja) 2004-06-08 2008-01-31 ダートデバイセズ コーポレーション ユニバーサルデバイスインタオペラビリティプラットフォームのためのデバイスチームリクルートメントおよびコンテンツレンディションのアーキテクチャ装置および方法
US20060064147A1 (en) * 2004-07-02 2006-03-23 Almqvist Hans O Cooling garment having phase change material in its extremity portions
US7398514B2 (en) * 2004-09-29 2008-07-08 Microsoft Corporation Test automation stack layering
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
JP2006127440A (ja) * 2004-10-29 2006-05-18 Satoshi Obana 敷衍化した例外処理方法、およびそのコンピュータ読み取り可能なプログラム
JP4759983B2 (ja) * 2004-11-04 2011-08-31 船井電機株式会社 ディスク装置のファームウェア書き換え方法、及びファームウェア書き換えプログラム
US7598953B2 (en) * 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US7487442B2 (en) * 2004-12-20 2009-02-03 Microsoft Corporation Method, system, and computer-readable medium for the layout of automatically-placed elements and user-placed elements in a chart
US7665093B2 (en) * 2004-12-22 2010-02-16 Microsoft Corporation Synchronization of runtime and application state via batching of workflow transactions
WO2006078751A2 (en) 2005-01-18 2006-07-27 Everypoint, Inc. Systems and methods for processing changing data
US7620947B2 (en) * 2005-03-11 2009-11-17 Autodesk, Inc. Enhanced directed graph representation for dependency systems
US7505975B2 (en) * 2005-04-14 2009-03-17 Bea Systems, Inc. Use of transaction context to select single database instance for global transaction
JP4246176B2 (ja) 2005-04-25 2009-04-02 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7716630B2 (en) * 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US20070118839A1 (en) * 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US8073671B2 (en) 2006-03-31 2011-12-06 Microsoft Corporation Dynamic software performance models
EP2527983A3 (en) * 2006-08-10 2013-06-12 Ab Initio Technology LLC Distributing services in graph-based computations
US7844946B2 (en) * 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
JP4073033B1 (ja) 2007-04-27 2008-04-09 透 降矢 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
US8706667B2 (en) 2007-07-26 2014-04-22 Ab Initio Technology Llc Transactional graph-based computation with error handling
US8347292B2 (en) 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout
WO2009039352A1 (en) * 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US20090193416A1 (en) * 2008-01-24 2009-07-30 Nec Laboratories America, Inc. Decidability of reachability for threads communicating via locks
US8797178B2 (en) 2008-03-10 2014-08-05 Microsoft Corporation Efficient stream sharing for multi-user sensor data collection
KR101499599B1 (ko) 2008-06-30 2015-03-18 아브 이니티오 테크놀로지 엘엘시 그래프 기반 계산에서의 데이터 로깅
US20100070955A1 (en) * 2008-07-08 2010-03-18 Nec Laboratories America Alias analysis for concurrent software programs
US20100169137A1 (en) * 2008-12-31 2010-07-01 Ebay Inc. Methods and systems to analyze data using a graph
US7979479B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Transaction-controlled graph processing and management
US8635694B2 (en) 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
CN105843684B (zh) * 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
US7992040B2 (en) * 2009-02-20 2011-08-02 International Business Machines Corporation Root cause analysis by correlating symptoms with asynchronous changes
US8327377B2 (en) 2009-04-30 2012-12-04 Ca, Inc. Detecting, logging and tracking component dependencies in web service transactions
US8205113B2 (en) 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
WO2012027560A1 (en) 2010-08-25 2012-03-01 Ab Initio Technology Llc Evaluating dataflow graph characteristics
US8566441B2 (en) * 2010-11-22 2013-10-22 Microsoft Corporation Network latency estimation for mobile devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006504160A (ja) * 2002-10-10 2006-02-02 エービー イニティオ ソフトウェア コーポレーション グラフに基づく計算の起動および制御
US20070022077A1 (en) * 2002-10-10 2007-01-25 Ab Inition Software Company, A Delaware Corporation Startup and Control of Graph-Based Computation
KR20090018113A (ko) * 2006-05-16 2009-02-19 아브 이니티오 소프트웨어 엘엘시 그래프 기반 계산에서의 계산 자원의 관리

Also Published As

Publication number Publication date
KR101635945B1 (ko) 2016-07-04
CN107423046B (zh) 2021-08-06
CN101821721A (zh) 2010-09-01
JP5520219B2 (ja) 2014-06-11
US8706667B2 (en) 2014-04-22
CN101821721B (zh) 2017-04-12
AU2008279001B2 (en) 2014-02-06
CA2697306C (en) 2017-06-20
CN107423046A (zh) 2017-12-01
KR20160078523A (ko) 2016-07-04
JP2016106329A (ja) 2016-06-16
CA2965896C (en) 2020-01-07
KR101758670B1 (ko) 2017-07-18
JP2014130647A (ja) 2014-07-10
EP2174222A4 (en) 2010-10-27
AU2008279001A1 (en) 2009-01-29
WO2009015342A1 (en) 2009-01-29
CA2697306A1 (en) 2009-01-29
JP6177179B2 (ja) 2017-08-09
EP2234017A2 (en) 2010-09-29
EP2174222A1 (en) 2010-04-14
CA2965896A1 (en) 2009-01-29
US20090030863A1 (en) 2009-01-29
EP2234017A3 (en) 2010-10-27
JP2010534891A (ja) 2010-11-11

Similar Documents

Publication Publication Date Title
KR101635945B1 (ko) 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
JP5897747B2 (ja) フォールトトレラントバッチ処理
US8667329B2 (en) Processing transactions in graph-based applications
AU2003279228C1 (en) Startup and control of graph-based computation
US8387066B1 (en) Dependency-based task management using set of preconditions to generate scheduling data structure in storage area network
US8341632B2 (en) Composite task framework
AU2007202782A1 (en) Startup and control of graph-based computation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190614

Year of fee payment: 4