KR101171501B1 - 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합 - Google Patents

트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합 Download PDF

Info

Publication number
KR101171501B1
KR101171501B1 KR1020107006361A KR20107006361A KR101171501B1 KR 101171501 B1 KR101171501 B1 KR 101171501B1 KR 1020107006361 A KR1020107006361 A KR 1020107006361A KR 20107006361 A KR20107006361 A KR 20107006361A KR 101171501 B1 KR101171501 B1 KR 101171501B1
Authority
KR
South Korea
Prior art keywords
transaction
aggregate
transactions
computer
delete delete
Prior art date
Application number
KR1020107006361A
Other languages
English (en)
Other versions
KR20100077151A (ko
Inventor
마이클 제임스 버클리
마이클 존 카니
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100077151A publication Critical patent/KR20100077151A/ko
Application granted granted Critical
Publication of KR101171501B1 publication Critical patent/KR101171501B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 기술들이 제공된다. 메시지 식별자와 세션 식별자를 가지는 트랜잭션 아이템이 획득된다. 상기 트랜잭션 아이템은 취합 트랜잭션 리스트내에서 가장 빠른(earliest) 취합 트랜잭션에 부가되는데, 상기 트랜잭션내에는 동일한 세션식별자를 가지는 트랜잭션 아이템이 없다. 실행기준을 충족하는 취합리스트상의 제1 취합 트랜잭션이 실행된다. 상기 취합 트랜잭션이 커밋되지 않는다는 결정에 대응하여, 상기 취합 트랜잭션은 다수의 더 작은 트랜잭션들로 분할되고, 각각의 취합 트랜잭션의 타겟사이즈는 시스템의 쓰루풋의 측정에 기초하여 조정된다.

Description

트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합{TRANSACTION AGGREGATION TO INCREASE TRANSACTION PROCESSING THROUGHPUT}
본 발명은 트랜잭션(transaction) 프로세싱(processing)의 쓰루풋(throughput)을 증가시키기 위한 자동화된 트랜잭션의 취합(aggregation)에 관한 발명이다.
데이터흐름 프로그래밍(dataflow programming) -또한 흐름기반 프로그래밍(Flow-based programming,FBP)이라도 호칭됨- 은 고용량(high volume) 배치데이터(batch data) 프로세싱을 쉽고 효과적으로 표현(expression)하기 위해서 사용되어 온 기법이다: 데이터흐름 프로그래밍은 로직(logic)이 자연스럽게 캡쳐(capture)되므로 쉽다. 데이터흐름 프로그래밍은 쓰루풋(throughput)을 증가시키기 위해서 병렬(parallel) 또는 파이프라인 병렬처리 둘 다 사용될 수 있기 때문에 효과적이다. 그러나 이러한 흐름기반 프로그래밍 기법들은 온라인 및 트랜잭션 프로세싱 어플리케이션들의 표현 수단으로는 덜 인식되어 있다.
흐름기반 트랜잭션 프로세싱(Flow Based Transaction Processing, FBTP)은 고성능 트랜잭션 프로세싱 시스템을 생성하는데 사용되는 흐름기반 애플리케이션 개발 기법들을 기술한다. 고객들은 FBP 시스템(예를 들어 IBM사의 데이터스테이지(Datastage) 제품)의 기능성이 트랜젝션 프로세싱을 포함하도록(encompass) 확장(strecch)되는 것을 원한다. 고객들은 그러한 결과로 나온 시스템들(resulting systems)의 고성능과, 그리고 범용 그래픽 개발툴을 이용하여 트랜잭션 프로세싱과 고용량 배치데이터 프로세싱간의 비지니스로직(business logic)을 공유(share)할 수 있는 능력에 가치를 둔다.
트랜잭션들의 구성(composition)을 수행하는 기존의 시스템이 있다. 마이크로소프트 트랜잭션서버(MTS)와 자바2 플랫폼 엔터프라이즈 에디션(J2EE) 애플리케이션 서버들 둘 다 서술형(declarative) 트랜잭션 구성을 특징으로 한다(자바와 모든 자바기반 상표들 및 로고들은 미국 또는 다른 국가들 또는 둘 다에서 선마이크로시스템사의 상표이다; 마이크로소프트는 미국 또는 다른 국가들 또는 둘 다에서 마이크로 소프트사의 상표이다.). 그러나, 이러한 시스템들은 데이터흐름(data flow) 네트워크들로서 표현되지 않기 때문에, 그들은 수반되는 데이터 분리 속성들(properties)들로부터 이익을 얻지 못한다; 이런 이유로 그들이 성취할 수 있는 트랜잭션의 취합의 스케일은 더 작고, 그 때문에 쓰루풋을 늘릴 수 있는 능력이 제한된다.
본 발명은 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 방법, 컴퓨터 프로그램 제품, 컴퓨터 프로그램 및 시스템을 제공한다. 본 발명에서 메시지 식별자(identifier) 및 세션 식별자를 가지는 트랜잭션 아이템(transaction item)이 획득된다. 상기 트랜잭션 아이템은 취합 트랜잭션들의 리스트에서 다른 트랜잭션 아이템이 동일한 세션식별자를 갖지 않는 가장 빠른(earliest) 취합 트랜잭션에 부가된다. 취합 트랜잭션들의 리스트에서 실행기준(execution criteria)을 충족하는 제1 취합 트랜잭션(a first aggregated transactin)이 실행된다. 상기 취합 트랜잭션이 커밋(commit)하지 않는다는 결정에 응답하여, 상기 취합 트랜잭션은 다수의(multiple) 더 작은 취합 트랜잭션들로 분할(broke up)되고, 각각의 취합 트랜잭션의 타겟크기는 시스템의 쓰루풋의 측정에 기초하여 조정된다.
본 발명의 바람직한 실시예가 후술하는 도면들을 참조하여 일예로서 기술된다.
도1은 특정 구현방법들에 따른 컴퓨팅장치의 디테일을 도시한 도면,
도2는 특정 구현방법들에 따른 트랜잭션 프로세스에 대한 데이터흐름도,
도3은 특정 구현방법들에 따른 실행 및 에러 프로세싱에 대한 데이터 흐름도,
도4는 특정 구현방법들에 따른 포이즌(poison) 큐(queue)에 대한 데이터 흐름도,
도5는 특정 구현방법들에 따른 트랜잭션 프로세싱의 단계(phase)들의 리스트를 도시한 도면
도6은 특정 구현방법들에 따른 취합 트랜잭션의 프로세싱에 대한 데이터 흐름도,
도7은 특정 구현방법들에 따른 파이프라인 세이프 컨셉들에 대한 데이터 흐름도,
도8은 특정 구현방법들에 따른 병행론(parallelism)의 사용에 대한 도면,
도9A,9B 및 9C는 특정 구현방법들에 따른 로직을 도시한 도면, 및
도10은 특정 구현방법들에서 사용가능한 시스템 아키텍쳐를 도시한 도면이다.
(유사한 도면 부호는 명세서 전체를 통해 대응하는 부품들을 표시하는 것이다.)
후술하는 설명에서, 레퍼런스는 도면들을 참조해서 이루어지며, 여기서 도면은 이 문서의 일부를 구성하며 본 발명의 몇몇 실시예들을 도시한다. 다른 실시예들이 활용될 수도 있으며, 구조적 및 기능적인 변경은 본 발명의 권리범위에서 벗어나지 않는다는 점에 유념해야 한다.
시스템의 동작에서 정확성을 여전히 유지하면서 평균트랜잭션 크기는 더 크게 할 수 있는 그러한 방식으로, 실시예들은 개별 트랜잭션들이 더 큰 트랜잭션들로 취합될 수 있는 그러한 트랜잭션 시스템들을 생성하여 배치하는 것을 가능하게 한다. 이러한 시스템은 트랜잭션 조정의 비용을 줄임으로써 전체적인 시스템 쓰루풋을 향상한다. 여기서 트랜잭션 조정은 관련 트랜잭션 리소스들(예를 들어 데이터베이스들, 쿼리 시스템들, 트랜잭션 파일 시스템들 등)에 대한 대단히 많은 변경들에 관한 조정을 말한다.
실시예들은 오버해드를 줄이기 위해서 자동방식으로 트랜잭션을 취합하는 맞춤(adaptive) 로직을 제공하는데, 이는 쓰루풋이 증가하는 동안에는 사이즈를 증가시키고 그리고 쓰루풋에 부정적인 영향이 생기면 자동적으로 사이즈를 감소시킨다.
실시예들은 트랜잭션 프로세싱 시스템을 데이터흐름 네트워크로 또는 균등의(equivalent) 데이터흐름 기반 프로그램 언어를 이용해서 표현(express)한다. 또한 실시예들은 데이터 분리 특성들(separation properties)의 식별정보에 종속되는데, 이는 취합이 가능한 시점의 결정을 가능케한다. 특정실시예에서 상기 데이터-분리 특성들(data-separation properties)은 병행처리(parallelism)에 대한 가능성(potential)을 표시하기 위해서 배치스타일의 데이터흐름 시스템들내에서 사용되는 것들과 동일한 것들일 수 있다. 더욱이, 데이터흐름 네트워크들의 세트오리엔트 특성(the set oriented nature)은 상기 자동화된 취합이 작동하는 것을 가능케 한다.
도1은 특정 실시예들에 따른 컴퓨팅장치의 디테일을 도시한다. 클라이언트 컴퓨터(100)는 통신경로(communicaion path, 190)를 통해서 서버컴퓨터(120)에 연결되어 있다. 상기 클라이언트 컴퓨터(100)는 하나 또는 그 이상의 클라이언트 애플리케이션들(110)을 포함한다.
서버컴퓨버(120)은 트랜잭션취합조정(TAA) 시스템(130), 조정데이터(140)(예를 들어 시스템 쓰루풋의 측정값들), 취합 트랜잭션들의 리스트(150), 그리고 하나 또는 그 이상의 서버 애플리케이션들(160)을 포함한다. 서버컴퓨터(120)는 상기 클라이언트컴퓨터(100)에 데이터저장장치(170) 내의 데이터에 대한 엑세스를 제공한다.
상기 클라이언트컴퓨터(100)와 서버컴퓨터(120)는 공지의 모든 컴퓨팅장치가 포함할 수 있는데, 예를 들어, 서버, 메인프레임, 워크스테이션, 개인용컴퓨터, 휴대용 컴퓨터, 랩탑 전화장치(laptop telephony device), 네트워크 기기(appliance), 컴퓨터 클러스트 등이 포함될 수 있다.
상기 통신경로(190)는 어떠한 타입의 네트워크도 포함할 수 있는데, 예를 들어 피어투피어(peer-to-peer) 네트워크, 스포크(spoke) 및 허브 네트워크, SAN(Storage Area Network), LAN(Local Area Network), WAN(Wide Area Network), 인터넷 및 인트라넷 등을 들 수 있다.
상기 데이터저장장치(170)는 저장장치들의 어레이(array)를 포함할 수 있는데, 예를 들어, DASD들(Direct Access Storage Device), JBOD들(Just a Bunch of Disks), RAID들(Redundant Array of Independent disks), 가상 장치(virtualization device)등을 들 수 있다.
프로세스는 데이터흐름도(dataflow diagram)의 형태로 설명될 수 있다. 프로세스는 다음의 컴포넌트들에 의해서 구성(constructed)될 수 있다: 데이터흐름도, 연산자들(operators) 및 아크들(arcs). 데이터흐름도는 방향이 지정된(directed) 그래프에 의해서 설명되는데, 여기서 그래프의 꼭지점들/박스들이 연산자들이라 호칭되고, 아크들이 데이터의 방향이 있는 흐름을 기술한다. 데이터흐름도는 데이터를 다양한 데이터 소스들로부터의 다양한 데이터 타겟들까지 여러(different) 연산자들을 통해서 흐르는 데이터로 기술한다. 데이터흐름도는 데이터흐름 프로그래밍언어로부터 그려지거나 생성될 수 있다. 연산자(operator)들은 데이터를 외부 리소스로부터 읽을 수 있고, 외부 리소스에 데이터를 기록할 수 있고, 및/또는 이러한 작업들을 수행하는 동안 데이터 변환(transformation)을 적용할 수 있다. 일반적으로, 연산자들은 모든 인커밍 아크로부터의 데이터를 수신하여 처리하여(consume), 그리고 모든 아웃고잉아크로 데이터를 출력할 수 있다. 전형적인 데이터흐름 프로세스-작성 툴에서, 많은 연산자들이 공통데이터 엑세스 및 변환들을 제공하기 위해서 빌트인(built in) 연산자로 제공되며, 반면에 그외는 유저에 의해 생성되고 쉽게 시스템에 통합될 수 있다. 아크들은 두 개의 연결된 연산자간의 데이터의 흐름을 나타낸다. 아크는 FIFO(First In First Out) 큐들로서 가동한다. 다시말해, 아크상의 데이터 아이템들은 각각을 지나갈 수 없다. 그들은 진입한 순서대로 아크에서 나간다.
연속(continuous) 프로세스는 연속된 데이터 소스들(예를 들어 데이터를 연속적으로 제공하는 데이터 소스들)로부터 읽고, 입력데이터가 사용가능해지는데로, 상기 입력 데이터에 대응되는 결과 데이터를 생성하는 프로세스로 설명될 수 있다.
트랜잭션 프로세스는 트랜잭션 리소스들을 데이터소스들로써 이로부터 읽어들이고, 트랜잭션 데이터리소스들을 이들의 타켓들로써 여기에 쓰기(write)를 수행하는 연속 프로세스다. 이들의 전형적인 예로는 메시지큐로부터 읽어들이고, 그리고 하나 또는 그 이상의 데이터베이스내의 하나 또는 그 이상의 데이터베이스 테이블들에 쓰고, 마찬가지로 출력 메시지큐들 또는 트랜잭션 파일시스템들에 쓰는것이다.
설명의 편의를 위하여, 상기 트랜잭션 프로세스는 단일 입력 연산자를 가진다고 가정한다. 입력으로서의 다수의 연산자들이 하나의 공급장치(a single feed)로 사전에 통합될 수도 있다는 점에 유념하라
도2는 특정 실시예들에 따른 트랜잭션 프로세스에 대한 데이터흐름도(200)를 도시한다. 도2에서, 메시지큐 겟메쏘드(엠큐 겟, MQ get)는 메시지큐로부터 메시지를 검색(retrive)한다. 룩업(lookup)은 테이블내에서 룩업(lookup)을 수행한다. 변환(xform)은 데이터를 변환한다. RDBMS(relational database management system) 인서트(insert), 업데이트(update) 및 딜리트(delete)는 테이블들상에서 이들 액션들을 수행한다. 메시지큐 풋메쏘드(엠큐 풋, MQ put)는 메시지큐에 메시지를 집어넣는다(put).
입력으로부터 읽어들인 각각의 아이템은 트랜잭션 아이템이라 한다. 각각의 트랜잭션 아이템은 상기 트랜잭션의 컨텐츠를 기술하는데 사용되는 다른 데이터 외에 세션식별자(SID)를 가진다. 두 개의 트랜잭션 아이템들이 동일한 SID를 운반하면, 그들은 분리된 트랜잭션들에서 프로세스되어야 한다는 것을 의미하고, 그러한 트랜잭션들은 상기 트랜잭션 아이템들의 도달순으로 실행되어야 한다. 각각의 트랜잭션 아이템은 또한 메시지식별자(MID)를 운반하는데, 이는 동일한 SID를 가지는 모든 트랜잭션들에게 고유(unique)하다. 다른 SID값들을 가지고 있는 두 개의 트랜잭션 아이템은 동일한 트랜잭션의 일부로서 또는 별도의 트랜잭션들의 일부로서 함께 프로세스 될 수 있으며, 그들의 프로세싱 순서는 문제가 되지 않는다.
특정 실시예에서, 상기 SID는 다음의 방식으로 입력메시지와 연관된 토큰이다. 즉 서로 다른 SID를 가진 어느 두 개의 메시지를 병렬(parallel)로 프로세스될 수 있는 방식으로 상기 SID는 입력메시지와 연관된 토큰이다. 실제로는, 이것은 병렬로 프로세스 될 수 없는 메시지들의 세트를 식별하고, 상기 동일한 세트내의 모든 메시지들로 동일한 SID를 연관시킴으로서 달성될 수 있다. 특정 실시예에서, 상기 SID는 메시지의 일부(예를 들어 어카운트(account) 번호 또는 고객번호는 하나의 세션을 식별하거나, 또는 브라우저의 쿠키값이 인터넷 애플리케이션들(예를 들어 온라인 쇼핑)을 위한 SID가 될 수 있다.)이다.
특정 실시예에서, MID는 입력메시지에 연관된 토큰으로서, 입력메시지가 하나의 트랜잭션 구현의 일부로서 다른 것들과 조합으로 입력메시지가 실행되더라도 그 입력메시지를 고유하게 식별한다. 만약 메시지 페이로드(payload)상에 기본적으로(natural) MID가 없다면, MID들은 메시지가 입력큐로 도착하는 순서에 기초하여 카운터로부터 정수(integer)들로 할당될 수 있다.
특정 실시예에서, 상기 메시지식별자는 SID내에서 고유(unique)하고 그래서 SID와 MID의 합계 형태는 메시지들을 위한 고유한 ID를 형성(form)한다. 실시예들에서는 실패(failures)를 처리하기 위해서 이런 고유ID를 사용한다. 프로세싱 중에, 입력큐(input queue)에서의 하나의 인커밍메시지(incoming message)는 프로세싱(예를 들어 내 모든 어카운트 잔고들을 보여줌) 동안, 프로세싱흐름에서 많은 레코드를 생성(produce)할 수 있다. 대략 1/2 다스(dozen) 어카운트들 각각당 하나 의 레코드가 하나의 인커밍 리퀘스트 메시지 때문에 생성될 수 있다. 이들 1/2 다스 레코드들은 데이터흐름도를 통해서 이동되어 다양한 연산자들에 의해서 분리 및 독립적으로 프로세스 될 수 있다. 이들 모든 레코드들 모두는 인커밍 리퀘스트 메시지로서 동일 MID 및 SID를 운반한다. 따라서, 만약에 이들 레코드들 중에서 어느 하나가 잘못되면, "블레임(blame)"이 상기 메시지를 고유하게 식별해주는 SID+MID를 통해서 특정 인커밍 메시지에 두어질 수 있다.
실시예들은 입력메시지들에 관하여 어떠한 순서 요구(ordering requirement)가 없는 경우의 시스템들에 대해서도 적용할 수 있다. 단순히 이해들 돕기 위하여, 여기에 간단한 은행 ATM 예가 제공된다(여기의 설명의 편의를 위해서 간략화한 실시예라는 점을 명심해야 한다. 실제 ATM 네트워크는 이보다 훨씬 더 복잡하다.). 은행 ATM 기기들의 네트워크가 있다고 가정하자. 어느 하나의 ATM 기계에서 각각의 사람은 그들의 개인적인 세션과 관련이 있는 메시지를 ATM 기기에서 생성하고 있다. 그러한 메시지들은 순서대로 처리되어야 하고, 그래서 동일한 SID를 운반해야 한다. 그러나 많은 ATM기기들의 메시지 스트림들은 결국 애플리케이션의 입력큐에 들어오는데로 인터리브(interleave) 된다. 각각의 ATM 기기들은 한번에 오직 한명의 고객들에게 서비스할 수 없기 때문에, 실시예에서는 ATM 기기의 ID를 SID로 사용할 수 있다.
도3은 특정 실시예들에 따른 커밋(commit) 및 에러 프로세싱에 대한 데이터 흐름도(300)를 도시한다. 트랜잭션 프로세스중에, 에러들이 수집되고, 그리고 에러원인들(error causes) 문서(document)가 생성되고, 이는 커밋(commit) 블럭으로 전달된다. 커밋 블럭에서, 만약 허용될 수 없는 에러들(unacceptable error)이 없다면, 상기 트랜잭션 프로세스는 커밋된다(즉 상기 커밋블럭은 에러들이 있다고 하더라도 커밋은 여전히 일어나도록 결정할 수 있다.).
도4는 특정 실시예들에 따른 포이즌(poison) 큐(queue)에 대한 데이터 흐름도(400)를 도시한다. 또한 트랜잭션 프로세서는 관련된 포이즌(poison) 또는 거절(rejection) 큐를 가진다. 포이즌큐는 포이즌트랜잭션 아이템(poison transaction item)이 그 위에 위치하는 큐로 설명될 수 있다. 포이즌트랜잭션 아이템은 성공적으로 프로세스 될 수 없는 트랜잭션 아이템들이다. 그것은 "엠큐 겟(MQ get)" 이후에 시도하여, 에러들에 의해 실패(fail)하는 "커밋" 프로세싱을 포함하거나 또는 항상 커밋에 실패하는 모든 리소스 액션들을 말한다(유력하게 몇 개의 반복된 시도들 이후에).
도4에서, 상기 트랜잭션흐름은 주플랜 또는 "플랜A" -이는 의도된 프로세싱 흐름- 와 포이즌 또는 거절 큐 안으로 핸들될 수 없는 트랜잭션들을 넣는(put) 대안 또는 "플랜B"를 포함한다.
병행 가능한 트랜잭션 프로세스는 동시발생한 별개의 세션식별자(SID)들의 숫자에 비례하여 사용가능해지고, 어느 주어진 순간의 시간내에 입력된 프로세싱에 대해서 사용가능해진다. 각각의 세션의 트랜잭션 아이템들은 순차적으로 프로세스되나, 세션들 간에는 병행성이 있다. 이것은 애플리케이션 서버들 및 다른 트랜잭션 프로세싱 환경들에서 자주 동시에 나타난다.
특정 실시예에서, 성능은 사용가능한 병행성을 트랜잭션 단위(granularity)에 대해서 트레이딩오프(trading off) 함으로서 얻어질 수 있다. 만약 사용가능한 병행성이 과도하게 충분이 있다면, 서로 다른 세션들의 트랜잭션들은 오버해드를 감소시키기 위해 고성능 실행을 위해 충분한 병행성이 있는 한도내에서 취합될 수 있다.
도5는 특정 실시예들에 따른 트랜잭션 프로세싱의 단계(phase)들의 리스트를 도시한 도면이다. 트랜잭션 프로세싱은 취합단계(510), 연산단계(512), 커밋단계(514), 에러 원인들을 가진 분해(disaggregation)단계(516) 및 에러 원인들 없는 분해단계(520)를 포함한다.
취합단계(510)에서, 여기에서는 트랜잭션 리소스(예를 들어 큐)로부터 트랜잭션 아이템이 읽혀진다. 트랜잭션이 다른 트랜잭션 아이템들을 가지고 더 큰 트랜잭션으로 취합 될 수 있는지를 결정하기 위한 로직이 시작된다.
취합 트랜잭션들의 리스트가 유지된다. 리스트의 순서는 트랜잭션 취합이 프로세스 되는 순서이다. 인커밍 트랜잭션 아이템은 제1 취합 트랜잭션(the first transaction)에 부가되는데, 상기 제1취합 트랜잭션에는 아직까진 동일한 SID를 가지는 트랜잭션이 포함하지 않고 있다.
도6은 특정 실시예들에 따른 취합 트랜잭션의 프로세싱에 대한 데이터 흐름도(600)이다. 실행 기준(예를 들어 타이머가 만료되거나 또는 취합 트랜잭션의 사이즈가 타겟사이즈에 도달한 경우)이 충족된 경우, 리스트상에서 제1 취합 트랜잭션이 제거되고, 커밋단계(514)내의 프로세싱을 위해서 데이터흐름의 다음단계로 보내진다. 상기 취합 트랜잭션의 데이터(예를 들어 취합 트랜잭션을 이루는 트랜잭션 아이템)는 한번에 하나의 트랜잭션 아이템을 데이터흐름도에 따라 보내진다. 상기 취합데이터중에서 마지막 트랜잭션 아이템은 작업종료유닛 (end-of-work-unit)(또한 웨이브(WAVE)라고 알려짐) 마커(marker)가 뒤따른다. 상기 웨이브마커는 이것이 트랜잭션의 경계(boundary)라는 것을 단계들에 알리는 것으로 기술될 수 있는데, 예를 들어 도6의 RDBMS 인서트(insert)나 RDBMS 딜리트(delete)가 커밋으로 진행하기 위한 신호이다. 따라서 상기 웨이브 마커는 취합된 트랜잭션 -연산단계를 따르는- 의 연산단계의 끝을 신호(signaling)하는 것으로 기술될 수 있다. 이러한 취합단계(510)에서의 취합 트랜잭션의 형성은 바로 전에 취합된 트랜잭션의 연산단계(512)와 병렬적으로 연속될 수 있다.
상술한 실행기준은 타이머의 만기(트랜잭션 실행 대기시간과 경계를 이루기 위해서)와 취합 트랜잭션의 사이즈가 타겟사이즈로의 도달을 포함할 수 있다.
취합 트랜잭션의 타겟사이즈는 적절히 선택될 수 있다. 시스템의 쓰루풋은 프로세스되고 있는 각각의 취합 트랜잭션을 위해서 측정된다. 상기 타겟사이즈는 트랜잭션의 쓰루풋이 증가하는 한 증가된다. 트랜잭션 쓰루풋이 감소하면 타겟사이즈는 낮아진다. 타겟사이즈의 극심한 발진(진동, oscillation)들을 회피하기 위한 다양한 기술들에는 평균값 이동, 랜덤노이즈인자 추가 등등에 기초하여 이를 조정하는 것을 포함한다. 실시예들은 모든 그러한 조정 기술들을 포함한다.
특정 실시예에서, 취합 트랜잭션의 리스트에서 제1리스트 아이템(the first list item)이 저지되지(held back) 않는 최적화 방법이 있다. 상기 제1리스트 아이템들은 취합 트랜잭션의 리스트에 부가할 필요없이(예를 들어, 웨이브마커가 모든 리스트 아이템들이 처리되고 커밋되었다는 점을 확실하게 하므로), 흐름에 따라 바로 전달한다. 상기 웨이브마커가 프로세스의 아크에 따라 흘러가고 터미널 연산자가 작업유닛에 대한 연산을 마치면, 상기 연산은 이러한 취합 트랜잭션에 대해 완료되었다고 말할 수 있다.
특정실시예에서, 동일한 SID를 가진 하나 이상의 레코드는 하나의 취합에 주어지지 않는데, 이는 데이터흐름 프로세싱 다운스트림이 하나의 프로세스내에 자리하지 않고 파이프라인 된 프로세싱으로 사용될 수 있는 것으로 가정하기 때문이다; 이런 이유로, 부작용(side-effect)들에 대해서 연속적으로 일관된 보장이 없다. 만약 상기 데이터흐름 프로레싱 다운스트림이 연속적인 일관성을 제공한다면(예를 들어, 모두 하나의 프로세스들이므로 파이프라인 아닌 오직 하나의 데이터베이스 커넥션), 그러면 실시예들은 취합 로직을 적절하게 변경한다. 특히, 취합로직을 변경하는 실시예들은 동일한 SID를 가지는 하나 이상의 레코드를 취합안에 넣는 것을 가능케 하는데, 이는 데이터 완결성(integrity)이 연속적인 프로세싱에 의해서 태생적으로 유지되기 때문이다.
도7은 특정 실시예에 따른 파이프라인 세이프 컨셉들에 대한 데이터 흐름도(700)를 도시한다. 특정 실시예에서, 상기 데이터흐름이 업데이트 된 어느 리소스에 대해서 참조되지 않으면(예를 들어 검색), 상기 데이터흐름은 파이프라인 세이프라고 불려진다. 이러한 상황에서, 실시예들은 동일한 SID를 가진 다수의 트랜잭션 아이템들을 -동일한 SID를 가진 이러한 다수의 아이템들이 도착한 순서대로 프로세스 되는 한- 애플리케이션의 구조에 영향없이 취합 트랜잭션에 취합할 수 있다. 더욱이, 실시예들은 취합 트랜잭션을 구성하는 상기 개별 트랜잭션 아이템들을 데이터 흐름 실행 프로세스로 파이프라인 할 수 있는데, 이는 성능을 향상시키기 위해서 파이프라인 병행론의 폭넓은 사용을 허용한다. 더욱이, 실시예들은 제1 취합 트랜잭션 세트를 구성할 필요가 없다. 오히려 이러한 제1 세트는 가상으로 존재할 수도 있다. 상기 제1취합 트랜잭션 세트에 대해서 식별된 각각의 아이템들은 흐름도에 따라 바로 전송될 수 있다. 상술한 "실행기준"이 충족되는 지점에서, 실시예들은 작업종료유닛 마커를 흐름도에 넣을 수 있고, 그 뒤에 바로 다음 취합 트랜잭션 세트로부터 아이템들의 파이프라이닝을 시작할 수 있다. 실시예들은 프로세스중인 것이 완전히 실행될 때까지 차후에 취합 트랜잭션이 실행되지 않는 것을 보장한다.(예를 들어 모든 트랜잭션을 포함, 후술할 분해에 의해 생성된 트랜잭션을 포함)
특정 실시예에서, 만약 데이터흐름이 파이프라인세이프가 아니면, 실시예들은 (a) 전체 데이터흐름상에서, 취합 트랜잭션의 트랜잭션 아이템을 한번에 하나씩 프로세스하고, 그러나 연산단계(512) 이후의 어느 커밋을 위해서 예약하거나 또는 (b) 상기 취합 트랜잭션을 분리하여, 동일한 SID를 가지는 두 개의 트랜잭션 아이템이 동일한 취합 트랜잭션 세트로 가는 것이 없도록 한다. 취합 트랜잭션 세트가 하나씩(그들의 최종 커밋을 포함해서) 프로세스 되기 때문에, 프로세스의 의미의 보존을 보장한다.
특정 실시예에서, 파이프라인 세이프는 예를 들어, 데이터흐름이 테이블Y내의 어카운트번호 X를 검색하고, 그리고 나서 결과들로 테이블 Z를 업데이트 할 수 있다는 것을 의미한다. 상기 테이블들은 디스조인드(disjont)이고 그래서 검색과 업데이트 간에 종속관계(dependency relationship)가 없다. 이런 이유로, 실시예들은 어떠한 의미론적(semantic) 변경없이 흐름에 요청들을 파이프라인 할 수 있다. 이는 흐름상의 연산자들간에 어느 종류의 버퍼가 있을 수 있고, 상기 의미(semantic)는 영향받지 않는다. 특정 실시예들에서는, 모든 검색들이 실행되고, 그리고 나서 모든 업데이트가 실행된다. 특정 실시예에서는, 검색들과 업데이트들이 인터리브된다.
또한 파이프라인 세이프는 데이터흐름이 테이블Y내의 어카운트번호X를 검색하고, 그리고 나서 어카운트번호 X에 대한 특정 열(row)에 대해서 테이블 Y를 업데이트 할 수 있는데, 여기서 파이프라인 안에서 어카운트번호X 이외에 어떠한 것도 운반되지 않는 한 가능하다. 이 경우 상기 테이블들은 디스조인트하지 않지만, 열(row)들은 그렇다.
파이프라인 언세이프(unsafe)는 데이터흐름이 테이블Y 내의 어카운트번호 X를 검색할 수 있고, 그리고 나서 어떤 결과들로 테이블 Y를 업데이트 할 수 있으나, 그러나 실시예들은 상기 업데이트가 다름 레코드에 의해서 다름에 검색된 검색될 곳에 업데이트 하는지 여부를 알 수 없는 것을 의미한다. 상기 검색은 동일한 레코드이거나 일 수 있다. 이 경우에 입력 메시지들을 데이터흐름에 파이프라인하는 것은 안전하지 않은데, 이는 업데이트와 검색이 어떻게 인터리브하고 다른 인터리빙이 다른 의미들을 생성하는지 알 수 없기 때문이다. 예를 들어, 모든 입력 메시지들이 동일한 어카운트번호 X를 운반하는 것을 가정해보자. 만약 모든 검색들이 테이블Y에서 먼저 수행되고, 모든 업데이트가 수행되면, 만약 검색들과 업데이트들이 인터리브될 때에 비해서 결과들은 확실이 다를 것이다.
따라서 데이터흐름도 및 연산자들의 특성에 대한 분석을 통해서 알 수 있는 데이터흐름에 관한 지식을 고려할 때, 실시예들은 구현상에서 병행론(parallelism)/오버랩(overlap)으로 취합될 수 있다.
연산단계(512)에서, 데이터흐름에서 취합 트랜잭션을 프로세싱할 때, 개별 트랜잭션들은 연산자들의 그래프를 따라서 흘러가고, 그래프의 경로는 마침내 작업종료유닛(end-of-work-unit) 마커를 가로지르고, 여기서 상기 마커는 그래프를 통해서 따르는 경로에 분리(split) 또는 조인(join)되어, 그래프가 비워졌는지 그리고 프로세싱의 마지막의 감지될 수 있는 것을 보장한다. 이러한 웨이브 특징은 미국 특허 명세서 번호 20050086360(2005년4월21일 공개)에 기술되어 있고, 여기에 전체적으로 레퍼런스 되어 통합되어 있다.
데이터흐름도상에서 이동(flow)하는 모든 데이터아이템은 그들의 생성을 유발시킨 오리지널 트랜잭션의 세션식별자(SID)와 메시지식별자를 실어나른다(carry); 따라서, 만약 하나의 인커밍 트랜잭션아이템이 상기 데이터흐름도에서 어느 변환로직(transformation logic) 또는 타겟 리소스를 향하는 많은 데이터 아이템들을 생성하도록 유발시키면, 이러한 데이터아이템들 각각은 그 레코드로부터 SID 및 MID를 실어나른다.
펜딩(pending) 취합 트랜잭션은 취합 트랜잭션의 프로세싱하는 동안 프로세스에 의해서 표현되는 업데이트(update)들, 인서트(insert)들, 딜리트(delete)들, 엔큐(enqueue)들 및 디큐(dequeue) 및 기타 등등을 포함한다. 일단 데이터흐름도가 취합 트랜잭션의 프로세싱을 끝내면, 실시예들은 상기 펜딩된 취합 트랜잭션의 커밋을 하기 위해서 시도한다.
연산단계동안에 에러가 감지되면, 예를 들어, SQL 데이터베이스 연산이 페일(fail)이거나, 또는 디바이드 바이 제로(divides by zero) 변형계산(transformation calculation)인 경우, 에러를 일으킨 데이터아이템으로부터 MID가 추출된다. 만약 다수의 에러가 검출된 경우, MID들의 집합의 형태로 될 수 있고, 이는 에러들을 유발시킨 트랜잭션 아이템들의 집합을 나타낸다. 이러한 MID들은 에러원인들(error causes)이라고 호칭되고, 그리고 이것들은 후술되는 분해단계(516)에서 사용된다. 상기 연산단계는 상기 에러원인들내에서 적어도 어느 하나의 에러 MID가 나타나면 즉시 종료될 수 있다. 대안으로 에러원인 MID들의 전체 세트가 수집될 수 있거나 또는 연산단계(512)는 상기 에러원인들내에서 어느 숫자의 MID들이 발견되면 바로 종료될 수 있다. 여기서는 다양안 결정들이 사용될 수 있다. 예를 들어, 에러들은 트랜잭션(배드 MID들) 전부 또는 일부를 분해단계(516)으로 향하도록 할 수 있다.
일단 연산단계가 종료되면, 만약 에러원인들이 없다면, 실시예들은 커밋단계(514)를 수행한다. 만약 에러원인들이 있다면, 실시예들은 해저단계(516)으로 즉시 이동한다.
만약 커밋이 있다면, 펜딩 취합 트랜잭션이 커밋된다. 만약 커밋이 성공하면, 이는 취합 트랜잭션내의 모든 트랜잭션들의 프로세싱들을 완료하는 것이고, 그리고 실시예들은 또 다른 취합 트랜잭션의 식별 및 프로세싱을 위해서 취합단계(510)로 돌아간다.
만약 커밋이 실패한다면, 상기 리소스들상의 액션들의 사이드이펙트(side-effect)들은 자동적으로 롤백(rolled back) 된다(트랜잭션 리소스들에서 일반적 방법대로).
특정 실시예에서, 취합단계(510) 동안 입력큐를 브라우징(browsing)하고 나머지 업데이트 연산자들이 성공할 때 파괴성(destructive) 데큐 연산자를 실행함으로서, 트랜잭션의 시작을 최후에 가능한 순간까지 미루는 것이 가능하다. 그 말은, 실시예들은 상기 파괴적 데큐 연산자들을 커밋연산 바로 직전에 실행한다. 이는 트랜잭션을 주어진 특정 취합입자(granularity) 만큼 가능한 한 작게 "오픈타임(open time)"으로 유지한다. 파괴적 데큐 연산자(파괴적 리드라고도 알려짐)은 메시지가 큐에서 읽여지고 그리고 삭제되는 연산자로, 메시지가 읽혀지나 삭제되지 않는 브라우징과는 다르다.
에러원인들을 가지는 분해단계(516)에서, 식별된 에러 원인들이 있다면, 실시예들은 취합 트랜잭션을 다수의 더 작은 취합 트랜잭션들로 분해하고, 이를 통해 각각의 새로운 취합 트랜잭션은 많아야 하나의 에러원인 MID들을 가지는 트랜잭션 아이템을 포함한다. 특정 실시예에서, 상기 문제되는 에러원인 트랜잭션 아이템들은 그들 자신의 "취합된" 트랜잭션들에 고립되고, 상기 트랜잭션들 각각은 정확히 하나의 트랜잭션 아이템을 포함한다. 그리고나서 이러한 새로운 취합 트랜잭션들이 취합연산자에 의해서 오리지널하게 작업되었던 것처럼, 실시예들은 각각의 이러한 새로운 취합 트랜잭션들을 상술한 방법과 동일하게 프로세스한다.
어느 정도의 분해 후에, 에러원인인 개별트랜잭션 아이템이 그들 자신에 의해서 "취합된" 트랜잭션을 구성한다. 이 경우에, 실시예들은 가능한한 더 많은 분해를 수행하고, 그리고 상기 트랜잭션을 아직 실패를 유발한다. 특정 실시예들에서, 상기 트랜잭션 아이템은 특정 회수만큼 흐름속에서 반복하고, 그리고 일단 트랜잭션 아이템이 특정 회수에서 에러 원인들로서 종료되는 것으로 보이면, 상기 트랜잭션 아이템은 포이즌데이터로 거절된다. 상기 포이즌데이터 트랜잭션은 포이즌데이터큐에 위치하고, 그리고 인커밍큐로부터 상기 트랜잭션의 데큐(dequeueing)와 상기 포이즌큐로의 엔큐(enqueueing)를 포함하는 트랜잭션이 실행된다. 이 트랜잭션은 실패(fail)하지 않으며, 만약에 이 트랜잭션이 실패한다면 상기 시스템이 다운된 것으로 판단된다.
에러원인들 없는 분해단계(520)에서, 만약 에러 원인들이 없다면, 일시적인 문제나 또는 상기 취합된 트랜잭션이 단순히 너무 커서 리소스 부족(exhausion)등의 이유로 상기 시스템은 상기 펜딩 취합 트랜잭션의 커밋에 실패할 수 있다. 이러한 경우에는, 실시예들은 상기 취합 트랜잭션을 다수의 더작은 취합 트랜잭션들로 쪼깸으로서 분해한다(예를 들어 상기 트랜잭션은 반으로 쪼개지고, 개별 트랜잭션 아이템들로 분해되는 등). 그리고나서 이러한 새로운 취합 트랜잭션들이 취합연산자에 의해서 오리지널하게 작업되었던 것처럼, 실시예들은 각각의 이러한 새로운 취합 트랜잭션들을 상술한 방법과 동일하게 프로세스한다. 만약 상기 취합 트랜잭션이 하나의 트랜잭션 아이템을 포함하고 커밋하는데 실패한다면, 실시예들은 상기 취합 트랜잭션을 포이즌데이터로 프로세스한다.
특정 실시예에서, 제2의 트랜잭션들은 트랜잭션 아이템에 대해서 포이즌 데이터큐를 사용하는 동안 사용가능하다. 이러한 포이즌 큐는 다른 로직을 가지는 부수적인 트랜잭션 프로세싱 흐름도를 제공(feed)한다. 제2의 그래프는 아이템을 다르게 프로세스하려고 시도하고 리소스들에 대해서 다른 액션들을 커밋하려고 시도한다. 트랜잭션아이템이 오리지널 흐름도에서 포이즌이었다 할지라도, 상기 트랜잭션 아이템은 제2 프로세싱흐름에 의해서 성공적으로 프로세스 될 수 있다. 제2흐름은 심지어 상기 트랜잭션들을 재취합 할 수도 있고, 그외 기본적인 트랜잭션 취합시스템에 대해서 상술한 것과 동일한 기술들을 사용할 수도 있다. 제2 흐름은 거절이유의 특징에 의존한다. 예를 들어, 인식불가능한(invalid) 이름 또는 주소데이터때문에 거절된 MID들은 하나의 제2흐름도내에서 세척(cleansed)되고 재프로세스 될 수 있고, 인식불가능한 숫자 데이터때문에 거절된 MID들은 제2흐름도내에서 수정을 위해 소스에 돌려 보낼 수도 있다. 특정 실시예에서, 흐름도에서 이러한 종류의 무작위 길이 체인(arbitrary length chain)이 있을 수 있고, 각각은 이전 흐름에서의 거절들을 제거한다( 예를 들어 오리지널 흐름, 제2 흐름, 제3 흐름 등).
도8은 특정 실시예들에 따른 병행론(parallelism)의 사용에 대한 도면(800)을 도시한다. 실시예들은 상술한 기술들을 취합단계 전에 분리단게(splitting phase)를 함으로써 병행적으로 수행할 수 있다. 상기 분리 단계는 인커밍 트랜잭션 아이템들을 파티션들로 분리하는데, 이 때 분리는 동일한 SID를 가지는 모든 트랜잭션 아이템들 동일한 파티션으로 나뉘는 것을 보장하는 어떠한 로직에 의해서 한다. 그리고 나서 각각의 파티션들은 진행되는 취합으로부터 위의 프로세싱의 분리된 인스턴스(instance)에 입력한다. 특정 실시예에서, 일반적인 포이즌데이터 큐는 모든 파티션들에 의해서 사용될 수 있다. 이러한 병행론은 분리(splitting)를위해 SID상의 해쉬함수(hash function)을 사용한다. 해쉬 분리 함수는 식별키들을 가진 레코드들이 동일한 파티션에서 따를 것이라는 점을 보장한다.
TAA 시스템(130)은 취합단계(150)에서 생성된 취합 트랜잭션의 타켓사이즈를 시스템 쓰루풋의 측정에 기초하여 자동적으로 조정한다. 분해 및 루핑의 재시도가 시스템의 쓰루풋을 감소할 것이기 때문에, 상기 TAA 시스템(130)은 자동적으로 타겟사이즈를 더 작게 만들고, 그래서 타켓 취합 사이즈는 할 수 있는 한 크게: 그러나 포이즌트랜잭션 아이템을 포함할 우려가 있을 만큼 크지 않고 임시적인 이유들이나 리소즈제한 이유들로 실패(fail)할 우려가 있을 만큼 크지 않게 선택된다.
특정 실시예에서, 취합은 대드락(deadlock)들을 생성하고, 그리고 분해는 비취합 구현에서는 발생하지 않는 임의의 대드락들을 클리어할 수 있다. 쓰루풋에 기초한 취합사이즈의 적절한 조정은 이러한 진짜 심각한 문제 -전체적인 시스템 성능을 느리게 하는 문제- 를 만드는 것을 회피한다. 대드락들과 타임아웃들은 해비로드(haevy load)들 하에서 가장 자주 발생한다. 해비로드들은 큰 트랜잭션들이나 다수의 작은 트랜잭션들의 오버해드(over haed)에 의해서 발생할 수 있다. 트랜잭션의 자이스의 조정은 전체적인 시스템의 성능들을 향상시키고, 따라서 대드락의 가능성을 감소시킨다.
실시예들은 상기 프로세싱로직이 취합 트랜잭션들의 세트에 적용될 수 있도록 프로세싱 로직들을 표현하는데, 여기서 상기 취합들은 동일한 SID를 가진 트랜잭션들의 FIFO 프로세싱의 필요성(need)을 준수(respect)한다. 특정 실시예에서, 상기 프로세싱 로직은 데이터흐름 기술들을 이용해서 표현하는데, 병행성의 이점(파티션과 파이프라인 둘다)이 자동화된 트랜잭션 취합과 나란히 이용되는 이점을 부가한다.
도9A,9B 및 9C는 특정 실시예들에 따른 로직을 도시한 도면이다. 제어는 TAA시스템(130)이 메시지식별자(MID)와 세션식별자(SID)를 가지는 트랜잭션 아이템을 얻는 것에서 블록900(도9A)에서 시작한다. 블럭 902에서, 상기 TAA시스템(130)은 상기 트랜잭션 아이템을 가장 빠른 취합 트랜잭션(예를 들어 취합 트랜잭션(150)의 리스트의 순서에서)에 부가하는데, 여기서 상기 트랜잭션내에는 동일한 SID를 가지는 다른 트랜잭션 아이템이 없다. 블럭 904에서, 상기 TAA시스템(130)은 취합 트랜잭션들의 리스트(150) 중에서 첫번째로 취합 트랜잭션이 실행기준(예를 들어 타이머의 만기, 취합 트랜잭션의 사이즈가 타겟 사이즈에 도달하는지, 또는 분해에 의해서 생성되었는지(후술하는 도9의 916,924))을 만족하는지 여부를 결정한다. 만약 만족한다면, 프로세싱은 906단계로 계속되고, 그렇지 않다면 900단계로 돌아가서 루프된다.
블럭 906에서, TAA시스템(130)은 실행기준을 충족한 상기 제1취합 트랜잭션을 실행프로세스로 전달하고, 이를 취합 트랜잭션들의 리스트(150)에서 제거한다. 블럭 908에서, 상기 취합 트랜잭션이 데이터흐름을 따라 이동이 완료되면, 상기 TAA시스템(130)은 실행할 지 여부를 결정한다. 특정 실시예들에서, 상기 TAA 시스템(130)은 웨이브마커를 필요로 하는데, 이는 트랜잭션의 모든 레코드들에 따라오고, 실행단계가 언제 실행될지를 알도록 한다. 그러하다면, 프로세싱은 910단계로 계속되고, 그렇지 않다면 프로세싱은 블럭 912(도 9B)로 계속된다. 블럭 910에서, 상기 TAA 시스템은 상기 취합 트랜잭션을 실행한다. 블럭 911에서, 상기 TAA 시스템(130)은 시스템의 쓰루풋 측정에 기초하여 취합 트랜잭션의 타겟사이즈를 조절하고 블럭 904로 돌아가서 루프를 프로세싱한다.
블럭 912에서, TAA시스템(130)은 사용가능(available)한 에러원인들이 있는지 여부를 결정한다. 만약 있다면, 프로세싱은 블럭 914로 계속되고, 그렇지 않다면 프로세싱은 블록 922(도 9C)로 계속된다. 블럭 914에서, TAA시스템(130)은 분해가 수행되어야 하는지 여부를 결정한다. 예를 들어, TAA시스템(130)이 분해가 이미 취합된 트랙잭션상에서 이미 여러번 수행되었는지를 결정한다. 특정 실시예들에서 제3의 분해 프로세스가 그들이 재프로세스한 메시지들이 이미 거절되었는지를 알수 있고, 배드 메시지가 리트라이(retry) 카운터에 의해 태그(tag)될 수 있으므로 이는 가능하다. 만약 분해가 수행되어야 한다면, 프로세싱은 블럭916로 계속되고 그렇지 않다면 프로세싱은 블럭 926(도 9C)로 계속된다. 블럭916에서, TAA시스템(130)은 취합 트랜잭션을 다수의 더 작은 취합 트랜잭션으로 분해하고, 그래서 각각의 새로 취합 트랜잭션은 에러를 일으키는 MID를 가지는 트랜잭션 아이템을 최대 하나씩 포함한다. 블럭916에서(도 9B)로부터, 프로세싱은 블럭928(도 9C)로 계속된다. 블럭928에서, 상기 새로운, 더 작은 취합 트랜잭션은 취합 트랜잭션들의 리스트(150)의 앞에 위치하고, 그리고 이들은 특별하게 레이블(label)되고 이렇게 함으로써 이러한 새롭게 생성된 취합 트랜잭션(이전에 수행된 취합 트랜잭션에서 분해된 것들임)은 실행기준에 충족되는 것으로 간주된다. 따라서, 이러한 새로운 분해된 것들의 첫번째는 즉시 연산단계로 전송될 것이다. 블럭930에서, TAA시스템(130)은 시스템의 쓰루풋 측정에 기초하여 취합 트랜잭션의 타겟 사이즈를 조절하고, 프로세싱 루프는 블럭904(도 9A)로 돌아간다.
블럭922에서, TAA시스템(130)은 유용한(available) 에러원인(error causes)들이 없는 경우에도 분해를 수행할 지 여부를 결정한다. 만약 그렇다면 프로세싱은 블럭924로 계속되고, 그렇지 않다면 프로세싱은 블럭926로 계속된다. 블럭924에서, TAA 시스템(130)은 취합 트랜잭션을 다수의 더 작은 트랜잭션들로 나누고, 프로세싱은 블럭928로 계속된다. 블럭926에서, 포이즌큐 프로세싱이 수행된다. 이는 트랜잭션 아이템을 포이즌큐에 보내고 그리고 선택적으로, 제2 흐름, 제3흐름 등을 수행하는 것을 포함한다. 프로세싱은 블럭926로부터 블럭930로 계속된다.
따라서, 실시예들은 취합 트랜잭션 사이즈의 자동 튜닝(tuning)을 제공한다. 실시예들은 더 빠른 트랜잭션 프로세싱과 자동 튜닝을 제공한다. 실시예들은 데이터흐름을 트랜잭션 프로세싱과 함께 결합한다.
실시예들은 추출(extract), 변환(transform), 그리고 로드하는 툴들(ETL), 복합(complex) 이벤트 프로세싱 시스템들, 그리고 프로세스 및 데이터레벨들 모두의 정보통합과 호환된다.
특정 실시예들에서, 만약 포이즌 데이터 아이템을 생산하는 세션에 대해서 프로세스되는 메시지가 있다면, 상기 세션은 열외(sideline)가 될 것이다. (예를 들어 세션이 재인식되고 모두가 포이즌 데이터 아이템들로 분류된 다음 메시지)
기술된 연산(operation)들은 소프트웨어, 펌웨어, 하드웨어 또는 어느 조합 등을 제공하기 위한 표준 프로그래밍 및/또는 엔지니어링 기술들을 사용하는 방법, 컴퓨터 프로그램 제품 또는 기기(apparatus)로 구현될 수 있다.
실시예들 각각은 전체적으로 하드웨어 구현형태, 전체적으로 소프트웨어 형태 또는 하드웨워와 스프트웨어 엘러멘트들 둘다를 포함하는 구현형태를 취할 수도 있다. 실시예들은 소프트웨어내에 구현될 수도 있으며, 여기서 소프트웨어는 (이에 제한되는 것은 아님)펌웨어, 상주(residence) 소프트웨어, 마이크로코드 (microcode)등을 포함한다.
더욱이, 실시예들은 컴퓨터 프로그램 제품의 형태를 취할 수 있는데, 상기 컴퓨터 프로그램 제품은 컴퓨터에서 사용가능하거나 컴퓨터에서 가독가능한 매체에 접근가능하고, 상기 매체는 컴퓨터나 또는 어느 명령어실행시스템에 의해서 또는 이에 연결되어 사용하기 위한 프로그램 코드를 제공한다. 이 기술의 목적을 위해서, 컴퓨터 사용가능 또는 컴퓨터 가독가능한 매체는 명령어실행시스템,기기 또는 장치에 의해서 또는 이에 연결되어 사용하기 위한 프로그램을 포함, 저장, 통신, 전파 또는 전송하는 어느 기기(apparatus)일 수 있다.
상기 기술된 연산들은 컴퓨터 사용가능 또는 컴퓨터 가독가능 매체에서 유지되는 코드로서 구현되는데, 여기서 프로세서는 상기 컴퓨터 가독가능 매체로부터 상기 코드를 읽거나 실행한다. 상기 매체는 전기,자기, 광, 전자기, 적외선 또는 반도체 시스템(기기 또는 장치)이거나 또는 전송매체일 수 있다. 컴퓨터 가독가능한 매체의 실시예로는 반도체, 솔리드스테이트메모리(solid state memory), 자기 테이프, 제거가능 컴퓨터 디스켓, 리지드 자기 디스크(rigid magnetic disk), 광 디스크, 자기 저장매체( 예를 들어 하드디스크 드라이브, 플로피 디스크, 테이프 등), 휘발 및 비휘발 메모리 장치(예를 들어 램, D램, S램, 롬, Pfha EEPROM, 플래시메모리, 펌웨어, 프로그램가능 로직 등)를 포함한다. 광디스크들의 현재의 예로는 CD-ROM, CD-R/W 및 DVD를 포함한다.
기술된 연산들을 구현하는 상기 코드는 하드웨어 로직상에서 구현될 수 있다(예를 들어 집적회로칩, PGA(Programmable Gate Array), ASIC(application Specific Integrated Circuit) 등). 더 나아가, 기술된 연산들을 구현하는 상기 코드는 "전송신호(transmission signal)"들로 구현될 수 있고, 여기서 전송신호들은 공간(space)를 통해서 또는 전송매체(예를 들어 광섬유, 구리선 등)를 통해서 전파된다. 코드나 로직이 내부에 암호화(encode)되어 있는 전송신호들은 무선신호, 위성송신, 라디오전파, 적위선신호들,블루투스 등을 더 포함할 수 있다. 상기 코드나 로직이 내부에 암호화되어 있는 전송신호들은 전송스테이션(transmitting station)에 의해서 전송될 수 있고, 수신스테이션(receiving station)에 의해서 수신될 수 있는데, 여기서 상기 전송신호내의 암호화된 코드나 로직은 해독(decode)되고 수신 그리고 송신 스테이션 또는 장치들의 하드웨어나 또는 컴퓨터 가독가능한 매체내에 저장된다.
컴퓨터 프로그램 제품은 내부에 코드가 구현될 수 있는 컴퓨터 사용가능 또는 컴퓨터 가독가능 매체, 하드웨어 로직, 및/또는 전송 신호들을 포함할 수 있다. 물론, 본 구성으로부터 본 발명의 권리범위에서 벗어남이 없이, 많은 번형들이 만들어 질 수 있음은 본 기술분야에서 통상의 지식을 가진 자에게 자명할 것이다. 그리고 상기 컴퓨터 프로그램 제품은 본 기술분야에서 알려진 그 어떤 적용가능한 정보 수용(bearing) 매체도 포함할 수 있다.
용어 로직은,일 예로서, 소프트웨어, 하드웨어, 펌웨어 및/ 또는 소프트웨어와 하드웨어와 조합을 포함할 것이다.
특정 실시예에들은 수작업으로 컴퓨팅 인프라구조에 배치시키거나 또는 컴퓨팅 시스템에 컴퓨터 가독가능 코드를 통합하는 자동화된 프로세싱을 나타낼 수 있으며, 여기서 상기 컴퓨팅 시스템과 결합된 코드는 상술한 실시예들의 작업들을 수행할 수 있다.
도 9A,9B 및 9C의 로직은 특정 명령시(particular order)시에 발생하는 특화된 연산들을 기술한다. 그외의 실시예에서는 특정 로직 연산들은 다른 명령하에서 수행될 수 있고, 수정되거나 제거된다. 더욱이 연산들은 상술한 로직에 부가될 수 있고, 여전히 기술된 실시예들에 부합(conform)된다. 더 나아가, 여기서 기술된 연산들은 연속적으로 발생할 수 있고, 또는 특정 연산들은 병렬적(parallel)로 프로세스될 수 있고, 단일 프로세스에 의해서 수행되는 것으로 기술된 연산들은 분산 프로세스에 의해서 수행될 수도 있다.
도 9A,9B 및 9C에 도시된 로직은 소프트웨어, 하드웨어, 프로그램 가능 또는 프로그램 불가능(non-programmable) 게이트 어레이 로직(gate array logic) 또는 하드웨어나 소프트웨어의 조합 도는 게이트 어레이 로직으로 구현될 수 있다.
도10은 특정 실시예들에서 사용가능한 시스템 아키텍쳐(1000)를 도시한 도면이다. 클라이언트 컴퓨터9100) 및/도는 서버 컴퓨터(120)이 시스템 아키텍쳐(1000)을 구현할 수 있다. 시스템 아키텍쳐(1000)은 프로그램코드를 저장 및/또는 실행할 수 있고, 시스템버스(1020)를 통해서 메모리 엘레먼트들(1004)에 직간접적으로 연결(coupled)된 적어도 하나의 프로세서(1002)를 포함한다. 메모리 엘레먼트(1004)는 프로그램 코드의 실제 실행동안 사용되는 로컬메모리, 벌크 저장장치 그리고 실행동안 벌크저장장치로부터 검색되어야 하는 코드의 회수를 감소시키기 위해서 적어도 몇몇 프로그램 코드에 임시 저장공간을 제공하는 캐쉬 메모리들을 포함한다. 상기 저장엘레멘트(1004)는 운영시스템(1005)와 하나 또는 그 이상의 컴퓨터 프로그램들(1006)을 포함한다.
입/출력(I/O) 장치들(1012,1014)(키보드들, 디스플레이들, 포인팅 장치들 등을 포함하나 이에 한정되는 것은 아님)은 직접적으로 또는 중계 IO 컨트롤러(1010)을 통해서 시스템에 연결될 수 있다.
네트워크 아답터(1008)는 데이터프로세싱 시스템을 다른 데이터프로세싱 시스템 또는 원격(remote) 프린터들 또는 저장 디바이스들과 사설 또는 공용 네트워크들을 통해서 연결을 가능케 하기 위해서 시스템에 연결될 수 있다. 모뎀, 케이블 모뎀 및 이더넷카드들이 네트워크 아답터(1008)들의 현재 가능한 타입들의 몇몇 예들이다. 시스템 아키텍쳐(1000)는 저장장치(1016)(비휘발성 저장공간으로 예를 들어 자기 디스크 드라이버, 광디스크 드라이버, 테이프 드라이버 등)에 연결될 수 있다. 저장장치(1016)는 내부저장장치 또는 어태치(attach)나 네트워크 접근가능(accessible) 저장장치를 포함할 수 있다. 저장장치(1016)내의 컴퓨터 프로그램들(1006)들은 본 기술분야에서 알려진 방법대로 메모리 엘레멘트(1004)들로 로드되고, 프로세서(1002)에 의해서 실행된다.
시스템 아키텍쳐(1000)은 도시된 것보다 더 작은 컴포넌트들을 포함할 수 있고, 추가 컴포넌트들 또는 도시된 컴포넌트들과 추가 컴포넌트들의 몇몇 조합은 여기서 도시되지 않았다. 상기 시스템 아키텍쳐(1000)는 본 기술분야에서 알려진 어느 컴퓨팅장치도 포함할 수 있는데, 예를 들어 메인프레임, 서버, 개인용 컴퓨터, 워크스테이션, 랩탑, 휴대용 컴퓨터, 전화장치, 네트워크 설비, 가상장치, 저장 제어기 등을 들 수 있다.
본 발명의 실시예들의 앞선 설명은 묘사 및 설명을 목적으로 표시되었다. 이것은 정확한 형태가 도출되기 위하여, 완전하거나 또는 실시예들을 한정하기 위한 의도가 아니다. 상술한 기술에 비추어 볼 때 많은 변형 및 변경이 가능하다. 본 발명의 권리범위는 이러한 상세한 설명에 아니고, 차라리 여기서 덧붙여지는 청구항들에 의해서 제한되려는 의도이다. 상술한 설명에서, 실시예들과 데이터는 실시예들의 구성에 대한 생산과 사용에 대한 완전한 설명을 제공한다. 많은 실시예들이 본 실시예들의 의도와 범위로부터 벗어남이 없이 만들어질 수 있기 때문에, 실시예들은 이하에 첨부되는 청구항들 또는 이후에 파일되는 청구항들, 그리고 그와 균등한 것들 내에 포함된다.

