(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023156035
(43)【公開日】2023-10-24
(54)【発明の名称】計算機システム及びデータの整合性維持方法
(51)【国際特許分類】
G06F 16/182 20190101AFI20231017BHJP
G06F 11/14 20060101ALI20231017BHJP
G06F 9/46 20060101ALI20231017BHJP
【FI】
G06F16/182
G06F11/14 612
G06F9/46 430
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022065633
(22)【出願日】2022-04-12
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】大越 淳平
(72)【発明者】
【氏名】坂田 匡通
(72)【発明者】
【氏名】野田 昌太郎
(57)【要約】
【課題】トランザクションの仕様及びトランザクションの実行状況等を考慮して適用するデータ不整合の修正手段を選択する。
【解決手段】計算機システムは、サービスを実行する計算機、及び複数のサービスにまたがったトランザクションを複数のローカルトランザクションに分割し、実行する計算機と接続し、サービスにおけるローカルトランザクションの仕様を管理するためのサービス管理情報と、データ不整合を修正するためのプログラム及び適用条件を対応づけたデータを格納するプログラム管理情報と、を保持する。計算機システムは、トランザクションの失敗を検出した場合、サービス管理情報、プログラム管理情報、及び複数のローカルトランザクションの実行状態に基づいて、適用するプログラムを選択し、実行する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
計算機システムであって、
プロセッサ、前記プロセッサに接続される記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを有する、少なくとも一つの計算機を備え、
サービスを実行する少なくとも一つの第1計算機、及び複数のサービスにまたがったトランザクションを複数のローカルトランザクションに分割し、実行する少なくとも一つの第2計算機と接続し、
前記サービスにおけるローカルトランザクションの仕様を管理するためのサービス管理情報と、前記トランザクションの失敗によって生じるデータ不整合を修正するために実行するプログラム、及び適用条件を対応づけたデータを格納するプログラム管理情報と、を保持し、
前記少なくとも一つの計算機は、
前記トランザクションの失敗を検出した場合、前記複数のローカルトランザクションの実行状態を確認し、
前記サービス管理情報、前記プログラム管理情報、及び前記複数のローカルトランザクションの実行状態に基づいて、適用する前記プログラムを選択し、
選択された前記プログラムによって実現されるデータ整合性維持処理を実行することを特徴とする計算機システム。
【請求項2】
請求項1に記載の計算機システムであって、
前記プログラム管理情報に格納される前記データは、優先順位を含み、
前記少なくとも一つの計算機は、前記優先順位にしたがって前記データを選択し、
前記サービス管理情報、選択された前記データに含まれる前記適用条件、及び前記複数のローカルトランザクションの実行状態に基づいて、選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を実行できるか否かを判定することを特徴とする計算機システム。
【請求項3】
請求項2に記載の計算機システムであって、
前記少なくとも一つの計算機は、
前記適用条件を満たさないため、前記選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を適用できないと判定された場合、前記適用条件を満たすための改善を実現する改善処理を実行し、
前記改善処理が実行された後、選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を実行できるか否かを判定することを特徴とする計算機システム。
【請求項4】
請求項2に記載の計算機システムであって、
前記少なくとも一つの計算機は、前記プログラム、前記適用条件、及び前記優先順位を設定するためのインタフェースを提供することを特徴とする計算機システム。
【請求項5】
請求項1に記載の計算機システムであって、
前記少なくとも一つの計算機は、選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を実行した後、前記トランザクションの失敗を検出した場合、新たに前記プログラムを選択し、新たに選択された前記プログラムによって実現されるデータ整合性維持処理を実行することを特徴とする計算機システム。
【請求項6】
請求項1に記載の計算機システムであって、
前記少なくとも一つの計算機は、前記サービスにおけるローカルトランザクションの仕様を設定するためのインタフェースを提供することを特徴とする計算機システム。
【請求項7】
計算機システムが実行するデータの整合性維持方法であって、
前記計算機システムは、
プロセッサ、前記プロセッサに接続される記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを有する、少なくとも一つの計算機を含み、
サービスを実行する少なくとも一つの第1計算機、及び複数のサービスにまたがったトランザクションを複数のローカルトランザクションに分割し、実行する少なくとも一つの第2計算機と接続し、
前記サービスにおけるローカルトランザクションの仕様を管理するためのサービス管理情報と、前記トランザクションの失敗によって生じるデータ不整合を修正するために実行するプログラム、及び適用条件を対応づけたデータを格納するプログラム管理情報と、を保持し、
前記データの整合性維持方法は、
前記少なくとも一つの計算機が、前記トランザクションの失敗を検出した場合、前記複数のローカルトランザクションの実行状態を確認する第1のステップと、
前記少なくとも一つの計算機が、前記サービス管理情報、前記プログラム管理情報、及び前記複数のローカルトランザクションの実行状態に基づいて、適用する前記プログラムを選択する第2のステップと、
前記少なくとも一つの計算機が、選択された前記プログラムによって実現されるデータ整合性維持処理を実行する第3のステップと、を含むことを特徴とするデータの整合性維持方法。
【請求項8】
請求項7に記載のデータの整合性維持方法であって、
前記プログラム管理情報に格納される前記データは、優先順位を含み、
前記第2のステップは、
前記少なくとも一つの計算機が、前記優先順位にしたがって前記データを選択する第4のステップと、
前記少なくとも一つの計算機が、前記サービス管理情報、選択された前記データに含まれる前記適用条件、及び前記複数のローカルトランザクションの実行状態に基づいて、選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を実行できるか否かを判定する第5のステップと、を含むことを特徴とするデータの整合性維持方法。
【請求項9】
請求項8に記載のデータの整合性維持方法であって、
前記第5のステップは、
前記適用条件を満たさないため、前記選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を適用できないと判定された場合、前記少なくとも一つの計算機が、前記適用条件を満たすための改善を実現する改善処理を実行するステップと、
前記少なくとも一つの計算機が、前記改善処理が実行された後、選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を実行できるか否かを判定するステップと、を含むことを特徴とするデータの整合性維持方法。
【請求項10】
請求項8に記載のデータの整合性維持方法であって、
前記少なくとも一つの計算機が、前記プログラム、前記適用条件、及び前記優先順位を設定するためのインタフェースを提供するステップを含むことを特徴とするデータの整合性維持方法。
【請求項11】
請求項7に記載のデータの整合性維持方法であって、
前記少なくとも一つの計算機が、選択された前記データに対応する前記プログラムによって実現されるデータ整合性維持処理を実行した後、前記トランザクションの失敗を検出した場合、新たに前記プログラムを選択し、新たに選択された前記プログラムによって実現されるデータ整合性維持処理を実行するステップを含むことを特徴とするデータの整合性維持方法。
【請求項12】
請求項7に記載のデータの整合性維持方法であって、
前記少なくとも一つの計算機が、前記サービスにおけるローカルトランザクションの仕様を設定するためのインタフェースを提供するステップを含むことを特徴とするデータの整合性維持方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散トランザクションにおけるデータの不整合を修正する技術に関する。
【背景技術】
【0002】
複数のサービスを組み合わせて一つの機能を実現するマイクロサービスの利用が活発になっている。一方、マイクロサービスでは、分散トランザクションによるデータの整合性の維持が難しいことが知られている。これに対して、sagaパターンを利用してデータの整合性を維持する方法が知られている。
【0003】
sagaパターンでは、マイクロサービスにおけるトランザクションが複数のローカルトランザクションに分割され、個々のローカルトランザクションが実行される。一連のローカルトランザクションをsagaと呼ぶ。sagaパターンでは、ローカルトランザクションの失敗に伴うロールバック方法として、補償トランザクションが実行される。これによって、分散トランザクションにおけるデータの整合性を維持できる。
【0004】
しかし、sagaパターンを利用した場合でも、sagaそのものの失敗に伴うデータ整合性の維持が課題となる。そのため、リコンサイル処理を行ってデータの整合性を確認し、データの整合性を維持する処理が必要となる。これに対して特許文献1に記載の技術が知られている。
【0005】
特許文献1には、「データベースへのトランザクションログのインライン委譲に基づいたトランザクションリカバリをサポートするためのシステムおよび方法が提供される。このシステムは、あるトランザクションのトランザクションリカバリ情報を、永続性記憶装置から取得することができる。準備フェーズ中、トランザクションリカバリ情報は、永続性記憶装置に関連付けられたリソースマネージャにおいて持続させる。さらに、このトランザクションの、1つ以上の参加リソースマネージャから、システムは、1つ以上のインダウトトランザクションを取得することができる。次に、システムは、上記1つ以上のインダウトトランザクションを上記トランザクションリカバリ情報と突き合わせることによって、上記1つ以上のインダウトトランザクションをコミットするかまたはロールバックするかを判断することができる。」ことが記載されている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、トランザクションのログとリカバリ情報とに基づいて、失敗したトランザクションのコミット又はロールバックを行うことができる。
【0008】
しかし、データ不整合の修正手段は複数存在するため、サービスにおけるトランザクションの仕様及びトランザクションの実行状況等に応じて選択する必要がある。
【0009】
本発明は、トランザクションの仕様及びトランザクションの実行状況等を考慮して適用するデータ不整合の修正手段を選択する技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、計算機システムであって、プロセッサ、前記プロセッサに接続される記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを有する、少なくとも一つの計算機を備え、サービスを実行する少なくとも一つの第1計算機、及び複数のサービスにまたがったトランザクションを複数のローカルトランザクションに分割し、実行する少なくとも一つの第2計算機と接続し、前記サービスにおけるローカルトランザクションの仕様を管理するためのサービス管理情報と、前記トランザクションの失敗によって生じるデータ不整合を修正するために実行するプログラム、及び適用条件を対応づけたデータを格納するプログラム管理情報と、を保持し、前記少なくとも一つの計算機は、前記トランザクションの失敗を検出した場合、前記複数のローカルトランザクションの実行状態を確認し、前記サービス管理情報、前記プログラム管理情報、及び前記複数のローカルトランザクションの実行状態に基づいて、適用する前記プログラムを選択し、選択された前記プログラムによって実現されるデータ整合性維持処理を実行する。
【発明の効果】
【0011】
本発明によれば、管理計算機は、セッションの属性に基づいて、セッションを用いた通信の中断時間が短く、かつ、セッション情報の移行による効果が迅速に通信システムに反映されるように複数のセッション情報の移行順番を決定する。決定された移行順番にしたがって、複数のセッション情報を移行させることによって、通信サービスの中断時間を短縮し、また、スケールアウト等の効果が反映される時間を短縮できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0012】
【
図1】実施例1のシステムの構成例を示す図である。
【
図2】実施例1のデータ整合性維持装置のハードウェア構成を説明する図である。
【
図3A】実施例1の分散トランザクション関連情報の一例を示す図である。
【
図3B】実施例1の分散トランザクション関連情報の一例を示す図である。
【
図4】実施例1のプログラム管理情報の一例を示す図である。
【
図5A】実施例1のプログラムの一例を示す図である。
【
図5B】実施例1のプログラムの一例を示す図である。
【
図6】実施例1のデータ整合性維持装置が表示する画面の一例を示す図である。
【
図7】実施例1のデータ整合性維持装置が表示する画面の一例を示す図である。
【
図8】実施例1のシステムにおける分散トランザクションの実行フローを説明するシーケンス図である。
【
図9】実施例1のデータ整合性維持装置が実行するデータ整合性維持プログラム決定処理の一例を説明するフローチャートである。
【
図10A】実施例1のローカルトランザクションの実行フローの一例を示す図である。
【
図10B】実施例1のローカルトランザクションの実行フローの一例を示す図である。
【
図11A】実施例1のローカルトランザクション実行状態管理情報の更新状態の一例を示す図である。
【
図11B】実施例1のローカルトランザクション実行状態管理情報の更新状態の一例を示す図である。
【
図11C】実施例1のローカルトランザクション実行状態管理情報の更新状態の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0014】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0015】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【0016】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例0017】
図1は、実施例1のシステムの構成例を示す図である。
【0018】
システムは、サービス装置100、分散トランザクション処理装置101、及びデータ整合性維持装置102を含む。各装置はネットワーク105を介して互いに接続される。ネットワーク105は、例えば、LAN(Local Area Network)及びWAN(Wide Area Network)等である。ネットワーク105の接続方式は有線及び無線のいずれでもよい。
【0019】
サービス装置100は、マイクロサービスを構成するサービスを実行する装置である。サービス装置100は、サービス処理部110及びデータベース111を有する。サービス処理部110はサービスを実行する。データベース111には、サービス装置100が実行するサービスに関連する情報が格納される。
【0020】
分散トランザクション処理装置101は、複数のサービスにまたがったトランザクション(分散トランザクション)の実行を制御する装置である。分散トランザクション処理装置101は、分散トランザクション処理部120及び実行状態管理部121を含む。分散トランザクション処理部120は分散トランザクションを制御する。実行状態管理部121は、分散トランザクションを分割したローカルトランザクションの実行状態を管理する。
【0021】
データ整合性維持装置102は、分散トランザクションによるデータの整合性を維持する装置である。データ整合性維持装置102は、データ整合性維持部130、分散トランザクション関連情報131、及びプログラム管理情報132を有する。データ整合性維持部130は、分散トランザクションの失敗に伴うデータの不整合を監視し、また、データの不整合を検出した場合、データの不整合を修正するために実行するプログラム(データ整合性維持プログラム)を選択し、当該プログラムを実行する。分散トランザクション関連情報131は、分散トランザクションに関する情報である。プログラム管理情報132は、データ整合性維持プログラムを管理するための情報である。
【0022】
ここで、各装置のハードウェア構成について説明する。
図2は、実施例1のデータ整合性維持装置102のハードウェア構成を説明する図である。なお、サービス装置100及び分散トランザクション処理装置101も同様のハードウェア構成である。
【0023】
データ整合性維持装置102は、プロセッサ200、主記憶装置201、副記憶装置202、入力装置203、出力装置204、及びネットワークインタフェース205を有する。
【0024】
プロセッサ200は、主記憶装置201に格納されるプログラムを実行する。プロセッサ200がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、プロセッサ200が当該機能部を実現するプログラムを実行していることを示す。
【0025】
主記憶装置201は、DRAM(Dynamic Random Access Memory)等であり、プロセッサ200が実行するプログラム及びプログラムが使用する情報を格納する。また、主記憶装置201はワークエリアとしても用いられる。副記憶装置202は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等である。主記憶装置201に格納されるプログラム及び情報は、副記憶装置202に格納されてもよい。この場合、プロセッサ200が副記憶装置202からプログラム及び情報を読み出し、主記憶装置201にロードする。
【0026】
入力装置203は、キーボード、マウス、及びタッチパネル等である、出力装置204は、ディスプレイ等である。ネットワークインタフェース205は、ネットワークを介して外部の装置と通信するためのインタフェースである。
【0027】
なお、サービス装置100、分散トランザクション処理装置101、及びデータ整合性維持装置102は、入力装置203及び出力装置204を有していなくてもよい。
【0028】
なお、サービス装置100、分散トランザクション処理装置101、及びデータ整合性維持装置102は、仮想化技術を用いて実現してもよい。また、複数の計算機を用いて、サービス装置100、分散トランザクション処理装置101、及びデータ整合性維持装置102の機能を実現してもよい。
【0029】
なお、サービス装置100、分散トランザクション処理装置101、及びデータ整合性維持装置102の各々が有する機能部については、複数のモジュールを一つのモジュールにまとめてもよいし、一つのモジュールを機能毎に複数のモジュールに分けてもよい。
【0030】
図3A及び
図3Bは、実施例1の分散トランザクション関連情報131の一例を示す図である。
【0031】
分散トランザクション関連情報131には、ローカルトランザクション実行状態管理情報300及びサービス管理情報310が格納される。
【0032】
ローカルトランザクション実行状態管理情報300は、ローカルトランザクションの実行状態を管理するための情報であり、タスク名301、実行結果302、サービス状態303、及び実行時刻304を含むエントリを格納する。一つのローカルトランザクションに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0033】
タスク名301は、ローカルトランザクションの名称を格納するフィールドである。実行結果302は、ローカルトランザクションの実行状態を格納するフィールドである。サービス状態303は、ローカルトランザクションの実行対象となるサービスの状態を格納するフィールドである。実行時刻304は、ローカルトランザクションの実行時刻を格納するフィールドである。
【0034】
サービス管理情報310は、マイクロサービスを構成するサービスにおけるローカルトランザクションの仕様を管理するための情報であり、サービス名311、タスク名312、実行可能期間(ローカル)313、補償トランザクションフラグ314、及び実行可能期間(補償)315を含む。サービス及びローカルトランザクションの組合せに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0035】
なお、サービスにおけるローカルトランザクションの仕様とは、例えば、ローカルトランザクションの実装及び実行条件等を意味する。
【0036】
サービス名311は、サービスの名称を格納するフィールドである。タスク名312は、サービスを対象とするローカルトランザクションの名称を格納するフィールドである。実行可能期間(ローカル)313は、ローカルトランザクションの実行契機の発生後からローカルトランザクションを実行できる期間を格納するフィールドである。
【0037】
補償トランザクションフラグ314は、ローカルトランザクションに基づく操作を取り消すための補償トランザクションが実装されているか否かを示すフラグを格納するフィールドである。補償トランザクションが実装されている場合「Ture」が格納され、補償トランザクションが実行されていない場合「False」が格納される。実行可能期間(補償)315は、補償トランザクションの実行契機の発生後から補償トランザクションを実行できる期間を格納するフィールドである。なお、補償トランザクションフラグ314が「False」であるエントリの実行可能期間(補償)315は空欄である。
【0038】
図4は、実施例1のプログラム管理情報132の一例を示す図である。
図5A及び
図5Bは、実施例1のプログラムの一例を示す図である。
【0039】
プログラム管理情報132は、手段401、プログラム402、及び優先順位403を含むエントリを格納する。一つのプログラムに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0040】
手段401は、プログラムに追って実現される手段に関する情報をフィールドである。プログラム402は、手段401を実現するためのプログラムを格納するフィールドである。
図4では、説明のためにプログラムの名称を記載しているが、プログラム402には、プログラムの実行ファイル又は実行ファイルが格納されたパス等が格納される。
【0041】
優先順位403は、データ整合性維持プログラムを適用する優先順位を格納するフィールドである。Rootが最も優先順位が高い。また、数値が小さいほど優先順位が高い。
【0042】
実施例1では、データ整合性維持プログラムについては優先順位が設定され、データ整合性維持プログラムの適用条件を満たすための改善を実現するためのプログラム(改善プログラム)には優先順位は設定されない。
【0043】
プログラム管理情報132で管理されるプログラムは、例えば、
図5A及び
図5Bに示すような内容の処理を実行するプログラムである。
図5Aは、改善プログラムの一例を示す。
図5Bは、データ整合性維持プログラムの一例を示す。データ整合性維持プログラムには適用条件が含まれる。なお、適用条件は、プログラム管理情報132に含めてもよい。
【0044】
次に、システムにおける処理について説明する。
【0045】
マイクロサービスを管理又は利用するユーザは、マイクロサービスを構成するサービスにおけるローカルトランザクションの取扱に関する情報をデータ整合性維持装置102に登録する。例えば、
図6に示すような画面600を用いて情報が登録される。
【0046】
画面600は、検索欄601及びサービス仕様編集欄602を含む。検索欄601は、サービスを検索するための欄である。ユーザがサービスの名称を入力し、検索ボタンを押下した場合、データ整合性維持部130は、サービス管理情報310から該当するエントリを検索し、サービス仕様編集欄602にエントリを表示する。サービス仕様編集欄602は、サービスにおけるローカルトランザクションの仕様を編集するための欄である。サービス仕様編集欄602には、サービス管理情報310と同じデータ構造のテーブルが表示される。ユーザがエントリに必要な情報を入力し、登録ボタンを押下した場合、サービスにおけるローカルトランザクションの仕様に関するデータ(エントリ)がサービス管理情報310に登録される。ユーザがエントリを選択し、削除ボタンを押下した場合、サービス管理情報310からデータ(エントリ)が削除される。
【0047】
マイクロサービスを管理又は利用するユーザは、プログラムをデータ整合性維持装置102に登録する。例えば、
図7に示すような画面700を用いてプログラムが登録される。
【0048】
画面700は、アップロード欄701及びプログラム編集欄702を含む。アップロード欄701は、データ整合性維持装置102にプログラムをアップロードするための欄である。ユーザがプログラムを選択し、アップロードボタンを押下した場合、データ整合性維持部130は、プログラム管理情報132にプログラムを登録する。プログラム編集欄702は、プログラムによって実現される手段及び優先順位等を編集するための欄である。プログラム編集欄702には、プログラム管理情報132と同じデータ構造のテーブルが表示される。ユーザがエントリに必要な情報を入力し、登録ボタンを押下した場合、プログラム管理情報132のエントリに情報が登録される。ユーザがエントリを選択し、削除ボタンを押下した場合、プログラム管理情報132からエントリが削除される。
【0049】
図8は、実施例1のシステムにおける分散トランザクションの実行フローを説明するシーケンス図である。
【0050】
分散トランザクション処理装置101は、ユーザから分散トランザクション実行要求を受け付ける(ステップS101)。
【0051】
分散トランザクション処理装置101の分散トランザクション処理部120は、ローカルトランザクションの実行フローにしたがって、サービス装置100にローカルトランザクション実行要求を送信する(ステップS102)。
【0052】
このとき、実行状態管理部121は、ローカルトランザクションの実行フローに関する情報をデータ整合性維持装置102に送信する。データ整合性維持装置102は、当該情報に基づいて、ローカルトランザクション実行状態管理情報300を生成する。なお、各エントリの実行結果302には「未実行」が格納される。また、各エントリのサービス状態303及び実行時刻304は空欄である。
【0053】
サービス装置100は、ローカルトランザクション実行要求を受信した場合、ローカルトランザクションにしたがって各種操作を行い、操作の結果等を含むローカルトランザクション実行結果を分散トランザクション処理装置101に送信する(ステップS103)。なお、サービス装置100は、ローカルトランザクション実行結果に、サービスの状態を含めてもよい。
【0054】
分散トランザクション処理装置101の実行状態管理部121は、データ整合性維持装置102にローカルトランザクション実行結果を送信する(ステップS104)。
【0055】
データ整合性維持装置102は、ローカルトランザクションの実行フローの停止に伴うデータ不整合を検出した場合(ステップS110)、データ整合性維持プログラム決定処理を実行する(ステップS111)。データ整合性維持プログラム決定処理の詳細は後述する。
【0056】
例えば、ローカルトランザクション実行状態管理情報300を生成してから一定期間内に、全てのエントリの実行結果302が「成功」とならなかった場合、又は、分散トランザクション処理装置101からローカルトランザクションの実行フローの失敗の通知を受信した場合、データ整合性維持装置102は、ローカルトランザクションの実行フローの停止を検出できる。
【0057】
データ整合性維持装置102は、データ整合性維持プログラム決定処理によって決定されたデータ整合性維持プログラムにしたがって、データ整合性維持処理を実行する(ステップS112)。
【0058】
例えば、ローカルトランザクションの再実行、補償トランザクションの実行、又は、サービス装置100によるデータベースのロールバック等が実行される。
【0059】
また、データ整合性維持装置102は、データ整合性維持処理が実行された後、データ不整合を検出した場合(ステップS110)、同様の処理を実行する(ステップS111、ステップS112)。
【0060】
図9は、実施例1のデータ整合性維持装置102が実行するデータ整合性維持プログラム決定処理の一例を説明するフローチャートである。
【0061】
データ整合性維持部130は、ローカルトランザクション実行状態管理情報300及びサービス管理情報310を取得する(ステップS201、ステップS202)。
【0062】
データ整合性維持部130は、プログラム管理情報132を参照し、優先順に基づいてデータ整合性維持プログラムを選択する(ステップS203)。Rootから順にデータ整合性維持プログラムが選択される。
【0063】
データ整合性維持部130は、選択したデータ整合性維持プログラムの適用条件及びサービス管理情報310に基づいて、選択したデータ整合性維持プログラムに基づくデータ整合性維持処理を実行できるか否かを判定する(ステップS204)。
【0064】
具体的には、データ整合性維持部130は、サービス管理情報310を参照して、障害が発生したローカルトランザクションを特定する。すなわち、実行結果302が「失敗」であるエントリを検索する。データ整合性維持部130は、サービス管理情報310の特定されたローカルトランザクションに対応するエントリ、及び選択したデータ整合性維持プログラムの適用条件を参照して、選択したデータ整合性維持プログラムに基づくデータ整合性維持処理を実行できるか否かを判定する。
【0065】
例えば、選択されたデータ整合性維持プログラムがローカルトランザクションの再実行を行うプログラムである場合以下のような判定が行われる。データ整合性維持部130は、実行可能期間(ローカル)313を参照し、現時刻が、ローカルトランザクションの実行可能な期間内であるか否かを判定する。現時刻が、ローカルトランザクションの実行可能な期間内である場合、データ整合性維持部130は、選択されたデータ整合性維持プログラムの適用条件を満たすか否かを判定する。このとき、データ整合性維持部130は、サービス管理情報310のエントリを参照してもよい。
【0066】
選択したデータ整合性維持プログラムに基づくデータ整合性維持処理を実行できないと判定された場合、データ整合性維持部130は、実行可能な改善プログラムが存在するか否かを判定する(ステップS205)。
【0067】
具体的には、適用条件を満たさないことが要因となって、選択したデータ整合性維持プログラムに基づくデータ整合性維持処理を実行できない場合、データ整合性維持部130は、ステップS204の判定結果に基づいてプログラム管理情報132を参照し、手段401に適用条件を改善するために実行可能な改善プログラムが存在するか否かを判定する。
【0068】
実行可能な改善プログラムが存在すると判定された場合、データ整合性維持部130は、改善プログラムを実行し(ステップS206)、その後、ステップS204に戻る。改善プログラムを実行することによって、データ整合性維持プログラムの実行可能性を向上させることができる。これによって、優先的に適用すべきデータ整合性維持プログラムを実行することができる。
【0069】
実行可能な改善プログラムが存在しないと判定された場合、データ整合性維持部130は、ステップS203に戻り、新たなデータ整合性維持プログラムを選択する。
【0070】
ステップS204において、選択したデータ整合性維持プログラムに基づくデータ整合性維持処理を実行できると判定された場合、データ整合性維持部130は、当該データ整合性維持プログラムの実行を決定する(ステップS207)。
【0071】
ここで、具体例を用いてデータ整合性維持装置102によって実行される処理について説明する。
図10A及び
図10Bは、実施例1のローカルトランザクションの実行フローの一例を示す図である。
図11A、
図11B、及び
図11Cは、実施例1のローカルトランザクション実行状態管理情報300の更新状態の一例を示す図である。
【0072】
図10Aに示すように、ローカルトランザクション1、ローカルトランザクション2、及びローカルトランザクション3が順に実行されるローカルトランザクションの実行フローを想定する。このとき、サービス管理情報310は
図3Bに示す状態であるものとする。
【0073】
ローカルトランザクション2が失敗した場合、分散トランザクション処理装置101は、データの整合性を維持するために、補償トランザクション2、及び補償トランザクション1を実行する。しかし、補償トランザクション2が失敗した場合、ローカルトランザクション1のみが実行された状態で実行フローが停止する。したがって、データの不整合が発生することになる。
【0074】
図10Bの場合のローカルトランザクション実行状態管理情報300は、
図3Aに示す状態であるものとする。また、データ整合性維持プログラム決定処理の実行時刻が「2021/11/1 01:00:00」であるものとする。
【0075】
データ整合性維持部130は、ステップS203において、前進回復を実現するプログラム21を選択する。
【0076】
ステップS204において、データ整合性維持部130はプログラム21に基づくローカルトランザクション2の実行が可能か否かを判定する。
【0077】
具体的には、データ整合性維持部130は、実行可能期間(ローカル)313を参照し、現時刻が、ローカルトランザクションの実行可能な期間内であるか否かを判定する。ここでは、現時刻がローカルトランザクションの実行可能な期間内であると判定される。さらに、データ整合性維持部130は、プログラム21の適用条件を満たすか否かを判定する。
図5Bの適用条件を記したConditionにはサービスの状態が不明でないことを条件としている。一方、サービス2の状態は不明である。したがって、適用条件を満たさないことになる。
【0078】
したがって、データ整合性維持部130はステップS205に進む。ここでは、サービス2の状態を確認するための改善プログラムが存在するものとする。ステップS206において、データ整合性維持部130は、サービス2の状態を確認するための改善プログラムを実行する。その結果、ローカルトランザクション実行状態管理情報300が
図11Aに示すように更新されたものとする。
【0079】
ステップS204では、データ整合性維持部130は、プログラム21の適用条件を満たしていると判定する。したがって、データ整合性維持部130は、プログラム21に基づくローカルトランザクション2の再実行を、データ整合性維持処理として実行する。
【0080】
データ整合性維持処理が実行された結果、分散トランザクションが成功した場合、ローカルトランザクション実行状態管理情報300は
図11Bに示すような状態になる。
【0081】
データ整合性維持処理を実行したが、ローカルトランザクション3が失敗し、再度、実行フローが停止した場合、データ整合性維持部130は、再度、データ整合性維持プログラム決定処理を実行する。ここでは、ローカルトランザクションの実行可能な期間を経過しているため、補償トランザクションを実行するためのデータ整合性維持プログラムが選択されたものとする。補償トランザクションの実行が成功した場合、ローカルトランザクション実行状態管理情報300は
図11Cに示すような状態となる。
【0082】
実施例1によれば、トランザクションの仕様及びトランザクションの実行状況等を考慮して、動的に適用するデータ不整合の修正手段を選択できる。これによって、障害の状況及びトランザクションの仕様等にあわせてデータ不整合を自動的に修正することができる。
【0083】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0084】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0085】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0086】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0087】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。