(57)【要約】【課題】データベース管理プログラムを用いなくてもトランザクション処理に類似したセッション処理を行うことを可能とする。【解決手段】セッション管理テーブルによりセッション識別子とクライアント識別子を管理し、更新管理テーブルによりセッション識別子と更新範囲と更新データを管理する。セッションの途中では、書き込み手段は、更新管理テーブルにデータを書き込む。読み出し手段は、記憶手段と必要に応じて更新管理テーブルからデータを読み出す。コミット手段は更新管理テーブルに一時記憶されているデータを記憶装置に書き込む。アボート手段は、セッション管理テーブルと更新管理テーブルの該当レコードを削除する。【選択図】        図１
2004362142.tif 000002
【特許請求の範囲】
【請求項１】
セッションを識別するためのセッション識別子のフィールドと該セッション識別子に対応するクライアントを識別するためのクライアント識別子のフィールドとを有するセッション管理テーブルと、
前記セッション識別子のフィールドと該セッション識別子に対応するクライアントから更新要求のあった記憶装置上の範囲である更新範囲のフィールドと該更新範囲に書き込むべきデータを保存する最新データ保存のフィールドとを有する更新管理テーブルと、
セッション開始要求があったときに、前記セッション管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、クライアント識別子のフィールドに、それぞれ、新たなセッション識別子、前記セッションの開始を要求したクライアントのクライアント識別子とを挿入し、前記新たなセッション識別子を前記セッションの開始を要求したクライアントに通知するセッション開始手段と、
書き込み要求があったときに、該書き込み要求による書き込み範囲と重複する部分を前記更新範囲のフィールドに有するレコードが前記更新管理テーブルに存在するか否かを判断し、該判断の結果が否定的であるならば、前記更新管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、更新範囲のフィールド、最新データ保存のフィールドに、それぞれ、前記書き込み要求に対応する前記セッション識別子、前記書き込み要求による書き込み範囲、前記書き込み要求による書き込みデータを挿入し、前記判断の結果が肯定的であるならば、存在するレコードの更新範囲のフィールド、最新データ保存のフィールドを、それぞれ、前記書き込み要求による書き込み範囲、前記書込要求による書き込みデータで更新する書き込み手段と、
コミット要求があったときに、該コミット要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードの最新データ保存のフィールドにあるデータを前記記憶装置の該レコードの更新範囲で示される範囲に書き込むコミット手段と、
を備えることを特徴とするストレージ装置。
【請求項２】
請求項１に記載のストレージ装置において、
読み出し要求があったときに、前記記憶装置の読み出し要求されている範囲からデータを読み出し、読み出したデータをバッファに一時記憶し、読み出し要求されている範囲と重複する範囲が前記更新範囲のフィールドに存在するレコードが前記更新管理テーブルにあるならば、前記バッファ中の該レコードの更新範囲で示される部分のデータを該レコードの最新データ保存にあるデータで上書きし、前記バッファのデータをクライアントに返却する読み出し手段を更に備えることを特徴とするストレージ装置。
【請求項３】
請求項１に記載のストレージ装置において、
アボート要求があったときに、該アボート要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードを削除するアボート手段を更に備えることを特徴とするストレージ装置。
【請求項４】
請求項１に記載のストレージ装置において、
リセット要求があったときに、リセット要求に対応するクライアント識別子と同一のクライアント識別子を有する１又は複数のレコードを前記セッション管理テーブルから削除し、前記１又は複数のレコードのセッション識別子と同一のセッション識別子を有するレコードを前記更新管理テーブルから削除するリセット手段を更に備えることを特徴とするストレージ装置。
【請求項５】
セッションを識別するためのセッション識別子のフィールドと該セッション識別子に対応するクライアントを識別するためのクライアント識別子のフィールドとを有するセッション管理テーブルと、
前記セッション識別子のフィールドと該セッション識別子に対応するクライアントから更新要求のあった記憶装置上の範囲である更新範囲のフィールドと該更新範囲に書き込むべきデータを保存する最新データ保存のフィールドとを有する更新管理テーブルとを用い、
セッション開始要求があったときに、前記セッション管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、クライアント識別子のフィールドに、それぞれ、新たなセッション識別子、前記セッションの開始を要求したクライアントのクライアント識別子とを挿入し、前記新たなセッション識別子を前記セッションの開始を要求したクライアントに通知するセッション開始ステップと、
書き込み要求があったときに、該書き込み要求による書き込み範囲と重複する部分を前記更新範囲のフィールドに有するレコードが前記更新管理テーブルに存在するか否かを判断し、該判断の結果が否定的であるならば、前記更新管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、更新範囲のフィールド、最新データ保存のフィールドに、それぞれ、前記書き込み要求に対応する前記セッション識別子、前記書き込み要求による書き込み範囲、前記書き込み要求による書き込みデータを挿入し、前記判断の結果が肯定的であるならば、存在するレコードの更新範囲のフィールド、最新データ保存のフィールドを、それぞれ、前記書き込み要求による書き込み範囲、前記書込要求による書き込みデータで更新する書き込みステップと、
コミット要求があったときに、該コミット要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードの最新データ保存のフィールドにあるデータを前記記憶装置の該レコードの更新範囲で示される範囲に書き込むコミットステップと、
を備えることを特徴とするストレージ方法。
【請求項６】
請求項５に記載のストレージ方法において、
読み出し要求があったときに、前記記憶装置の読み出し要求されている範囲からデータを読み出し、読み出したデータをバッファに一時記憶し、読み出し要求されている範囲と重複する範囲が前記更新範囲のフィールドに存在するレコードが前記更新管理テーブルにあるならば、前記バッファ中の該レコードの更新範囲で示される部分のデータを該レコードの最新データ保存にあるデータで上書きし、前記バッファのデータをクライアントに返却する読み出しステップを更に備えることを特徴とするストレージ方法。
【請求項７】
請求項５に記載のストレージ方法において、
アボート要求があったときに、該アボート要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードを削除するアボートステップを更に備えることを特徴とするストレージ方法。
【請求項８】
請求項５に記載のストレージ方法において、
リセット要求があったときに、リセット要求に対応するクライアント識別子と同一のクライアント識別子を有する１又は複数のレコードを前記セッション管理テーブルから削除し、前記１又は複数のレコードのセッション識別子と同一のセッション識別子を有するレコードを前記更新管理テーブルから削除するリセットステップを更に備えることを特徴とするストレージ方法。
【請求項９】
セッションを識別するためのセッション識別子のフィールドと該セッション識別子に対応するクライアントを識別するためのクライアント識別子のフィールドとを有するセッション管理テーブルと、
前記セッション識別子のフィールドと該セッション識別子に対応するクライアントから更新要求のあった記憶装置上の範囲である更新範囲のフィールドと該更新範囲に書き込むべきデータを保存する最新データ保存のフィールドとを有する更新管理テーブルとを用い、
セッション開始要求があったときに、前記セッション管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、クライアント識別子のフィールドに、それぞれ、新たなセッション識別子、前記セッションの開始を要求したクライアントのクライアント識別子とを挿入し、前記新たなセッション識別子を前記セッションの開始を要求したクライアントに通知するセッション開始ステップと、
書き込み要求があったときに、該書き込み要求による書き込み範囲と重複する部分を前記更新範囲のフィールドに有するレコードが前記更新管理テーブルに存在するか否かを判断し、該判断の結果が否定的であるならば、前記更新管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、更新範囲のフィールド、最新データ保存のフィールドに、それぞれ、前記書き込み要求に対応する前記セッション識別子、前記書き込み要求による書き込み範囲、前記書き込み要求による書き込みデータを挿入し、前記判断の結果が肯定的であるならば、存在するレコードの更新範囲のフィールド、最新データ保存のフィールドを、それぞれ、前記書き込み要求による書き込み範囲、前記書込要求による書き込みデータで更新する書き込みステップと、
コミット要求があったときに、該コミット要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードの最新データ保存のフィールドにあるデータを前記記憶装置の該レコードの更新範囲で示される範囲に書き込むコミットステップと、
を備えることを特徴とするストレージ方法をコンピュータに行わせるためのプログラム。
【請求項１０】
請求項９に記載のプログラムにおいて、
前記ストレージ方法は、読み出し要求があったときに、前記記憶装置の読み出し要求されている範囲からデータを読み出し、読み出したデータをバッファに一時記憶し、読み出し要求されている範囲と重複する範囲が前記更新範囲のフィールドに存在するレコードが前記更新管理テーブルにあるならば、前記バッファ中の該レコードの更新範囲で示される部分のデータを該レコードの最新データ保存にあるデータで上書きし、前記バッファのデータをクライアントに返却する読み出しステップを更に備えることを特徴とするプログラム。
【請求項１１】
請求項９に記載のプログラムにおいて、
前記ストレージ方法は、アボート要求があったときに、該アボート要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードを削除するアボートステップを更に備えることを特徴とするプログラム。
【請求項１２】
請求項９に記載のプログラムにおいて、
前記ストレージ方法は、リセット要求があったときに、リセット要求に対応するクライアント識別子と同一のクライアント識別子を有する１又は複数のレコードを前記セッション管理テーブルから削除し、前記１又は複数のレコードのセッション識別子と同一のセッション識別子を有するレコードを前記更新管理テーブルから削除するリセットステップを更に備えることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はストレージ装置及びストレージ方法に関し、特にトランザクション処理に類似したセッション処理を行うことを可能とするストレージ装置及びストレージ方法に関する。
【０００２】
【従来の技術】
従来、計算機システムにおいては、装置障害などの予期せぬ事態が発生しても、整合性のとれた結果を残せるようにするために、トランザクション処理という処理形態が使われている。
【０００３】
この処理形態においては、相互に関連がある一連の処理をまとめてトランザクションと呼び、アプリケーションプログラム中でそれぞれのトランザクションの範囲を明確に宣言する。アプリケーションプログラムにおいては、各トランザクションに属する処理が全て正常に終わった場合はコミットを発行し、ひとつでも異常があった場合はアボートを発行する。トランザクション処理システムは、それぞれのトランザクションがコミットされた時点で、そのトランザクション実行に伴う変更データをパーマネント記録に固定する。一方、トランザクションがアボートされた場合は、そのトランザクション実行に伴うデータ更新は破棄され、該当データはトランザクション開始前の値のまま残る。つまり、アボートした場合は、実際には途中まで処理が実行されているが、パーマネント記憶には何も残らずに、そのトランザクション自体が全く実行されなかったような結果になる。
【０００４】
また、システム動作中に装置障害が発生した場合は、障害を除去しシステム再開後に、障害発生時に実行途中であったトランザクションは全てアボートされ、これらのトランザクションによるデータ更新も無かったことにされる。
【０００５】
すなわち、トランザクション処理においては、ひとつのトランザクションとして実装された一連の処理は、全体が実施されたか実施されなかったかのいずれかの結果になるように制御される。これをトランザクションはアトミックに処理されると呼ぶ。このように、トランザクション処理においては、システム稼動時に処理異常や装置障害などが発生しても、相互に関連するデータが中途半端に更新されることを排除できるので、全体として信頼性の高いシステムが構築可能となる。
【０００６】
なお、トランザクション処理システムにおいては、パーマネント記憶の管理システムとしてはデータベース管理ソフトウェアが使用される。これは、データベース管理ソフトウェアに、コミットやアボートを制御する機能が組み込まれているためである。
【０００７】
本発明に関連する先行技術文献としては以下のものがある。
【０００８】
【特許文献１】
特開２００１−１０１０５３
【特許文献２】
特開２００３−００６０３６
【０００９】
【発明が解決しようとする課題】
さて、計算機システム上で実行されるアプリケーションプログラムは、パーマネント記憶を全てデータベースに置くとは限らない。一般にデータベースは使い方が複雑であり、使用にあたっては専門的な知識も必要となる。このため、高い信頼性が不要であったり、簡単に作ってしまいたいアプリケーションでは、今でもパーマネント記憶をストレージ装置やファイルシステム上に置くことのほうが多い。
【００１０】
すなわち、従来の計算機システムでは、高信頼なアプリケーションシステムを構築するためには、高度なデータベースの使用方法を習得しなければならなかった。また、データベースを使わずに開発されてしまったアプリケーションを、途中から高信頼化するためには、パーマネント記憶を全てデータベースに変更する必要があり、大変面倒であった。
【００１１】
本発明は、データベース管理プログラムを用いなくてもトランザクション処理に類似したセッション処理を行うことを可能とするストレージ装置及びストレージ方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
本発明によれば、セッションを識別するためのセッション識別子のフィールドと該セッション識別子に対応するクライアントを識別するためのクライアント識別子のフィールドとを有するセッション管理テーブルと、前記セッション識別子のフィールドと該セッション識別子に対応するクライアントから更新要求のあった記憶装置上の範囲である更新範囲のフィールドと該更新範囲に書き込むべきデータを保存する最新データ保存のフィールドとを有する更新管理テーブルと、セッション開始要求があったときに、前記セッション管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、クライアント識別子のフィールドに、それぞれ、新たなセッション識別子、前記セッションの開始を要求したクライアントのクライアント識別子とを挿入し、前記新たなセッション識別子を前記セッションの開始を要求したクライアントに通知するセッション開始手段と、書き込み要求があったときに、該書き込み要求による書き込み範囲と重複する部分を前記更新範囲のフィールドに有するレコードが前記更新管理テーブルに存在するか否かを判断し、該判断の結果が否定的であるならば、前記更新管理テーブルに新たなレコードを追加し、該新たなレコードのセッション識別子のフィールド、更新範囲のフィールド、最新データ保存のフィールドに、それぞれ、前記書き込み要求に対応する前記セッション識別子、前記書き込み要求による書き込み範囲、前記書き込み要求による書き込みデータを挿入し、前記判断の結果が肯定的であるならば、存在するレコードの更新範囲のフィールド、最新データ保存のフィールドを、それぞれ、前記書き込み要求による書き込み範囲、前記書込要求による書き込みデータで更新する書き込み手段と、コミット要求があったときに、該コミット要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードの最新データ保存のフィールドにあるデータを前記記憶装置の該レコードの更新範囲で示される範囲に書き込むコミット手段と、を備えることを特徴とするストレージ装置が提供される。
【００１３】
上記のストレージ装置は、読み出し要求があったときに、前記記憶装置の読み出し要求されている範囲からデータを読み出し、読み出したデータをバッファに一時記憶し、読み出し要求されている範囲と重複する範囲が前記更新範囲のフィールドに存在するレコードが前記更新管理テーブルにあるならば、前記バッファ中の該レコードの更新範囲で示される部分のデータを該レコードの最新データ保存にあるデータで上書きし、前記バッファのデータをクライアントに返却する読み出し手段を更に備えていてもよい。
【００１４】
上記のストレージ装置は、アボート要求があったときに、該アボート要求に対応する前記セッション識別子と同一のセッション識別子を有するレコードが前記更新管理テーブルに存在するならば、該レコードを削除するアボート手段を更に備えていてもよい。
【００１５】
上記のストレージ装置は、リセット要求があったときに、リセット要求に対応するクライアント識別子と同一のクライアント識別子を有する１又は複数のレコードを前記セッション管理テーブルから削除し、前記１又は複数のレコードのセッション識別子と同一のセッション識別子を有するレコードを前記更新管理テーブルから削除するリセット手段を更に備えていてもよい。
【００１６】
【発明の実施の形態】
本発明は、トランザクション処理システムにおいて、従来データベース管理ソフトウェアなどに実装されていた処理結果のコミット及びアボート又はロールバックに相当する手続きのうち、永続記憶への書き込みに関する手続きをストレージ装置に実装することで、高度な知識が必要なデータベースなどを使わなくても、トランザクション処理形態のアプリケーションシステムを開発できるようにしたことを特徴としている。
【００１７】
図１において、クライアント装置Ｃは、トランザクション処理形態のアプリケーションプログラムが動作する装置であり、本発明を含むストレージ装置Ｓに対してセッション開始、書き込み、読み出し、コミット及びアボートの要求を発行する。システムオペレータは、装置リセットの要求を発行する。一方、ストレージ装置Ｓは、記憶装置Ｄ、セッション管理テーブルＰ、更新管理テーブルＴ、セッション開始手段１、書き込み手段２、読み出し手段３、コミット手段４、アボート手段５、装置リセット手段６を含む。クライアント装置Ｃからセッション開始、書込み、読出し、コミット、アボートの要求が発行され、システムオペレータから装置リセットの要求が発行されると、セッション開始手段１、書き込み手段２、読み出し手段３、コミット手段４、アボート手段５、装置リセット手段６がそれぞれ起動される。
【００１８】
なお、セッション開始手段１、書き込み手段２、読み出し手段３、コミット手段４、アボート手段５、装置リセット手段６は、コンピュータをこれらの手段として機能させるためのプログラムをコンピュータが読み込んで実行することによって実現することができ、また、ハードウェアによって実現することもでき、これらの組合せによって実現することもできる。
【００１９】
本発明では、ひとつのトランザクション処理のように相互に関連する一連の処理の延長上でストレージ装置Ｓに発行される一連の要求を、セッションと呼ぶことにする。従って、一般的には、セッションは、クライアント装置Ｃからストレージ装置Ｓに発行される相互に関連のある要求の連鎖である。コミットにより終了した場合のセッション開始からコミットまでの処理がセッションを構成する。
【００２０】
さて、記憶装置Ｄは、磁気ディスク装置やその集合体であるＲＡＩＤ装置など、アプリケーションのデータを永続記憶する装置である。セッション管理テーブルＰは、そのストレージ装置Ｓ中で現在実行中の個々のセッションを登録する。更新管理テーブルＴは、個々のセッションにおいて、作業途上の記憶装置Ｄに対する書き込み要求の履歴を記録管理するためのテーブルである。
【００２１】
セッション開始手段１は、新しいトランザクションを始めるときなどに、クライアント装置Ｃから発行された新しいセッション識別子を採番し、それを要求元のクライアント装置と関連付けてセッション管理テーブルＰに登録するとともに、そのセッション識別子をクライアント装置Ｃに返却する。以降、クライアント装置Ｃはこのセッション識別子を添付して後続の要求（書込み、読出し、コミット、アボート及び装置リセットの要求）をストレージ装置Ｓに発行する。
【００２２】
書き込み手段２は、あとで確定も破棄もできるような形で、更新管理テーブルＴに指定された書き込みデータを保存する。コミット手段４は、更新管理テーブルＴに保存されたデータであって指定されたセッションに属するものを記憶装置Ｄに書き出し、そのセッションを終結させる。一方、アボート手段５は、更新管理テーブルＴに保存されたデータであって指定されたセッションに属するものを、記憶装置Ｄには書き出さずに、破棄し、そのセッションを終結させる。また、読み出し手段３は、記憶装置Ｄに保存されているデータ群及び更新管理テーブルＴに保存されているデータ群のうちの適切なものを選び出して、クライアント装置Ｃに返却する。さらに、装置リセット手段６は、装置リセット要求で指定されたクライアント装置が実行中の全セッションをアボートさせる手段である。
【００２３】
このようにして、本発明では、ストレージ装置自身がセッションの概念のもとに相互に関連のある読み書き要求を区別して、セッション終了時にセッションで行われたデータ更新を確定するか破棄するかを指定できるので、データベース管理ソフトウェアなどを使わずにトランザクション処理システムを構築できる。
【００２４】
図１を参照すると、本発明の一実施形態としてのストレージ装置が示されている。図において、記憶装置Ｄは、データを永続記憶するディスク装置などである。セッション管理テーブルＰは、実行中のセッションを管理するテーブルである。更新管理テーブルＴは、コミット前の更新データを管理する。セッション開始手段１は、新規セッションをセッション管理テーブルＰに登録する。書き込み手段２は、クライアント装置Ｃから指定されたセッション識別子と記憶装置Ｄ上の更新範囲と書き込みデータとを関連付けて更新管理テーブルＴに一旦保存する。読み出し手段３は、クライアント装置Ｃから指定された範囲に該当するデータを記憶装置Ｄ及び更新管理テーブルＴのうちの適切なものから抜き出してクライアント装置Ｃに返却する。コミット手段４は、クライアント装置Ｃから指定されたセッションと関連付けて更新管理テーブルＴに登録されている更新データを記憶装置Ｄの該当範囲に書き出し、そのセッションをセッション管理テーブルＰから削除する。アボート手段５は、クライアント装置Ｃから指定されたセッションと関連付けて更新管理テーブルＴに登録されている更新データを破棄し、そのセッションをセッション管理テーブルＰから削除する。装置リセット手段６は、システムオペレータなどから起動され、セッション管理テーブルＰ中で指定されたクライアント装置Ｃと関連付けて登録されている全てのセッションについて、更新管理テーブルＴに登録されている更新データを破棄し、セッション管理テーブルＰからも該当セッションを削除する。
【００２５】
本発明における実施の形態の詳細な動作を図に基づいて説明する。
【００２６】
図２は、セッション管理テーブルＰの内部構造を示す。セッション管理テーブルＰは、実行中セッションのセッション識別子を記録するセッション識別子フィールドＰ１と、該当セッションの開始要求を行ったクライアント装置のクライアント識別子を記録するクライアント識別子フィールドＰ２とから構成され、これらフィールドの情報対が多数並んでいる。
【００２７】
図３は、更新管理テーブルＴの内部構造を示す。更新管理テーブルＴは、更新を行ったセッションのセッション識別子を記録するセッション識別子フィールドＴ１と、その更新要求においてデータが更新された記憶装置Ｄ上の領域を記録する更新範囲フィールドＴ２と、その更新要求によって記憶装置Ｄに書き込まれるべきデータを一時的に代替して保持する最新データ保存フィールドＴ３とから構成され、これらフィールドの情報のセットが多数並んでいる。
【００２８】
図４は、セッション開始手段１の動作を示すフローチャートである。セッション識別子採番ステップＳ１１で、ストレージ装置内部でユニークなセッション識別子を採番し、そのセッション識別子をセッション識別子フィールドＰ１の値、セッション開始手段１を呼び出したクライアント装置のクライアント識別子をクライアント識別子Ｐ２の値とする情報対を生成し、これをセッション管理テーブルＰに登録し、セッション識別子返却ステップＳ１２で、ステップＳ１１で採番したセッション識別子をクライアント装置に返却する。
【００２９】
図５は、書き込み手段２の動作を示すフローチャートである。書き込み範囲検索ステップＳ２１で、更新管理テーブルＴの中からクライアント装置から指定された書き込み範囲と重複する範囲が更新範囲フィールドＴ２に記録されている情報セットを検索する。該当情報セットが存在しない場合は、更新情報新規登録ステップＳ２２で、新たな情報セットを生成し、クライアント装置から指定されたセッション識別子をセッション識別子フィールドＴ１に、クライアント装置から指定された書き込み範囲を更新範囲フィールドＴ２に、クライアント装置から指定された書き込みデータを最新データ保存フィールドＴ３に記録し、正常終了する。書き込み範囲検索ステップＳ２１において、該当情報が存在した場合は、セッション比較ステップＳ２３で、書き込み範囲検索ステップＳ２１で見つかった情報セットのセッション識別子フィールドＴ１の値とクライアント装置から指定されたセッション識別子とを比較する。両者が同じ場合は、更新情報変更ステップＳ２４で、書き込み範囲検索ステップＳ２１で見つかった情報セットのうち、更新範囲フィールドＴ２の値を、今までの更新範囲に加え、クライアント装置から指定された書き込み範囲を含むように変更し、最新データ保存フィールドＴ３の該当範囲（クライアント装置から指定された書き込み範囲）にクライアント装置から指定された書き込みデータを上書きし、正常終了する。セッション比較ステップＳ２３において、セッション識別子の値が違う場合は、エラーリターンする。
【００３０】
図６は、読み出し手段３の動作を示すフローチャートである。記憶装置読み出しステップＳ３２で、記憶装置Ｄから指定された読み出し範囲のデータを読み出して、それをバッファ（図示せず）に一時的に格納し、読み出し範囲検索ステップＳ３１で、更新管理テーブルＴの中からクライアント装置から指定された読み出し範囲と重複する範囲が更新範囲Ｔ２に記録されている情報セットを検索する。該当情報セットが存在しない場合は、読み出しデータ返却ステップＳ３３で、バッファ中のデータをクライアント装置に返却し、正常終了する。読み出し範囲検索ステップＳ３１において、該当情報が存在した場合は、セッション比較ステップＳ３４で、読み出し範囲検索ステップＳ３１で見つかった情報セットのセッション識別子フィールドＴ１の値とクライアント装置から指定されたセッション識別子とを比較する。両者が違う場合は、読み出しデータ返却ステップＳ３３で、バッファ中のデータをクライアント装置に返却し、正常終了する。セッション比較ステップＳ３４で、両方のセッション識別子の値が同じ場合は、同一セッション上で過去に同一領域にデータを書き込んでおり、過去に書き込んだデータを返却する必要があるので、更新データ読み出しステップＳ３５で、読み出し範囲検索ステップＳ３１で見つかった情報セットの最新データ保存フィールドＴ３から読み出し範囲のうちの更新範囲と重複する部分のデータを読み出して、そのデータでバッファに一時格納されているデータを上書きし、読み出しデータ返却ステップＳ３３で、バッファ中のデータをクライアント装置に返却し、正常終了する。
【００３１】
図７は、コミット手段４の動作を示すフローチャートである。セッション検索ステップＳ４１で、更新管理テーブルＴの中からセッション識別子フィールドＴ１の値がクライアント装置から指定されたセッション識別子と一致する情報セットを検索する。該当する情報セットが存在した場合は、更新データ確定ステップＳ４２で、セッション検索ステップＳ４１で見つけた情報セット中の最新データ保存フィールドＴ３に記録されたデータを、記憶装置Ｄ上の同じくセッション検索ステップＳ４１で見つけた情報セット中の更新範囲Ｔ２に記録された位置に書き込み、更新情報削除ステップＳ４３で、更新管理テーブルＴからセッション検索ステップＳ４１で見つけた情報セットを削除し、再びセッション検索ステップＳ４１に戻る。セッション検索ステップＳ４１で、該当する情報セットが存在しなかった場合は、セッション識別子解放ステップＳ４４で、クライアント装置から指定されたセッション識別子の情報対をセッション管理テーブルＰから削除し、終了する。
【００３２】
図８は、アボート手段５の動作を示すフローチャートである。セッション検索ステップＳ５１で、更新管理テーブルＴの中からセッション識別子フィールドＴ１の値がクライアント装置から指定されたセッション識別子と一致する情報セットを検索する。該当する情報セットが存在した場合は、更新情報削除ステップＳ５２で、更新管理テーブルＴからセッション検索ステップＳ５１で見つけた情報セットを削除し、再びセッション検索ステップＳ５１に戻る。セッション検索ステップＳ５１で、該当する情報セットが存在しなかった場合は、セッション識別子解放ステップＳ５３で、クライアント装置から指定されたセッション識別子の情報対をセッション管理テーブルＰから削除し、終了する。
【００３３】
図９は、装置リセット手段６の動作を示すフローチャートである。クライアント装置検索ステップＳ６１で、セッション管理テーブルＰの中からクライアント識別子フィールドＰ２の値がオペレータから指定されたクライアント識別子と一致する全ての情報対を検索する。該当する情報対が存在した場合は、更新情報削除ステップＳ６２で、更新管理テーブルＴからクライアント装置検索ステップＳ６１で見つけた全ての情報対のセッション識別子フィールドＰ１に記載されたセッションの情報セットを全て削除し、セッション識別子解放ステップＳ６３で、セッション管理テーブルＰからクライアント装置検索ステップＳ６１で見つけた全ての情報対を削除し、再びクライアント装置検索ステップＳ６１に戻る。クライアント装置検索ステップＳ６１で、該当する情報セットが存在しなかった場合は、終了する。
【００３４】
【発明の効果】
以上説明したように、本発明においては、以下に記載するような効果を奏する。
【００３５】
第１の効果は、クライアント装置上でアトミックな処理が必要な複数の手続きを含むトランザクション系のアプリケーションプログラムを、データベースを使うこともなく、簡単に書けるようになることである。
【００３６】
その理由は、本発明を使用したストレージ装置を使うと、クライアント装置上のトランザクション系アプリケーションプログラムにおいて、一連の手続きの途中でエラーに遭遇し、その処理全体を打ち切り、該当トランザクションを無かったことにしたいときに、本発明のアボート手段を呼び出すだけで済むためである。本発明を使わないストレージ装置を使うと、トランザクション処理の途中でエラーが発生した場合は、トランザクション先頭からエラーに遭遇するまでに実施したストレージ装置への書き込みを打ち消し、該当領域上のデータをトランザクション開始以前の値に戻す処理が必要となる。
【００３７】
トランザクションの処理内容が複雑になると、エラーが発生する可能性がある箇所は増加し、それぞれの箇所でエラーが発生した場合には、少しずつ異なるデータ巻き戻し処理が必要になる。ところが、本発明を使用したストレージ装置を使えば、トランザクション処理のどこでエラーが発生してもアボート手段を呼び出すだけで済む。すなわち、トランザクションの処理内容が複雑になるほど、本発明の効果は大きくなる。
【００３８】
第２の効果は、クライアント装置が稼動中に障害に遭遇しても、ストレージ装置上のデータを整合性の取れた状態に保つことができることである。
【００３９】
その理由は、本発明を使用したストレージ装置を使うと、クライアント装置が稼動中に障害に遭遇した場合、障害クライアント装置を指定して装置リセット手段を呼び出せば、障害クライアント装置上で実行途中であった、すなわち、コミットされていないトランザクション処理が実施してしまったデータ書き込みを、全てトランザクション開始前の値に巻き戻すことができるからである。すなわち、装置リセット手段を呼び出すだけで、障害遭遇時に実行途中であったトランザクションを全く実行していない状態に戻すことが、簡単に実現できる。
【図面の簡単な説明】
【図１】本発明の実施の形態によるストレージ装置の構成を示すブロック図である。
【図２】図１に示すセッション管理テーブルの内部構成を示す図である。
【図３】図１に示す更新管理テーブルの内部構成を示す図である。
【図４】図１に示すセッション開始手段の動作を示すフローチャートである。
【図５】図１に示す書き込み手段の動作を示すフローチャートである。
【図６】図１に示す読み出し手段の動作を示すフローチャートである。
【図７】図１に示すコミット手段の動作を示すフローチャートである。
【図８】図１に示すアボート手段の動作を示すフローチャートである。
【図９】図１に示す装置リセット手段の動作を示すフローチャートである。
【符号の説明】
１  セッション開始手段
２  書き込み手段
３  読み出し手段
４  コミット手段
５  アボート手段
６  装置リセット手段
Ｐ  セッション管理テーブル
Ｔ  更新管理テーブル
Ｄ  記憶装置
【図１】
2004362142.tif 000003
【図２】
2004362142.tif 000004
【図３】
2004362142.tif 000005
【図４】
2004362142.tif 000006
【図５】
2004362142.tif 000007
【図６】
2004362142.tif 000008
【図７】
2004362142.tif 000009
【図８】
2004362142.tif 000010
【図９】
2004362142.tif 000011