Claims (28)

  1. 컴퓨터에 의한 구현 방법에 있어서,
    취합 트랜잭션들의 리스트를 유지하는 단계로서, 상기 취합 트랜잭션들의 각각은 하나 이상의 트랜잭션 아이템(transaction item)들을 포함하고, 상기 하나 이상의 트랜잭션 아이템들의 각각은 메시지 식별자와 세션 식별자를 가지는 것인, 상기 취합 트랜잭션들의 리스트를 유지하는 단계;
    메시지 식별자와 세션 식별자를 가지는 트랜잭션 아이템을 획득하는(obtain) 단계;
    상기 트랜잭션 아이템을, 동일한 세션 식별자를 갖는 다른 트랜잭션 아이템이 존재하지 않는 취합 트랜잭션으로서 상기 취합 트랜잭션들의 리스트의 순서에서 가장 빠른(earliest) 취합 트랜잭션에 부가하는 단계;
    상기 취합 트랜잭션들의 리스트에서 실행기준을 충족하는 취합 트랜잭션(an aggregated transaction)을 실행(execute)하는 단계;
    상기 취합 트랜잭션이 커밋(commit)되지 않는다는 결정에 응답하여, 상기 취합 트랜잭션을 다수의 더 작은 취합 트랜잭션들(multiple smaller aggregated transactions)로 분해하는(breaking up) 단계; 및
    상기 다수의 더 작은 취합 트랜잭션들의 각각의 타겟 사이즈를 시스템의 쓰루풋의 측정에 기초하여 조정하는 단계를 포함하는,
    컴퓨터에 의한 구현 방법.
  2. 제1항에 있어서,
    상기 조정하는 단계에 응답하여, 상기 다수의 더 작은 취합 트랜잭션들을 상기 취합 트랜잭션들의 리스트의 앞에(on front of) 위치시키는 단계; 및
    상기 다수의 더 작은 취합 트랜잭션들을 이미 상기 실행기준에 충족된 것으로 표시(labeling)하는 단계를 더 포함하는,
    컴퓨터에 의한 구현 방법.
  3. 제1항에 있어서, 상기 실행기준은
    타이머(timer)가 만료(expiration)되었는지와, 상기 취합 트랜잭션의 사이즈가 기정해진 타겟 사이즈에 도달했는지 중에서 적어도 하나를 포함하는,
    컴퓨터에 의한 구현 방법.
  4. 제1항에 있어서, 상기 취합 트랜잭션을 분해하는 단계는
    하나 이상의 에러들을 감지하는 단계;
    상기 하나 이상의 에러들 각각에 대하여, 그 에러를 일으킨 트랜잭션 아이템과 관련된 메시지 식별자를 추출하는 단계; 및
    상기 취합 트랜잭션을 상기 다수의 더 작은 취합 트랜잭션들로 분해하여, 상기 다수의 더 작은 취합 트랜잭션들의 각각이 에러를 일으킨 트랜잭션 아이템을 최대 하나씩 포함하도록 하는 단계를 더 포함하는,
    컴퓨터에 의한 구현 방법.
  5. 제1항에 있어서, 상기 취합 트랜잭션을 분해하는 단계는
    에러원인들(error causes)이 없다고 결정하는 단계; 및
    상기 에러 원인들이 없다고 결정하는 것에 응답하여, 상기 취합 트랜잭션을 상기 다수의 더 작은 취합 트랜잭션들로 분해하는 단계를 더 포함하는,
    컴퓨터에 의한 구현 방법.
  6. 제1항에 있어서,
    상기 취합 트랜잭션을 실행하는 단계는
    상기 취합 트랜잭션을 데이터흐름 실행 프로세스로 전송하는 단계를 더 포함하는,
    컴퓨터에 의한 구현 방법.
  7. 제1항에 있어서,
    트랜잭션 아이템들을 상기 취합 트랜잭션들의 리스트 내의 취합 트랜잭션들에 부가하기 이전에, 인커밍(incoming) 트랜잭션 아이템들을 파티션들로 나누는 단계를 더 포함하고, 여기서 동일한 세션식별자를 가지는 트랜잭션 아이템들은 동일한 파티션에 있는 것인,
    컴퓨터에 의한 구현 방법.
  8. 제1항에 있어서,
    상기 취합 트랜잭션을 구성하는 개별(individual) 트랜잭션 아이템들을 데이터흐름 실행 프로세스로 파이프라이닝(pipelining) 하는 단계
    를 더 포함하는,
    컴퓨터에 의한 구현 방법.
  9. 삭제
  10. 컴퓨터 판독가능 프로그램을 포함하는 컴퓨터 사용가능 매체로서,
    상기 컴퓨터 판독가능 프로그램은 컴퓨터에서 실행될 때 상기 컴퓨터가 제1항 내지 제8항 중 어느 한 항의 각각의 단계를 수행하게 하는,
    컴퓨터 판독가능 기록매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 작업(operation)들을 수행할 수 있는 로직(logic)을 포함하는 시스템으로서,
    상기 작업들은 제1항 내지 제8항 중 어느 한 항의 각각의 단계를 포함하는,
    시스템.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020107006361A 2007-08-30 2008-08-22 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합 KR101171501B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/848,115 US8347292B2 (en) 2007-08-30 2007-08-30 Transaction aggregation to increase transaction processing throughout
US11/848,115 2007-08-30
PCT/EP2008/061003 WO2009027329A1 (en) 2007-08-30 2008-08-22 Transaction aggregation to increase transaction processing throughput

Publications (2)

Publication Number Publication Date
KR20100077151A KR20100077151A (ko) 2010-07-07
KR101171501B1 true KR101171501B1 (ko) 2012-08-06

Family

ID=40114198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107006361A KR101171501B1 (ko) 2007-08-30 2008-08-22 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합

Country Status (6)

Country Link
US (2) US8347292B2 (ko)
EP (1) EP2191370B1 (ko)
JP (1) JP5363485B2 (ko)
KR (1) KR101171501B1 (ko)
CN (1) CN101784988B (ko)
WO (1) WO2009027329A1 (ko)

Families Citing this family (49)

* 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
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
CA2750279C (en) 2009-02-13 2019-03-26 Ab Initio Technology Llc Managing task execution
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US10057333B2 (en) 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
SG181616A1 (en) 2009-12-10 2012-07-30 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
EP3287896B1 (en) 2010-06-15 2023-04-26 Ab Initio Technology LLC Dynamically loading graph-based computations
US8473953B2 (en) 2010-07-21 2013-06-25 International Business Machines Corporation Batching transactions to apply to a database
US8799378B2 (en) 2010-12-17 2014-08-05 Microsoft Corporation Non-greedy consumption by execution blocks in dataflow networks
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
CN102306200B (zh) * 2011-09-22 2013-03-27 用友软件股份有限公司 增量数据操作语句的并发应用装置和方法
CN102508834B (zh) * 2011-09-22 2014-05-07 用友软件股份有限公司 基于消息的大型事务应用装置和方法
US8812438B2 (en) * 2012-01-20 2014-08-19 Salesforce.Com, Inc. System, method and computer program product for synchronizing data using data identifying messages
US9135262B2 (en) * 2012-10-19 2015-09-15 Oracle International Corporation Systems and methods for parallel batch processing of write transactions
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
US20140215127A1 (en) * 2013-01-31 2014-07-31 Oracle International Corporation Apparatus, system, and method for adaptive intent logging
US9596279B2 (en) 2013-02-08 2017-03-14 Dell Products L.P. Cloud-based streaming data receiver and persister
US9442993B2 (en) 2013-02-11 2016-09-13 Dell Products L.P. Metadata manager for analytics system
US9141680B2 (en) 2013-02-11 2015-09-22 Dell Products L.P. Data consistency and rollback for cloud analytics
US9191432B2 (en) 2013-02-11 2015-11-17 Dell Products L.P. SAAS network-based backup system
US9917885B2 (en) 2013-07-30 2018-03-13 International Business Machines Corporation Managing transactional data for high use databases
CN103593236B (zh) * 2013-11-14 2017-02-22 华为技术有限公司 一种业务流程调度的计算机设备、方法和装置
CA3128713C (en) 2013-12-05 2022-06-21 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
US9465746B2 (en) 2014-01-24 2016-10-11 International Business Machines Corporation Diagnostics for transactional execution errors in reliable transactions
US9323568B2 (en) 2014-01-24 2016-04-26 International Business Machines Corporation Indicating a low priority transaction
US9317379B2 (en) 2014-01-24 2016-04-19 International Business Machines Corporation Using transactional execution for reliability and recovery of transient failures
US9424071B2 (en) 2014-01-24 2016-08-23 International Business Machines Corporation Transaction digest generation during nested transactional execution
US9304935B2 (en) 2014-01-24 2016-04-05 International Business Machines Corporation Enhancing reliability of transaction execution by using transaction digests
US9679033B2 (en) 2014-03-21 2017-06-13 International Business Machines Corporation Run time insertion and removal of buffer operators
US9870378B2 (en) 2014-11-18 2018-01-16 International Business Machines Corporation Read and delete input/output operation for database management
WO2016092473A1 (en) * 2014-12-12 2016-06-16 Sabic Global Technologies B.V. Laser direct structured materials and their methods of making
KR101825416B1 (ko) * 2014-12-30 2018-03-22 주식회사 쏠리드 간섭 제거 중계 장치
KR102494427B1 (ko) * 2015-02-27 2023-02-01 로얄 뱅크 오브 캐나다 네트워크 컴퓨팅 자원에 의한 데이터 프로세싱의 조정
US9928270B2 (en) * 2015-06-25 2018-03-27 International Business Machines Corporation Aggregating and summarizing sequences of hierarchical records
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10437585B2 (en) * 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US20170171721A1 (en) * 2015-12-10 2017-06-15 Linear Dms Solutions Sdn. Bhd. Bluetooth protocol broadcasting system
CA3005263C (en) 2015-12-21 2021-06-15 Ab Initio Technology Llc Sub-graph interface generation
US10853879B2 (en) * 2016-02-19 2020-12-01 Chicago Mercantile Exchange Inc. Systems and methods for reducing data lookups within a set of queues
US10218656B2 (en) 2016-03-08 2019-02-26 International Business Machines Corporation Smart message delivery based on transaction processing status
JP6530337B2 (ja) * 2016-03-16 2019-06-12 株式会社日立製作所 トランザクション制御システムおよびトランザクション制御方法
US11418583B2 (en) * 2018-02-14 2022-08-16 International Business Machines Corporation Transaction process management by dynamic transaction aggregation
CN112148465A (zh) * 2019-06-26 2020-12-29 维塔科技(北京)有限公司 资源分配方法和装置,电子设备及存储介质
CN110990182B (zh) * 2019-12-03 2021-06-11 腾讯科技(深圳)有限公司 事务处理方法、装置、设备及存储介质
JP2021117517A (ja) * 2020-01-22 2021-08-10 富士通株式会社 画面表示プログラム、画面表示方法、及び画面表示装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050102554A1 (en) 2003-11-05 2005-05-12 Ofir Zohar Parallel asynchronous order-preserving transaction processing

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2667818B2 (ja) 1986-10-09 1997-10-27 株式会社日立製作所 トランザクション処理方法
US5283897A (en) * 1990-04-30 1994-02-01 International Business Machines Corporation Semi-dynamic load balancer for periodically reassigning new transactions of a transaction type from an overload processor to an under-utilized processor based on the predicted load thereof
US5423040A (en) * 1991-07-24 1995-06-06 International Business Machines Corporation System and method for efficiently executing directed acyclic graphs
GB2311443A (en) * 1996-03-23 1997-09-24 Ibm Data message transfer in batches with retransmission
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
JPH09282283A (ja) * 1996-04-16 1997-10-31 Hitachi Ltd オンライントランザクションのトレース方法、性能評価方法およびオンライントランザクション処理システム
JPH10149306A (ja) * 1996-11-18 1998-06-02 Nippon Telegr & Teleph Corp <Ntt> サービス連携装置およびその生成装置
US6122372A (en) * 1997-06-04 2000-09-19 Signet Assurance Company Llc System and method for encapsulating transaction messages with verifiable data generated identifiers
US6272602B1 (en) * 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6801938B1 (en) 1999-06-18 2004-10-05 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
US6978305B1 (en) * 2001-12-19 2005-12-20 Oracle International Corp. Method and apparatus to facilitate access and propagation of messages in communication queues using a public network
US7167831B2 (en) * 2002-02-04 2007-01-23 Microsoft Corporation Systems and methods for managing multiple grammars in a speech recognition system
US7069244B2 (en) * 2002-09-17 2006-06-27 First Data Corporation Method and system for merchant processing of purchase card transactions with expanded card type acceptance
US7792716B2 (en) * 2002-10-31 2010-09-07 Federal Reserve Bank Of Atlanta Searching for and identifying automated clearing house transactions by transaction type
JP4316243B2 (ja) 2003-01-20 2009-08-19 株式会社東芝 電力設備監視装置およびその監視方法
US7120825B2 (en) * 2003-06-06 2006-10-10 Hewlett-Packard Development Company, L.P. Adaptive batch sizing for asynchronous data redundancy
WO2005022417A2 (en) * 2003-08-27 2005-03-10 Ascential Software Corporation Methods and systems for real time integration services
JP2006031631A (ja) * 2004-07-21 2006-02-02 Nec Corp データベース処理システム及び方法並びにデータベース処理用プログラム
US7490084B2 (en) * 2004-09-24 2009-02-10 Oracle Corporation Deferred incorporation of updates for spatial indexes
US20060230402A1 (en) 2005-04-07 2006-10-12 International Business Machines Corporation Managing transactions for Enterprise JavaBeans
US8347292B2 (en) 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050102554A1 (en) 2003-11-05 2005-05-12 Ofir Zohar Parallel asynchronous order-preserving transaction processing

Also Published As

Publication number Publication date
JP2010537338A (ja) 2010-12-02
EP2191370A1 (en) 2010-06-02
WO2009027329A1 (en) 2009-03-05
EP2191370B1 (en) 2016-10-05
US8904393B2 (en) 2014-12-02
CN101784988A (zh) 2010-07-21
US8347292B2 (en) 2013-01-01
US20090064147A1 (en) 2009-03-05
JP5363485B2 (ja) 2013-12-11
CN101784988B (zh) 2012-08-29
US20130007750A1 (en) 2013-01-03
KR20100077151A (ko) 2010-07-07

Similar Documents

Publication Publication Date Title
KR101171501B1 (ko) 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합
US11544623B2 (en) Consistent filtering of machine learning data
US11615087B2 (en) Search time estimate in a data intake and query system
US11341131B2 (en) Query scheduling based on a query-resource allocation and resource availability
US11599541B2 (en) Determining records generated by a processing task of a query
US11379755B2 (en) Feature processing tradeoff management
US11321321B2 (en) Record expansion and reduction based on a processing task in a data intake and query system
US11442935B2 (en) Determining a record generation estimate of a processing task
US20220391763A1 (en) Machine learning service
US11586627B2 (en) Partitioning and reducing records at ingest of a worker node
US10318882B2 (en) Optimized training of linear machine learning models
US10339465B2 (en) Optimized decision tree based models
US20190272271A1 (en) Assigning processing tasks in a data intake and query system
US11100420B2 (en) Input processing for machine learning
US8521871B2 (en) System and method for merging monitoring data streams from a server and a client of the server
KR101616967B1 (ko) 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선
CN109145040A (zh) 一种基于双消息队列的数据治理方法
US20150302324A1 (en) Object lifecycle analysis tool
CN106776772B (zh) 一种数据检索的方法及装置
Toprak et al. The effect of asynchronous message queues on the communication of iot devices
Muazzen Framework for automatic selection of analytic platforms for data mining tasks
CN116795858A (zh) 链路调用检索方法、装置、设备、介质及产品
CN117271573A (zh) 数据处理方法、装置和电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee