JP2009175854A - Program, method and computer system for securing data consistency - Google Patents
Program, method and computer system for securing data consistency Download PDFInfo
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
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号公報には、簡単な構成により、不適切なアクセスを排除して、正しい確定処理を行って、適切なロング・トランザクション処理が行われるようガードするための技術が開示されている。具体的には、仮実行された項目を記憶する仮実行データベースと、確定された項目を記憶する確定データベースと、検索要求により上記仮実行データベース中のこの要求された項目を検索する最新データ参照機能部と、仮実行要求により上記仮実行データベース中のこの要求された項目を更新する更新仮実行機能部と、確定要求により上記確定データベース中のこの要求された項目に上記仮実行データベースの対応項目のデータをコピーする更新確定機能部と、取消要求により上記仮実行データベース中のこの要求された項目に上記確定データベースの対応項目のデータをコピーする更新取消機能部とを備えている。しかしながら、上で述べたような分散トランザクション処理を対象とはしていない。
上で述べたように、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
各APサーバ5で実行されているユーザアプリケーションは、クライアント端末3からの業務処理要求に応じて自ら必要な処理を実施すると共に、互いに連携しつつ処理を実行する。例えばユーザアプリケーションaがユーザアプリケーションbやcを呼び出して処理を依頼する場合もある。また、各ユーザアプリケーションは、DBサーバ9が管理するデータベースに対する参照及び更新が必要な場合には、それぞれ対応付けられているDBアクセス部品(図1の例では、DBアクセス部品a、DBアクセス部品b、DBアクセス部品c)を利用するようになっている。
The user application executed in each AP
本実施の形態では、DBサーバ9は、ユーザDBAとユーザDBBを管理しており、本実施の形態のための発行SQL(Structured Query Language)ログテーブル93も併せて管理している。
In the present embodiment, the
図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
図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
次に、図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
その後、図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
さらに、図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
その後、図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
そして、図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
その後、図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
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
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
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
さらに、以上の処理が正常に完了した場合には、ユーザアプリケーションaの一括COMMIT処理呼出部615は、業務処理要求の送信元であるクライアント端末3に、応答通知を送信する。これによって、上記業務処理要求に対応する処理を終了する。なお、いずれかの段階で異常が発生した場合には、その段階で異常終了を応答として、業務処理要求の送信元であるクライアント端末3に返信する。
Further, when the above processing is normally completed, the collective COMMIT processing calling
このような処理を実行することにより、ユーザ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アクセス部品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アクセス部品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アクセス部品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
一方、同一テーブル且つ同一レコードを更新しようとしている他のトランザクションが存在せず、又は存在する場合であってもトランザクション状態が完了状態を表している場合には、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アクセス部品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
一方、更新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アクセス部品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
ユーザアプリケーション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アクセス部品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アクセス部品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アクセス部品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
一方、更新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アクセス部品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
そうすると、ユーザアプリケーション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
ユーザアプリケーション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アクセス部品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アクセス部品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アクセス部品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
一方、更新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アクセス部品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
そうすると、ユーザアプリケーション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
ユーザアプリケーション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
ユーザアプリケーション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
そして、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
更新処理の結果を受信し、更新処理の結果が正常終了であれば、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
処理結果を受信し、処理結果が正常終了であれば、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
DBアクセス部品aは、DBサーバ9から処理終了通知を受信すると、処理終了をユーザアプリケーションaに通知する(ステップS109)。ユーザアプリケーションaは、DBアクセス部品aから処理終了通知を受信すると(ステップS111)、業務処理要求に対する応答を、要求元のクライアント端末3に送信する(ステップS113)。
When receiving the process end notification from the
正常に処理が完了した場合には、以上のような処理が実施される。全ての処理が正常に完了していれば、更新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アクセス部品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
ステップ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アクセス部品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
図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アクセス部品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アクセス部品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
一方、ステップ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
このようにすれば、いずれかの段階にてエラーが発生していても、ユーザ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
さらに、例えばユーザアプリケーション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
ユーザアプリケーション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
このように、更新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
(付記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
(付記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
(付記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.
1,7 ネットワーク 3 クライアント端末
5 APサーバ 9 DBサーバ
93 発行SQLログテーブル
1, 7
Claims (5)
前記業務プログラムを実行するコンピュータに、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクション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
をさらに前記コンピュータに実行させるための請求項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.
前記データベースに更新命令を出力する前に、前記発行命令ログテーブルを参照して同一テーブル且つ同一レコードに対する更新命令が有効に保持されているか判断し、
前記エラー処理ステップにおいて、前記処理ステップにより前記発行命令ログテーブルに同一テーブル且つ同一レコードに対するデータベース更新要求が有効に保持されていると判断された場合に、前記業務処理要求に対する処理が正常に完了しなかったものとして、前記業務処理要求に対して発行された前記トランザクション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.
前記業務プログラムを実行するコンピュータが、
業務処理クライアントからの業務処理要求に応じて、一意のトランザクション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.
業務処理クライアントからの業務処理要求に応じて、一意のトランザクション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.
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)
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)
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)
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 |
-
2008
- 2008-01-22 JP JP2008011576A patent/JP5109676B2/en active Active
Patent Citations (4)
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)
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 |