(57)【要約】【課題】コンピュータシステムにおけるデータオブジェクトのデータロックにおいて、ワイルドカードを効果的に使用するメカニズムを提供する。【解決手段】ロックサービスはｎ個のデータオブジェクトをロックするためロックの最大数ｋを受け取る。ロックサービスはｎ＜＝ｋであるかチェックしｎ＜＝ｋであればｍ個のキーフィールドのｍ個の名前とｎ個の値をもつロックオブジェクトを生成し、ｎ＜＝ｋでなければｍ個のキーフィールドのｎ個の値について問い合わせ、キーフィールド１〜ｍの値の個数ｙ１〜ｙｍを求め、ｙ１*...*ｙｉ＞＝ｋになるまで１番目のフィールドからｉ番目のフィールドまで求める。条件が満たされたならばキーフィールド１〜ｉ−１についてキーフィールド１〜ｍの名前と値および残りのキーフィールドについてワイルドカードをもつロックオブジェクトを生成する。【選択図】図１
2005235227.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム（１０１）におけるデータオブジェクトのロック方法において、
ロックサービスモジュール（１１３，２０５）を設け、該ロックサービスモジュール（１１３，２０５）は第１の処理モジュール（１１４，２０１）から要求を受け取り、１つまたは複数のデータオブジェクトのために１つまたは複数のロックオブジェクト（１１６，２０６）を生成することにより、第２のデータ処理モジュール（１１５）に対し前記１つまたは複数のデータオブジェクトのアクセスをロックし、
ロックすべき１つまたは複数のデータオブジェクトの１つまたは複数（ｍ個）のキーフィールドの名前（２０５）を受け取るロックサービス（１１３，２０５）を設け、
該ロックサービス（１１３，２０５）は、ロックすべきｎ個のデータオブジェクトにおけるｍ個のキーフィールド各々についてｎ個の値（２０３）を受け取り、
該ロックサービス（１１３，２０５）は、ｎ個のデータオブジェクトをロックするためロックの最大数（ｋ）（２０４）を受け取り、
該ロックサービス（１１３，２０５）はｎ＜＝ｋであるか否かをチェックし、
ｎ＜＝ｋであれば、ｍ個のキーフィールドについてｍ個の名前とｎ個の値を有する１つまたは複数のロックオブジェクト（１１６，２０６）を生成し、
ｎ＜＝ｋでなければ、ｍ個のキーフィールドにおけるｎ個の値について問い合わせ、キーフィールド１〜ｍの種々の値（Val_1.1〜Val_m.ym）の個数（ｙ１〜ｙｍ）を求め、
前記ロックサービス（１１３，２０５）は、ｙ１*...*ｙｉ＞＝ｋになるまで、１番目のフィールドからｉ番目のフィールドまで連続的に求め、ここでｉ＜＝ｍであり、
条件が満たされたならば、キーフィールド１〜ｉ−１についてキーフィールド１〜ｍの名前と値Val_1.1〜Val_(i-1).y(i-1)、および残りのキーフィールドについてワイルドカードを有する１つまたは複数のロックオブジェクト（１１６，２０６）を生成することを特徴とする、
データオブジェクトのロック方法。
【請求項２】
請求項１記載の方法において、  前記残りのキーフィールドについて１つのキーフィールドの種々の値の１つまたは複数の共通の特性を決定し、該決定された共通の特性および１つまたは複数のワイルドカードを、１つのロックオブジェクトまたは各ロックオブジェクト（１１６，２０６）における残りのキーフィールドに書き込むことを特徴とする方法。
【請求項３】
データオブジェクトをロックするロックメカニズムを有するコンピュータシステム（１０１）において、
該ロックメカニズムはロックサービスモジュール（１１３）を有しており、該ロックモジュール（１１３）は、第１の処理モジュール（１１４）からロック要求を受け取り可能であり、１つまたは複数（ｎ個）のデータオブジェクトに対して１つまたは複数のロックオブジェクト（１１６）を生成することにより、第２の処理モジュール（１１５）に対し前記１つまたは複数のデータオブジェクトのアクセスをロックし、
プログラム命令を有するメモリ（１０８）と、
データを受信してエントリするための入力手段（１０９，１０３）と、
データを送信して表示するための出力手段（１０９，１０４）と、
データを格納するための記憶手段（１０７）と、
前記プログラム命令に応答するプロセッサ（１０５）が設けられており、
該プログラム命令は、前記メモリにロードされ前記プロセッサにより実行されると、請求項１または２のいずれか１項記載の方法を実行するためのプログラムコード手段を有することを特徴とするコンピュータシステム。
【請求項４】
コンピュータシステムにおけるデータオブジェクトをロックするためのプログラム命令を有するコンピュータで読み取り可能な媒体において、
該プログラム命令は、コンピュータシステムで実行されると請求項１または２記載の方法を実行するための命令を有することを特徴とする、
コンピュータで読み取り可能な媒体。
【請求項５】
請求項４記載のコンピュータで読み取り可能な媒体を有するコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムにおけるデータオブジェクトのロック方法およびデータオブジェクトをロックするロックメカニズムを有するコンピュータシステムならびにデータオブジェクトをロックするためのプログラム命令を有するコンピュータで読み取り可能な媒体に関する。本発明の技術分野は電子データ処理の分野である。詳しくは、本発明はデータロッキングのための方法、コンピュータプログラム製品ならびにシステムに関する。
【背景技術】
【０００２】
データベースマネージメントシステムは通常、そのデータベースへのアクセスの同期合わせを行う専用のロックメカニズムを備えている。ロックメカニズムの目的は、２つのトランザクションがデータベース上の同じデータを同時に変更しないようにすることである。
【０００３】
ロックは一般に「ロックオブジェクト」として定義される。ロックエントリはロックオブジェクトのある特定のインスタンスであり、１つの訂正または１つのテーブルエントリまたは１つのファイルまたは１つのテーブル全体というような何らかのデータベースオブジェクトをロックする。一般にロックは、ユーザプログラムがデータオブジェクトにアクセスし再びそれを解放するとき、自動的にセットされ自動的に削除される。対話型のトランザクションをプログラミングするときには、特定のファンクションモジュールを呼び出すことによりロックをセットおよび解放することができる。データレコードがロックエントリによりロックされることになるテーブルは、それらのキーフィールドとともにロックオブジェクトにおいて定義される。複数のテーブルが選択された場合、最初に１つのテーブル（プライマリテーブル）が選択される。他のテーブル（セカンダリテーブル）も外部キー関係を用いて加えることができる。
【０００４】
ロックオブジェクトにおけるテーブルのロック引数は、そのテーブルのキーフィールドによって構成されている。ロックオブジェクトのロック引数フィールドを、ロックオブジェクト定義から生成されるロックをセットおよび除去するためのファンクションモジュールにおける入力パラメータとして使用することができる。それらのファンクションモジュールが呼び出されると、それらのフィールド内に所定の値を定義することによってロックすべきまたはアンロックすべきテーブルエントリが指定される。それらの値を総称またはワイルドカードとすることもできる。これによればロック引数フィールドにより、テーブルエントリのどの集合がロックされるべきかが定義される。ロックオブジェクトの単純なケースはちょうど１つのテーブルから成り、このテーブルのロック引数はそのプライマリキーである。１つのロックオブジェクトに複数のテーブルを含めることもできる。それによればロックエントリは、あるテーブルの１つのレコードだけでなく、論理的な１つのオブジェクト全体をロックすることができる。このような論理的なオブジェクトをたとえば、ヘッダテーブルに１つのエントリをもち、ポジションテーブルにＮ個のエントリをもつドキュメントとすることができる。さらにロックオブジェクト内のテーブルごとにロックモードを割り当てることができる。このモードによれば、ロックされたテーブルのレコードに対し他のユーザがどのようにアクセスできるかについて定義される。
ロックモードによって、複数のユーザがデータレコードに対して同時にアクセスできるか否かがコントロールされる。ロックオブジェクト内のテーブルごとに、ロックモードを別個に割り当てることができる。ロックがセットされると、対応するロックエントリがテーブルごとにシステムのロックテーブルに格納される。１ユーザよりも多くのユーザによるアクセスを以下のようにして同期合わせすることができる：
排他ロック：ロックされたデータは、ただ１人のユーザによってしか表示または編集できない。さらに別の排他ロックまたは共有ロックに対する要求は拒否される。
【０００５】
共有ロック：ロックされたデータに対し、１人よりも多くのユーザが表示モードで同時にアクセスできる。他のユーザからのものであっても、他の共有ロックに対する要求は許可される。排他ロックは拒否される。排他的であるが累積的ではない：排他ロックは同じトランザクションから複数回にわたって要求することができ、これは連続的に処理される。これとは対照的に、排他的であるが累積的でないロックは、同じトランザクションからただ１度しか呼び出せない。他のすべてのロック要求は拒否される。
２つのメインファンクションをもつ論理的ロックメカニズムによって、同じデータに対する複数のプログラムによるアクセスを同期合わせすることができる：あるプログラムは他のプログラムに対し、どのデータレコードが現在読み出し中または変更中であるのかを伝えることができる。ある１つのプログラムは、他のプログラムによって現在変更中のデータの読み出しを自動的に防止することができる。また、ロックすべきテーブルのデータレコードを論理的条件によって定義することもできる。ロックがセットされるときに、この論理的条件がロックテーブルにエントリされる。このエントリは、プログラムによって取り除かれるまで保持され、あるいはプログラムが終わりに達するまで保持される。したがって、あるプログラムによってセットされているロックすべては、プログラム終了時に取り除かれる。データレコードにアクセスする際、他のプログラムによって編集中のレコードをロックテーブル中のエントリによって識別することができる。ロックに対するこのようなエントリによって、完全に指定された多数のキーフィールドを定義することができる。つまり、ある１つの値がキーフィールドとみなされるかまたは、このフィールドがワイルドカードによって包括的にロックされる。
【０００６】
エンタープライズビジネスソフトウェアおよびコンピュータシステムにおいて該当することの多いマルチユーザシステム環境の場合、１人のユーザにより処理されているデータは、第２のユーザがそれを同時にアクセスすることができないようロックされなければならない。このことはデータの不一致を避けるために重要である。
【０００７】
通常、データは処理されるデータのキー（たとえばドキュメント番号、コストセンタ cost centre ｉｄ）を介してロックされている。しかしながら、多数のデータを同時に処理するビジネストランザクション（たとえば数千点に及ぶ部品をもつ１台の自動車のコスト計算、あるいは多数のコストセンタとアクティビティとコストオブジェクトとの間のバリュー・フロー・ネットの評価）により、そのキーを介してデータの一点一点をことごとくロックすることはできない。なぜならば、ハードウェアリソースが制約されているためセット可能なロックの個数が制限されているからである。たとえば、トランザクションごとの妥当なロックの個数は、かなり大規模なマルチユーザシステムに対して約５０ほどである。それ以上多くなってしまうと、システムパフォーマンスを損なうことになってしまう。このことが殊にあてはまるのは、数百または数千のユーザが同時にシステムにおいてロックのセットを行うときである。このため上述のような大量のトランザクションによって、データ一点一点（たとえばあらゆる製造番号あるいはコストセンタＩＤ）をことごとくロックすることはできない。そうではなく１つのロックエントリにワイルドカードを使用して、複数の単独キーおよび多くの点数のデータを１つのエントリを介してロックすることができる。アメリカ合衆国特許6,047,283には、データベースをアクセスする複数のユーザによるロック要求の衝突を管理するためにダイナミックロックテーブルが使用されるロックメカニズムについて開示されている。
【０００８】
しかしワイルドカードは慎重に使用しなければならない。さもないと過度に多くのデータがロックされてしまい、他のユーザは必要なデータにアクセスできなくなって自身のタスクを続けられなくなってしまう。たとえば１００個の部分製品をもつ１つの製品の計算中、製品のためのロックエントリに単にワイルドカードをもたせることで、すべての製品をロックすることはできず、さもないと第２のユーザは無関係な製品のコスト計算を実行できない。
【０００９】
これまでの説明は本発明の発明者の知識に基づくものであって、必ずしも従来技術ではない。
【特許文献１】US 6,047,283
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、上述の問題点の少なくとも一部分のもっと効果的な解決手段を提供する方法、ソフトウェアアプリケーションおよび／またはデータ処理システムが必要とされている。殊に望まれるのは、データロックにおいてワイルドカードをもっと効果的に使用するためのメカニズムをもつソフトウェアアプリケーションを提供することである。
【課題を解決するための手段】
【００１１】
ロックサービスモジュールを設け、該ロックサービスモジュールは第１の処理モジュールから要求を受け取り、１つまたは複数のデータオブジェクトのために１つまたは複数のロックオブジェクトを生成することにより、第２のデータ処理モジュールに対し前記１つまたは複数のデータオブジェクトのアクセスをロックし、ロックすべき１つまたは複数のデータオブジェクトの１つまたは複数のキーフィールドの名前を受け取るロックサービスを設け、該ロックサービスは、ロックすべきｎ個のデータオブジェクトにおけるｍ個のキーフィールド各々についてｎ個の値を受け取り、該ロックサービスは、ｎ個のデータオブジェクトをロックするためロックの最大数を受け取り、該ロックサービスはｎ＜＝ｋであるか否かをチェックし、ｎ＜＝ｋであれば、ｍ個のキーフィールドについてｍ個の名前とｎ個の値を有する１つまたは複数のロックオブジェクトを生成し、ｎ＜＝ｋでなければ、ｍ個のキーフィールドにおけるｎ個の値について問い合わせ、キーフィールド１〜ｍの種々の値の個数を求め、前記ロックサービスは、ｙ１*...*ｙｉ＞＝ｋになるまで、１番目のフィールドからｉ番目のフィールドまで連続的に求め、ここでｉ＜＝ｍであり、条件が満たされたならば、キーフィールド１〜ｉ−１についてキーフィールド１〜ｍの名前と値、および残りのキーフィールドについてワイルドカードを有する１つまたは複数のロックオブジェクトを生成することにより解決される。
【発明を実施するための最良の形態】
【００１２】
この場合、データオブジェクトは生成されたロックオブジェクトに従いロックされる。本発明による方法は、一般的な手法でロックを最適化するために利用することができ、したがって既存のものと置き換えることができ、その結果、いっそう良好なシステム保守性が得られる。
【００１３】
さらに本発明の実施形態として挙げられるのは、上述の方法ならびにその実施形態によるコンピュータシステムにおけるデータセットをロックするためのプログラムコードまたはプログラム命令をそれぞれ有するコンピュータシステム、コンピュータプログラムならびにコンピュータで読み取り可能な媒体である。
【００１４】
また、上述のようなコンピュータプログラムを、それぞれ異なるハードウェアシステム（コンピュータまたはコンピュータシステム）における１つまたは複数のプログラムまたはプログラムモジュールとしてインストールすることができ、各々を別個に独立して実行することができ、全体として本発明による方法およびその実施形態を実行することができる。種々のシステムを、互いに通信し合うようネットワークの形態で接続することができる。
【００１５】
実施例の説明には本発明の種々の実施形態の付加的な目的や利点が述べられており、あるいは本発明を実施することでそれらを理解することができる。本発明の実施形態の目的ならびに利点を、殊に特許請求の範囲に示されている要素やそれらの組み合わせによって実現し達成することができる。詳細な説明および独立請求項ならびに従属請求項には本発明の実施形態が開示されている。適用可能なであれば、様々な実施形態に種々の着想を含めることができ、および／またはそれらを除外することができる。適用可能であれば、これに加えて様々な実施形態を他の実施形態の着想または特徴と組み合わせることができる。
【００１６】
なお、上述の概略的な説明ならびに以下の詳細な説明は例であって、説明のためのものにすぎず、特許請求の範囲に記載された本発明の形態を限定するものではない。また、特定の実施形態についての着想の説明、特徴および／または利点は、他の実施形態や請求項を制限するものと解釈されるものではない。
【００１７】
本明細書のコンセプトにおいて、使用される用語は異なる定義がなされていないかぎり、データ処理の分野というコンテキストにおいて一般的な意味をもつものである。殊にコンピュータシステムとは広い概念で、ＰＣまたはラップトップのようなあらゆるスタンドアローンコンピュータ、またはたとえば社内ネットワークなどのネットワークを介して接続された一連のコンピュータ、あるいはインターネットを介して接続された一連のコンピュータのことを指す。コンピュータシステムとプログラムは密接に関連しているといえる。ここで用いるように「コンピュータが〜をもたらす」および「プログラムが特定のアクションをもたらすまたは実行する」、「ユーザが特定のアクションを実行する」といったフレーズは、プログラムによりコントロール可能なコンピュータシステムによるアクションを表現するために用いられるし、あるいはコンピュータシステムが特定のアクションを実行できるよう、あるいはユーザがコンピュータシステムを用いて特定のアクションを実行できるよう、プログラムまたはプログラムモジュールを設計可能であることを表現するために用いられる。
【００１８】
さらにこのコンテキストにおいて「自動的に」という表現は、プロセスの流れの中でユーザとコンピュータシステムとの対話の除外を意図するものでもない。
【００１９】
発明の概要において説明したように本発明による方法を、コンピュータシステムおよびコンピュータソフトウェアを用いて実装することができ、それによってビジネスソフトウェアアプリケーションを作成することができるし、データベースまたはデータベースアプリケーションおよびインターネットアプリケーションを使用できるようになる。殊にロックオブジェクトを、データベース有利にはリレーショナルデータベースにおける１つまたは複数のテーブルの１つまたは複数の行として実装することができる。オブジェクト指向プログラム言語の場合、ロックオブジェクトをクラスのインスタンスとしてインプリメントすることができる。なお、データオブジェクトという用語は広く一般に、１つのキーにより識別されるデータベースにおける何らかのデータのことを指す。
【００２０】
発明の概要において説明したように本発明による方法の１つの実施形態によればさらに、残りのキーフィールドに対して１つのキーフィールドの種々の値について１つまたは複数の共通の特性が決定され、決定された共通の特性と１つまたは複数のワイルドカードがロックオブジェクトまたはロックオブジェクト各々における残りのキーフィールドに書き込まれる。共通の特性を、値を形成するキャラクタにおける１つまたは複数の連続するキャラクタから成るキャラクタストリングとすることができる。たとえばA1BC123, A2BC234といった値において、"A"と"BC"は共通のキャラクタである。したがってA3BC345をA?BCと置き換えることができる。この事例において"?"は単一キャラクタに対するワイルドカードであり、"*"は何らかの複数のキャラクタに対するワイルドカードである。
【００２１】
あるコンピュータプログラムの実行に適したプロセッサには一例として、汎用マイクロプロセッサと特定用途プロセッサの双方、ならびに何らかの種類のディジタルコンピュータにおける１つまたは複数のプロセッサが含まれる。一般にプロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはそれらの双方から命令とデータを受け取る。コンピュータの基本的な要素は、命令実行用のプロセッサと命令およびデータを格納するための１つまたは複数の記憶装置である。さらにコンピュータには一般に、データを格納するための１つまたは複数の大容量記憶装置（記憶手段）を有しているかまたは、データを受け取ったりデータを送ったりあるいは双方の目的で１つまたは複数の大容量記憶装置と機能的に結合されており、そのような大容量記憶装置はたとえば磁気ディスク、光磁気ディスクまたは光ディスクなどである。コンピュータプログラムの命令およびデータを実現するのに適した情報担体にはあらゆる形式の不揮発性メモリが含まれており、そのような不揮発性メモリとしてたとえばＥＰＲＯＭ，ＥＥＰＲＯＭ，フラッシュメモリデバイスなどのような半導体メモリデバイス、内蔵ハードディスクやリムーバルディスクなどのような磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭディスク、ＤＶＤ−ＲＯＭディスクが挙げられる。プロセッサおよびメモリをＡＳＩＣ（特定用途向け集積回路）によって補うこともできるし、あるいはそれに組み込むこともできる。
【００２２】
ユーザとの対話を行えるようにする目的で本発明を、ユーザに情報を表示するためのＣＲＴ（ブラウン管）またはＬＣＤ（液晶ディスプレイ）モニタ、ユーザがコンピュータに入力できるようにするためのキーボード、マウスやトラックボールなどのようなポインティングデバイスを備えたコンピュータシステムにおいて実現することができる。他の種類のデバイスも同様にユーザとの対話を行わせるために利用できる。たとえばユーザに対して提供されるフィードバックを視覚によるフィードバック、聴覚によるフィードバックまたは触覚によるフィードバックのような何らかの形態の感覚的フィードバックとすることができるし、ユーザからの入力を音響的入力、音声入力または触覚による入力を含む何らかの形態で受け取ることができる。
【００２３】
次に、本発明の原理ならびにその実施形態について、添付の図面に例示されているデータ処理プロセスに基づき詳しく説明する。
【実施例】
【００２４】
図１を参照しながら説明すると、本発明の有利な実施形態によればコンピュータシステム１０１は、コンピュータ１０２と操作手段１０３，１０４を有している。当業者にとって自明であるように、本発明による方法および装置をどのようなコンピュータシステムにも同様に適用することができ、そのコンピュータシステムが複雑なマルチユーザコンピューティング機器であろうと、パーソナルコンピュータまたはワークステーションのようなシングルユーザの機器であろうと同様に適用することができる。適切であるのはコンピュータ１０２がプロセッサ１０５、メインメモリ１０８、メモリコントローラ１０６、補助記憶装置インタフェース１１２ｃ、汎用入出力インタフェース１１２ｂならびに端末インタフェース１１２ａを有することであり、これらすべてはシステムバス１１４を介して接続されている。ここで留意したいのは、キャッシュメモリを加えたり他の周辺機器を追加したりといった様々な変形や追加または省略を、図１に描かれているコンピュータシステム１０１に対し本発明の範囲内で行えることである。図１には、コンピュータシステム１０１の顕著な特徴のいくつかが簡単に描かれている。
【００２５】
プロセッサ１０５はコンピュータシステム１０１の計算機能およびコントロール機能を実行し、適切な中央プロセッサユニット（ＣＰＵ）を有している。プロセッサ１０５はマイクロプロセッサのようなただ１つの集積回路を有することができるし、あるいはプロセッサの機能を果たすために共働する適切な個数の集積回路デバイスおよび／または共働する回路基板を有することができる。適切であるのは、プロセッサ１０５がメインメモリ１０８内の（オブジェクト指向）コンピュータプログラムを実行できることである。補助記憶インタフェース１１２ｃを介してコンピュータシステム１０１は、磁気ディスク（たとえばハードディスクまたはフロッピーディスク）または光学記憶デバイス（たとえばＣＤ−ＲＯＭ）などのような補助記憶装置に情報を記憶したり、そこから情報を取り出すことができる。１つの適切な記憶装置はダイレクトアクセスストレージデバイス（direct access storage device, DASD）１０７である。図１に示されているようにＤＡＳＤ １０７をハードディスクドライブとすることができ、これによってハードディスクからプログラムとデータを読み出すことができる。なお、これまで本発明について完全に機能的なコンピュータシステムというコンテキストで説明してきたが（これ以降も同様であるが）、当業者であれば自明であるように、本発明のメカニズムを様々な形態のプログラム製品として配布することができるし、あるいはそのようなディストリビューションを実際に実行するために特定のタイプの信号媒体に左右されることなく本発明を等しく適用することができる。
【００２６】
信号媒体の例として、フロッピーディスクやＣＤ−ＲＯＭなどのような記録可能な形式の媒体、無線通信リンクを含むディジタルおよびアナログの通信リンクなどのような伝送型媒体が挙げられる。プロセッサを利用したメモリコントローラ１０６の役割は、要求された情報をメインメモリ１０８から、および／または補助記憶装置インタフェース１１２ｃを介して、プロセッサ１０５へ移すことである。説明の都合上、メモリコントローラ１０６は１つの独立した存在として示されている。当業者であれば自明であるように、実装にあたりメモリコントローラ１０６により提供される機能の一部分を、実際にはプロセッサ１０５，メインメモリ１０８および／または補助記憶装置インタフェース１１２ｃと組み合わせられた回路中に設けることができる。
【００２７】
端末インタフェース１１２ａによってシステムアドミニストレータおよびコンピュータプログラマはコンピュータシステム１０１と通信することができ、通常このことはモニタ１０４、キーボード１０３、マウス、トラックボール等あるいはプログラマブルワークステーションを介して行うことができる。図１に描かれているシステム１０１にはただ１つのメインプロセッサ１０５とただ１つのシステムバス１１４しか設けられていないけれども、複数のプロセッサと複数のシステムバスを備えたコンピュータシステムにも本発明を同様に適用できることは自明である。同様に、有利な実施形態のシステムバス１１４は典型的にはハードワイヤードであるマルチドロップバスであるけれども、コンピュータ関連環境において指向性通信をサポートするいかなるコネクション手段であっても使用することができる。入出力インタフェース１１２ｂにより、コンピュータシステム１０１はプロセッサ１０５を介して汎用入出力手段１０９と通信を行うことができ、この汎用入出力手段１０９にはネットワークコネクション手段１１０が設けられていて、この手段は、たとえば１つまたは複数の別のコンピュータシステム１１１とのネットワークコネクションのためにデータを送信および／または受信し、あるいは他の加入者からのまたは他の加入者へのデータを送信または受信する。コンピュータシステム１０１のような複数のコンピュータシステムを、ネットワークの形態をとるネットワークコネクション手段１１０を介して接続することができる。このようなケースでは複数のネットワークコンピュータ１１１を、さらに別の記憶場所としての利用を含むさらに別の入出力手段として使用することができる。有利な実施形態によれば、適切な形態ではメモリ１０８にオペレーティングシステム、プログラムならびにデータが含まれており、殊にロックサービスモジュール１１３（lock service）、第１の処理モジュール１１４、第２の処理モジュール１１５、ＤＡＳＤメモリ１０７内のデータオブジェクトをロックするためのロックオブジェクト１１６が含まれている。なお、自明なことながらこのアプリケーションの目的からすれば、メモリ１０８という用語はかなり広い意味で使用されており、これにはダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、フラッシュメモリ、キャッシュメモリ等を含めることができる。また、図１には明示的には示されていないけれども、メモリ１０８をただ１つの形式のメモリ素子としてもよいし、複数の異なる形式のメモリ素子によって構成してもよい。たとえば、メモリ１０８とＣＰＵ１０５を、集合的にシステム１０１を有する複数の異なるコンピュータに及ぶかたちで配布することができる。さらに自明であるように、メモリ１０８内のプログラムにはあらゆる形態のコンピュータプログラムを含めることができ、ソースコード、中間コード、マシンコードおよび他のいかなるコンピュータプログラム表現形態であっても含めることができる。
【００２８】
その際、オペレーティングシステムを、IBMのOS/400, OS2, Microsoft Windows, JAVAならびに様々な仕様のUNIXなどあらゆる適切なオペレーティングシステムとすることができる。データベース１１７によって、コンピュータシステム１０１内にオブジェクトデータを持続的に格納するためのメカニズムが提供され、IBM, OracleまたはMicrosoftから市販されているような有利にはリレーショナルであるあらゆる適切なデータベースとすることができる。
【００２９】
当業者であれば明らかであるように、上述のプロセッサのうち２つ以上を１つのコンピュータシステム内で並列動作させることができる。次に図２を参照すると、そこには本発明のさらに別の有利な実施形態が描かれており、図１に示したようなコンピュータシステムのメインメモリ内に配置された第１の処理モジュール２０１、ロックサービス２０５およびロックオブジェクト２０６が示されている。データベース内の１つまたは複数のデータにアクセスする前に処理モジュール２０１は、ロックすべきｎ個のデータオブジェクトにおけるｍ個のキーフィールド名２０２と、ロックすべきｎ個のデータのためのキーフィールド値テーブル２０３と、ロック最大数の数値２０４（ここではｋ個）を、ロックサービス２０５へ渡す。この場合、キーフィールド名は、データベースおよびロックすべきデータオブジェクトの構造に整合する順序にすべきである。ロックサービス２０５は受け取ったデータを処理した後、ｎ個のデータオブジェクトに対してｘ＜＝ｋ個のエントリをもつ１つのロックオブジェクト２０６を生成する。これらのエントリは、ｎ個のデータオブジェクトをロックするために使用されるｘ*ｍ個のキーフィールドのための値を有している。ｎがｋよりも小さいかまたは等しければ、ｎ*ｍ個のキーフィールドのｎ*ｍ個の値から成るテーブル（ロックオブジェクト）が戻される。その理由は、データキーの個数が可能なロック数を超えておらず、すべてのデータオブジェクトをその完全なキーでロックできるからである。そうではなくてｎがｋよりも大きければ、一度に１つのキーフィールドに対する複数の値をロックするためにワイルドカードが用いられる。ワイルドカードを使用する場所を決定するため、ロックサービス２０５はロックを最適化するためにヒューリスティックな方法を使用することができる。このようなヒューリスティックな方法によればロックサービス２０５は、キーフィールドごとに現れるすべての値を最初に収集することができる。これはテーブル１に示されている１つのテーブルを用いて実現することができる：
テーブル１： キーフィールド値の内部テーブル
【００３０】
【表１】
2005235227.tif 000003
【００３１】
１列目には、キーフィールド１〜ｍの名前が含まれている。２列目には、個々のキーフィールド内に含まれているｙ１〜ｙｍ個の種々の値が含まれている。３列目には、キーフィールド１〜ｍにおける種々の値Val_1.1〜Val_m.ymが含まれている。したがってキーフィールドごとの１つのフィールドが、フィールドｍに対する複数のｙｍ個のサブフィールドに分割されている。この場合、ロックサービス２０５は複数のキーフィールドにわたってループし、種々の値の個数ｙｉ（ｉ−＞１〜ｍ）がｋよりも小さいか否かについてチェックすることができる。小さいならばこのキーに対するすべての値をロックすることができ、そうでなければすべてのキーの値はワイルドカードによってロックされる。この方法は、生成されたロックエントリの個数がキーフィールドごとの値の個数の積であり、これがｋを超えてはならない（ｋ＜＝ｙ１*...*ｙｍ）ことを考慮しながら次のキーフィールドについて続けられる。１つの有利な実施形態によれば上述のループが実行される前に、テーブル１をｙｉについて昇順または降順でソートすることができる。
【００３２】
以下のテーブルには、これに限るものではないけれども一例として１つのロックオブジェクトがどのようなものであるのかが表されている。この例は、ｍ＝３個のキーフィールド１〜３を定義するテーブル２と、ｎ＝１８個のロックすべきデータオブジェクトのキーおよびｋ＝１０個のロックの最大数を定義するテーブル３によって構成されている。
テーブル２：キーフィールド名
【００３３】
【表２】
2005235227.tif 000004
テーブル３：ロックすべきデータオブジェクトのキー
【００３４】
【表３】
2005235227.tif 000005
【００３５】
これらのデータは処理モジュール２０１によってロックサービス２０５へ渡される。ロックサービス２０５はこれらを受け取ると、ワイルドカードを含むバランスのとれた個数のロックを定義する目的で内部テーブル（この例におけるテーブル４）を生成する。
テーブル４：キーフィールド値の内部テーブル
【００３６】
【表４】
2005235227.tif 000006
【００３７】
ついでロックサービス２０５は、ｎがｋ以下であるか否かをチェックする。ｋ以下というのはこの例では該当しないので、ロックサービス２０５はフィールド１から始めてテーブル４にわたってループする：そのフィールドに対する値の個数は１０よりも小さいので、そのフィールドに対するすべての値をロックすることができる。ついでロックサービス２０５はフィールド２の処理を続け、フィールド１とフィールド２に対するロックエントリの最大数を計算し、これは２であって、まだ１０よりも小さいので、フィールド１とフィールド２に関するすべての値をロックすることができる。さらにフィールド３の処理を続け、同様の計算を行った結果、１８個のロックエントリという最大数が得られ、これは１０よりも大きいので、フィールド３に関する値をロックすることはできず、ワイルドカードによって置き換えられる。したがってロックサービス２０５は２つのエントリをもつ１つのロックオブジェクトを生成する。テーブル５にはこのことが示されている：ロックオブジェクトは、キーフィールドごとに１つの列をもつテーブルを有している。キーフィールド１および２の値は個々のフィールドにエントリされる一方、キーフィールド３の値はワイルドカード（**）により置き換えられる。その結果、テーブル３内のキーにより表されるデータベース内の１８個のデータオブジェクトが、２つのエントリをもつ１つのロックオブジェクトによってロックされる。それゆえオープン／クローズ・アカウントというアクティビティは、すべてのブランチについてコントロールエリア１０００においてロックされることになる。２番目のプロセスが、たとえばブランチＢ１〜Ｂ２内でこのアクティビティとコントロールエリアパートをもつデータオブジェクトにアクセスしようと試みた場合、ワイルドカードがこのブランチも同様にカバーしているため、このアクセスは不可能となる。
テーブル５：２つのエントリをもつロックオブジェクト
【００３８】
【表５】
2005235227.tif 000007
【００３９】
本発明による別の実施形態によってこの状況を改善することができ、この実施形態によれば、１つのキーフィールドの種々の値に共通する特性が決定され、決定された共通の特性がワイルドカードとともにキーフィールドにエントリされる。次にこれについて、上述の例を引き続き用いながら詳しく説明する。
【００４０】
キーフィールド３の値に共通する特性をチェックする場合、ロックサービス２０５は、キャラクタ 'A' がキーフィールド３のすべての値に共通する特性であることを見つけ出す。その場合、このキャラクタをワイルドカードと組み合わせることができ、この組み合わせを単なるワイルドカードの状態でキーフィールド３のフィールドにエントリすることができる。図６にはその結果が示されている。
【００４１】
このようにすれば、２番目のプロセスは、ブランチＢ１〜Ｂ９内におけるこれらのアクティビティに対するアクセス権を同時にもつことができるようになる。
テーブル６：最初の２つのキーフィールドに２つの完全なエントリをもち、残りのキーフィールドにワイルドカードを伴う共通の特性をもつロックオブジェクト
【００４２】
【表６】
2005235227.tif 000008
【００４３】
次に図３を参照するとこの図には本発明のさらに別の有利な実施形態が示されており、これによればロックサービスモジュールの１つの例に関する処理ステップを要約したフローチャートが示されている。開始ステップ３０１の後、ロックサービスはステップ３０２においてデータ処理モジュール３０３からデータを受け取る。このデータには、ｍ個のフィールド名と、ロックすべきｎ個のデータオブジェクトに対するｍ*ｎ個のキーフィールド値と、ｋ個のロックエントリの最大数が含まれている。この場合、ロックサービスはステップ３０４において、ｘ＜＝ｋ個である最適化されたロックエントリ数を求め、これは前述のようにテーブル４のような内部テーブルの生成ならびに評価によって行われる。ついでロックサービスはステップ３０５において、値またはワイルドカードがステップ３０６において生成されるロックオブジェクトのｘ個のエントリのフィールド３０７にエントリされるか否かを決定する。ついでこのプロセスはステップ３０２に戻り、新たな要求が来るのを待ち、あるいはステップ３０８で終了する。
【００４４】
当業者に自明のとおり、これまで説明してきた本発明の仕様や実施形態を考慮して本発明の変形や用途に合わせた整合を行うことができる。本発明の実施形態に関するこれまでの説明は、例示や説明の目的で開示したものであって包括的なものではなく、本発明はここで開示した精密な形態に制約されるものではない。これまでの開示内容に沿って変形や変更が可能であるし、あるいは本発明の実施形態から得ることができる。たとえば上述の実装にはソフトウェアが含まれていたが、本発明によるシステムおよび方法をハードウェアとソフトウェアの組み合わせとして、あるいはハードウェアだけで実装してもよい。また、本発明の着想をメモリへの格納に関して説明してきたけれども、当業者にとって明らかであるように、この着想をコンピュータで読み取り可能な他の形式の媒体に格納することも可能であって、たとえばハードディスク、フロッピーディスクまたはＣＤ−ＲＯＭのような補助記憶装置やインターネットまたは他の伝搬媒体に、あるいはさらに別の形態のＲＡＭまたはＲＯＭに格納することができる。
【００４５】
既述の説明に基づくコンピュータプログラムおよび本発明のフローチャートは、経験のある開発者の技能の範囲内である。当業者に周知のあらゆる技術を利用して種々のプログラムまたはプログラムモジュールを生成することができ、あるいはそれらを既存のソフトウェアと結び付けて設計することもできる。たとえばプログラムまたはプログラムモジュールをJava, C++, HTML, XMLまたはJava appletの埋め込まれたHTML, SAP R/3またはABAPで設計可能である。１つまたは複数のこの種のモジュールを、既存のＥメールソフトウェアまたはブラウザソフトウェアに統合させることができる。
【００４６】
これまで本発明の実施形態について説明してきたけれども、本発明はここで説明してきた種々の有利な実施形態に限定されるものではなく、同等の要素、変形、省略、（たとえば種々の実施形態にまたがる着想の）組み合わせ、用途に合わせた整合および／または本発明の開示に基づく当業者に自明の変更を伴うあらゆるすべての形態が含まれる。特許請求の範囲は、各請求項で採用された言葉をベースとして広く解釈されるべきものであり、本発明の明細書で開示された例あるいは本出願を実施したときの例に限定されるものではなく、それらの例は非排他的なものと解釈されたい。たとえば本発明の開示において、「有利には」という表現は非排他的であって、「有利であるけれども、それには限定されない」ということを意味する。手段＋機能またはステップ＋機能の限定は、特定の請求項の限定に関してその限定において以下の条件すべてが存在する場合のみ採用されるものである：ａ）「ための手段」または「ためのステップ」が明示的に挙げられている；ｂ）対応する機能が明示的に挙げられている；ｃ）構造、素材またはその構造を支持する動作が挙げられていない。
【００４７】
ここに開示した本発明の明細書および実施形態を考慮すれば、本発明の他の実施形態は当業者にとって自明である。本明細書ならびに実施例は例証として考慮されるにすぎず、本発明の本質的な範囲ならびに意図は、以下の各請求項によって表される。
【図面の簡単な説明】
【００４８】
【図１】コンピュータシステムを用いて本発明による方法を実装する様子を示すブロック図
【図２】ブロック図を用いて本発明の１つの実施形態によるプログラムモジュールとデータとの間の相互作用に関する一例を示す図
【図３】本発明で説明する原理に従う方法の一例を示すフローチャート
【符号の説明】
【００４９】
１０１  コンピュータシステム
１０２  コンピュータ
１０３  キーボード
１０４  ディスプレイ
１０５  プロセッサ
１０６  メモリコントローラ
１０７  ＤＡＳＤメモリ
１０８  メインメモリ
１１０  ネットワークコネクション手段
１１２ａ  端末インタフェース
１１２ｂ  汎用入出力インタフェース
１１２ｃ  補助記憶装置インタフェース
１１３  ロックサービスモジュール
１１４，２０１  第１の処理モジュール
１１５  第２の処理モジュール
１１６  ロックオブジェクト
１１７  データベース
２０５  ロックサービス
２０６  ロックオブジェクト
【図１】
2005235227.tif 000009
【図２】
2005235227.tif 000010
【図３】
2005235227.tif 000011