(57)【要約】【課題】  本願発明は、切替処理が行われている間にデータベースへのアクセス要求を受けた場合に不要なリトライを防止し、システム全体の負荷を削減する事ができる制御装置、制御方法、制御プログラム、及び制御システムを提案することを１つの目的とする。【解決手段】  本願発明の制御装置は、インメモリデータベースが有する複数のインスタンスの状態を監視する監視部と、前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、監視部の監視結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する制御部と、を備える。【選択図】      図１
2019168807.tif 000002
【特許請求の範囲】
【請求項１】
インメモリデータベースが有する複数のインスタンスの状態を監視する監視部と、
前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、前記監視部の監視結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する制御部と、
を備える制御装置。
【請求項２】
前記監視部は切替処理の完了を検知し、
前記制御部は前記監視部が切替処理の完了を検知した場合に前記保留したトランザクション処理を、当該トランザクション処理を発行したアプリケーションに送信する、
請求項１に記載の制御装置。
【請求項３】
前記トランザクション処理の要求を登録する登録部を更に備え、
前記制御部は、前記トランザクション処理の要求を受け付けた際に、前記監視部の監視結果が、前記特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を前記登録部に登録し、前記監視部が切替処理の完了を検知した場合に、当該登録したトランザクション処理の要求を前記登録部から取得する、
請求項１又は２に記載の制御装置。
【請求項４】
前記複数のインスタンスの状態は、稼働中、停止中、又は切替処理中を含み、
前記複数のインスタンスはそれぞれ、前記監視部がアクセスした結果を示す確認表及び各インスタンス自身の起動中、停止中、又は障害中を示す管理プロセスを備え、
前記監視部は前記確認表と前記管理プロセスとを用いて切替処理中の状態を判断する、
請求項１乃至３のいずれか１項に記載の制御装置。
【請求項５】
前記複数のインスタンスの状態を示す稼動状態表を更に備え、
前記監視部は前記確認表と前記管理プロセスとを用いて前記複数のインスタンスの状態を判断し、当該判断した結果を用いて前記稼動状態表を更新する、
請求項４に記載の制御装置。
【請求項６】
前記監視部は前記稼動状態表に基づいて切替処理の完了を検知する、
請求項５に記載の制御装置。
【請求項７】
前記監視部は切替処理の完了を検知し、
前記制御部は前記監視部が切替処理の完了を検知した場合に前記保留したトランザクション処理を前記特定のインスタンスに送信する、
請求項１乃至６のいずれか１項に記載の制御装置。
【請求項８】
複数のインスタンスを有するインメモリデータベースと、
請求項１乃至７のいずれか１項に記載の制御装置と、
前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を発行し、前記制御装置に送信するアプリケーションと、
を備える制御システム。
【請求項９】
インメモリデータベースが有する複数のインスタンスの状態を監視し、
前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、前記監視の結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する、
制御方法。
【請求項１０】
インメモリデータベースが有する複数のインスタンスの状態を監視し、
前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、前記監視の結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する、
処理をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、トランザクション処理の制御を行う、制御装置、制御方法、制御プログラム、及び制御システムに関する。
【背景技術】
【０００２】
近年のシステム等では、短時間に大量トランザクションを処理する「高速性」と24時間稼働を支える「高信頼性」とが求められている。上述の「高速性」と「高信頼性」とを実現する技術として、データストレージを主にメインメモリ上で行うインメモリデータベースがある。
【０００３】
一般的に、インメモリデータベースを使ったシステムでは、冗長化を目的としてマスタインスタンス（マスタ）及びスレーブインスタンス（スレーブ）を構成する。インスタンスとは、あらかじめ定義されたコンピュータプログラムやデータ構造などを、メインメモリ上に展開して処理・実行できる状態にしたものである。
【０００４】
業務アプリケーション（業務ＡＰ）がマスタのデータを更新すると、当該更新は更新ログとしてスレーブに転送される。当該更新ログをスレーブのデータに同期又は非同期で反映することで、スレーブをマスタのレプリカとする。マスタ側で障害が発生した場合は、マスタとスレーブとを切り替え、スレーブとして運用していたものをマスタとして運用する事で、マスタ側で障害が発生した場合であっても処理を継続する事が可能となる。以後、マスタとスレーブとを切り替える処理のことを切替処理と呼ぶ。
【０００５】
切替処理はトランザクションの実行中にも発生する場合がある。切替処理に巻き込まれたトランザクションは、異常終了するか、又は切替処理が完了するまで不要なリトライを繰り返してしまう。
【０００６】
複数のインスタンスを有するクラスタ構成データベースにおいて、切替処理に関するする技術の一例として、特許文献１が挙げられる。特許文献１にかかるデータベースアクセス制御部は、データベースアクセス要求に基づいて、データベースインスタンスに対してＳＱＬを発行する。リトライ可否判断部は、データベースシステムから送信された当該ＳＱＬの実行結果が異常終了だった場合、ロールバック処理を実行する。データベースアクセス制御部は、当該ロールバック処理が失敗した場合、データベースインスタンスの切り替え（切替処理）を実施する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−０８６０６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に開示された技術は、アクセス要求を受け付けるとＳＱＬを発行し、当該ＳＱＬの実行結果が異常終了だった場合はロールバック処理を行い、当該ロールバック処理が失敗した場合に切替処理を実施する。しかし、特許文献１に開示された技術は、切替処理が実施されている間にアクセス要求を受け付けた場合について考慮されていない。従って、特許文献１に開示された技術は、切替処理が実施されている間に受け付けたアクセス要求を、アクセス要求の対象となるインスタンスに送信してしまうおそれがある。切替処理中のインスタンスはアクセス要求を受け付ける事が出来ないため、当該切替処理中のインスタンスに送信されたアクセス要求は失敗してしまう。更に、データベースアクセス制御部が当該アクセス要求のリトライを繰り返した場合は、システム全体の負荷が増大する。
【０００９】
本願発明は上記課題を解決し、切替処理が行われている間にデータベースへのアクセス要求を受けた場合に不要なリトライを防止し、システム全体の負荷を削減する事ができる制御装置、制御方法、制御プログラム、及び制御システムを提案する。
【課題を解決するための手段】
【００１０】
本願発明の制御装置は、インメモリデータベースが有する複数のインスタンスの状態を監視する監視部と、前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、監視部の監視結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する制御部と、を備える。
【００１１】
本願発明の制御方法は、インメモリデータベースが有する複数のインスタンスの状態を監視し、前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、前記監視の結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する。
【００１２】
本願発明のコンピュータプログラムは、インメモリデータベースが有する複数のインスタンスの状態を監視し、前記複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、前記監視の結果が、当該特定のインスタンスで切替処理中であった場合、当該受け付けたトランザクション処理の要求を保留する、処理をコンピュータに実行させる。
【発明の効果】
【００１３】
本願発明によれば、切替処理が行われている間にデータベースへのアクセス要求を受けた場合に不要なリトライを防止し、システム全体の負荷を削減する事ができる。
【図面の簡単な説明】
【００１４】
【図１】制御システム５００の構成を示す図である。
【図２】データアクセス制御部３３０の動作を示すフローチャートである。
【図３】監視部３２０の動作を示すフローチャートである。
【図４】リトライ制御部３４０の動作を示すフローチャートである。
【図５】管理プロセスの確認結果として挙げられる要素の具体例を示す図である。
【図６】チェック表２２３の具体例を示す図である。
【図７】稼動状態表３１０の具体例を示す図である。
【図８】制御装置１の構成を示す図である。
【図９】制御装置１の動作を示すフローチャートである。
【図１０】本願発明を実現するコンピュータを示す図である。
【発明を実施するための形態】
【００１５】
＜第１の実施形態＞
本願発明の第１の実施形態を、図面を参照して説明する。図１は、第１の実施形態における、制御システム５００の構成を示す図である。
【００１６】
制御システム５００は、業務アプリケーション１００と（以後、業務ＡＰ１００と呼ぶ）、インメモリデータベースシステム２００と（以後インメモリＤＢ２００と呼ぶ）、制御装置３００と、を有する。業務ＡＰ１００と、インメモリＤＢ２００と、制御装置３００とは、ネットワーク等で接続され、相互に通信可能である。
【００１７】
業務ＡＰ１００は、ユーザ等の要求により、アクセス要求を発行する。具体的に、業務ＡＰ１００は、インメモリＤＢ２００のデータを更新又は参照するためのトランザクションで構成されるアクセス要求を発行する。
【００１８】
インメモリＤＢ２００は、処理部２１０と、インスタンス２２０と、インスタンス２３０と、インスタンス２４０と、と有する。
【００１９】
処理部２１０は、アクセス要求を受信すると、当該アクセス要求に対して、レコード間の排他制御処理、コミット処理、ロールバック処理、及び当該要求の実行処理等を行う。例えば、処理部２１０は、受信したアクセス要求が特定のインスタンスを対象としたデータ更新である場合、対象となるインスタンスに対して更新処理を行う。また、処理部２１０は、マスタで障害が発生した場合、当該マスタとスレーブとを切り替える切替処理を行う。
【００２０】
インスタンス２２０は、ユーザ表２２１、管理プロセス２２２、及びチェック表２２３を有する。
【００２１】
ユーザ表２２１は、データアクセスの実施により、更新又は参照される表である。ユーザ表２２１に示される情報は、ユーザ等が更新又は参照するものであれば、どのようなものであっても構わない。
【００２２】
管理プロセス２２２は、インスタンス２２０の状態を管理する。後述する監視部３２０が管理プロセス２２２を確認することで、当該管理プロセス２２２が管理しているインスタンス２２０の状態を判断することが出来る。監視部３２０が、管理プロセス２２２を確認することで判断できるインスタンス２２０の状態として、例えば、「起動中」「停止中」「障害中」の３種類がある。なお、監視部３２０が管理プロセスを確認すると説明したが、本願はこれに限られず、インスタンス２２０の状態を判断できるのであれば、処理部２１０等が確認を行っても良い。
【００２３】
チェック表２２３は、後述する監視部３２０がインスタンス２２０の状態を確認するために定期的にアクセスを行った結果が示されている。具体的に、チェック表２２３は、監視部３２０がアクセスした日時とアクセス結果とが対応するログ形式で示される。アクセス結果として、例えば、「正常終了」「タイムアウトの異常終了」「タイムアウト以外の異常終了」の３種類がある。なお、監視部３２０が定期的にアクセスを行うと説明したが、本願はこれに限られず、インスタンス２２０にアクセスが行えるのであれば、処理部２１０等がアクセスを行っても良い。なお、インスタンス２２０がチェック表を有すると説明したが、本願はこれに限られず、監視部が確認できるのであれば、インスタンス２２０以外がチェック表２２３を有しても良い。
【００２４】
「正常終了」とは、監視部３２０がインスタンス２２０に対してアクセスを行い、当該アクセスに対して一定時間以内に応答が帰ってきた場合等、アクセスが正常に終了した事を示す。
【００２５】
「タイムアウトの異常終了」とは、監視部３２０がインスタンス２２０に対してアクセスを行い、当該アクセスに対して一定時間以内に応答が帰ってこなかった場合等、アクセスが異常終了した事を示す。
【００２６】
「タイムアウト以外の異常終了」とは、監視部３２０がインスタンス２２０に対してアクセスを行い、当該アクセスに対してタイムアウト以外の原因で異常終了した事を示す。タイムアウト以外の原因とは、監視部３２０がインスタンス２２０に対してアクセスをする事が出来なかった場合等が挙げられるが、これに限定されない。
【００２７】
インスタンス２３０及びインスタンス２４０も、インスタンス２２０と同様に、ユーザ表、管理プロセス、及びチェック表を有する。インスタンス２３０及びインスタンス２４０が有するユーザ表、管理プロセス、及びチェック表の構成は、ユーザ表２２１、管理プロセス２２２、及びチェック表２２３の構成と同様のため、説明は省略する。
【００２８】
制御装置３００は、稼動状態表３１０と、監視部３２０と、データアクセス制御部３３０と、リトライ制御部３４０と、登録部３５０と、を有する。
【００２９】
稼動状態表３１０は、各インスタンスの状態が記録される。各インスタンスの状態として、例えば、「稼働中」「停止中」「切替処理中」の３種類がある。
【００３０】
監視部３２０は、各インスタンスの管理プロセス及びチェック表の最も新しい日時のアクセス結果を一定時間毎に確認する。監視部３２０は、全てのインスタンスに対して、管理プロセス及びチェック表を確認した場合、稼動条件に従って各インスタンスの状態を判断し、判断した結果を用いて稼動状態表３１０を更新する。稼動条件については後述する。
【００３１】
また、監視部３２０は、稼動状態表３１０を用いて、切替処理の完了を検知する。具体的に、監視部３２０は、稼動状態表３１０を更新した際に、「切替処理中」から「起動中」に状態が変化したインスタンスがあるかどうかを確認する。「切替処理中」から「起動中」に状態が変化したインスタンスがあった場合、監視部３２０は、当該インスタンスで切替処理が完了したと認識し、当該インスタンスで切替処理が完了した旨を示す切替処理完了通知を、後述するリトライ制御部３４０に送信する。
【００３２】
データアクセス制御部３３０は、業務ＡＰ１００又はリトライ制御部３４０からアクセス要求を受信し、当該受信したアクセス要求に対して、稼動状態表３１０を用いて確認処理を行う。確認処理とは、データアクセス制御部３３０が、アクセス要求の対象となるインスタンスの状態を確認する処理である。
【００３３】
データアクセス制御部３３０は、確認処理の結果、アクセス要求の対象となるインスタンスが「稼働中」だった場合、当該アクセス要求を処理部２１０に送信する。処理部２１０は、受信したアクセス要求の対象となるインスタンスに対してデータアクセスの実施を行う。
【００３４】
データアクセス制御部３３０は、確認処理の結果、アクセス要求の対象となるインスタンスが「停止中」だった場合、当該アクセス要求を処理部２１０に送信しない。処理部２１０に送信されないアクセス要求は、当該アクセス要求の対象となるインスタンスで実施されない。
【００３５】
データアクセス制御部３３０は、確認処理の結果、アクセス要求の対象となるインスタンスが「切替処理中」だった場合、当該アクセス要求を処理部２１０に送信せず、リトライ制御部３４０に送信する。
【００３６】
リトライ制御部３４０は、データアクセス制御部３３０から受け取ったアクセス要求を保留する。具体的に、リトライ制御部３４０は、データアクセス制御部３３０から受け取ったアクセス要求を登録部３５０に登録する事で、当該アクセス要求を保留する。アクセス要求の保留とは、アクセス要求を登録部３５０に登録する事で、当該アクセスの要求を抑止する事である。
【００３７】
リトライ制御部３４０は、監視部３２０から切替処理完了通知を受信すると、切替処理が完了したインスタンスをアクセスの対象とするアクセス要求を登録部３５０から取得し、当該取得したアクセス要求を業務ＡＰ１００に送信する。
【００３８】
業務ＡＰ１００は、リトライ制御部３４０からアクセス要求を受信すると、受信したアクセス要求を再度発行する。なお、データアクセス制御部３３０は、業務ＡＰ１００が再度発行したアクセス要求に対して、確認処理を行っても良いし、確認処理を行わず、処理部２１０に直接送信しても良い。また、業務ＡＰ１００は、当該受信したアクセス要求について、ロールバック処理を行った後に、当該受信したアクセス要求を再度発行しても良いし、ロールバック処理を行わずに再度発行しても良い。
【００３９】
なお、切替処理が発生することで、アクセス要求の対象となるインスタンスが過去のアクセス要求の対象となるインスタンスと異なる場合が考えられるが、業務ＡＰ１００は、適切な対象のインスタンスへアクセス要求を再度発行可能である。
【００４０】
登録部３５０は、リトライ制御部３４０が、データアクセス制御部３３０から受け取ったアクセス要求を登録する。換言すると、データアクセス制御部３３０が確認処理を行った結果、アクセス要求の対象となるインスタンスが「切替処理中」だった場合に、当該アクセス要求は登録部３５０に登録される。登録部３５０は、バッファ又はキュー等、アクセス要求を登録可能なものであればどのように構成しても良い。
【００４１】
なお、図１では、制御装置３００が登録部３５０を有する場合で説明したが、本願はこれに限られない。登録部３５０は、例えば、リトライ制御部３４０が有しても良いし、リトライ制御部３４０と通信可能であるならば、制御装置３００の外部に構成しても良い。
【００４２】
なお、リトライ制御部３４０は、監視部３２０から切替処理完了通知を受信すると、登録部３５０に登録していたアクセス要求を、業務ＡＰ１００に送る事無く、処理部２１０に直接送信しても良い。換言すると、リトライ制御部３４０は、切替処理完了通知を受信すると、登録部３５０に登録していたアクセス要求の保留を解除し、処理部２１０に送信しても良い。リトライ制御部３４０が業務ＡＰ１００ではなく処理部２１０にアクセス要求を送信した場合、データアクセス制御部３３０は、当該アクセス要求に対して、確認処理を行っても良いし、確認処理を行わなくても良い。
【００４３】
なお、リトライとは、アクセス要求が失敗した場合に、失敗したアクセス要求と同様のアクセス要求を再度行う事である。アクセス要求の失敗とは、例えば、アクセス要求が処理部２１０に送信されなかった場合や、切替処理等に巻き込まれてアクセス要求が受け付けられなかった場合等のように、アクセス要求が要求先まで至らなかった場合のことである。
【００４４】
［動作］
次に、第１の実施形態における主な動作を説明する。
【００４５】
図２は、データアクセス制御部３３０の動作を示すフローチャートである。
【００４６】
データアクセス制御部３３０は、業務ＡＰ１００が発行したアクセス要求を受信する（Ｓ１１）。
【００４７】
データアクセス制御部３３０は、稼動状態表３１０を用いて、アクセス要求の対象となるインスタンスの状態を確認する（Ｓ１２）。なお、当該Ｓ１２の処理を確認処理と呼ぶ。
【００４８】
データアクセス制御部３３０は、アクセス要求先のインスタンスの状態が「稼働中」だった場合（Ｓ１３で「稼働中」）、当該アクセス要求を処理部２１０に送信する（Ｓ１４）。
【００４９】
データアクセス制御部３３０は、アクセス要求先のインスタンスの状態が「停止中」だった場合（Ｓ１３で「停止中」）、当該アクセス要求を処理部２１０送信しない（Ｓ１５）。
【００５０】
データアクセス制御部３３０は、アクセス要求先のインスタンスの状態が「切替処理中」だった場合（Ｓ１３で「切替処理中」）、当該アクセス要求をリトライ制御部３４０に送信する（Ｓ１６）。
【００５１】
次に図３を用いて監視部３２０の主な動作を説明する。
【００５２】
監視部３２０は、複数のインスタンスのうち、特定のインスタンスの管理プロセスを確認する（Ｓ３１）。
【００５３】
監視部３２０は、特定のインスタンスのチェック表を確認する（Ｓ３２）。
【００５４】
監視部３２０は、複数のインスタンスのうち、全てのインスタンスの管理プロセス及びチェック表を確認してない場合は、全てのインスタンスの管理プロセス及びチェック表を確認するまでＳ３１及びＳ３２の処理を繰り返す（Ｓ３３でＮｏ）。
【００５５】
監視部３２０は、全てのインスタンスの管理プロセス及びチェック表を確認した場合（Ｓ３３でＹｅｓ）、後述する稼動条件に従って各インスタンスの状態を判断する（Ｓ３４）。
【００５６】
監視部３２０は、Ｓ３４で判断した結果を用いて、稼動状態表３１０を更新する（Ｓ３５）。
【００５７】
監視部３２０は、稼動状態表３１０を更新した際に、「切替処理中」から「起動中」に状態が変化したインスタンスがあるかどうかを確認する。「切替処理中」から「起動中」に状態が変化したインスタンスがあった場合（Ｓ３６でＹｅｓ）、監視部３２０は、リトライ制御部３４０に切替処理完了通知を送信する（Ｓ３７）。
【００５８】
次に図４を用いて、リトライ制御部３４０の主な動作を説明する。
【００５９】
リトライ制御部３４０は、データアクセス制御部３３０から受け取ったアクセス要求を登録部３５０に登録する（Ｓ５１）。
【００６０】
リトライ制御部３４０は、監視部３２０から切替処理完了通知を受信すると（Ｓ５２）、登録部３５０に登録していたアクセス要求のうち、切替処理が完了したインスタンスをアクセスの対象とするアクセス要求を取得する（Ｓ５３）。
【００６１】
リトライ制御部３４０は、当該取得したアクセス要求を業務ＡＰ１００に送信する（Ｓ５４）。
【００６２】
［具体例］
次に、第１の実施形態の主な具体例を説明する。
【００６３】
本具体例では、インスタンス２２０をマスタインスタンスとして動作させ、インスタンス２３０及びインスタンス２４０をインスタンス２２０のスレーブインスタンスとして動作させるものとする。
【００６４】
次に、稼動条件の具体例を示す。稼動条件とは、監視部３２０が、定期的に各インスタンスの管理プロセス及びチェック表を確認し、各インスタンスの状態を判断するための条件である。各インスタンスの状態として、例えば、「稼働中」「停止中」「切替処理中」がある。管理プロセスの確認結果、チェック表の確認結果、及び稼動条件に基づき各インスタンスの状態を判断するやり方は、インスタンスの状態の一例である「切替処理中」を判断する際に特に有効である。
【００６５】
監視部３２０による管理プロセスの確認結果として挙げられる要素として、例えば、「起動中」「停止中」「障害中」がある。
【００６６】
図５に、監視部３２０による管理プロセスの確認結果として挙げられる要素の具体例２５０を示す。
【００６７】
監視部３２０によるチェック表の確認結果として、例えば、「正常終了」「タイムアウトの異常終了」「タイムアウト以外の異常終了」がある。
【００６８】
図６に、インスタンス２２０が有するチェック表２２３の具体例を示す。日時２２４には、監視部３２０がインスタンス２２０に対してアクセスを行った日時を示す。アクセス結果２２５には、監視部３２０がインスタンス２２０に対してアクセスを行ったアクセス結果を示す。
【００６９】
各インスタンスの状態で「稼働中」を判断するための稼動条件は、管理プロセスの確認結果が「起動中」かつ、チェック表の確認結果が「正常終了」である。
【００７０】
各インスタンスの状態で「停止中」を判断するための稼動条件は、管理プロセスの確認結果が「停止中」かつ、チェック表の確認結果が「タイムアウト以外の異常終了」である。なお、管理プロセスの確認結果が「停止中」の場合は、チェック表の確認結果に関わらず、対象のインスタンスが「停止中」であると設定しても良い。
【００７１】
各インスタンスの状態で「切替処理中」を判断するための稼動条件は、マスタインスタンスが条件Ａ又はＢを満たし、尚且つ特定のスレーブインスタンスが条件Ｃを満たす事である。
【００７２】
条件Ａは、管理プロセスの確認結果が「障害中」及びチェック表が「タイムアウト以外で異常終了」である。
【００７３】
条件Ｂは、管理プロセスの確認結果が「起動中」及びチェック表が「タイムアウトで異常終了」である。
【００７４】
条件Ｃは、管理プロセスに確認結果が「起動中」及びチェック表が「タイムアウトで異常終了」である。
【００７５】
図７に、稼動状態表３１０の具体例を示す。稼動状態表３１０は、インスタンス名３１１と状態３１２とを有する。
【００７６】
インスタンス名３１１の列には、監視部３２０の監視の対象となるインスタンスの名称を示す。
【００７７】
状態３１２の列には、対象のインスタンスの状態を示す。
【００７８】
図７に示す具体例では、インスタンス２２０及びインスタンス２３０の状態が切替処理中であることを示し、インスタンス２４０の状態が稼働中であることを示す。
【００７９】
次に、第２の実施形態における具体例として、インスタンス２２０及びインスタンス２３０で切替処理が実行されている間に、ユーザが、インスタンス２２０のデータを更新するためのアクセス要求を行った場合の処理について説明する。なお、インスタンスの状態の具体例として、図７に示す稼動状態表３１０を用いる。
【００８０】
ユーザは、業務ＡＰ１００を用いて、アクセス要求をデータアクセス制御部３３０に送信する。
【００８１】
データアクセス制御部３３０は、業務ＡＰ１００が送信したアクセス要求を受信する。
【００８２】
データアクセス制御部３３０は、図７に示す稼動状態表３１０を用いて、インスタンス２２０のインスタンスの状態を確認する。データアクセス制御部３３０は、図７に示す稼動状態表３１０を確認すると、インスタンス２２０が「切替処理中」であるため、当該アクセス要求をリトライ制御部３４０に送信する。
【００８３】
リトライ制御部３４０は、データアクセス制御部３３０からデータアクセス要求を受け取ると、当該アクセス要求を登録部３５０に登録する。
【００８４】
監視部３２０は、各インスタンスの管理プロセス及びチェック表の最も新しい日時のアクセス結果を一定時間毎に確認する。具体的に、監視部３２０は、インスタンス２２０とインスタンス２３０とインスタンス２４０との確認を行った場合、稼動条件に従って各インスタンスの状態を判断し、判断した結果を用いて稼動状態表３１０を更新する。
【００８５】
本具体例で、監視部３２０は、稼動状態表３１０のインスタンス２２０及びインスタンス２３０の状態３１２を、「切替処理中」から「起動中」に更新したものとする。監視部３２０は、稼動状態表３１０を上記のように更新した結果、インスタンス２２０及びインスタンス２３０の切替処理が完了した事を認識し、切替処理完了通知をリトライ制御部３４０に送信する。
【００８６】
リトライ制御部３４０は、監視部３２０から切替処理完了通知を受信すると、登録部３５０から、インスタンス２２０を対象とするアクセス要求を取得し、当該アクセス要求を業務ＡＰ１００に送信する。
【００８７】
業務ＡＰ１００は、リトライ制御部３４０からアクセス要求を受信すると、受信したアクセス要求を再度発行する。
【００８８】
これにより、本願発明は、切替処理が行われている間にデータベースへのアクセス要求を受けた場合に不要なリトライを防止し、システム全体の負荷を削減する事ができる。
【００８９】
また、本願発明は、切替処理中にアクセス要求を受けた場合、当該アクセス要求の対象のインスタンスへ直接送信する前に確認処理を行う事で、当該インスタンスがアクセス不可の場合を即座に認識可能である。
【００９０】
更に、本願発明を導入する事で、データベースの稼動状態に応じた柔軟なトランザクションの制御が可能となる。
【００９１】
なお、図２に記載のＳ１４における処理で処理部２１０に送信され、処理部２１０が対象のインスタンスに対してアクセスの実施を行い、当該アクセスが失敗した場合、処理部２１０は当該アクセス要求を再度データアクセス制御部３３０に送信しても良い。また、データアクセス制御部３３０は、処理部２１０から受け取ったアクセス要求に対して再度確認処理を行っても良い。当該確認処理の結果、アクセス対象のインスタンスが切替処理中だった場合、データアクセス制御部３３０は当該アクセスをリトライ制御部３４０に送信する。
【００９２】
これにより、処理部２１０がアクセスを実施する直前に実施対象のインスタンスで切替処理が発生し、当該アクセスの実施が失敗した場合であっても、当該アクセス要求を即座にリトライする事なく、登録部３５０に登録する事ができる。更に、当該アクセス要求は切替処理が完了するまで登録部３５０に登録されるので、不要なリトライを防止し、システム全体の負荷を削減したトランザクション制御を行うことができる。
【００９３】
なお、本願ではデータアクセス制御部３３０とリトライ制御部３４０とをそれぞれ分けて説明したが、本願はこれに限られない。本願は、例えば、データアクセス制御部３３０とリトライ制御部３４０とを１つにまとめ、制御部として構成することが可能である。この場合、制御部は、データアクセス制御部３３０及びリトライ制御部３４０の動作を実施可能である。
【００９４】
なお、登録部３５０に複数のアクセス要求が登録されている場合、リトライ制御部３４０は、切替完了通知を受信すると、当該複数のアクセス要求を１つずつ業務ＡＰ１００に送信しても良いし、複数のアクセス要求をまとめて業務AP１００に送信しても良い。
【００９５】
なお、本願ではインスタンスの数が３つの場合で説明したが、インスタンスの数は何個でも構わない。また、本願ではマスタ１つ、スレーブ２つの構成で説明したが、本願はこれに限られず、マスタ及びスレーブの数は任意に変更可能である。
【００９６】
なお、ユーザ表及び稼動状態チェック表は、インメモリＤＢ２００の起動時に新しく生成しても良いし、起動前から各インスタンスが有していても良い。
【００９７】
＜第２の実施形態＞
本願発明の第２の実施形態を、図面を用いて説明する。第２の実施形態における、制御装置１の構成を図８に示す。
【００９８】
［構成］
最初に、制御装置１の構成について説明する。図８に示すように、本実施形態における制御装置１は、監視部２と、制御部３と、を有する。
【００９９】
監視部２は、インメモリデータベースが有する複数のインスタンスの状態を監視する。
【０１００】
制御部３は、複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、監視部２の監視結果が、当該特定のインスタンスで切替処理中であった場合は、当該受け付けたトランザクション処理の要求を保留する。
【０１０１】
なお、第２の実施形態における監視部２は、第１の実施形態における監視部３２０に対応し、第２の実施形態における制御部３は、第１の実施形態におけるデータアクセス制御部３３０及びリトライ制御部３４０に対応する。つまり、第２の実施形態における制御部３は、矛盾の無い範囲で、第１の実施形態におけるデータアクセス制御部３３０及びリトライ制御部３４０の構成及び動作を実現可能である。
【０１０２】
［動作］
次に、第２の実施形態の動作について、図９を用いて説明する。
【０１０３】
図９は、第２の実施形態における制御装置１の動作を示すフローチャートである。
【０１０４】
監視部２は、インメモリデータベースが有する複数のインスタンスの状態を監視する（Ｓ１）。
【０１０５】
制御部３は、複数のインスタンスのうち特定のインスタンスを対象とするトランザクション処理の要求を受け付けた際に、監視部２の監視結果が、当該特定のインスタンスで切替処理中であった場合は、当該受け付けたトランザクション処理の要求を保留する（Ｓ２）。
【０１０６】
これにより、第２の実施形態に係る本願発明は、切替処理が行われている間にデータベースへのアクセス要求を受けた場合に不要なリトライを防止し、システム全体の負荷を削減する事ができる。
【０１０７】
［プログラム］
本願発明におけるプログラムは、コンピュータに、本願発明の処理を実行させるプログラムである。このプログラムをコンピュータにインストールし、実行することによって、本願発明における制御装置、制御システム及び制御方法を実現することができる。
【０１０８】
ここで、本願発明におけるプログラムを実行することによって、制御装置１、制御システム５００及び制御方法を実現するコンピュータについて図１０を用いて説明する。
【０１０９】
図１０は、本願発明における制御装置１、制御システム５００及び制御方法を実現するコンピュータの一例を示すブロック図である。
【０１１０】
図１０に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【０１１１】
ＣＰＵ１１１は、記憶装置１１３に格納された、本願発明におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性の記憶装置である。また、本願発明におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本願発明におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【０１１２】
また、記憶装置１１３は、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、入力機器１１８との間のデータ伝送を仲介する。入力機器１１８とは、例えば、キーボード及びマウス並びにタッチパネル等が挙げられる。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【０１１３】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と他のコンピュータとの間のデータ伝送を仲介する。
【０１１４】
また、記録媒体１２０の具体例としては、ＣＦ（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ（登録商標））及びＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）等の汎用的な半導体記憶デバイス、又はフレキシブルディスク（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）等の磁気記憶媒体が挙げられる。更に、記録媒体１２０の具体例としては、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの光学記憶媒体も挙げられる。
【０１１５】
ここまで、本願発明を実施するための形態を説明してきたが、本願発明は上述した実施形態に限定されるものではない。例えば、本明細書で記載したフローチャートにおける処理の順序はあくまでも一例に過ぎず、本願発明を実施する際に矛盾のない範囲で変更する事が可能である。また、本明細書で記載した構成はあくまでも一例に過ぎず、本願発明を実施する際に矛盾のない範囲で構成を変更する事が可能である。即ち、本願発明は、本願発明を実施する際に矛盾のない範囲で当業者が理解し得る様々な態様を適用することができ、上記各実施形態の変形例や、その組合せ等も、本願発明の技術的範囲に含まれる。
【符号の説明】
【０１１６】
１    制御装置
２    監視部
３    制御部
１００    業務アプリケーション
１１１    ＣＰＵ
１１２    メインメモリ
１１３    記憶装置
１１４    入力インターフェイス
１１５    表示コントローラ
１１６    データリーダ／ライタ
１１７    通信インターフェイス
１１８    入力機器
１１９    ディスプレイ装置
１２０    記録媒体
２００    インメモリデータベースシステム
２１０    処理部
２２０    インスタンス
２２１    ユーザ表
２２２    管理プロセス
２２３    チェック表
２３０    インスタンス
２３１    ユーザ表
２３２    管理プロセス
２３３    チェック表
２４０    インスタンス
２４１    ユーザ表
２４２    管理プロセス
２４３    チェック表
２５０    管理プロセスの確認結果として挙げられる要素の具体例
３００    制御装置
３１０    稼動状態表
３２０    監視部
３３０    データアクセス制御部
３４０    リトライ制御部
３５０    登録部
５００    制御システム
【図１】
2019168807.tif 000003
【図２】
2019168807.tif 000004
【図３】
2019168807.tif 000005
【図４】
2019168807.tif 000006
【図５】
2019168807.tif 000007
【図６】
2019168807.tif 000008
【図７】
2019168807.tif 000009
【図８】
2019168807.tif 000010
【図９】
2019168807.tif 000011
【図１０】
2019168807.tif 000012