(57)【要約】【課題】複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止する。【解決手段】複数のデータベースへのアクセス順序を予め記憶するアクセス順序記憶部と、トランザクションから、更新しようとするデータベース中のデータに対するデータ要求を受信するデータ要求受信部と、データ要求の対象であるデータをデータベースから仮想データ領域にロードするデータ・ロード部と、トランザクションにより仮想データ領域中のデータが更新されたことに応じて、更新されたデータを特定する情報を記憶する更新データ記憶部と、トランザクションが完了したことに応じて、記憶された前記情報を、前記アクセス順序に従ってソートするデータ・ソート部であって、ソートされた前記情報を用いて前記データベースの更新が行われるデータ・ソート部を有する、データベース更新管理システムを提供する。【選択図】図５
2008165272.tif 000002
【特許請求の範囲】
【請求項１】
複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムであって、
複数のデータベースへのアクセス順序を予め記憶するアクセス順序記憶部と、
トランザクションから、更新しようとする前記データベース中のデータに対するデータ要求を受信するデータ要求受信部と、
前記データを前記データベースから仮想データ領域にロードするデータ・ロード部と、
前記トランザクションにより前記仮想データ領域中のデータが更新されたことに応じて、更新された前記データを特定する情報を記憶する更新データ記憶部と、
前記トランザクションが完了したことに応じて、記憶された前記情報を、前記アクセス順序に従ってソートするデータ・ソート部であって、ソートされた前記情報を用いて前記データベースの更新が行われるデータ・ソート部と
を有する、データベース更新管理システム。
【請求項２】
前記データ・ロード部は、前記トランザクションからデータ要求を受信する都度、前記データ要求の対象であるデータを前記データベースからロードする、請求項１に記載のシステム。
【請求項３】
前記データ・ロード部は、前記トランザクションの開始に応じて、前記トランザクションが要求するすべてのデータを一括して前記データベースからロードする、請求項１に記載のシステム。
【請求項４】
前記トランザクションは、前記仮想データ領域にロードされたデータを更新する、請求項１に記載のシステム。
【請求項５】
前記トランザクションは、複数のコンポーネントを含み、同一トランザクションに属する前記コンポーネントからのデータ要求に対しては、同一の仮想データ領域が使用される、請求項１に記載のシステム。
【請求項６】
前記仮想データ領域にロードされたデータが更新されることに応じて、前記更新データ記憶部において当該データに対応する更新フラグがセットされる、請求項４に記載のシステム。
【請求項７】
前記データベースからロードされたデータが他のトランザクションにより更新されたかどうか判断するロック管理部をさらに有する、請求項１に記載のシステム。
【請求項８】
前記ロック管理部は、前記データ要求の対象であるデータを前記データベースからロードすることに応じて取得した当該データの更新時刻を記憶する更新時刻記憶部を有し、記憶された前記更新時刻と、前記データベースの更新を行う際に再度、前記データベースからロードした当該データにかかる更新時刻とを比較することにより、当該データが他のトランザクションにより更新されたかどうか判断する、請求項７に記載のシステム。
【請求項９】
トランザクションが完了したかどうかを監視するトランザクション監視部であって、前記トランザクションの完了を検知することに応じて、前記データベースの更新処理を開始させるトランザクション監視部をさらに有する、請求項１に記載のシステム。
【請求項１０】
更新されたデータを特定する前記情報は、前記トランザクションにより更新されたデータを含むテーブルおよびデータ・レコードの識別子である、請求項１に記載のシステム。
【請求項１１】
ソートされた前記情報を用いて更新コマンドを作成し、前記更新コマンドを前記データベースに発行するコマンド発行部をさらに有する、請求項１に記載のシステム。
【請求項１２】
複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムとして、コンピュータを機能させるプログラムであって、
前記コンピュータを、
複数のデータベースへのアクセス順序を予め記憶するアクセス順序記憶部と、
トランザクションから、更新しようとするデータベース中のデータに対するデータ要求を受信するデータ要求受信部と、
前記データを前記データベースから仮想データ領域にロードするデータ・ロード部と、
前記トランザクションにより前記仮想データ領域中のデータが更新されたことに応じて、更新された前記データを特定する情報を記憶する更新データ記憶部と、
前記トランザクションが完了したことに応じて、記憶された前記情報を、前記アクセス順序に従ってソートするデータ・ソート部であって、ソートされた前記情報を用いて前記データベースの更新が行われるデータ・ソート部と
して機能させるプログラム。
【請求項１３】
複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムとして、コンピュータを機能させるプログラムであって、
前記コンピュータを、
複数のデータベースへのアクセス順序を予め記憶するアクセス順序記憶部と、
トランザクションから、更新しようとするデータベース中のデータに対するデータ要求を受信するデータ要求受信部と、
前記データ要求に基づき仮想データ領域にロードされたデータが前記トランザクションにより更新されたことに応じて、更新された前記データを特定する情報を記憶する更新データ記憶部と、
前記トランザクションが完了したことに応じて、記憶された前記情報を、前記アクセス順序に従ってソートするデータ・ソート部であって、ソートされた前記情報を用いて前記データベースの更新が行われるデータ・ソート部と
して機能させるプログラム。
【請求項１４】
複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベースの更新を管理する方法であって、
複数のデータベースへのアクセス順序を予め記憶するステップと、
トランザクションから、更新しようとするデータベース中のデータに対するデータ要求を受信するステップと、
前記データを前記データベースから仮想データ領域にロードするステップと、
前記トランザクションにより前記仮想データ領域中のデータが更新されたことに応じて、更新された前記データを特定する情報を記憶するステップと、
前記トランザクションが完了したことに応じて、記憶された前記情報を、前記アクセス順序に従ってソートするステップと
を有する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、データベースの更新管理に関する。特に、本発明は、複数の同時並行トランザクションによる複数のデータベースに対する更新処理において発生しうるデッドロックの頻度を減少させるための更新管理に関する。
【背景技術】
【０００２】
複数のデータベースにまたがる排他制御を行う場合には、例えば、１つのトランザクションがデータベースＡをロックしてデータベースＢのロック解放を待ち、もう１つのトランザクションがデータベースＢをロックしてデータベースＡのロック解放を待ち、いつまでたっても処理が進まないという状況、すなわちデッドロックが発生することがある。デッドロックが発生した場合、デッドロックを解消するために、一般的に、一方のトランザクションをアボートし、もう一方のトランザクションの処理を完了させるなどの処理がとられる。
【０００３】
従来、このようなデッドロックの発生を減少させるため、アプリケーション開発者は、複数のデータベースの更新順序を予め決めておき、その順序に従ってデータベースの更新が行われるように、アプリケーションを作成していた。
【０００４】
図１を参照して説明すると、テーブルＴ１とテーブルＴ２の２つのデータベースがある場合、アプリケーション開発者は、テーブルＴ１、テーブルＴ２の順序で更新すると予め決めておき、それらのデータベースをアクセスするすべてのアプリケーションＡ１とＡ２を、その順序でデータベースを更新するように作成する。これにより、デッドロックの発生を減少させることができる。
【０００５】
その関連技術が特許文献１に開示されている。特許文献１に記載の技術は、プログラムを実際に動作させることなく、事前にデッドロックの可能性を検出するという課題を解決するためのものである。この技術は、プログラムのデータベースへのアクセス順序が予め定められたアクセス順序か否かを判定し、前記アクセス順序が予め定められたアクセス順序でないと判定された場合に、予め定められたアクセス順序から逸脱した旨を報知するように構成されている。すなわち、これは、作成されたプログラムが、予め定められたアクセス順序に従って適切に作成されているかどうかを判定するための技術である。
【特許文献１】特開２００５−１２２５６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
近年、アプリケーション開発は、既存のコンポーネントや資産を活用してアプリケーションを作成する傾向が進みつつある。これは、アプリケーション開発手法としてコンポーネント設計が浸透しつつあることや、サービス／コンポーネントの自由な組み合わせによりお客様の業務を実現する、サービス指向アーキテクチャ（ＳＯＡ）の提唱に起因するものと思われる。
【０００７】
このようなコンポーネント・ベースのアプリケーション開発においては、デッドロック頻度の上昇が、データ・アクセス実装面から問題となる。デッドロックの頻度が上昇する理由は、コンポーネントの自由な組み替えが実行順序の変更をもたらし、その結果、データベースの更新順序の統一性を保てなくなるからである。図１の例において、アプリケーションＡ１中のコンポーネントＣ１とＣ２の実行順序の入れ替えは、図２に示すように、データベースへの更新順序の不統一を引き起こし、その結果、デッドロックが発生しうる。
【０００８】
従来のデッドロックを避けるための基本的戦略は、前述のとおり、データを共有するアプリケーション間で更新順序が統一されるようにアプリケーションを作成することであった。しかしながら、業務の変化に合わせて柔軟に実行順序の組み替えを行うＳＯＡベース・アプリケーションやコンポーネント・ベース・アプリケーションでは、この順序整合を確保することは難しい。
【０００９】
また、コンポーネント単位の開発では、一つのコンポーネント内の更新順序については統一することができるが、図３に示すように、一つの処理が複数のコンポーネントで実現されている場合、全体では更新順序が入れ子になってしまうことが避け得ない。
【００１０】
データベースの更新順序は、データベース・アクセスを行うコンポーネントの組み合せ順序に依存するが、コンポーネントの組み合わせの担当者が、コンポーネント内部のデータ・アクセスの内容まで把握することは困難である。また、コンポーネントの内容によっては、どの順序でコンポーネントを呼び出しても更新順序を統一できない場合もある。
【００１１】
したがって、本発明の目的は、トランザクションによる複数のデータベースに対する更新処理において発生しうるデッドロックの発生頻度を減少させることができるデータベース更新管理システム、プログラムおよび方法を提供することである。
【００１２】
もう一つの本発明の目的は、トランザクションが所定の順序でデータベースを更新する必要がある場合において、アプリケーション側ではその更新順序を意識せずにデータベースを更新することができ、かつ物理的なデータベースに対しては、この順序に従った更新を実現するためのデータベース更新管理システム、プログラムおよび方法を提供することである。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために、本発明は、複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムを提供する。データベース更新管理システムは、複数のデータベースへのアクセス順序を予め記憶するアクセス順序記憶部と、トランザクションから、更新しようとするデータベース中のデータに対するデータ要求を受信するデータ要求受信部と、そのデータをデータベースから仮想データ領域にロードするデータ・ロード部と、トランザクションにより仮想データ領域中のデータが更新されたコトに応じて、更新されたデータを特定する情報を記憶する更新データ記憶部と、トランザクションが完了したことに応じて、記憶された更新データを特定する情報を、アクセス順序に従ってソートするデータ・ソート部を有する。ソートされた更新データを特定する情報を用いてデータベースの更新が行われる。これにより、データベースの更新順序に関するトランザクション間の整合性の保証をトランザクションから分離することが可能となる。
【００１４】
データ・ロード部は、好ましくは、トランザクションからデータ要求を受信する都度、データ要求の対象であるデータをデータベースからロードする。代替的に、データ・ロード部は、トランザクションの開始に応じて、トランザクションが要求するすべてのデータを一括してデータベースからロードするように構成することができる。
【００１５】
トランザクションは、仮想データ領域にロードされたデータを更新する。トランザクションが複数のコンポーネントを含む場合、同一トランザクションに属するコンポーネントからのデータ要求に対しては、同一の仮想データ領域を使用することができる。これにより、同一トランザクションに属するコンポーネント間でのデータの受け渡しが可能となる。
【００１６】
仮想データ領域にロードされたデータが更新されることに応じて、更新データ記憶部において、そのデータに対応する更新フラグがセットされるように構成することができる。これにより、更新されたデータを特定することが可能になる。
【００１７】
好ましくは、データベース更新管理システムは、データベースからロードされたデータが他のトランザクションにより更新されたかどうか判断するロック管理部をさらに含めることができる。ロック管理部は、データ要求の対象であるデータをデータベースからロードすることに応じて取得した当該データの更新時刻を記憶する更新時刻記憶部を有し、記憶された更新時刻と、データベースの更新を行う際に再度データベースからロードした当該データにかかる更新時刻とを比較することにより、当該データが他のトランザクションにより更新されたかどうか判断するように構成することができる。
【００１８】
好ましくは、データベース更新管理システムは、トランザクションが完了したかどうかを監視するトランザクション監視部を含めることができる。トランザクション監視部は、トランザクションの完了を検知することに応じて、データベースの更新処理を開始させる。
【００１９】
好ましくは、データベース更新管理システムは、ソートされた更新データを特定する情報を用いて更新コマンドを作成し、更新コマンドをデータベースに発行する。
【００２０】
以上、データベースの更新を管理するシステムとして本発明の概要を説明したが、本発明は、方法またはプログラム（またはプログラム製品）として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
【００２１】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
【発明を実施するための最良の形態】
【００２２】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２３】
また、本発明は多くの異なる態様で実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須とは限らないことに留意されたい。実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００２４】
図４は、本発明の実施形態おけるデータベース更新管理システムの外観の一例を示した図である。アプリケーション・サーバ１００は、クライアント・コンピュータ２００およびデータベース３００に接続される。データベース更新管理システムは、アプリケーション・サーバ１００の一部として機能する。ユーザは、クライアント・コンピュータ２００からデータベース・アプリケーションを呼び出してデータベース３００にアクセスする。データベース更新管理システムは、データベース・アプリケーションからのデータベース３００へのアクセスを管理する。
【００２５】
図１１は、本発明の実施の形態におけるアプリケーション・サーバ１００、クライアント・コンピュータ２００を実現するために好適な情報処理装置１１００のハードウェア構成を例示する図である。情報処理装置は、中央処理装置（ＣＰＵ）１とメインメモリ４を含んでいる。ＣＰＵ１とメインメモリ４は、バス２を介して、補助記憶装置としてのハードディスク装置１３と接続されている。また、フレキシブルディスク装置２０、ＭＯ装置２８、ＣＲ−ＲＯＭ装置２６、２９などのリムーバブルストレージ（記録メディアを交換可能な外部記憶システム）が関連するフレキシブルディスク・コントローラ１９、ＩＤＥコントローラ２５、ＳＣＳＩコントローラ２７などを介してバス２へ接続されている。
【００２６】
フレキシブルディスク装置２０、ＭＯ装置２８、ＣＲ−ＲＯＭ装置２６、２９などのリムーバブルストレージには、それぞれフレキシブルディスク、ＭＯ、ＣＤ−ＲＯＭなどの記憶媒体が挿入され、このフレキシブルディスク等やハードディスク装置１３、ＲＯＭ１４には、オペレーティング・システムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。メインメモリ４にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００２７】
情報処理装置は、さらに、ユーザ・インターフェイス・ハードウェアとして、マウス等のポインティング・デバイス７、キーボード６や視覚データをユーザに提示するためのディスプレイ１２を有することができる。また、パラレルポート１６を介してプリンタ（図示せず）と接続することや、シリアルポート１５を介してモデム（図示せず）を接続することが可能である。サーバ１００は、シリアルポート１５及びモデムを介し、また、通信アダプタ１８（イーサネット（登録商標）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
【００２８】
スピーカ２３は、オーディオ・コントローラ２１によってＤ／Ａ変換（デジタル／アナログ変換）された音声信号を、アンプ２２を介して受け取り、音声として出力する。また、オーディオ・コントローラ２１は、マイクロフォン２４から受け取った音声情報をＡ／Ｄ変換（アナログ／デジタル変換）し、システム外部の音声情報をシステムに取り込むことを可能にしている。
【００２９】
以上の説明により、本発明の実施の形態における情報処理装置は、メインフレーム、ワークステーション、通常のパーソナルコンピュータ（ＰＣ）等の情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００３０】
本発明の実施に使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得るものであり、それらの変更は、当然に本発明の思想に包含される概念である。
【００３１】
本発明の実施の形態におけるアプリケーション・サーバ１００およびクライアント・コンピュータ２００は、オペレーティング・システムとして、マイクロソフト・コーポレーションが提供するＷｉｎｄｏｗｓ（登録商標）オペレーティング・システム、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＡＩＸ（登録商標）ｚ／ＯＳ（登録商標）、アップル・コンピュータ・インコーポレイテッドが提供するＭａｃ  ＯＳ、あるいはＬｉｎｕｘ（登録商標）などのＧＵＩマルチウィンドウ環境をサポートするものを採用することができる。
【００３２】
また、クライアント・コンピュータ２００、アプリケーション・サーバ１００は、オペレーティング・システムとして、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＰＣ−ＤＯＳ、マイクロソフト・コーポレーションが提供するＭＳ−ＤＯＳなどのキャラクタ・ベース環境のものを採用することもできる。さらに、本発明の実施の形態におけるクライアント・コンピュータ２００、アプリケーション・サーバ１００は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＯＳ／Ｏｐｅｎ、Ｗｉｎｄ  Ｒｉｖｅｒ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．のＶｘ  ＷｏｒｋｓなどのリアルタイムＯＳ、Ｊａｖａ（登録商標）ＯＳなどのネットワーク・コンピュータに組み込みオペレーティング・システムを採用することもできる。
【００３３】
以上から、本発明の実施の形態におけるクライアント・コンピュータ２００、アプリケーション・サーバ１００は、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。クライアント・コンピュータ２００、アプリケーション・サーバ１００はそれぞれ異なるオペレーティング・システム環境で動作するようにしてもよいことは勿論である。
【００３４】
図５は、本発明の実施形態におけるデータベース更新管理システム１１０を機能ブロックに分類して示す図である。なお、図５の機能ブロック図に示す各要素は、図１１に例示したハードウェア構成を有する情報処理装置において、ハードディスク装置１３などに格納されたオペレーティング・システムやコンピュータ・プログラムをメインメモリ４にロードした上でＣＰＵ１に読み込ませ、ハードウェア資源とソフトウェアを協働させることによって実現することができる。
【００３５】
データベース更新管理システム１１０は、アクセス順序記憶部１１１、データ要求受信部１１２、データ領域初期化部１１３、仮想データ領域１１４、データ・ロード部１１５、更新データ記憶部１１６、トランザクション監視部１１７、コマンド発行部１１８、データ・ソート部１１９、ロック管理部１２０、更新時刻記憶部１２１を含む。
【００３６】
アクセス順序記憶部１１１は、複数のデータベースにどの順序でアクセスするかを示すアクセス順序を予め記憶する。アクセス順序は、一意的なものであれば、任意の順序でよい。例えば、テーブルＴ１、テーブルＴ２、テーブルＴ３の３つのテーブルが存在し、テーブルＴ１、テーブルＴ２、テーブルＴ３の順序でアクセスすることに決めた場合、アクセス順序記憶部１１１には、Ｔ１、Ｔ２、Ｔ３のテーブル名が順に記憶される。
【００３７】
データ要求受信部１１２は、データベース・アプリケーション２１０のトランザクションから、そのアプリケーションが更新しようとするデータベース３００中のデータに対するデータ要求を受信する。これにより、更新管理システム１１０は、アプリケーション２１０が、例えば、テーブルＴ１中のデータを必要としていることを知ることができる。
【００３８】
データ・ロード部１１５は、データ要求受信部１１２がアプリケーションのトランザクション２１０からデータ要求を受信することに応じて、そのトランザクションが要求するデータをデータベース３００から仮想データ領域１１４にロードする。データ要求に基づきデータをロードする段階では、データ・ロード部１１５は、対象となるデータについて、ＤＢＭＳ（データベース管理システム）の提供する物理ロックを取得しない。
【００３９】
データベース３００からのデータのロードは、好ましくは、トランザクションからデータ要求を受信する都度、そのデータ要求の対象であるデータが仮想データ領域１１４にロード済みでないことを条件に行われる。
【００４０】
しかし、使用可能なメモリ量やデータベースへの入出力の最適化検討に基づき、データ・ロード部１１５は、そのトランザクションの開始に応じて、そのトランザクションが要求するすべてのデータを一括してデータベース３００からロードするように構成してもよい。これは、そのトランザクションで必要とするデータの一覧を予め記憶しておき、そのデータ一覧をデータ要求受信部１１２が取得することにより実現することができる。
【００４１】
データ領域初期化部１１３は、トランザクションが要求するデータがロードされるべき仮想データ領域１１４を初期化し、データをロードできる状態にする。仮想データ領域１１４は、例えば、Ｊａｖａ（登録商標）ヒープ上のインスタンスとして構築することができる。トランザクションは、仮想データ領域１１４内のデータにアクセスし、更新を行う。トランザクションが仮想データ領域１１４内のデータを更新した場合、その更新は、即時にデータベース３００に反映されるのではなく、そのトランザクションが完了するまでは、仮想データ領域１１４内のみに保持される。なお、更新には、データの変更の他、削除や挿入も含まれる。
【００４２】
トランザクションが複数のコンポーネントから構成される場合、同一トランザクションに属するコンポーネントは、同一のスレッドに属する。そして、同一トランザクションに属するコンポーネントからのデータ要求に対しては同一の仮想データ領域１１４が割り当てられ、使用される。これにより、同一トランザクションに属するコンポーネントのうち、先に実行されたものがデータを更新した場合、更新管理システム１１０は、その更新されたデータを、データベース３００からデータをロードすることなく、後に実行されるコンポーネントに対して提供することができる。
【００４３】
更新データ記憶部１１６は、仮想データ領域１１４にロードされたデータがアプリケーション２１０により更新された場合、更新されたデータを特定する情報を記憶する。更新されたデータを特定する情報とは、例えば、更新されたデータを含むテーブルおよびデータ・レコードの識別子である。図６は、本発明の実施形態における更新データ記憶部１１６の構成例を示す。この例では、テーブルＴ２のデータ・レコードＲ２が更新され、次に、テーブルＴ１のデータ・レコードＲ３が更新されたことを示す。
【００４４】
図７は、本発明の実施形態における更新データ記憶部１１６の他の構成例を示す。この例は、図６の構成例と同様に、テーブルＴ２のデータ・レコードＲ２の後に、テーブルＴ１のデータ・レコードＲ３が更新されたことを示す。図６の構成例との相違は、アクセスされたテーブルのための記憶領域には、各データ・レコードに対応するフラグ領域が設けられており、更新されたデータ・レコードが更新フラグを用いて特定されている点にある。この例では、更新フラグは、データ・レコード単位で設けられているが、カラム単位で設けられてもよい。
【００４５】
トランザクション監視部１１７は、アプリケーションの更新トランザクションが完了したかどうかを監視する。更新トランザクションの完了を検知することに応じて、データベースの更新処理を開始させる。
【００４６】
コマンド発行部１１８は、更新トランザクションが完了したことをトリガーとして、そのトランザクションにより更新されたデータをデータベース３００に一括反映する。データベース３００への反映は、ＳＱＬなどの更新コマンドをデータベースに対して発行することにより行われる。なお、ＤＢＭＳがバッチ・アップデートなどの一括更新のための最適化機能を提供していれば、コマンド発行部１１８は、その機能を利用することにより、効率的にデータベース３００への反映を行うことができる。
【００４７】
更新コマンドは、デッドロックの発生を回避するため、予め定めたアクセス順序に従って発行させる必要がある。そのアクセス順序に従った更新コマンドの発行は、次に説明するデータ・ソート部１１９と協同して実現される。
【００４８】
データ・ソート部１１９は、更新データ記憶部１１６に記憶されている、トランザクションにより更新されたデータを特定する情報を、アクセス順序記憶部１１１に記憶されているアクセス順序に従ってソートする。
【００４９】
図８を参照して、トランザクションにより任意の順序で更新されたデータを、所定のアクセス順序に従ってデータベース３００に反映する仕組みを説明する。アクセス順序記憶部１１１は、データベースの更新処理において、テーブルＴ１、テーブルＴ２の順序でアクセスすべきことを示している。アプリケーション２１０は、その更新順序を意識して作成されておらず、まず、仮想データ領域１１４に展開されているテーブルＴ２のデータ・レコードＲ２内のデータを更新し、次いで、テーブルＴ１のデータ・レコードＲ３内のデータを更新した。その結果、更新データ記憶部１１６には、トランザクションにより更新された順序で、エントリ「Ｔ２・Ｒ２」と「Ｔ１・Ｒ３」が記憶される。
【００５０】
トランザクションが完了したことに応じて、データ・ソート部１１９は、更新データ記憶部１１６の内容をアクセス順序記憶部１１１の順序に従って、ソートする。コマンド発行部１１８は、ソートされた更新データ記憶部１１６の内容を参照し、仮想データ領域１１４内のデータを取り出すことにより、データベース３００に発行する更新コマンドを作成する。
【００５１】
データベースへの更新処理を行う際には、対象となるデータについて排他制御を行う必要がある。しかし、前述のとおり、データ・ロード部１１５は、トランザクションからのデータ要求に基づきデータベース３００からデータをロードする際には、物理ロックを取得しない。そこで、データベース３００への更新処理を行う際に、別の方法で排他制御を実現する必要がある。本発明の実施の形態においては、ロック管理部１２０が排他制御機能を提供する。
【００５２】
ロック管理部１２０は、データベース３００からロードされたデータがトランザクションにより処理されている間に、そのデータがデータベース３００上で他のトランザクションにより更新されたかどうかを判断する。ロック管理部１２０は、トランザクションにより要求されたデータをデータベース３００からロードする際に、データベース３００上に保持されている、当該データが最後に更新された時刻も併せてロードする。ロック管理部１２０は、取得した更新時刻を、ロック管理部に接続された更新時刻記憶部１２１に記憶する。
【００５３】
図９は、本発明の実施形態における更新時刻記憶部１２１の構成例を示した図である。この例では、テーブルＴ２のデータ・レコードＲ２およびテーブルＴ１のデータ・レコードＲ３がデータベース３００からロードされている。そして、テーブルＴ２のデータ・レコードＲ２は時刻１に、また、テーブルＴ１のデータ・レコードＲ３は時刻２にデータベース３００上で最後に更新されていることを示している。
【００５４】
トランザクションにより更新されたテーブルＴ２のデータ・レコードＲ２をデータベース３００に反映しようとする際、ロック管理部１２０は、再度、データ・レコードＲ２の更新時刻３をデータベース３００からロードする。そして、ロック管理部１２０は、更新時刻記憶部１２１に記憶されていた更新時刻１と新たに取得した更新時刻３とを比較する。ロック管理部１２０は、その２つの時刻が一致した場合には、当該データ・レコードは他のトランザクションにより更新されていないと判断する。そして、その２つの時刻が異なる場合には、他のトランザクションにより更新されたとロック管理部１２０は判断する。
【００５５】
図１０は、本発明の実施形態におけるデータベースの更新処理を表すフローチャート１０００である。処理は、ステップ１００１で、複数のデータベースへのアクセス順序を予め決定し、アクセス順序記憶部１１１に記憶することにより開始する。
【００５６】
データ要求受信部１１２は、トランザクションから、更新しようとするデータベース３００中のデータに対するデータ要求を受信する（ステップ１００２）。データ要求受信部１１２がデータ要求を受信することに応じ、データ領域初期化部１１３は、そのデータ要求の対象であるデータが展開されるべき仮想データ領域１１４を初期化／設定する（ステップ１００３）。
【００５７】
また、データ要求受信部１１２がデータ要求を受信することに応じ、データ・ロード部１１５は、データ要求の対象であるデータをデータベース３００から仮想データ領域１１４にロードする（ステップ１００４）。この段階では、排他制御のための物理ロックを取得しない。その代わり、データ・ロード部１１５は、データベース３００からデータをロードする際、当該データの更新時刻も併せてロードし、取得した更新時刻を、ロック管理部１２０に接続される更新時刻記憶部１２１に記憶しておく（ステップ１００５）。
【００５８】
アプリケーション２１０は、仮想データ領域１１４に展開されたデータをアクセスし、更新する。ステップ１００６で、仮想データ領域１１４を管理するプログラム（図示せず）は、仮想データ領域１１４内のデータがアプリケーション２１０のトランザクションにより更新されたかどうかを監視する。データが更新されたことを検知した場合（ステップ１００６でＹＥＳ）には、仮想データ領域１１４を管理するプログラムは、更新されたデータを特定する情報を更新データ記憶部１１６に記憶する（ステップ１００７）。そして、処理は、ステップ１００８に進む。一方、データが更新されていない場合（ステップ１００６でＮＯ）には、処理は、そのままステップ１００８に進む。
【００５９】
ステップ１００８では、トランザクション監視部１１７は、トランザクションが完了したかどうかを監視する。トランザクション監視部１１７は、更新トランザクションの完了を検知した場合（ステップ１００８でＹＥＳ）には、ステップ１００９に進み、更新されたデータが存在することを条件に（ステップ１００９でＹＥＳ）、データベース３００への更新処理を開始させる（ステップ１０１０）。更新されたデータが存在しない場合には、そのまま、処理は終了する。一方、トランザクション監視部１１７が、更新トランザクションの完了を検知しない場合（ステップ１００８でＮＯ）は、ステップ１００６に戻り、トランザクションの完了を待つ。
【００６０】
データベース３００への更新処理が開始されることに応じ、ロック管理部１２０は、データ・ロード部１１５を介して、データベース３００から更新対象のデータの更新時刻を取得する（ステップ１０１１）。その際、ＤＢＭＳの提供する物理ロックが取得される。ロック管理部１２０は、取得した更新時刻を、更新時刻記憶部１２１に記憶されている更新時刻と一致しているかどうか判断する（ステップ１０１２）。その２つの時刻が一致している場合（ステップ１０１２でＹＥＳ）、それは、そのデータがデータベース３００から取得されてから現在に至るまで、他のトランザクションによりデータベース３００上で更新されていないことを意味するため、処理は、ステップ１０１３に進み、データベース３００への更新コマンドを準備する。
【００６１】
一方、２つの更新時刻が一致しない場合（ステップ１０１２でＮＯ）、それは、そのデータが他のトランザクションにより更新されていることを意味するため、処理は、ステップ１０１５に進む。ステップ１０１５では、事前に設定される排他エラー時の処理が実行される。この設定内容は通常アプリケーションの設計時に決定され、実行時にデータベース更新管理システムに対して定義ファイルなどを使用して設定が行なわれる。排他エラー時の処理例として、ロールバックの発行や、排他エラーを無視した更新の強要などがある。
【００６２】
ステップ１０１３では、データ・ソート部１１９が、更新データ記憶部１１６に記憶されている、更新されたデータを特定する情報を、アクセス順序記憶部１１１に記憶されているアクセス順序に従って、ソートする。そして、コマンド発行部１１８は、ソートされた情報を参照し、仮想データ領域１１４内のデータを取り出すことにより、更新コマンドを作成し、データベース３００に発行する（ステップ１０１４）。
【００６３】
以上、本発明によれば、デッドロックの発生頻度を減少させるため、トランザクションが所定の順序でデータベースを更新する必要がある場合において、トランザクションはその更新順序を意識せずにデータベースを更新することができ、かつ物理的なデータベースに対しては、この順序に従った更新を実現することが可能となる。
【００６４】
本発明は、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または１．他の言語・コード・表記への変換、２．他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
【００６５】
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブルディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
【００６６】
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【００６７】
以上、本発明の実施の形態を用いて説明したが、本発明の技術範囲は上記実施の形態に記載の範囲には限定されない。上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００６８】
【図１】従来のデッドロック回避方法を説明するための図である。
【図２】従来のデッドロック回避方法の問題点を説明するための図である。
【図３】従来のデッドロック回避方法の問題点を説明するための図である。
【図４】本発明の実施形態におけるデータベース更新管理システムの外観の一例を示した図である。
【図５】本発明の実施形態におけるデータベース更新管理システムを機能ブロックに分類して示す図である。
【図６】本発明の実施形態における更新データ記憶部の構成例を示した図である。
【図７】本発明の実施形態における更新データ記憶部の他の構成例を示した図である。
【図８】トランザクションにより任意の順序で更新されたデータを、所定のアクセス順序に従ってデータベースに反映する仕組みを説明するための図である。
【図９】本発明の実施形態における更新時刻記憶部の構成例を示した図である。
【図１０】本発明の実施形態におけるデータベースの更新処理を表すフローチャートである。
【図１１】本発明の実施形態におけるアプリケーション・サーバ、クライアント・コンピュータとして機能する情報処理装置のハードウェア構成の一例を示した図である。
【図１】
2008165272.tif 000003
【図２】
2008165272.tif 000004
【図３】
2008165272.tif 000005
【図４】
2008165272.tif 000006
【図５】
2008165272.tif 000007
【図６】
2008165272.tif 000008
【図７】
2008165272.tif 000009
【図８】
2008165272.tif 000010
【図９】
2008165272.tif 000011
【図１０】
2008165272.tif 000012
【図１１】
2008165272.tif 000013