JP2009175854A - Program, method and computer system for securing data consistency - Google Patents

Program, method and computer system for securing data consistency Download PDF

Info

Publication number
JP2009175854A
JP2009175854A JP2008011576A JP2008011576A JP2009175854A JP 2009175854 A JP2009175854 A JP 2009175854A JP 2008011576 A JP2008011576 A JP 2008011576A JP 2008011576 A JP2008011576 A JP 2008011576A JP 2009175854 A JP2009175854 A JP 2009175854A
Authority
JP
Japan
Prior art keywords
update
request
transaction
processing
instruction
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.)
Granted
Application number
JP2008011576A
Other languages
Japanese (ja)
Other versions
JP5109676B2 (en
Inventor
晋吾 ▲高▼橋
Shingo Takahashi
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 JP2008011576A priority Critical patent/JP5109676B2/en
Publication of JP2009175854A publication Critical patent/JP2009175854A/en
Application granted granted Critical
Publication of JP5109676B2 publication Critical patent/JP5109676B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To execute a plurality of DB update processes while securing consistency when unified control of transaction cannot be performed because processes or servers executing the DB update process are distributed. <P>SOLUTION: In this method, a unique ID is issued according to a business processing request from a business processing client, an update instruction based on a DB update request is outputted to a DB according to the DB update request from any business processing program for processing the business processing request, the update instruction is registered in an issuance instruction log table correspondingly to the ID, a cancellation instruction of the update instruction is outputted to the DB regardless of success/failure of an update process by the update instruction, which is repeated, the update instruction registered in the issuance instruction log table is outputted to the DB correspondingly to the ID issued to the business processing request when the processing to the business processing request is normally completed, and a commit instruction for deciding update by the update instruction is outputted to the DB. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するための技術に関する。   The present invention relates to a technique for ensuring data consistency in a plurality of database update processes executed in response to one business process request by a plurality of related business process programs.

分散処理におけるデータ整合性の確保手法として2相コミット(2フェーズコミット)という技術があり、これによって分散トランザクション環境下でも安全に処理を遂行できると言われている。しかし、実際には性能面の懸念や障害対策のために3相コミットが考案されるなど、実システムへの適用は進んでいるとは言い難い状況である。   As a technique for ensuring data consistency in distributed processing, there is a technique called two-phase commit (two-phase commit), and it is said that processing can be performed safely even in a distributed transaction environment. However, in reality, it is difficult to say that application to real systems is progressing, such as a three-phase commit being devised for performance concerns and troubleshooting.

2相コミットを使用せずに分散トランザクション処理を行うと、データベーストランザクションは、コンピュータ単位でコミット/ロールバックするのが一般的であり、途中でエラーが発生した場合には、コミット済みの処理に対する取消処理を行う必要がある。   When distributed transaction processing is performed without using two-phase commit, database transactions are generally committed / rolled back on a computer-by-computer basis. If an error occurs in the middle, cancellation of committed processing is performed. It is necessary to perform processing.

この取消処理を個々に作り込むことはアプリケーションプログラム開発において負担となるばかりではなく、さらに他のプロセスなどによって更新がさらに行われてしまい取消不能となったり、取消処理までもがエラーとなった場合、もはや自律回復は望めない状態に陥るリスクもあり、必ずしもコストに見合ったメリットが期待できない面がある。   Creating this cancellation process individually is not only a burden in application program development, but also when the update is further performed by other processes, etc., and it becomes impossible to cancel, or even the cancellation process becomes an error However, there is a risk of falling into a state where autonomous recovery can no longer be expected.

また、特開2000−20369号公報には、データベースを故障発生直前の状態まで復旧するシステムが開示されている。具体的には、クライアントマシンは当日に発生したトランザクションをSQL文に変換し、発生時刻データを付加してトランザクションデータファイルに順次保存し、サーバマシンは前日の最終データベースを前日データ記憶部にバックアップし、当該マシンで当日に独自に実行したトランザクションをSQL文に変換し、発生時刻データを付加してトランザクションデータファイルに順次保存していく。そして障害発生時には、当日にサーバマシンで独自に実行されたトランザクションデータと各クライアントマシンで実行されたトランザクションデータを収集して発生時刻順にソートし、前日の最終データベースを基にして、当日の全トランザクションを発生順に再実行してデータベースを障害発生直前の状態まで復旧する。しかし、上で述べたような分散トランザクション処理を対象とはしていない。   Japanese Patent Laid-Open No. 2000-20369 discloses a system that restores a database to a state immediately before a failure occurs. Specifically, the client machine converts the transaction that occurred on the current day into an SQL statement, adds the occurrence time data and sequentially stores it in a transaction data file, and the server machine backs up the last database of the previous day to the previous day's data storage unit. Then, the transaction executed independently on that day on the machine is converted into an SQL statement, and the generation time data is added and sequentially stored in the transaction data file. When a failure occurs, the transaction data executed on the server machine on the current day and the transaction data executed on each client machine are collected and sorted in the order of occurrence, and all transactions for the current day are based on the last database of the previous day. Are executed again in the order of occurrence to restore the database to the state just before the failure occurred. However, it does not target distributed transaction processing as described above.

さらに、特開2006−268389号公報には、簡単な構成により、不適切なアクセスを排除して、正しい確定処理を行って、適切なロング・トランザクション処理が行われるようガードするための技術が開示されている。具体的には、仮実行された項目を記憶する仮実行データベースと、確定された項目を記憶する確定データベースと、検索要求により上記仮実行データベース中のこの要求された項目を検索する最新データ参照機能部と、仮実行要求により上記仮実行データベース中のこの要求された項目を更新する更新仮実行機能部と、確定要求により上記確定データベース中のこの要求された項目に上記仮実行データベースの対応項目のデータをコピーする更新確定機能部と、取消要求により上記仮実行データベース中のこの要求された項目に上記確定データベースの対応項目のデータをコピーする更新取消機能部とを備えている。しかしながら、上で述べたような分散トランザクション処理を対象とはしていない。
特開2000−20369号公報 特開2006−268389号公報
Furthermore, Japanese Patent Application Laid-Open No. 2006-268389 discloses a technique for protecting an appropriate long transaction process by performing a proper confirmation process by removing an inappropriate access with a simple configuration. Has been. Specifically, a provisional execution database for storing provisionally executed items, a confirmation database for storing confirmed items, and a latest data reference function for retrieving the requested items in the provisional execution database by a search request An update provisional execution function unit that updates the requested item in the provisional execution database by a provisional execution request, and a corresponding item of the provisional execution database is added to the requested item in the confirmation database by a confirmation request. An update confirmation function unit for copying data and an update cancellation function unit for copying the data of the corresponding item of the confirmation database to the requested item in the temporary execution database in response to a cancellation request. However, it does not target distributed transaction processing as described above.
JP 2000-20369 A JP 2006-268389 A

上で述べたように、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができない場面において、複数のDB更新処理を整合性を確保しつつ実施できるようにする実際的な技術、特に、複数のDB更新処理が正常に成功した場合にのみデータベースの更新を確定させるような実際的な技術は存在していない。   As described above, multiple DB update processes can be performed while ensuring consistency in situations where unified transaction control is not possible because servers and processes that execute DB update processes are distributed. However, there is no practical technique for determining database update only when a plurality of DB update processes succeeds normally.

従って、本発明の目的は、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができない場面において、複数のDB更新処理を整合性を確保しつつ実施できるようにするための技術を提供することである。   Accordingly, an object of the present invention is to enable a plurality of DB update processes to be performed while ensuring consistency in a situation where unified transaction control cannot be performed because servers and processes that execute DB update processes are distributed. Is to provide technology for

また、本発明の他の目的は、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができない場面において、複数のDB更新処理が正常に成功した場合にのみデータベースの更新を確定させるための新規な技術を提供することである。   Another object of the present invention is only when a plurality of DB update processes succeeds normally in a situation where unified transaction control cannot be performed because servers and processes for executing the DB update processes are distributed. It is to provide a new technique for confirming database update.

さらに、本発明の他の目的は、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができないシステムにおいても、処理が正常に終了しなかった場合に行われる取消処理を個別に開発する必要がないようにするための手法を提供することである。   Furthermore, another object of the present invention is carried out when the processing does not end normally even in a system in which unified transaction control cannot be performed because servers and processes for executing DB update processing are distributed. It is to provide a method for avoiding the need to develop a revocation process individually.

関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するための本方法は、(a)業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行するステップと、(b)業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、トランザクションIDに対応して第1の更新命令を発行命令ログテーブルに登録し、第1の更新命令による更新処理の成否を問わず第1の更新命令のキャンセル命令をデータベースに出力する処理ステップと、(c)業務処理要求に対する処理が正常に完了した場合には、業務処理要求に対して発行されたトランザクションIDに対応して発行命令ログテーブルに登録されている第1の更新命令をデータベースに出力し、さらに第1の更新命令による更新を確定させるコミット命令をデータベースに出力する確定ステップとを含む。   The present method for ensuring data consistency in a plurality of database update processes executed in response to a single business process request by a plurality of related business process programs includes: (a) a business process request from a business process client; In response, a step of issuing a unique transaction ID, and (b) a first database update request based on the first database update request in response to a first database update request from any one of the business process programs that process the business process request. 1 update command is output to the database, the first update command is registered in the issuance command log table corresponding to the transaction ID, and the first update command is canceled regardless of whether the update process is successful or not. A processing step for outputting a command to a database, and (c) when processing for a business processing request is normally completed A commit instruction for outputting the first update instruction registered in the issued instruction log table corresponding to the transaction ID issued in response to the business process request to the database, and further confirming the update by the first update instruction. And a confirmation step for outputting to the database.

DB更新処理を実行するサーバやプロセスが分散している場合においても、上で述べたような処理を実施することによって、途中で処理が異常終了した場合においても、取消処理を別途実施することが無く、全体としてデータ整合性を確保することができるようになる。なお、複数の業務処理プログラムからの要求に基づく複数の更新命令の出力順番は保持される必要があり、そのために発行命令ログテーブルにおいて順番を管理する場合もある。   Even when servers and processes that execute DB update processing are distributed, even if the processing ends abnormally in the middle by performing the processing described above, it is possible to perform cancellation processing separately. As a whole, data consistency can be ensured. Note that the output order of a plurality of update instructions based on requests from a plurality of business processing programs needs to be held, and for this purpose, the order may be managed in the issued instruction log table.

なお、業務処理要求に対する処理が正常に完了しなかった場合には、業務処理要求に対して発行されたトランザクションIDに対応して発行命令ログテーブルに登録されている更新命令の破棄又は当該更新命令を無効にするデータの発行命令ログテーブルへの登録の少なくともいずれかを行うエラー処理ステップをさらに含むようにしても良い。このようにすれば、特に取消処理を別途実施する必要が無いため、システムの開発を容易に行うことができるようになる。   If the process for the business process request is not completed normally, the update instruction registered in the issued instruction log table corresponding to the transaction ID issued for the business process request is discarded or the update instruction An error processing step for performing at least one of registration in the issuance instruction log table of data for invalidating the data may be further included. In this way, it is not necessary to separately perform a cancellation process, so that the system can be easily developed.

また、上で述べた処理ステップにおいて、データベースに更新命令を出力する前に、発行命令ログテーブルを参照して同一テーブル且つ同一レコードに対する更新命令が有効に保持されているか判断してもよい。また、上で述べたエラー処理ステップにおいて、処理ステップにより発行命令ログテーブルに同一テーブル且つ同一レコードに対するデータベース更新要求が有効に保持されていると判断された場合に、業務処理要求に対する処理が正常に完了しなかったものとして、業務処理要求に対して発行されたトランザクションIDに対応して発行命令ログテーブルに登録されている更新命令の破棄、または、当該更新命令を無効にするデータの発行命令ログテーブルへの登録の少なくともいずれかを実行してもよい。これによって、排他エラーについても適切に取り扱うことができるようになる。   Further, in the processing steps described above, before outputting the update command to the database, it may be determined whether the update command for the same table and the same record is effectively held by referring to the issued command log table. Also, in the error processing step described above, when it is determined by the processing step that the database update request for the same table and the same record is effectively held in the issued command log table, the processing for the business processing request is performed normally. Issuance of the update instruction registered in the issuance instruction log table corresponding to the transaction ID issued in response to the business process request as not completed, or issuance instruction log of data that invalidates the update instruction You may perform at least any one of the registration to a table. This makes it possible to properly handle exclusive errors.

本発明にかかる方法をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークを介してディジタル信号にて頒布される場合もある。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。   A program for causing a computer to execute the method according to the present invention can be created, and the program is stored in a storage medium or storage device such as a flexible disk, a CD-ROM, a magneto-optical disk, a semiconductor memory, or a hard disk. Is done. In some cases, digital signals are distributed over a network. Note that data being processed is temporarily stored in a storage device such as a computer memory.

本発明によれば、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができない場面において、複数のDB更新処理を整合性を確保しつつ実施できるようになる。   According to the present invention, it is possible to perform a plurality of DB update processes while ensuring consistency in a situation where unified transaction control cannot be performed because servers and processes that execute DB update processes are distributed. .

また、本発明の他の側面によれば、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができない場面において、複数のDB更新処理が正常に成功した場合にのみデータベースの更新を確定させることができるようになる。   According to another aspect of the present invention, when a plurality of DB update processes succeeds normally in a situation where unified transaction control cannot be performed because servers and processes that execute DB update processes are distributed. Only the database update can be confirmed.

本発明のさらに他の側面によれば、DB更新処理を実行するサーバやプロセスが分散しているために統一的なトランザクションのコントロールができないシステムにおいても、処理が正常に終了しなかった場合に行われる取消処理を個別に開発する必要がなくなる。   According to still another aspect of the present invention, even in a system in which unified transaction control cannot be performed because servers and processes that execute DB update processing are distributed, the processing is performed when the processing does not end normally. There is no need to develop a separate cancellation process.

本発明の一実施の形態に係るシステム概要を図1に示す。例えばインターネットやLAN(Local Area Network)であるネットワーク1には、業務処理クライアント・プログラムが実行され且つ業務処理要求をネットワーク1を介してAP(Application)サーバに送信する1又は複数のクライアント端末3と、業務処理サーバ・プログラムであるユーザアプリケーション(図1では、ユーザアプリケーションa、b及びc)を実行する複数のAPサーバ5(図1では、APサーバA、APサーバB及びAPサーバC)とが接続されている。各APサーバ5は、LAN等のネットワーク7を介して相互に接続されており、さらにネットワーク7を介してDBサーバ9に接続されている。   An outline of a system according to an embodiment of the present invention is shown in FIG. For example, a network 1 such as the Internet or a LAN (Local Area Network) includes one or a plurality of client terminals 3 that execute a business processing client program and transmit a business processing request to an AP (Application) server via the network 1. A plurality of AP servers 5 (AP server A, AP server B, and AP server C in FIG. 1) that execute user applications (in FIG. 1, user applications a, b, and c) that are business processing server programs. It is connected. Each AP server 5 is connected to each other via a network 7 such as a LAN, and further connected to a DB server 9 via the network 7.

各APサーバ5で実行されているユーザアプリケーションは、クライアント端末3からの業務処理要求に応じて自ら必要な処理を実施すると共に、互いに連携しつつ処理を実行する。例えばユーザアプリケーションaがユーザアプリケーションbやcを呼び出して処理を依頼する場合もある。また、各ユーザアプリケーションは、DBサーバ9が管理するデータベースに対する参照及び更新が必要な場合には、それぞれ対応付けられているDBアクセス部品(図1の例では、DBアクセス部品a、DBアクセス部品b、DBアクセス部品c)を利用するようになっている。   The user application executed in each AP server 5 executes necessary processing in response to a business processing request from the client terminal 3 and executes processing in cooperation with each other. For example, the user application a may call the user applications b and c to request processing. Further, when each user application needs to refer to and update the database managed by the DB server 9, the DB access components associated therewith (in the example of FIG. 1, the DB access component a and the DB access component b are used). , DB access component c) is used.

本実施の形態では、DBサーバ9は、ユーザDBAとユーザDBBを管理しており、本実施の形態のための発行SQL(Structured Query Language)ログテーブル93も併せて管理している。   In the present embodiment, the DB server 9 manages the user DBA and the user DBB, and also manages an issuance SQL (Structured Query Language) log table 93 for the present embodiment.

図2に、DBアクセス部品の機能ブロック図を示す。DBアクセス部品は、ユーザDBAアクセス部品511と、ユーザDBBアクセス部品513と、更新SQL一括実行部品515と、業務トランザクション制御部品517とを含む。ユーザDBAアクセス部品511は、ユーザDBA用のアクセス部品であり、更新SQL発行部5111と、発行SQL待避部5113とを有する。ユーザDBBアクセス部品513は、ユーザDBB用のアクセス部品であり、更新SQL発行部5131と、発行SQL待避部5133とを有する。更新SQL一括実行部品515は、DB一括更新部5151を有する。さらに、業務トランザクション制御部品517は、ROLLBACK(ロールバック)部5171と、COMMIT(コミット)部5173とを有する。   FIG. 2 shows a functional block diagram of the DB access component. The DB access components include a user DBA access component 511, a user DBB access component 513, an update SQL batch execution component 515, and a business transaction control component 517. The user DBA access component 511 is an access component for the user DBA, and includes an update SQL issue unit 5111 and an issue SQL save unit 5113. The user DBB access component 513 is an access component for the user DBB, and includes an update SQL issue unit 5131 and an issue SQL save unit 5133. The update SQL batch execution component 515 includes a DB batch update unit 5151. Further, the business transaction control component 517 includes a ROLLBACK (rollback) unit 5171 and a COMMIT (commit) unit 5173.

図3に、発行SQLログテーブル93のデータ構造を示す。発行SQLログテーブル93は、発行SQL毎に、業務処理要求受信から応答返信までの一連の処理全体に対して付与されるトランザクションIDと、1の業務処理要求に応じて発行される複数の発行SQLの発行順番の管理するための発行SQLシーケンス番号と、ユーザアプリケーションからの依頼に対してDBアクセス部品が発行したSQLである発行SQLと、発行SQLが更新対象としているテーブルである更新対象テーブルと、発行SQLにおいて更新対象を特定するための抽出条件を指定する文字列である更新対象特定キーと、発行SQL発行後にDBMS(DB Management System)から返却されるコードであるSQL実行結果と、トランザクションが完了したか否かを表すフラグであるトランザクション状態とを保持する。   FIG. 3 shows the data structure of the issue SQL log table 93. The issue SQL log table 93 includes, for each issue SQL, a transaction ID given to the entire series of processes from reception of a business process request to response reply and a plurality of issue SQLs issued in response to one business process request. An issue SQL sequence number for managing the issue order, an issue SQL that is a SQL issued by a DB access component in response to a request from a user application, an update target table that is a table to which the issue SQL is an update target, The transaction is completed, the update target identification key that is a character string that specifies the extraction condition for specifying the update target in the issued SQL, the SQL execution result that is the code returned from the DBMS (DB Management System) after issuing the issued SQL The transaction state which is a flag indicating whether or not the transaction has been performed is held.

次に、図4乃至図12を用いて、本実施の形態の処理の概要を説明する。ここでは、クライアント端末3からの業務処理要求をAPサーバAが受信するものとする。図4に示すように、ユーザアプリケーションaは、業務処理要求を受信すると、トランザクションIDを採番すると共に、自らの業務処理を実施し、必要な場合には、ユーザアプリケーションaのユーザアプリケーションb呼出部611は、APサーバBで実行されているユーザアプリケーションbを呼び出し、処理を依頼する。この際には、トランザクションIDをAPサーバBに通知する。   Next, the outline of the processing according to the present embodiment will be described with reference to FIGS. Here, it is assumed that the AP server A receives a business process request from the client terminal 3. As shown in FIG. 4, when the user application a receives the business process request, the user application a numbers the transaction ID and executes its own business process. If necessary, the user application b calling unit of the user application a 611 calls the user application b running on the AP server B and requests processing. At this time, the transaction ID is notified to the AP server B.

次に、図5に示すように、APサーバBのユーザアプリケーションbは、呼び出されると所定の業務処理を実行すると共に、必要な場合には、DBアクセス部品bに対してユーザDBAに対するDB更新依頼を出力する。DBアクセス部品bでは、ユーザDBAに対するDB更新依頼を受け取ると、ユーザDBAアクセス部品511の更新SQL発行部5111が、DB更新依頼に応じた更新SQL文を発行し、DBサーバ9に対して送信する。DBサーバ9は、APサーバBから更新SQL文を受信すると、ユーザDBAに対して指示のとおりの更新処理を実施して、処理結果を要求元のユーザDBAアクセス部品511の更新SQL発行部5111に返信する。ユーザDBAでは、更新SQL文に応じた更新後レコード911が保持されるようになる。   Next, as shown in FIG. 5, when the user application b of the AP server B is called, it executes a predetermined business process and, if necessary, requests a DB update to the user DBA from the DB access component b. Is output. When the DB access component b receives a DB update request for the user DBA, the update SQL issuing unit 5111 of the user DBA access component 511 issues an update SQL statement corresponding to the DB update request and transmits it to the DB server 9. . When the DB server 9 receives the update SQL statement from the AP server B, the DB server 9 performs update processing as instructed to the user DBA, and sends the processing result to the update SQL issuing unit 5111 of the requesting user DBA access component 511. Send back. In the user DBA, an updated record 911 corresponding to the updated SQL statement is held.

その後、図6に示すように、ユーザDBAアクセス部品511の発行SQL待避部5113は、DBサーバ9に対して、図5で発行したSQL文を発行SQLログテーブル93に登録するように依頼する。DBサーバ9は、APサーバBから、発行SQLログテーブル93に対する発行SQL文の登録依頼を受信すると、当該発行SQL文を、発行SQLログテーブル93に登録する。発行SQL文は、発行SQL文931として発行SQLログテーブル93に登録される。上で述べたように、図3に示したデータ構造にて発行SQLログテーブル93に登録される。なお、この段階で、発行SQLシーケンス番号として最初を意味する「1」が登録され、トランザクション状態としては、仕掛中を表す「1」がセットされる。   Thereafter, as shown in FIG. 6, the issue SQL saving unit 5113 of the user DBA access component 511 requests the DB server 9 to register the SQL statement issued in FIG. 5 in the issue SQL log table 93. When the DB server 9 receives from the AP server B a request for registering the issued SQL statement for the issued SQL log table 93, the DB server 9 registers the issued SQL statement in the issued SQL log table 93. The issue SQL statement is registered in the issue SQL log table 93 as an issue SQL statement 931. As described above, the data is registered in the issue SQL log table 93 with the data structure shown in FIG. At this stage, “1” signifying the first is registered as the issued SQL sequence number, and “1” representing in-process is set as the transaction state.

さらに、図7に示すように、APサーバBのユーザアプリケーションbは、必要な場合には、DBアクセス部品bに対してユーザDBBに対するDB更新依頼を出力する。DBアクセス部品bでは、ユーザDBBに対するDB更新依頼を受け取ると、ユーザDBBアクセス部品513の更新SQL発行部5131が、DB更新依頼に応じた更新SQL文を発行し、DBサーバ9に対して送信する。DBサーバ9は、APサーバBから更新SQL文を受信すると、ユーザDBBに対して指示のとおりの更新処理を実施して、処理結果を要求元のユーザDBBアクセス部品513の更新SQL発行部5131に返信する。ユーザDBBでは、更新SQL文に応じた更新後レコード912が保持されるようになる。   Furthermore, as shown in FIG. 7, the user application b of the AP server B outputs a DB update request for the user DBB to the DB access component b when necessary. When the DB access component b receives a DB update request for the user DBB, the update SQL issuing unit 5131 of the user DBB access component 513 issues an update SQL statement corresponding to the DB update request and transmits it to the DB server 9. . When the DB server 9 receives the update SQL statement from the AP server B, the DB server 9 performs update processing as instructed to the user DBB, and sends the processing result to the update SQL issuing unit 5131 of the requesting user DBB access component 513. Send back. In the user DBB, a post-update record 912 corresponding to the update SQL sentence is held.

その後、図8に示すように、ユーザDBBアクセス部品513の発行SQL待避部5133は、DBサーバ9に対して、図7で発行したSQL文を発行SQLログテーブル93に登録するように依頼する。DBサーバ9は、APサーバBから、発行SQLログテーブル93に対する発行SQL文の登録依頼を受信すると、当該発行SQL文を、発行SQLログテーブル93に登録する。発行SQL文は、発行SQL文932として発行SQLログテーブル93に登録される。上で述べたように、図3に示したデータ構造にて発行SQLログテーブル93に登録される。なお、この段階で、発行SQLシーケンス番号として2番目を意味する「2」が登録され、トランザクション状態としては、仕掛中を表す「1」がセットされる。   Thereafter, as illustrated in FIG. 8, the issue SQL saving unit 5133 of the user DBB access component 513 requests the DB server 9 to register the SQL statement issued in FIG. 7 in the issue SQL log table 93. When the DB server 9 receives from the AP server B a request for registering the issued SQL statement for the issued SQL log table 93, the DB server 9 registers the issued SQL statement in the issued SQL log table 93. The issue SQL statement is registered in the issue SQL log table 93 as an issue SQL statement 932. As described above, the data is registered in the issue SQL log table 93 with the data structure shown in FIG. At this stage, “2”, which means the second, is registered as the issued SQL sequence number, and “1” indicating in-process is set as the transaction state.

そして、図9に示すように、ユーザアプリケーションbの処理が完了すると、正常終了か異常終了かを問わずに、ユーザアプリケーションbのROLLBACK部625は、DBアクセス部品bの業務トランザクション制御部品517に対してロールバック(ROLLBACK)を要求する。業務トランザクション制御部品517のROLLBACK部5171は、ユーザアプリケーションbからの要求に応じて、ROLLBACKのためのSQL文をDBサーバ9に送信する。これによって、DBサーバ9は、ユーザDBAにおける更新後レコード911を更新前レコード911’に戻し、ユーザDBBにおける更新後レコード912を更新前レコード912’に戻す。そして、ユーザアプリケーションbは、APサーバAのユーザアプリケーションaに、処理終了を表す復帰値を返す。なお、ユーザアプリケーションbにおける処理において、エラーが発生した場合には、エラーを表す復帰値をユーザアプリケーションaに返す。   Then, as shown in FIG. 9, when the processing of the user application b is completed, the ROLLBACK unit 625 of the user application b performs the business transaction control component 517 of the DB access component b regardless of whether the processing ends normally or abnormally. Request a rollback (ROLLBACK). The ROLLBACK unit 5171 of the business transaction control component 517 transmits an SQL statement for ROLLBACK to the DB server 9 in response to a request from the user application b. Thereby, the DB server 9 returns the updated record 911 in the user DBA to the pre-update record 911 ', and returns the updated record 912 in the user DBB to the pre-update record 912'. Then, the user application b returns a return value indicating the end of processing to the user application a of the AP server A. When an error occurs in the process in the user application b, a return value indicating the error is returned to the user application a.

その後、図10に示すように、ユーザアプリケーションaは、ユーザアプリケーションbから復帰値を受信すると、必要な業務処理を実施し、さらに必要な場合には、ユーザアプリケーションaのユーザアプリケーションc呼出部613が、APサーバCで実行されているユーザアプリケーションcを呼び出し、処理を依頼する。この際には、トランザクションIDをAPサーバCに通知する。   Thereafter, as shown in FIG. 10, when the user application a receives the return value from the user application b, the user application a performs necessary business processing, and if necessary, the user application c calling unit 613 of the user application a The user application c running on the AP server C is called to request processing. At this time, the transaction ID is notified to the AP server C.

APサーバCでは、APサーバBと同様の処理を実施し、ユーザDBA又はユーザDBBに対する更新が必要な場合には、ユーザアプリケーションcはDBアクセス部品cに依頼を出力する。DBアクセス部品cは、更新SQL文をDBサーバ9に送信して一旦ユーザDBA又はユーザDBBを更新させ、発行SQLログテーブル93にも更新SQL文を登録させる。そして、更新の成否を問わず、ROLLBACKを実行させユーザDBA又はユーザDBBを元の状態に戻す。そして、ユーザアプリケーションcは、処理結果として復帰値をAPサーバAのユーザアプリケーションaに返す。   In the AP server C, the same processing as that of the AP server B is performed, and when the user DBA or the user DBB needs to be updated, the user application c outputs a request to the DB access component c. The DB access component c transmits an update SQL statement to the DB server 9 to update the user DBA or the user DBB once, and also registers the update SQL statement in the issue SQL log table 93. Then, regardless of the success or failure of the update, the ROLLBACK is executed to return the user DBA or the user DBB to the original state. Then, the user application c returns a return value to the user application a of the AP server A as a processing result.

APサーバAのユーザアプリケーションaで処理が完了したと判断した場合には、図11に示すように、ユーザアプリケーションaの一括COMMIT処理呼出部615は、DBアクセス部品aの更新SQL一括実行部品617のDB一括更新部6171に、DB一括更新を要求する。そうすると、更新SQL一括実行部品617のDB一括更新部6171は、DBサーバ9に対して、処理に係るトランザクションIDを含む発行SQL取得要求を送信する。DBサーバ9は、トランザクションIDを含む発行SQL取得要求を受信すると、発行SQLログテーブル93から、当該トランザクションIDに係る発行SQL文を発行SQLシーケンス番号の小さい順に読み出し、APサーバAのDBアクセス部品aに返信する。APサーバAのDBアクセス部品aにおける更新SQL一括実行部品617のDB一括更新部6171は、ユーザDBAに対する更新SQL文とユーザDBBに対する更新SQL文とをDBサーバ9から受信すると、順番にDBサーバ9に送信する。DBサーバ9は、ユーザDBAに対する更新SQL文を受信すると、ユーザDBAに対して更新SQL文に応じた更新処理を実施し、ユーザDBAに更新後レコード911を保持させる。同様に、DBサーバ9は、ユーザDBBに対する更新SQL文を受信すると、ユーザDBBに対して更新SQL文に応じた更新処理を実施し、ユーザDBBに更新後レコード912を保持させる。   When it is determined that the process is completed in the user application a of the AP server A, the batch COMMIT process calling unit 615 of the user application a performs the update SQL batch execution component 617 of the DB access component a as shown in FIG. The DB batch update unit 6171 is requested to perform batch DB update. Then, the DB batch update unit 6171 of the update SQL batch execution component 617 transmits an issued SQL acquisition request including the transaction ID related to the process to the DB server 9. When the DB server 9 receives the issued SQL acquisition request including the transaction ID, the DB server 9 reads the issued SQL statements related to the transaction ID from the issued SQL log table 93 in ascending order of the issued SQL sequence number, and the DB access component a of the AP server A Reply to When the DB batch update unit 6171 of the update SQL batch execution component 617 in the DB access component a of the AP server A receives the update SQL statement for the user DBA and the update SQL statement for the user DBB from the DB server 9, the DB server 9 Send to. When the DB server 9 receives an update SQL statement for the user DBA, the DB server 9 performs an update process corresponding to the update SQL statement for the user DBA, and causes the user DBA to hold the updated record 911. Similarly, when the DB server 9 receives the update SQL statement for the user DBB, the DB server 9 performs an update process according to the update SQL statement for the user DBB, and causes the user DBB to hold the updated record 912.

DB一括更新部6171によるユーザDBA及びユーザDBBに対する更新が正常に成功した場合には、図12に示すように、DBアクセス部品aにおける業務トランザクション制御部品619のCOMMIT部6193は、DBサーバ9に対してユーザDBAに対する更新SQL文のCOMMIT用のSQL文を出力し、さらにDBサーバ9に対してユーザDBBに対する更新SQL文のCOMMIT用のSQL文を出力する。DBサーバ9は、COMMIT用のSQL文を受信すると、ユーザDBA及びユーザDBBに対する更新を確定させる。以上の処理が完了すると、業務トランザクション制御部品619のCOMMIT部6193は、DBサーバ9に対して、発行SQLログテーブル93に、処理に係るトランザクションIDに対応するレコードのトランザクション状態が処理完了を表す「0」になるように登録させる。   When the update to the user DBA and the user DBB by the DB batch update unit 6171 is normally successful, the COMMIT unit 6193 of the business transaction control component 619 in the DB access component a sends the DB server 9 as shown in FIG. Then, the SQL statement for COMMIT of the update SQL statement for the user DBA is output, and further, the SQL statement for COMMIT of the update SQL statement for the user DBB is output to the DB server 9. When the DB server 9 receives the SQL statement for COMMIT, the DB server 9 determines the update for the user DBA and the user DBB. When the above processing is completed, the COMMIT unit 6193 of the business transaction control component 619 indicates to the DB server 9 that the transaction status of the record corresponding to the transaction ID related to the processing indicates that the processing is completed in the issued SQL log table 93. Register to be "0".

さらに、以上の処理が正常に完了した場合には、ユーザアプリケーションaの一括COMMIT処理呼出部615は、業務処理要求の送信元であるクライアント端末3に、応答通知を送信する。これによって、上記業務処理要求に対応する処理を終了する。なお、いずれかの段階で異常が発生した場合には、その段階で異常終了を応答として、業務処理要求の送信元であるクライアント端末3に返信する。   Further, when the above processing is normally completed, the collective COMMIT processing calling unit 615 of the user application a transmits a response notification to the client terminal 3 that is the transmission source of the business processing request. Thereby, the process corresponding to the business process request is completed. If an abnormality occurs at any stage, the abnormal termination is returned as a response at that stage and returned to the client terminal 3 that is the transmission source of the business process request.

このような処理を実行することにより、ユーザDBに対する更新は必ずROLLBACKされ、ユーザDBに対する更新が全て正常に完了することが確認されなければ、COMMITされることはない。但し、発行SQLログテーブル93においてトランザクションID及び発行SQLシーケンス番号で更新SQL文は管理されており、ユーザDBに対する更新が全て正常に完了することが確認されれば、発行SQLログテーブル93に登録されたデータを用いて、必要な更新がユーザDBに対して行われて、COMMITされる。このような2段階の処理を実施することによって、図4乃至図12で示したようにDB更新処理を実施するプロセスやサーバが分散しているために統一的なトランザクション管理ができない場合においても、途中で異常が発生しても、そのための個別の取消処理を用意・実行することなく、ユーザDBを元の状態に戻すことができるようになる。すなわち、ユーザDBに対する確認のための更新を必ずROLLBACKすることと、後で一括して更新を行うための発行SQLログテーブル93を用意することで、上で述べたような効果を得ることができるようになる。   By executing such processing, the update to the user DB is always ROLLBACK, and if it is not confirmed that all the updates to the user DB are normally completed, the update is not performed. However, the update SQL statement is managed with the transaction ID and the issue SQL sequence number in the issue SQL log table 93. If it is confirmed that all updates to the user DB are completed normally, the update SQL statement is registered in the issue SQL log table 93. The necessary update is performed on the user DB using the stored data, and is committed. By performing such a two-stage process, even if the process and server for executing the DB update process are distributed as shown in FIGS. 4 to 12, the unified transaction management cannot be performed. Even if an abnormality occurs midway, the user DB can be returned to the original state without preparing and executing an individual cancellation process for that purpose. In other words, the above-described effects can be obtained by always performing ROLLBACK for confirmation for the user DB and preparing the issue SQL log table 93 for performing batch update later. It becomes like this.

次に、具体的な処理内容を図13乃至図18を用いて説明する。最初に、例えばAPサーバAのユーザアプリケーションaは、クライアント端末3から、業務処理要求を受信する(ステップS1)。そうすると、ユーザアプリケーションaは、DBアクセス部品aにトランザクションID採番依頼を出力する(ステップS3)。DBアクセス部品aは、ユーザアプリケーションaからトランザクションID採番依頼を受信し(ステップS5)、トランザクションIDを発行する(ステップS7)。この際、DBアクセス部品aは、独自にトランザクションIDを発行するようにしても良いし、例えば、DBサーバ9の発行SQLログテーブル93に対して、現在の最も新しいトランザクションIDを読み出す依頼を出力し、当該現在の最も新しいトランザクションIDに応じて、今回のトランザクションIDを発行するようにしても良い。DBアクセス部品aは、今回発行されたトランザクションIDを保持しておく。   Next, specific processing contents will be described with reference to FIGS. First, for example, the user application a of the AP server A receives a business process request from the client terminal 3 (step S1). Then, the user application a outputs a transaction ID numbering request to the DB access component a (step S3). The DB access component a receives a transaction ID numbering request from the user application a (step S5) and issues a transaction ID (step S7). At this time, the DB access component “a” may independently issue a transaction ID. For example, the DB access component “a” outputs a request to read the current latest transaction ID to the issue SQL log table 93 of the DB server 9. The current transaction ID may be issued according to the current latest transaction ID. The DB access component a holds the transaction ID issued this time.

そして、DBアクセス部品aは、採番されたトランザクションIDを、ユーザアプリケーションaに出力する(ステップS9)。ユーザアプリケーションaは、DBアクセス部品aからトランザクションIDを受信し、メインメモリなどの記憶装置に保持しておく(ステップS11)。そして、ユーザアプリケーションaは、所定の業務処理を実施する(ステップS13)。この所定の業務処理においてDBサーバ9が管理するユーザDBAやユーザDBBに保持されたデータの更新が必要になると、トランザクションIDを含むDB更新依頼をDBアクセス部品aに出力する(ステップS15)。DB更新依頼は、更新SQL文そのものであってもよいし、更新SQL文を構成するために必要なデータ(更新対象テーブル名、更新対象レコードを特定するための条件節、更新内容など)を含む場合もある。   Then, the DB access component a outputs the numbered transaction ID to the user application a (step S9). The user application a receives the transaction ID from the DB access component a and holds it in a storage device such as a main memory (step S11). Then, the user application “a” performs a predetermined business process (step S13). When it is necessary to update the data held in the user DBA or the user DBB managed by the DB server 9 in this predetermined business process, a DB update request including a transaction ID is output to the DB access component a (step S15). The DB update request may be the update SQL statement itself, and includes data necessary for constructing the update SQL statement (update target table name, conditional clause for specifying the update target record, update contents, etc.). In some cases.

DBアクセス部品aは、ユーザアプリケーションaからトランザクションIDを含むDB更新依頼を受信すると(ステップS17)、当該DBアクセス部品a(更新対象のDB(テーブルとも呼ぶ)用のユーザDBアクセス部品の更新SQL発行部)は、排他エラーが発生しないことを確認するために、同一テーブル・同一レコードへの仕掛処理の有無を確認する依頼を、DBサーバ9に対して送信する(ステップS19)。具体的には、更新SQL文を構成するために必要なデータのうち更新対象テーブル名及び更新対象レコードを特定するための条件節を用いて、発行SQLログテーブル93を検索するように、DBサーバ9に依頼する。DBサーバ9は、発行SQLログテーブル93における更新対象テーブル及び更新対象特定キーを、受信した更新対象テーブル名及び更新対象レコードを特定するための条件節に基づき検索する。この検索結果によって、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在するか否か、そして存在する場合にはトランザクション状態が仕掛中を表す「1」であるかを判断する。判断するのはDBサーバ9でもよいし、DBアクセス部品aであってもよい。   When the DB access component a receives a DB update request including a transaction ID from the user application a (step S17), the user DB access component update SQL issuance for the DB access component a (DB to be updated (also called a table)) is issued. In order to confirm that the exclusive error does not occur, the part) transmits a request to the DB server 9 to confirm the presence / absence of the in-process processing for the same table and the same record (step S19). Specifically, the DB server is configured to search the issued SQL log table 93 using the condition clause for specifying the update target table name and the update target record among the data necessary for configuring the update SQL statement. 9 The DB server 9 searches the update target table and the update target specifying key in the issued SQL log table 93 based on the received update target table name and the conditional clause for specifying the update target record. Based on this search result, it is determined whether or not there is another transaction that is updating the same table and the same record, and if there is, it is determined whether the transaction state is “1” indicating that the transaction is in progress. The determination may be made by the DB server 9 or the DB access component a.

ここで同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在しており、且つトランザクション状態が仕掛中を表している場合には、排他エラーということでこれ以上の処理を実施せず、DBアクセス部品aは、排他エラーをユーザアプリケーションaに通知する。ユーザアプリケーションaは、業務処理要求元のクライアント端末3に、エラーを通知する。   If there is another transaction that is trying to update the same table and the same record, and the transaction status indicates that the transaction is in progress, no further processing is performed due to an exclusive error, and the DB The access component a notifies the user application a of an exclusion error. The user application “a” notifies the client terminal 3 of the business process request source of the error.

一方、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在せず、又は存在する場合であってもトランザクション状態が完了状態を表している場合には、DBアクセス部品a(ユーザDBアクセス部品の更新SQL発行部)は、さらに、DBサーバ9に対して、受信したトランザクションIDで発行SQLログテーブル93を検索するように依頼する。DBサーバ9は、トランザクションIDを含む依頼を受信し、発行SQLログテーブル93を検索し、該当するレコードの発行SQLシーケンス番号を抽出する。DBサーバ9は、例えば発行SQLシーケンス番号のうち最も大きな番号を、DBアクセス部品aに送信する。抽出された全ての発行SQLシーケンス番号をDBアクセス部品aに送信するようにしても良い。DBアクセス部品aは、例えば発行SQLシーケンス番号のうち最も大きな番号を受信すると、当該最も大きな発行SQLシーケンス番号を1インクリメントして、今回用いる発行SQLシーケンス番号を発行する(ステップS21)。   On the other hand, if there is no other transaction to update the same table and the same record, or the transaction state indicates a completed state even if it exists, the DB access component a (user DB access component) The update SQL issuing unit) further requests the DB server 9 to search the issued SQL log table 93 with the received transaction ID. The DB server 9 receives the request including the transaction ID, searches the issue SQL log table 93, and extracts the issue SQL sequence number of the corresponding record. The DB server 9 transmits, for example, the largest number among the issued SQL sequence numbers to the DB access component a. All the issued SQL sequence numbers extracted may be transmitted to the DB access component a. For example, when the DB access component a receives the largest number among the issued SQL sequence numbers, the DB accessed component a increments the largest issued SQL sequence number by 1 and issues the issued SQL sequence number used this time (step S21).

そして、DBアクセス部品a(ユーザDBアクセス部品の更新SQL発行部)は、DB更新依頼に基づく更新SQL文をDBサーバ9に対して発行する(ステップS23)。DBサーバ9は、DBアクセス部品aから更新SQL文を受信すると、更新SQL文に基づき、ユーザDBの仮の更新を実施する。なお、この際にエラーが発生することもある。エラーが発生した場合には、その旨DBアクセス部品aに通知する。   Then, the DB access component a (user DB access component update SQL issuing unit) issues an update SQL statement based on the DB update request to the DB server 9 (step S23). When the DB server 9 receives the update SQL statement from the DB access component a, the DB server 9 performs a temporary update of the user DB based on the update SQL statement. An error may occur at this time. When an error occurs, the DB access component a is notified to that effect.

一方、更新SQL文による更新処理が正常に完了すると、DBサーバ9は、その旨DBアクセス部品aに通知する。そうすると、DBアクセス部品a(ユーザDBアクセス部品の発行SQL待避部)は、トランザクションID、発行SQLシーケンス番号、更新SQL文、更新対象テーブル名(DB名)、更新対象特定キー、SQL実行結果(成功又は失敗)、及び仕掛中を表す「1」であるトランザクション状態を含む更新SQL文の登録要求を、DBサーバ9に送信する(ステップS25)。DBサーバ9は、上で述べたような更新SQLの登録要求を受信し、発行SQLログテーブル93に登録する。そして、DBサーバ9は、処理結果をDBアクセス部品aに返信する。なお、この更新処理については、即時コミット(COMMIT)される。   On the other hand, when the update process using the update SQL statement is normally completed, the DB server 9 notifies the DB access component a to that effect. Then, the DB access component a (user DB access component issuance SQL saving unit) displays the transaction ID, issue SQL sequence number, update SQL statement, update target table name (DB name), update target specific key, SQL execution result (success) (Or failure) and an update SQL statement registration request including a transaction status of “1” indicating that the work is in progress is transmitted to the DB server 9 (step S25). The DB server 9 receives the update SQL registration request as described above, and registers it in the issued SQL log table 93. Then, the DB server 9 returns the processing result to the DB access component a. This update process is immediately committed (COMMIT).

DBアクセス部品aは、DBサーバ9から正常終了を表す処理結果を受信すると、正常処理終了をユーザアプリケーションaに通知する(ステップS27)。ユーザアプリケーションaは、DBアクセス部品aから正常処理終了通知を受信する(ステップS29)。処理は端子Aを介して図14の処理に移行する。   When the DB access component a receives the processing result indicating the normal end from the DB server 9, the DB access component a notifies the user application a of the normal processing end (step S27). The user application a receives a normal process end notification from the DB access component a (step S29). The processing shifts to the processing in FIG.

ユーザアプリケーションaは、業務処理要求に応じてAPサーバBのユーザアプリケーションbに処理を依頼しなければならない場合には、必要なデータ及びトランザクションIDを含むユーザアプリケーションb呼出を、APサーバBに送信する(ステップS31)。APサーバBのユーザアプリケーションbは、APサーバAから必要なデータ及びトランザクションIDを含むユーザアプリケーションb呼出を受信し、トランザクションIDをメインメモリなどの記憶装置に格納する(ステップS33)。   When the user application a has to request the user application b of the AP server B in response to the business process request, the user application a sends a call to the user application b including necessary data and a transaction ID to the AP server B. (Step S31). The user application b of the AP server B receives the user application b call including necessary data and the transaction ID from the AP server A, and stores the transaction ID in a storage device such as a main memory (step S33).

そして、ユーザアプリケーションbは、所定の業務処理を実施する(ステップS35)。この所定の業務処理においてDBサーバ9が管理するユーザDBAやユーザDBBに保持されたデータの更新が必要になると、トランザクションIDを含むDB更新依頼をDBアクセス部品bに出力する(ステップS37)。   Then, the user application b performs a predetermined business process (step S35). When it is necessary to update the data held in the user DBA or the user DBB managed by the DB server 9 in this predetermined business process, a DB update request including a transaction ID is output to the DB access component b (step S37).

DBアクセス部品bは、ユーザアプリケーションbからトランザクションIDを含むDB更新依頼を受信すると(ステップS39)、当該DBアクセス部品b(更新対象のDB(テーブルとも呼ぶ)用のユーザDBアクセス部品の更新SQL発行部)は、排他エラーが発生しないことを確認するために、同一テーブル・同一レコードへの仕掛処理の有無を確認する依頼を、DBサーバ9に対して送信する(ステップS41)。具体的には、更新SQL文を構成するために必要なデータのうち更新対象テーブル名及び更新対象レコードを特定するための条件節を用いて、発行SQLログテーブル93を検索するように、DBサーバ9に依頼する。DBサーバ9は、発行SQLログテーブル93における更新対象テーブル及び更新対象特定キーを、受信した更新対象テーブル名及び更新対象レコードを特定するための条件節に基づき検索する。この検索結果によって、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在するか否か、そして存在する場合にはトランザクション状態が仕掛中を表す「1」であるかを判断する。判断するのはDBサーバ9でもよいし、DBアクセス部品bであってもよい。   When the DB access component b receives a DB update request including a transaction ID from the user application b (step S39), the DB access component b issues an update SQL issuance of the user DB access component for the DB access component b (update target DB (also referred to as a table)). Part) transmits to the DB server 9 a request for confirming whether or not there is an in-process process for the same table and the same record in order to confirm that no exclusion error occurs (step S41). Specifically, the DB server is configured to search the issued SQL log table 93 using the condition clause for specifying the update target table name and the update target record among the data necessary for configuring the update SQL statement. 9 The DB server 9 searches the update target table and the update target specifying key in the issued SQL log table 93 based on the received update target table name and the conditional clause for specifying the update target record. Based on this search result, it is determined whether or not there is another transaction that is updating the same table and the same record, and if there is, it is determined whether the transaction state is “1” indicating that the transaction is in progress. The determination may be made by the DB server 9 or the DB access component b.

ここで同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在しており、且つトランザクション状態が仕掛中を表している場合には、排他エラーということでこれ以上の処理を実施せず、DBアクセス部品bは、排他エラーをユーザアプリケーションbに通知する。ユーザアプリケーションbは、呼出元のユーザアプリケーションaにエラーを通知する。   If there is another transaction that is trying to update the same table and the same record, and the transaction status indicates that the transaction is in progress, no further processing is performed due to an exclusive error, and the DB The access component b notifies the user application b of an exclusion error. The user application b notifies the calling user application a of the error.

一方、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在せず、又は存在する場合であってもトランザクション状態が完了状態を表している場合には、DBアクセス部品b(ユーザDBアクセス部品の更新SLQ発行部)は、さらに、DBサーバ9に対して、受信したトランザクションIDで発行SQLログテーブル93を検索するように依頼する。DBサーバ9は、トランザクションIDを含む依頼を受信し、発行SQLログテーブル93を検索し、該当するレコードの発行SQLシーケンス番号を抽出する。DBサーバ9は、例えば発行SQLシーケンス番号のうち最も大きな番号を、DBアクセス部品bに送信する。抽出された全ての発行SQLシーケンス番号をDBアクセス部品bに出力するようにしても良い。DBアクセス部品bは、例えば発行SQLシーケンス番号のうち最も大きな番号を受信すると、当該最も大きな発行SQLシーケンス番号を1インクリメントして、今回用いる発行SQLシーケンス番号を発行する(ステップS43)。   On the other hand, if there is no other transaction to update the same table and the same record, or the transaction state indicates a completed state even if it exists, the DB access component b (user DB access component) The update SLQ issuing unit) further requests the DB server 9 to search the issued SQL log table 93 with the received transaction ID. The DB server 9 receives the request including the transaction ID, searches the issue SQL log table 93, and extracts the issue SQL sequence number of the corresponding record. The DB server 9 transmits, for example, the largest number among the issued SQL sequence numbers to the DB access component b. All the issued SQL sequence numbers extracted may be output to the DB access component b. For example, when the DB access component b receives the largest number of the issued SQL sequence numbers, the DB accessed component b increments the largest issued SQL sequence number by 1 and issues the issued SQL sequence number used this time (step S43).

そして、DBアクセス部品b(ユーザDBアクセス部品の更新SLQ発行部)は、DB更新依頼に基づく更新SQL文をDBサーバ9に対して発行する(ステップS45)。DBサーバ9は、DBアクセス部品bから更新SQL文を受信すると、更新SQL文に基づき、ユーザDBの仮の更新を実施する。なお、この際にエラーが発生することもある。エラーが発生した場合には、その旨DBアクセス部品bに通知する。   Then, the DB access component b (user DB access component update SLQ issuing unit) issues an update SQL statement based on the DB update request to the DB server 9 (step S45). When the DB server 9 receives the update SQL statement from the DB access component b, the DB server 9 performs a temporary update of the user DB based on the update SQL statement. An error may occur at this time. When an error occurs, the DB access component b is notified to that effect.

一方、更新SQL文による更新処理が正常に完了すると、DBサーバ9は、その旨DBアクセス部品bに通知する。そうすると、DBアクセス部品b(ユーザDBアクセス部品の発行SQL待避部)は、トランザクションID、発行SQLシーケンス番号、更新SQL文、更新対象テーブル名(DB名)、更新対象特定キー、SQL実行結果(成功又は失敗)、及び仕掛中を表す「1」であるトランザクション状態を含む更新SQL文の登録要求を、DBサーバ9に送信する(ステップS47)。DBサーバ9は、上で述べたような更新SQLの登録要求を受信し、発行SQLログテーブル93に登録する。そして、DBサーバ9は、処理結果をDBアクセス部品bに返信する。なお、この更新処理については、即時コミット(COMMIT)される。   On the other hand, when the update process using the update SQL statement is normally completed, the DB server 9 notifies the DB access component b to that effect. Then, the DB access component b (user DB access component issuance SQL saving unit) displays the transaction ID, issue SQL sequence number, update SQL statement, update target table name (DB name), update target specific key, SQL execution result (success) (Or failure) and an update SQL statement registration request including a transaction state of “1” indicating that the work is in progress is transmitted to the DB server 9 (step S47). The DB server 9 receives the update SQL registration request as described above, and registers it in the issued SQL log table 93. Then, the DB server 9 returns the processing result to the DB access component b. This update process is immediately committed (COMMIT).

DBアクセス部品bは、DBサーバ9から正常終了を表す処理結果を受信すると、正常な処理終了をユーザアプリケーションbに通知する(ステップS49)。ユーザアプリケーションbは、DBアクセス部品bから正常処理終了通知を受信する(ステップS51)。   When the DB access component b receives the processing result indicating the normal end from the DB server 9, the DB access component b notifies the user application b of the normal processing end (step S49). The user application b receives a normal process end notification from the DB access component b (step S51).

そうすると、ユーザアプリケーションbのROLLBACK部625は、DBアクセス部品bにDBトランザクションロールバック(ROLLBACK)を依頼する(ステップS53)。DBアクセス部品bの業務トランザクション制御部品517におけるROLLBACK部5171は、ユーザアプリケーションbからのDBトランザクションロールバックの依頼を受信し、DBトランザクションロールバックを実施する(ステップS55)。すなわち、ステップS45でDBサーバ9に実行させたユーザDBの更新を、元の状態に戻すようにDBサーバ9に依頼する。DBサーバ9は、DBアクセス部品bの業務トランザクション制御部品517におけるROLLBACK部5171からのロールバック依頼に応じて、ユーザDBの更新を元の状態に戻す。DBサーバ9は、ロールバック完了の通知をDBアクセス部品bに送信する。DBアクセス部品bは、DBサーバ9からロールバック完了通知を受信すると、ユーザアプリケーションbにロールバック完了通知をさらに送信する。   Then, the ROLLBACK unit 625 of the user application b requests the DB access component b to perform a DB transaction rollback (ROLLBACK) (step S53). The ROLLBACK unit 5171 in the business transaction control component 517 of the DB access component b receives the DB transaction rollback request from the user application b, and performs the DB transaction rollback (step S55). That is, it requests the DB server 9 to return the user DB updated in step S45 to the original state. The DB server 9 returns the update of the user DB to the original state in response to a rollback request from the ROLLBACK unit 5171 in the business transaction control component 517 of the DB access component b. The DB server 9 transmits a rollback completion notification to the DB access component b. Upon receiving the rollback completion notification from the DB server 9, the DB access component b further transmits a rollback completion notification to the user application b.

ユーザアプリケーションbは、DBアクセス部品bからロールバック完了通知を受信すると、正常終了を、呼出元のユーザアプリケーションaに通知する(ステップS57)。呼出元のユーザアプリケーションaは、正常終了通知を、呼出先のユーザアプリケーションbから受信する(ステップS59)。処理は、端子Bを介して図15の処理に移行する。   When receiving the rollback completion notification from the DB access component b, the user application b notifies the calling user application a of normal termination (step S57). The calling user application a receives a normal end notification from the calling user application b (step S59). The processing shifts to the processing in FIG.

ユーザアプリケーションaは、業務処理要求に応じてAPサーバCのユーザアプリケーションcに処理を依頼しなければならない場合には、必要なデータ及びトランザクションIDを含むユーザアプリケーションc呼出を、APサーバCに送信する(ステップS61)。APサーバCのユーザアプリケーションcは、APサーバAから必要なデータ及びトランザクションIDを含むユーザアプリケーションc呼出を受信し、トランザクションIDをメインメモリなどの記憶装置に格納する(ステップS63)。   When the user application “a” needs to request the user application “c” of the AP server C in response to the business process request, the user application “a” sends a call to the user application “c” including necessary data and transaction ID to the AP server C. (Step S61). The user application c of the AP server C receives the user application c call including necessary data and the transaction ID from the AP server A, and stores the transaction ID in a storage device such as a main memory (step S63).

そして、ユーザアプリケーションcは、所定の業務処理を実施する(ステップS65)。この所定の業務処理においてDBサーバ9が管理するユーザDBAやユーザDBBに保持されたデータの更新が必要になると、トランザクションIDを含むDB更新依頼をDBアクセス部品cに出力する(ステップS67)。   Then, the user application c performs a predetermined business process (Step S65). When it is necessary to update the data held in the user DBA or the user DBB managed by the DB server 9 in this predetermined business process, a DB update request including a transaction ID is output to the DB access component c (step S67).

DBアクセス部品cは、ユーザアプリケーションcからトランザクションIDを含むDB更新依頼を受信すると(ステップS69)、当該DBアクセス部品c(更新対象のDB(テーブルとも呼ぶ)用のユーザDBアクセス部品の更新SQL発行部)は、排他エラーが発生しないことを確認するために、同一テーブル・同一レコードへの仕掛処理の有無を確認する依頼を、DBサーバ9に対して送信する(ステップS71)。具体的には、更新SQL文を構成するために必要なデータのうち更新対象テーブル名及び更新対象レコードを特定するための条件節を用いて、発行SQLログテーブル93を検索するように、DBサーバ9に依頼する。DBサーバ9は、発行SQLログテーブル93における更新対象テーブル及び更新対象特定キーを、受信した更新対象テーブル名及び更新対象レコードを特定するための条件節に基づき検索する。この検索結果によって、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在するか否か、そして存在する場合にはトランザクション状態が仕掛中を表す「1」であるかを判断する。判断するのはDBサーバ9でもよいし、DBアクセス部品cであってもよい。   When the DB access component c receives a DB update request including a transaction ID from the user application c (step S69), the user DB access component update SQL issuance for the DB access component c (DB to be updated (also called a table)) is issued. Part) transmits to the DB server 9 a request for confirming whether or not there is an in-process process for the same table and the same record in order to confirm that no exclusion error occurs (step S71). Specifically, the DB server is configured to search the issued SQL log table 93 using the condition clause for specifying the update target table name and the update target record among the data necessary for configuring the update SQL statement. 9 The DB server 9 searches the update target table and the update target specifying key in the issued SQL log table 93 based on the received update target table name and the conditional clause for specifying the update target record. Based on this search result, it is determined whether or not there is another transaction that is updating the same table and the same record, and if there is, it is determined whether the transaction state is “1” indicating that the transaction is in progress. The determination may be made by the DB server 9 or the DB access component c.

ここで同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在しており、且つトランザクション状態が仕掛中を表している場合には、排他エラーということでこれ以上の処理を実施せず、DBアクセス部品cは、排他エラーをユーザアプリケーションcに通知する。ユーザアプリケーションcは、呼出元のユーザアプリケーションaにエラーを通知する。   If there is another transaction that is trying to update the same table and the same record, and the transaction status indicates that the transaction is in progress, no further processing is performed due to an exclusive error, and the DB The access component c notifies the user application c of an exclusion error. The user application c notifies the calling user application a of the error.

一方、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在せず、又は存在する場合であってもトランザクション状態が完了状態を表している場合には、DBアクセス部品c(ユーザDBアクセス部品の更新SQL発行部)は、さらに、DBサーバ9に対して、受信したトランザクションIDで発行SQLログテーブル93を検索するように依頼する。DBサーバ9は、トランザクションIDを含む依頼を受信し、発行SQLログテーブル93を検索し、該当するレコードの発行SQLシーケンス番号を抽出する。DBサーバ9は、例えば発行SQLシーケンス番号のうち最も大きな番号を、DBアクセス部品cに送信する。抽出された全ての発行SQLシーケンス番号をDBアクセス部品cに送信するようにしても良い。DBアクセス部品cは、例えば発行SQLシーケンス番号のうち最も大きな番号を受信すると、当該最も大きな発行SQLシーケンス番号を1インクリメントして、今回用いる発行SQLシーケンス番号を発行する(ステップS73)。   On the other hand, if there is no other transaction for which the same table and the same record are to be updated, or the transaction state indicates a completed state even if it exists, the DB access component c (user DB access component) The update SQL issuing unit) further requests the DB server 9 to search the issued SQL log table 93 with the received transaction ID. The DB server 9 receives the request including the transaction ID, searches the issue SQL log table 93, and extracts the issue SQL sequence number of the corresponding record. For example, the DB server 9 transmits the largest number among the issued SQL sequence numbers to the DB access component c. All the issued SQL sequence numbers extracted may be transmitted to the DB access component c. For example, when the DB access component c receives the largest number of the issued SQL sequence numbers, the DB accessed component c increments the largest issued SQL sequence number by 1 and issues the issued SQL sequence number used this time (step S73).

そして、DBアクセス部品c(ユーザDBアクセス部品の更新SQL発行部)は、DB更新依頼に基づく更新SQL文をDBサーバ9に対して発行する(ステップS75)。DBサーバ9は、DBアクセス部品cから更新SQL文を受信すると、更新SQL文に基づき、ユーザDBの仮の更新を実施する。なお、この際にエラーが発生することもある。エラーが発生した場合には、その旨DBアクセス部品cに通知する。   The DB access component c (user DB access component update SQL issuing unit) issues an update SQL sentence based on the DB update request to the DB server 9 (step S75). When the DB server 9 receives the update SQL statement from the DB access component c, the DB server 9 performs a temporary update of the user DB based on the update SQL statement. An error may occur at this time. When an error occurs, the DB access component c is notified to that effect.

一方、更新SQL文による更新処理が正常に完了すると、DBサーバ9は、その旨DBアクセス部品cに通知する。そうすると、DBアクセス部品c(ユーザDBアクセス部品の発行SQL待避部)は、トランザクションID、発行SQLシーケンス番号、更新SQL文、更新対象テーブル名(DB名)、更新対象特定キー、SQL実行結果(成功又は失敗)、及び仕掛中を表す「1」であるトランザクション状態を含む更新SQL文の登録要求を、DBサーバ9に送信する(ステップS77)。DBサーバ9は、上で述べたような更新SQLの登録要求を受信し、発行SQLログテーブル93に登録する。そして、DBサーバ9は、処理結果をDBアクセス部品cに返信する。なお、この更新処理については、即時コミット(COMMIT)される。   On the other hand, when the update process using the update SQL statement is normally completed, the DB server 9 notifies the DB access component c to that effect. Then, the DB access component c (user DB access component issuance SQL saving unit) displays the transaction ID, issue SQL sequence number, update SQL statement, update target table name (DB name), update target specific key, SQL execution result (success) Or an update SQL statement registration request including a transaction status of “1” indicating that the work is in progress is transmitted to the DB server 9 (step S77). The DB server 9 receives the update SQL registration request as described above, and registers it in the issued SQL log table 93. Then, the DB server 9 returns the processing result to the DB access component c. This update process is immediately committed (COMMIT).

DBアクセス部品cは、DBサーバ9から正常終了を表す処理結果を受信すると、正常な処理終了をユーザアプリケーションcに通知する(ステップS79)。ユーザアプリケーションcは、DBアクセス部品cから正常処理終了通知を受信する(ステップS81)。   When the DB access component c receives the processing result indicating the normal end from the DB server 9, the DB access component c notifies the user application c of the normal processing end (step S79). The user application c receives a normal process end notification from the DB access component c (step S81).

そうすると、ユーザアプリケーションcのROLLBACK部は、DBアクセス部品cにDBトランザクションロールバック(ROLLBACK)を依頼する(ステップS83)。DBアクセス部品cの業務トランザクション制御部品におけるROLLBACK部は、ユーザアプリケーションcからのDBトランザクションロールバックの依頼を受信し、DBトランザクションロールバックを実施する(ステップS85)。すなわち、ステップS75でDBサーバ9に実行させたユーザDBの更新を、取り消して元の状態に戻すようにDBサーバ9に依頼する。DBサーバ9は、DBアクセス部品cの業務トランザクション制御部品におけるROLLBACK部からのロールバック依頼に応じて、ユーザDBの更新を取り消して元の状態に戻す。DBサーバ9は、ロールバック完了の通知をDBアクセス部品cに送信する。DBアクセス部品cは、DBサーバ9からロールバック完了通知を受信すると、ユーザアプリケーションcにロールバック完了通知をさらに送信する。   Then, the ROLLBACK unit of the user application c requests the DB access component c to perform a DB transaction rollback (ROLLBACK) (step S83). The ROLLBACK unit in the business transaction control component of the DB access component c receives the DB transaction rollback request from the user application c, and executes the DB transaction rollback (step S85). In other words, the DB server 9 is requested to cancel the update of the user DB executed by the DB server 9 in step S75 and restore the original state. In response to the rollback request from the ROLLBACK unit in the business transaction control component of the DB access component c, the DB server 9 cancels the update of the user DB and returns it to the original state. The DB server 9 transmits a rollback completion notification to the DB access component c. Upon receiving the rollback completion notification from the DB server 9, the DB access component c further transmits a rollback completion notification to the user application c.

ユーザアプリケーションcは、DBアクセス部品cからロールバック完了通知を受信すると、正常終了を、呼出元のユーザアプリケーションaに通知する(ステップS87)。呼出元のユーザアプリケーションaは、正常終了通知を、呼出先のユーザアプリケーションcから受信する(ステップS89)。処理は、端子Dを介して図16の処理に移行する。   When receiving the rollback completion notification from the DB access component c, the user application c notifies the caller user application a of normal termination (step S87). The calling user application a receives a normal end notification from the calling user application c (step S89). The processing shifts to the processing in FIG.

ユーザアプリケーションaは、これまでの処理結果に基づき所定の業務処理を実施する(ステップS91)。そして所定の業務処理が完了すると、ユーザアプリケーションaのROLLBACK部は、DBアクセス部品aにDBトランザクションロールバック(ROLLBACK)を依頼する(ステップS93)。DBアクセス部品aの業務トランザクション制御部品619におけるROLLBACK部6191は、ユーザアプリケーションaからのDBトランザクションロールバックの依頼を受信し、DBトランザクションロールバックを実施する(ステップS95)。すなわち、ステップS23でDBサーバ9に実行させたユーザDBの更新を、取り消して元の状態に戻すようにDBサーバ9に依頼する。DBサーバ9は、DBアクセス部品aの業務トランザクション制御部品619におけるROLLBACK部6191からのロールバック依頼に応じて、ユーザDBの更新を取り消して元の状態に戻す。DBサーバ9は、ロールバック完了の通知をDBアクセス部品aに送信する。DBアクセス部品aは、DBサーバ9からロールバック完了通知を受信すると、ユーザアプリケーションaにロールバック完了通知をさらに送信する。   The user application a performs predetermined business processing based on the processing results so far (step S91). When the predetermined business process is completed, the ROLLBACK unit of the user application a requests the DB access component a for DB transaction rollback (ROLLBACK) (step S93). The ROLLBACK unit 6191 in the business transaction control component 619 of the DB access component a receives the request for the DB transaction rollback from the user application a, and performs the DB transaction rollback (step S95). That is, the DB server 9 is requested to cancel the update of the user DB executed by the DB server 9 in step S23 and restore the original state. In response to the rollback request from the ROLLBACK unit 6191 in the business transaction control component 619 of the DB access component a, the DB server 9 cancels the update of the user DB and returns it to the original state. The DB server 9 transmits a rollback completion notification to the DB access component a. Upon receiving the rollback completion notification from the DB server 9, the DB access component a further transmits a rollback completion notification to the user application a.

ユーザアプリケーションaは、DBアクセス部品aからロールバック完了通知を受信すると、ユーザアプリケーションaの一括COMMIT処理呼出部615に、処理に係るトランザクションIDを含むDB一括更新依頼をDBアクセス部品aに出力させる(ステップS97)。DBアクセス部品aの更新SQL一括実行部品617のDB一括更新部6171は、ユーザアプリケーションaからトランザクションIDを含むDB一括更新依頼を受信し(ステップS99)、DBサーバ9に対して、発行SQLログテーブル93からトランザクションIDに該当する更新SQL文を発行SQLシーケンス番号順に読み出すように要求する。DBサーバ9は、DBアクセス部品aから、トランザクションIDに該当する更新SQL文を発行SQLシーケンス番号順に発行SQLログテーブル93から読み出す要求を受信し、発行SQLログテーブル93から、トランザクションIDに該当する更新SQL文を発行SQLシーケンス番号順に読み出し、DBアクセス部品aに送信する。DBアクセス部品aの更新SQL一括実行部品617のDB一括更新部6171は、DBサーバ9から、トランザクションIDに該当する更新SQL文を発行SQLシーケンス番号順に受信する(ステップS101)。   When the user application a receives a rollback completion notification from the DB access component a, the user application a causes the batch COMMIT processing call unit 615 of the user application a to output a DB batch update request including a transaction ID related to the processing to the DB access component a ( Step S97). The DB batch update unit 6171 of the update SQL batch execution component 617 of the DB access component a receives a DB batch update request including a transaction ID from the user application a (step S99), and issues an issued SQL log table to the DB server 9. The update SQL statement corresponding to the transaction ID is requested from 93 in the order of the issued SQL sequence numbers. The DB server 9 receives, from the DB access component a, a request for reading the update SQL statement corresponding to the transaction ID from the issue SQL log table 93 in the order of the issue SQL sequence number, and the update corresponding to the transaction ID is issued from the issue SQL log table 93. The SQL statements are read in the order of the issued SQL sequence numbers and transmitted to the DB access component a. The DB batch update unit 6171 of the update SQL batch execution component 617 of the DB access component a receives update SQL statements corresponding to the transaction ID from the DB server 9 in the order of the issued SQL sequence numbers (step S101).

そして、DBアクセス部品aの更新SQL一括実行部品617におけるDB一括更新部6171は、発行SQLシーケンス番号順に、受信した更新SQL文を、DBサーバ9に送信し、更新SQL文の実行を要求する(ステップS103)。DBサーバ9は、DBアクセス部品aから、更新SQL文を発行SQLシーケンス番号順に受信し、更新SQL文に従ってユーザDBA又はユーザDBBに対して更新処理を実施する。更新処理の結果は、DBサーバ9からDBアクセス部品aに通知される。   Then, the DB batch update unit 6171 in the update SQL batch execution component 617 of the DB access component a transmits the received update SQL statements to the DB server 9 in the order of the issued SQL sequence numbers, and requests execution of the update SQL statements ( Step S103). The DB server 9 receives update SQL statements from the DB access component a in the order of the issued SQL sequence numbers, and performs update processing on the user DBA or the user DBB according to the update SQL statements. The result of the update process is notified from the DB server 9 to the DB access component a.

更新処理の結果を受信し、更新処理の結果が正常終了であれば、DBアクセス部品aの更新SQL一括実行部品617におけるDB一括更新部6171は、DBサーバ9に対して、処理に係るトランザクションIDに対応するトランザクション状態を処理完了に変更するように要求する(ステップS105)。DBサーバ9は、要求を受信すると、発行SQLログテーブル93において、処理に係るトランザクションIDに対応するトランザクション状態が、処理完了を表す値「0」になるように登録する。DBサーバ9は、処理結果をDBアクセス部品aに通知する。   If the result of the update process is received and the result of the update process ends normally, the DB batch update unit 6171 in the update SQL batch execution part 617 of the DB access part a sends the transaction ID related to the process to the DB server 9. A request is made to change the transaction state corresponding to to completion of processing (step S105). When the DB server 9 receives the request, the DB server 9 registers the transaction state corresponding to the transaction ID related to the process in the issued SQL log table 93 so as to have a value “0” indicating the process completion. The DB server 9 notifies the processing result to the DB access component a.

処理結果を受信し、処理結果が正常終了であれば、DBアクセス部品aの業務トランザクション制御部品619におけるCOMMIT部6193は、ステップS103の各更新SQL文についてDBトランザクションコミット(COMMIT)を、DBサーバ9に要求する(ステップS107)。DBサーバ9は、DBアクセス部品aからDBトランザクションコミットを受信すると、ユーザDBAやユーザDBBに対する更新を確定させる。そして、DBサーバ9は、処理終了をDBアクセス部品aに通知する。   If the processing result is received and the processing result is a normal end, the COMMIT unit 6193 in the business transaction control component 619 of the DB access component a performs a DB transaction commit (COMMIT) for each update SQL statement in step S103, and the DB server 9 (Step S107). When the DB server 9 receives the DB transaction commit from the DB access component a, the DB server 9 confirms the update for the user DBA and the user DBB. Then, the DB server 9 notifies the DB access component a of the end of processing.

DBアクセス部品aは、DBサーバ9から処理終了通知を受信すると、処理終了をユーザアプリケーションaに通知する(ステップS109)。ユーザアプリケーションaは、DBアクセス部品aから処理終了通知を受信すると(ステップS111)、業務処理要求に対する応答を、要求元のクライアント端末3に送信する(ステップS113)。   When receiving the process end notification from the DB server 9, the DB access component a notifies the user application a of the end of the process (step S109). When the user application a receives a process end notification from the DB access component a (step S111), the user application a transmits a response to the business process request to the requesting client terminal 3 (step S113).

正常に処理が完了した場合には、以上のような処理が実施される。全ての処理が正常に完了していれば、更新SQL文のROLLBACK(ロールバック)及び発行SQLログテーブル93に対する登録分だけ処理が重くなるが、以下に説明するように、正常終了しなかった場合に、大きなメリットが生ずる。   When the processing is normally completed, the above processing is performed. If all the processing is completed normally, the processing will be heavier by the amount registered in the ROLLBACK (rollback) of the updated SQL statement and the issued SQL log table 93. However, as described below, if the processing does not end normally There are significant benefits.

次に、ユーザアプリケーションcが呼び出された後にエラーが発生する場合について、図17及び図18を用いて説明する。具体的には、端子B以降の処理を説明する。   Next, a case where an error occurs after the user application c is called will be described with reference to FIGS. 17 and 18. Specifically, the processing after the terminal B will be described.

まず、ユーザアプリケーションaは、業務処理要求に応じてAPサーバCのユーザアプリケーションcに処理を依頼しなければならない場合には、必要なデータ及びトランザクションIDを含むユーザアプリケーションc呼出を、APサーバCに送信する(ステップS121)。APサーバCのユーザアプリケーションcは、APサーバAから必要なデータ及びトランザクションIDを含むユーザアプリケーションc呼出を受信し、トランザクションIDをメインメモリなどの記憶装置に格納する(ステップS123)。   First, when the user application a has to request the user application c of the AP server C in response to the business process request, the user application c calls the user application c including the necessary data and transaction ID to the AP server C. Transmit (step S121). The user application c of the AP server C receives the user application c call including necessary data and transaction ID from the AP server A, and stores the transaction ID in a storage device such as a main memory (step S123).

そして、ユーザアプリケーションcは、所定の業務処理を実施する(ステップS125)。この所定の業務処理においてDBサーバ9が管理するユーザDBAやユーザDBBに保持されたデータの更新が必要になると、トランザクションIDを含むDB更新依頼をDBアクセス部品cに出力する(ステップS127)。ユーザアプリケーションcの処理は端子Eを介して図18の処理に移行する。   Then, the user application c performs a predetermined business process (step S125). When it is necessary to update the data held in the user DBA or the user DBB managed by the DB server 9 in this predetermined business process, a DB update request including a transaction ID is output to the DB access component c (step S127). The process of the user application c shifts to the process of FIG.

DBアクセス部品cは、ユーザアプリケーションcからトランザクションIDを含むDB更新依頼を受信すると(ステップS129)、当該DBアクセス部品c(更新対象のDB(テーブルとも呼ぶ)用のユーザDBアクセス部品の更新SQL発行部)は、排他エラーが発生しないことを確認するために、同一テーブル・同一レコードへの仕掛処理の有無を確認する依頼を、DBサーバ9に対して送信する(ステップS131)。具体的には、更新SQL文を構成するために必要なデータのうち更新対象テーブル名及び更新対象レコードを特定するための条件節を用いて、発行SQLログテーブル93を検索するように、DBサーバ9に依頼する。DBサーバ9は、発行SQLログテーブル93における更新対象テーブル及び更新対象特定キーを、受信した更新対象テーブル名及び更新対象レコードを特定するための条件節に基づき検索する。この検索結果によって、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在するか否か、そして存在する場合にはトランザクション状態が仕掛中を表す「1」であるかを判断する。判断するのはDBサーバ9でもよいし、DBアクセス部品cであってもよい。   When the DB access component c receives a DB update request including a transaction ID from the user application c (step S129), the user DB access component update SQL issue for the DB access component c (DB to be updated (also referred to as a table)) is issued. In order to confirm that an exclusive error does not occur, the part) transmits a request to the DB server 9 to confirm whether or not there is an in-process process for the same table and the same record (step S131). Specifically, the DB server is configured to search the issued SQL log table 93 using the condition clause for specifying the update target table name and the update target record among the data necessary for configuring the update SQL statement. 9 The DB server 9 searches the update target table and the update target specifying key in the issued SQL log table 93 based on the received update target table name and the conditional clause for specifying the update target record. Based on this search result, it is determined whether or not there is another transaction that is updating the same table and the same record, and if there is, it is determined whether the transaction state is “1” indicating that the transaction is in progress. The determination may be made by the DB server 9 or the DB access component c.

ステップS131で、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在し、且つトランザクション状態が仕掛中を表す「1」である場合には(ステップS133:Yesルート)、DBアクセス部品cは、ユーザアプリケーションcに対して排他エラーを通知する。ユーザアプリケーションcは、DBアクセス部品cから排他エラーを受信すると(ステップS135)、これ以上の処理は実施できない。処理は端子Fを介して図18の処理に移行する。   In step S131, if there is another transaction that is updating the same table and the same record and the transaction state is “1” indicating that the transaction is in progress (step S133: Yes route), the DB access component c is The exclusive error is notified to the user application c. When the user application c receives an exclusion error from the DB access component c (step S135), the user application c cannot perform any further processing. The processing shifts to the processing in FIG.

一方、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在せず、又は存在する場合であってもトランザクション状態が完了状態を表している場合には(ステップS133:Noルート)、DBアクセス部品c(ユーザDBアクセス部品の更新SQL発行部)は、さらに、DBサーバ9に対して、受信したトランザクションIDで発行SQLログテーブル93を検索するように依頼する。DBサーバ9は、トランザクションIDを含む依頼を受信し、発行SQLログテーブル93を検索し、該当するレコードの発行SQLシーケンス番号を抽出する。DBサーバ9は、例えば発行SQLシーケンス番号のうち最も大きな番号を、DBアクセス部品cに送信する。抽出された全ての発行SQLシーケンス番号をDBアクセス部品cに出力するようにしても良い。DBアクセス部品c(ユーザDBアクセス部品の更新SQL発行部)は、例えば発行SQLシーケンス番号のうち最も大きな番号を受信すると、当該最も大きな発行SQLシーケンス番号を1インクリメントして、今回用いる発行SQLシーケンス番号を発行する(ステップS137)。   On the other hand, if there is no other transaction that is attempting to update the same table and the same record, or the transaction state indicates a completed state even if it exists (step S133: No route), DB access The component c (user DB access component update SQL issuing unit) further requests the DB server 9 to search the issued SQL log table 93 with the received transaction ID. The DB server 9 receives the request including the transaction ID, searches the issue SQL log table 93, and extracts the issue SQL sequence number of the corresponding record. For example, the DB server 9 transmits the largest number among the issued SQL sequence numbers to the DB access component c. All the issued SQL sequence numbers extracted may be output to the DB access component c. For example, when the DB access component c (user DB access component update SQL issuing unit) receives the largest number of the issued SQL sequence numbers, the largest issued SQL sequence number is incremented by 1, and the issued SQL sequence number used this time Is issued (step S137).

そして、DBアクセス部品cは、DB更新依頼に基づく更新SQL文をDBサーバ9に対して発行する(ステップS139)。DBサーバ9は、DBアクセス部品cから更新SQL文を受信すると、更新SQL文に基づき、ユーザDBの仮の更新を実施しようとする。処理は端子Gを介して図18の処理に移行する。   Then, the DB access component c issues an update SQL sentence based on the DB update request to the DB server 9 (step S139). When the DB server 9 receives the update SQL statement from the DB access component c, the DB server 9 attempts to perform a temporary update of the user DB based on the update SQL statement. The processing shifts to the processing in FIG.

図18の処理の説明に移行して、DBサーバ9は、更新SQL文による更新処理の結果をDBアクセス部品cに通知する。DBアクセス部品c(ユーザDBアクセス部品の更新SQL発行部)は、DBサーバ9から、更新SQL文による更新処理の結果を受信し、エラーが発生したか判断する(ステップS141)。エラーが発生していれば、DBアクセス部品cは、エラーをユーザアプリケーションcに出力する(ステップS142)。ユーザアプリケーションcは、DBアクセス部品cからエラーを受信すると(ステップS143)、ステップS153に移行する。すなわち、念のためROLLBACK(ロールバック)を実行する。   Shifting to the description of the processing in FIG. 18, the DB server 9 notifies the DB access component c of the result of the update processing by the update SQL statement. The DB access component c (user DB access component update SQL issuing unit) receives the result of the update process by the update SQL statement from the DB server 9, and determines whether an error has occurred (step S141). If an error has occurred, the DB access component c outputs the error to the user application c (step S142). When the user application c receives an error from the DB access component c (step S143), the user application c proceeds to step S153. That is, ROLLBACK (rollback) is executed just in case.

一方、DBアクセス部品c(ユーザDBアクセス部品の発行SQL待避部)は、エラー発生がなかった場合又はステップS142の後に、後に解析などで利用するために、トランザクションID、発行SQLシーケンス番号、更新SQL文、更新対象テーブル名(DB名)、更新対象特定キー、SQL実行結果(成功又は失敗など)、及び仕掛中を表す「1」であるトランザクション状態を含む更新SQL文の登録要求を、DBサーバ9に送信する(ステップS145)。DBサーバ9は、上で述べたような更新SQLの登録要求を受信し、発行SQLログテーブル93に登録する。そして、DBサーバ9は、処理結果をDBアクセス部品cに返信する。   On the other hand, the DB access component c (the user DB access component issuance SQL saving unit) is used for analysis or the like after the occurrence of an error or after step S142, in order to use the transaction ID, issue SQL sequence number, update SQL, etc. An update SQL statement registration request including a statement, an update target table name (DB name), an update target specifying key, an SQL execution result (success or failure), and a transaction status of “1” indicating that the work is in progress is sent to the DB server. 9 (step S145). The DB server 9 receives the update SQL registration request as described above, and registers it in the issued SQL log table 93. Then, the DB server 9 returns the processing result to the DB access component c.

DBアクセス部品c(ユーザDBアクセス部品の発行SQL待避部)は、処理結果をDBサーバ9から受信すると、処理結果がエラー発生を表しているか判断する(ステップS147)。ステップS141も含めてエラーが発生していない場合には、正常終了と同じなので端子Cを介して図15の処理に移行する。なお、ステップS145が成功した場合には、即時コミット(COMMIT)される。一方、ステップS139ではエラーが発生したがステップS145ではエラーは発生しなかった場合には、図には示していないが、DBアクセス部品cは、ユーザアプリケーションcにステップS145の処理が正常に終了したことを通知する。ユーザアプリケーションcでは、ステップS153に移行する。   When the DB access component c (user DB access component issuance SQL saving unit) receives the processing result from the DB server 9, the DB access component c determines whether the processing result indicates an error occurrence (step S147). If no error has occurred including step S141, the process is the same as the normal end, and the process proceeds to the process in FIG. If step S145 is successful, an immediate commit (COMMIT) is performed. On the other hand, if an error has occurred in step S139 but no error has occurred in step S145, the DB access component c has successfully completed the process in step S145 for the user application c, although not shown in the figure. Notify that. In the user application c, the process proceeds to step S153.

一方、ステップS145でエラーが発生した場合には、DBアクセス部品c(ユーザDBアクセス部品の発行SQL待避部)は、ユーザアプリケーションcに対してエラーを出力する(ステップS149)。ユーザアプリケーションcは、DBアクセス部品cからエラーを受信する(ステップS151)。そして、ステップS151又はステップS143の後に、ユーザアプリケーションcのROLLBACK部は、DBアクセス部品cにDBトランザクションロールバック(ROLLBACK)を依頼する(ステップS153)。ステップS139で更新処理に失敗している場合についても、念のため、ステップS153を実行する。   On the other hand, when an error occurs in step S145, the DB access component c (user DB access component issuance SQL saving unit) outputs an error to the user application c (step S149). The user application c receives an error from the DB access component c (step S151). Then, after step S151 or step S143, the ROLLBACK unit of the user application c requests a DB transaction rollback (ROLLBACK) from the DB access component c (step S153). Even in the case where the update process has failed in step S139, step S153 is executed just in case.

DBアクセス部品cの業務トランザクション制御部品におけるROLLBACK部は、ユーザアプリケーションcからのDBトランザクションロールバックの依頼を受信し、DBトランザクションロールバックを実施する(ステップS155)。すなわち、ステップS139でDBサーバ9に実行させたユーザDBの更新を、取り消して元の状態に戻すようにDBサーバ9に依頼する。DBサーバ9は、DBアクセス部品cの業務トランザクション制御部品におけるROLLBACK部からのロールバック依頼に応じて、ユーザDBの更新を取り消して元の状態に戻す。DBサーバ9は、ロールバック完了の通知をDBアクセス部品cに送信する。DBアクセス部品cは、DBサーバ9からロールバック完了通知を受信すると、ユーザアプリケーションcにロールバック完了通知をさらに送信する。   The ROLLBACK unit in the business transaction control component of the DB access component c receives the DB transaction rollback request from the user application c, and executes the DB transaction rollback (step S155). That is, the DB server 9 is requested to cancel the update of the user DB executed by the DB server 9 in step S139 and restore the original state. In response to a rollback request from the ROLLBACK unit in the business transaction control component of the DB access component c, the DB server 9 cancels the update of the user DB and returns it to the original state. The DB server 9 transmits a rollback completion notification to the DB access component c. Upon receiving the rollback completion notification from the DB server 9, the DB access component c further transmits a rollback completion notification to the user application c.

このようにすれば、いずれかの段階にてエラーが発生していても、ユーザDBAやユーザDBBは、元の状態に戻されているので、個別の取消処理は用意しておく必要もなく且つ実行する必要もない。   In this way, even if an error occurs at any stage, the user DBA and the user DBB are restored to the original state, so there is no need to prepare an individual cancellation process and There is no need to execute.

ユーザアプリケーションcは、DBアクセス部品cからロールバック完了通知を受信すると、呼出元のユーザアプリケーションaにエラー通知を送信する(ステップS157)。ユーザアプリケーションaは、ユーザアプリケーションcからエラー通知を受信すると(ステップS159)、以下の業務処理を行うことはできない。従って、ユーザアプリケーションaのROLLBACK部は、DBアクセス部品aにDBトランザクションロールバック(ROLLBACK)を依頼する(ステップS161)。DBアクセス部品aの業務トランザクション制御部品619におけるROLLBACK部6191は、ユーザアプリケーションaからのDBトランザクションロールバックの依頼を受信し、DBトランザクションロールバックを実施する(ステップS163)。すなわち、ステップS23でDBサーバ9に実行させたユーザDBの更新を、取り消して元の状態に戻すようにDBサーバ9に依頼する。DBサーバ9は、DBアクセス部品aの業務トランザクション制御部品619におけるROLLBACK部6191からのロールバック依頼に応じて、ユーザDBの更新を取り消して元の状態に戻す。DBサーバ9は、ロールバック完了の通知をDBアクセス部品aに送信する。DBアクセス部品aは、DBサーバ9からロールバック完了通知を受信すると、ユーザアプリケーションaにロールバック完了通知をさらに送信する。   When receiving the rollback completion notification from the DB access component c, the user application c transmits an error notification to the calling user application a (step S157). When the user application a receives an error notification from the user application c (step S159), the user application a cannot perform the following business process. Accordingly, the ROLLBACK unit of the user application a requests the DB access component a to perform a DB transaction rollback (ROLLBACK) (step S161). The ROLLBACK unit 6191 in the business transaction control component 619 of the DB access component a receives the request for the DB transaction rollback from the user application a, and performs the DB transaction rollback (step S163). That is, the DB server 9 is requested to cancel the update of the user DB executed by the DB server 9 in step S23 and restore the original state. In response to the rollback request from the ROLLBACK unit 6191 in the business transaction control component 619 of the DB access component a, the DB server 9 cancels the update of the user DB and returns it to the original state. The DB server 9 transmits a rollback completion notification to the DB access component a. Upon receiving the rollback completion notification from the DB server 9, the DB access component a further transmits a rollback completion notification to the user application a.

さらに、例えばユーザアプリケーションaの一括COMMIT処理呼出部615は、トランザクションIDを含むDB更新キャンセル要求をDBアクセス部品aに出力する(ステップS165)。DBアクセス部品aの更新SQL一括実行部品617は、トランザクションIDを含むDB更新キャンセル要求を受信すると(ステップS167)、DBサーバ9に対して、発行SQLログテーブル93においてトランザクションIDに係るレコードのトランザクション状態が処理完了を表す値「0」になるように登録を要求する(ステップS169)。DBサーバ9は、要求に応じて、発行SQLログテーブル93に、トランザクションIDに係るレコードのトランザクション状態が処理完了を表す値「0」になるように登録する。この処理についても即時COMMITである。そして、DBアクセス部品aは、処理完了をユーザアプリケーションaに通知する。なお、発行SQLログテーブル93には、更新SQL文に従った更新処理でエラーが発生した場合にはSQL実行結果にその旨登録されるが、その他の部分でエラーが発生した場合には、別途この段階にて発行SQLログテーブル93に登録するようにしても良い。なお、本ステップを実行することによって、同一テーブル且つ同一レコードに対する更新が他のトランザクションで発生しても排他エラーが生じなくなる。   Furthermore, for example, the collective COMMIT process calling unit 615 of the user application a outputs a DB update cancel request including the transaction ID to the DB access component a (step S165). When the update SQL batch execution component 617 of the DB access component a receives the DB update cancel request including the transaction ID (step S167), the transaction status of the record relating to the transaction ID in the issued SQL log table 93 is sent to the DB server 9. Registration is requested so that becomes a value “0” indicating the completion of processing (step S169). In response to the request, the DB server 9 registers in the issued SQL log table 93 so that the transaction state of the record relating to the transaction ID becomes a value “0” indicating the completion of processing. This processing is also immediate COMMIT. Then, the DB access component a notifies the user application a of the completion of processing. In the issue SQL log table 93, if an error occurs in the update process according to the update SQL statement, that is registered in the SQL execution result, but if an error occurs in the other part, At this stage, it may be registered in the issued SQL log table 93. By executing this step, an exclusion error does not occur even if an update to the same table and the same record occurs in another transaction.

ユーザアプリケーションaは、処理完了をDBアクセス部品aから受信し、業務処理要求に対してエラーが発生した旨の通知を、要求元のクライアント端末3に送信する(ステップS171)。   The user application a receives the completion of processing from the DB access component a, and sends a notification to the effect that an error has occurred in response to the business process request to the client terminal 3 that is the request source (step S171).

このように、更新SQL文による更新処理が、ロールバック(ROLLBACK)によって一旦元に戻されるため、他の処理部分でエラーが発生しても、複雑な取消処理を実施する必要が無く、ユーザDBに影響を残すことなく、他のトランザクション処理に移行することができるようになる。   In this way, the update process using the update SQL statement is temporarily restored by rollback (ROLLBACK), so even if an error occurs in another process part, there is no need to perform a complicated cancel process, and the user DB It becomes possible to shift to other transaction processing without leaving an influence on the transaction.

以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で述べた例では、発行SQLログテーブル93において、トランザクション状態を管理するようになっているが、トランザクション状態が「仕掛中」であれば発行SQLログテーブル93にレコードを登録しておき、「処理完了」であれば発行SQLテーブル93からレコードを削除するようにしてもよい。この場合には、レコードが残らないので、後にエラーの解析などを行うことができないようになる。   Although one embodiment of the present invention has been described above, the present invention is not limited to this. For example, in the example described above, the transaction status is managed in the issue SQL log table 93. If the transaction status is “in progress”, a record is registered in the issue SQL log table 93 in advance. If “processing complete”, the record may be deleted from the issued SQL table 93. In this case, since no record remains, it becomes impossible to analyze an error later.

また、図1及び図2による機能ブロック構成は一例であって、必ずしも実際のプログラム構成と一致しない場合もある。   Moreover, the functional block configuration shown in FIGS. 1 and 2 is an example, and may not necessarily match the actual program configuration.

さらに、処理フローについても、処理結果が変わらない限りにおいて、処理順番を入れ替えるようにしても良い。例えば、上で述べた処理フローでは、APサーバAについてのロールバック処理は、他のユーザアプリケーションを呼び出した後に実施するようになっているが、DBアクセス部品aから処理完了が通知される毎にロールバックを実施させるようにしても良い。   Further, regarding the processing flow, the processing order may be changed as long as the processing result does not change. For example, in the processing flow described above, the rollback processing for the AP server A is performed after calling another user application, but every time processing completion is notified from the DB access component a. Rollback may be performed.

なお、APサーバやクライアント端末、DBサーバについては、図19に示すように、メモリ2501(記憶部)とCPU2503(処理部)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。OS及びWebブラウザを含むアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。このようなコンピュータは、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。   As for the AP server, client terminal, and DB server, as shown in FIG. A unit 2507, a drive device 2513 for a removable disk 2511, an input device 2515, and a communication control unit 2517 for connecting to a network are connected by a bus 2519. Application programs including the OS and the Web browser are stored in the HDD 2505, and are read from the HDD 2505 to the memory 2501 when executed by the CPU 2503. If necessary, the CPU 2503 controls the display control unit 2507, the communication control unit 2517, and the drive device 2513 to perform necessary operations. Further, data in the middle of processing is stored in the memory 2501 and stored in the HDD 2505 if necessary. Such a computer realizes various functions as described above by organically cooperating hardware such as the CPU 2503 and the memory 2501 described above with the OS and necessary application programs.

(付記1)
関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するためのプログラムであって、
前記業務プログラムを実行するコンピュータに、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行するステップと、
前記業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、前記トランザクションIDに対応して前記第1の更新命令を発行命令ログテーブルに登録し、前記第1の更新命令による更新処理の成否を問わず前記第1の更新命令のキャンセル命令を前記データベースに出力する処理ステップと、
前記業務処理要求に対する処理が正常に完了した場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている前記第1の更新命令を前記データベースに出力し、さらに前記第1の更新命令による更新を確定させるコミット命令を前記データベースに出力する確定ステップと、
を実行させるためのプログラム。
(Appendix 1)
A program for ensuring data consistency in a plurality of database update processes executed in response to one business process request by a plurality of related business process programs,
In a computer that executes the business program,
Issuing a unique transaction ID in response to a business processing request from a business processing client;
In response to a first database update request from any one of the business process programs that process the business process request, a first update instruction based on the first database update request is output to the database and corresponds to the transaction ID Processing to register the first update instruction in the issuance instruction log table, and to output a cancel instruction of the first update instruction to the database regardless of success or failure of the update process by the first update instruction;
When the processing for the business process request is normally completed, the first update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is sent to the first update command. A confirmation step of outputting to the database a commit instruction for outputting to the database and further confirming an update by the first update instruction;
A program for running

(付記2)
前記業務処理要求に対する処理が正常に完了しなかった場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている更新命令の破棄、又は、当該更新命令を無効にするデータの前記発行命令ログテーブルへの登録の少なくともいずれかを実行するエラー処理ステップ
をさらに前記コンピュータに実行させるための付記1記載のプログラム。
(Appendix 2)
When the process for the business process request is not completed normally, the update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is discarded, or The program according to appendix 1, for causing the computer to further execute an error processing step of executing at least one of registration of data for invalidating the update instruction in the issued instruction log table.

(付記3)
前記第1処理ステップにおいて
前記データベースに更新命令を出力する前に、前記発行命令ログテーブルを参照して同一テーブル且つ同一レコードに対する更新命令が有効に保持されているか判断し、
前記エラー処理ステップにおいて、前記処理ステップにより前記発行命令ログテーブルに同一テーブル且つ同一レコードに対するデータベース更新要求が有効に保持されていると判断された場合に、前記業務処理要求に対する処理が正常に完了しなかったものとして、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている更新命令の破棄、または、当該更新命令を無効にするデータの前記発行命令ログテーブルへの登録の少なくともいずれかを実行する。
付記2記載のプログラム。
(Appendix 3)
In the first processing step, before outputting an update command to the database, it is determined whether an update command for the same table and the same record is effectively held with reference to the issued command log table,
In the error processing step, when it is determined by the processing step that the database update request for the same table and the same record is effectively held in the issued command log table, the processing for the business processing request is normally completed. The update command registered in the issued command log table corresponding to the transaction ID issued in response to the business process request is discarded, or the data that invalidates the update command is issued. Execute at least one of registration in the instruction log table.
The program described in Appendix 2.

(付記4)
関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するための方法であって、
前記業務プログラムを実行するコンピュータが、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行するステップと、
前記業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、前記トランザクションIDに対応して前記第1の更新命令を発行命令ログテーブルに登録し、前記第1の更新命令による更新処理の成否を問わず前記第1の更新命令のキャンセル命令を前記データベースに出力する処理ステップと、
前記業務処理要求に対する処理が正常に完了した場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている前記第1の更新命令を前記データベースに出力し、さらに前記第1の更新命令による更新を確定させるコミット命令を前記データベースに出力する確定ステップと、
を実行する方法。
(Appendix 4)
A method for ensuring data consistency in a plurality of database update processes executed in response to one business process request by a plurality of related business process programs,
A computer that executes the business program,
Issuing a unique transaction ID in response to a business processing request from a business processing client;
In response to a first database update request from any one of the business process programs that process the business process request, a first update instruction based on the first database update request is output to the database and corresponds to the transaction ID Processing to register the first update instruction in the issuance instruction log table, and to output a cancel instruction of the first update instruction to the database regardless of success or failure of the update process by the first update instruction;
When the processing for the business process request is normally completed, the first update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is sent to the first update command. A confirmation step of outputting to the database a commit instruction for outputting to the database and further confirming an update by the first update instruction;
How to run.

(付記5)
関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するための処理を行うコンピュータ・システムであって、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行する手段と、
前記業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、前記トランザクションIDに対応して前記第1の更新命令を発行命令ログテーブルに登録し、前記第1の更新命令による更新処理の成否を問わず前記第1の更新命令のキャンセル命令を前記データベースに出力する処理手段と、
前記業務処理要求に対する処理が正常に完了した場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている前記第1の更新を前記データベースに出力し、さらに前記第1の更新命令による更新を確定させるコミット命令を前記データベースに出力する確定手段と、
を有するコンピュータ・システム。
(Appendix 5)
A computer system that performs processing for ensuring data consistency in a plurality of database update processing executed in response to one business processing request by a plurality of related business processing programs,
A means for issuing a unique transaction ID in response to a business processing request from a business processing client;
In response to a first database update request from any one of the business process programs that process the business process request, a first update instruction based on the first database update request is output to the database and corresponds to the transaction ID Processing means for registering the first update instruction in an issuance instruction log table and outputting a cancel instruction for the first update instruction to the database regardless of whether or not the update process by the first update instruction is successful;
When the processing for the business process request is normally completed, the first update registered in the issue command log table corresponding to the transaction ID issued for the business process request is stored in the database. And a committing means for outputting to the database a commit command for confirming an update by the first update command;
A computer system.

本発明の実施の形態におけるシステム概要図である。It is a system outline figure in an embodiment of the invention. DBアクセス部品の機能ブロック図である。It is a functional block diagram of DB access parts. 発行SQLログテーブルのデータ構造を説明するための図である。It is a figure for demonstrating the data structure of an issue SQL log table. 本発明の実施の形態の処理を説明するための模式図1である。It is the schematic diagram 1 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図2である。It is the schematic diagram 2 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図3である。It is the schematic diagram 3 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図4である。It is the schematic diagram 4 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図5である。It is the schematic diagram 5 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図6である。It is the schematic diagram 6 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図7である。FIG. 7 is a schematic diagram for explaining the processing according to the embodiment of the present invention. 本発明の実施の形態の処理を説明するための模式図8である。It is the schematic diagram 8 for demonstrating the process of embodiment of this invention. 本発明の実施の形態の処理を説明するための模式図9である。It is the schematic diagram 9 for demonstrating the process of embodiment of this invention. 本発明の実施の形態における詳細処理の処理フローを示す図である。It is a figure which shows the processing flow of the detailed process in embodiment of this invention. 本発明の実施の形態における詳細処理の処理フローを示す図である。It is a figure which shows the processing flow of the detailed process in embodiment of this invention. 本発明の実施の形態における詳細処理の処理フローを示す図である。It is a figure which shows the processing flow of the detailed process in embodiment of this invention. 本発明の実施の形態における詳細処理の処理フローを示す図である。It is a figure which shows the processing flow of the detailed process in embodiment of this invention. 本発明の実施の形態における詳細処理の処理フローを示す図である。It is a figure which shows the processing flow of the detailed process in embodiment of this invention. 本発明の実施の形態における詳細処理の処理フローを示す図である。It is a figure which shows the processing flow of the detailed process in embodiment of this invention. コンピュータの機能ブロック図である。It is a functional block diagram of a computer.

符号の説明Explanation of symbols

1,7 ネットワーク 3 クライアント端末
5 APサーバ 9 DBサーバ
93 発行SQLログテーブル
1, 7 Network 3 Client terminal 5 AP server 9 DB server 93 Issued SQL log table

Claims (5)

関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するためのプログラムであって、
前記業務プログラムを実行するコンピュータに、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行するステップと、
前記業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、前記トランザクションIDに対応して前記第1の更新命令を発行命令ログテーブルに登録し、前記第1の更新命令による更新処理の成否を問わず前記第1の更新命令のキャンセル命令を前記データベースに出力する処理ステップと、
前記業務処理要求に対する処理が正常に完了した場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている前記第1の更新命令を前記データベースに出力し、さらに前記第1の更新命令による更新を確定させるコミット命令を前記データベースに出力する確定ステップと、
を実行させるためのプログラム。
A program for ensuring data consistency in a plurality of database update processes executed in response to one business process request by a plurality of related business process programs,
In a computer that executes the business program,
Issuing a unique transaction ID in response to a business processing request from a business processing client;
In response to a first database update request from any one of the business process programs that process the business process request, a first update instruction based on the first database update request is output to the database and corresponds to the transaction ID Processing to register the first update instruction in the issuance instruction log table, and to output a cancel instruction of the first update instruction to the database regardless of success or failure of the update process by the first update instruction;
When the processing for the business process request is normally completed, the first update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is sent to the first update command. A confirmation step of outputting to the database a commit instruction for outputting to the database and further confirming an update by the first update instruction;
A program for running
前記業務処理要求に対する処理が正常に完了しなかった場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている更新命令の破棄、又は、当該更新命令を無効にするデータの前記発行命令ログテーブルへの登録の少なくともいずれかを実行するエラー処理ステップ
をさらに前記コンピュータに実行させるための請求項1記載のプログラム。
When the process for the business process request is not completed normally, the update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is discarded, or The program according to claim 1, further causing the computer to execute an error processing step of executing at least one of registration of data for invalidating the update instruction in the issued instruction log table.
前記第1処理ステップにおいて
前記データベースに更新命令を出力する前に、前記発行命令ログテーブルを参照して同一テーブル且つ同一レコードに対する更新命令が有効に保持されているか判断し、
前記エラー処理ステップにおいて、前記処理ステップにより前記発行命令ログテーブルに同一テーブル且つ同一レコードに対するデータベース更新要求が有効に保持されていると判断された場合に、前記業務処理要求に対する処理が正常に完了しなかったものとして、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている更新命令の破棄、または、当該更新命令を無効にするデータの前記発行命令ログテーブルへの登録の少なくともいずれかを実行する。
請求項2記載のプログラム。
In the first processing step, before outputting an update command to the database, it is determined whether an update command for the same table and the same record is effectively held with reference to the issued command log table,
In the error processing step, when it is determined by the processing step that the database update request for the same table and the same record is effectively held in the issued command log table, the processing for the business processing request is normally completed. The update command registered in the issued command log table corresponding to the transaction ID issued in response to the business process request is discarded, or the data that invalidates the update command is issued. Execute at least one of registration in the instruction log table.
The program according to claim 2.
関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するための方法であって、
前記業務プログラムを実行するコンピュータが、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行するステップと、
前記業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、前記トランザクションIDに対応して前記第1の更新命令を発行命令ログテーブルに登録し、前記第1の更新命令による更新処理の成否を問わず前記第1の更新命令のキャンセル命令を前記データベースに出力する処理ステップと、
前記業務処理要求に対する処理が正常に完了した場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている前記第1の更新命令を前記データベースに出力し、さらに前記第1の更新命令による更新を確定させるコミット命令を前記データベースに出力する確定ステップと、
を実行する方法。
A method for ensuring data consistency in a plurality of database update processes executed in response to one business process request by a plurality of related business process programs,
A computer that executes the business program,
Issuing a unique transaction ID in response to a business processing request from a business processing client;
In response to a first database update request from any one of the business process programs that process the business process request, a first update instruction based on the first database update request is output to the database and corresponds to the transaction ID Processing to register the first update instruction in the issuance instruction log table, and to output a cancel instruction of the first update instruction to the database regardless of success or failure of the update process by the first update instruction;
When the processing for the business process request is normally completed, the first update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is sent to the first update command. A confirmation step of outputting to the database a commit instruction for outputting to the database and further confirming an update by the first update instruction;
How to run.
関連を有する複数の業務処理プログラムによって1の業務処理要求に応じて実行される複数のデータベース更新処理におけるデータ整合性を確保するための処理を行うコンピュータ・システムであって、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクションIDを発行する手段と、
前記業務処理要求を処理するいずれかの業務処理プログラムからの第1のデータベース更新要求に応じて、当該第1のデータベース更新要求に基づく第1の更新命令をデータベースに出力し、前記トランザクションIDに対応して前記第1の更新命令を発行命令ログテーブルに登録し、前記第1の更新命令による更新処理の成否を問わず前記第1の更新命令のキャンセル要求を前記データベースに出力する処理手段と、
前記業務処理要求に対する処理が正常に完了した場合には、前記業務処理要求に対して発行された前記トランザクションIDに対応して前記発行命令ログテーブルに登録されている前記第1の更新命令を前記データベースに出力し、さらに前記第1の更新命令による更新を確定させるコミット命令を前記データベースに出力する確定手段と、
を有するコンピュータ・システム。
A computer system that performs processing for ensuring data consistency in a plurality of database update processing executed in response to one business processing request by a plurality of related business processing programs,
A means for issuing a unique transaction ID in response to a business processing request from a business processing client;
In response to a first database update request from any one of the business process programs that process the business process request, a first update instruction based on the first database update request is output to the database and corresponds to the transaction ID Processing means for registering the first update instruction in the issued instruction log table and outputting a cancellation request for the first update instruction to the database regardless of success or failure of the update process by the first update instruction;
When the processing for the business process request is normally completed, the first update command registered in the issued command log table corresponding to the transaction ID issued for the business process request is sent to the first update command. Confirming means for outputting to the database a commit instruction for outputting to the database and further confirming the update by the first update instruction;
A computer system.
JP2008011576A 2008-01-22 2008-01-22 Program, method and computer system for ensuring data integrity Active JP5109676B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008011576A JP5109676B2 (en) 2008-01-22 2008-01-22 Program, method and computer system for ensuring data integrity

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008011576A JP5109676B2 (en) 2008-01-22 2008-01-22 Program, method and computer system for ensuring data integrity

Publications (2)

Publication Number Publication Date
JP2009175854A true JP2009175854A (en) 2009-08-06
JP5109676B2 JP5109676B2 (en) 2012-12-26

Family

ID=41030902

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008011576A Active JP5109676B2 (en) 2008-01-22 2008-01-22 Program, method and computer system for ensuring data integrity

Country Status (1)

Country Link
JP (1) JP5109676B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011099082A1 (en) * 2010-02-15 2011-08-18 株式会社 東芝 Database management system
JP2012238061A (en) * 2011-05-10 2012-12-06 Nec Corp Transaction processing device, transaction processing method, and transaction processing program
JPWO2015097991A1 (en) * 2013-12-24 2017-03-23 日本電気株式会社 Transaction distributed processing apparatus, method, system, and storage medium

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101770066B1 (en) * 2016-06-20 2017-08-21 티쓰리큐 주식회사 Method and system for real time tracking and analysing business transaction using application call log in distributed system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63262737A (en) * 1987-04-20 1988-10-31 Fujitsu Ltd Data base updating and recording processing method
JPH01112448A (en) * 1987-10-27 1989-05-01 Nec Corp System for updating file
JP2001101053A (en) * 1999-09-30 2001-04-13 Toshiba Corp Method and device for managing transaction
WO2006057061A1 (en) * 2004-11-29 2006-06-01 Fujitsu Limited Distributed transaction processing method, device, and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63262737A (en) * 1987-04-20 1988-10-31 Fujitsu Ltd Data base updating and recording processing method
JPH01112448A (en) * 1987-10-27 1989-05-01 Nec Corp System for updating file
JP2001101053A (en) * 1999-09-30 2001-04-13 Toshiba Corp Method and device for managing transaction
WO2006057061A1 (en) * 2004-11-29 2006-06-01 Fujitsu Limited Distributed transaction processing method, device, and program

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011099082A1 (en) * 2010-02-15 2011-08-18 株式会社 東芝 Database management system
CN102754083A (en) * 2010-02-15 2012-10-24 东芝解决方案株式会社 Database management system
JP2012238061A (en) * 2011-05-10 2012-12-06 Nec Corp Transaction processing device, transaction processing method, and transaction processing program
JPWO2015097991A1 (en) * 2013-12-24 2017-03-23 日本電気株式会社 Transaction distributed processing apparatus, method, system, and storage medium

Also Published As

Publication number Publication date
JP5109676B2 (en) 2012-12-26

Similar Documents

Publication Publication Date Title
US20200201748A1 (en) Systems and methods for testing source code
JP5652228B2 (en) Database server device, database update method, and database update program
JP6069339B2 (en) Oracle Rewind: Metadata Driven Undo
WO2011039826A1 (en) Method for designing failure cause analysis rule in accordance with available device information and computer
US8689179B2 (en) Transportable refactoring object
CN107193607B (en) Method and apparatus for updating code file, storage medium, processor, and terminal
US20150222731A1 (en) Computer, guide information providing method and recording medium
US10380085B2 (en) Method, apparatus and computer program for migrating records in a database from a source database schema to a target database schema
JP2014081811A (en) Log management system and log management method
CN107038519B (en) Method and system for bidirectional data synchronization between systems
JP2014048673A (en) Workflow generation server and method
JP2014191604A5 (en)
US11157310B2 (en) Method and system for migrating XML schemas in application releases
US20200104107A1 (en) Systems and methods for deploying software products to environments
JP2017091531A (en) Exporting hierarchical data from source code management (scm) system to product lifecycle management (plm) system
CN114528008A (en) Code control method, device and medium based on distributed version control system
JP5109676B2 (en) Program, method and computer system for ensuring data integrity
CN116134420A (en) Using multiple blockchains to apply transactions to a set of persistent data objects in a persistent storage system
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
JP2009223822A (en) Source code update notifying device and source code update notifying method
US9699026B2 (en) Distributed processing system
JP2006350411A (en) Recovery method, recovery system and recovery program for distributed database
JP2016115223A (en) Database management system, database management method, and program
JP2010134574A (en) Method of changing business process definition, execution system thereof and program
JP2011227789A (en) Information processor and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120720

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: 20120911

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: 20120924

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

Free format text: PAYMENT UNTIL: 20151019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5109676

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150