JP4432087B2 - データベース更新管理システム、プログラムおよび方法 - Google Patents

データベース更新管理システム、プログラムおよび方法 Download PDF

Info

Publication number
JP4432087B2
JP4432087B2 JP2006350653A JP2006350653A JP4432087B2 JP 4432087 B2 JP4432087 B2 JP 4432087B2 JP 2006350653 A JP2006350653 A JP 2006350653A JP 2006350653 A JP2006350653 A JP 2006350653A JP 4432087 B2 JP4432087 B2 JP 4432087B2
Authority
JP
Japan
Prior art keywords
data
database
transaction
update
updated
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.)
Expired - Fee Related
Application number
JP2006350653A
Other languages
English (en)
Other versions
JP2008165272A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2006350653A priority Critical patent/JP4432087B2/ja
Priority to US11/957,957 priority patent/US8001098B2/en
Priority to CN2007101600258A priority patent/CN101211362B/zh
Publication of JP2008165272A publication Critical patent/JP2008165272A/ja
Application granted granted Critical
Publication of JP4432087B2 publication Critical patent/JP4432087B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control

Description

本発明は、一般的には、データベースの更新管理に関する。特に、本発明は、複数の同時並行トランザクションによる複数のデータベースに対する更新処理において発生しうるデッドロックの頻度を減少させるための更新管理に関する。
複数のデータベースにまたがる排他制御を行う場合には、例えば、1つのトランザクションがデータベースAをロックしてデータベースBのロック解放を待ち、もう1つのトランザクションがデータベースBをロックしてデータベースAのロック解放を待ち、いつまでたっても処理が進まないという状況、すなわちデッドロックが発生することがある。デッドロックが発生した場合、デッドロックを解消するために、一般的に、一方のトランザクションをアボートし、もう一方のトランザクションの処理を完了させるなどの処理がとられる。
従来、このようなデッドロックの発生を減少させるため、アプリケーション開発者は、複数のデータベースの更新順序を予め決めておき、その順序に従ってデータベースの更新が行われるように、アプリケーションを作成していた。
図1を参照して説明すると、テーブルT1とテーブルT2の2つのデータベースがある場合、アプリケーション開発者は、テーブルT1、テーブルT2の順序で更新すると予め決めておき、それらのデータベースをアクセスするすべてのアプリケーションA1とA2を、その順序でデータベースを更新するように作成する。これにより、デッドロックの発生を減少させることができる。
その関連技術が特許文献1に開示されている。特許文献1に記載の技術は、プログラムを実際に動作させることなく、事前にデッドロックの可能性を検出するという課題を解決するためのものである。この技術は、プログラムのデータベースへのアクセス順序が予め定められたアクセス順序か否かを判定し、前記アクセス順序が予め定められたアクセス順序でないと判定された場合に、予め定められたアクセス順序から逸脱した旨を報知するように構成されている。すなわち、これは、作成されたプログラムが、予め定められたアクセス順序に従って適切に作成されているかどうかを判定するための技術である。
特開2005−122560号公報
近年、アプリケーション開発は、既存のコンポーネントや資産を活用してアプリケーションを作成する傾向が進みつつある。これは、アプリケーション開発手法としてコンポーネント設計が浸透しつつあることや、サービス/コンポーネントの自由な組み合わせによりお客様の業務を実現する、サービス指向アーキテクチャ(SOA)の提唱に起因するものと思われる。
このようなコンポーネント・ベースのアプリケーション開発においては、デッドロック頻度の上昇が、データ・アクセス実装面から問題となる。デッドロックの頻度が上昇する理由は、コンポーネントの自由な組み替えが実行順序の変更をもたらし、その結果、データベースの更新順序の統一性を保てなくなるからである。図1の例において、アプリケーションA1中のコンポーネントC1とC2の実行順序の入れ替えは、図2に示すように、データベースへの更新順序の不統一を引き起こし、その結果、デッドロックが発生しうる。
従来のデッドロックを避けるための基本的戦略は、前述のとおり、データを共有するアプリケーション間で更新順序が統一されるようにアプリケーションを作成することであった。しかしながら、業務の変化に合わせて柔軟に実行順序の組み替えを行うSOAベース・アプリケーションやコンポーネント・ベース・アプリケーションでは、この順序整合を確保することは難しい。
また、コンポーネント単位の開発では、一つのコンポーネント内の更新順序については統一することができるが、図3に示すように、一つの処理が複数のコンポーネントで実現されている場合、全体では更新順序が入れ子になってしまうことが避け得ない。
データベースの更新順序は、データベース・アクセスを行うコンポーネントの組み合せ順序に依存するが、コンポーネントの組み合わせの担当者が、コンポーネント内部のデータ・アクセスの内容まで把握することは困難である。また、コンポーネントの内容によっては、どの順序でコンポーネントを呼び出しても更新順序を統一できない場合もある。
したがって、本発明の目的は、トランザクションによる複数のデータベースに対する更新処理において発生しうるデッドロックの発生頻度を減少させることができるデータベース更新管理システム、プログラムおよび方法を提供することである。
もう一つの本発明の目的は、トランザクションが所定の順序でデータベースを更新する必要がある場合において、アプリケーション側ではその更新順序を意識せずにデータベースを更新することができ、かつ物理的なデータベースに対しては、この順序に従った更新を実現するためのデータベース更新管理システム、プログラムおよび方法を提供することである。
上記の目的を達成するために、本発明は、複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムを提供する。データベース更新管理システムは、複数のデータベースへのアクセス順序を予め記憶するアクセス順序記憶部と、トランザクションから、更新しようとするデータベース中のデータに対するデータ要求を受信するデータ要求受信部と、そのデータをデータベースから仮想データ領域にロードするデータ・ロード部と、トランザクションにより仮想データ領域中のデータが更新されたコトに応じて、更新されたデータを特定する情報を記憶する更新データ記憶部と、トランザクションが完了したことに応じて、記憶された更新データを特定する情報を、アクセス順序に従ってソートするデータ・ソート部を有する。ソートされた更新データを特定する情報を用いてデータベースの更新が行われる。これにより、データベースの更新順序に関するトランザクション間の整合性の保証をトランザクションから分離することが可能となる。
データ・ロード部は、好ましくは、トランザクションからデータ要求を受信する都度、データ要求の対象であるデータをデータベースからロードする。代替的に、データ・ロード部は、トランザクションの開始に応じて、トランザクションが要求するすべてのデータを一括してデータベースからロードするように構成することができる。
トランザクションは、仮想データ領域にロードされたデータを更新する。トランザクションが複数のコンポーネントを含む場合、同一トランザクションに属するコンポーネントからのデータ要求に対しては、同一の仮想データ領域を使用することができる。これにより、同一トランザクションに属するコンポーネント間でのデータの受け渡しが可能となる。
仮想データ領域にロードされたデータが更新されることに応じて、更新データ記憶部において、そのデータに対応する更新フラグがセットされるように構成することができる。これにより、更新されたデータを特定することが可能になる。
好ましくは、データベース更新管理システムは、データベースからロードされたデータが他のトランザクションにより更新されたかどうか判断するロック管理部をさらに含めることができる。ロック管理部は、データ要求の対象であるデータをデータベースからロードすることに応じて取得した当該データの更新時刻を記憶する更新時刻記憶部を有し、記憶された更新時刻と、データベースの更新を行う際に再度データベースからロードした当該データにかかる更新時刻とを比較することにより、当該データが他のトランザクションにより更新されたかどうか判断するように構成することができる。
好ましくは、データベース更新管理システムは、トランザクションが完了したかどうかを監視するトランザクション監視部を含めることができる。トランザクション監視部は、トランザクションの完了を検知することに応じて、データベースの更新処理を開始させる。
好ましくは、データベース更新管理システムは、ソートされた更新データを特定する情報を用いて更新コマンドを作成し、更新コマンドをデータベースに発行する。
以上、データベースの更新を管理するシステムとして本発明の概要を説明したが、本発明は、方法またはプログラム(またはプログラム製品)として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
また、本発明は多くの異なる態様で実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須とは限らないことに留意されたい。実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
図4は、本発明の実施形態おけるデータベース更新管理システムの外観の一例を示した図である。アプリケーション・サーバ100は、クライアント・コンピュータ200およびデータベース300に接続される。データベース更新管理システムは、アプリケーション・サーバ100の一部として機能する。ユーザは、クライアント・コンピュータ200からデータベース・アプリケーションを呼び出してデータベース300にアクセスする。データベース更新管理システムは、データベース・アプリケーションからのデータベース300へのアクセスを管理する。
図11は、本発明の実施の形態におけるアプリケーション・サーバ100、クライアント・コンピュータ200を実現するために好適な情報処理装置1100のハードウェア構成を例示する図である。情報処理装置は、中央処理装置(CPU)1とメインメモリ4を含んでいる。CPU1とメインメモリ4は、バス2を介して、補助記憶装置としてのハードディスク装置13と接続されている。また、フレキシブルディスク装置20、MO装置28、CR−ROM装置26、29などのリムーバブルストレージ(記録メディアを交換可能な外部記憶システム)が関連するフレキシブルディスク・コントローラ19、IDEコントローラ25、SCSIコントローラ27などを介してバス2へ接続されている。
フレキシブルディスク装置20、MO装置28、CR−ROM装置26、29などのリムーバブルストレージには、それぞれフレキシブルディスク、MO、CD−ROMなどの記憶媒体が挿入され、このフレキシブルディスク等やハードディスク装置13、ROM14には、オペレーティング・システムと協働してCPU等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。メインメモリ4にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
情報処理装置は、さらに、ユーザ・インターフェイス・ハードウェアとして、マウス等のポインティング・デバイス7、キーボード6や視覚データをユーザに提示するためのディスプレイ12を有することができる。また、パラレルポート16を介してプリンタ(図示せず)と接続することや、シリアルポート15を介してモデム(図示せず)を接続することが可能である。サーバ100は、シリアルポート15及びモデムを介し、また、通信アダプタ18(イーサネット(登録商標)・カードやトークンリング・カード)等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
スピーカ23は、オーディオ・コントローラ21によってD/A変換(デジタル/アナログ変換)された音声信号を、アンプ22を介して受け取り、音声として出力する。また、オーディオ・コントローラ21は、マイクロフォン24から受け取った音声情報をA/D変換(アナログ/デジタル変換)し、システム外部の音声情報をシステムに取り込むことを可能にしている。
以上の説明により、本発明の実施の形態における情報処理装置は、メインフレーム、ワークステーション、通常のパーソナルコンピュータ(PC)等の情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
本発明の実施に使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得るものであり、それらの変更は、当然に本発明の思想に包含される概念である。
本発明の実施の形態におけるアプリケーション・サーバ100およびクライアント・コンピュータ200は、オペレーティング・システムとして、マイクロソフト・コーポレーションが提供するWindows(登録商標)オペレーティング・システム、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するAIX(登録商標)z/OS(登録商標)、アップル・コンピュータ・インコーポレイテッドが提供するMac OS、あるいはLinux(登録商標)などのGUIマルチウィンドウ環境をサポートするものを採用することができる。
また、クライアント・コンピュータ200、アプリケーション・サーバ100は、オペレーティング・システムとして、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するPC−DOS、マイクロソフト・コーポレーションが提供するMS−DOSなどのキャラクタ・ベース環境のものを採用することもできる。さらに、本発明の実施の形態におけるクライアント・コンピュータ200、アプリケーション・サーバ100は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するOS/Open、Wind River Systems,Inc.のVx WorksなどのリアルタイムOS、Java(登録商標)OSなどのネットワーク・コンピュータに組み込みオペレーティング・システムを採用することもできる。
以上から、本発明の実施の形態におけるクライアント・コンピュータ200、アプリケーション・サーバ100は、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。クライアント・コンピュータ200、アプリケーション・サーバ100はそれぞれ異なるオペレーティング・システム環境で動作するようにしてもよいことは勿論である。
図5は、本発明の実施形態におけるデータベース更新管理システム110を機能ブロックに分類して示す図である。なお、図5の機能ブロック図に示す各要素は、図11に例示したハードウェア構成を有する情報処理装置において、ハードディスク装置13などに格納されたオペレーティング・システムやコンピュータ・プログラムをメインメモリ4にロードした上でCPU1に読み込ませ、ハードウェア資源とソフトウェアを協働させることによって実現することができる。
データベース更新管理システム110は、アクセス順序記憶部111、データ要求受信部112、データ領域初期化部113、仮想データ領域114、データ・ロード部115、更新データ記憶部116、トランザクション監視部117、コマンド発行部118、データ・ソート部119、ロック管理部120、更新時刻記憶部121を含む。
アクセス順序記憶部111は、複数のデータベースにどの順序でアクセスするかを示すアクセス順序を予め記憶する。アクセス順序は、一意的なものであれば、任意の順序でよい。例えば、テーブルT1、テーブルT2、テーブルT3の3つのテーブルが存在し、テーブルT1、テーブルT2、テーブルT3の順序でアクセスすることに決めた場合、アクセス順序記憶部111には、T1、T2、T3のテーブル名が順に記憶される。
データ要求受信部112は、データベース・アプリケーション210のトランザクションから、そのアプリケーションが更新しようとするデータベース300中のデータに対するデータ要求を受信する。これにより、更新管理システム110は、アプリケーション210が、例えば、テーブルT1中のデータを必要としていることを知ることができる。
データ・ロード部115は、データ要求受信部112がアプリケーションのトランザクション210からデータ要求を受信することに応じて、そのトランザクションが要求するデータをデータベース300から仮想データ領域114にロードする。データ要求に基づきデータをロードする段階では、データ・ロード部115は、対象となるデータについて、DBMS(データベース管理システム)の提供する物理ロックを取得しない。
データベース300からのデータのロードは、好ましくは、トランザクションからデータ要求を受信する都度、そのデータ要求の対象であるデータが仮想データ領域114にロード済みでないことを条件に行われる。
しかし、使用可能なメモリ量やデータベースへの入出力の最適化検討に基づき、データ・ロード部115は、そのトランザクションの開始に応じて、そのトランザクションが要求するすべてのデータを一括してデータベース300からロードするように構成してもよい。これは、そのトランザクションで必要とするデータの一覧を予め記憶しておき、そのデータ一覧をデータ要求受信部112が取得することにより実現することができる。
データ領域初期化部113は、トランザクションが要求するデータがロードされるべき仮想データ領域114を初期化し、データをロードできる状態にする。仮想データ領域114は、例えば、Java(登録商標)ヒープ上のインスタンスとして構築することができる。トランザクションは、仮想データ領域114内のデータにアクセスし、更新を行う。トランザクションが仮想データ領域114内のデータを更新した場合、その更新は、即時にデータベース300に反映されるのではなく、そのトランザクションが完了するまでは、仮想データ領域114内のみに保持される。なお、更新には、データの変更の他、削除や挿入も含まれる。
トランザクションが複数のコンポーネントから構成される場合、同一トランザクションに属するコンポーネントは、同一のスレッドに属する。そして、同一トランザクションに属するコンポーネントからのデータ要求に対しては同一の仮想データ領域114が割り当てられ、使用される。これにより、同一トランザクションに属するコンポーネントのうち、先に実行されたものがデータを更新した場合、更新管理システム110は、その更新されたデータを、データベース300からデータをロードすることなく、後に実行されるコンポーネントに対して提供することができる。
更新データ記憶部116は、仮想データ領域114にロードされたデータがアプリケーション210により更新された場合、更新されたデータを特定する情報を記憶する。更新されたデータを特定する情報とは、例えば、更新されたデータを含むテーブルおよびデータ・レコードの識別子である。図6は、本発明の実施形態における更新データ記憶部116の構成例を示す。この例では、テーブルT2のデータ・レコードR2が更新され、次に、テーブルT1のデータ・レコードR3が更新されたことを示す。
図7は、本発明の実施形態における更新データ記憶部116の他の構成例を示す。この例は、図6の構成例と同様に、テーブルT2のデータ・レコードR2の後に、テーブルT1のデータ・レコードR3が更新されたことを示す。図6の構成例との相違は、アクセスされたテーブルのための記憶領域には、各データ・レコードに対応するフラグ領域が設けられており、更新されたデータ・レコードが更新フラグを用いて特定されている点にある。この例では、更新フラグは、データ・レコード単位で設けられているが、カラム単位で設けられてもよい。
トランザクション監視部117は、アプリケーションの更新トランザクションが完了したかどうかを監視する。更新トランザクションの完了を検知することに応じて、データベースの更新処理を開始させる。
コマンド発行部118は、更新トランザクションが完了したことをトリガーとして、そのトランザクションにより更新されたデータをデータベース300に一括反映する。データベース300への反映は、SQLなどの更新コマンドをデータベースに対して発行することにより行われる。なお、DBMSがバッチ・アップデートなどの一括更新のための最適化機能を提供していれば、コマンド発行部118は、その機能を利用することにより、効率的にデータベース300への反映を行うことができる。
更新コマンドは、デッドロックの発生を回避するため、予め定めたアクセス順序に従って発行させる必要がある。そのアクセス順序に従った更新コマンドの発行は、次に説明するデータ・ソート部119と協同して実現される。
データ・ソート部119は、更新データ記憶部116に記憶されている、トランザクションにより更新されたデータを特定する情報を、アクセス順序記憶部111に記憶されているアクセス順序に従ってソートする。
図8を参照して、トランザクションにより任意の順序で更新されたデータを、所定のアクセス順序に従ってデータベース300に反映する仕組みを説明する。アクセス順序記憶部111は、データベースの更新処理において、テーブルT1、テーブルT2の順序でアクセスすべきことを示している。アプリケーション210は、その更新順序を意識して作成されておらず、まず、仮想データ領域114に展開されているテーブルT2のデータ・レコードR2内のデータを更新し、次いで、テーブルT1のデータ・レコードR3内のデータを更新した。その結果、更新データ記憶部116には、トランザクションにより更新された順序で、エントリ「T2・R2」と「T1・R3」が記憶される。
トランザクションが完了したことに応じて、データ・ソート部119は、更新データ記憶部116の内容をアクセス順序記憶部111の順序に従って、ソートする。コマンド発行部118は、ソートされた更新データ記憶部116の内容を参照し、仮想データ領域114内のデータを取り出すことにより、データベース300に発行する更新コマンドを作成する。
データベースへの更新処理を行う際には、対象となるデータについて排他制御を行う必要がある。しかし、前述のとおり、データ・ロード部115は、トランザクションからのデータ要求に基づきデータベース300からデータをロードする際には、物理ロックを取得しない。そこで、データベース300への更新処理を行う際に、別の方法で排他制御を実現する必要がある。本発明の実施の形態においては、ロック管理部120が排他制御機能を提供する。
ロック管理部120は、データベース300からロードされたデータがトランザクションにより処理されている間に、そのデータがデータベース300上で他のトランザクションにより更新されたかどうかを判断する。ロック管理部120は、トランザクションにより要求されたデータをデータベース300からロードする際に、データベース300上に保持されている、当該データが最後に更新された時刻も併せてロードする。ロック管理部120は、取得した更新時刻を、ロック管理部に接続された更新時刻記憶部121に記憶する。
図9は、本発明の実施形態における更新時刻記憶部121の構成例を示した図である。この例では、テーブルT2のデータ・レコードR2およびテーブルT1のデータ・レコードR3がデータベース300からロードされている。そして、テーブルT2のデータ・レコードR2は時刻1に、また、テーブルT1のデータ・レコードR3は時刻2にデータベース300上で最後に更新されていることを示している。
トランザクションにより更新されたテーブルT2のデータ・レコードR2をデータベース300に反映しようとする際、ロック管理部120は、再度、データ・レコードR2の更新時刻3をデータベース300からロードする。そして、ロック管理部120は、更新時刻記憶部121に記憶されていた更新時刻1と新たに取得した更新時刻3とを比較する。ロック管理部120は、その2つの時刻が一致した場合には、当該データ・レコードは他のトランザクションにより更新されていないと判断する。そして、その2つの時刻が異なる場合には、他のトランザクションにより更新されたとロック管理部120は判断する。
図10は、本発明の実施形態におけるデータベースの更新処理を表すフローチャート1000である。処理は、ステップ1001で、複数のデータベースへのアクセス順序を予め決定し、アクセス順序記憶部111に記憶することにより開始する。
データ要求受信部112は、トランザクションから、更新しようとするデータベース300中のデータに対するデータ要求を受信する(ステップ1002)。データ要求受信部112がデータ要求を受信することに応じ、データ領域初期化部113は、そのデータ要求の対象であるデータが展開されるべき仮想データ領域114を初期化/設定する(ステップ1003)。
また、データ要求受信部112がデータ要求を受信することに応じ、データ・ロード部115は、データ要求の対象であるデータをデータベース300から仮想データ領域114にロードする(ステップ1004)。この段階では、排他制御のための物理ロックを取得しない。その代わり、データ・ロード部115は、データベース300からデータをロードする際、当該データの更新時刻も併せてロードし、取得した更新時刻を、ロック管理部120に接続される更新時刻記憶部121に記憶しておく(ステップ1005)。
アプリケーション210は、仮想データ領域114に展開されたデータをアクセスし、更新する。ステップ1006で、仮想データ領域114を管理するプログラム(図示せず)は、仮想データ領域114内のデータがアプリケーション210のトランザクションにより更新されたかどうかを監視する。データが更新されたことを検知した場合(ステップ1006でYES)には、仮想データ領域114を管理するプログラムは、更新されたデータを特定する情報を更新データ記憶部116に記憶する(ステップ1007)。そして、処理は、ステップ1008に進む。一方、データが更新されていない場合(ステップ1006でNO)には、処理は、そのままステップ1008に進む。
ステップ1008では、トランザクション監視部117は、トランザクションが完了したかどうかを監視する。トランザクション監視部117は、更新トランザクションの完了を検知した場合(ステップ1008でYES)には、ステップ1009に進み、更新されたデータが存在することを条件に(ステップ1009でYES)、データベース300への更新処理を開始させる(ステップ1010)。更新されたデータが存在しない場合には、そのまま、処理は終了する。一方、トランザクション監視部117が、更新トランザクションの完了を検知しない場合(ステップ1008でNO)は、ステップ1006に戻り、トランザクションの完了を待つ。
データベース300への更新処理が開始されることに応じ、ロック管理部120は、データ・ロード部115を介して、データベース300から更新対象のデータの更新時刻を取得する(ステップ1011)。その際、DBMSの提供する物理ロックが取得される。ロック管理部120は、取得した更新時刻を、更新時刻記憶部121に記憶されている更新時刻と一致しているかどうか判断する(ステップ1012)。その2つの時刻が一致している場合(ステップ1012でYES)、それは、そのデータがデータベース300から取得されてから現在に至るまで、他のトランザクションによりデータベース300上で更新されていないことを意味するため、処理は、ステップ1013に進み、データベース300への更新コマンドを準備する。
一方、2つの更新時刻が一致しない場合(ステップ1012でNO)、それは、そのデータが他のトランザクションにより更新されていることを意味するため、処理は、ステップ1015に進む。ステップ1015では、事前に設定される排他エラー時の処理が実行される。この設定内容は通常アプリケーションの設計時に決定され、実行時にデータベース更新管理システムに対して定義ファイルなどを使用して設定が行なわれる。排他エラー時の処理例として、ロールバックの発行や、排他エラーを無視した更新の強要などがある。
ステップ1013では、データ・ソート部119が、更新データ記憶部116に記憶されている、更新されたデータを特定する情報を、アクセス順序記憶部111に記憶されているアクセス順序に従って、ソートする。そして、コマンド発行部118は、ソートされた情報を参照し、仮想データ領域114内のデータを取り出すことにより、更新コマンドを作成し、データベース300に発行する(ステップ1014)。
以上、本発明によれば、デッドロックの発生頻度を減少させるため、トランザクションが所定の順序でデータベースを更新する必要がある場合において、トランザクションはその更新順序を意識せずにデータベースを更新することができ、かつ物理的なデータベースに対しては、この順序に従った更新を実現することが可能となる。
本発明は、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または1.他の言語・コード・表記への変換、2.他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブルディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、MRAM、RAM等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
以上、本発明の実施の形態を用いて説明したが、本発明の技術範囲は上記実施の形態に記載の範囲には限定されない。上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
従来のデッドロック回避方法を説明するための図である。 従来のデッドロック回避方法の問題点を説明するための図である。 従来のデッドロック回避方法の問題点を説明するための図である。 本発明の実施形態におけるデータベース更新管理システムの外観の一例を示した図である。 本発明の実施形態におけるデータベース更新管理システムを機能ブロックに分類して示す図である。 本発明の実施形態における更新データ記憶部の構成例を示した図である。 本発明の実施形態における更新データ記憶部の他の構成例を示した図である。 トランザクションにより任意の順序で更新されたデータを、所定のアクセス順序に従ってデータベースに反映する仕組みを説明するための図である。 本発明の実施形態における更新時刻記憶部の構成例を示した図である。 本発明の実施形態におけるデータベースの更新処理を表すフローチャートである。 本発明の実施形態におけるアプリケーション・サーバ、クライアント・コンピュータとして機能する情報処理装置のハードウェア構成の一例を示した図である。

Claims (14)

  1. 複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムであって、
    複数のデータベースにどの順序でアクセスするかを示すアクセス順序を予め記憶するアクセス順序記憶部と、
    トランザクションから、更新しようとする前記データベース中のデータに対するデータ要求を受信するデータ要求受信部と、
    前記データを前記データベースから仮想データ領域にロードするデータ・ロード部と、
    前記仮想データ領域にロードされた前記データが前記トランザクションにより更新されたことに応じて、前記更新されたデータを特定する情報を記憶する更新データ記憶部と、
    前記トランザクションが完了したことに応じて、前記更新データ記憶部に記憶された前記情報を、前記アクセス順序記憶部に記憶されたアクセス順序に従ってソートするデータ・ソート部であって、前記ソートされた情報を用いて前記データベースの更新が行われる、前記データ・ソート部と
    を有する、前記データベース更新管理システム。
  2. 前記データ・ロード部は、前記トランザクションからデータ要求を受信する都度、前記データ要求の対象であるデータを前記データベースからロードする、請求項1に記載のシステム。
  3. 前記データ・ロード部は、前記トランザクションの開始に応じて、前記トランザクションが要求するすべてのデータを一括して前記データベースからロードする、請求項1に記載のシステム。
  4. 前記トランザクションは、前記仮想データ領域にロードされたデータを更新する、請求項1に記載のシステム。
  5. 前記トランザクションは、複数のコンポーネントを含み、同一トランザクションに属する前記コンポーネントからのデータ要求に対して、同一の仮想データ領域が使用される、請求項1に記載のシステム。
  6. 前記仮想データ領域にロードされたデータが更新されることに応じて、前記更新データ記憶部において当該データに対応する更新フラグがセットされる、請求項4に記載のシステム。
  7. 前記データベースからロードされたデータが他のトランザクションにより更新されたかどうか判断するロック管理部をさらに有する、請求項1に記載のシステム。
  8. 前記ロック管理部は、前記データ要求の対象であるデータを前記データベースからロードすることに応じて取得した当該データの更新時刻を記憶する更新時刻記憶部を有し、前記記憶された更新時刻と、前記データベースの更新を行う際に再度、前記データベースからロードした当該データにかかる更新時刻とを比較することにより、当該データが他のトランザクションにより更新されたかどうか判断する、請求項7に記載のシステム。
  9. トランザクションが完了したかどうかを監視するトランザクション監視部をさらに有し、当該トランザクション監視部は、前記トランザクションの完了を検知することに応じて、前記データベースの更新処理を開始させる、請求項1に記載のシステム。
  10. 更新されたデータを特定する前記情報は、前記トランザクションにより更新されたデータを含むテーブルおよびデータ・レコードの識別子である、請求項1に記載のシステム。
  11. 前記ソートされた情報を用いて更新コマンドを作成し、当該更新コマンドを前記データベースに発行するコマンド発行部をさらに有する、請求項1に記載のシステム。
  12. 複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベースの更新を管理する方法であって、データベース更新管理システムに、
    複数のデータベースにどの順序でアクセスするかを示すアクセス順序を予め記憶するステップと、
    トランザクションから、更新しようとする前記データベース中のデータに対するデータ要求を受信するステップと、
    前記データを前記データベースから仮想データ領域にロードするステップと、
    前記仮想データ領域にロードされた前記データが前記トランザクションにより更新されたことに応じて、前記更新されたデータを特定する情報を記憶するステップと、
    前記トランザクションが完了したことに応じて、前記更新データ記憶部に記憶された前記情報を、前記アクセス順序記憶部に記憶されたアクセス順序に従ってソートするステップであって、それによって前記ソートされた情報を用いて前記データベースの更新が行われる、前記ソートするステップと
    を実行させることを含む、前記方法。
  13. 複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新を管理する方法であって、データベース更新管理システムに、
    複数のデータベースにどの順序でアクセスするかを示すアクセス順序をアクセス順序記憶部に予め記憶するステップと、
    トランザクションから、更新しようとする前記データベース中のデータに対するデータ要求を受信するステップと、
    前記データ要求に基づき仮想データ領域にロードされたデータが前記トランザクションにより更新されたことに応じて、前記更新されたデータを特定する情報を記憶するステップと、
    前記トランザクションが完了したことに応じて、前記更新データ記憶部に記憶された前記情報を、前記アクセス順序記憶部に記憶されたアクセス順序に従ってソートするステップであって、それによって前記ソートされた情報を用いて前記データベースの更新が行われる、前記ソートするステップと
    を実行させることを含む、前記方法。
  14. 複数の同時並行トランザクションによる複数のデータベースに対する更新処理において、デッドロックの発生を防止するためのデータベース更新管理システムに、請求項12又は13に記載の方法の各ステップを実行させるプログラム。
JP2006350653A 2006-12-26 2006-12-26 データベース更新管理システム、プログラムおよび方法 Expired - Fee Related JP4432087B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006350653A JP4432087B2 (ja) 2006-12-26 2006-12-26 データベース更新管理システム、プログラムおよび方法
US11/957,957 US8001098B2 (en) 2006-12-26 2007-12-17 Database update management
CN2007101600258A CN101211362B (zh) 2006-12-26 2007-12-20 用于数据库更新管理的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006350653A JP4432087B2 (ja) 2006-12-26 2006-12-26 データベース更新管理システム、プログラムおよび方法

Publications (2)

Publication Number Publication Date
JP2008165272A JP2008165272A (ja) 2008-07-17
JP4432087B2 true JP4432087B2 (ja) 2010-03-17

Family

ID=39544379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006350653A Expired - Fee Related JP4432087B2 (ja) 2006-12-26 2006-12-26 データベース更新管理システム、プログラムおよび方法

Country Status (3)

Country Link
US (1) US8001098B2 (ja)
JP (1) JP4432087B2 (ja)
CN (1) CN101211362B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8407183B2 (en) * 2007-12-21 2013-03-26 Sap Ag Business intelligence data extraction on demand
JP5352421B2 (ja) * 2009-10-30 2013-11-27 株式会社エヌ・ティ・ティ・データ データアクセス装置、データアクセス方法およびデータアクセスプログラム
US8768902B2 (en) * 2010-06-11 2014-07-01 Microsoft Corporation Unified concurrent changes to data, schema, and application
US9258415B1 (en) 2015-03-30 2016-02-09 Captioncall, Llc Communication device and related methods for offline data record modification and synchronization with a backend server associated with a relay service for hearing-impaired users
CN108228893A (zh) * 2018-02-05 2018-06-29 广州中元软件有限公司 一种关系数据库数据持久化优化和排队方法
US11243777B2 (en) * 2018-05-18 2022-02-08 Nuxeo Corporation Process stream replication for content management system synchronization
CN110442361B (zh) * 2019-06-27 2024-02-09 五八有限公司 一种灰度发布方法、装置及电子设备

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0314027A (ja) 1989-06-12 1991-01-22 Kubota Nainen Kiki Service Kk 診断・指導エキスパートシステム
JPH0659959A (ja) 1992-08-04 1994-03-04 Mutoh Ind Ltd ファイル保護方式
GB9424699D0 (en) * 1994-12-07 1995-02-01 Int Computers Ltd Deadlock detection mechanism
JP3014027B2 (ja) 1995-05-19 2000-02-28 エヌ・ティ・ティ移動通信網株式会社 情報信号無線伝送方法
JP2701814B2 (ja) 1995-11-28 1998-01-21 日本電気株式会社 分散ファイル管理方法
JPH1049420A (ja) 1996-08-02 1998-02-20 Fuji Xerox Co Ltd データベース管理方法
JPH1165904A (ja) 1997-08-15 1999-03-09 Nec Corp データ管理システム、データ管理方法およびデータ管理プログラムを記録した媒体
JP3478131B2 (ja) 1998-07-01 2003-12-15 日本電気株式会社 ファイルアクセス装置及びファイルアクセスプログラムを記録したコンピュータ読み取り可能な記録媒体
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
PA8502401A1 (es) * 1999-09-17 2002-02-21 Nagracard Sa Procedimiento y sistema de transmision de una cadena de mensajes para banco de datos.
US6438558B1 (en) * 1999-12-23 2002-08-20 Ncr Corporation Replicating updates in original temporal order in parallel processing database systems
US6957237B1 (en) * 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6947956B2 (en) 2002-06-06 2005-09-20 International Business Machines Corporation Method and apparatus for selective caching of transactions in a computer system
US8010491B2 (en) 2003-02-28 2011-08-30 Microsoft Corporation Method for managing multiple file states for replicated files
JP2005122560A (ja) 2003-10-17 2005-05-12 Fujitsu Ltd デッドロック事前検出プログラム
US7385608B1 (en) * 2003-12-31 2008-06-10 3Dlabs Inc. Ltd. State tracking methodology
JP4314126B2 (ja) 2004-02-20 2009-08-12 株式会社東芝 同時実行制御方法及び装置
JP2005309653A (ja) 2004-04-20 2005-11-04 Hitachi Global Storage Technologies Netherlands Bv ディスク装置及びキャッシュ制御方法
JP4892812B2 (ja) 2004-04-28 2012-03-07 株式会社日立製作所 キャッシュ制御およびデータ処理システム並びにその処理プログラム
GB2414089A (en) * 2004-05-07 2005-11-16 Paul Pickering Adding temporal characteristics to an existing database
US7062628B2 (en) * 2004-09-28 2006-06-13 Hitachi, Ltd. Method and apparatus for storage pooling and provisioning for journal based storage and recovery
US7801882B2 (en) * 2004-10-01 2010-09-21 Microsoft Corporation Optimized constraint and index maintenance for non updating updates

Also Published As

Publication number Publication date
US8001098B2 (en) 2011-08-16
JP2008165272A (ja) 2008-07-17
CN101211362A (zh) 2008-07-02
US20080154900A1 (en) 2008-06-26
CN101211362B (zh) 2010-07-07

Similar Documents

Publication Publication Date Title
CN102934114B (zh) 用于文件系统的检查点
US8276153B2 (en) Method and system for dividing and executing on-line transaction processing in distributed environment
US7672966B2 (en) Adding extrinsic data columns to an existing database schema using a temporary column pool
JP5731000B2 (ja) 差分バックアップからのデータベースの個別復元を実行する方法及びシステム
JP4432087B2 (ja) データベース更新管理システム、プログラムおよび方法
US20180157674A1 (en) Distributed nfs metadata server
US20130318497A1 (en) Infrastructure for the automation of the assembly of schema maintenance scripts
CN100514331C (zh) 在文件系统保持活动状态的同时转换文件系统的方法
US20080104441A1 (en) Data processing system and method
US8832022B2 (en) Transaction processing device, transaction processing method and transaction processing program
JP2008541263A (ja) ファイルシステムディレクトリの高速かつ信頼性のある同期
CN101187934A (zh) 用于提供对关系数据库表的高性能数据修改的方法和系统
US11327905B2 (en) Intents and locks with intent
CN101414295A (zh) 数据库的升级方法
US8918370B2 (en) Dynamic allocation of program libraries
US10997158B2 (en) Techniques for updating big data tables using snapshot isolation
US20150347236A1 (en) System and method for the production of job level pre-processed backup of critical data and/or datasets in a mainframe computing environment
US20100146033A1 (en) Selection of transaction managers based on runtime data
JP6402537B2 (ja) 更新処理プログラム、装置、及び方法
JP2002157156A (ja) データベース管理方法およびシステム並びにその処理プログラムおよびそのプログラムを格納した記録媒体
JP4060890B2 (ja) 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ
EP1941396A2 (en) Method and system for re-population of data in a database
US7647295B2 (en) Method, apparatus, computer program, and computer program product for managing the durability of a pluraliy of transactions
US20210405879A1 (en) Incremental replication between foreign system dataset stores
JP5820902B2 (ja) データベースサーバ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090616

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090616

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090804

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090804

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20090804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091112

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091112

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: 20091204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091207

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20091207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091211

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130108

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140108

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees