JP4291060B2 - トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム - Google Patents

トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム Download PDF

Info

Publication number
JP4291060B2
JP4291060B2 JP2003189312A JP2003189312A JP4291060B2 JP 4291060 B2 JP4291060 B2 JP 4291060B2 JP 2003189312 A JP2003189312 A JP 2003189312A JP 2003189312 A JP2003189312 A JP 2003189312A JP 4291060 B2 JP4291060 B2 JP 4291060B2
Authority
JP
Japan
Prior art keywords
transaction
processing
message
server
chained
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2003189312A
Other languages
English (en)
Other versions
JP2005025432A (ja
Inventor
正博 鈴木
和彦 藤田
真一 假屋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003189312A priority Critical patent/JP4291060B2/ja
Priority to US10/850,699 priority patent/US7328213B2/en
Publication of JP2005025432A publication Critical patent/JP2005025432A/ja
Application granted granted Critical
Publication of JP4291060B2 publication Critical patent/JP4291060B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は,複数サーバに分散されたデータベース(DB)を扱うトランザクション処理技術に関し,特に,システム全体のトランザクション処理のスループットを向上させるトランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラムに関する。
【0002】
【従来の技術】
1つのトランザクション処理において複数のサーバのデータベースを扱う場合の技術として,分散トランザクション技術がある(例えば,特許文献1参照)。従来の分散トランザクション処理システムでは,要求された1つのトランザクション(これをグローバルトランザクションという)を処理するために,メインのサーバが他の1または複数のサーバに処理を依頼し,依頼された各サーバでは,それぞれローカルトランザクションとして依頼された処理を実行し,2フェーズコミットメント方式によるトランザクション制御を行っている。
【0003】
図22は,従来の分散トランザクション技術を示す図である。400はサーバD,401はサーバE,402はサーバF,403はサーバG,104はトランザクション処理を要求するメッセージである。410はサーバD400内のトランザクション処理を実行するプロセス(以下,実行プロセスという),411はサーバE401内の実行プロセス,412はサーバE401内のデータベース(DB),413はサーバF402内の実行プロセス,414はサーバF402内のデータベース,415はサーバG403内の実行プロセス,416はサーバG403内のデータベースである。
【0004】
また,500はグローバルトランザクションであり,実行プロセス410上で処理される。501,502,503は各サーバに割り当てられた処理を実行するための個別のトランザクションであるローカルトランザクションであり,それぞれ実行プロセス411,実行プロセス413,実行プロセス415上で処理される。
【0005】
図22に示すように,サーバD400内の実行プロセス410は,メッセージ104を受信した後,グローバルトランザクション500において必要な処理をサーバE401,サーバF402,サーバG403に分散し,各サーバ内でローカルトランザクションとして処理させ,処理結果を各サーバから受信する。
【0006】
例えば,サーバD400内の実行プロセス410は,メッセージ104を受信すると,グローバルトランザクション500を開始し,サーバE401が保持するデータベース412にアクセスする必要がある場合には,処理依頼命令(call E)によって,サーバE401の実行プロセス411にトランザクション処理を依頼する(ステップS100)。実行プロセス411は,ローカルトランザクション501によってデータベース412をアクセスし,その処理結果を実行プロセス410に返す(ステップS101)。
【0007】
同様にして,実行プロセス410は,サーバF402の実行プロセス413,サーバG403内の実行プロセス415に,例えば,それぞれ「call F」,「call G」により,トランザクション処理を依頼し(ステップS102,S104),実行プロセス413からローカルトランザクション502の処理結果の返信を受け,実行プロセス415からローカルトランザクション503の処理結果の返信を受ける(ステップS103,S105)。
【0008】
サーバD400内の実行プロセス410は,トランザクション処理を依頼したすべての実行プロセス(実行プロセス411,413,415)から処理結果の返信を受け,すべてのローカルトランザクションの処理が正常に完了したことを確認した場合には,各実行プロセス411,413,415に対してコミット指示を出し,コミットさせる。
【0009】
一方,サーバD400内の実行プロセス410は,処理結果の返信により,実行プロセス411,実行プロセス413,実行プロセス415のいずれかによるローカルトランザクションの処理の途中で異常が生じたことを検出すると,各実行プロセス411,413,415に対してロールバック指示を出し,ロールバックさせる。
【0010】
実行プロセス410は,実行プロセス411,413,415による一連の処理がすべて完了(コミットまたはロールバック)した後に開放される。
【0011】
【特許文献1】
特開平7−262073号公報
【0012】
【発明が解決しようとする課題】
上記従来技術では,関与するサーバ間での一連の処理がすべて完了(コミットまたはロールバック)するまで,各サーバの実行プロセスは開放されない。例えば,図22において,サーバD400の実行プロセス410は,サーバE〜Fの各実行プロセスにおけるローカルトランザクションの処理がコミットまたはロールバックするまで開放されず,その間は新たなトランザクション処理を開始することができない。
【0013】
このため,従来技術では,トランザクションの実行多重度は上がらず,システム全体のスループットも上がらないという問題があった。特に,処理に関与するサーバが増加するに従い,実行プロセスの処理時間(開放されるまでの時間)が延び,システム全体としてスループットが劣化するという問題があった。
【0014】
本発明は,上記従来技術の問題点を解決し,トランザクション処理に関与するサーバ数が増えても,システム全体のトランザクション処理のスループット(平均処理時間)が低くならないようにし,分散トランザクション処理におけるトランザクションのレスポンスを向上させることを目的とする。
【0015】
【課題を解決するための手段】
上記課題を解決するため,本発明は,複数のサーバによってトランザクションを処理するトランザクション処理システムにおけるサーバにおいて,複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理するためのトランザクション制御装置であって,
各サーバにおける処理を特定する処理種別情報とその処理結果の組の情報が設定される管理部が付加されたメッセージを受信するメッセージ受信手段と,
前記メッセージ受信手段が受信したメッセージにシステム内で一意に第1のトランザクションを識別するための連鎖トランザクション識別子が設定されていない場合には新しい連鎖トランザクション識別子を付与して前記メッセージ内の管理部に設定し,前記メッセージの処理種別情報で指定された処理を第2のトランザクションとして処理し,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクション処理するプロセスの実行権を開放し,前記メッセージ内に未処理の処理種別情報がある場合に,その未処理の処理種別情報によって特定されるサーバに対するトランザクションの処理を要求する前記連鎖トランザクション識別子を含むメッセージを作成し,前記メッセージ内に未処理の処理種別情報がない場合または前記第2のトランザクションの処理結果が異常であった場合に,当該第1のトランザクションに関与したすべてのサーバに対する処理結果の正常または異常を示す結果メッセージを作成するトランザクション管理手段と,
前記トランザクション管理手段が作成したメッセージまたは結果メッセージを送信する前記メッセージ送信手段と,
前記第2のトランザクションの処理において当該第2のトランザクション内でアクセスされるデータベースのデータに対する排他情報を前記連鎖トランザクション識別子と共に記録し,他の第2のトランザクションとの間でそのデータに対する排他制御を行い,前記第1のトランザクションの処理が完了したときに前記連鎖トランザクション識別子に基づいて前記記録した排他情報を廃棄し排他制御を解除する排他制御手段と,
前記第2のトランザクションの処理において当該第2のトランザクション内で更新されるデータの更新前データを前記連鎖トランザクション識別子と共に保存し,前記第1のトランザクションの処理が正常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データを廃棄し,前記第1のトランザクションの処理が異常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄するログ制御手段とを備えることを特徴とする。
【0016】
従来技術と本発明との違いは,以下のとおりである。従来技術では,グローバルトランザクションが複数のローカルトランザクションから構成され,すべてのローカルトランザクションがコミットされるか,いずれかで異常が発生しロールバックされるまで,グローバルトランザクションおよび各ローカルトランザクションを処理するプロセスは,次のトランザクション処理依頼を受け付けることができなかった。
【0017】
これに対し,本発明では,複数のサーバに処理が跨がるトランザクションを,それぞれのサーバにおけるローカルトランザクションの連鎖によって処理し,それぞれのサーバでは,自サーバにおけるトランザクション処理が完了すると,直ちにローカルトランザクションのコミットまたはロールバックを行う。これより,そのサーバは,新しい他のトランザクション処理依頼を受付可能な状態になる。また,トランザクションの連鎖にあたり,ローカルトランザクションを処理すべきサーバの処理を特定する処理種別情報とメッセージ本文とを含むメッセージを,順次,サーバ間で送受信するとともに,最初のトランザクション処理を要求するメッセージの受信時には,システム内で一意にトランザクションを識別するための連鎖トランザクション識別子をメッセージ内に設定することを行う。
【0018】
さらに,本発明では,全体のローカルトランザクションの連鎖(これを連鎖トランザクションと呼ぶことにする)を管理し,連鎖トランザクションの処理が完了するまで,ローカルトランザクションにおいてアクセスされたデータの排他制御および更新前データのログの保存を行う。連鎖トランザクションのすべての処理が正常に終了したならば,これらの排他制御の解除およびログの消去を行い,連鎖トランザクションにおけるいずれかのローカルトランザクションにおいて異常が発生した場合には,更新前データのログを利用して,関連する更新データを連鎖トランザクション開始前の状態に復元する。
【0019】
すなわち,従来のグローバルトランザクションでは,そのコミット処理と各ローカルトランザクションにおけるコミット処理とが同期して行われていたのに対し,本発明によるトランザクション処理方法では,各ローカルトランザクションにおけるコミット処理が,逐次的に非同期に行われる点が大きく異なる。
【0020】
【発明の実施の形態】
以下に,図を用いて,本発明の実施の形態について説明する。図1は,本発明の概要を示す図である。図1において,1はサーバA,2はサーバB,3はサーバCである。
【0021】
サーバA1内において,10は一連のローカルトランザクション群によって構成され複数サーバに跨って処理される連鎖トランザクションを制御する機能を持つトランザクション制御部,11はトランザクション処理依頼のメッセージを受信するメッセージ受信部,12はメッセージを送信するメッセージ送信部,13はサーバA1においてローカルトランザクションを処理するアプリケーションのプロセス,14はデータベース管理システム(DBMS)である。
【0022】
トランザクション制御部10内において,20は排他情報を管理する排他制御部,21はデータベース(DB)140の更新前データをログデータとして管理するログ制御部,22はアプリケーションのスケジュールや排他制御/ログ制御のスケジュールなどを行うトランザクション管理部である。
【0023】
また,110はメッセージ受信部11が受信したメッセージ104が格納されるメッセージキュー,140はDBMS14が管理するデータベース(DB)である。104はトランザクション処理依頼の入力事象であるメッセージ,105は出力事象,106はメッセージ104中の連鎖トランザクション管理テーブルである。また,130はサーバA1に割り当てられた処理を行うローカルトランザクションである。
【0024】
サーバB2は,サーバB2においてローカルトランザクションを処理するアプリケーションのプロセス15と,DBMS16,DB160以外はサーバA1と同様の構成を有し,サーバC3は,サーバC3においてローカルトランザクションを処理するアプリケーションのプロセス17と,DBMS18,DB180以外はサーバA1と同様の構成を有する。また,150はサーバB2に割り当てられた処理を行うローカルトランザクション,170はサーバC3に割り当てられた処理を行うローカルトランザクションである。
【0025】
各部の詳細を説明するに先立ち,図1に示すトランザクション処理システムの処理概要を簡単に説明する。
【0026】
(1)トランザクション処理として,複数のサーバA1〜C3に跨がりデータベース処理を依頼するメッセージ104をサーバA1が受信したとする。サーバA1のトランザクション管理部22は,そのトランザクションに対してサーバ間で一意の識別子を付加する。この識別子を連鎖トランザクションIDという。
【0027】
(2)トランザクション管理部22は,アプリケーションのプロセス13にメッセージ104を渡し,アプリケーションのプロセス13は,ローカルトランザクション130を開始し,メッセージ104で依頼された処理を実行する。ローカルトランザクション130において,DBMS14を介してDB140を更新する場合,ログ制御部21は,更新前データを取得し,連鎖トランザクションIDとともに保存する。
【0028】
(3)上記(2)のサーバA1におけるデータベース140への処理が完了した場合,アプリケーションのプロセス13のローカルトランザクション130(DBMS14のリソースマネージャが提供するトランザクション)は一旦コミットして,そのアプリケーションのプロセス13の実行権を開放し,他の使用者がアプリケーションのプロセス13を使用可能状態とする。すなわち,新しいトランザクション処理依頼を受付可能状態とする。
【0029】
(4)上記(3)で,リソースマネージャのトランザクションはコミットしたが,複数のサーバに跨がった連鎖トランザクションによる一連のデータ処理は完了していないため,上記(2)で更新したデータに対する他の使用者からのアクセスをガードする必要がある。このため,他の使用者がアクセス時にアクセス可否を判定するための排他制御部20を設け,排他制御部20は,連鎖トランザクションが完了(コミットまたはロールバック)するまで,更新データの排他制御情報を記録し,更新されたデータに対する他のトランザクションからのアクセスを禁止する。
【0030】
(5)サーバA1からサーバB2に対する処理の受け渡しは,従来からあるメッセージ送信部12,メッセージ受信部11を用いて非同期メッセージ通信により行う。サーバB2おいてもサーバA1と同様にローカルトランザクション150によってデータベース160に対する処理を行う。さらに,サーバB2からサーバC3へメッセージ通信により処理を受け渡す。
【0031】
(6)このような連鎖トランザクションによる複数サーバに跨がる一連の処理が正常終了した場合,サーバC3のトランザクション管理部22からそれまでに関与したサーバA1,サーバB2への処理結果の通知を連鎖トランザクションIDを指定して行い,その通知を受けたサーバA1,サーバB2のトランザクション管理部22は,通知された連鎖トランザクションIDをもとに,更新前データの廃棄および更新データに対する排他制御の解除を行う(連鎖トランザクションのコミット)。
【0032】
(7)また,上記連鎖トランザクションによる複数サーバに跨がる一連の処理のどこかで何からの原因によりローカルトランザクションが異常終了した場合,それまでに関与したサーバに対し,連鎖トランザクションIDとともに異常を通知する。異常の通知を受けたサーバは,更新前データを元にデータベースの復旧を行い,その後に更新前データの廃棄および更新データに対する排他制御解除を行う(連鎖トランザクションのロールバック)。
【0033】
以上の処理機構によって,各サーバにおけるローカルトランザクションのコミットは,連鎖トランザクションのコミットとは非同期に早期に行われるため,システム全体のスループットが向上する。また,各サーバにおけるDBMSとは別に,トランザクション制御部10において排他制御部20による更新データの排他制御およびログ制御部21による更新前データの記録・管理が行われるので,複数サーバに跨がったデータ処理の一貫性/整合性が保証される。
【0034】
サーバA1(他のサーバも同様)におけるアプリケーションのプロセス13は,図1では説明を簡単にするため1つだけ起動されている状態を示しているが,複数起動されていてもよい。トランザクション制御部10の実装方法としては,各種の形態を取り得る。例えばトランザクション制御部10におけるトランザクション管理部22,排他制御部20,ログ制御部21を,リエントラントなプログラム群によって実現し,これらのプログラムの全部または一部が,アプリケーションのプロセス13と同一のプロセス上で動作するように,トランザクション制御部10をサーバ・システム内に実装することができる。また,トランザクション制御部10を実現するプログラムを,ライブラリ化して提供することもできる。
【0035】
図1に示すシステムの実現方法について,さらに詳しく説明する。以上のような連鎖トランザクションによるサーバ間の処理の引き継ぎのために,メッセージ104内に連鎖トランザクション管理テーブル106が設けられる。この連鎖トランザクション管理テーブル106は,トランザクション処理依頼元が最初に作成してもよく,また,最初に処理依頼を受けるサーバ(例えばサーバA1)のトランザクション管理部22が作成するようにしてよい。
【0036】
連鎖トランザクション管理テーブル106には,例えば,どの順序でどのサーバがどの処理を行うかについてのルーティング情報と,各サーバにおいて,ローカルトランザクションの処理が正常に完了(OK)したか,処理途中で異常が発生(NG)したか,未処理であるかについての処理結果情報が設定される。
【0037】
サーバA1のメッセージ受信部11は,メッセージ104を受信し,メッセージキュー110に格納する。キューイングされたメッセージ104は,メッセージキュー110の先頭から順次,トランザクション制御部10に渡される。なお,必要に応じてメッセージ分配処理部(図示省略)が,メッセージ104中で指定された処理内容に応じたメッセージ分配処理を行うようにしてもよいが,このようなメッセージ分配処理については従来のメッセージ制御と同様であり,本発明において本質的なことではないので詳しい説明は省略する。また,メッセージ通信におけるメッセージの保証についても従来技術を用いて実現されているものとする。
【0038】
メッセージ104を受信したトランザクション制御部10内のトランザクション管理部22は,連鎖トランザクションを一意に特定する識別子である連鎖トランザクションIDを生成して,メッセージ104中の連鎖トランザクション管理テーブル106に設定する。そして,アプリケーションのプロセス13にメッセージ104を渡して,サーバA1に割り当てられたローカルトランザクション130の処理を依頼する。
【0039】
トランザクション制御部10のログ制御部21は,アプリケーションのプロセス13がDB140のデータの更新をする前に,DBMS14から更新前データを取得し,連鎖トランザクションIDとともにログデータとして管理する。また,排他制御部20は,他のユーザがDB140へアクセスする時にアクセス可否を判定するための更新データに対する排他情報を取得して管理する。
【0040】
トランザクション制御部10内のトランザクション管理部22は,サーバA1に割り当てられたローカルトランザクション130の処理が正常に終了すると,このローカルトランザクション130のコミット指示をDBMS14へ出して,このプロセスの実行権を開放する。これにより,アプリケーションのプロセス13は,他のトランザクションの新たな処理依頼を受付可能な状態になる。
【0041】
トランザクション管理部22は,連鎖トランザクション管理テーブル106に設定されたルーティング情報に基づいて,自サーバの次にトランザクション処理を行うサーバに対し,メッセージ104をメッセージ送信部12を通じて送信する。
【0042】
例えば,連鎖トランザクション管理テーブル106に,ルーティング情報として,サーバA1において処理されたローカルトランザクション130の次の処理を行うサーバがサーバB2であることが設定されている場合には,トランザクション管理部22は,サーバB2宛てにメッセージ104を送信する。
【0043】
サーバB2内においても,サーバA1と同様にして,アプリケーションのプロセス15はサーバB2に割り当てられたローカルトランザクション150の処理を行う。サーバB2のトランザクション管理部22は,連鎖トランザクション管理テーブル106の設定内容に基づいて,例えば次のサーバC3にメッセージ104を送信する。
【0044】
サーバC3において,アプリケーションのプロセス17は,トランザクション管理部22からメッセージ104を受信して,サーバC3に割り当てられたローカルトランザクション170の処理を行う。サーバC3に割り当てられたローカルトランザクション170の処理が正常に終了した場合には,トランザクション制御部10内のトランザクション管理部22は,連鎖トランザクション管理テーブル106の設定内容を参照して,次に処理を行うサーバを確認する。
【0045】
例えば,連鎖トランザクション管理テーブル106の設定内容を参照して,自サーバ(サーバC3)が処理を行った最終のサーバであることを確認した場合には,自サーバの前に処理を行ったサーバB2およびサーバA1のトランザクション管理部22に対して,サーバA1,サーバB2,サーバC3に跨がって処理された一連のトランザクションである連鎖トランザクションのコミット指示を出す。
【0046】
この連鎖トランザクションのコミット指示は,具体的には,連鎖トランザクションIDの情報と自サーバにおける処理が正常に完了した(OK)という情報とから構成される結果メッセージの送信により行われる。
【0047】
サーバC3からこの結果メッセージを受けたサーバA1およびサーバB2のトランザクション管理部22は,結果メッセージ中の連鎖トランザクションIDに基づいて,ログ制御部21が管理するログデータ(更新前データ),排他制御部20が管理する排他情報を破棄して,連鎖トランザクションのコミットを行う。排他情報の破棄により,排他が解除される。また,出力事象105は,サーバC3のアプリケーションのプロセス17から出力される。
【0048】
また,例えば,サーバC3におけるローカルトランザクション170の処理途中で異常が発生した場合には,現在のローカルトランザクション170に関するロールバック処理を行うとともに,サーバC3の連鎖トランザクション管理テーブル106の設定内容に基づいて,自サーバの前に処理を行ったサーバB2,サーバA1のトランザクション管理部22に対して,DB140,DB160の復旧指示を行う。
【0049】
この復旧指示は,具体的には,連鎖トランザクションIDの情報と自サーバにおける処理途中で異常が発生した(NG)という情報とから構成される結果メッセージの送信により行われる。
【0050】
サーバB2,サーバA1においては,トランザクション管理部22が,この結果メッセージに含まれる連鎖トランザクションIDに基づいて,ログ制御部21が管理するログデータを用いてDB160,DB140の復旧処理を行う。その後,排他制御部20において排他情報が破棄される。
【0051】
このように,本発明の実施の形態によれば,各サーバは,自サーバに割り当てられたローカルトランザクションの処理が正常に完了すると,このローカルトランザクションをコミットして当該プロセスの実行権を開放し,連鎖トランザクションが正常に完了した場合に,最終に処理を行ったサーバからのコミット指示に基づいて連鎖トランザクションのコミットを行う。
【0052】
このため,トランザクション処理に関与するサーバ数に大きく依存することなく,複数サーバに跨がったシステム全体で処理されるトランザクションである連鎖トランザクションのスループット(平均処理時間)を向上させることができる。
【0053】
また,図2は,本発明による効果を従来技術と比較して説明する図である。本発明によれば,上述したように,各サーバにおけるローカルトランザクションのコミットが早期に行われ,システム全体のトランザクション処理のスループットが向上するという効果に加えて,分散トランザクションにかかる通信回数の削減によるトランザクションのレスポンス向上という効果もある。
【0054】
図2(A)は,図22に示す従来技術のシステム構成と同じ数の4台のサーバを用いた従来技術による分散トランザクション処理を行う場合の通信回数を示している。また,図2(B)は,4台のサーバを用いた場合の本発明による連鎖トランザクション処理を行う場合の通信回数を示している。図2中のM1,M3,M5は処理依頼メッセージ,M2,M4,M6は処理結果メッセージ,M7,M9,M11はコミット指示メッセージ,M8,M10,M12はコミット応答メッセージを表す。また,M01,M02,M03は処理伝達メッセージ,M04,M05,M06はコミット通知メッセージを表す。
【0055】
図2(A)の従来技術の場合,図22においても説明したように,サーバD400のグローバルトランザクションがコミットするまでの通信回数は,M1〜M12の12回となる。これに対し,本発明の場合,図2(B)に示すように,サーバD’において連鎖トランザクションが開始してから,サーバG’からサーバD’へ連鎖トランザクションのコミット通知メッセージM04が送信され,連鎖トランザクションがコミットされるまでの間の通信にかかる時間は,M01〜M04の4回分の通信の時間となる。したがって,本発明によれば,図2(A)に示す従来技術に比べて,1トランザクションで発生する通信時間による遅延が大幅に削減でき,トランザクションのレスポンスの向上を図ることができる。また,システム全体における通信量も従来技術では,12回の通信回数分の通信量になるのに対し,本発明では,サーバG’からサーバE’,F’へのコミット通知メッセージM05,M06を含めて6回分の通信量となり,通信量の削減によってネットワークの負荷も軽減されることになる。
【0056】
図3は,本発明の実施の形態におけるシステム構成の詳細を示す図である。ここでは,サーバA1の構成を例にとって説明する。図3において,101はアプリケーションのプロセス13から依頼を受けてDBMS14へのアクセスを行う統一データアクセス部である。141は排他情報が格納される排他情報テーブル,142は更新前データをログデータとして記録するログファイルである。
【0057】
トランザクション管理部22内の220は連鎖トランザクションIDの生成を行う連鎖トランザクションID管理部,221はアプリケーションのスケジュールをするアプリケーションスケジュール部,222は排他制御/ログ制御のスケジュールをする排他制御/ログ制御スケジュール部である。
【0058】
223はDBMS14へのアクセス制御をするDBMSアクセス制御部,224はメッセージ104をどのサーバに送信するかのルーティングを制御するメッセージルーティング制御部,225はメッセージ104または結果メッセージを他のサーバとの間で送受信するメッセージ送受信部である。
【0059】
排他制御部20は,排他情報テーブル141の参照,更新を行い,他のユーザがアクセス時にアクセス可否を判定する手段である。各サーバにおいて,ローカルトランザクションをコミットしても,連鎖トランザクションは完了していないため,更新したデータに対する他のユーザからのアクセスをガードする必要があることから,トランザクション制御部10は排他制御部20を備えている。
【0060】
排他制御部20は,DBMS14の排他制御(ローカルトランザクションの間の排他)とは別に,連鎖トランザクションが動作している間,排他情報を管理する。排他情報は,排他情報テーブル141に格納されて不揮発データとして管理される。本実施の形態では,排他情報テーブル141を,DB140と同一DBMS14上に作成するようにしているが,もちろん他の不揮発記憶媒体を用いてもよい。
【0061】
ログ制御部21は,DBMS14から更新前データ(ログ)を取得して,ログデータとしてログファイル142に記録する。連鎖トランザクションの処理における異常発生時には,このログデータを元にDB140のデータを復元する。本実施の形態では,例えば,ログファイル142を,DB140と同一DBMS14上に作成している。これも同一DB140に限らず,他の不揮発記憶媒体上に作成してもよい。
【0062】
統一データアクセス部101は,本発明に必須ではないが,本実施の形態では,連鎖トランザクションの制御の実装およびアプリケーションからのDB140に対するアクセスを容易にするための手段として設けている。統一データアクセス部101は,アプリケーションのプロセス13からSQLなどのアクセス命令を直接発行することなく,レコード番号やデータの項目名の指定によりDBMS14へアクセスする仕組み,すなわち,データアクセス装置専用のアプリケーション・インタフェース(API)を提供する。
【0063】
統一データアクセス部101は,例えば,アプリケーションのプロセス13から受け取ったアクセス要求項目に基づいてDBMS14のアクセス命令を組み立て,DBMS14へアクセスする。なお,サーバB2またはサーバC3のトランザクション管理部,統一データアクセス部も上記図3に示すサーバA1のトランザクション制御部10,統一データアクセス部101と同一の構成を有する。
【0064】
図4は,本発明の実施の形態におけるメッセージの形式を示す図である。メッセージ104は,連鎖トランザクション管理テーブル106から構成される管理部とメッセージ部とからなる。管理部(連鎖トランザクション管理テーブル106)は,例えば,連鎖トランザクションを一意に特定する識別子である「連鎖トランザクションID」と,「処理種別」と「処理結果」の組の項目から構成される。
【0065】
連鎖トランザクション管理テーブル106の「処理種別」の項目に設定された処理は,例えば,入金処理や現金引き落とし処理というような,各サーバに割り当てられたローカルトランザクション処理を意味する。そして,「処理種別」の項目に設定された順序で各処理が行われる。従って,この連鎖トランザクション管理テーブル106の「処理種別」の項目は,どの順序でどの処理を行うかのルーティング情報を提供することとなる。
【0066】
「処理種別」の項目には,具体的な処理名が設定されてもよいし,処理の識別番号が設定されてもよい。また,処理名または処理の識別番号とともに,当該処理を行うサーバ名またはサーバの識別番号などが設定されてもよい。連鎖トランザクション管理テーブル106とは別に,処理種別情報とそれを処理するサーバ情報との対応情報をテーブル化して持つようにしてもよい。
【0067】
また,連鎖トランザクション管理テーブル106の「処理結果」の項目には,「処理種別」の項目に設定された処理の処理結果が設定される。例えば,処理が正常に完了した場合には「OK」と設定され,処理途中に異常が生じた場合には「NG」と設定され,未処理である場合には「未」と設定される。
【0068】
例えば,図4に示す管理部(連鎖トランザクション管理テーブル106)には,処理AをサーバA1が処理し,その次に,処理BをサーバB2が処理し,それぞれ正常に処理が完了したこと,また,処理Bの次に行われる処理CはサーバC3が処理する処理であり,未処理であることが設定されている。
【0069】
メッセージ104は,連鎖トランザクションで動作する処理間(複数サーバ間)で持ち回る。また,メッセージ104内の連鎖トランザクション管理テーブル106の設定内容は,各サーバにおいて更新され,例えば,サーバC3が処理Cを正常に完了させた場合には,図4に示す連鎖トランザクション管理テーブル106において,処理Cの「処理結果」の項目に「OK」が記録される。
【0070】
また,例えば,サーバC3による処理Cの処理途中で異常が発生した場合には,図4に示す連鎖トランザクション管理テーブル106において,処理Cの「処理結果」の項目に「NG」が記録される。
【0071】
従って,メッセージ104を受信したサーバは,メッセージ104内の連鎖トランザクション管理テーブル106の設定内容を参照することにより,連鎖トランザクションの処理結果情報や,次の処理を行うサーバがどのサーバであるかなどのルーティング情報を取得することができる。
【0072】
本発明の実施の形態においては,例えば,連鎖トランザクション管理テーブル106に,当初から,サーバA1,サーバB2,サーバC3の順序で処理を行うというルーティング情報が設定されていてもよい。
【0073】
また,例えば,サーバA1において,アプリケーションから受け取ったルーティングの追加/変更情報に基づいて,トランザクション管理部22のメッセージルーティング制御部224が,ルーティング情報を追加/変更してもよい。すなわち,サーバA1のアプリケーションのプロセス13が,アプリケーションの処理内容に応じて次にメッセージ104を引き渡すサーバの処理(例えば,サーバB2の処理B)を決定し,メッセージルーティング制御部224に通知し,連鎖トランザクション管理テーブル106に「処理B(サーバB)」の情報を動的に設定するようにしてもよい。
【0074】
図5は,トランザクション制御部10のトランザクション管理処理フローの一例を示す図である。まず,トランザクション制御部10のトランザクション管理部22は,メッセージ受信部11よりメッセージ104を受信する(ステップS1)。
【0075】
受信したメッセージ104内の連鎖トランザクション管理テーブル106には,例えば,図6(A)に示すように,最初に処理AをサーバA1が行い,未処理状態であることが設定されている。また,図6(A)には,サーバA1が処理Aを行った後にサーバB2が処理Bを行い,サーバB2が処理Bを行った後にサーバC3が処理Cを行うことが設定されている。
【0076】
なお,本発明においては,図6(B)に示すように,連鎖トランザクション管理テーブル106に,当初は,処理AをサーバA1が行うことだけが設定されており,アプリケーションのプロセス13からのルーティングの追加/変更情報に基づいて,サーバA1内のメッセージルーティング制御部224が,連鎖トランザクション管理テーブル106のルーティング情報を動的に設定するようにしてもよい。このルーティング情報の動的な設定(追加/変更)については,後述する。
【0077】
また,他の実施の形態として,最初のサーバA1が受信するメッセージ104には,連鎖トランザクション管理テーブル106がない場合もある。この場合には,メッセージ本体の処理依頼内容からサーバA1における処理内容が決定され,トランザクション管理部22が,連鎖トランザクション管理テーブル106を生成してメッセージ本体に付加する。
【0078】
次に,メッセージ104内に連鎖トランザクションIDがあるかを判断し(ステップS2),連鎖トランザクションIDがなければ連鎖トランザクション取得用テーブルのカウンタ部に1加算後,連鎖トランザクションIDを取得し(ステップS10),メッセージ104内に連鎖トランザクションIDを設定して(ステップS11),ステップS3に進む。
【0079】
図7は,連鎖トランザクション取得用テーブルの一例を示す図である。連鎖トランザクション取得用テーブルは,トランザクション管理部22の連鎖トランザクションID管理部220が管理する。
【0080】
連鎖トランザクションIDは,固定部とカウンタ部からなる。固定部には,連鎖トランザクションが動作する最初のサーバを識別できる値が設定され,例えば,IPアドレスなどが設定される。固定部は,サーバ識別番号でもよい。
【0081】
カウンタ部は,連鎖トランザクションIDの取得の契機で1を加算する。そして,加算後に「固定部+カウンタ部」で連鎖トランザクションIDとして管理する。上記ステップS11の処理により,例えば,図8(A)に示すように,連鎖トランザクションID「192.231.6.2.1」が連鎖トランザクション管理テーブル106に設定される。
【0082】
ステップS2において,メッセージ104内に連鎖トランザクションIDがある場合には,アプリケーションの呼び出しを行い(ステップS3),連鎖トランザクション管理テーブル106の「処理種別」の項目に設定された処理を依頼する。すなわち,アプリケーションのプロセス13に処理Aを依頼する。アプリケーションのプロセス13において処理Aが行われ,アプリケーションのプロセス13から復帰したならば,当該処理の結果をメッセージに設定する(ステップS4)。
【0083】
例えば,サーバA1のアプリケーションのプロセス13による処理Aが正常に完了した場合には,図8(B)に示すように,連鎖トランザクション管理テーブル106の処理Aの「処理結果」の項目に「OK」が設定される。サーバA1による処理Aの途中で異常が発生した場合には,「NG」が設定される。
【0084】
なお,後述するように,例えば,アプリケーションのプロセス13からのルーティングの追加/変更指示があった場合には,ステップS4において,連鎖トランザクション管理テーブル106の「処理種別」項目の設定内容を追加/変更することを通じて,ルーティング情報を追加/変更してもよい。
【0085】
次に,処理結果がOKかを判断し(ステップS5),処理結果がOKである場合には,DBMS14へコミット指示を行い(ステップS6),ステップS7へ進む。
【0086】
ステップS7では,メッセージ104内に次の処理があるか,すなわち,連鎖トランザクション管理テーブル106に次に行う処理が設定されているかを判断する。
【0087】
メッセージ104内に次の処理がある場合には,次の処理を行うサーバ宛てのメッセージ104を作成して(ステップS8),メッセージ送信部12に対してメッセージ104を送信する(ステップS9)。
【0088】
例えば,図8(B)に示す連鎖トランザクション管理テーブル106の設定内容から,サーバA1が処理Aを処理した後にサーバB2が処理Bを処理することがわかるため,トランザクション制御部10のトランザクション管理部22は,サーバB2宛てのメッセージをメッセージ送信部12に送信する。メッセージ104を受信したサーバB2では処理Bが行われることになる。
【0089】
ステップS9でメッセージ104を送信した後,メッセージ受信部11の受信メッセージを削除して(ステップS16),処理を終了する。
【0090】
ステップS16で受信メッセージを削除する理由は,以下のとおりである。本実施の形態におけるメッセージ受信部11では,システム障害などによるサーバのダウン時に,メッセージが消失してしまわないようにメッセージキュー110を不揮発性の記憶媒体に保存し,メッセージが喪失しないように保証している。このメッセージ保証機構を連鎖トランザクションのメッセージ処理中における障害対策にも利用する。このため,ステップS1において,メッセージ受信部11からトランザクション制御部10がメッセージを受信しても,メッセージキュー110において受信メッセージは削除しないで,受信済みにしておく。サーバにおける処理が完了したときに,受信メッセージを削除する(ステップS16)。こうすることにより,サーバが障害でダウンし,その後に再起動したときに,サーバ内のメッセージ104の有無により,そのサーバでトランザクション処理の実施の有無を判断することができる。
【0091】
ステップS7において,メッセージ104内に次の処理がない場合には,当該連鎖トランザクション処理に関与したサーバに対する結果メッセージを作成する(ステップS14)。この場合の結果メッセージは,連鎖トランザクションのコミット指示を行うためのものであり,連鎖トランザクションIDの情報と自サーバにおける処理が正常に完了した(OK)という情報とから構成される。そして,メッセージ送信部12に対して結果メッセージを送信し(ステップS15),処理済みの受信メッセージを削除し(ステップS16),処理を終了する。
【0092】
ステップS5において,当該処理の結果がNGの場合には,DBMS14へロールバック指示を行い(ステップS12),排他制御部20へ排他解除依頼を行う(ステップS13)。そして,当該連鎖トランザクション処理に関与したサーバに対する結果メッセージを作成する(ステップS14)。
【0093】
この場合の結果メッセージは,上記連鎖トランザクション処理に関与したサーバ内のデータベースの復旧を指示するためのものであり,連鎖トランザクションIDの情報と自サーバにおける処理途中で異常が発生した(NG)という情報とから構成される。そして,メッセージ送信部12に対してこの結果メッセージを送信し(ステップS15),受信メッセージを削除して(ステップS16),処理を終了する。
【0094】
サーバA1における処理が正常に終了し,サーバB2へメッセージ104が送信されて,同様にサーバB2内で処理Bがされた後に,上述したステップS7〜S9の処理により,連鎖トランザクション管理テーブル106の設定内容に従って,サーバB2からサーバC3にメッセージ104が送信されると,サーバC3において処理Cが行われる。そして,サーバC3における処理Cが正常に完了した後には,連鎖トランザクション管理テーブル106は,例えば図9(A)に示すような内容が設定されている。
【0095】
そこで,サーバC3のトランザクション管理部22は,上記図9(A)に示す連鎖トランザクション管理テーブル106を参照して,次の処理がないこと,すなわち,自サーバが最終に処理を行ったサーバであることを確認すると,連鎖トランザクション管理テーブル106において自サーバより前に処理を行ったサーバとして記録されているサーバB2とサーバA1に対して結果メッセージを送信してコミット指示を出す。
【0096】
例えば,サーバA1,サーバB2,サーバC3の順に各サーバに割り当てられた処理を行ってきた場合,サーバC3における処理結果がNGであると,図9(B)に示すように,連鎖トランザクション管理テーブル106の処理Cの「処理結果」の項目に「NG」が設定されている。
【0097】
この場合,サーバC3のトランザクション管理部22は,DBMS14へロールバック指示をするとともに,排他制御部20へ排他解除依頼をする。そして,図9(B)に示す連鎖トランザクション管理テーブル106を参照して,自サーバの前に処理を行ったサーバB2とサーバA1宛てにデータベースの復旧を指示するための結果メッセージを送信する。
【0098】
次に,トランザクション制御部10の排他制御処理について説明する。本実施の形態における排他制御処理は,アプリケーションのプロセス13と同一プロセスで実行してもよいし,排他制御処理自体を独立したサーバ(排他専用サーバ)で行ってもよい。
【0099】
本処理の入力情報は,例えば,排他要求の項目名,アクセスモード(参照または更新),連鎖トランザクションIDである。排他制御部20が管理する排他情報が格納される排他情報テーブル141の一例を図10に示す。
【0100】
図10に示すように,排他情報は,例えば,項目名,アクセスモード(参照または更新),連鎖トランザクションIDの組の情報から構成される。排他情報の項目名は,DBMSにおけるアクセスの排他制御単位となるデータを識別するものであり,レコード単位で排他制御が行われる場合には,レコード識別子(レコード番号等)のようなものでもよい。
【0101】
図11(A)は,排他獲得時のトランザクション制御部10の動作処理フローの一例を示す図である。排他獲得要求時の入力情報は,排他情報テーブル141における排他情報と同じ,排他要求の項目名,アクセスモード(参照または更新),連鎖トランザクションIDである。排他獲得要求に対し,排他制御部20は,排他情報テーブル141の検索を行い(ステップS21),同じ項目名の排他情報があるか否かを調べる(ステップS22)。該当する排他情報がなければ,排他情報テーブル141の空きエントリに,入力情報の排他情報を設定して管理し(ステップS25),排他獲得処理を終了する。
【0102】
ステップS22の判定において,同じ項目名の排他情報があれば,排他的なアクセスモードかを判断する(ステップS23)。入力情報のアクセスモードと,排他情報テーブル141中の排他情報のアクセスモードの少なくともいずれかが,「更新」であれば排他的なアクセスモードと判断し,両方とも「参照」の場合には,排他的なアクセスモードではないと判断する。
【0103】
排他的なアクセスモードでなければ,ステップS21へ戻り,他の該当する排他情報の検索を続ける。排他的なアクセスモードであれば,排他解除通知が来るまで,排他待ちを行い(ステップS24),ステップS21へ戻る。
【0104】
図11(B)は,排他解除時のトランザクション制御部10の動作処理フローを示す図である。排他解除のときの入力情報は,連鎖トランザクションIDである。排他解除時には,排他制御部20は,連鎖トランザクションIDをキーに排他情報テーブル141の検索を行う(ステップS31)。入力情報と同じ連鎖トランザクションIDの排他情報がない場合,排他解除処理を終了する(ステップS32)。同じ連鎖トランザクションIDの排他情報がある場合には,その排他情報を排他情報テーブル141から削除し(ステップS33),排他待ち相手に排他解除通知を行う(ステップS34)。その後,ステップS31へ戻ってすべての該当する排他情報を削除するまで処理を繰り返す。
【0105】
次に,トランザクション制御部10のログ制御処理について説明する。ログ制御処理では,ログデータの管理および管理したログデータに基づくDB140の復旧を行う。前述したように,ログ(更新前データ)を管理するログファイル142は,更新するDB140と同一DBMS14上に事前に作成し,ログは不揮発データとして管理する。
【0106】
本処理の入力情報は,連鎖トランザクションID,更新前データの位置情報を一意に識別する項目名,ログデータ,処理要求(ログ書出し/ログ削除/DB復旧)である。また,ログファイル142上では,図12に示すように,連鎖トランザクションID,項目名,ログデータが管理される。
【0107】
図13(A)は,トランザクション制御部10のログ制御部21によるログ書出し処理フローの一例を示す図である。ログ制御部21は,ログ書出し要求に対して,まず,ログデータの組み立てを行い(ステップS41),DBMS14へ書き込み依頼を行って(ステップS42),処理を終了する。
【0108】
図13(B)は,トランザクション制御部10のログ制御部21によるログ削除処理フローの一例を示す図である。ログ制御部21は,ログ削除要求に対して削除データの組み立てを行い(ステップS51),DBMS14へ削除依頼を行って(ステップS52),処理を終了する。
【0109】
図14は,DBの復旧時のトランザクション制御部10のログ制御部21によるDB復旧処理フローの一例を示す図である。DB復旧時の入力情報は,連鎖トランザクションIDである。
【0110】
ログ制御部21は,連鎖トランザクションIDの入力によるDB復旧依頼に対し,入力した連鎖トランザクションIDをキーとしてログデータの検索をDBMS14へ依頼する(ステップS61)。該当するログデータがない場合には(ステップS62),処理を終了する。
【0111】
該当するログデータがあった場合,ログデータからDBMS14のアクセス命令の組み立てを行い(ステップS63),DBMS14へ書き込み依頼を行う(ステップS64)。この処理によりDB140が連鎖トランザクションによる更新前の状態に復旧される。その後,DBMS14へログデータの削除依頼を行って(ステップS65),ステップS61へ戻る。該当するすべてのログデータについて同様に処理を繰り返す。
【0112】
次に,トランザクション制御部10のメッセージルーティング制御について説明する。このメッセージルーティング制御は,アプリケーションのプロセス13からのルーティングの追加/変更指示を受けて,トランザクション制御部10内のメッセージルーティング制御部224が行う。
【0113】
図15は,メッセージルーティング制御処理フローの一例を示す図である。まず,アプリケーションのプロセス13からAPIで受け取ったルーティングの追加/変更指示情報の解析を行う(ステップS71)。解析結果に基づき,メッセージの連鎖トランザクション管理テーブル106にルーティング情報を設定して(ステップS72),処理を終了する。例えば,図16(B)に示すアプリケーションからの指示を解析して,「次の処理B(サーバB)の情報を設定」というルーティングの追加指示情報を得たとする。この場合,ステップS72では,図16(A)に示す連鎖トランザクション管理テーブル106の「処理種別」の項目に,「処理B(サーバB)」という情報を追加設定する。
【0114】
図17は,トランザクション制御部10による連鎖トランザクションのコミット処理フローまたはDBの復旧処理フローの一例を示す図である。他のサーバから連鎖トランザクションの結果メッセージを受信すると(ステップS81),その結果メッセージから処理が正常に完了した旨を通知する正常終了通知(OK)か異常終了通知(NG)かを判定する(ステップS82)。正常終了通知である場合には,連鎖トランザクションのコミット指示がなされたことを意味するので,結果メッセージ中の連鎖トランザクションIDを指定してログ制御部21へログデータの削除依頼を行い(ステップS83),その後,排他制御部20へ排他解除依頼を行って(ステップS84),処理を終了する。
【0115】
ステップS82の判定において,正常終了通知でなく,処理結果が「NG」である旨の通知であることがわかった場合には,結果メッセージ中の連鎖トランザクションIDを指定してログ制御部21へDB復旧依頼を行い,(ステップS85),その後に排他制御部20へ排他解除を依頼し(ステップS84),処理を終了する。
【0116】
次に,統一データアクセス制御について説明する。本処理の入力情報は,アクセスする項目名,アクセス要求(参照または更新),更新データ(更新時)である。また,出力情報は,読込みデータ(読込み要求時)である。
【0117】
図18は,統一データアクセス部101の統一データアクセス制御処理フローの一例を示す図である。まず,排他獲得要求で排他制御部20の排他制御処理の呼び出しを行う(ステップS91)。次に,アプリケーションのプロセス13からのアクセス要求項目より,DBMS14のアクセス命令の組み立てを行い(ステップS92),DBMS14へ組み立てたアクセス命令を発行し,該当レコードの読込みを行う(ステップS93)。アプリケーションからのアクセス要求が参照(読込み要求)の場合,読み込んだレコードは,出力情報としての読込みデータとなる。アクセス要求が更新(書出し要求)の場合,読み込んだレコードは,更新前データとしてログする。
【0118】
そのため,アクセス要求がデータの書出し要求か読込み要求かを判定する(ステップS94)。データの書出し要求である場合には,ログ書出し要求でログ制御処理の呼び出しを行い,ステップS93で読み込んだデータをログ制御部21を呼び出してログファイル142に記録し(ステップS95),また,DBMS14へ更新データの書込みを依頼して(ステップS96),処理を終了する。また,アクセス要求がデータの読込み要求の場合には,読込みデータをアクセス要求元のアプリケーションへ渡す復帰情報に設定して(ステップS97),処理を終了する。
【0119】
図19は,ローカルトランザクションをコミットする場合の各サーバ内での動作シーケンスの一例を示す。ここでは,サーバA1内の動作処理を例にして,図19に示すシーケンスa〜nに従って説明する。
【0120】
(a)トランザクション制御部10が,メッセージ受信部11にメッセージ受信を要求し,メッセージ受信部11からメッセージ104を受信する。
【0121】
(b)受信したメッセージ104中の連鎖トランザクション管理テーブル106に連鎖トランザクションIDを設定して,ローカルトランザクション(DBトランザクション)の開始を宣言する。なお,受信したメッセージ104中にトランザクション管理テーブル106が付加されていない場合には,連鎖トランザクション管理テーブル106を付加した後に,連鎖トランザクションIDを設定する。
【0122】
(c)アプリケーションを呼び出し,アプリケーションのプロセス13においてメッセージ104で要求された処理を開始する。
【0123】
(d)アプリケーションのプロセス13がDB140のデータを更新する場合,統一データアクセス部101にDB140の更新要求を行う。
【0124】
(e)統一データアクセス部101は,トランザクション制御部10に排他獲得およびログ要求を行う。
【0125】
(f)〜(h)この要求に対して,トランザクション制御部10は,排他情報テーブル141に該当する更新データの排他情報がないことを確認して,排他情報テーブル141に排他情報を設定する。また,トランザクション制御部10は,DB140から更新前データを読み込み,ログファイル142に更新前データのログを書き出す。その後に,トランザクション制御部10は,統一データアクセス部101に排他/ログ終了を通知する。
【0126】
(i)統一データアクセス部101は,排他/ログ終了通知を受け付けると,SQL文を発行するなどしてDB140を更新する。
【0127】
(j)アプリケーションのプロセス13は,ローカルトランザクションの処理を完了する前に,連鎖トランザクション管理テーブル106におけるルーティング情報の追加/変更指示をトランザクション制御部10へ通知する。この指示に従って,トランザクション制御部10は,連鎖トランザクション管理テーブル106のルーティング情報を追加/変更する。
【0128】
(k)アプリケーションの処理を終了し,トランザクション制御部10に復帰する。
【0129】
(l)トランザクション制御部10は,アプリケーションから復帰した後,アプリケーションの処理結果を連鎖トランザクション管理テーブル106に設定する。
【0130】
(m)設定された処理結果が「OK」の場合,トランザクション制御部10は,DBMS14に対してローカルトランザクションのコミット指示を出す。
【0131】
(n)トランザクション制御部10は,連鎖トランザクション管理テーブル106の設定内容に基づいて,次の処理を行うサーバへメッセージを送信することをメッセージ送信部12に指示する。自サーバが最終のトランザクション処理を行ったサーバである場合には,自サーバの前に処理を行ったすべてのサーバに連鎖トランザクションのコミット指示をする結果メッセージを送信する。
【0132】
図20は,連鎖トランザクションをコミットする場合の各サーバ内での動作シーケンスの一例を示す図である。以下の(a’)および(b’)の処理は,アプリケーションの処理とは非同期に行われる。
【0133】
(a’)トランザクション制御部10は,連鎖トランザクションのコミットを指示する結果メッセージを受信する。
【0134】
(b’)トランザクション制御部10は,コミットを指示する結果メッセージの受信により,ログファイル142から該当する連鎖トランザクションのログデータを削除し,排他情報テーブル141から該当する連鎖トランザクションの排他情報を削除する。
【0135】
次に,本発明の実施の形態において,連鎖トランザクション処理中にサーバがダウンし,その後にサーバが再起動したときの処理について説明する。連鎖トランザクション処理中にサーバがダウンした場合には,処理の実行状態によりその後の振る舞い(処理継続/ロールバック)が異なる。例えば,サーバA1,B2,C3と処理を行う連鎖トランザクションにおいて,サーバC3の処理を実施中に,サーバB2がダウンしたとする。
【0136】
この場合には,サーバB2の処理は完結しているため,サーバB2では再起動後に結果メッセージの到着を待ち,その結果メッセージの指示(OK/NG)に従う。
【0137】
サーバC3がダウンした場合には,ダウン時にサーバC3で処理が行われていたか否かにより,その後の振る舞いが異なる。例えば,メッセージ受信部11にメッセージ104があるが,一切処理を行っていない状態でダウンした場合には,サーバC3は,ダウン後のシステム再起動後に,引き続きそのメッセージ104に従った処理を実施すればよく,サーバC3で処理中にダウンした場合には,処理中であったトランザクションのリカバリ処理が必要となる。
【0138】
ダウン時に処理中であったか否かを判断するため,連鎖トランザクションIDで排他情報テーブル141を検索し,当該連鎖トランザクションIDの排他情報があれば,処理中にダウンしたと判断して,一旦サーバC3で実施した処理をロールバック(ログデータからDB復旧)する。
【0139】
このとき,連鎖トランザクション自体をロールバックするか否かは,いずれでも構わない。連鎖トランザクション自体をロールバックする場合には,連鎖トランザクション処理に関与したサーバに対して,処理途中で異常が発生(ダウン)し,処理結果が「NG」であることを示す結果メッセージを送信すればよい。また,処理を継続する場合には,再度メッセージを読み込み,その処理を実行すればよい。ここまでの処理をダウン後の再起動時の初期処理で実施する。
【0140】
図21は,連鎖トランザクションの処理中にサーバがダウンし,ダウン後に再起動した時のサーバにおける初期処理のフローの一例を示す図である。
【0141】
まず,メッセージ受信部11よりメッセージを受信する(ステップS111)。そして,メッセージ受信部11にメッセージがあるかを判断する(ステップS112)。メッセージがない場合には,処理を終了する。メッセージがある場合には,結果メッセージかを判断する(ステップS113)。
【0142】
結果メッセージである場合には,ステップS111へ戻り,メッセージ受信部11からの次のメッセージの受信処理を行う。結果メッセージではなく,連鎖トランザクションの処理要求のメッセージ104である場合には,排他情報テーブル141を,メッセージ104中の連鎖トランザクションIDで検索し(ステップS114),排他情報があるかを判断する(ステップS115)。
【0143】
排他情報がない場合には,このサーバは処理を実施していない状態でダウンしたことになるので,ステップS111へ戻る。
【0144】
排他情報がある場合には,ダウン時に処理中であったことになるので,ログ制御部21へDB復旧依頼を行い(ステップS116),排他制御部20へ排他解除依頼をする(ステップS117)。
【0145】
続いて,当該連鎖トランザクション処理に関与したサーバに対する結果(NG)メッセージを作成する(ステップS118)。この場合の結果メッセージは,当該連鎖トランザクション処理に関与したサーバ内のデータベースの復旧を指示し,連鎖トランザクションのロールバックを行うためのものであり,連鎖トランザクションIDの情報と自サーバにおける処理途中で異常が発生(ダウン)した(NG)という情報とから構成される。メッセージ送信部12に対してこの結果メッセージを送信し(ステップS119),受信メッセージを削除して(ステップS120),ステップS111へ戻る。
【0146】
メッセージ受信部11が受信済みのすべてのメッセージについて,以上の処理を行った後(ステップS112),再起動後の初期処理を終了する。その後,図5に示した通常のトランザクション管理処理を行う。このとき,図21の初期処理でトランザクション制御部10がメッセージ受信部11から受信し処理したメッセージについては,ステップS120で削除したものを除き,受信済みとしないで,再度受信対象とし,各々のメッセージ104について処理を行う。
【0147】
以上説明した仕組みにより,複数サーバに跨ったデータ処理の一貫性/整合性を保証しつつ,システム全体のスループットとトランザクション処理のレスポンスの向上が図られる。
【0148】
以上の本発明による連鎖トランザクションの処理は,各サーバのコンピュータとソフトウェアプログラムとによって実現することができ,そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することも,ネットワークを通して提供することも可能である。
【0149】
以上から把握できるように,本発明の実施形態の特徴を述べると,以下のとおりである。
【0150】
(付記1)複数のサーバによってトランザクションを処理するトランザクション処理方法において,
複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理し,
前記複数のサーバは,各サーバ毎に,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放する
ことを特徴とするトランザクション処理方法。
【0151】
(付記2)付記1記載のトランザクション処理方法において,
前記第2のトランザクションの処理では,当該第2のトランザクション内でアクセスされるデータベースのデータに対する排他情報を記録し,他の第2のトランザクションとの間でそのデータに対する排他制御を行うとともに,当該第2のトランザクション内で更新されるデータの更新前データを保存し,
前記第1のトランザクションの処理が正常終了した場合に,前記記録した排他情報および前記保存した更新前データを廃棄し,
前記第1のトランザクションの処理が異常終了した場合に,前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄する
ことを特徴とするトランザクション処理方法。
【0152】
(付記3)付記2記載のトランザクション処理方法において,
前記第1のトランザクションに,システム内で一意にトランザクションを識別するための連鎖トランザクション識別子を付与し,
前記連鎖トランザクション識別子と,各サーバにおける処理および処理結果の組の情報とをサーバ間のメッセージに付加してメッセージ通信を行うことにより,前記第1のトランザクションを,前記第2のトランザクションの連鎖で処理する
ことを特徴とするトランザクション処理方法。
【0153】
(付記4)付記3記載のトランザクション処理方法において,
前記第1のトランザクションの処理が正常終了した場合に,連鎖する第2のトランザクションのうち最後のトランザクションを処理したサーバが,前記第1のトランザクションの処理に係る各サーバに対して,前記記録した排他情報および前記保存した更新前データを廃棄するように通信を行う
ことを特徴とするトランザクション処理方法。
【0154】
(付記5)付記3記載のトランザクション処理方法において,
前記第1のトランザクションの処理が異常終了した場合に,連鎖する第2のトランザクションのうち異常終了したトランザクションを処理したサーバが,前記第1のトランザクションの処理に係る各サーバに対して,前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄するように通信を行う
ことを特徴とするトランザクション処理方法。
【0155】
(付記6)複数のサーバによってトランザクションを処理するトランザクション処理システムにおけるサーバにおいて,複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理するためのトランザクション制御装置であって,
他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放するトランザクション管理手段と,
前記第2のトランザクションの処理において当該第2のトランザクション内でアクセスされるデータベースのデータに対する排他情報を記録し,他の第2のトランザクションとの間でそのデータに対する排他制御を行い,前記第1のトランザクションの処理が完了したときに前記記録した排他情報を廃棄し排他制御を解除する排他制御手段と,
前記第2のトランザクションの処理において当該第2のトランザクション内で更新されるデータの更新前データを保存し,前記第1のトランザクションの処理が正常終了した場合に,前記保存した更新前データを廃棄し,前記第1のトランザクションの処理が異常終了した場合に,前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄するログ制御手段とを備える
ことを特徴とするトランザクション制御装置。
【0156】
(付記7)複数のサーバによってトランザクションを処理するトランザクション処理方法を,各サーバが備えるコンピュータに実行させるためのトランザクション制御プログラムであって,
複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理し,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放する処理を,
コンピュータに実行させるためのトランザクション制御プログラム。
【0157】
(付記8)複数のサーバによってトランザクションを処理するトランザクション処理方法を,各サーバが備えるコンピュータに実行させるためのトランザクション制御プログラムを記録したコンピュータ読取り可能な記録媒体であって,
複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理し,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放する処理を,
コンピュータに実行させるためのプログラムを記録した
ことを特徴とするトランザクション制御プログラムの記録媒体。
【0158】
【発明の効果】
本発明によれば,連鎖トランザクションに関与したサーバ間の一連の処理の同期が不要となり,各サーバのデータベースアクセス処理が非同期に動作することで,同時実行多重度が上がり,システム全体のトランザクションのスループットが向上する。
【0159】
また,本発明によれば,トランザクションがコミットするまでの通信回数を従来技術より大幅に減少させることができるため,分散トランザクション処理における,トランザクションのレスポンスを向上させることが可能となる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるシステム構成の一例を示す図である。
【図2】本発明による効果を従来技術と比較して説明する図である。
【図3】本発明の実施の形態におけるシステム構成の詳細を示す図である。
【図4】本発明の実施の形態におけるメッセージの形式を示す図である。
【図5】トランザクション制御部のトランザクション管理処理フローの一例を示す図である。
【図6】連鎖トランザクション管理テーブルの一例を示す図である。
【図7】連鎖トランザクション取得用テーブルの一例を示す図である。
【図8】連鎖トランザクション管理テーブルの一例を示す図である。
【図9】連鎖トランザクション管理テーブルの一例を示す図である。
【図10】排他情報テーブルの一例を示す図である。
【図11】トランザクション制御部の排他制御部による処理フローの一例を示す図である。
【図12】ログファイルの一例を示す図である。
【図13】ログ書出し処理およびログ削除処理フローの一例を示す図である。
【図14】ログ制御部によるDB復旧処理フローの一例を示す図である。
【図15】メッセージルーティング制御処理フローの一例を示す図である。
【図16】ルーティングの追加/変更処理の一例を示す図である。
【図17】連鎖トランザクションのコミット処理フローまたはDBの復旧処理フローの一例を示す図である。
【図18】統一データアクセス制御処理フローの一例を示す図である。
【図19】各サーバ内での動作シーケンスの一例を示す図である。
【図20】各サーバ内での動作シーケンスの一例を示す図である。
【図21】ダウン後に再起動した時のサーバにおける初期処理のフローの一例を示す図である。
【図22】従来の分散トランザクション技術を示す図である。
【符号の説明】
1 サーバA
2 サーバB
3 サーバC
10 トランザクション制御部
11 メッセージ受信部
12 メッセージ送信部
13,15,17 アプリケーションのプロセス
14,16,18 DBMS
20 排他制御部
21 ログ制御部
22 トランザクション管理部
101 統一データアクセス部
104 メッセージ
105 出力事象
106 連鎖トランザクション管理テーブル
110 メッセージキュー
130,150,170,501,502,503 ローカルトランザクション
140,160,180,412,414,416 データベース(DB)
141 排他情報テーブル
142 ログファイル
220 連鎖トランザクションID管理部
221 アプリケーションスケジュール部
222 排他制御/ログ制御スケジュール部
223 DBMSアクセス制御部
224 メッセージルーティング制御部
225 メッセージ送受信部
400〜403 サーバ
410,411,413,415 実行プロセス
500 グローバルトランザクション

Claims (3)

  1. 複数のサーバによってトランザクションを処理するトランザクション処理システムにおけるサーバにおいて,複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理するための,メッセージ受信手段と,メッセージ送信手段と,トランザクション管理手段と,排他制御手段と,ログ制御手段とを備える前記サーバが実行するトランザクション処理方法であって,
    前記メッセージ受信手段が,各サーバにおける処理を特定する処理種別情報とその処理結果の組の情報が設定される管理部が付加されたメッセージを受信する過程と,
    前記トランザクション管理手段が,前記メッセージ受信手段により受信したメッセージにシステム内で一意に第1のトランザクションを識別するための連鎖トランザクション識別子が設定されていない場合には新しい連鎖トランザクション識別子を付与して前記メッセージ内の管理部に設定し,前記メッセージの処理種別情報で指定された処理を第2のトランザクションとして処理し,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放し,前記メッセージ内に未処理の処理種別情報がある場合に,その未処理の処理種別情報によって特定されるサーバに対するトランザクションの処理を要求する前記連鎖トランザクション識別子を含むメッセージを作成し,前記メッセージ内に未処理の処理種別情報がない場合または前記第2のトランザクションの処理結果が異常であった場合に,当該第1のトランザクションに関与したすべてのサーバに対する処理結果の正常または異常を示す結果メッセージを作成する過程と,
    前記メッセージ送信手段が,前記トランザクション管理手段が作成したメッセージまたは結果メッセージを送信する過程と,
    前記排他制御手段が,前記第2のトランザクションの処理において当該第2のトランザクション内でアクセスされるデータベースのデータに対する排他情報を前記連鎖トランザクション識別子と共に記録し,他の第2のトランザクションとの間でそのデータに対する排他制御を行い,前記第1のトランザクションの処理が完了したときに前記連鎖トランザクション識別子に基づいて前記記録した排他情報を廃棄し排他制御を解除する過程と,
    前記ログ制御手段が,前記第2のトランザクションの処理において当該第2のトランザクション内で更新されるデータの更新前データを前記連鎖トランザクション識別子と共に保存し,前記第1のトランザクションの処理が正常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データを廃棄し,前記第1のトランザクションの処理が異常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄する過程とを有する
    ことを特徴とするトランザクション処理方法。
  2. 複数のサーバによってトランザクションを処理するトランザクション処理システムにおけるサーバにおいて,複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理するためのトランザクション制御装置であって,
    各サーバにおける処理を特定する処理種別情報とその処理結果の組の情報が設定される管理部が付加されたメッセージを受信するメッセージ受信手段と,
    前記メッセージ受信手段が受信したメッセージにシステム内で一意に第1のトランザクションを識別するための連鎖トランザクション識別子が設定されていない場合には新しい連鎖トランザクション識別子を付与して前記メッセージ内の管理部に設定し,前記メッセージの処理種別情報で指定された処理を第2のトランザクションとして処理し,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放し,前記メッセージ内に未処理の処理種別情報がある場合に,その未処理の処理種別情報によって特定されるサーバに対するトランザクションの処理を要求する前記連鎖トランザクション識別子を含むメッセージを作成し,前記メッセージ内に未処理の処理種別情報がない場合または前記第2のトランザクションの処理結果が異常であった場合に,当該第1のトランザクションに関与したすべてのサーバに対する処理結果の正常または異常を示す結果メッセージを作成するトランザクション管理手段と,
    前記トランザクション管理手段が作成したメッセージまたは結果メッセージを送信する前記メッセージ送信手段と,
    前記第2のトランザクションの処理において当該第2のトランザクション内でアクセスされるデータベースのデータに対する排他情報を前記連鎖トランザクション識別子と共に記録し,他の第2のトランザクションとの間でそのデータに対する排他制御を行い,前記第1のトランザクションの処理が完了したときに前記連鎖トランザクション識別子に基づいて前記記録した排他情報を廃棄し排他制御を解除する排他制御手段と,
    前記第2のトランザクションの処理において当該第2のトランザクション内で更新されるデータの更新前データを前記連鎖トランザクション識別子と共に保存し,前記第1のトランザクションの処理が正常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データを廃棄し,前記第1のトランザクションの処理が異常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄するログ制御手段とを備える
    ことを特徴とするトランザクション制御装置。
  3. 複数のサーバによってトランザクションを処理するトランザクション処理システムにおけるサーバにおいて,複数のサーバに分散されたデータベースを扱う第1のトランザクションを,各サーバがそれぞれのサーバ内で個別に処理する第2のトランザクションの連鎖で処理するための,各サーバが備えるコンピュータに実行させるトランザクション制御プログラムであって,
    前記コンピュータを,
    各サーバにおける処理を特定する処理種別情報とその処理結果の組の情報が設定される管理部が付加されたメッセージを受信するメッセージ受信手段と,
    前記メッセージ受信手段が受信したメッセージにシステム内で一意に第1のトランザクションを識別するための連鎖トランザクション識別子が設定されていない場合には新しい連鎖トランザクション識別子を付与して前記メッセージ内の管理部に設定し,前記メッセージの処理種別情報で指定された処理を第2のトランザクションとして処理し,他のサーバにおけるトランザクション処理の完了同期を待ち合わせずに,自サーバにおける前記第2のトランザクションの処理が完了した時点で,前記第2のトランザクションを処理するプロセスの実行権を開放し,前記メッセージ内に未処理の処理種別情報がある場合に,その未処理の処理種別情報によって特定されるサーバに対するトランザクションの処理を要求する前記連鎖トランザクション識別子を含むメッセージを作成し,前記メッセージ内に未処理の処理種別情報がない場合または前記第2のトランザクションの処理結果が異常であった場合に,当該第1のトランザクションに関与したすべてのサーバに対する処理結果の正常または異常を示す結果メッセージを作成するトランザクション管理手段と,
    前記トランザクション管理手段が作成したメッセージまたは結果メッセージを送信する前記メッセージ送信手段と,
    前記第2のトランザクションの処理において当該第2のトランザクション内でアクセスされるデータベースのデータに対する排他情報を前記連鎖トランザクション識別子と共に記録し,他の第2のトランザクションとの間でそのデータに対する排他制御を行い,前記第1のトランザクションの処理が完了したときに前記連鎖トランザクション識別子に基づいて前記記録した排他情報を廃棄し排他制御を解除する排他制御手段と,
    前記第2のトランザクションの処理において当該第2のトランザクション内で更新されるデータの更新前データを前記連鎖トランザクション識別子と共に保存し,前記第1のトランザクションの処理が正常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データを廃棄し,前記第1のトランザクションの処理が異常終了した場合に,その連鎖トランザクション識別子に対応する前記保存した更新前データに基づいて前記データベースを復旧し,その後に前記記録した排他情報および前記保存した更新前データを廃棄するログ制御手段として,
    機能させるためのトランザクション制御プログラム。
JP2003189312A 2003-07-01 2003-07-01 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム Expired - Fee Related JP4291060B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003189312A JP4291060B2 (ja) 2003-07-01 2003-07-01 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム
US10/850,699 US7328213B2 (en) 2003-07-01 2004-05-21 Transaction processing method, transaction control apparatus and program thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003189312A JP4291060B2 (ja) 2003-07-01 2003-07-01 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム

Publications (2)

Publication Number Publication Date
JP2005025432A JP2005025432A (ja) 2005-01-27
JP4291060B2 true JP4291060B2 (ja) 2009-07-08

Family

ID=33549779

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003189312A Expired - Fee Related JP4291060B2 (ja) 2003-07-01 2003-07-01 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム

Country Status (2)

Country Link
US (1) US7328213B2 (ja)
JP (1) JP4291060B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7290015B1 (en) * 2003-10-02 2007-10-30 Progress Software Corporation High availability via data services
JP4628830B2 (ja) * 2005-03-17 2011-02-09 株式会社野村総合研究所 Dbmsに格納されたデータの整合性を担保するためのシステム
US7865684B2 (en) * 2005-06-27 2011-01-04 Ab Initio Technology Llc Managing message queues
JP4677355B2 (ja) * 2006-03-03 2011-04-27 キヤノン株式会社 Webサービス装置及び順次処理移譲方法
US8190682B2 (en) * 2006-03-31 2012-05-29 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US7613814B2 (en) * 2006-06-20 2009-11-03 Microsoft Corporation Discovering transactions silently propagated off-machine
US20080140734A1 (en) * 2006-12-07 2008-06-12 Robert Edward Wagner Method for identifying logical data discrepancies between database replicas in a database cluster
US8126848B2 (en) * 2006-12-07 2012-02-28 Robert Edward Wagner Automated method for identifying and repairing logical data discrepancies between database replicas in a database cluster
JP4877526B2 (ja) * 2008-02-12 2012-02-15 日本電気株式会社 クライアントサーバシステムおよびクライアントサーバシステムのデータ処理方法
US10230611B2 (en) * 2009-09-10 2019-03-12 Cisco Technology, Inc. Dynamic baseline determination for distributed business transaction
US8938533B1 (en) * 2009-09-10 2015-01-20 AppDynamics Inc. Automatic capture of diagnostic data based on transaction behavior learning
US9167028B1 (en) * 2009-09-10 2015-10-20 AppDynamics, Inc. Monitoring distributed web application transactions
JP5377672B2 (ja) * 2010-02-15 2013-12-25 東芝ソリューション株式会社 データベース管理システム
US9063969B2 (en) * 2010-12-28 2015-06-23 Sap Se Distributed transaction management using optimization of local transactions
US9110851B2 (en) * 2011-09-29 2015-08-18 Oracle International Corporation System and method for persisting transaction records in a transactional middleware machine environment
US9311598B1 (en) 2012-02-02 2016-04-12 AppDynamics, Inc. Automatic capture of detailed analysis information for web application outliers with very low overhead
US9596294B2 (en) 2012-05-11 2017-03-14 Google Inc. System and method for committing transactions on remote servers
JP2014085896A (ja) * 2012-10-25 2014-05-12 International Business Maschines Corporation トランザクション処理方法、プログラム及びシステム
JP6064734B2 (ja) * 2013-03-27 2017-01-25 富士通株式会社 ワークフロー制御プログラム、装置および方法
US9881044B2 (en) 2013-12-31 2018-01-30 Reduxio Systems Ltd. Techniques for ensuring consistency of data updates transactions in a distributed storage system
JP6248747B2 (ja) * 2014-03-28 2017-12-20 富士通株式会社 情報処理装置、制御方法および制御プログラム
US9535688B2 (en) * 2014-07-23 2017-01-03 Verizon Patent And Licensing Inc. Efficient deployment of application revisions and implementation of application rollbacks across multiple application servers
US9811356B2 (en) 2015-01-30 2017-11-07 Appdynamics Llc Automated software configuration management
JP6023858B1 (ja) 2015-08-17 2016-11-09 日本電信電話株式会社 計算システム、計算装置、その方法、およびプログラム
US20170169425A1 (en) * 2015-12-11 2017-06-15 Paypal, Inc. Selective encryption of transactional information for different participants of an electronic transaction
US10346420B2 (en) * 2016-05-30 2019-07-09 Sap Se Database integration system
CN107679051B (zh) * 2016-12-14 2019-02-01 平安科技(深圳)有限公司 交易***错误检测方法和装置
CN110764933B (zh) * 2019-10-23 2022-12-27 北京证大向上金融信息服务有限公司 一种消息处理方法、装置、***及计算设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3513550B2 (ja) 1994-03-18 2004-03-31 富士通株式会社 トランザクション続行方法およびそのためのリソースマネージャ
US6330582B1 (en) * 1994-03-21 2001-12-11 International Business Machines Corporation Apparatus and method enabling a client to control transaction message traffic between server and client processes
US5978577A (en) * 1995-03-17 1999-11-02 Csg Systems, Inc. Method and apparatus for transaction processing in a distributed database system
US5799305A (en) * 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
GB2346985B (en) * 1999-02-19 2003-07-09 Ibm Client/server transaction data processing system with optimum selection of last agent
US20020116205A1 (en) * 2000-05-19 2002-08-22 Ankireddipally Lakshmi Narasimha Distributed transaction processing system
US7103586B2 (en) * 2001-03-16 2006-09-05 Gravic, Inc. Collision avoidance in database replication systems
US7426730B2 (en) * 2001-04-19 2008-09-16 Wre-Hol Llc Method and system for generalized and adaptive transaction processing between uniform information services and applications
US6816873B2 (en) * 2001-05-15 2004-11-09 International Business Machines Corporation Method for managing distributed savepoints across multiple DBMS's within a distributed transaction
US7080119B2 (en) * 2001-07-17 2006-07-18 Bea Systems, Inc. System and method for transaction processing with delegated commit feature
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
GB0302926D0 (en) * 2003-02-08 2003-03-12 Grex Games Ltd System architecture and engine for massively multi-user operation
JP4117299B2 (ja) * 2005-02-28 2008-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバの多重度の上限値を制御するための方法、管理サーバ、サーバ、およびプログラム

Also Published As

Publication number Publication date
US7328213B2 (en) 2008-02-05
US20050004952A1 (en) 2005-01-06
JP2005025432A (ja) 2005-01-27

Similar Documents

Publication Publication Date Title
JP4291060B2 (ja) トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム
JP4594928B2 (ja) フラッシュバックデータベース
JP3779263B2 (ja) 共同作業システムのためのコンフリクトの解決
WO2019154394A1 (zh) 分布式数据库集群***、数据同步方法及存储介质
US5835915A (en) Remote duplicate database facility with improved throughput and fault tolerance
US5740433A (en) Remote duplicate database facility with improved throughput and fault tolerance
US7461103B2 (en) System and method for reconciling transactions between a replication system and a recovered database
JP5008991B2 (ja) データのリカバリを制御する装置及び方法
CN101334797B (zh) 一种分布式文件***及其数据块一致性管理的方法
CN101334778B (zh) 管理数据库连接的方法和***
JP4621273B2 (ja) データ同期方法、データ同期プログラム、データベースサーバ装置、および、データベースシステム
JP4461147B2 (ja) リモートデータミラーリングを用いたクラスタデータベース
JP5467625B2 (ja) トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム
JP2006202337A (ja) データ処理の方法及び装置
US20060190460A1 (en) Method and mechanism of handling reporting transactions in database systems
US7290100B2 (en) Computer system for managing data transfer between storage sub-systems
US6330686B1 (en) Handling protected conversation messages across IMS restart in shared queues environment
US7072912B1 (en) Identifying a common point in time across multiple logs
US20090248760A1 (en) Backup method of computer system
US7406486B1 (en) Transforming transactions to increase parallelism when replicating
KR20180095004A (ko) 고 쓰루풋, 고 신뢰성의 데이터 처리 시스템
JP2002297429A (ja) 分散トランザクション処理システム、分散トランザクション処理方法及び分散トランザクション処理プログラム
JP5480046B2 (ja) 分散トランザクション処理システム、装置、方法およびプログラム
JPH10289141A (ja) マルチシステム環境のログ・ストリームを管理する方法
JPH08212119A (ja) トランザクション処理システム及びトランザクションのコミット制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090209

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090209

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090331

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090402

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140410

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees