KR101635945B1 - 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 - Google Patents
에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 Download PDFInfo
- Publication number
- KR101635945B1 KR101635945B1 KR1020107003442A KR20107003442A KR101635945B1 KR 101635945 B1 KR101635945 B1 KR 101635945B1 KR 1020107003442 A KR1020107003442 A KR 1020107003442A KR 20107003442 A KR20107003442 A KR 20107003442A KR 101635945 B1 KR101635945 B1 KR 101635945B1
- Authority
- KR
- South Korea
- Prior art keywords
- graph
- transaction
- delete delete
- instance
- component
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0736—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Complex Calculations (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
그래프 기반의 연산을 사용하여 트랜잭션을 처리하는 과정에는, 하나 이상의 일련의 연산 그래프 중의 어느 하나의 연산 그래프의 다수의 그래프 요소 중의 하나 이상이, 소정의 트랜잭션에 대해 수행해야 할 연산을 포함하는 지를 판정하는 단계, 각각의 그래프 요소와 연관된 재사용가능한 연산 요소를 포함하는, 연산 그래프의 인스턴스를, 소정의 트랜잭션과 연관시키는 단계, 및 그래프를 실행하여 연산을 수행하는 단계를 포함한다.
Description
본 발명은 그래픽에 기반을 둔 연산의 실행에 관한 것이다.
관련출원
본 출원은 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은 에러-핸들링 그래프의 예이다.
도 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 (117)
- 그래프 기반(graph-based)의 연산(computation)을 사용하여 트랜잭션(transaction)을 처리하기 위한 방법으로서,
복수의 연산 그래프(computation graph) 중 특정 연산 그래프가, 소정의 트랜잭션에 대해 수행해야 할 연산과 연관되는 적어도 하나의 그래프 요소(graph element)를 포함하는지를 판정하는 단계(305);
상기 특정 연산 그래프의 인스턴스에서 각각의 그래프 요소를 인스턴스화(instantiate)하도록 구성되는 연산 요소(computation elements)를 포함하는, 상기 특정 연산 그래프의 인스턴스를, 상기 소정의 트랜잭션과 연관시키는 단계(310); 및
상기 특정 연산 그래프의 인스턴스를 실행하여 상기 연산을 수행하는 단계(320)
를 포함하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 복수의 연산 그래프 중 연산 그래프의 적어도 몇몇 인스턴스는, 하나 이상의 상기 연산 요소를 공유(share)하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 연산 요소는, 운영 체제 프로세스 및 프로세스 쓰레드(process thread) 중 하나 이상에 의해 실행되는 연산을 포함하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 그래프 요소는 상기 연산 그래프의 정점(vertex)을 포함하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 특정 연산 그래프의 인스턴스를 상기 소정의 트랜잭션과 연관시키는 단계는, 상기 특정 연산 그래프 내의 각각의 그래프 요소에 대응하는 연산 요소를, 상기 그래프 요소의 실행을 시작하기 전에, 상기 특정 연산 그래프의 인스턴스에 할당(assign)하는 단계를 포함하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 특정 연산 그래프의 인스턴스를 상기 소정의 트랜잭션과 연관시키는 단계는, 상기 특정 연산 그래프 내의 그래프 요소에 대응하는 연산 요소를, 상기 인스턴스에 이미 할당된 연산 요소를 사용하여 다른 그래프 요소를 실행한 후에 상기 특정 연산 그래프의 인스턴스에 할당하는 단계를 포함하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 그래프 요소 중의 둘 이상의 그래프 요소는 공통 리소스(common resource)를 사용하며,
상기 특정 연산 그래프의 인스턴스를 실행하여 상기 연산을 수행하는 단계는, 상기 공통 리소스를 사용하는 각각의 상기 그래프 요소를 단일의 연산 요소에 할당하는 단계를 포함하는, 트랜잭션 처리 방법. - 제7항에 있어서,
상기 단일의 연산 요소는, 상기 그래프 요소가 상기 연산 요소에 할당될 때에 이미 초기화되어 있는, 트랜잭션 처리 방법. - 제7항에 있어서,
상기 공통 리소스는 데이터베이스(database)를 포함하는, 트랜잭션 처리 방법. - 제7항에 있어서,
상기 공통 리소스는 특정의 포트(specific port)를 포함하는, 트랜잭션 처리 방법. - 제1항에 있어서,
상기 트랜잭션에 대한 요청(request)을 수신하는 단계를 더 포함하는 트랜잭션 처리 방법. - 제1항에 있어서,
상기 특정 연산 그래프가 제2 트랜잭션에 대해 수행될 연산과 연관되는지를 판정하는 단계;
상기 제2 트랜잭션을, 상기 특정 연산 그래프의 제2 인스턴스와 연관시키는 단계; 및
상기 특정 연산 그래프의 제2 인스턴스를 실행하여, 상기 제2 트랜잭션에 대한 연산을 수행하는 단계를 더 포함하는 트랜잭션 처리 방법. - 제12항에 있어서,
상기 연산 그래프의 상이한 인스턴스를 사용하여 수행되는 트랜잭션에 대한 연산은, 타임 인터리브드(time interleaved) 방식으로 수행되는, 트랜잭션 처리 방법. - 제12항에 있어서,
상기 트랜잭션이 동시에 여러 개가 처리되는, 트랜잭션 처리 방법. - 제12항에 있어서,
상기 트랜잭션은 대응하는 연산 그래프에 따라 처리되는 하나 이상의 작업 요소와 각각 연관된, 트랜잭션 처리 방법. - 제15항에 있어서,
적어도 몇 개의 상기 트랜잭션은, 대응하는 연산 그래프에 따라 처리되는 작업 요소와 각각 하나씩 연관된, 트랜잭션 처리 방법. - 제1항에 있어서,
적어도 몇몇의 상기 연산 그래프 중의 복수의 인스턴스를 형성하는 단계를 더 포함하는 트랜잭션 처리 방법. - 제1항에 있어서,
상기 트랜잭션 중의 하나의 트랜잭션에 대한 연산을 수행하는 중에 에러가 생겼음을 확인(identify)하는 단계와, 상기 트랜잭션 중의 다른 하나의 트랜잭션에 대한 연산을 계속해서 수행하는 단계를 더 포함하는 트랜잭션 처리 방법. - 제1항에 있어서,
복수의 트랜잭션 중의 제1 트랜잭션에 대한 처리를 제1 시간에 시작하고, 상기 복수의 트랜잭션 중의 제2 트랜잭션에 대한 처리를 상기 제1 시간보다 늦은 제2 시간에 시작하며,
상기 트랜잭션 처리 방법은, 상기 제1 트랜잭션에 대한 연산의 수행을 완료하기 전에 상기 제2 트랜잭션에 대한 연산의 수행을 완료하는 단계를 더 포함하는 트랜잭션 처리 방법. - 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 시스템으로서,
복수의 연산 그래프 중 특정 연산 그래프가, 소정의 트랜잭션에 대해 수행해야 할 연산과 연관되는 적어도 하나의 그래프 요소를 포함하는지를 판정하기 위한 수단;
상기 특정 연산 그래프의 인스턴스에서 각각의 그래프 요소를 인스턴스화하도록 구성되는 연산 요소를 포함하는, 상기 특정 연산 그래프의 인스턴스를, 상기 소정의 트랜잭션과 연관시키기 위한 수단; 및
상기 특정 연산 그래프의 인스턴스를 실행하여 상기 연산을 수행하기 위한 수단
을 포함하는, 트랜잭션 처리 시스템. - 그래프 기반의 연산을 사용하여 트랜잭션을 처리하기 위한 컴퓨터 프로그램을 기억하는 컴퓨터로 판독가능한 매체로서,
상기 컴퓨터 프로그램은, 컴퓨터 시스템으로 하여금,
복수의 연산 그래프 중 특정 연산 그래프가, 소정의 트랜잭션에 대해 수행해야 할 연산과 연관되는 적어도 하나의 그래프 요소를 포함하는지를 판정하도록 하고;
상기 특정 연산 그래프의 인스턴스에서 각각의 그래프 요소를 인스턴스화하도록 구성되는 연산 요소를 포함하는, 상기 특정 연산 그래프의 인스턴스를, 상기 소정의 트랜잭션과 연관시키도록 하며;
상기 특정 연산 그래프의 인스턴스를 실행하여 상기 연산을 수행하도록 하기 위한 명령을 포함하는, 컴퓨터로 판독가능한 매체. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제20항에 있어서,
상기 복수의 연산 그래프 중 연산 그래프의 적어도 몇몇 인스턴스는, 하나 이상의 상기 연산 요소를 공유하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 연산 요소는, 운영 체제 프로세스 및 프로세스 쓰레드 중 하나 이상에 의해 실행되는 연산을 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 그래프 요소는 상기 연산 그래프의 정점을 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 특정 연산 그래프의 인스턴스를 상기 소정의 트랜잭션과 연관시키는 것은, 상기 특정 연산 그래프 내의 각각의 그래프 요소에 대응하는 연산 요소를, 상기 그래프 요소의 실행을 시작하기 전에, 상기 특정 연산 그래프의 인스턴스에 할당하는 것을 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 특정 연산 그래프의 인스턴스를 상기 소정의 트랜잭션과 연관시키는 것은, 상기 특정 연산 그래프 내의 그래프 요소에 대응하는 연산 요소를, 상기 인스턴스에 이미 할당된 연산 요소를 사용하여 다른 그래프 요소를 실행한 후에 상기 특정 연산 그래프의 인스턴스에 할당하는 것을 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 그래프 요소 중의 둘 이상의 그래프 요소는 공통 리소스를 사용하며,
상기 특정 연산 그래프의 인스턴스를 실행하여 상기 연산을 수행하는 것은, 상기 공통 리소스를 사용하는 각각의 상기 그래프 요소를 단일의 연산 요소에 할당하는 것을 포함하는, 트랜잭션 처리 시스템. - 제49항에 있어서,
상기 단일의 연산 요소는, 상기 그래프 요소가 상기 연산 요소에 할당될 때에 이미 초기화되어 있는, 트랜잭션 처리 시스템. - 제49항에 있어서,
상기 공통 리소스는 데이터베이스를 포함하는, 트랜잭션 처리 시스템. - 제49항에 있어서,
상기 공통 리소스는 특정의 포트를 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 트랜잭션의 처리는 상기 트랜잭션에 대한 요청을 수신하는 것을 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 특정 연산 그래프가 제2 트랜잭션에 대해 수행될 연산과 연관되는지를 판정하기 위한 수단;
상기 제2 트랜잭션을, 상기 특정 연산 그래프의 제2 인스턴스와 연관시키기 위한 수단; 및
상기 특정 연산 그래프의 제2 인스턴스를 실행하여, 상기 제2 트랜잭션에 대한 연산을 수행하기 위한 수단을 더 포함하는, 트랜잭션 처리 시스템. - 제54항에 있어서,
상기 연산 그래프의 상이한 인스턴스를 사용하여 수행되는 트랜잭션에 대한 연산은, 타임 인터리브드 방식으로 수행되는, 트랜잭션 처리 시스템. - 제54항에 있어서,
상기 트랜잭션이 동시에 여러 개가 처리되는, 트랜잭션 처리 시스템. - 제54항에 있어서,
상기 트랜잭션은 대응하는 연산 그래프에 따라 처리되는 하나 이상의 작업 요소와 각각 연관된, 트랜잭션 처리 시스템. - 제57항에 있어서,
적어도 몇 개의 상기 트랜잭션은, 대응하는 연산 그래프에 따라 처리되는 작업 요소와 각각 하나씩 연관된, 트랜잭션 처리 시스템. - 제20항에 있어서,
적어도 몇몇의 상기 연산 그래프 중의 복수의 인스턴스를 형성하기 위한 수단을 더 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
상기 트랜잭션 중의 하나의 트랜잭션에 대한 연산을 수행하는 중에 에러가 생겼음을 확인하고, 상기 트랜잭션 중의 다른 하나의 트랜잭션에 대한 연산을 계속해서 수행하기 위한 수단을 더 포함하는, 트랜잭션 처리 시스템. - 제20항에 있어서,
복수의 트랜잭션 중의 제1 트랜잭션에 대한 처리를 제1 시간에 시작하고, 상기 복수의 트랜잭션 중의 제2 트랜잭션에 대한 처리를 상기 제1 시간보다 늦은 제2 시간에 시작하며,
상기 트랜잭션 처리 시스템은, 상기 제1 트랜잭션에 대한 연산의 수행을 완료하기 전에 상기 제2 트랜잭션에 대한 연산의 수행을 완료하기 위한 수단을 더 포함하는, 트랜잭션 처리 시스템. - 제21항에 있어서,
상기 복수의 연산 그래프 중 연산 그래프의 적어도 몇몇 인스턴스는, 하나 이상의 상기 연산 요소를 공유하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 연산 요소는, 운영 체제 프로세스 및 프로세스 쓰레드 중 하나 이상에 의해 실행되는 연산을 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 그래프 요소는 상기 연산 그래프의 정점을 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 특정 연산 그래프의 인스턴스를 상기 소정의 트랜잭션과 연관시키는 것은, 상기 특정 연산 그래프 내의 각각의 그래프 요소에 대응하는 연산 요소를, 상기 그래프 요소의 실행을 시작하기 전에, 상기 특정 연산 그래프의 인스턴스에 할당하는 것을 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 특정 연산 그래프의 인스턴스를 상기 소정의 트랜잭션과 연관시키는 것은, 상기 특정 연산 그래프 내의 그래프 요소에 대응하는 연산 요소를, 상기 인스턴스에 이미 할당된 연산 요소를 사용하여 다른 그래프 요소를 실행한 후에 상기 특정 연산 그래프의 인스턴스에 할당하는 것을 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 그래프 요소 중의 둘 이상의 그래프 요소는 공통 리소스를 사용하며,
상기 특정 연산 그래프의 인스턴스를 실행하여 상기 연산을 수행하는 것은, 상기 공통 리소스를 사용하는 각각의 상기 그래프 요소를 단일의 연산 요소에 할당하는 것을 포함하는, 컴퓨터로 판독가능한 매체. - 제67항에 있어서,
상기 단일의 연산 요소는, 상기 그래프 요소가 상기 연산 요소에 할당될 때에 이미 초기화되어 있는, 컴퓨터로 판독가능한 매체. - 제67항에 있어서,
상기 공통 리소스는 데이터베이스를 포함하는, 컴퓨터로 판독가능한 매체. - 제67항에 있어서,
상기 공통 리소스는 특정의 포트를 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 트랜잭션의 처리는 상기 트랜잭션에 대한 요청을 수신하는 것을 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 컴퓨터 시스템으로 하여금,
상기 특정 연산 그래프가 제2 트랜잭션에 대해 수행될 연산과 연관되는지를 판정하고;
상기 제2 트랜잭션을, 상기 특정 연산 그래프의 제2 인스턴스와 연관시키며;
상기 특정 연산 그래프의 제2 인스턴스를 실행하여, 상기 제2 트랜잭션에 대한 연산을 수행하도록 하기 위한 명령을 더 포함하는, 컴퓨터로 판독가능한 매체. - 제72항에 있어서,
상기 연산 그래프의 상이한 인스턴스를 사용하여 수행되는 트랜잭션에 대한 연산은, 타임 인터리브드 방식으로 수행되는, 컴퓨터로 판독가능한 매체. - 제72항에 있어서,
상기 트랜잭션이 동시에 여러 개가 처리되는, 컴퓨터로 판독가능한 매체. - 제72항에 있어서,
상기 트랜잭션은 대응하는 연산 그래프에 따라 처리되는 하나 이상의 작업 요소와 각각 연관된, 컴퓨터로 판독가능한 매체. - 제75항에 있어서,
적어도 몇 개의 상기 트랜잭션은, 대응하는 연산 그래프에 따라 처리되는 작업 요소와 각각 하나씩 연관된, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 컴퓨터 시스템으로 하여금, 적어도 몇몇의 상기 연산 그래프 중의 복수의 인스턴스를 형성하도록 하기 위한 명령을 더 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
상기 컴퓨터 시스템으로 하여금, 상기 트랜잭션 중의 하나의 트랜잭션에 대한 연산을 수행하는 중에 에러가 생겼음을 확인하고, 상기 트랜잭션 중의 다른 하나의 트랜잭션에 대한 연산을 계속해서 수행하도록 하기 위한 명령을 더 포함하는, 컴퓨터로 판독가능한 매체. - 제21항에 있어서,
복수의 트랜잭션 중의 제1 트랜잭션에 대한 처리를 제1 시간에 시작하고, 상기 복수의 트랜잭션 중의 제2 트랜잭션에 대한 처리를 상기 제1 시간보다 늦은 제2 시간에 시작하며,
상기 컴퓨터로 판독가능한 매체는, 상기 컴퓨터 시스템으로 하여금, 상기 제1 트랜잭션에 대한 연산의 수행을 완료하기 전에 상기 제2 트랜잭션에 대한 연산의 수행을 완료하도록 하기 위한 명령을 더 포함하는, 컴퓨터로 판독가능한 매체. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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 KR20100046198A (ko) | 2010-05-06 |
KR101635945B1 true KR101635945B1 (ko) | 2016-07-04 |
Family
ID=40281847
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107003442A KR101635945B1 (ko) | 2007-07-26 | 2008-07-25 | 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 |
KR1020167017122A KR101758670B1 (ko) | 2007-07-26 | 2008-07-25 | 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 |
Family Applications After (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) | KR101635945B1 (ko) |
CN (2) | CN101821721B (ko) |
AU (1) | AU2008279001B2 (ko) |
CA (2) | CA2697306C (ko) |
WO (1) | WO2009015342A1 (ko) |
Families Citing this family (36)
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 |
AU2007286155B2 (en) * | 2006-08-10 | 2013-12-12 | Ab Initio Technology Llc. | Distributing services in graph-based computations |
KR101635945B1 (ko) | 2007-07-26 | 2016-07-04 | 아브 이니티오 테크놀로지 엘엘시 | 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 |
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 |
CN107066241B (zh) * | 2010-06-15 | 2021-03-09 | 起元技术有限责任公司 | 用于动态加载基于图的计算的系统和方法 |
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 |
CN105164638B (zh) * | 2013-04-23 | 2019-09-27 | 起元科技有限公司 | 控制由计算系统执行的任务 |
US9348560B2 (en) | 2013-06-04 | 2016-05-24 | Qualcomm Incorporated | Efficient execution of graph-based programs |
EP3090329A4 (en) * | 2013-10-20 | 2017-10-11 | Pneuron, Corp. | Event-driven data processing system |
US10180821B2 (en) | 2013-12-05 | 2019-01-15 | Ab Initio Technology Llc | Managing interfaces for sub-graphs |
US20150186427A1 (en) * | 2013-12-26 | 2015-07-02 | Telefonica Digital Espana, S.L.U. | Method and system of analyzing dynamic graphs |
US10698878B2 (en) * | 2015-03-06 | 2020-06-30 | 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 |
US10671669B2 (en) | 2015-12-21 | 2020-06-02 | 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 |
CN110515680B (zh) * | 2018-05-21 | 2024-04-09 | 吕纪竹 | 一种实时判断大数据自身给定延迟重复性的方法 |
CN110515681B (zh) * | 2018-05-21 | 2024-04-09 | 吕纪竹 | 一种实时判断流数据自身给定延迟重复性的方法 |
SG11202102413PA (en) * | 2018-09-25 | 2021-04-29 | 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 |
US12001425B2 (en) | 2020-12-09 | 2024-06-04 | Oracle International Corporation | Duplication elimination in depth based searches for distributed systems |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006504160A (ja) * | 2002-10-10 | 2006-02-02 | エービー イニティオ ソフトウェア コーポレーション | グラフに基づく計算の起動および制御 |
Family Cites Families (183)
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 |
JP3672208B2 (ja) * | 1996-07-02 | 2005-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 階層化トランザクション処理方法 |
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 |
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 |
US6470386B1 (en) * | 1997-09-26 | 2002-10-22 | Worldcom, Inc. | Integrated proxy interface for web based telecommunications management tools |
US5958004A (en) * | 1997-10-28 | 1999-09-28 | Microsoft Corporation | Disabling and enabling transaction committal in transactional application components |
US6339775B1 (en) * | 1997-11-07 | 2002-01-15 | Informatica Corporation | Apparatus and method for performing data transformations in data warehousing |
US6014670A (en) * | 1997-11-07 | 2000-01-11 | 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 |
EP1145218B1 (en) | 1998-11-09 | 2004-05-19 | Broadcom Corporation | Display system for blending graphics and video data |
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 |
AU2215201A (en) * | 1999-12-20 | 2001-07-03 | 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 |
US7085426B2 (en) | 2001-10-15 | 2006-08-01 | Jonas August | Volterra filters for enhancement of contours in images |
US7130484B2 (en) | 2001-10-15 | 2006-10-31 | Jonas August | Biased curve indicator random field 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 |
US20050059046A1 (en) * | 2003-06-18 | 2005-03-17 | 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 |
US8059125B2 (en) * | 2003-06-25 | 2011-11-15 | Ab Initio Technology Llc | 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 |
US7743382B2 (en) * | 2003-11-03 | 2010-06-22 | Ramal Acquisition Corp. | System for deadlock condition detection and correction by allowing a queue limit of a number of data tokens on the queue to increase |
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 |
US7761863B2 (en) | 2004-06-08 | 2010-07-20 | Covia Labs, Inc. | Method system and data structure for content renditioning adaptation and interoperability segmentation model |
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 |
US8799882B2 (en) * | 2005-12-07 | 2014-08-05 | Microsoft Corporation | Compiler support for optimizing decomposed software transactional memory operations |
US8266609B2 (en) * | 2005-12-07 | 2012-09-11 | Microsoft Corporation | Efficient placement of software transactional memory operations around procedure calls |
US8073671B2 (en) | 2006-03-31 | 2011-12-06 | Microsoft Corporation | Dynamic software performance models |
US7870556B2 (en) * | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
AU2007286155B2 (en) * | 2006-08-10 | 2013-12-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 | 透 降矢 | 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム |
KR101635945B1 (ko) | 2007-07-26 | 2016-07-04 | 아브 이니티오 테크놀로지 엘엘시 | 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 |
US8347292B2 (en) | 2007-08-30 | 2013-01-01 | International Business Machines Corporation | Transaction aggregation to increase transaction processing throughout |
JP5453273B2 (ja) * | 2007-09-20 | 2014-03-26 | アビニシオ テクノロジー エルエルシー | グラフベース計算におけるデータフロー管理 |
US8775441B2 (en) | 2008-01-16 | 2014-07-08 | Ab Initio Technology Llc | Managing an archive for approximate string matching |
US20090193417A1 (en) * | 2008-01-24 | 2009-07-30 | Nec Laboratories America, Inc. | Tractable dataflow analysis for concurrent programs via bounded languages |
US8797178B2 (en) | 2008-03-10 | 2014-08-05 | Microsoft Corporation | Efficient stream sharing for multi-user sensor data collection |
CN104679807B (zh) | 2008-06-30 | 2018-06-05 | 起元技术有限责任公司 | 基于图的计算中的数据日志记录 |
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 |
EP2609507B1 (en) | 2010-08-25 | 2019-05-15 | Ab Initio Technology LLC | Evaluating dataflow graph characteristics |
US8566441B2 (en) * | 2010-11-22 | 2013-10-22 | Microsoft Corporation | Network latency estimation for mobile devices |
-
2008
- 2008-07-25 KR KR1020107003442A patent/KR101635945B1/ko active IP Right Grant
- 2008-07-25 WO PCT/US2008/071206 patent/WO2009015342A1/en active Application Filing
- 2008-07-25 CN CN200880107445.2A patent/CN101821721B/zh active Active
- 2008-07-25 EP EP10003554A patent/EP2234017A3/en not_active Withdrawn
- 2008-07-25 CN CN201710217866.1A patent/CN107423046B/zh active Active
- 2008-07-25 US US12/180,141 patent/US8706667B2/en active Active
- 2008-07-25 JP JP2010518415A patent/JP5520219B2/ja active Active
- 2008-07-25 KR KR1020167017122A patent/KR101758670B1/ko active IP Right Grant
- 2008-07-25 CA CA2697306A patent/CA2697306C/en active Active
- 2008-07-25 AU AU2008279001A patent/AU2008279001B2/en active Active
- 2008-07-25 EP EP08796632A patent/EP2174222A4/en not_active Ceased
- 2008-07-25 CA CA2965896A patent/CA2965896C/en active Active
-
2014
- 2014-04-04 JP JP2014077798A patent/JP6177179B2/ja active Active
-
2016
- 2016-03-09 JP JP2016046091A patent/JP2016106329A/ja active Pending
Patent Citations (2)
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 |
Also Published As
Publication number | Publication date |
---|---|
CN107423046A (zh) | 2017-12-01 |
EP2234017A3 (en) | 2010-10-27 |
CN101821721A (zh) | 2010-09-01 |
JP6177179B2 (ja) | 2017-08-09 |
EP2174222A1 (en) | 2010-04-14 |
EP2234017A2 (en) | 2010-09-29 |
EP2174222A4 (en) | 2010-10-27 |
JP2010534891A (ja) | 2010-11-11 |
CN101821721B (zh) | 2017-04-12 |
JP2014130647A (ja) | 2014-07-10 |
CA2697306A1 (en) | 2009-01-29 |
CA2697306C (en) | 2017-06-20 |
US20090030863A1 (en) | 2009-01-29 |
JP2016106329A (ja) | 2016-06-16 |
CA2965896A1 (en) | 2009-01-29 |
AU2008279001A1 (en) | 2009-01-29 |
WO2009015342A1 (en) | 2009-01-29 |
AU2008279001B2 (en) | 2014-02-06 |
KR20160078523A (ko) | 2016-07-04 |
CN107423046B (zh) | 2021-08-06 |
CA2965896C (en) | 2020-01-07 |
KR20100046198A (ko) | 2010-05-06 |
JP5520219B2 (ja) | 2014-06-11 |
US8706667B2 (en) | 2014-04-22 |
KR101758670B1 (ko) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101635945B1 (ko) | 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템 | |
JP5475553B2 (ja) | グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム | |
US8667329B2 (en) | Processing transactions in graph-based applications | |
US7921220B2 (en) | Reducing occurrences of two-phase commits in a multi-node computing system | |
AU2007202782B2 (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 |