JPWO2013008327A1 - ジャーナル管理システム - Google Patents

ジャーナル管理システム Download PDF

Info

Publication number
JPWO2013008327A1
JPWO2013008327A1 JP2013504601A JP2013504601A JPWO2013008327A1 JP WO2013008327 A1 JPWO2013008327 A1 JP WO2013008327A1 JP 2013504601 A JP2013504601 A JP 2013504601A JP 2013504601 A JP2013504601 A JP 2013504601A JP WO2013008327 A1 JPWO2013008327 A1 JP WO2013008327A1
Authority
JP
Japan
Prior art keywords
journal
unit
destination
processing
column
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
JP2013504601A
Other languages
English (en)
Other versions
JP5340507B2 (ja
Inventor
佑介 金木
佑介 金木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5340507B2 publication Critical patent/JP5340507B2/ja
Publication of JPWO2013008327A1 publication Critical patent/JPWO2013008327A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

ジャーナル出力装置100は、処理が進行している処理定義の処理定義IDが記述される、アプリケーション300での処理の進行状況を示すジャーナルを生成し、生成したジャーナル600をジャーナルファイル400(500)に書込む。ジャーナル出力装置100は、処理定義IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、ジャーナルに書出先変更通知を記述する。復旧装置200は、書出先変更通知が記述されているジャーナルの処理定義IDを書出先変更発生IDとして他の処理定義IDから区別し、共通する書出先変更発生IDの2つ以上のジャーナル列を連結して順序保証する。復旧装置200は、書出先変更発生IDの場合は、順序保証後のジャーナル列を解析し、その他の処理定義IDの場合は、順序保証なしにジャーナル列を解析する。

Description

本発明は、アプリケーションプログラム(以下、単にアプリケーションともいう)での処理の進行状況を示すジャーナルを管理する技術に関する。
アプリケーションプログラムの信頼性を向上するために、異常終了により中断した処理を再開するジャーナル方式がある。
図27及び図28は、ジャーナル方式を説明する図である。
図27は正常時の動作例を示し、図28は故障・復旧時の動作例を示す。
ジャーナル方式では、図27に示すように、複数の処理から構成されるアプリケーション802がサーバ装置805において実行されている場合に、ある処理が完了するとその時点のアプリケーションの状態とその処理が完了したことをジャーナル803としてディスクに保存(保存先のファイルをジャーナルファイルと呼ぶ)する。
図28に示すように、アプリケーションが異常終了し、クラスタミドルウェア等により系が切り替わり、予備サーバ装置806においてアプリケーションが再起動した際には、ディスクに保存されているジャーナル803から異常終了する直前に完了していた処理の識別子とその時のアプリケーションの状態が読込まれ、異常終了の直前に完了していた処理の次の処理からアプリケーションが再開する。
このような動作により、中断した処理の再開を実現する。
ジャーナル方式では、アプリケーションの処理の進捗とディスク上のジャーナルが整合している必要があるため、アプリケーションはジャーナルがディスクに完全に書き込まれてから次の処理を実行するように動作する。
そのため、ジャーナルの書きこみ性能がアプリケーションの性能へ大きく影響する。
また、復旧時にはディスクから書き出したジャーナルを読み込み、読み込んだジャーナルを解析し、異常終了の直前に完了していた処理を抽出し、異常終了の直前に完了していた処理の次の処理から再開する。
一般に、処理の順序を保つために、中断処理を再開してから新規処理を実行する必要があるため、中断処理の再開が完了してから復旧が完了となる。
そのため、ディスクからのジャーナル読込み時間やジャーナルの解析時間が復旧時間に大きく影響する。
以上のことから、ジャーナル方式ではアプリケーションの性能への影響を最小化しつつ信頼性を向上させる(復旧時間を短縮)するために、ジャーナルの書出し性能の向上、ジャーナルファイルからの読み込み及び復旧準備までの処理時間の短縮が課題となる。
特許文献1では、図29のように、ジャーナルファイルを複数用意して書出し性能の向上、読込み時間を短縮する方式が開示されている。
特許文献1では、アプリケーションの処理手順を複数の処理種別(図29では、A、B、C)に分類し、処理種別ごとに決まったジャーナルファイルへ書き出すことで、ディスク書出しを並列化し、ジャーナル書出し性能を向上している。
また、特許文献1では、処理種別ごとに独立して復旧できるように処理種別を決定し、ある処理種別のジャーナルが決まったジャーナルファイルにのみ存在するように書出先を決定している。
つまり、書出先決定部811が、処理種別Aのジャーナル及び処理種別Bのジャーナルは、ジャーナルファイル812aを書出先として決定し、処理種別Cのジャーナルは、ジャーナルファイル812bを書出先として決定する。
そして、読込部813aが処理種別Aのジャーナル及び処理種別Bのジャーナルをジャーナルファイル812aから読み込み、復旧部814aが処理種別A及び処理種別Bについての処理の復旧を行い、読込部813bが処理種別Cのジャーナルをジャーナルファイル812bから読み込み、復旧部814bが処理種別Cについての処理の復旧を行う。
これにより、あるジャーナルファイルを読み込めばそこに含まれる処理種別のジャーナルが揃い、その処理種別の処理を再開できるようにしている。
この結果、読み込んだジャーナルファイルに含まれる処理種別の処理から順次再開することで、復旧手順を並列化し復旧時間を短縮している。
しかし、特許文献1の方式では、処理種別ごとに書き出すジャーナルファイルを固定するため、処理種別と書込み先ジャーナルファイルとの関係を変更することができない。
例えば、処理種別ごとに処理の性質が異なり、処理種別A、Bは処理単位が小さく処理数が多いトランザクション系、処理種別Cは処理単位が大きく処理数が少ないバッチ系であるとする。
トランザクション系の処理のジャーナルはサイズが小さく、ディスクへの書出し時間が短い。
バッチ系の処理のジャーナルはサイズが大きく、ディスクへの書出時間が長い。
処理種別A、Bのジャーナルが一つのジャーナルファイルに書き出され、処理種別Cのジャーナルが一つのジャーナルファイルに書き出されるという構成の時、処理種別Aがある期間バッチ系の処理になった場合、処理種別Aのジャーナルの書出し性能に処理種別Bのジャーナルの書出し性能が引き摺られ遅くなる。
このような場合には、処理種別Aのジャーナルを同じくバッチ系の処理である処理種別Cの書出先ジャーナルファイルへ切り替え、全体の書出し性能のバランスを最適化する必要がある。
しかし、特許文献1の方式では、処理種別とジャーナルファイルが固定されており、このようなジャーナルファイルの切り替えには対応できないという課題がある。
一方、特許文献2では、図30のように処理種別ごとにジャーナルファイルを特定せず、複数のジャーナルファイルに書出しを振り分け、順序保証部815がジャーナルファイル812a及びジャーナルファイル812bに格納されているジャーナルを処理種別ごとに分類して順序保証を行う方式が開示されている。
しかし、この方式では、ジャーナル書出し性能の向上とジャーナルファイルの変更が実現できるが、ジャーナルが全てのジャーナルファイルに分散して書き込まれているため、復旧時には全てのジャーナルファイルを読み込む必要があり、ジャーナルファイルの読込みを並列化して読込み時間を短縮することができないという課題がある。
特開平5−225024号公報 特開平10−228404号公報
このように、特許文献1及び特許文献2では、ジャーナルファイルを複数用意することによる書出し性能の向上、読み込み及び復旧処理時間の短縮、書出先ジャーナルファイルの変更を全て満たすことができないという課題がある。
本発明は、このような課題に鑑みてなされたものであり、ジャーナルの書出し性能の向上、読み込み及び復旧処理時間の短縮、書出先ジャーナルファイルの変更の全てを実現することを主な目的とする。
本発明に係るジャーナル管理システムは、
複数種の処理手順が含まれるアプリケーションプログラムでの処理の進行状況を示すデータであって、処理が進行している処理手順の処理手順ID(Identifier)が記述されるデータをジャーナルとして生成するジャーナル生成部と、
生成されたジャーナルごとに、ジャーナルの書出先となる書出先ジャーナルファイルを複数のジャーナルファイルの中から決定する書出先決定部と、
処理手順IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、書出先ジャーナルファイルの変更を通知する書出先変更通知を、書出先ジャーナルファイル変更前のいずれかのジャーナルと書出先ジャーナルファイル変更後のいずれかのジャーナルに記述する書出先変更通知部と、
前記書出先決定部により決定された書出先ジャーナルファイルにジャーナルを書き出す書出部と、
それぞれが、いずれかのジャーナルファイルに対応付けられ、対応付けられているジャーナルファイルからジャーナルを読み込み、読み込んだジャーナルを処理手順IDに従って分類し、処理手順IDごとに、分類された1つ以上のジャーナルからジャーナル列を生成し、読み込んだジャーナルの中に書出先変更通知が記述されているジャーナルがある場合に、書出先変更通知が記述されているジャーナルに記述されている処理手順IDを書出先変更発生IDとして他の処理手順IDから区別する複数のジャーナル読込分類部と、
書出先変更発生IDに対して生成されたジャーナル列を少なくともいずれかのジャーナル読込分類部から入力し、共通する書出先変更発生IDに対して生成された2つ以上のジャーナル列を連結するジャーナル連結部とを有することを特徴とする。
本発明では、書出先ジャーナルファイルが変更になる場合にジャーナルに書出先変更通知を記述し、書出先変更通知が記述されているジャーナルの処理手順IDを書出先変更発生IDとして他の処理手順IDから区別し、共通する書出先変更発生IDに対して生成された2つ以上のジャーナル列を連結する。
このため、ジャーナルファイルを固定する必要がなく、ジャーナルファイルの変更が可能であり、ジャーナルの書出し性能の向上が図られる。
また、書出先ジャーナルファイルの変更があったジャーナルは書出先変更通知により検知できるので、ジャーナルファイルの読込みの並列化が可能であり、読込み時間を短縮することができる。
実施の形態1に係るジャーナル管理システムの構成例を説明する図。 実施の形態1に係るジャーナルの構成例を説明する図。 実施の形態1に係る書出先決定テーブルの構成例を説明する図。 実施の形態1に係る書出先保持テーブルの構成例を説明する図。 実施の形態1に係る正常時フローを説明するフローチャート図。 実施の形態1に係る復旧時フローを説明するフローチャート図。 実施の形態1に係る復旧時フローを説明するフローチャート図。 実施の形態1に係る復旧時フローを説明するフローチャート図。 実施の形態1に係る復旧時フローを説明するフローチャート図。 実施の形態1に係る復旧時フローを説明するフローチャート図。 実施の形態1に係る復旧時フローを説明するフローチャート図。 実施の形態1に係るジャーナル列の生成処理を説明する図。 実施の形態2に係るジャーナル管理システムの構成例を説明する図。 実施の形態2に係るジャーナル列パターンを説明する図。 実施の形態2に係る正常時フローを説明するフローチャート図。 実施の形態2に係る書出先変更通知を説明する図。 実施の形態2に係るジャーナル列パターンが複数生成される例を説明する図。 実施の形態2に係る復旧時フローを説明するフローチャート図。 実施の形態2に係る復旧時フローを説明するフローチャート図。 実施の形態2に係る復旧時フローを説明するフローチャート図。 実施の形態3に係るジャーナル管理システムの構成例を説明する図。 実施の形態3に係る順序待合せ除外パターンを説明する図。 実施の形態3に係る順序待合せ除外パターン1の例を説明する図。 実施の形態3に係る順序待合せ除外パターン2の例を説明する図。 実施の形態3に係る順序待合せ除外パターン3の例を説明する図。 実施の形態3に係る復旧時フローを説明するフローチャート図。 ジャーナル方式を説明する図。 ジャーナル方式を説明する図。 関連技術を説明する図。 関連技術を説明する図。 ジャーナルの構成例を説明する図。 処理定義を説明する図。 処理IDを説明する図。 処理ステージを説明する図。 処理ブランチを説明する図。 アプリケーションの構成例を説明する図。 アプリケーションへ適用した場合のジャーナルファイルの構成例を説明する図。 実施の形態1〜3に係るジャーナル出力装置及び復旧装置のハードウェア構成例を説明する図。
実施の形態1.
図1は、本実施の形態に係るジャーナル管理システムの構成例を示す。
ジャーナル管理システムには、ジャーナル出力装置100及び復旧装置200が含まれる。
ジャーナル出力装置100は、図27及び図28に示したサーバ装置805に相当する。
つまり、ジャーナル出力装置100は、正常時にアプリケーション300を実行するとともに、アプリケーション300での処理の進行状況を示すデータであるジャーナル600を生成し、生成したジャーナル600をジャーナルファイル400及びジャーナルファイル500に書き出す。
復旧装置200は、図28に示した予備サーバ装置806に相当する。
つまり、復旧装置200は、アプリケーション300が異常終了した際に、ジャーナルファイル400及びジャーナルファイル500からジャーナル600を読み出し、読み出したジャーナル600を解析して、アプリケーション300を異常終了により中断した工程の次の工程から再開させる。
なお、アプリケーション300は、ジャーナル出力装置100及び復旧装置200の各々の記憶領域に格納されていてもよいし、ジャーナル出力装置100及び復旧装置200が共有する共用サーバ装置等に格納されていてもよい。
図1の例では、ジャーナル出力装置100は、処理種別Aの処理の実行において生成されたジャーナル600と処理種別Bの処理の実行において生成されたジャーナル600をジャーナルファイル400に書き出し、処理種別Cの処理の実行において生成されたジャーナル600をジャーナルファイル500に書き出すことになっている。
しかし、後述するように、ジャーナル600の書出先のジャーナルファイルは変更になることがある。
ジャーナルファイル400とジャーナルファイル500は、ジャーナル出力装置100と復旧装置200がともにアクセス可能な記憶領域(磁気ディスク等)である。
ジャーナル出力装置100において、ジャーナル生成部101は、ジャーナル600を生成する。
ジャーナル600の詳細は後述する。
書出先決定部102は、ジャーナル生成部101により生成されたジャーナル600の書出先となるジャーナルファイルを決定する。
なお、書出先決定部102によりジャーナル600の書出先として決定されたジャーナルファイルを書出先ジャーナルファイルという。
書出先変更通知部103は、処理定義ID(Identifier)が共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、書出先ジャーナルファイルの変更を通知する書出先変更通知を、書出先ジャーナルファイル変更前の最後尾のジャーナル600と書出先ジャーナルファイル変更後の先頭のジャーナル600に記述する。
なお、処理定義ID、書出先変更通知の詳細は後述する。
書出部104は、書出先決定部102により決定された書出先ジャーナルファイルにジャーナル600を書き出す。
テーブル記憶部105は、書出先決定テーブル106及び書出先保持テーブル107を記憶する。
書出先決定テーブル106は、ジャーナル600の書出先ジャーナルファイルとして指定されたジャーナルファイルを示す情報である。
書出先保持テーブル107は、実際にジャーナル600を書き出しているジャーナルファイルを示す情報である。
書出先決定テーブル106及び書出先保持テーブル107の詳細は、後述する。
復旧装置200において、読込部201aは、ジャーナルファイル400に対応付けられ、ジャーナルファイル400からジャーナル600を読み込む。
読込部201bは、ジャーナルファイル500に対応付けられ、ジャーナルファイル500からジャーナル600を読み込む。
なお、読込部201aと読込部201bを区別する必要がないときは、読込部201と表記する。
書出先変更検知部202aは、読込部201aがジャーナルファイル400から読み込んだジャーナル600を処理定義IDに従って分類し、処理定義IDごとに、分類された1つ以上のジャーナルからジャーナル列を生成する。
また、書出先変更検知部202aは、読み込んだジャーナル600の中に書出先変更通知が記述されているジャーナル600がある場合に、書出先変更通知が記述されているジャーナル600に記述されている処理定義IDを書出先変更発生IDとして他の処理定義IDから区別する。
更に、書出先変更検知部202aは、書出先変更発生IDに対して生成されたジャーナル列は順序保証部204に出力し、書出先変更発生ID以外の処理定義IDに対して生成されたジャーナル列は復旧部203aに出力する。
書出先変更検知部202bは、読込部201bがジャーナルファイル500から読み込んだジャーナル600を処理定義IDに従って分類し、処理定義IDごとに、分類された1つ以上のジャーナル600からジャーナル列を生成する。
また、書出先変更検知部202bは、読み込んだジャーナル600の中に書出先変更通知が記述されているジャーナル600がある場合に、書出先変更通知が記述されているジャーナル600に記述されている処理定義IDを書出先変更発生IDとして他の処理定義IDから区別する。
更に、書出先変更検知部202bは、書出先変更発生IDに対して生成されたジャーナル列は順序保証部204に出力し、書出先変更発生ID以外の処理定義IDに対して生成されたジャーナル列は復旧部203bに出力する。
なお、書出先変更検知部202aと書出先変更検知部202bを区別する必要がないときは、書出先変更検知部202と表記する。
読込部201aと書出先変更検知部202a、読込部201bと書出先変更検知部202bとは、それぞれ、ジャーナル読込分類部の例に相当する。
復旧部203aは、書出先変更検知部202aから書出先変更発生ID以外の処理定義IDに対して生成されたジャーナル列を入力し、入力したジャーナル列に対してアプリケーション300を復旧するための解析を行う。
復旧部203bは、書出先変更検知部202bから書出先変更発生ID以外の処理定義IDに対して生成されたジャーナル列を入力し、入力したジャーナル列に対してアプリケーション300を復旧するための解析を行う。
復旧部203cは、書出先変更発生IDに対して生成されたジャーナル列であって順序保証部204によって連結された後のジャーナル列を、順序保証部204から入力し、入力したジャーナル列に対してアプリケーション300を復旧するための解析を行う。
復旧部203a、復旧部203b及び復旧部203cは、それぞれ、ジャーナル解析部の例に相当する。
なお、復旧部203a、復旧部203b、復旧部203cを区別する必要がないときは、復旧部203と表記する。
順序保証部204は、順序待合せ部205を有し、順序待合せ部205を管理する。
順序保証部204は、書出先変更検知部202a及び書出先変更検知部202bの少なくともいずれかから、書出先変更発生IDに対して生成されたジャーナル列を入力し、入力したジャーナル列を順序待合せ部205に渡す。
順序待合せ部205は、共通する書出先変更発生IDに対して生成された2つ以上のジャーナル列を連結する。
順序待合せ部205は、処理定義IDごとに設けられている。
順序待合せ部205を含む順序保証部204は、ジャーナル連結部の例に相当する。
図2は、ジャーナル600の構成例を示す。
ジャーナル600は、ヘッダとボディから構成される。
ヘッダは、処理定義ID、処理ID、処理ステージID、処理ブランチID、処理ブランチ数、処理状態、書出先変更通知領域から構成される。
ボディは、処理データから構成される。
書出先変更通知領域は、書出先ジャーナルファイルの変更を通知する書出先変更通知が記述される領域である。
なお、処理定義ID、処理ID、処理ステージID、処理ブランチID、処理ブランチ数、処理状態及び処理データの詳細は後述する。
また、本実施の形態では、ジャーナル600は図31のようにも表記する。
図31の表記方式では、符号821で示す要素で「処理定義ID」を表し、符号822で示す要素で「処理ID」を表し、符号823で示す要素で「処理ステージID」を表し、符号824で示す要素で「処理ブランチID」を表し、符号825で示す要素で「処理状態」を表し、符号826で示す要素で「処理データ」を表す。
つまり、図31の処理定義ID821、処理ID822、処理ステージID823、処理ブランチID824、処理状態825及び処理データ826は、図2の処理定義ID、処理ID、処理ステージID、処理ブランチID、処理状態及び処理データに対応する。
図31の表記方式では、処理ブランチ数及び書出先変更通知領域は省略される。
以降では、図2の表記方式及び図31の表記方式を用いて、ジャーナル600を表記する。
図32に示すように、アプリケーションプログラムの入力から出力までの一連の処理を処理定義と呼ぶ。
処理定義が実行されることにより、アプリケーションプログラムに備わっている所定の機能が実現される。
つまり、処理定義は、アプリケーションプログラムに備わっている機能を実現するための処理手順である。
各処理定義を識別するための識別子を処理定義ID821と呼ぶ。
換言すると、処理定義IDは、処理手順を識別するための識別子であり、処理手順IDの例に相当する。
各処理定義は、複数の内部処理(処理手順内の工程)で構成される。
なお、処理定義は、特許文献1及び特許文献2の説明において言及した「処理種別」と同義である。
アプリケーションプログラムにおいて、各処理定義は繰り返し実行可能である。
つまり、同じ処理定義に対して複数のインスタンス(処理インスタンスと呼ぶ)を発生させることができる。
各処理インスタンスを識別するための識別子を処理ID822又は処理インスタンスIDと呼ぶ。
図33に示すように、処理ID822(処理インスタンスID)は、処理定義ごとの連番である。
処理ID822(処理インスタンスID)は、外部からの処理要求ごとに増加する。
各処理定義は、内部処理の集合であるが、図34のように、各内部処理の段階を処理ステージと呼ぶ。
つまり、処理定義は、複数の処理ステージから構成される。
各処理ステージを識別するための識別子を処理ステージID823と呼ぶ。
図35のように、処理の並列化などにより同じ処理ステージ内で複数に処理(工程)が分割される場合の1つの処理(工程)を処理ブランチという。
各処理ブランチを識別するための識別子を処理ブランチID824と呼ぶ。
処理ブランチの数を処理ブランチ数と呼ぶ。
処理状態825は、完了や未完了などの処理の状態を示す。
処理状態825を識別するための識別子を状態IDともいう。
処理データ826は、処理で必要とするデータである。
処理データ826は、現在の処理ステージまたは次の処理ステージを再開するのに十分な情報量を持つデータとする必要がある。
アプリケーション300は、図36のように、外部から入力データ801を入力し、入力データ801に対して複数の内部処理を実行する。
そして、分岐後の最終工程である内部処理Pn_1〜Pn_mがすべて完了すると、アプリケーション300の処理が終了となる。
アプリケーション300と内部処理と入力データ801との間には、以下の関係がある。
(1)アプリケーション300は、複数の内部処理から構成され、最終処理は複数存在する。
(2)入力データが幾つかの種別に分類され(図36では、種別A、B、C)、種別間で内部処理が異なる。
(3)同じ種別の入力データ801でも流量は一定では無く、振れ幅が大きい(トランザクション系の処理とバッチ系の処理が混在する)。
以上の説明を前提にして、アプリケーション300にジャーナル方式を適用した場合のジャーナルファイルの構成を図37に示す。
この例では、処理ブランチの数を2としている。
図37において、「A1」は「処理定義ID:A」及び「処理ID:1」を表し、「A2」は「処理定義ID:A」及び「処理ID:2」を表し、「B3」は「処理定義ID:B」及び「処理ID:3」を表している。
また、「p」は「処理ステージID:1」を表し(処理ブランチはない)、「p2 1」は「処理ステージID:2」及び「処理ブランチID:1」を表し、「pn 1」は「処理ステージID:n」及び「処理ブランチID:1」を表し、「pn 2」は「処理ステージID:n」及び「処理ブランチID:2」を表している。
なお、図37では、図31に示した処理状態825及び処理データ826の図示は省略している。
「A1」、「B3」のように、1つのジャーナルファイルには、複数種の処理定義のジャーナル600が格納されていることがある。
また、A1p、A2p...A1pn_1となっているように、同じ処理定義の同じ処理ステージでは、処理ID順に順序が保証されるため、A2pは必ずA1pの後に出現する。
各処理ステージでは外部から要求された内部処理を順次実行するため、必ずしも処理IDの順序通りにはならず、A1pn_1の前にA2pが出力されることがある。
図37の例では、処理ブランチ数が2のため、A1の処理インスタンスは、最初の工程(処理ステージ)の完了を示すジャーナルA1pと最後の工程(処理ステージ)の完了を示すジャーナルA1pn_1、A1pn_2が揃っていれば、完了している。
この時、A1pのように、最初の処理ステージIDを持つジャーナルを開始ジャーナル、A1pn_1、A1pn_2のように最後の処理ステージIDを持つジャーナルを完了ジャーナルと呼ぶ。
図3は、テーブル記憶部105に記憶される書出先決定テーブル106の例を示す。
書出先決定テーブル106は、処理定義IDと書出先ジャーナルファイルを対応付ける表である。
書出先ジャーナルファイルを変更する場合にはこの書出先決定テーブル106の値を変更する。
例えば、アプリケーション300、または、アプリケーション300を管理するOS(Operating System)からの指示に基づき、書出先決定部102は、書出先決定テーブル106の値を変更する。
図4は、テーブル記憶部105に記憶される書出先保持テーブル107の例を示す。
書出先保持テーブル107は、処理定義IDと現在書き出している書出先ジャーナルファイルを対応付ける表である。
書出先変更通知部103は、書出先決定テーブル106の値と書出先保持テーブル107の値を比較して、書出先ジャーナルファイルの変更を検知する。
本実施の形態のジャーナル管理システムでは、ジャーナルファイルを複数用意し、処理種別ごとに決定されたジャーナルファイルにジャーナルを書き込むとともに、書出先ジャーナルファイルが変更された場合には、書出先のジャーナルファイルが変更されたことをジャーナルにセットする。
そして、復旧時には、ジャーナルファイルごとに読込/復旧を行い、復旧時に、書出先ジャーナルファイルが変更されたジャーナルを持つ種別のみ、順序保証を行うようにする。
このようにすることで、複数のジャーナルファイルによる書出し性能の向上、読み込み及び復旧処理時間の短縮、書出先ジャーナルファイルの変更を全て実現する。
次に、本実施の形態に係るジャーナル管理システムの動作を説明する。
正常時の動作を図5のフローで説明する。
まず、ステップ100において、アプリケーション300が、処理定義ID、処理ID、処理ステージID、処理ブランチID、処理ブランチ数、処理データを決定し、API(Application Programming Interface)を介してジャーナル出力装置100を呼び出し、処理定義ID、処理ID、処理ステージID、処理ブランチID、処理ブランチ数、処理データを引数としてジャーナル出力装置100に与え、ステップ200へ進む。
処理データは、アプリケーション300が次の処理ステージから処理を開始するために必要なデータとする。
ステップ200において、ジャーナル生成部101は、引数で与えられた処理定義ID、処理ID、ステージID、処理ブランチID、処理ブランチ数からヘッダを、処理データからボディを作成し、ステップ300へ進む。
ヘッダとボディを合せてジャーナル600と呼ぶ。
ステップ300では、書出先決定部102が、ステップ200で生成されたジャーナル600の処理定義IDと、書出先決定テーブル106(図3)とを照合し、ステップ200で生成されたジャーナル600の書出先ジャーナルファイルを決定し、ステップ400へ進む。
例えば、ステップ200で生成されたジャーナル600の処理定義IDが「A」であれば、図3に示す書出先決定テーブル106に従って、書出先決定部102は、書出先ジャーナルファイルとしてジャーナルファイル「1」を指定する。
また、書出先決定部102は、ステップ300において、次のジャーナル600(処理定義IDが同一の次のジャーナル600)の書出先ジャーナルファイルを変更するか否かを判断し、書出先ジャーナルファイルを変更する場合は、書出先決定部102は、書出先決定テーブル106の値を変更する。
但し、変更後の書出先ジャーナルファイルが適用されるのは、次のジャーナル600からである。
例えば、図37に示す順序でジャーナル600が生成される場合を想定する。
この場合に、ジャーナルA1pに対するステップ300開始時の書出先決定テーブル106の値が図3に示す通りであれば、ジャーナルA1pの書出先ジャーナルファイルはジャーナルファイル「1」となる。
ここで、書出先決定部102が書出先決定テーブル106を変更して「処理定義ID:A」の書出先ジャーナルファイルを「ジャーナルファイル:2」とすれば、同じ処理定義IDの次のジャーナルA2pに対するステップ300において、書出先決定部102は、書出先ジャーナルファイルをジャーナルファイル「2」とする。
ステップ400において、書出先変更通知部103が、ステップ200で生成されたジャーナル600の処理定義IDと、書出先保持テーブル107(図4)から、これまでジャーナル600が書き込まれていた書出先ジャーナルファイルの値を取得する。
また、書出先保持テーブル107から取得した書出先ジャーナルファイルの値と、書出先決定テーブル106(図3)の書出先ジャーナルファイルの値とを比較し、ステップ410へ進む。
ステップ410では、書出先ジャーナルファイルが変更されている場合(書出先保持テーブル107の書出先ジャーナルファイルの値と、書出先決定テーブル106の書出先ジャーナルファイルの値が異なる場合)は、ステップ450へ進み、変更されていない場合はステップ430へ進む。
ステップ430では、書出先変更通知部103は、ジャーナルヘッダの書出先変更通知領域に「変更無し」を設定し、ステップ500へ進む。
ステップ450では、書出先変更通知部103は、ジャーナルヘッダの書出先変更通知領域に「変更有り」を設定する。
また、ステップ410における「YES」判定(書出先ジャーナルファイルが変更されているとの判定)が1度目であれば、ステップ500に進む。
一方、ステップ410における「YES」判定(書出先ジャーナルファイルが変更されているとの判定)が2度目であれば、書出先変更通知部103は、ステップ460において、書出先保持テーブル107に書出先決定テーブル106の書出先ジャーナルファイルの値を書き込み、書出先保持テーブル107を更新し、ステップ500へ進む。
ステップ500では、書出部104が、書出先保持テーブル107に記述されている書出先ジャーナルファイルへジャーナル600を書き出す。
書出部104は、書出しが完了するとアプリケーション300へ処理を返す。
例えば、図37に示す順序でジャーナル600が生成される場合を想定する。
ステップ300において、図3の書出先決定テーブル106に従って、ジャーナルA1pの書出先ジャーナルファイルとしてジャーナルファイル「1」が決定された後に、書出先決定部102により書出先ジャーナルファイルが変更されて、「処理定義ID:A」の書出先ジャーナルファイルが「ジャーナルファイル:2」になったとする。
なお、このときの書出先保持テーブル107では、「処理定義ID:A」の書出先ジャーナルファイルは「ジャーナルファイル:1」である。
そして、ジャーナルA1pに対するステップ410では、書出先決定テーブル106の値と書出先保持テーブル107の値が異なるので(ステップ410でYES)、ステップ450において、ジャーナルA1pの書出先変更通知領域には「変更有り」が記述される。
但し、この時点では、ステップ410における「YES」判定は1度目なので、書出先保持テーブル107は変更されず、ステップ500において、ジャーナルA1pはジャーナルファイル「1」に書出される。
次のジャーナルA2pに対するステップ300において、図3の書出先決定テーブル106に従って、ジャーナルA2pの書出先ジャーナルファイルとしてジャーナルファイル「2」が決定される。
ここでは、「処理定義ID:A」の書出先ジャーナルファイルは変更されないものとする。
また、このときの書出先保持テーブル107では、「処理定義ID:A」の書出先ジャーナルファイルは「ジャーナルファイル:1」である。
ジャーナルA2pに対するステップ410では、書出先決定テーブル106の値と書出先保持テーブル107の値が異なるので(ステップ410でYES)、ステップ450において、ジャーナルA2pの書出先変更通知領域には「変更有り」が記述される。
そして、ステップ410における「YES」判定は2度目なので、書出先保持テーブル107において「処理定義ID:A」の書出先ジャーナルファイルが「ジャーナルファイル:2」変更され、ステップ500において、ジャーナルA2pはジャーナルファイル「2」に書出される。
このように、処理定義IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合には、書出先ジャーナルファイルの変更を通知する書出先変更通知(「変更有り」との通知)が、書出先ジャーナルファイル変更前の最後尾のジャーナル(前出のジャーナルA1p)と、書出先ジャーナルファイル変更後の先頭のジャーナル(前出のジャーナルA2p)とに記述される。
次に、復旧時の動作を図6、図7、図8、図9、図10、図11を参照して説明する。
図6は、復旧装置200のフローである。
ステップ100では、復旧装置200は、予め指定されたディレクトリにあるジャーナルファイルを全て読込み、ジャーナルファイルごとに読込部201を起動する。
読込部201の起動が完了すると、図6のフローは終了する。
図7及び図8は、読込部201及び書出先変更検知部202のフローである。
ステップ100では、読込部201が、対応付けられているジャーナルファイル400(500)を開き、ジャーナル600を一つずつ取り出し、ステップ110へ進む。
ステップ110では、読込部201は、ジャーナルヘッダから処理定義IDと書出先変更通知領域の値を取得し、ステップ120へ進む。
ステップ120では、読込部201は、ステップ110で取得した処理定義ID用のジャーナル列格納領域(例えば、ワークメモリ内の領域)があるかどうかをチェックし、ジャーナル列格納領域が無ければジャーナル列格納領域を作成し、ステップ130へ進む。
ステップ130では、読込部201は、ステップ110で取得した書出先変更通知領域の値をチェックし、「変更有り」の場合にはステップ140へ進み、「変更無し」の場合にはステップ150へ進む。
ステップ140では、読込部201は、この処理定義ID用の書出先変更有無格納領域(例えば、ワークメモリ内の領域)を新しく作成し、この処理定義IDで書出先ジャーナルファイルが変更されていることを書出先変更有無格納領域に格納し、ステップ150へ進む。
前述したように、ステップ140で書出先変更有無格納領域に書出先ジャーナルファイルが変更されていることが格納された処理定義ID、つまり、書出先変更通知領域に「変更有り」が記述されているジャーナル600に記述されている処理定義IDを、書出先変更発生IDという。
ステップ150では、読込部201は、該当する処理定義IDのジャーナル列格納領域へジャーナル600を追加し、ステップ160へ進む。
ステップ160では、読込部201は、ジャーナルファイルのジャーナル600を全て読み込んだ場合、ステップ200へ進む。
全て読み込んで無い場合には、ステップ100へ進み、ジャーナル600の読込みを続ける。
ステップ200では、書出先変更検知部202が、処理定義IDごとにジャーナル列格納領域に格納された1つ以上のジャーナル(ジャーナル列と呼ぶ)を取り出し、ステップ210へ進む。
ステップ210では、書出先変更検知部202は、該当する処理定義ID用の書出先変更有無格納領域を参照して書出先ジャーナルファイルが変更されているかどうかをチェックし、書出先ジャーナルファイルが変更されていない場合にはステップ220へ進み、変更されている場合にはステップ230へ進む。
ステップ220では、書出先変更検知部202は、ジャーナル列を復旧部203へ渡し、ステップ240へ進む。
つまり、書出先変更検知部202は、書出先変更発生ID以外の処理定義IDに対して生成されたジャーナル列は復旧部203に出力する。
一方、ステップ230では、書出先変更検知部202は、ジャーナル列を順序保証部204へ渡し、ステップ240へ進む。
つまり、書出先変更検知部202は、書出先変更発生IDに対して生成されたジャーナル列は順序保証部204に出力する。
ステップ240では、書出先変更検知部202は、全ての処理定義IDのジャーナル列を処理している場合には、動作を終了する。
一方、未処理の処理定義IDがある場合には、ステップ200へ進み、ジャーナル列の処理を続ける。
図12は、ジャーナル列の生成イメージを示している。
説明を簡明にするために、図12のジャーナル600では、「処理定義ID」と「処理ID」のみを図示している。
ジャーナルファイル400(500)には、複数の処理定義IDのジャーナル600が含まれているが、読込部201が、処理定義IDに従ってジャーナル600を分類し、同じ処理定義IDを持つジャーナル600をまとめたものがジャーナル列である。
図12では、処理定義A、B、Cのジャーナル600が混在しているジャーナルファイル400(500)から、処理定義Aのジャーナル600のみを抽出して、処理定義Aのジャーナル列を生成している状況が示されている。
図9は、順序保証部204の動作フローである。
ステップ100では、順序保証部204が、書出先変更検知部202から渡されたジャーナル列の集合からジャーナル列を1つ取り出し、ステップ110へ進む。
ステップ110では、順序保証部204は、ステップ100で取り出したジャーナル列から処理定義IDを取得し、ステップ120へ進む。
ステップ120では、順序保証部204は、処理定義IDに対応する順序待合せ部205が起動されているかを検査し、順序待合せ部205が起動されている場合にはステップ140へ進み、起動されていない場合にはステップ130へ進む。
ステップ130では、順序保証部204は、処理定義IDに対応する順序待合せ部205を起動して、ステップ140へ進む。
ステップ140では、順序保証部204は、ジャーナル列を処理定義IDに対応する順序待合せ部205へ渡して、ステップ150へ進む。
ステップ150では、順序保証部204は、書出先変更検知部202から渡された全てのジャーナル列を処理したかを検査し、処理していればステップ160へ進む。
未処理のジャーナル列がある場合は、ステップ100へ進み、ジャーナル列の処理を続ける。
ステップ160では、順序保証部204は、全ての順序待合せ部205へジャーナル列受取完了を通知し、動作を終了する。
図10は、順序待合せ部205の動作フローである。
ステップ100では、順序待合せ部205は、順序保証部204からジャーナル列を受け取り、ステップ110へ進む。
ステップ110では、順序待合せ部205は、受け取ったジャーナル列を処理ID順に一つのジャーナル列に再構成し、ステップ120へ進む。
つまり、順序待合せ部205は、共通する書出先変更発生IDに対して生成された2つ以上のジャーナル列を連結する。
ステップ120では、順序待合せ部205は、順序保証部204がジャーナル列受取完了通知を出しているかをチェックし、ジャーナル列受取完了通知を出している場合は、ステップ130へ進む。
ジャーナル列受取完了通知を出していない場合はステップ100へ進み、ジャーナル列の受け取りを続ける。
ステップ130では、順序待合せ部205は、繋ぎ合わせたジャーナル列を復旧部203cへ渡す。
図11は、復旧部203の動作フローである。
ステップ100では、復旧部203は、渡されたジャーナル列から処理定義IDの小さい順に、ある処理IDを持つ複数のジャーナルを取り出し、ステップ110へ進む。
ステップ110では、復旧部203は、取り出したジャーナルを検査し、その処理IDに対して、全ての処理ステージと処理ブランチが揃っているかを検査する。
全ての処理ステージと処理ブランチが揃っていれば、復旧部203は、ステップ120へ進む。
揃っていなければステップ130へ進む。
ステップ120では、復旧部203は、この処理IDのジャーナル列が完了していることを記憶し、ステップ140へ進む。
ステップ130では、復旧部203は、この処理IDのジャーナル列が未完了であることを記憶し、ステップ140へ進む。
ステップ140では、復旧部203は、ジャーナル列に含まれる全ての処理IDに対して処理したかを検査する。
全ての処理IDに対して処理していれば、動作を終了する。
処理していなければステップ100へ進み、処理を継続する。
復旧部203はジャーナル列を解析し、ある処理定義IDのどの処理IDが完了していて、どの処理IDが未完了なのかを判定する。
アプリケーション300は内部処理の完了状況を取得し、完了していない内部処理があればアプリケーション300が再開処理を行うことで、異常終了により中断された内部処理を再開させることができる。
以上のように、本実施の形態では、書出先変更検知部で、書出先ジャーナルファイルが変更された(順序保証が必要となる)処理定義のジャーナル列のみを順序保証対象とすることで、順序保証処理による遅延を最小化し、アプリケーション全体の復旧処理を高速化することができる。
また、本実施の形態では、書出先ジャーナルファイルが変更になる場合にジャーナルに書出先変更通知を記述し、書出先変更通知が記述されているジャーナルの処理手順IDを書出先変更発生IDとして他の処理定義IDから区別し、共通する書出先変更発生IDに対して生成された2つ以上のジャーナル列を連結する。
このため、ジャーナルファイルを固定する必要がなく、ジャーナルファイルの変更が可能であり、ジャーナルの書出し性能の向上が図られる。
また、書出先ジャーナルファイルの変更があったジャーナルは書出先変更通知により検知できるので、ジャーナルファイルの読込みの並列化が可能であり、読込み時間を短縮することができる。
実施の形態2.
以上の実施の形態1では、書出先変更通知がセットされた処理定義IDのジャーナル列を全て順序保証部204へ渡すようにしている。
これに対し、実施の形態2では、書出先変更通知がセットされたジャーナル列でも、あるパターンにマッチするジャーナル列は順序保証部204へ渡さないようにすることで、順序保証による遅延を最小化し、アプリケーション全体の復旧処理を高速化する。
実施の形態2に係るジャーナル管理システムの構成例を図13に示す。
実施の形態2では、実施の形態1の構成に加えて、ジャーナル出力装置100に順序保証除外部206a、順序保証除外部206b及び順序保証除外パターン記憶部207を備える。
なお、順序保証除外部206a、順序保証除外部206bを区別する必要がないときは、順序保証除外部206と表記する。
また、実施の形態2では、ジャーナル600の書出先変更通知は、書出先変更通知(OUT)と書出先変更通知(IN)に区別される。
書出先変更通知(OUT)は、書出先ジャーナルファイル変更前の最後尾のジャーナルであることを通知する情報であり、変更前最後尾データ通知の例に相当する。
また、書出先変更通知(IN)は、書出先ジャーナルファイル変更後の先頭のジャーナルであることを通知する情報であり、変更後先頭データ通知の例に相当する。
つまり、本実施の形態では、書出先変更通知部103は、処理定義IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、書出先ジャーナルファイル変更前の最後尾のジャーナルの書出先変更通知領域に書出先変更通知(OUT)を記述する。
また、書出先変更通知部103は、処理定義IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、書出先ジャーナルファイル変更後の先頭のジャーナルの書出先変更通知領域に書出先変更通知(IN)を記述する。
順序保証除外パターン記憶部207は、順序保証除外パターンを記憶する。
順序保証除外パターンは、後述するように、先頭のジャーナルに書出先変更通知(IN)が記述され、最後尾のジャーナルに書出先変更通知(OUT)が記述されていないというジャーナル列のパターンである。
順序保証除外パターンは、後述する図14のパターン2であり、特殊ジャーナル列パターンの例に相当する。
また、順序保証除外パターン記憶部207は、記憶部の例に相当する。
順序保証除外部206は、書出先変更検知部202から入力したジャーナル列が順序保証除外パターンに該当するか否かを判断し、入力したジャーナル列が順序保証除外パターンに該当する場合に、他のジャーナル列との連結の対象とすることなく、入力したジャーナル列の一部を復旧部203に出力する。
より具体的には、順序保証除外部206は、入力したジャーナル列が順序保証除外パターンに該当する場合に、入力したジャーナル列を解析して、処理手順が完了している処理インスタンスが存在するか否かを判断する。
そして、順序保証除外部206は、処理手順が完了している処理インスタンスが存在する場合に、処理手順が完了している処理インスタンスよりも後の発生順序を表す処理IDが記述されている1つ以上のジャーナルを、入力したジャーナル列から抽出する。
更に、順序保証除外部206は、抽出したジャーナルを、他のジャーナル列との連結の対象とすることなく、復旧部203に出力する。
なお、順序保証除外部206は、順序保証部204とともに、ジャーナル連結部の例に相当する。
なお、図13の構成において、書出先変更通知部103、順序保証除外部206及び順序保証除外パターン記憶部207以外の要素は、図1に示したものと同様なので説明を省略する。
次に、順序保証除外パターンを図14を参照して説明する。
図14は、ジャーナル列のパターンを示している。
つまり、図14は、1つのジャーナルファイルに含まれるジャーナルを処理定義IDごとに分類し、図17のように書出先変更通知の出現を区切りとして分割して得られるジャーナル列のパターンを示している。
図17の例では、1つのジャーナルファイルから、同じ処理定義IDが記述されている3つのジャーナル列が生成される(書出先ジャーナルファイルが2回変更になった)ことを示している。
図14に示すように、ジャーナル列のパターンは次の4つとなる。
なお、(2)〜(4)のパターンが出現する場合は、図17のように1つの処理定義IDに対して2つ以上のジャーナル列が抽出される。
また、(1)のパターンの場合は、1つの処理定義IDに対して必ず1つのジャーナル列が抽出される。
(1)パターン1は、書出先変更通知が無いジャーナル列である。
(2)パターン2は、先頭のジャーナルに書出先変更通知(IN)が記述され、それ以降最後尾のジャーナルまで書出先変更通知が無いジャーナル列である。
(3)パターン3は、最後尾のジャーナルのみに書出先変更通知(OUT)が記述されているジャーナル列である。
(4)パターン4は、先頭のジャーナルに書出先変更通知(IN)が記述され、さらに最後尾のジャーナルに書出先変更通知(OUT)が記述されているジャーナル列である。
上記の(2)パターン2が、順序保証除外パターンである。
次に、本実施の形態に係るジャーナル管理システムの動作を説明する。
正常時の動作を図15のフローで説明する。
ステップ100〜400までは、実施の形態1と同じため説明を省略する。
ステップ410では、書出先変更通知部103が、実施の形態1と同様の判断手順にて書出先ジャーナルファイルが変更されているか否かを判断し、書出先ジャーナルファイルが変更されている場合は、ステップ420へ進み、変更されていない場合はステップ430へ進む。
ステップ430では、書出先変更通知部103は、ジャーナルヘッダの書出先変更通知領域に「変更無し」を設定し、ステップ500へ進む。
ステップ420では、書出先変更通知部103は、書出先ジャーナルファイルが変更された直後の書出しかどうかを検査し、直後の書出しの場合はステップ440へ進み、2回目の書出しの場合は、ステップ452へ進む。
つまり、書出先変更通知部103は、ステップ410における「YES」判定(書出先ジャーナルファイルが変更されているとの判定)が1度目であるか2度目であるかを判断し、1度目であればステップ440へ進み、2度目の場合はステップ452へ進む。
ステップ440では、書出先変更通知部103は、書出先変更通知領域に書出先変更通知(OUT)として「変更有り(OUT)」を設定し、ステップ500へ進む。
ステップ452では、書出先変更通知部103は、書出先変更通知領域に書出先変更通知(IN)として「変更有り(IN)」を設定し、ステップ460へ進む。
ステップ460では、書出先変更通知部103は、書出先保持テーブル107に書出先決定テーブル106の書出先ジャーナルファイルの値を書き込み、書出先保持テーブル107を更新し、ステップ500へ進む。
ステップ500では、書出部104が、書出先保持テーブル107に格納された書出先ジャーナルファイルへジャーナル600を書き出す。
書出部104は、書出しが完了するとアプリケーションへ処理を返す。
図16は、書出先変更通知部103がジャーナル600の書出先変更通知領域に「書出先変更通知(OUT)」及び「書出先変更通知(IN)」を記述する動作を説明している。
「処理定義ID:A」、「処理ID:2」のジャーナル600を書き出す際に書出先ジャーナルファイルが変更された場合、書出先変更通知部103は、「処理定義ID:A」、「処理ID:2」のジャーナルの書出先変更通知領域には「書出先変更通知(OUT)」として「変更有り(OUT)」を格納し、当該ジャーナルを書出部104が変更前のジャーナルファイル400へ書き出す。
また、書出先変更通知部103は、「処理定義ID:A」、「処理ID:3」のジャーナル(2回目)の書出先変更通知領域には「書出先変更通知(IN)」として「変更有り(IN)」を格納し、当該ジャーナルを書出部104が変更後のジャーナルファイル500へ書き出す。
次に、復旧時の動作を図18、図19及び図20を参照して説明する。
復旧装置200のフローは実施の形態1と同様であるため省略する。
図18及び図19は、読込部201及び書出先変更検知部202のフローである。
ステップ100では、読込部201は、対応付けられているジャーナルファイル400(500)を開き、ジャーナルを一つずつ取り出し、ステップ110へ進む。
ステップ110では、読込部201は、ジャーナルヘッダから処理定義IDと書出先変更通知領域の値を取得し、ステップ120へ進む。
ステップ120では、読込部201は、ステップ110で取得した処理定義ID用のジャーナル列格納領域(例えば、ワークメモリ内の領域)があるかどうかをチェックし、ジャーナル列格納領域が無ければジャーナル列格納領域を作成し、ステップ130へ進む。
ステップ130では、読込部201は、ステップ110で取得した書出先変更通知領域の値をチェックし、「変更有り」の場合にはステップ132へ、「変更無し」の場合にはステップ150へ進む。
ステップ132では、読込部201は、書出先変更通知領域の値をチェック、「変更有り(IN)」の場合にはステップ134へ、「変更有り(OUT)」の場合にはステップ140へ進む。
ステップ134では、この処理定義ID用のジャーナル列格納領域を新しく作成し、ステップ140へ進む。
ステップ140では、この処理定義IDで書出先ジャーナルファイルが変更されていることを書出先変更有無格納領域に格納し、ステップ150へ進む。
ステップ150では、読込部201は、この処理定義ID用のジャーナル列格納領域へジャーナル600を追加し、ステップ160へ進む。
ステップ160では、読込部201は、ジャーナルファイルのジャーナル600を全て読み込んだ場合、ステップ202へ進む。
全て読み込んで無い場合には、ステップ100へ進み、ジャーナル600の読込みを続ける。
ステップ202では、書出先変更検知部202が、処理定義IDごとにジャーナル格納領域に格納された1つ以上のジャーナル(ジャーナル列と呼ぶ)を取り出し、ステップ210へ進む。
ステップ210では、書出先変更検知部202は、該当する処理定義ID用の書出先変更有無格納領域を参照して書出先ジャーナルファイルが変更されているかどうかをチェックし、書出先ジャーナルファイルが変更されていない場合にはステップ220へ進み、変更されている場合にはステップ232へ進む。
ステップ220では、書出先変更検知部202は、ジャーナル列を復旧部203へ渡し、ステップ240へ進む。
ステップ220で書出先変更検知部202から復旧部203に出力されるジャーナル列は、図14のパターン1に該当するジャーナル列である。
一方、ステップ232では、書出先変更検知部202は、ジャーナル列を順序保証除外部206へ渡し、ステップ240へ進む。
ステップ232で書出先変更検知部202から順序保証除外部206に出力されるジャーナル列は、図14のパターン2〜4のいずれかに該当するジャーナル列である。
ステップ240では、書出先変更検知部202は、全ての処理定義IDのジャーナル列を処理している場合には、動作を終了する。
一方、未処理の処理定義IDがある場合には、ステップ202へ進み、ジャーナル列の処理を続ける。
図20は、順序保証除外部206の動作フローである。
ステップ100では、順序保証除外部206は、書出先変更検知部202から渡されたジャーナル列から一つジャーナル列を取り出し、ステップ110へ進む。
ステップ110では、順序保証除外部206は、取り出したジャーナル列を図14のパターン2と照合し、ステップ120へ進む。
ステップ120では、順序保証除外部206は、ジャーナル列がパターン2に該当する場合は、ステップ130へ進む。
ジャーナル列がパターン2以外のパターンに該当する場合には、ステップ140へ進む。
ステップ130では、順序保証除外部206は、ジャーナル列内のジャーナルを処理IDの小さい順番に処理IDごとに検査し、完了している処理IDがあるかどうかを検査し、完了している処理IDがある場合にはステップ160へ進み、完了している処理IDが一つも無い場合にはステップ140へ進む。
ステップ160では、順序保証除外部206は、完了している処理IDより後の処理IDのジャーナルをジャーナル列として再構成し、再構成したジャーナル列を復旧部203へ渡して、動作を終了する。
この場合は、完了している処理IDより後の処理IDのジャーナルで構成されるジャーナル列は他のジャーナル列との連結の対象とせずに、復旧部203へ渡す。
ステップ140では、順序保証除外部206は、渡されたジャーナル列を全て処理したかを検査し、処理していなければステップ100へ進み、処理を継続する。
一方、全てを処理していればステップ150へ進む。
ステップ150では、順序保証除外部206は、ジャーナル列を順序保証部204へ渡す。
例えば、図37に示されるジャーナル600群から、「処理定義ID:A」をもつジャーナル列(A1p、A2p、A1pn_1、A1pn_2)が生成され、当該ジャーナル列(A1p、A2p、A1pn_1、A1pn_2)が図14のパターン2に該当すると想定する。
ここで、「処理ID:1」は、A1pn_1、A1pn_2の両者が揃っているので完了しており、順序保証除外部206は、「処理ID:1」よりも後の処理IDである「処理ID:2」が記述されているジャーナルA2pを、ステップ160において、復旧部203へ出力する。
順序保証部204、順序待合せ部205、復旧部203の動作は実施の形態1と同様であるため、説明を省略する。
以上のように実施の形態2では、順序保証除外部により、書出先変更通知があるジャーナル列でもパターン2にマッチし、完了したジャーナルを含む場合には、このジャーナル列を、順序保証部へ渡さずに復旧部へ渡すようにしている。
このようなジャーナル列は、書出先ジャーナルファイルの変更があるため、共通の処理定義IDが記述されているジャーナルが複数のジャーナルファイルに跨って存在し、本来なら順序保証部によりそれらジャーナルを繋ぎ合わせ完全な状態としてから解析し、復旧部へ渡す必要がある。
しかし、パターン2のように末尾まで書出先ジャーナルファイルの変更がされておらず、さらに途中で完了している処理IDがある場合、その処理IDまでの処理が完了していることが分かるため、復旧処理に関してそれ以前のジャーナルは必要ない。
このようなジャーナルは、順序保証部へ渡す必要はなく、これらを復旧部へ直接渡すことにより、必要のない順序保証をなくし、アプリケーション全体の復旧処理を高速化することができる。
実施の形態3.
以上の実施の形態2では、書出先変更通知がセットされたジャーナル列でも順序保証除外パターンにマッチするジャーナル列は、順序保証部へ渡さないようにしている。
実施の形態3では、さらに順序保証部へ渡されたジャーナル列を分析して、順序待合せ対象から除外する。
実施の形態3に係るジャーナル管理システムの構成例を図21に示す。
本実施の形態では、実施の形態2の構成に加えて、ジャーナル出力装置100において、順序待合せ除外部208、順序待合せ除外パターン記憶部209を備える。
順序待合せ除外部208、順序待合せ除外パターン記憶部209以外の要素は、実施の形態2と同様なので説明を省略する。
順序待合せ除外パターン記憶部209は、順序待合せ除外パターンを記憶する。
順序待合せ除外パターンの詳細は後述する。
順序待合せ除外パターンは、制限ジャーナル列パターンの例に相当する。
また、順序待合せ除外パターン記憶部209は、記憶部の例に相当する。
順序待合せ除外部208は、順序保証除外部206により順序保証除外パターン(図14のパターン2)に該当しないと判断されたジャーナル列、更には、図20のステップ130により「完了しているジャーナルがない」と判定されたジャーナル列が、順序待合せ除外パターンに該当するか否かを判断する。
そして、ジャーナル列が順序待合せ除外パターンに該当する場合に、所定の処理IDが記述されているジャーナル列を、他のジャーナル列との連結の対象から除外する。
順序待合せ除外部208は、順序保証部204及び順序保証除外部206とともに、ジャーナル連結部の例に相当する。
次に、順序待合せ除外パターン記憶部209が記憶する順序待合せ除外パターンを説明する。
あるジャーナル列が書出先変更通知(IN)を持つ場合、そのジャーナル列に含まれるジャーナルの開始ジャーナル(ある処理定義のある処理IDの最初の処理ステージが完了したことを示すジャーナル)や開始ジャーナル以降のジャーナルが、それ以前のジャーナル列(他のジャーナルファイルに書き出されたジャーナルから生成されるジャーナル列)に含まれている可能性があるため、それ以前のジャーナル列の取得を待ち合わせ、共通の処理IDが記述されているジャーナル列同士を連結してから復旧処理を行う必要がある。
しかし、あるジャーナル列が書出先変更通知(IN)を持つ場合でも、そのジャーナル列の中で、ある処理IDの処理インスタンスが完了していることが分かる場合には、その処理IDより後の処理インスタンスを再開すればよいため、その処理IDが記述されているジャーナル及びその処理IDより前の処理IDが記述されているジャーナルは復旧処理で利用されない。
このため、ジャーナル列の待ち合わせをする必要は無い。
順序待合せ除外パターン記憶部209が記憶する順序待合せ除外パターンは、このようなジャーナル列を判別するためのパターンである。
順序待合せ除外パターンは、具体的には、図22に示すパターン1〜パターン3である。
パターン1は、次の条件を満たすジャーナル列のパターンである。
(1)先頭のジャーナルに書出先変更通知(IN)がある。
(2)ある処理ID:xの開始ジャーナルと全ての完了ジャーナルが揃っている。
ここで、「全ての完了ジャーナルが揃っている」とは、処理ブランチ数分、すなわち、処理手順内の分岐数分、完了ジャーナルが存在していることを意味する。
前述したように、開始ジャーナルとは、処理手順内の最初の工程(処理ステージ)が完了したことを示すジャーナルであり、完了ジャーナルとは、処理手順内の最後の工程(処理ステージ)が完了したことを示すジャーナルである。
パターン1に該当する場合は、処理ID:xの処理インスタンスと、処理ID:xの処理インスタンスよりも前の処理インスタンスは完了している。
もし、処理ID:xの処理インスタンスが、完了している最後の処理インスタンスであれば、処理ID:xの開始ジャーナルから末尾までのジャーナル(完了ジャーナル)を分析して復旧処理を開始することができる。
パターン1の例を図23に示す(処理ブランチ数は2)。
図23では、先頭ジャーナルA1pn_1に書出先変更通知(IN)があり、開始ジャーナルA2p1に対して完了ジャーナルA2pn_1、A2pn_2があり、完了ジャーナルが全て揃っている。
パターン2は、次の条件を満たすジャーナル列のパターンである。
(1)先頭のジャーナルに書出先変更有り(IN)がある。
(2)ある処理ID:xの全ての完了ジャーナルが揃っている(処理ID:xの開始ジャーナルはない)。
(3)先頭のジャーナルから処理ID:xの最後の完了ジャーナルまでの間、または最後の完了ジャーナルの次のジャーナルに、処理ID:xの次の処理ID:x+1の開始ジャーナルがある。
パターン2に該当する場合、処理ID:xの開始ジャーナルが無くても、全ての完了ジャーナルが揃っており、処理ID:xの処理インスタンスは完了している。
さらに、処理ID:xより次の処理ID:x+1の開始ジャーナルがそのジャーナル列にあれば、処理ID:xの処理インスタンスと、処理ID:xの処理インスタンスよりも前の処理インスタンスは復旧に必要ない。
パターン2の例を図24に示す(処理ブランチ数は2)。
図24では、先頭ジャーナルA3pに書出先変更通知(IN)があり、A2の完了ジャーナルA2pn_1、A2pn_2が揃っている。
A2の開始ジャーナルは無いが、A3の開始ジャーナルA3pがあるためA2以降の処理インスタンスのジャーナルは全てこのジャーナル列にある。
このため、A2以前のジャーナル列は復旧のために必要が無い。
パターン3は、次の条件を満たすジャーナル列のパターンである。
(1)先頭のジャーナルに書出先変更有り(IN)がある。
(2)ある処理ID:x、処理ID:x−1の完了ジャーナルがあり、1つのジャーナルとして見た場合に完了ジャーナルが全て揃っている。
例えばA1(処理ID:1)、A2(処理ID:2)があり、ブランチ数が4つの場合、完了ジャーナルA1pn_1、A2pn_2、A2pn_3、A2pn_4が揃っている状態である。
ここでの「揃っている」とは、A1のブランチID=2、3、4の完了ジャーナルは無いが、A2のブランチID=2、3、4の完了ジャーナルがあることを指す。
(3)先頭のジャーナルから処理ID:xの最後の完了ジャーナルまでの間、または最後の完了ジャーナルの次のジャーナルに、処理ID:xの次の処理ID:x+1の開始ジャーナルがある。
パターン3の例を図25に示す(処理ブランチ数は2)。
図25では、先頭ジャーナルA3pに書出先変更通知(IN)があり、A2の完了ジャーナルA2pn_2、A3の完了ジャーナルA3pn_1がある。
また、A4の開始ジャーナルA3pが存在している。
A2、A3のどちらのジャーナルも完了するためには完了ジャーナルが不足しているが、両方では補完しあっている。
同じ処理ステージ内では追い越しが無いため、A3pn_2が存在することで、ジャーナル列には現れないがA2pn_2がこのジャーナル列より前のジャーナル列(他のジャーナルファイルに書出されたジャーナルで構成されるジャーナル)に存在することが保証されるため、A2の完了ジャーナルが揃っていると判断することができる。
次に、本実施の形態に係るジャーナル管理システムの動作を説明する。
正常時のフローは、実施の形態2と同様のため省略する。
復旧時のフローは、図26の順序待合せ除外部208のフロー以外は実施の形態2と同様のため省略する。
図26は、順序待合せ除外部208の動作フローである。
ステップ100で、順序待合せ除外部208は、順序保証部204からジャーナル列を受け取るとステップ200へ進む。
順序待合せ除外部208が入力するジャーナル列は、図20のステップ120においてパターン3又はパターン4に該当すると判定されたジャーナル列、または、図20のステップ130により「完了しているジャーナルがない」と判定されたパターン2のジャーナル列である。
ステップ200では、順序待合せ除外部208は、取得したジャーナル列と順序保証除外パターンとを照合し、ステップ210へ進む。
ステップ210では、順序待合せ除外部208は、取得したジャーナル列が、いずれかの順序保証除外パターンにマッチする場合には、ステップ220へ進み、いずれの順序保証除外パターンにもマッチしない場合には、ステップ240へ進む。
ステップ220では、順序待合せ除外部208は、順序保証除外パターンとマッチしたジャーナル列の処理IDを取得し、ステップ230へ進む。
すなわち、順序待合せ除外部208は、図22の各パターンの説明で示している処理ID:xに相当する処理IDをジャーナル列から抽出する。
ステップ230では、順序待合せ除外部208は、処理ID格納領域(例えば、ワークメモリ内の領域)をチェックし、ステップ220で取得した処理IDが処理ID格納領域に登録されていなければ、取得した処理IDを処理ID格納領域に登録する。
ステップ220で取得した処理IDが既に処理ID格納領域に登録されている場合は、登録されている処理IDよりも取得した処理IDの方が大きい場合には、順序待合せ除外部208は、取得した処理IDを上書きして登録し、ステップ240へ進む。
ステップ240では、順序待合せ除外部208は、処理ID格納領域をチェックし、ステップ100で受け取ったジャーナル列の処理IDが処理ID格納領域に登録されている場合は、ステップ250へ進み、登録されていない場合はステップ110へ進む。
ステップ250では、順序待合せ除外部208は、ステップ100で受け取ったジャーナル列と、これまで受け取り繋ぎ合わせたジャーナル列を検査し、処理ID格納領域にある処理ID以降のジャーナルが全て揃っているかどうかを検査する。
揃っている場合にはステップ260へ、揃っていない場合にはステップ110へ進む。
ステップ260では、順序待合せ除外部208は、ステップ100で受け取ったジャーナル列とこれまで受け取り繋ぎ合わせたジャーナル列を繋ぎ合わせ、処理ID格納領域にある処理ID以降のジャーナルを抽出してジャーナル列を作成し、作成したジャーナル列を復旧部203へ渡して、動作を終了する。
ステップ110では、順序待合せ除外部208は、ステップ100で受け取ったジャーナル列とこれまで受け取り繋ぎ合わせたジャーナル列を繋ぎ合わせ、ステップ120へ進む。
ステップ120では、順序待合せ除外部208は、順序保証部204からジャーナル受取完了通知が来たかどうかを検査し、ジャーナル受取完了通知が来た場合には、ステップ130へ進む。
ジャーナル受取完了通知が来ていない場合には、ステップ100へ進み、順序待合せ処理を継続する。
ステップ130では、順序待合せ除外部208は、繋ぎ合せたジャーナル列を復旧部203へ渡して、動作を終了する。
以上のように、実施の形態3では、順序保証部へ渡されたジャーナル列でも、順序待合せ除外パターンにマッチするジャーナル列は、それ以前のジャーナル列の待ち合わせを行わないようにする。
つまり、実施の形態3に係る順序待合せ除外部208は、処理ID:xに相当する処理IDよりも前の発生順序を表す処理IDが記述されているジャーナル列を、連結の対象から除外する。
これにより、待ち合わせによる処理遅延を排除し、アプリケーション全体の復旧処理を高速化することができる。
最後に、実施の形態1〜3に示したジャーナル出力装置100及び復旧装置200のハードウェア構成例について説明する。
図38は、実施の形態1〜3に示すジャーナル出力装置100及び復旧装置200のハードウェア資源の一例を示す図である。
なお、図38の構成は、あくまでもジャーナル出力装置100及び復旧装置200のハードウェア構成の一例を示すものであり、ジャーナル出力装置100及び復旧装置200のハードウェア構成は図38に記載の構成に限らず、他の構成であってもよい。
図38において、ジャーナル出力装置100及び復旧装置200の各々は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「〜記憶部」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、ネットワークに接続されている。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
ジャーナル出力装置100及び復旧装置200の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1〜3の説明において「〜部」(「〜記憶部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。
プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の生成」、「〜の作成」、「〜の計算」、「〜の算出」、「〜の比較」、「〜の検査」、「〜の照合」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」、「〜の取得」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜3の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1〜3で説明したフローチャートに示すステップ、手順、処理により、ジャーナル出力装置100及び復旧装置200の処理をジャーナル管理方法として捉えることができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1〜3に示すジャーナル出力装置100及び復旧装置200は、それぞれ、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 ジャーナル出力装置、101 ジャーナル生成部、102 書出先決定部、103 書出先変更通知部、104 書出部、105 テーブル記憶部、106 書出先決定テーブル、107 書出先保持テーブル、200 復旧装置、201 読込部、202 書出先変更検知部、203 復旧部、204 順序保証部、205 順序待合せ部、206 順序保証除外部、207 順序保証除外パターン記憶部、208 順序待合せ除外部、209 順序待合せ除外パターン記憶部、300 アプリケーション、400 ジャーナルファイル、500 ジャーナルファイル、600 ジャーナル。

Claims (9)

  1. 複数種の処理手順が含まれるアプリケーションプログラムでの処理の進行状況を示すデータであって、処理が進行している処理手順の処理手順ID(Identifier)が記述されるデータをジャーナルとして生成するジャーナル生成部と、
    生成されたジャーナルごとに、ジャーナルの書出先となる書出先ジャーナルファイルを複数のジャーナルファイルの中から決定する書出先決定部と、
    処理手順IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、書出先ジャーナルファイルの変更を通知する書出先変更通知を、書出先ジャーナルファイル変更前のいずれかのジャーナルと書出先ジャーナルファイル変更後のいずれかのジャーナルに記述する書出先変更通知部と、
    前記書出先決定部により決定された書出先ジャーナルファイルにジャーナルを書き出す書出部と、
    それぞれが、いずれかのジャーナルファイルに対応付けられ、対応付けられているジャーナルファイルからジャーナルを読み込み、読み込んだジャーナルを処理手順IDに従って分類し、処理手順IDごとに、分類された1つ以上のジャーナルからジャーナル列を生成し、読み込んだジャーナルの中に書出先変更通知が記述されているジャーナルがある場合に、書出先変更通知が記述されているジャーナルに記述されている処理手順IDを書出先変更発生IDとして他の処理手順IDから区別する複数のジャーナル読込分類部と、
    書出先変更発生IDに対して生成されたジャーナル列を少なくともいずれかのジャーナル読込分類部から入力し、共通する書出先変更発生IDに対して生成された2つ以上のジャーナル列を連結するジャーナル連結部とを有することを特徴とするジャーナル管理システム。
  2. 前記ジャーナル管理システムは、更に、
    書出先変更発生ID以外の処理手順IDに対して生成されたジャーナル列をいずれかのジャーナル読込分類部から入力し、入力したジャーナル列を解析し、
    書出先変更発生IDに対して生成された連結後のジャーナル列を前記ジャーナル連結部から入力し、入力した連結後のジャーナル列を解析するジャーナル解析部を有することを特徴とする請求項1に記載のジャーナル管理システム。
  3. 前記書出先変更通知部は、
    処理手順IDが共通するジャーナルの間で書出先ジャーナルファイルが変更になる場合に、
    書出先ジャーナルファイル変更前の最後尾のジャーナルに、書出先ジャーナルファイル変更前の最後尾のジャーナルであることを通知する変更前最後尾データ通知を、前記書出先変更通知として記述し、
    書出先ジャーナルファイル変更後の先頭のジャーナルに、書出先ジャーナルファイル変更後の先頭のジャーナルであることを通知する変更後先頭データ通知を、前記書出先変更通知として記述し、
    前記ジャーナル管理システムは、更に、
    先頭のジャーナルに変更後先頭データ通知が記述され、最後尾のジャーナルに変更前最後尾データ通知が記述されていないというジャーナル列のパターンを、特殊ジャーナル列パターンとして記憶する記憶部を有し、
    前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当するか否かを判断し、入力したジャーナル列が前記特殊ジャーナル列パターンに該当する場合に、他のジャーナル列との連結の対象とすることなく、入力したジャーナル列の一部を前記ジャーナル解析部に出力することを特徴とする請求項2に記載のジャーナル管理システム。
  4. 前記ジャーナル管理システムは、
    前記アプリケーションプログラムにおいて発生する同じ処理手順の複数の処理インスタンスに、処理インスタンスの発生順序を表す処理インスタンスIDを設定し、
    前記ジャーナル生成部は、
    処理手順IDと、処理インスタンスIDとが記述されるジャーナルを生成し、
    前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当する場合に、入力したジャーナル列を解析して、処理手順が完了している処理インスタンスが存在するか否かを判断し、
    入力したジャーナル列を解析した結果、処理手順が完了している処理インスタンスが存在する場合に、処理手順が完了している処理インスタンスよりも後の発生順序を表す処理インスタンスIDが記述されている1つ以上のジャーナルを、入力したジャーナル列から抽出し、
    抽出したジャーナルを、他のジャーナル列との連結の対象とすることなく、前記ジャーナル解析部に出力することを特徴とする請求項3に記載のジャーナル管理システム。
  5. 前記ジャーナル生成部は、
    m(m≧2)個の分岐が存在する処理手順に対して、各分岐での最後の工程が完了したことを示すm個の完了ジャーナルを、処理インスタンスごとに生成し、
    前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当する場合に、入力したジャーナル列に、共通の処理インスタンスIDが記述されるm個の完了ジャーナルが存在する場合に、当該処理インスタンスIDに対応する処理インスタンスにおいて処理手順が完了していると判断することを特徴とする請求項4に記載のジャーナル管理システム。
  6. 前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当し、入力したジャーナル列を解析した結果、処理手順が完了している処理インスタンスが存在しない場合に、
    入力したジャーナル列を、共通する書出先変更発生IDに対して生成された他のジャーナル列と連結し、連結後のジャーナル列を前記ジャーナル解析部に出力することを特徴とする請求項4に記載のジャーナル管理システム。
  7. 前記記憶部は、
    先頭のジャーナルに変更後先頭データ通知が記述され、
    処理手順内の最初の工程の処理が完了したことを示す開始ジャーナルであって、x番目の発生順序を表す処理インスタンスIDが記述される開始ジャーナルが存在し、
    処理手順内の最後の工程の処理が完了したことを示す完了ジャーナルであって、前記x番目の発生順序を表す処理インスタンスIDが記述される完了ジャーナルが、処理手順内の分岐数分存在する
    というジャーナル列のパターンを、制限ジャーナル列パターンとして記憶し、
    前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当しない場合に、入力したジャーナル列が前記制限ジャーナル列パターンに該当するか否かを判断し、入力したジャーナル列が前記制限ジャーナル列パターンに該当する場合に、
    前記x番目の発生順序を表す処理インスタンスIDに相当する処理インスタンスIDを入力したジャーナル列から抽出し、抽出した処理インスタンスIDよりも前の発生順序を表す処理インスタンスIDが記述されているジャーナル列を、連結の対象から除外することを特徴とする請求項4に記載のジャーナル管理システム。
  8. 前記記憶部は、
    先頭のジャーナルに変更後先頭データ通知が記述され、
    処理手順内の最後の工程の処理が完了したことを示す完了ジャーナルであって、x番目の発生順序を表す処理インスタンスIDが記述される完了ジャーナルが、処理手順内の分岐数分存在し、
    処理手順内の最初の工程の処理が完了したことを示す開始ジャーナルであって、(x+1)番目の発生順序を表す処理インスタンスIDが記述される開始ジャーナルが、先頭のジャーナルと前記x番目の発生順序を表す処理インスタンスIDの最後尾の完了ジャーナルとの間又は当該最後尾の完了ジャーナルの直後に存在している
    というジャーナル列のパターンを、制限ジャーナル列パターンとして記憶し、
    前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当しない場合に、入力したジャーナル列が前記制限ジャーナル列パターンに該当するか否かを判断し、入力したジャーナル列が前記制限ジャーナル列パターンに該当する場合に、
    前記x番目の発生順序を表す処理インスタンスIDに相当する処理インスタンスIDを入力したジャーナル列から抽出し、抽出した処理インスタンスIDよりも前の発生順序を表す処理インスタンスIDが記述されているジャーナル列を、連結の対象から除外することを特徴とする請求項4に記載のジャーナル管理システム。
  9. 前記記憶部は、
    先頭のジャーナルに変更後先頭データ通知が記述され、
    処理手順内の最後の工程の処理が完了したことを示す完了ジャーナルであって、x番目の発生順序を表す処理インスタンスID及び(x−1)番目の発生順序を表す処理インスタンスIDのいずれかが記述される完了ジャーナルが、処理手順内の分岐数分存在し、
    処理手順内の最初の工程の処理が完了したことを示す開始ジャーナルであって、(x+1)番目の発生順序を表す処理インスタンスIDが記述される開始ジャーナルが、先頭のジャーナルと前記x番目の発生順序を表す処理インスタンスIDの最後尾の完了ジャーナルとの間又は当該最後尾の完了ジャーナルの直後に存在している
    というジャーナル列のパターンを、制限ジャーナル列パターンとして記憶し、
    前記ジャーナル連結部は、
    入力したジャーナル列が前記特殊ジャーナル列パターンに該当しない場合に、入力したジャーナル列が前記制限ジャーナル列パターンに該当するか否かを判断し、入力したジャーナル列が前記制限ジャーナル列パターンに該当する場合に、
    前記x番目の発生順序を表す処理インスタンスIDに相当する処理インスタンスIDを入力したジャーナル列から抽出し、抽出した処理インスタンスIDよりも前の発生順序を表す処理インスタンスIDが記述されているジャーナル列を、連結の対象から除外することを特徴とする請求項4に記載のジャーナル管理システム。
JP2013504601A 2011-07-14 2011-07-14 ジャーナル管理システム Expired - Fee Related JP5340507B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/066040 WO2013008327A1 (ja) 2011-07-14 2011-07-14 ジャーナル管理システム

Publications (2)

Publication Number Publication Date
JP5340507B2 JP5340507B2 (ja) 2013-11-13
JPWO2013008327A1 true JPWO2013008327A1 (ja) 2015-02-23

Family

ID=47505646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013504601A Expired - Fee Related JP5340507B2 (ja) 2011-07-14 2011-07-14 ジャーナル管理システム

Country Status (4)

Country Link
US (1) US20130304703A1 (ja)
EP (1) EP2653972A1 (ja)
JP (1) JP5340507B2 (ja)
WO (1) WO2013008327A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6194641B2 (ja) * 2013-05-31 2017-09-13 富士電機株式会社 情報処理装置及びプログラム
KR102435910B1 (ko) * 2022-03-15 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05225024A (ja) * 1992-02-13 1993-09-03 Nec Corp ジャーナル媒体作成方式
JPH10228404A (ja) * 1996-12-09 1998-08-25 Toshiba Corp ジャーナル管理システムおよびジャーナル管理方法
JP2005174193A (ja) * 2003-12-15 2005-06-30 Nec Software Chubu Ltd 更新照会分散ファイルサーバ

Also Published As

Publication number Publication date
EP2653972A1 (en) 2013-10-23
JP5340507B2 (ja) 2013-11-13
US20130304703A1 (en) 2013-11-14
WO2013008327A1 (ja) 2013-01-17

Similar Documents

Publication Publication Date Title
CN103069385B (zh) 用于动态加载基于图的计算的系统和方法
US10089169B2 (en) Identifying solutions to application execution problems in distributed computing environments
US20110320882A1 (en) Accelerated virtual environments deployment troubleshooting based on two level file system signature
US10540498B2 (en) Technologies for hardware assisted native malware detection
US8271768B2 (en) Concurrent handling of exceptions in received aggregate exception structure with supplied exception handlers and marking handled exceptions
JP6266008B2 (ja) 仮想マシン・イメージをコンピュータ・システムに適用する方法、情報処理システム、コンピュータ・プログラム
US8146085B2 (en) Concurrent exception handling using an aggregated exception structure
US20190294571A1 (en) Operation of a multi-slice processor implementing datapath steering
JP5340507B2 (ja) ジャーナル管理システム
US20200218635A1 (en) Logging stored information for identifying a fix for and/or a cause of an error condition
JP5968451B2 (ja) 計算機システム、及びプログラム
US11068463B2 (en) System and method for managing log data
US10733065B2 (en) Recovery of local resource
US20140157230A1 (en) Streamlining Hardware Initialization Code
JP5686686B2 (ja) プログラムトレース管理装置及びプログラムトレース管理方法及びプログラム
US9087311B2 (en) Method, system and program product for grouping related program sequences
JP4989496B2 (ja) コマンドネット実行装置、コマンドネット実行プログラム及びコマンドネット実行プログラムを記録したコンピュータ読み取り可能な記録媒体
JP7336911B2 (ja) 処理特定装置、処理特定方法及び処理特定プログラム
WO2022107346A1 (ja) データ処理装置、プログラム、システム、及びデータ処理方法
CN116737487A (zh) 一种验证数据的确定方法、装置、存储介质及电子设备
CN115525890A (zh) 程序的保护方法、检测器、电子设备及存储介质
JP2012226504A (ja) プログラムの実行結果の比較方法

Legal Events

Date Code Title Description
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: 20130709

R150 Certificate of patent or registration of utility model

Ref document number: 5340507

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees