JP2002169718A - 持続的データ記憶技術 - Google Patents
持続的データ記憶技術Info
- Publication number
- JP2002169718A JP2002169718A JP2000352662A JP2000352662A JP2002169718A JP 2002169718 A JP2002169718 A JP 2002169718A JP 2000352662 A JP2000352662 A JP 2000352662A JP 2000352662 A JP2000352662 A JP 2000352662A JP 2002169718 A JP2002169718 A JP 2002169718A
- Authority
- JP
- Japan
- Prior art keywords
- job
- data
- jobs
- database
- execution
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
維持すること。 【解決手段】 タスクソースからタスクを処理する場合
に、そのうちのいくつかはデータベースの領域の使用に
当って競合する条件をもっていて、各々の領域は一定の
与えられた時点で、書込みのために全てがロックされて
いたり又はされていない両方のデータが存在している。
各々の領域は、1つの利用可能なプロセッサと結びつい
ているので、各々のタスクについて、多数のプロセッサ
のうち一台についてのみ領域への書込みアクセスを必要
とするジョブが定義される。ジョブは、各プロセッサで
同時実行するために分散している。
Description
ユーザーがアクセスできる何百万もの記録を収納する可
能性がある。潜在的に、記録に対する何万件ものデータ
アクセスが毎秒発生する可能性がある。データベースシ
ステムは、多数のプロセッサ上で実行するプロセスによ
ってアクセスされるデータ記憶デバイスを内含すること
ができる。記憶デバイス及びプロセッサは、ネットワー
クを介して接続されたさまざまな場所に分散されていて
よい。例えば大型小売りビジネスは、その顧客の氏名及
び住所を維持する第1の記憶デバイス、在庫リストを維
持する第2の記憶デバイス及びその顧客の購買履歴を維
持する第3の記憶デバイスを有することが可能である。
第1の記憶デバイスはボストンに、第2の記憶デバイス
はロサンゼルスにそして第3の記憶デバイスはシカゴに
置かれている。各記憶デバイスは、広域ネットワーク
(WAN)によってその他と接続されているそれぞれ異
なる1台のプロセッサによって管理される。1人の顧客
リーサ(Lisa) が、例えば小売りビジネスによって操作
される呼出し処理センター内の1人の社員を通してコー
ヒーテーブルを発注した場合、その社員は、WANを介
して、そのコーヒーテーブルがロサンゼルスの記憶デバ
イスから入手可能であるか否かをチェックしなくてはな
らない。この社員は、出荷のための リーサの住所を検
索し彼女の購買履歴を更新するためその他の場所にある
記憶デバイスにアクセスする必要があるかもしれない。
同時に、もう1人の顧客 ロビン(Robyn)が、呼出し処理
センター内でもう1人の社員を通して同じコーヒーテー
ブルを注文する可能性がある。両方の社員共、同じ記憶
デバイスから読取り、そのコーヒーテーブルについての
同じ在庫記録を更新しようとすることになる。
は、通常独立した形でアクセスされうる異なるタイプの
データ記録を収納している。上述の例におけるように、
多数のプロセッサを使用すると、データアクセスが独立
しており、各アクセスが異なるプロセッサ上で並行して
実行できるかぎりにおいて、スループット及びロードバ
ランシングに関するデータベースシステムの性能を改善
させることが可能である。
セスによってアクセス可能であることから、プロセスが
適切に調和されない場合、矛盾が発生する可能性があ
る。矛盾の例としては、2つのプロセスが2つの異なる
値で同時に同じ記録を更新しようとしている(コーヒー
テーブルの例のように);1つのプロセスがもう1つの
プロセスにより削除されている記録を読みとろうとして
いる;及び1つのプロセスがもう1つのプロセスによっ
て更新されつつある関連記録にリンクする記録を更新し
ようとしている、といったものがある。矛盾が発生した
場合、同じ又は関連データ記録にアクセスするプロセス
の動作は予測不可能な形でインターリーブし、従ってオ
ペレーションの結果は不正なものとなり、データベース
システムのデータの一貫性を破壊する可能性がある。
は、プロセスが、1つのデータピース内のデータ入力に
アクセスしているときそのデータピース(例えば変数、
顧客記録又は、部門データベース)をロックし、プロセ
スがアクセスを終了した時点でロックを解除するセマフ
ォが使用される。その他のプロセスは全て、いずれかの
プロセスが現在それを使用しているか否かを見るためデ
ータピースにアクセスする前にこのセマフォをチェック
しなければならない。このアプローチは、ロックできる
データピースの細分性が小さい場合何百万ものデータピ
ースについての何百万ものロックを必要とする可能性が
あり、そうでなければ、例えば部門データベース全体を
ロックすることで同じ部門データベース内に偶然記憶さ
れることになった共通の要素をもたないデータセットに
アクセスするジョブの効率の良い並行実行が妨げられる
ことから、データベースの細分性が大きい場合には数多
くのアクセスをブロックする可能性がある。
テムは同様に不充分なデータアクセスにも苦しめられる
可能性がある。記憶デバイス内の1つのデータ記録の位
置を特定するためだけにデータベースシステム全体を探
索することを避けるため、データ記録の要約情報(例え
ば目次、インデックス又はクロスリファレンス)が通
常、容易に探索できる書式で提供される。ただし、要約
情報では、データ記録との一貫性がつねに強化されてい
ないかぎり破損する可能性がある。その上、要約情報を
更新するタスクも同様に矛盾を作り出す可能性があり、
従って効果的にスケジュールされなければならない。
は、データを持続的に記憶するデータベースを維持する
こと;一部分がそのデータベースの領域の使用のための
競合する必要条件をもつタスクをタスクソースから受諾
することであって、領域の各々は、一定の与えられた時
点で全てが書込みについてロックされるか又はロックさ
れていないかのいずれかであるデータを内含しているこ
と;利用可能なプロセッサと各領域を結びつけること;
プロセッサのうちのわずか1つによりアクセスされるべ
き領域に対する書込みアクセスを各々が必要とするジョ
ブを、各タスクについて定義すること;及び、結びつけ
られたプロセッサによる同調実行のためジョブを分散さ
せること;を含んで成る方法に関する。
以上のものが内含されていてよい。記憶されたデータに
は、オブジェクトデータベース内にオブジェクトを含む
データベースのデータ項目が内含されている。記憶され
たデータには、オブジェクト指向アプリケーションに対
するオブジェクトとして提供されるデータ項目が内含さ
れている。オブジェクト関係ブローカが、オブジェクト
指向アプリケーションのためのオブジェクトの持続的記
憶を提供する。データは、オブジェクト指向の拡張との
関係データベース内に記憶されている。データベース
は、データを持続的に記憶するファイルを含んで成る。
タスクソースから受諾されたタスクの数は、恣意的に多
い。受諾されるタスクが由来するタスクソースの数は、
恣意的に多い。領域は、コンテンションスペースの形に
組織され、コンテンションスペースの数は、利用可能な
プロセッサの数と同様である。各々のジョブは、わずか
1つのコンテンションスペース内のデータへの書込みア
クセスを必要としている。コンテンションスペースの数
は、利用可能なプロセッサの数に等しい。コンテンショ
ンスペースへの領域の組織は、ジョブの実行において利
用可能なプロセッサのスループットを最大限にする。コ
ンテンションスペースは、利用可能なプロセッサのスル
ープットを最大限にするべくプロセッサに対し動的に割
当てされている。タスクは、非同期的に受諾される。タ
スクは同時に受諾される。プロセッサは、共用メモリを
使用しない。
は、階層の最も低いレベルにジョブが収納されるサブタ
スク階層を定義することが含まれている。タスクのうち
の少なくとも1つは、単一ジョブを含んで成る。1つの
ジョブでは、実施すべきタスクを生成する。タスクの各
々は、要求されたデータベーストランザクション内で更
新されたデータが、そのトランザクションがひとたびコ
ミットされた時点で喪失されないという確実性と少なく
とも同じ位高い確実性で完成される。領域は、単一のデ
ータ項目を含む。領域は、少なくとも100万個のデー
タ項目を含む。ジョブは、いずれかの領域上の何らかの
書込みロックの解除を待つ必要なく同時に実行される。
コンテンションスペースのうちの1つ以上のものがプロ
セッサの1つと結びつけられている。各々のプロセッサ
は、少なくとも1つのプロセスをランする物理的プロセ
ッサを含む。各々のタスクは、ユーザー要求によって生
成される。コンテンションスペースの各々は、ジョブを
実行するもの及び結びつけられたコンテンションスペー
スに関して管理機能を実行するものという少なくとも2
つのプロセッサと結びつけられている。
であると予測されているジョブの数に比例してプロセッ
サを付加することにより、恣意的に大きい速度での実行
のためジョブを受取る能力をもつ待ち行列システムを維
持することが含まれている。待ち行列システムには、各
々がジョブを受理できる概念上の行が内含されている。
各々の行は、ジョブが行内に受入れられつつあるときに
ロックされる。ロックされていない行のいずれからで
も、実行のため対応するプロセッサによりジョブが受諾
され得る。多数の領域がコンテンションスペースに属す
る。付加的なジョブが、ジョブの実行と関連して新規作
成される。さらなるジョブが付加的ジョブにより新規作
成される。付加的ジョブの新規作成は、ジョブを実行す
る上でデータベースから読取られるデータによって左右
される。付加的ジョブは、ジョブの実行と関連して新規
作成され、プロセッサの1つの上でランしているプロセ
スがジョブを実行し付加的なジョブを新規作成し、かつ
付加的ジョブのうちの少なくともいくつかが、その他の
プロセッサによりサービス提供されているコンテンショ
ンスペースの間で分散されている。タスクは、商取引に
関するものである。
ンスペースと結びつけられたインデックスが割当てられ
る。インデックスは、プロセッサ間でジョブをロードバ
ランシングするために使用される。データベースは、異
なる物理的場所の間で分散されているデータベース単位
を内含する。各々のジョブは、ステップを含んでいる。
ジョブの実行には、ステップの一部分を実行すること、
これらのステップを表わすデータベーストランザクショ
ンをコミットすること及びジョブが完了するまで反復す
ることが含まれる。ステップのいずれかの部分が完了で
きなかった時点で、要求されたトランザクション内に書
込まれたデータはそのトランザクションが一旦コミット
されたならば喪失しないという確実性と少なくとも同レ
ベルの確実性で、不履行部分の第1ステップにおいて実
行が再開される。プロセッサがその行からジョブを受諾
している時は読取りについてのみ行がロックされてい
る。
きい速度での実行のためにジョブを受取る能力をもつ待
ち行列システムを維持することが含まれている。待ち行
列システムには、各々がジョブを受理できる概念的行及
びそれぞれのコンテンションスペースと結びつけられた
概念的列が含まれている。待ち行列システムは、行と列
の交差点にセルの概念的マトリックスを含んで成り、各
々のセルは、その他のセルに対する読取り及び書込みと
矛盾することなく読取り又は書込みが可能である。行
は、ジョブソースと結びつけられ、行の数は、全てのジ
ョブソースが同時にキューの中にジョブをロードできる
ようにするのに充分なものである。行の数は、全ての列
から実行のためにジョブを同時に取出しできるようにす
るのに充分なものである。
正しさを確保するため同期化される。同期化には、同期
化グループの各々のジョブに対して、それらをそのグル
ープのメンバーとして識別するタグを割当てることが内
含されている。同期化には、同期化グループの各々のジ
ョブに対し、そのグループ内のそのジョブの参加割合を
表わす定数分数を割当てることが含まれる。同期化グル
ープ内の全てのジョブがいつでもプロセッサにより実行
できる状態になるまでジョブは実行されない。
次のものを内含する方法に関する:データを持続的に記
憶するデータベース;(a)一定の与えられた時点で書
込みについて全てロックされているか又はされていない
かのいずれかであるデータを各々含むデータベースの複
数の領域を使用するための競合する必要条件を有するも
のを少なくともいくつか含む恣意的に数の多いタスク
を、恣意的に数の多いタスクソースから非同期的に受諾
し、(b)各々が利用可能な異なるプロセッサと結びつ
けられた矛盾しないコンテンションスペースの形に領域
を組織し、(c)わずか1つのコンテンションスペース
に属する領域への書込みアクセスを各々が必要とするジ
ョブの形に各々のタスクを分割し、かつ(d)結びつけ
られたプロセッサによる同時実行のため対応するコンテ
ンションスペースに対してジョブを分散するジョブ処理
機構。オブジェクト関係ブローカーが、オブジェクト指
向アプリケーションのためのオブジェクトの持続的記憶
を提供する。データは、オブジェクト指向拡張と共に関
係データベース内に記憶される。
機械上で実行されるように構成されたソフトウエアオブ
ジェクトにおいて、データを持続的に記憶するデータベ
ースの領域に対するアクセスを必要とし、データベース
の領域内のデータに対する命令及びポインタを含む実行
すべきジョブ、及びデータベースの領域内に書込むべき
競合する必要条件を有するジョブのコンテンションスペ
ースを識別し、データベースの領域内に書込むべき競合
する必要条件をもたないジョブのその他のコンテンショ
ンスペースから該コンテンションスペースを区別するイ
ンデックスを含んで成るオブジェクトに関する。
ちの1つ以上のものが内含されていてよい。すなわち記
憶されたデータには、オブジェクトデータベース内にオ
ブジェクトを含むデータベースのデータ項目が内含され
ている。記憶されたデータには、オブジェクト指向アプ
リケーションに対するオブジェクトとして提供されるデ
ータ項目が内含されている。オブジェクト関係ブローカ
が、オブジェクト指向アプリケーションのためのオブジ
ェクトの持続的記憶を提供する。データは、オブジェク
ト指向の拡張との関係データベース内に記憶されてい
る。行及び列の形に配置されたセルを含むキューにおい
て、行内のセルは持続的データベース内にデータを書込
むためジョブを受理するように構成されており、列内の
セルはプロセッサによる処理のためジョブを送達するべ
く構成されており、さらにジョブが行内に書込まれてい
るとき、書込みについてのみ行のセルの全てをロック
し、ジョブが列から送達されつつあるとき書込みについ
て列のセルのうち1つのみをロックするキュー制御機構
を含んで成り、キュー内の行の数は、一度にジョブを少
なくとも1つの行に書込むことができ全てのプロセッサ
が列の1つからジョブを受けとることができるのに充分
なものであるキュー。書込みには、更新又は挿入が含ま
れる。データは、オブジェクトデータベース内にオブジ
ェクトを含むデータベースのデータ項目を内含する。デ
ータは、オブジェクト指向アプリケーションに対するオ
ブジェクトとして提供されるデータ項目を含む。オブジ
ェクト関係ブローカーがオブジェクト指向アプリケーシ
ョンのためのオブジェクトの持続的記憶を提供する。デ
ータは、オブジェクト指向の拡張と共に関係データベー
ス内に記憶される。
明は、(a)データを持続的に記憶し、要求されたトラ
ンザクション内で書込まれたデータはそのトランザクシ
ョンがひとたびコミットされた時点で喪失しないという
一次レベルの保証を提供するデータベースを維持するこ
と、(b)データベースの同じ要領域内に書込むべき矛
盾する必要条件をその少なくとも一部が有しているタス
クを、多数のプロセッサによる同時実行のためタスクソ
ースから受諾すること及び、(c)データ喪失がなくか
つデータベースの領域に関していかなる実際の矛盾も発
生することなくそのタスクが実行されることになるとい
うことを、少なくとも一次的保証レベルまで保証するソ
フトウエア機構を提供すること、を含んで成る方法に関
する。
つ以上のものが含まれていてよい。この方法には、タス
クソースに対しタスク受諾の肯定応答及び受諾されたタ
スクの完了後の通知を送ることが内含されている。タス
クは、ジョブ間の実際の矛盾をことごとく妨げるような
形で多重プロセッサのうちの異なるプロセッサによって
実行されるジョブへと分割される。ジョブは、タスクの
完了を見極めることができるようにする同期化機構に付
される。この同期化機構には、一群のジョブ内に参加す
るものとしてジョブを識別するタグが含まれている。同
期化機構には、グループ内のジョブの参入割合を表わす
定数分数が含まれる。この方法は、1グループの全ての
ジョブの定数分数が合計で1つの完成した定数となるか
否かを見極めることを含んでいる。タスクには、全ての
ジョブが完了した時点で完了の通知が与えられる。タス
クはコンテンションスペースに割当てられる。完了通知
ジョブは、タスクと同じコンテンションスペース内での
実行のため割当てられる。データベースは、オブジェク
ト指向のデータベースを含む。
明は、データを持続的に記憶するデータベースを維持す
ること、プロセッサによる同時実行のためジョブを受諾
することであって、ジョブがデータベース内のデータへ
のアクセスを必要とし、ジョブの少なくともいくつかは
グループとしての実行を必要とし、1グループのジョブ
の各々が、該グループ内へのその参加を定義する結びつ
けられた情報を有していること、を含んで成る方法にお
いて、1つのプロセッサが、結びつけられた情報から該
グループのジョブの全てについて処理が進行しうること
を見極めるまで、グループのジョブのいずれも実行する
ことを控えている方法に関する。
つ以上のものが含まれていてよい;すなわち、グループ
としての実行のために受諾されているショブは、その他
のジョブを分岐することによって新規作成される。その
他のジョブの分岐は、恣意的に深い一連のことを経て発
生する。1グループのジョブと結びつけられた情報は、
ジョブの新規作成時点で生成される。情報には、グルー
プ内に参加するものとしてジョブを識別するタグが含ま
れる。情報には、そのグループ内におけるジョブの参入
割合を表わす定数分数が含まれ、1グループの全てのジ
ョブの定数分数が合計して1つの完成した定数となるか
否かを見極めることも含まれる。
明は、データを持続的に記憶するデータベースを維持す
ること、データベース内のデータに対するアクセスを必
要とするジョブを、プロセッサによる同時実行のため受
諾すること、及び、ジョブが実行のために受理される順
序以外でジョブのうちの少なくともいくつかを各々のプ
ロセッサに実行させることを含んで成る方法に関する。
含まれていてよい。すなわち記憶されたデータには、オ
ブジェクトデータベース内にオブジェクトを含むデータ
ベースのデータ項目が内含されている。記憶されたデー
タには、オブジェクト指向アプリケーションに対するオ
ブジェクトとして提供されるデータ項目が含まれている
が、あるいは、プロセッサのうちの1つによって実行さ
れるべきジョブのうちの少なくともいくつかは、単一の
集約されたジョブによって置換される。置換されるジョ
ブは、結果の正しさを保証するべく同期化グループとし
ての実行を必要とするものとして予め識別されており、
同期化グループの全てのジョブは、それらをグループの
メンバーとして識別し1つの定数のうちのそれぞれの分
数を定義する情報と結びつけられている。各々のプロセ
ッサは、ジョブによりアクセスされなくてはならないデ
ータのディスク上にある物理的場所に基づきジョブのう
ち少なくともいくつかを処理するための順序を決定す
る。処理順序は、ディスク上のデータのページ構造に基
づいて決定される。ジョブは、ディスクの一定の与えら
れた物理的部分に対するアクセスがクラスタ化されるよ
うな形で、処理のためにクラスタ化される。プロセッサ
により実行されるべきジョブのうちの少なくともいくつ
かは冗長なものであり、プロセッサは冗長なジョブを実
行しない。冗長なジョブは同一であり、同一ジョブの全
てよりも少ないジョブが実行される。冗長なジョブのう
ちのいくつかは、その他の冗長なジョブに取って替わ
り、取って替わったジョブのみが実行される。冗長なジ
ョブは、結びつけられたタイムスタンプをもち、取って
替ったジョブは取って替わられたジョブよりも遅いタイ
ムスタンプを有する。
は、データを持続的に記憶するデータベースを維持する
こと、タスクソースからタスクを受諾することであっ
て、タスクがそれらの各々を実行のための少なくとも2
つの異なる優先性レベルのうちの1つを有するものとし
て識別する優先性情報と結びつけられていること、各々
のタスクについて、タスクを完了するために実行される
べきジョブを定義すること、プロセッサによる同時実行
のためジョブを分散させること、及び結びつけられたタ
スクの優先順に基づく順序で実行するためのジョブを選
択すること、を含んで成る方法に関する。
ちの1つ以上のものが含まれていてよい。すなわち、タ
スクのうちの少なくともいくつかは、データベースの領
域の使用のための競合する必要条件を有し、その各々の
領域には、一定の与えられた時点で書込みのために全て
ロックされているか又はロックされていないかのいずれ
かであるデータが含まれ、各々の領域には、プロセッサ
の1つが結びつけられている。ジョブは、タスクの新規
作成とそのタスクのために定義されたジョブの実行の間
の予め定められた平均的な短かい遅延だけを保証するよ
うな順序で実行される。1つの優先性をもつジョブは、
第2の優先性をもつジョブを予め定められた平均遅延時
間以上遅延させないような形で実行されることが保証さ
れる。タスクは、実時間での実行のためユーザーにより
生成されるより優先性の高いタスク及びソフトウエアプ
ロセスにより生成されるより優先性の低いタスクを内含
する。より優先性の低いタスクは、バッチタイプの更新
タスクを含む。ジョブは、そのプロセッサに分散され実
行を待機している1つのステージングされたジョブセッ
トから各々のプロセッサにより予め定められたサイズの
実行セットへと選択される。実行セットが満たされるま
でより高い優先性をもつジョブのみが、ステージングさ
れたセットから選択され、実行セットがより高い優先性
のジョブにより満たされ得ない場合には、実行セット内
に含み入れるためステージングされたセットの中から、
低い方の優先性をもつジョブが選択される。
明は、データを持続的に記憶すること、データの一部の
持続的複製を記憶すること及び、データ又は複製が更新
されるにつれてデータと複製との間の一貫性を維持する
ことを含んで成る方法に関する。
以上のものが含まれていてよい。すなわち一貫性は少な
くとも2つの異なるプロセッサ上での同時処理によって
維持される。異なるプロセッサは同時処理のため共用メ
モリを使用しない。複製の1つが更新されつつある間、
データの関連部分も同時に更新され得る。少なくとも2
つの異なるプロセッサにより、複製を同時に更新するこ
とができる。各々の複製の中に内含されるデータの項目
は、ユーザーにより特定される。各複製の中に内含され
るデータの項目は選択される。選択はデータの項目に適
用される。選択は、データの項目の要素に適用される。
選択は、データ項目及びデータの項目要素に適用され
る。複製中の全ての項目には同じデータ要素が内含され
ている。複製中の全ての異なる項目は、異なるデータ要
素を有する。選択は、データを探索するために使用され
ることになるパターンに対応する。選択は、データに適
用される少なくとも1つのアルゴリズムに対応する。選
択は、異なる複製セットのための異なる規準に基づいて
いる。複製は、記憶装置内で物理的にクラスタ化されて
いる。選択された複製はそれぞれ、物理的にクラスタ化
され、セットの中の複製は全て合わせて物理的にクラス
タ化されている。要素を自動的に選択するために1つの
アルゴリズムが使用される。複製はインデックスと結び
つけられる。インデックスはアルゴリズムによって使用
されるための複製されたデータを内含する。インデック
スは記憶装置内で物理的にクラスタ化されている。デー
タ及び複製はアルゴリズムにより操作され、複製及びデ
ータは、アルゴリズムが、複製のそれぞれの区画上で同
時に実行されるサブアルゴリズムへと分解されうるよう
に区画化されている。各々の複製は、サブアルゴリズム
の1つにより必要とされるデータのみを含んでいる。各
複製のためのデータの選択は、データ項目又は項目要素
又はそれらの両方の選択である。複製は、オブジェクト
指向アプリケーションに対しオブジェクトとして持続的
に提供される。オブジェクト関係ブローカが、オブジェ
クト指向アプリケーションのためのオブジェクトの持続
的記憶を提供する。データは、オブジェクト指向拡張と
共に関係データベース内に記憶される。同時処理は、記
憶されたデータ及びその複製に関して予め定められた相
対的順序で行なわれる。
は、データベース内で持続的にデータを記憶すること、
及び記憶媒体内にデータの項目の少なくとも2つの物理
的クラスタを新規作成すること、を含む方法において、
クラスタのうちの少なくとも1つは、もう1つのクラス
タ内のデータ項目の1つの複製である少なくとも1つの
データ項目を含み、クラスタは2つの異なる規準により
組織されている、方法に関する。
つ以上のものが内含されていてよい。すなわち、少なく
とも2つの異なるプロセッサ上での同時処理により、デ
ータと複製の間の一貫性が維持される。2つの異なるプ
ロセッサは、同時処理のために共有メモリを使用しな
い。複製が更新されつつある一方で、データの関連部分
を同時に更新できる。各複製に内含されるデータの一部
分はユーザーにより特定される。複製には1つのインデ
ックスが結びつけられる。インデックスは、記憶装置内
で物理的にクラスタ化されている。データ及び複製はア
ルゴリズムにより操作され、複製及びデータは、アルゴ
リズムが、複製のそれぞれの区画上で同時に実行される
サブアルゴリズムへと分解されうるように区画化されて
いる。各々の複製は、サブアルゴリズムの1つにより必
要とされるデータのみを含んでいる。各複製のためのデ
ータの選択は、データ項目又は項目要素又はそれらの両
方の選択である。同時処理は、記憶されたデータ及びそ
の複製に関して予め定められた相対的順序で行なわれ
る。
は、データを持続的に記憶すること、データの一部分の
持続的複製を記憶すること、及び同時に処理され得るサ
ブアルゴリズムの形に、データを使用する1つのアルゴ
リズムを分割できるようにする区画へと、記憶された複
製を区画化すること、を含んで成る方法に関する。
以上のものを内含することができる。複製は少なくとも
2つの異なるプロセッサにより同時に更新され得る。各
々の複製内に内含されるデータの部分が選択される。選
択はデータ項目及びデータの項目要素に適用される。選
択は、異なる複製されたセットについて異なる規準に基
づいている。複製は記憶装置内で物理的にクラスタ化さ
れている。複製は、それぞれに物理的にクラスタ化され
ている。複製はインデックスと結びつけられる。インデ
ックスはアルゴリズムによって使用されるための複製さ
れたデータを内含する。インデックスは記憶装置内で物
理的にクラスタ化されている。各々の複製は、サブアル
ゴリズムの1つにより必要とされるデータのみを含んで
いる。各複製のためのデータの選択は、データ項目又は
項目要素又はそれらの両方の選択である。同時処理は、
記憶されたデータ及びその複製に関して予め定められた
相対的順序で行なわれる。
は、データを持続的に記憶すること、データベース内の
データに対する参照を内含する少なくとも1つのインデ
ックスを維持すること、記憶されたデータ及びインデッ
クスに対する同時更新を処理すること、及び同時更新
中、インデックスと記憶されたデータとの間の一貫性を
維持すること、を含んで成る方法に関する。
つ以上のものが含まれていてよい。すなわち、インデッ
クスが更新されつつある一方で、データの関連部分も同
時に更新され得る。インデックス及びデータを少なくと
も2つの異なるプロセッサにより同時更新することがで
きる。各々のインデックスの中に内含されるデータの部
分は、ユーザーにより特定される。インデックスの中に
内含されるデータの部分は選択される。選択はデータ項
目及びデータの項目要素に適用される。選択は、データ
を探索するのに使用されることになるアルゴリズムに対
応する。インデックスエントリは、記憶装置内で物理的
にクラスタ化されている。インデックスはアルゴリズム
による使用のための複製されたデータを内含する。デー
タ及びインデックスはアルゴリズムにより操作され、イ
ンデックス及びデータは、アルゴリズムがインデックス
のそれぞれの区画上で同時に実行されるサブアルゴリズ
ムへと分解され得るように区画化されている。インデッ
クスは、サブアルゴリズムの1つにより必要とされるデ
ータのみを含んでいる。インデックスのためのデータの
選択は、データ項目又は項目要素又はそれらの両方の選
択である。同時処理は、記憶されたデータ及びそのイン
デックスに関して予め定められた相対的順序で行なわれ
る。
データを持続的に記憶すること、2つの異なる矛盾しな
い領域又は2つの異なる物理的クラスタ内にデータの少
なくとも2つの異なる項目を記憶すること、2つの異な
るデータ項目の間に、プロセスがそのデータ項目のうち
のいずれか一方にもう1つのデータ項目から到達できる
ようにする関係を維持すること、及びいずれか一方又は
両方の項目の更新にもかかわらず関係の一貫性を維持す
ること、を含んで成る方法に関する。
つ以上のものが含まれていてよい。関係の一貫性を維持
することには、2つの項目の間の一時的に不完全な状態
に関する情報を維持し利用可能にすることが含まれる。
状態の不完全性は、2つの項目のうちの少なくとも1つ
を更新しようとするプロセスに伝達される。データはオ
ブジェクトデータベース内に記憶される。データは、オ
ブジェクト指向アプリケーションからアクセスされる。
2つのデータ項目は、2つの異なるクラスタ内に記憶さ
れ、関係の一貫性は、2つの項目とそれぞれ結びつけら
れた関係ロール(役割)を維持することによって保証さ
れる。2つより多いデータ項目が存在し、該関係は2
進、3進又はN進である。2つより多いデータ項目が存
在し、該関係は、1対1又は1対多数又は多数対多数で
ある。該関係は双方向である。該関係は、各々1つのデ
ータ項目に結びつけられたロールによって関係を表現す
ることによって維持される。関係は、2つの項目に関し
て同時処理することによって確立される。関係は、それ
が新規作成されるべきデータ項目各々について1つずつ
の1組のロールオブジェクトを新規作成することによっ
て新規作成され、これらのロールオブジェクトは互いに
対するポインタを内含する。ロールオブジェクトの新規
作成は同期化される。ロールオブジェクトは、それと結
びつけられたデータ項目が関係をもつデータ項目につい
ての複製された情報を内含する。ロールオブジェクト
は、結びつけられたデータ項目が更新される毎に増分さ
れるバージョン番号を内含する。この方法にはさらに、
ロールオブジェクト間で複製されたデータ及びバージョ
ン番号情報を現行のものに保つため、ロールオブジェク
ト間でメッセージを送ることも含まれている。関係のロ
ールオブジェクトは、それらが関係をもつその他のロー
ルオブジェクトのバージョン番号を記憶する。関係をも
つロールオブジェクトは、それらが関係をもつその他の
ロールオブジェクトのための欠落したバージョンについ
ての情報を記憶する。当該方法は同様に、関係が削除さ
れるとき、その関係内の異なるオブジェクトからの多数
の未決定の削除要求にもかかわらずその削除が正しいも
のであることを保証することをも内含している。
明は、データ持続性を記憶すること、メモリ内にデータ
の複製を記憶すること、及びメモリ内の複製及び持続的
に記憶されたデータの両方を更新することによって、デ
ータを更新する要求に応答すること、を含んで成る方法
に関する。
つ以上が内含されていてよい。すなわち、該方法はメモ
リー内の複製にアクセスすることによってデータにアク
セスする要求に応答することをも内含する。複製は、メ
モリー内の複製が更新された後、しかも対応する持続的
に記憶されたデータが更新される前に、メモリー内でア
クセスされる。データの1つの要素を更新するための要
求には、データのその要素にアクセスする要求に対しサ
ービス提供するものと同じプロセッサがサービス提供す
る。先行する更新要求は、より優先性の低いタスクとし
て取扱われ、アクセス要求は、より優先性の高いタスク
として取扱われる。データに対する参照のインデックス
がメモリ内に記憶され、これにはデータの複製が内含さ
れる。参照インデックスは同じく持続的に記憶される。
インデックスを更新するタスクは、持続的に記憶された
インデックス及びメモリ内に記憶されたインデックスの
更新をひき起こす。メモリ内に記憶されたインデックス
は、持続的に記憶されたインデックスよりも前に更新さ
れ得る。インデックスにアクセスする要求は、メモリー
内のインデックスが更新された後でかつ、持続的に記憶
されたインデックスが更新される前に、メモリーからサ
ービス提供され得る。同じプロセッサは、両方のインデ
ックスの更新を行なう。該方法にはさらに、持続的に記
憶されているインデックスからメモリー内に記憶されて
いるインデックスを必要に応じて再構築することも含ま
れている。データの複製は、アルゴリズムにより使用さ
れる。データはアルゴリズムにより操作され、データ
は、データのそれぞれの区画上で同時に実行されるサブ
アルゴリズムの形にアルゴリズムが分解され得るように
区画化される。データの複製は、サブアルゴリズムの1
つが必要とするデータのみを含む。インデックスのため
のデータの選択は、データ項目又は項目要素又はその両
方の選択である。
は、トランザクションシステム192、ビジネスデータ
ユニット(BDU)22及び更新ストリームプロセッサ
(USP)23を内含している。トランザクションシス
テム192は、(インターネットのような)公衆網19
5及びローカルエリアネットワーク(LAN)181を
含むネットワークを介して、例えばコンピュータをもつ
顧客189又はデータ処理センタ191を操作する大規
模小売りビジネスのコールセンターオペレータ199で
あり得る潜在的に何百万人ものユーザーによってアクセ
ス可能なものである。ユーザーは例えばそのそれぞれの
ワークステーションを通して、商品注文又は住所更新で
あり得る要求を提出する。
ークステーションと通信し、ユーザーから要求を受理
し、その要求を自動的にタスク又はジョブ命令198へ
と翻訳するアプリケーションプログラム(図示せず)を
実行する1つ以上のサーバー196が内含されている。
例えば要求というのは、ビル(Bill)という名の人物のた
めの青のセーターの購買注文であるかもしれない。要求
は予め定義された電子書式であり、ジョブ命令198
は、ジョブを新規作成するUSP23内のプロセスにと
って認識可能な形をしたものである。USP23のため
のジョブを新規作成するプロセスはジョブ新規作成プロ
セス(JCP)350又はプロジューサと呼ばれる。
ブは、ジョブオブジェクトの形をしている。1つのジョ
ブオブジェクトは、BDU22内に記憶された1つ以上
のオブジェクトを指すデータ構造を内含する。ジョブオ
ブジェクトは、BDUオブジェクトに作用するジョブ実
行プロセス(JEP)によって実行される命令をも包含
している。ジョブとジョブオブジェクトの間には1対1
の関係が存在することから、以下ではジョブオブジェク
トをジョブと呼ぶことにする。
行されるべき命令を包含するオブジェクトであるという
点でジョブと同じであるが、それは必ずしもBDU内に
記憶されたオブジェクトを指すわけではない。タスクは
必要とあらばジョブを産生することができ、また、タス
ク及び全ての産生されたジョブが完全であるときアプリ
ケーションプログラムに査定応答を送り戻すことができ
る。タスクが肯定応答を提供するものである場合には、
その肯定応答を伝送するための必要なパラメータ及びメ
カニズムはタスクオブジェクト内に記録される。タスク
は、それが受信されたこと及び実行が保証されているこ
との肯定応答を提供することもできる。
実行と矛盾しないことを確認する上で重要な1つのステ
ップとして、トランザクションシステム192のアプリ
ケーションプログラムは、ジョブに対して、ジョブ命令
198内に含まれたコンテンションインデックスとよば
れる整数を割当てる。各々のコンテンションインデック
スは、例えばデータセット180といった共通要素のな
い予備区画化されたBDU22のデータセットを表わし
ている。予備区画化には、いかなるオブジェクトもBD
U22に付加されないうちに定義されるアルゴリズムが
使用される。アルゴリズムはBDUオブジェクト上での
ジョブ実行のために最適なロードバランシングを達成す
るように設計されている。タスクは、直接BDUオブジ
ェクトをアクセスしないことから、任意のコンテンショ
ンスペースに割当てされ得る。
300がデータセット内の1つのオブジェクトにアクセ
スしたときもう1つのプロセスがそのデータセット内の
もう1つのオブジェクトにアクセスした場合に矛盾が発
生し得るという意味でBDUオブジェクトは互いに関係
している。同じコンテンションインデックスのジョブ
が、同じデータセット180内の関連オブジェクトへの
アクセスを要求する可能性があり、従ってこれらのジョ
ブではシリアルで実行されなくてはならない;異なるコ
ンテンションインデックスのジョブは、スループットを
増大させるべく並行して(同時に)実行することができ
る。
することができる。例えば、1つのジョブがBDU22
内に100万の記録を包含するバルクファイルをロード
すると仮定する。ジョブは100万個のステップに分割
でき、各々のステップは100万個の記録のうちの1つ
をロードする。標準的には、1ステップ内には多くの計
算はない。従って1つのステップは、全ジョブについて
の実行時間に比べわずかな時間で実行可能である。ジョ
ブは、障害の後連続的オペレーションを確実に行なうた
め、全てのステップの後にファイル位置を包含する変数
を更新することを含め、充分な状態を維持することを担
当する。周期的に、ただしステップの間で、JEP30
0は、完了したステップの結果を包含するトランザクシ
ョンをコミットし、新しいトランザクションを開始す
る。1つのトランザクションは、完了したステップの結
果がBDU22内にうまく書込まれ記憶された時点でコ
ミットされる。JEP300が現行トランザクションを
コミットする時間の間、ファイル位置を内含する実行中
のジョブの状態が更新される。障害が発生した場合、ジ
ョブは、回復手順において最後に記録された位置にファ
イルを置くための充分な情報を有することになる。
いジョブが産生されることを要求する可能性もある。セ
ーターの例における産生されたジョブは、衣服部門の月
毎の総所得を更新すること及び青色セーターの在庫を更
新することを内含する可能性がある。1つのジョブがJ
EP300によって産生された後、ジョブはUSP23
内にロードされる。データベースの一貫性を維持するた
めには、ジョブJの実行に起因して産生された全てのジ
ョブが同じトランザクション内で、その産生されたジョ
ブが効果を出すようジョブJが意図しているコンテンシ
ョンスペース内のステージングセルに対して付加される
ことになる。ステージングセル及びコンテンションスペ
ースについては後述する。
適切な時点での実行のためJEP300に対しそれを誘
導する。この流れは、高い全体的システムのスループッ
ト及びデータ処理効率を達成し、同時に実行されるジョ
ブが矛盾しないようにするべく管理される。並行プロセ
スを多数のプロセッサが実行している場合、USP23
は、多数のプロセスにより一定の与えられたデータセッ
ト180内のオブジェクトに対する同時アクセスを回避
しながら、できるかぎり数多くのプロセスを使用状態に
保つことを担当する。矛盾のない並行実行を可能にする
ため、同じデータセット180にアクセスするジョブ
は、JEP300の1つに割当てられた特定のキュー1
84の中に置かれる。通常キューよりも多いデータセッ
トが存在することから、一定の与えられたキュー184
は、複数のデータセットにアクセスするジョブを包含す
る可能性がある。1つのジョブが割当てられるキュー
は、ジョブのコンテンションインデックスから計算され
る。例えば、Nをキューの数として、0〜N−1までの
整数が各キューに割当てられると想定する。コンテンシ
ョンインデックスQを伴うジョブが、割当てられた数を
もつキューに割当てられることになる(Qモジュロ
N)。こうして、比較的より小さい数のキューに対し、
潜在的に多数のコンテンションインデックスをマッピン
グすることができる。
とができる。その列内には、同じデータセット180に
アクセスするジョブすなわち矛盾しうるジョブが存在す
る可能性がある。潜在的に矛盾するジョブに対し同じコ
ンテンションインデックスを割当てると、それらは、単
一のJEP300によって実行される一定の与えられた
キュー184にマッピングされる。このようにして、ジ
ョブは、シリアルに実行されることが保証され、従っ
て、いかなる矛盾も発生し得ない。
高めるために、USP23は同様に、各々が図1に全て
のキューにわたる縞として例示されている行304の形
に論理的に組織される。各々の行は、その行が1つのプ
ロセスによってアクセスされていることを表示するため
にロックされ得る行制御オブジェクトを有する。プロセ
スが、1本の行にジョブを付加することを望むとき、書
込みロックが要求される。この行は、代替的には、実行
のための行内のジョブを取出すことを望む場合にJEP
300によってロックされた状態で読取られる可能性も
ある。ロックを用いたジョブの付加及び取出しのオペレ
ーションについて、以下で記述する。充分な行が提供さ
れる場合、1つが利用可能な状態となるのを待つことな
く、未ロック行を見い出すことが常に可能となる。
ードされる。ジョブのプロジューサは、未ロック行を発
見し、その行をロックし、ジョブをその行内にロード
し、次にロックを解除しなければならない。行304内
で、ジョブは、それぞれのコンテンションインデックス
によって決定されたキューの中に置かれる。このように
して、充分な行が存在する限りにおいて全てのプロジュ
ーサが、矛盾をひき起こすことなく同時にキュー内にジ
ョブを書き込むことができる。
びBDU22は、連合データベースと呼ばれるデータベ
ース組織の一部を成す(Objectivity/DB Administrat
ion、リリース5、1998年2月、Objectivity Incor
porated)ここで図2を参照すると、連合データベース
10は、一定数のデータベース単位(2つの単位100
及び110が示されている)を包含している。各々のデ
ータベース単位は、一定数のコンテナ120、130及
び140を有する。連合データベース10、データベー
ス単位(100及び110)及びコンテナ(120、1
30及び140)は、オブジェクテビティ社(Objectivi
ty Incorporated)から市販されているObjectivity/DB
(登録商標)と呼ばれる分散型スケーラブルオブジェク
トデータベースの基本的構成である。
B(登録商標)の論理的記憶階層の中で最高のレベルで
ある。連合データベース10は、図2では1つのエンテ
ィティとして現われているが、ネットワークを介して接
続される異なる場所で多重のデータ記憶デバイスを横断
して分散されていてもよい。
合データベースファイル(図示せず)として存在する。
連合データベース10は、連合を構成する付加的なデー
タベース100、110のカタログ13と同様に、連合
データベース10のためのスキーマ15を記憶するシス
テムデータベース12を包含する。連合データベース1
0には、例えばロックサーバープロセス(データベース
内のオブジェクトのロッキングを調整するために Objec
tivity/DB(登録商標)のクライアントが接続するサ
ービス)といった Objectivity/DB(登録商標)プロ
セス(図示せず)に対しそれを識別する一意的整数が割
当てられる。
jectivity/DB(登録商標)論理記憶階層内で2番目に
高いレベルにある。データベース100が、小売りビジ
ネスのための顧客住所データといったようなユーザーア
プリケーションの持続性データを記憶する。データベー
ス100は、物理的にはデータベースファイル(図示せ
ず)によって表わされる。各々のデータベースは、正確
に1つの連合データベースに付加され、その連合データ
ベースのカタログ13内にリストアップされる。データ
ベースファイル及びそれに付随する連合データベースフ
ァイルは、異なる機械の上に存在し得る。物理的ファイ
ル名を有することに加えて、データベース100は、連
合データベース10のシステムマネージャによって規定
されるシステム名をも有する。データベース100のシ
ステム名は、連合データベース10内の論理名である。
は、オブジェクトと呼ばれる持続性データの基本単位を
保持している(例えば145)。コンテナ120はオブ
ジェクトの物理的クラスタ化を決定する。コンテナ12
0はロッキングの基本単位でもある。コンテナ120内
のいずれかのオブジェクトがロックされた時点で、ロッ
クは全コンテナに適用され、コンテナ内の全てのオブジ
ェクトを有効にロックする。
ロセスが、潜在的に何百万又は何十億のオブジェクトレ
ベルのロックではなく比較的少ないコンテナレベルのロ
ックを管理する必要しかないため、全体的性能のために
なり得る。図2は、オブジェクトが別々のコンテナ内に
クラスタ化されしかもなお互いに参照し合うことができ
るということを示している(148)。
0は、一定数のBDUデータベース100を含むことが
でき、各々のBDUデータベース100は何万ものBD
Uコンテナ120を含むことができる。各々のBDUコ
ンテナ120は、個人又はビジネス記録を保持するオブ
ジェクト145ならびにオブジェクト間のリンク148
を記憶する。
22内のオブジェクトを新規作成する、削除する又は修
正するといったような書込みオペレーションを実施する
ジョブを表わすことができる。書込みオペレーションを
受理する(すなわちこれによる影響を受ける)BDUオ
ブジェクトは、オブジェクト145と同じコンテンショ
ンインデックスを有していなくてはならない。一方、そ
の活動の一部分として読取りオペレーションを実行する
ジョブを、任意のデータベースから読取ることが可能で
ある。書込みオペレーションと矛盾することなく読取り
オペレーションを管理するための機構は、Objectivity
MROW1(多重読取り装置単一書込み装置)から容易
に入手可能である。
U22及びUSP23を内含する連合データベース10
の一実施態様を示す。USP23は、(n+1)個の論
理列と(m+1)個の論理行をもつ行列として組織され
る。つねに矛盾を回避するためUSP23に必要とされ
る行及び列の数については後述する。
2のデータセット180が1つのデータベース(20
1、202、…20n)を形成し、各々のデータベース
がコンテンションスペース(211、212、…21
n)を表わす。論理列の1つ、すなわち図3中の最も左
側の列は、ルートデータベース24内に記憶されてい
る。ルートデータベース24を表わすものを除く各々の
論理列には、実行セル(EC)と呼ばれる1つの論理セ
ルとステージングセル(SC)と呼ばれるm個の論理セ
ルが内含されている。
成セルに対するアクセスを管理するための論理単位であ
る。図3では、行304は、ステージングセルSC12、
SC 22…SCn2を保持している。
ジングセルであれ、ジョブオブジェクトを保持する1つ
のコンテナである。ステージングセルは、JCP350
が、新規作成された後のジョブを置く場所であり、また
実行セルまで転送するためにJEP300がジョブを受
理する場所でもある。実行セルは、準備完了状態のジョ
ブ、実行中のジョブそして待機中のジョブを保持する。
ステージングセルは、JCP350からロードされたジ
ョブを保持する。
スケジューラ(JS)コンテナとm個の行コンテナ(R
1、R2、…Rm)を内含する。各々の行コンテナは、そ
の行の構成ステージングセルのリストを保持する行制御
オブジェクト292を有する。行制御オブジェクト29
2が、その行の1つの書込みロック又は一定数の読取り
ロックのためのハンドルとして使用される。各々のコン
テンションスペースのための構成セルのリストが、その
コンテンションスペースの実行セルコンテナ内に記憶さ
れたコンテンションスペースオブジェクト291の中に
保たれている。行制御オブジェクト292及びコンテン
ションスペースオブジェクト291の全てについての情
報は、JSコンテナ内に保持されている。
れのプロセッサ(例えばプロセッサ321)によってア
クセス可能であるデータ記憶デバイス(例えばディスク
311)の中にある。好ましくは、各々の列データベー
スは別々のディスク上に記憶され、各プロセッサは、単
一のJEP300のみを実行する。例えば、データベー
ス201は、JEP300を実行するプロセッサ321
によってアクセス可能なディスク311上に存在する。
この配列は、ネットワーク通信量を低く保ち、ディスク
スラッシングを低減させ、こうしてネットワークの待ち
時間を改善し、スループットを増大させる。
取り又は書込み頻度が少ないことから、ルートデータベ
ース24の物理的配置は、性能にとって非常に重要なこ
とではない。
列につき1つのJEPの割合でUSP23の論理列内の
ジョブを処理するべくJEP300を割当てることが可
能である。しかしながら、スケーラビリティ及びロード
バランシングを可能にするべくその他のタイプのマッピ
ングを実施することもできる。例えば、多数の列に対し
て1つのJEPを許容することにより、プロセッサ、プ
ロセス又は列の数に関してUSP23のスケーラビリテ
ィを増強することができる。多数の列に対して1つのJ
EPという配置は、プロセッサの数が変わった場合に、
USP内の列の数及びプロセッサあたりのJEPの数を
同じままにすることができ、そのためUSP23により
使用されるプロセッサの数をスケーリングするのに必要
な努力が少なくてすむという利点をもつ。その上、同じ
JEP、同じプロセッサ上で実行中の多数のJEP又は
その両方の組合せに割当てられた多数の列を横断してジ
ョブロードを平衡させることができる。その一方で、1
本の列に対して多数のJEPを可能にすることより、U
SP23の性能を改善させることができる。1本の列に
対して多数のJEPを配置する場合、矛盾を防ぐため実
行プロセスとして1つのJEPのみが指定され、その他
のJEPは、実行をスピードアップするための補助(例
えば予備取出しジョブ)を提供するにすぎない。
た行上でいかなるプロセスも待機していないようにする
ためには、C個のJEPとP個のJCPをもつUSPに
ついて少なくともC+P本の行とC本の列が必要とされ
る。一定の与えられた時点で利用可能なショブを各JE
Pが確実に有するようにするためには、C本の列が必要
とされる。中に新しいジョブをロードするために任意の
与えられた時点で利用可能な行を全てのJCP及び全て
のJEPが発見できるような形で、C+P本の行が必要
とされる。JSコンテナ、行コンテナ及び列コンテナを
考慮に入れると、コンテンションを回避しロック上の待
機をなくするために必要とされる合計コンテナ数は(C
+P+1)(C+1)である。新しいジョブをロードする
ためにいかなるプロセスもロック上で待機する必要がな
いことから、新しいジョブは、それらが生成又は産生さ
れると直ちにUSP23によって受入れられる。
Java又はC++を含む一定数のコンピュータ言語で実施で
きる。実施例には、各機械が物理的ディスク及びプロセ
ッサを有している状態で、複数の機械を接続する中速度
のネットワークが必要とされる。各機械のディスクは、
その機械のプロセッサにとってアクセス可能なものであ
るUSP23の列を保持している。
EP300は、USP23内でジョブを実行し次に削除
する消費者プロセスを表わす。周期的にか又はJEPの
実行セルがすぐに実行できるジョブを全くもたなくなっ
た時点のいずれかで、JEP300は、行のランダム順
列からラウンドロビンスキームを用いて行を走査する。
選択された行をロックできない場合、行のうちの1つの
上で読取りロックが獲得されるまで順列により選択され
た次の行が試みられる。読取りロックが獲得された後、
JEP300は、指定されたコンテンションスペース内
でロックされた行に位置づけされたステージングセル内
の全てのジョブを取出し、ジョブを実行セルにコピー
し、そのステージングセルからそのジョブを削除する。
次にJEP300は、読取りロックを解除し、一度に1
つのジョブを実行し始める。同じトランザクション内で
1つのジョブを実行した後、JEP300は実行セルか
らジョブを削除する。
ョブが、何らかの新しいジョブの産生を必要とするか否
かを見極めるためジョブと共に運ばれる情報を使用す
る。JEP300によって産生された新しいジョブがあ
る場合、それらは、書込みロックと共にJEPが獲得し
た行のステージングセル内に記憶される。ステージング
セルは、新しいジョブのコンテンションインデックスに
よって特定されたコンテンションスペース内に位置づけ
されている。
2)は各々の読取りロックが別々のコンテンションスペ
ース内で異なる消費者により獲得される限りにおいて、
同時に多数の消費者により獲得される多数の読取りロッ
クを有する可能性がある。しかしながら、行制御オブジ
ェクト292は、一度に1つの書込みロックしか許容せ
ず、これは省略時 Objectivity/DB(登録商標)を通
して達成される。1本の行上の書込みロックは、同時の
読取り及び書込みがデータの非一貫性を作り出す可能性
があるために、同一の行上に読取りロックを得ようとす
る試みをすべて排除する。同様にして、1本の行上の1
つ以上の読取りロックの存在は、同じ行上の書込みロッ
クの獲得を妨げる。
をコミットするとき、キャッシュメモリー又はディスク
のような持続性メモリに対し、ジョブ実行の結果を書き
戻す。ジョブ実行のトランザクションは、実行されたス
テップの数又は実行時間の長さといったような、予め定
められた規準に基づいて定義される。予め定められた規
準を満たす場合、例えば、トランザクションの開始から
10秒が経過したか又は1つ以上のジョブの500のス
テップが実行された時点で、JEP300は1つのトラ
ンザクションをコミットする。トランザクションは、ジ
ョブが短かい場合、多数のジョブの実行を内含すること
ができる。例えば、1つのトランザクションは、1つの
ジョブの後半部分、完全な10個のジョブ、及びもう1
つのジョブの前半部分を内含しているかもしれない。
に以下のものが含まれる。 1.JEP300が実行セルから1つのジョブを選択し
それに#start:メッセージを送ることから始める。ジ
ョブは、1つのオブジェクトである第1の記憶をJEP
300に戻すことにより応答する。第1の記憶は、その
後ジョブへと戻されることになる。第1の記憶は過渡的
であり(すなわち、RAM内にのみ保持され、連合デー
タベース内のどこにも記憶されない)、JEP300は
自動的にそれを追跡することを続ける。 2.周期的に、JEP300は、#atEnd:メッセージ
を送り現行記憶をジョブに戻すことによりそれが終わっ
たか否かをジョブに問い合わせる。ジョブが「真」のイ
ンジケータを戻した場合、以下で説明するように終了メ
ッセージが送られる。 3.ジョブが「真」のインジケータを戻さない場合、J
EP300はジョブに#step:withScheduler:メッセー
ジを送り、ジョブに現行の記憶及びJSコンテナ内に記
憶された情報を渡す。ジョブは、第2の記憶(第1の記
憶と同じオブジェクトである可能性もある)を戻す。J
Sコンテナ内に記憶された情報といったような管理情報
もジョブに対し渡される。この情報は、ジョブがより多
くのジョブの産生を必要とする場合に使用される。 4.次にJEP300は、例えば、最後のトランザクシ
ョンがコミットされてから10秒が経過したか否かに応
じて、ショブのトランザクションをコミットすべきか否
かを決定する。その後、JEP300はそれが終わった
か否かをジョブに再び問い合わせる。 5.ショブがひとたび「真」インジケータを戻した時点
で、JEP300はジョブに#finish:メッセージを送
り、ジョブに現行の記憶を渡す。次にJEP300は、
ジョブを削除する。 6.JEP300は、実行セル内の次のジョブに着手す
る。実行セル内でいかなるジョブも実行できる状態にな
い場合、JEP300は新しいジョブのためその列内の
行を走査する。
断され得、ジョブは部分的にしか実行されなくなる。し
かしながら、コンテンションスペースオブジェクト29
1は、トランザクションがコミットされる毎にその実行
セルコンテナ内の現行の実行ジョブの状態を記憶するこ
とから、ジョブの状態は、少なくとも最近コミットされ
たトランザクションの時点まで回復され得る。
新しいJEPを開始させること、そして次に部分的に実
行されたジョブに再開するよう知らせることを内含す
る。回復手順は、外部状態が存在する場合、それをジョ
ブがリセットすることを可能にする。回復手順は一般に
以下の通りである: 1.ジョブに、#restart:メッセージを送る。ジョブ
は、そのジョブの実行を続行する上で使用するべく、新
しいJEPのための記憶を戻す。 2.前節で記述したようなジョブ実行手順のステップ2
で続行する。
ブ生成プロセスは、書込みロックが1つの行上で首尾よ
く獲得されるまで、行のランダム順列からラウンドロビ
ンスキームを用いて行を走査する。ジョブ生成プロセス
は、JCP350であっても、新しいジョブを産生して
いくJEP300であってもよい。ジョブ生成プロセス
は、そのジョブ及び同時にロードされているその他のジ
ョブがその行内のステージングセル内に置かれる間、ジ
ョブ生成トランザクションが終るまで、書込みロックを
保持する。ジョブ生成トランザクションは、ジョブ消費
者のトランザクションと同様に定義づけされ得る。トラ
ンザクションが完了した後、ジョブ生成プロセスは書込
みロックを解除し、ジョブは、行上の読取りロックを用
いてそれぞれのJEP300による実行のため選択され
得る。このようにして、USP23内にジョブを付加す
るオペレーションには一般に以下のものが含まれる。 1.その行の行制御オブジェクト292上にある書込み
ロックを獲得することにより、1本の行上の書込みロッ
クを獲得する。 2.ジョブのコンテンションインデックスに従って、ロ
ックされた行の適切なセルにジョブを付加する。 3.書込みロックを解除する。
作成するためには、以下の手順を用いることができる。
USP root」、「UpdateStreamProcessor SampleUSP cont
ention space1」、...「UpdateStreamProcessor Sample
USPcontention space10」という名前の11のデータベ
ースを新規作成する。ルートデータベースは、1つのJ
Sコンテナと、10+4=14の行の各々について1つ
ずつの行コンテナを有する。その他の10個のデータベ
ースの各々は、好ましくは、そのコンテンションスペー
スを処理するべく割当てられたプロセッサ又はその近く
にあるディスク上に記憶されたコンテンションスペース
を表わす。
SPの位置を特定しUSPに対するハンドルを受けとる
ためのアプリケーションプログラムの命令を示す。例え
ばアプリケーションプログラムは、図1でトランザクシ
ョンシステム192内に記憶されたものであってよい。
で呼出しされなくてはならない。ひとたびハンドルが受
理された時点で、アプリケーションプログラムはさら
に、新しいジョブをスケジュールし既存のジョブを実行
するためUSPのプロセスを命令することができる。
1つのジョブを書込むためJCP350をトリガーす
る。
る1つの機能であり、この機能は、ジョブ生成トランザ
クション内で呼出される。新しいトランザクション内の
CurrentOutputRowに対する第1の要求のみがJCP35
0にもう1つの未ロック行を発見させる。反復的要求
は、JCP350に同じ行を戻させることになる。
するべく予め定められた順序で実行されなくてはならな
い。ジョブ実行の予め定められた順序を強化する方法
は、同期化と呼ばれる。市販のデータベースシステムで
は、例えば、人物の間に関係があるかもしれず、これら
の人物と付随するオブジェクトは互いに属性を介して参
照し合うことができる。1つの記録をもう1つの記録又
は人物に関係づける属性、関係及びリンクを更新する場
合、ジョブ実行の適正な順序が求められる。そうでなけ
れば、データベースシステムの無欠性は破壊され、デー
タの一貫性は失なわれる可能性がある。
される定数分数及びタグを有する。同期化に参加する1
つのジョブは、同じ同期化に参加するその他のジョブの
全てが実行セル内に到着した時点で初めて実行され得
る。同じ同期化に参加するジョブは、そのジョブのタグ
によって識別される同期グループを形成する。ジョブの
タグがニル(無)である場合、それは、そのジョブがい
かなる同期化にも参加しないことを意味する。ジョブの
タグがニルでない場合、それは、同じタグをもつその他
のジョブと共にまとめられる。
る定足数の割合を表わす。例えば、5つのジョブが同期
化される必要がある場合、各々のジョブには定数分数値
1/5に割当てられる。実行セル内の同じタグをもつジ
ョブの合計分数が1に達した時点で、これらのジョブは
過渡的メモリー内のスモールトーク辞書から実行セル内
に記憶された実行準備完了リストまで、大量に移動させ
られる。辞書は、実行セル内で待機するジョブのリスト
を保持している。同期グループのジョブを容易に識別で
きるように、待機中のジョブはそのそれぞれのタグによ
ってインデクシングされる。待機中のジョブは、そのそ
れぞれの同期グループ内のいくつかのジョブが実行セル
内に到着していない場合、まだ準備完了とはならない。
る。同期化される必要のあるジョブグループの合計定数
分数が1より大きい場合、エラーが起こる。
ョンスペース内で実行されなくてはならない。ある一定
の順序で、異なるコンテンションスペース内のジョブが
実行される必要がある場合には、一定の与えられたコン
テンションスペース内の定数分数を1までパッドするた
めトークンジョブを生成することができる。例えば、ジ
ョブ1が、全て異なるコンテンションスペース内にある
ジョブ2及び3を新規作成すると想定する。さらに、ジ
ョブ3はジョブ2が完了した後にのみ実行されなければ
ならないと想定してみよう。ジョブ3が新規作成された
時点で、それには1/2という定数分数と、生成された
一意的タグが与えられる。ジョブ2が新規作成された
時、それは全くタグをもたないが、ジョブ3のタグが何
であるかはわかっている。ジョブ2が実行するとき、そ
れが最後に行なうのは、ジョブ3と同じタグと1/2の
定数分数をもつトークンジョブ3aを新規作成すること
である。ジョブ3及び3aが両方共到着した時点で初め
て、それらは実行できる。ここでジョブ3aは、1とい
う定数分数を達成しジョブ3が実行できるようにするト
リガーとして作用すること以外何も行なわない可能性が
ある、ということに留意されたい。
成する数多くのステップを伴う非常に長い実行中のジョ
ブを考えてみる。例えば、主要ジョブが完了してしまう
までは、これらの産生されたジョブのいずれも実行して
ほしくないと我々が考えているとしよう。トランザクシ
ョンは、主要ジョブのステップ間で何度もコミットされ
得、こうして、産生されたジョブはその標的コンテンシ
ョンスペースまで伝達され得るようになることから、我
々は同期化を使用しなければならない。我々は各々の産
生されたジョブに可能な限り最小の定数分数(2-32)
を与え、どれほどのジョブが各々のコンテンションスペ
ースに行ったかを記録することができる。主要ジョブの
最後のステップで、我々は、我々がそのコンテンション
スペースに送ったジョブの定数分数の合計を1から引い
たものである定数分数を用いて、我々がいずれかのジョ
ブを送った各々のコンテンションスペースに対しダミー
トリガージョブを送ることができる。こうして、これら
のトリガージョブが送られた時点(これは主要ジョブが
完了した時点でしか起こらない)でのみ、以前に産生さ
れたジョブは実行を開始することができる。
ープの一部としてそのジョブを識別する一意的整数であ
る。JEP300は、タグ整数を同期グループにマッピ
ングするためにRAM内のアソシエイティブ構造を使用
する。JEP300は、定足数を決定するために同じタ
グをもつジョブを一緒にまとめる。ジョブは、それらが
実行されるまで制限された時間だけデータベース内に存
在するにすぎないことから、USP23内の任意の既存
の同期グループについて一意的な1つの整数を生成する
目的で、通常は1つの巡回64ビット計数器で充分であ
る。計数器上のコンテンションを避けるため、各々のコ
ンテンションスペースオブジェクト291は、対応する
JEP300によって産生されるジョブのためにその独
自の64ビット計数器を維持する。各々の行制御オブジ
ェクト292は、JCP350によって新規作成された
タグ付きジョブを構築するための計数器も保持してい
る。タグの一意性を確保するためにジョブを保持するコ
ンテナの列数又は行数を、取込むことが可能である。産
生されたジョブのタグのための整数を生成するための1
つの実施では、N本の列をもつUSPの列の各々に対し
0からN−1までの数字が割り当てられる。ジョブのタ
グ整数は、計数器の値をNで乗じ次にジョブを保持する
コンテナの割当てられた列番号を加えることによって生
成できる。JCP350により新規作成されるジョブに
ついてタグを生成するためにも類似のアプローチを使用
することができる。行制御オブジェクト291及びコン
テンションスペースオブジェクト292から生成された
同期グループを区別するには、正負符号のついた整数を
使用してもよい。
50又はJEP300は、行制御オブジェクト292又
はコンテンションスペースオブジェクト291に対しそ
れぞれメッセージ#nextUniqueInteger を送る。タグが
生成されている時間の間、この計数器上でのコンテンシ
ョンを防ぐため行制御オブジェクト292又はコンテン
ションスペースオブジェクト291上の同じトランザク
ション内で書込みロックが獲得される(そして標準的に
はすでに先行する要求により獲得されている)。
292に送られる命令は、以下の通りである。
ースオブジェクト291に送られる命令は、以下の通り
である。
正しい順序が保証される。例えば、コンテンションスペ
ース#1内のジョブJ1がジョブJ2及びJ3を新規作
成すると想定する。これらのジョブは、異なるコンテン
ションスペース(例えば、それぞれコンテンションスペ
ース#2及び#3)内で実行する。J2が終了した時点
で、それはジョブJ4を新規作成する。同様に、J3は
J5を新規作成する。J4及びJ5は、J1が実行した
コンテンションスペースに割当てられる。J4及びJ5
は互いに同じタグ整数をもち、各々が1/2という定数
分数を有する。こうして、J4がまず最初にコンテンシ
ョンスペース#1内に到着したならば、それはJ5も到
着するまで実行され得ない。同様に、J5が最初に到着
したとしても、それは、J4が到着するのを待って実行
しなければならない。
ばならないが、そのタグは包括的に一意的でなければな
らない。従って一意的整数を(例えば次の一意的整数に
ついて現行の出力行にたずねることによって)割当てる
のはJ1の責任である。J1はJ2及びJ3に、この整
数が何であるかを告げる(ここで、J2及びJ3は同期
化される必要がないため独自のタグを全くもたないとい
うことに留意されたい)。J2がJ4を新規作成した時
点で、それはJ4のタグをこの整数にセットする。同様
に、J3はJ5のタグをこの同じ整数にセットする。J
2及びJ3は、J2及びJ3が含む残りのデータから明
らかでない場合にJ4及びJ5をどのコンテンションス
ペースに送るべきかについての情報を包含していなけれ
はならないかもしれない。
P350をアプリケーションプログラムがトリガーする
ためのコード例が、以下に示されている。このコード
中、ジョブ1及びジョブ2には同じコンテンションイン
デックス、同じタグそして合計1となる異なる定数分数
が割当てられている。両方のジョブ共、そのいずれかが
実行され得る前に、割当てられたコンテンションスペー
スの実行セル内に到着しなければならない。
内に到着した後、JEP300が、ジョブグループを実
行する前に、ジョブ折畳み手順が起こるかもしれない。
このジョブ折畳み手順は多数のジョブを単一のジョブへ
と減少させ、こうして冗長なジョブを除去し、反復され
たジョブを単純化させる。同期ジョブグループがいつで
も実行できる状態になった時点で、JEP300は順番
にこれらのジョブの各々に対し#collapseJobs:メッセ
ージを送り、ジョブコレクションを引き数として渡す。
ジョブの1つがニルの代りに1つのジョブで応答した場
合、このジョブが、全グループの代わりに使用されるこ
とになる。このジョブは標準的に、オリジナルのジョブ
グループ内で発見される全ての情報を包含する。新しい
ジョブの実行結果は、同期グループ内の全てのジョブの
組合せ結果と等価である。例えば、N回の「計数器を1
だけ増分する」というオペレーションは「計数器をNだ
け増加する」へと折畳みされ得る。
用例について以下で記述する。USP23は、一定の与
えられた記録とBDU22内に記憶された記録との間に
整合が存在するか否かを見極めるために、BDU22内
の全ての記録を処理するロードジョブを実行することが
できる。例えば、一定の与えられた記録は、顧客ジョン
(John)の新しい住所を含む新しい記録であり得る。ロー
ドジョブは、一定数の整合ジョブを産生し、整合ジョブ
の各々は、一定の与えられた記録と記憶された記録との
間で、誕生日、氏名、社会保険番号といったような特定
の整合属性又は属性の組合せを比較する。
いるか、ならびに記録のためにどれほどの整合ジョブが
作り出されたかを知っている。整合ジョブは、一定の与
えられた記録と整合する対応する記憶された記録を見い
出した時点で、各々がこれらの記録のうちの1つを保持
する複数のジョブを新規作成し、整合を開始したコンテ
ンションスペースまでそれらを戻す。各々の新しいジョ
ブは、Mを整合ジョブの数としRをこの整合ジョブが発
見した記録の数として、1/(M*R)である定数分数
を有する。ここで、任意の整合ジョブからの応答の定数
分数の合計が1/Mに等しいという点に留意されたい。
いかなる整合記録も発見されなかった場合、定数分数1
/Mで、これを表示するため特殊なダミージョブが送ら
れなくてはならない。
記憶されたジョンの記録の全てに言及する応答ジョブを
生成した。これらの応答ジョブの全てがオリジナルのコ
ンテンションスペースに戻った時点でのみ、これらを処
理することが可能である。これは正確には、定数分数の
合計が1に等しくなるときである。この時点で、整合応
答ジョブを、整合する記録の完全なリストをもつ単一ジ
ョブへと折畳むことができる。このデータは、必要に応
じて分析及び併合でき、次に、変更された住所を収容す
るために修飾される必要のある各々の記録に対して更新
ジョブを送ることができる。
された全てのジョブが完了した後、肯定応答を送ること
ができるようにするためジョブの同期化を使用する。産
生されたジョブは全て、そのタスクのコンテンションス
ペース;一意的タグ及び、一定の与えられたジョブによ
りその他のジョブの中に含まれたその他の分数の全てに
対して付加された時点で合計で産生ジョブの分数となる
ような分数を支持している。タスクによって産生された
ジョブの場合、それらの分数は合計で1となる。これら
の分数を生成する迅速な方法は、産生されつつあるジョ
ブの数で1を除したものをとり、これに産生ジョブの分
数を乗じ、タスクの分数が1となると仮定されている産
生されたジョブの各々の中で、結果として得た分数を使
用することである。このスキームは、最終的ジョブ(肯
定応答以外の作業を行なうのに何らかのさらなるジョブ
を産生する必要のないジョブ)を横断した全ての分数の
和が合計で1となるようにする。最終的ジョブは、記録
されたコンテンションスペース、タグ及び定数分数とし
ての分数を伴う肯定応答ジョブを産生する。全ての肯定
応答ジョブがそのタスクのコンテンションスペースに到
達した時点で、これらは折畳みされ実行され、アプリケ
ーションプログラムに対し肯定応答を送らせる。
のである。
に、同期実行を必要としないジョブをステージングセル
から直接実行することが可能である。しかしながら、同
期化されたジョブは、その全てが同期グループとして実
行され共に削除され得るような形で、なおも実行のため
に実行セルまで移動されなくてはならなくなる。
容易にするため、各々のステージングセルは実行される
べく待機しているステージングセル内のジョブの数を表
示する計数器を有している。計数器は、計数器の値が2
32−1に達した時点で0まで循環する32ビットの計数
器であり得る。JCP350がステージングセル内に新
しいジョブを付加した時点で、ステージングセル内の計
数器は増分される。ジョブの付加及び計数器の更新の両
方が、同じトランザクション内で行なわれる。
グセルのための完了したジョブの数を表示する類似の3
2ビットの計数器も有する。JEP300が1つのジョ
ブ実行を完了した時点で、実行セル内の付随する計数器
は、MROW書込みで増分される。MROWセマンティ
クスにより、計数器は単一の書込み装置及び多数の読取
り装置によって同時にアクセスされ得ることになる。J
CP350は、周期的に、MROW読取りで実行セル内
の計数器を検査する。計数器の値は、それぞれのステー
ジングセル内でいくつのジョブを削除できるかを見極め
るために、JCP350によって使用される。
となった時点で、JEPは、計数器がその最大値に達し
た時点で計数器はゼロまでラップできるということを考
慮に入れて、計数器値が実行セルの計数器の値よりも大
きいステージングセル内の全てのジョブを読みとる。
(計数値−もう1つの値)モジュロ最大サイズ<(最大
サイズ/2)である場合、計数器の値はもう1つの値よ
りも大きいものとみなされる。例えば、2つの4ビット
計数器の値を比較する場合に、計数器の値は9であり、
もう1つの値は7であると想定する。9−7=2、2モ
ジュロ16=2であり、2は(16/8)より小さいこ
とから、9は7よりも大きい。この減算もラップする。
すなわち例えば(0−1)が計数器の最大値に等しい。
JEP300のための作業負荷は、JEPがステージン
グセルを修正する必要が決してないことから減少する。
1及び図3に示されている行列構造を持ちさえしない。
その代り、USPはジョブデータベース及びTCP/I
Pソケットを介して通信するそのそれぞれのプロセスを
含む。この実施態様においては、行の概念が存在しない
ことから、ロッキングオペレーションはもはや必要とさ
れない。図3Aを参照すると、USP27には、JEP
とJCPが内含されており、その各々は、プロセスを実
行する同じプロセッサのメモリー内にあるジョブリスト
(25)を有する。JCPのジョブデータベース26
は、JEPに送られるジョブのバックアップコピーを記
憶する。JEPのジョブリスト25は、実行されるべく
待機しているジョブを追跡する。JCPが1つのジョブ
を新規作成した時点で、ジョブのコピーがバックアップ
としてJCPのジョブデータベース26内にロードされ
る。JCPは、ジョブのコンテンションインデックスに
よってそのコンテンションスペースが特定されている適
切なJEPまでTCP/IPソケットを介してジョブを
伝送する。JEPはジョブを受理した後、一時的にその
ジョブを、実行待機中のそのジョブリスト25に付加す
る。
ケーションプログラムがTCP/IPメッセージをネッ
トワーク上で送受信することができるようにするソフト
ウェアエンティティである。TCP/IPソケットを使
用すると、ジョブをTCP/IPメッセージとして送受
信でき、こうしてシステムのプログラマからネットワー
クのディテールが隠される。
続を有しており、それを通して、そのJEPによって実
行されなくてはならないジョブを伝送することができ
る。特定のJEPを目的として特定のJCPからのジョ
ブは全て同じソケット接続を通して伝送され、連続的ジ
ョブのID番号、モジュロ232が割当てられる。
標)によって実施される「自律区画化」の概念を利用す
る。自律区画化は、基本的に、連合データベースのデー
タベースサブセットである。各データベースは、正確に
1つの自律区画に属する。USPのこの変形態様におい
ては、各々のプロセスはその独自の区画内で動作でき
る。データベース書込みは、その付随する実行プロセス
によって制御されるデータベースに局所的なものとして
制約され得、こうして、ネットワーク通信量は大幅に低
減され、プロセッサが回復されるまであらゆるプロセッ
サの故障が安全に隔離されることになる。ネットワーク
通信量の減少の結果、自律区画は同様に、遠隔した地理
的サイトに広がる広域ネットワーク(WAN)上での展
開の望ましくない効果も低減される。この望ましくない
効果としては、ローカルエリアネットワーク(LAN)
と比べてデータ伝送コストが高いこと及び通信リンクの
予想故障率が高いことが含まれる。ネットワーク通信量
が低減されることから、自律区画はWAN上の展開のた
めのコストを低下させるのみならず、伝送の信頼性に対
する要求も少なくする。
ット接続は、「データグラム」ではなくむしろ「ストリ
ーム」種のものである。「ストリーム」種のための根底
にあるネットワークプロトコルは、必要に応じて誤り訂
正及び再伝送を内含するメッセージの送達を確保してい
る。個々のIPパケットは、ゼロ以上の回数、任意の順
序で物理的ネットワークアダプタに到着し、任意に折畳
みされる。「ストリーム」ソケット実施は、これらのパ
ケットを正しく順序づけし直し、誤伝送されたパケット
の再伝送を要求し、冗長なパケットを放棄することを担
当する。パケットの伝送が適正な時間又は努力(標準的
には数秒)の量内で達成されず肯定応答され得ない場
合、プロトコルは単純に、クライアント(すなわちJC
P及びJEP)に対しそのソケットが接続解除されたこ
とを通知することになる。ソケットが接続解除された場
合、クライアントは周期的に、接続解除されたソケット
を再接続することを試みることになる。JEPは、再接
続を試みる一方で、接続されたソケットから到着するジ
ョブを処理し続けることになる。こうして、ジョブ処理
は、故障したノード又はネットワークリンクからの回復
中でさえ続行される。
は、長さが数キロバイトのものである。固定サイズのパ
ケットについては、パケットを伝送するオーバーヘッド
が固定される。ジョブのサイズは通常、パケットのサイ
ズよりも短かいことから、単一のパケットとして各ジョ
ブを伝送するのは効率の悪いことであろう。従って、伝
送の前に、ジョブは、そのサイズがパケットサイズに等
しいバッファの中に書き込まれる。伝送プロセスは可能
なかぎり多くのジョブを各バッファ内にパックし、無駄
になるネットワーク通信量を低減するべく1つのパケッ
ト内で全バッファを伝送させる。
も伝送する必要がある。そうでなければ、USPが静止
状態となった場合に、最終のジョブが決して伝送されな
い可能性がある。このようにして、我々は、パケット内
で送られる前にどれほど長くデータがバッファ内にとど
まり得るのかについての限界をセットする。例えば、最
初のジョブがバッファ内に書込まれてから10秒以上が
経過した場合、バッファはソケットに対しフラッシュさ
れ、パケットを強制的に物理的に送らせる。一方、それ
をバッファ内の最後のジョブとの関係においてタイミン
グした場合、9秒毎に到着するとぎれがちなジョブは、
その一部が長時間伝送されるのを待っていたという事実
にも関わらず、バッファが数分間伝送されないように保
つ可能性がある。より少ない待ち時間を必要とする環境
内でUSPが使用される場合には、時間的限界を低減さ
せることができる。
実行されるようにするため、コミットされたジョブは常
に、ソケットを介してJEPに伝送される前にJCPの
ジョブデータベース26に書き込まれる。ジョブがJE
Pによって受信された時点で、我々は、ジョブがすでに
JCPのデータベースにコミットされたことがわかる。
故障の場合、JCPはそのジョブデータベース26を走
査し、まだ実行されていない可能性のあるジョブを各J
EPに再伝送することになる。JEPは、ジョブがすで
に受信され実行されたことを表わすIDをもつジョブを
単純に無視する。
くならないようにするため、各JEPは、1つのトラン
ザクションをコミットする毎にJCP1つあたり1つの
番号という割合で最近完了したジョブのID番号を記録
する責任を負う。これらのジョブID番号は、RAM計
数器によって計数され、回復中に、どのジョブがすでに
実行され無視できるかを告げるのに用いられる。JEP
はまた、各々のJCPに対して、そのJCPについての
RAM計数器値を含む削除メッセージを周期的に伝送す
る。JCPは、削除メッセージを受信した時点で、ラッ
プ演算を用いて自由にメッセージ内のID以下のIDで
すべてのジョブを削除することができる(すなわち、そ
のIDがメッセージ内のIDに等しいか、そのメッセー
ジ内のIDより下231以内にあるか又はメッセージ内の
IDより231より大きい全てのジョブを削除することが
できる)。
たジョブのIDを支持することができない。ジョブが同
期化されていない場合、ジョブは完全に実行されコミッ
トされてしまわなくてはならない。ジョブが同期化され
たジョブである場合、JEP内の情報の複製が必要とさ
れる。同期化されたジョブのIDと共にジョブ削除メッ
セージを伝送するに先立ち、JEPはジョブデータベー
ス25内にジョブのコピーを記憶しそれをコミットす
る。同期ジョブのコピーを記憶することは、故障の際の
回復にとって必要である。そうでなければ、ジョブの持
続的記録は全くなくなる。ジョブ同期化においてすでに
記述したRAM内のアソシエティブ構造は、削除メッセ
ージ内で伝送されたIDをもつ同期ジョブを含め、その
タグを伴う同期グループ内のジョブリストに対する各同
期化タグからのマッピングの記録を行なう。回復時点で
アソシエティブ構造はジョブデータベース25内のジョ
ブから再構築される。
でそのグループには、単一ジョブへと折畳みする機会が
与えられる。折畳みが発生した場合、そのグループのジ
ョブはデータベース及びアソシエティブ構造から削除さ
れ、単一の置換ジョブが単一のトランザクション内のグ
ループの代りに記憶される。単一のジョブは、定数分数
が1である単一のメンバーをもつ同期グループとして扱
われる。
ら成るか又は折畳みにより新規作成された1つの単一ジ
ョブから成るかに関わらず、グループがいつでも実行で
きる状態となった時点で、グループのタグは記録され、
ジョブの実行が始まる。グループ内の1つのジョブが完
了した時点でそのジョブはJEPのジョブのデータベー
ス25から削除され、グループ内の次のジョブが開始さ
れる。グループの実行の途中でトランザクションをコミ
ットすること(例えばトランザクションの持続時間を制
限するため)が必要となった場合には、JEPは、グル
ープのタグならびに実行中のジョブに対するポインタを
記録することになる。コミットの間にクラッシュが発生
した場合、グループの残りのジョブは、その他のあらゆ
るジョブの前に実行されることになる。グループの全て
のジョブが完了した後、任意のソケット接続を介した次
の入ジョブが処理される。
たジョブのための連続するID番号を使用すること、か
つ、削除がジョブの伝送と同じ順序で起こることから、
JEPは、各メッセージが1ブロックのジョブの削除を
要求している複数の削除メッセージの一部分のみを安全
に伝送することができる。JCPは、ジョブ削除メッセ
ージを受信した時点で、伝送されたID以下のIDをも
つ全てのジョブを(上述のようなラップ演算を用いて)
削除する。ジョブ削除メッセージの数を低減させるため
には、JEPは、削除メッセージのIDが予め定められ
た数の倍数(例えば1000)と交差する場合又は削除
が予め定められたもの以上の長さの時間(例えば10
秒)だけ前に起こりその時間内にJCPから(又はいず
れかのJCPから)いかなる新しいジョブも到着しなか
った場合のいずれかの場合にのみ、JCPに対し削除メ
ッセージを伝送する。
ジョブがJEP故障からの回復時点で各々のJCP/J
EP対について再度伝送されなくてはならなくなる。後
者の条件がある場合、JCPは、新しいジョブが全く到
着しないときでさえ、そのジョブデータベース26内の
完了したジョブを周期的に削除することができる。後者
の条件における時間の長さは、回復オーバヘッド、削除
オーバヘッド及び伝送コストの間の妥協である。時間が
短かくなればなるほどJCPは完了したジョブをより頻
繁に削除でき、従ってJEP故障の場合にさらに少ない
ジョブが再伝送されることになる。しかしながら、後者
の条件下で時間的限界を10秒より短くすることは、J
CPが実行しなければならなくなる削除トランザクショ
ンの数を増大させることになるため、恐らくやりがいの
ないことである。著しく小さい値では、JCPのジョブ
データベース26内でジョブの削除を扱うCPU時間が
わずかしか無駄にならなくなる。より大きい値が使用さ
れる場合、多数の新しいジョブが最終的に到着した時点
でJCPがそのアイドル時間を浪費してしまっているか
もしれず、そのときたとえ新しいジョブが準備完了して
いてもジョブの削除を実行するのに時間を費やさなくて
はならなくなるという不利な状況が発生する可能性があ
る。
れていないジョブJのライフサイクルを考えてみる:す
なわちいくつかの時点でJCP#1がジョブJを新規作
成すると想定する。ジョブJは、それがコンテンション
スペース#2内のデータを操作することから、コンテン
ションスペース#2で実行するように割当てされる。コ
ンテンションスペース#2がJEP#2の制御下にあ
り、ジョブJには、JCP#1からJEP#2に送られ
た先行ジョブのID番号より1つ大きい一意的ID番号
123が割当てられると仮定する。
をコミットした時点で、ジョブJのコピーがJCP#1
のジョブのデータベース26に書込まれることになる。
JCP#1の現行のID番号も同様に同じトランザクシ
ョン内で書き込まれることになる。トランザクションが
コミットされた直後に、Jは一連のバイトへと変換さ
れ、JEP#2行きのその他のジョブと共にバッファ内
に書込まれる。そのバッファが満杯になったとき、バッ
ファ内の全てのジョブは、JEP#2へと1つのパケッ
ト内で送られる。
〜JEP#2ソケット接続からパケットを受信する。パ
ケットは、1連のバイトから1連のジョブへと変換さ
れ、有効にJ及びその他のジョブを再構成する。ジョブ
はRAM内のキューへと移動させられ、ここでこれらは
その他のソケットから到着するその他のジョブとインタ
ーリーブされる。インターリービングは、JCP#1か
ら来るジョブの相対的順序を保存する。
すると想定しよう。JEP#2が再ブートされ、ソケッ
ト接続は再確立される。JCP#1からの接続が再確立
された時点で、JCP#1は、Jのコピーを含め、その
ジョブデータベース26内の全てのジョブを再伝送す
る。Jの前に着いたジョブの一部はJEP#2により完
了するまですでに実行されてしまっているかもしれな
い。これらのジョブは、JCP#1によりとにかく伝送
されるが、JEP#2はそれらを無視する。JEP#2
は、ジョブのIDが、ジョブ#2がそのジョブデータベ
ース25内に記憶した、現在完了しているジョブID以
下であるとき、そのジョブを無視することを知る。Jが
JEP#2により再度受信された時点で、それは、JC
P#1を起点とするその他のジョブとの関係においてジ
ョブID順序でキュー内に置かれる。
ューから除去し、それを実行する。JEP#2は、今J
CP#1からのジョブ123(すなわちジョブJ)を実
行したことを表わすRAM計数器を増分する。RAM計
数器は1つのトランザクション中に何回も増分され得る
ことから、同じトランザクション中でJの前及びその後
に数多くのジョブを実行することができる。
で、RAM計数器の現行値が、BDUオブジェクト内の
変更と合わせて、ジョブデータベース25に書込まれ
る。この動作により、各ジョブがBDUに正確に1回影
響を与えることが保証される。すなわち、Jが1つのオ
ブジェクト内で計数器を増分した場合、計数器は、Jの
ために1回だけ増分されることになる。
後、JCP#1からの現在完了したジョブ番号を表わす
JEP#2のRAM計数器は1005に到達し、これ
は、削除メッセージを送るのに必要とされる1000と
いう値よりも大きい。新しい計数器値はこのときジョブ
削除メッセージ内でJCP#1に伝送し戻されることに
なる。
メッセージを受信した時点で、(以上で記述したラップ
演算を用いて)1005以下のIDをもつそのデータベ
ース内の全てのジョブを削除する。JのIDは、100
5以下のものである123であるため、それは削除され
ることになる。この時点で約1000以上のジョブが削
除されつつあること、そしてそれらのうちの多くが当初
単一のトランザクション内で書き出されていたことか
ら、削除には標準的に非常にわずかなジョブデータベー
ス26のページをディスクに書き戻すことしか必要とし
ない。このトランザクションがひとたびコミットする
と、いずれのデータベース内にも又はいずれのプロセッ
サのメモリー内にもJの痕跡はもはや何もなくなる。
唯一のネットワーク通信は、JCP#1からJEP#2
へのジョブの伝送及びJEP#2からJCP#1への削
除メッセージの伝送であった。JEP#2が最初の伝送
の後に破損したことだけを理由として、ジョブJの伝送
はこの例において2回起こった。削除メッセージは、1
つのパケットで約1000のジョブを一掃した。
ることにより、ネットワーク通信量を減少させることが
できる。例えば、単純な圧縮スキームとしては、ジョブ
のサイズを低減させるものが考えられる。ジョブは1つ
のオブジェクトであり、そして各々のオブジェクトはそ
のオブジェクトの構造及び挙動を定義するあるクラスの
インスタンスであることから、我々はジョブをクラス
「ジョブ」の異なるサブクラスのインスタンスとして定
義づけすることができる。ジョブは、クラス「住所」又
はクラス「人物」のインスタンスを更新するために新規
作成することができる。従って、ジョブクラスは、その
タスクが1つのオブジェクトクラスに向かって導かれて
いるジョブを内含する。JCPが最初に1つのジョブク
ラスのインスタンスをバイトへと符号化した時点で、そ
のクラスの名前は、ジョブオブジェクトの符号化と共に
伝送される。このとき、このクラスは遭遇したクラスの
リストに付加され、一意的番号が与えられる。このクラ
スのインスタンスが次に伝送される時には、このクラス
の一意的番号が代りに伝送される。こうして、圧縮スキ
ームは、ジョブの伝送オーバーヘッドを有効に低減させ
る。
がOIDソーティングと呼ぶ技術を使用することができ
る。この技術では、ジョブが実行されるトランザクショ
ンの開始時点で、全ての利用可能なジョブはまず最初
に、そのジョブによって修正されることになるオブジェ
クトがある場合その一意的オブジェクト識別子によりソ
ートされる。1つのジョブを実行することによって多数
のオブジェクトを修正できる場合には、任意に1つを選
択することができる。1つのジョブが1つのオブジェク
トを新規作成する場合には、新規オブジェクトを含むこ
とになるコンテナの識別子がソーティングのために使用
される。このとき、ジョブの実行はこのリストを通して
順番に進行する。
ザクション内で完全に実行されない可能性があるため、
我々は、万一故障が発生した場合に、回復中に残りのジ
ョブを再構築するためにオブジェクト内に充分な情報を
記録しなければならない。この情報には、各々のジョブ
ソースについて、リスト内のジョブの最初と最後のid
番号が含まれる(ジョブには、そのジョブがそこから及
びそこへと伝送されるJCP/JEP対に関してのみ一
意的id番号が割当てられる)。こうして我々は、回復
時点で正確に同じジョブリストを再構築することになる
が、我々もまた1つのトランザクションをコミットする
場合に常にこれらのジョブのうちのどれだけが実際に実
行されたかを記録しなければならない。その情報は、故
障からの完璧な回復を可能にする。故障したJEPの回
復中、我々は、故障時点で実行中であったジョブのソー
トされたリストに参与するジョブを各JCPが少なくと
も再伝送するのを待たなくてはならない。
た時点で、次に、実行されたジョブを提供した各JCP
に対して、ジョブ削除メッセージを送ることができる。
我々がリスト内のどこにいるかを告げる持続計数器がリ
ストの出発点ではなく終点との関係におけるものである
限りにおいて、この時点以前に削除メッセージを送るこ
ともなお合理的である。そうでなければ、リスト内の早
期ジョブの一部が削除された時点で、これらが回復時に
JEPに対し再送されることはない。
一意的オブジェクト識別子によりジョブをソートするこ
とには、いくつかの理由がある:すなわち、オブジェク
ト識別子は、互いに数値的に近いオブジェクト識別子が
互いに物理的にさらに近いオブジェクトを表わすことに
なるように1つのオブジェクトの物理的場所を符号化す
ることから、トランザクション1回につきデータベース
からのさらに少ないページしか検査/書込みされる必要
がなくなる可能性があるからである。同じページへの多
数の書込みが、単一の物理的書込みへと合わせて集約さ
れることになる。トランザクション1回につきロックさ
れる必要があるコンテナの数は少なくなるかもしれな
い。オブジェクト識別子の高いビットはコンテナを特定
し、低いビットはそのコンテナ内のオブジェクトを特定
する。コミット時に書込まれるページは、ディスク上で
強い物理的近接性をもち、従ってシーク時間は短縮され
ることになる。
必ず生成されるようにするため、ソーティング規準は一
貫してタイを中断しなくてはならない。こうして、更新
されつつあるオブジェクトのオブジェクト識別子を考慮
した後、発信JCP#及びジョブのid番号に基づいて
さらにソートすることによってタイが中断されなくては
ならない。この値の対は一意的であることが保証され、
タイをはっきりと(任意に)中断するのに充分なもので
ある。
潜在的に多くの作業を必要とする(例えば後述のように
オブジェクトを再インデクシングすること)可能性があ
ることから、できればこの状況を避けたいと考えるかも
しれない。従って1つのジョブの実行が求められた時点
で、このジョブは、同じオブジェクトに影響を与えるジ
ョブのリストを検査することができる(これらのジョブ
は、ソートされたリスト中で現行ジョブの後にくる)。
このとき、これらのジョブによって表わされた変更は、
一緒に単一の更新オペレーションの形に折畳みされ得、
このオペレーションは、我々の例では、この変更セット
について再インデクシングが一度だけ起こることを可能
にする。ジョブは、矛盾する変更を実行する順序を識別
するため、該当する場合、タイムスタンプを指示するこ
とができる。
を、順序づけする以外に、ジョブがいかに緊急に完了さ
れなくてはならないかに基づいてジョブでの優先順を定
めたい場合があるかもしれない。バッチジョブを完了さ
せることに緊急性はないかもしれないが、ユーザーによ
って直接トリガーされるオブジェクト更新ジョブはおそ
らく、できる限り早く実行すべきである。このニーズを
支援する基本的機構がいくつか存在する。
スキームにおいては、各ジョブには1つの時刻が結びつ
けられている。ジョブがこの時刻までに完了しているこ
とが強く望まれる。残念なことに、これはOIDソーテ
ィングと干渉する。この矛盾を解決するために、以下の
アルゴリズムが使用される。任意の時点で、JEPは、
満了時間によってソートされたジョブのヒープを有す
る。ジョブ実行プロセスは、このヒープの最上要素を参
照する。これは、我々が一時的に過負荷状態にある場合
には、過去にあると考えられる最も早いデッドラインを
もつジョブである。5秒より多く未来にあるジョブをポ
ップしたか又は全てのジョブをポップしたかのいずれか
が先に起こる時点まで、ジョブがヒープからポップされ
る。このとき、我々はこれらのジョブのOID順にソー
トし、1回のトランザクション内でこれらをできるかぎ
り多く実行させようと試みる。単一のトランザクション
内でそれら全ての実行が終了しなかった場合(例えば、
そのトランザクション内で10秒より長く経過し、10
秒が構成上最長のトランザクション時間であるため)、
我々は、トランザクションをコミットし、次のトランザ
クションでこれらのジョブの実行を続ける。
処するためには、同期化されたジョブについて既に記述
した解決法を参照する。1つの同期化されたジョブは、
コピーがそのJEPのデータベースにコミットされた時
点で、「対処された」とみなされる。この時点で(又は
その後一時置いた時点で)、JCPがそのジョブのその
コピーを削除できることを表示するメッセージでJCP
に対し送り戻される。OIDソーティングされた実行
(すなわちジョブid順にない実行)を支持するため
に、全ジョブのコピーを、ただ同期化されたものでな
く、JEPのデータベースにコミットする必要がある。
1内のBDU22は、数百万個のオブジェクトを含むこ
とができる。BDU内で1つのオブジェクトの位置を特
定するため、その場所又はその他の属性を含むそのオブ
ジェクトについて情報が記憶され、並行(同時)処理環
境内で効率良くアクセスするために配置されている。
1の場合にはBDUオブジェクトの各々は、あるタイプ
の保険証券の下で保険を担保されている人物についての
記録を表わすかもしれない。このタイプの保険証券の特
長に変更がある場合、保険代理店はこのタイプの保険証
券の下で保険を担保されている人々全ての位置を特定
し、彼らにその変更について通知することを望む可能性
がある。この人々の位置を効率良く特定するため、予め
ソートされたエンティティを含むファイルを使用するこ
とができる。予めソートされたエントリの各々は、1人
の人物のオブジェクト及びその人物を識別する上で不可
欠なその他の情報に対するポインタを内含する。例え
ば、保険代理店は、最後の名前によって予めソートされ
た一定の与えられたタイプの保険証券の下で保険にかか
っている全ての人物についてのエントリをもつフイァル
を使用することができる。
は更新された時点で、ファイル内の対応するエントリは
更新されなければならない。オブジェクトを新規作成
し、削除し又は更新する全てのジョブが確実に一貫して
対応する予めソートされたエントリを修正することにな
るようにするためには、ジョブは、ファイル、予めソー
トされたエントリ及びオブジェクトに対し必要な変更を
行なうため共通の機構及び共通の書式に合意しなくては
ならない。ファイル及び予めソートされたエントリの書
式は、望ましいオブジェクトの探索及び位置特定を容易
にするように設計されており、従って、予めソートされ
たエントリ内の情報の書式又はレイアウトは標準的にフ
ァイル内のその他のエントリと同じである。
トするために、オブジェクトのどの属性が使用される
か、エントリ内にどの情報が表示されるか及び1つのオ
ブジェクト内の変更がいかにエントリへと伝搬すべきか
を予め定義づけする。我々が共通機構と呼んでいるの
は、非同期インデックスマネージャ(AIM)であり、
ファイルとはインデックスであり、予めソートされたエ
ントリとはインデックスエントリである。
セスを可能にするデータベースシステムにおいては、ア
クセスの矛盾を回避しながらインデックスの無欠性を維
持することが非常に重要である。AIMは、インデック
スをいかに構造化し維持すべきかを定義する。インデッ
クス内の変更を実行するタスクは、USPによってスケ
ジュールされたジョブによって実施される。例えば、1
つのオブジェクトが付加又は削除された時点で、該当す
るインデックス内の対応するインデックスエントリを付
加又は削除するべく新しいジョブが産生される。同様に
して、1つのオブジェクトを更新することがインデック
スエントリの精度に対し効果をもつ場合、影響を受けた
インデックスエントリを含む該当するインデックスを更
新するべく、ジョブが産生される。
置を特定するため図書館で使用されるカードカタログに
似ている。カードカタログは、各々1冊の書籍について
の情報を含むインデックスカードを保持している。情報
には書籍の簡単な要約ならびに、図書館内で書籍の位置
を特定するのにカードカタログユーザーにとって必要な
その他のデータが含まれている可能性がある。
多数の規準のうちのいずれか1つによって探索され得、
書籍を表わすインデックスカードは、効率を良くするた
め探索規準によって分類される。一定の与えられたカタ
ログは標準的には同じタイプの事物のコレクションのた
めの情報を保持している。例えば、一つの書籍カタロ
グ、定期刊行物カタログ又は音響媒体(テープ又はC
D)カタログも存在し得る。カタログ内の全てのインデ
ックスカードは、いかに情報が組織されているかに関し
て同じレイアウトを有する。例えば、書籍の題名は全て
のインデックスカードの最上部にあり、著者名は題名の
下にある。
ために使用されるインデックスは、概念的にカードカタ
ログに類似している。インデックスは、各々1つのオブ
ジェクト(書籍)の小さな要約を含むインデックスエン
トリー(インデックスカード)のコレクションを内含し
ている。1つのインデックス内で識別されたオブジェク
トは同じタイプのもの、すなわちオブジェクト指向の専
門用語では同じクラスのものである。インデックス内の
インデックスエントリは、同じデータ構造を有する。イ
ンデックスエントリは、インデックスの意図されたアク
セスパターン及びサイズに応じて、予め規定されたキー
によってソーティング又はハッシングされ得る。
ストレータによって定義されうるキー及び非キー属性を
有する。キー属性は、インデックスエントリをソーティ
ング又はハッシングするために使用され、非キー属性
は、キー属性と合わせてインデックスエントリ内に表示
される。非キー属性の表示は、インデックスのユーザー
がBDUからオブジェクトを検索する必要なくオブジェ
クトについてのある種の予め規定された情報を一覧でき
るようにする。図書館の例では、ISBNによってソー
トされたインデックスカードは、書籍の題名及び著者を
内含する情報を含み得る。
る。データベース内の全ての人物は、そのインデックス
が、キー属性SSNによりソートされたそれぞれのイン
デックスエントリにより表わされる人物オブジェクトの
1クラスを含んでいることを意味するPerson−SSNと
呼ばれるインデックス内に対応する1つのインデックス
エントリ40を有する。インデックスの各々のインデッ
クスエントリはSSN、人物の氏名及び、それ自体人物
の名前についてのより多くの情報を含む名前オブジェク
ト42を指す人物オブジェクト41に対するポインタを
含有する。
ディスク上及びメモリ内に記憶され得る。メモリ内にイ
ンデックスのコピーを記憶することによってインデック
スアクセス時間を短縮し、従ってオブジェクトの位置を
特定する処理速度を高めることができる。メモリ内のイ
ンデックスのコピーは、メモリー常駐(すなわちRAM
常駐)探索構造(例えば2分探索樹又はハッシュテーブ
ル)として実施される。ユーザーがBDUオブジェクト
を更新するための要求を提出すると、結果としての更新
ジョブは、BDUオブジェクトを更新するのみならず、
付随するインデックスをも更新する。探索構造は、ディ
スク上のインデックス及びBDUにおける変更について
ロックステップで更新されなくてはならない。各々のイ
ンデックス更新は、BDUオブジェクトを更新するジョ
ブを実行したことの結果であることから、ジョブには、
ディスク上のインデックス及びBDUオブジェクトと探
索構造の一貫性を維持する付加的な責任が与えられる。
JEPが故障している場合、回復時点でJEPは、BD
Uを走査することによってメモリ内の探索構造を再構築
する。
コミットされるまで反映されないことから、BDUオブ
ジェクトに対する修正が、修正要求の送信直後に起こら
ない可能性がある。しかしながら、メモリ探索構造に対
する修正は直ちに起こる。ユーザーが、BDUにコミッ
トされなかったオブジェクトについての情報に対する問
合せを提出した場合、そのオブジェクトの位置は特定さ
れ得ない。このようなコミットされていないオブジェク
トについては、オブジェクト識別子(OID)が割当て
されなかった可能性がある。このような場合には、ユー
ザーは単に、問合せの結果を廃棄することができる。デ
ータベース内の更新が探索構造内の更新より後ろに遅れ
る可能性があるという状況は時として、標準的データベ
ースシステム内で発生し得る。オブジェクトが標準的デ
ータベースシステムにまだ書込まれていなかったなら
ば、そのオブジェクトを発見することはできない。この
状況に対処する代替的スキームは、1つのジョブを実行
しているときに直ちに探索構造を変更せず、むしろ変更
を蓄積してそれらを1つのトランザクションがコミット
された直後に適用することである。
つのオブジェクトクラスのためのインデックスを定義で
きるようにするクラスエディタ50と呼ばれるユーザー
インタフェースである。一般に、1つのオブジェクト
は、人物タイプ又は製品タイプといったオブジェクトタ
イプによってカテゴリに分類できる。1つのオブジェク
トタイプは多数のクラスを含むことができる;すなわち
例えば、車両保険会社は、その被保険者を、総合保険担
保範囲をもつ人々及び責任保険担保範囲をもつ人々に分
類することができる。各々のクラスは、少なくとも1つ
の対応するインデックスを有している。各インデックス
は、クラスエディタから編集できるキー属性及び非キー
属性を有している。
ストレータが自ら新規作成又は編集するインデックスに
ついてのキー51を選択し、インデックスエントリ内に
記憶することを望む非キー属性52を選択することを可
能にする。図7においては、編集されつつあるインデッ
クスは、Test::Personのクラス53を含んでいる。イン
デックスのキーはSSNであり、インデックスの各々の
インデックスエントリはSSNについての情報、人物の
住所、人物の住所に対応する郵便番号(図示せず)を内
含している。
性があることから、この人物を複数の郵便番号に結びつ
けることができる。同じ郵便番号をもつ全ての人物の位
置を特定する上での効率を考えると、この郵便番号がイ
ンデックス内のキーである場合、多数の住所をもつ人物
については、住所1つに1つずつの多数のインデックス
エントリが新規作成される。
見い出すためには、システムアドミニストレータは、イ
ンデックスの定義を含むスキーマを編集し表示するべく
オブジェクトスキーマウインドウを開くことができる。
図7は、オブジェクトクラス(61、62及び63)及
びそれらの付随するインデックス及び属性の定義を表示
するオブジェクトスキーマウインドウ60を示してい
る。このスキーマは、データベース内のオブジェクトの
ためのクラスのレイアウトを含有している。各クラスの
レイアウトは、属性及び関係に関してそのクラスのイン
スタンスの物理的構造を記述している。さらにこのスキ
ーマは、データベース及びプロセッサ間でオブジェクト
をコンテンションなくいかに分散させるか、データベー
ス内にロードすべき入力ファイルをいかにして構文解析
するか、そして、多数のソースからのデータをいかに統
合するかを記述している。
が関与するタスクについての要求がUSPに到着する毎
に常に、その要求について作用する1つ以上のジョブを
新規作成するべくJCP350に対して要求が送られ
る。JCPは、そのオブジェクトクラスについてどのイ
ンデックスが定義されるかそしてそのインデックスのた
めのキーはどれかを見い出すためにスキーマ内の情報を
使用する。その後、JCP350は、インデックスエン
トリの付加、削除及び更新といったようなインデックス
に対する必要な変更を見極め、インデックスを更新しタ
スクを完成させるために新規作成される必要のあるジョ
ブのシーケンスを決定する。要求された各々の動作は、
オブジェクト及びそのそれぞれのインデックスエントリ
が修正される順序について異なる必要条件を有する。こ
の必要条件は、インデックスの無欠性を維持するため、
厳守されなくてはならない。
インデックス修正プロセスの一例を示している。ファイ
ル70は、BDU22内のオブジェクトの付加610、
削除630及び更新650を必要とする可能性がある。
例えば、ファイル70は、保険会社が取得したばかりの
新しい部門の顧客記録を含んでいるかもしれない。取得
した顧客記録は、既存の顧客についての複写された情報
又はより最新の情報を含んでいてもよいし、あるいは又
新しい顧客についての情報を含んでいてもよい。既存の
顧客記録と取得した顧客記録を統合するためには、顧客
記録を表わすBDUオブジェクトを付加、削除及び更新
するべくジョブが新規作成される。新規作成されるジョ
ブ及びそれらが行なわれなくてはならない順序の一例と
して、1つのオブジェクトを削除するとき(630)、
オブジェクトとそのインデックスエントリの間のリンク
をまず最初に削除しなければならない(631)。この
とき、オブジェクトを参照する全てのインデックスエン
トリを削除するためにジョブが生成される(632、6
33)。インデックスエントリが削除された後、オブジ
ェクトを削除するためにもう1つのジョブが産生される
(634、635)。インデックスエントリはオブジェ
クトが削除される前に削除されなくてはならない:そう
でなければ、もう1つのプロセスではオブジェクトが削
除されてしまっている一方でオブジェクトにアクセスす
るべくインデックスエントリの1つを使用することが可
能である。
うないくつかの実施においては、オブジェクトに対する
ポインタが再度使用される。オブジェクトに対するポイ
ンタは、オブジェクト識別子(OID)と呼ばれ、オブ
ジェクトのデータベース、コンテナ、ページ番号及び記
憶装置内のページスロットを特定する4つの16ビット
の正負符号のついていない整数を内含する。削除された
オブジェクトのインデックスエントリは、削除されたオ
ブジェクトのOIDを内含するが、このOIDは、削除
されたオブジェクトと同じデータベース、コンテナ及び
記録場所に付加されるもう1つのオブジェクトに再度割
当てられた可能性がある。従って、1つのオブジェクト
がそのインデックスエントリの前に削除された場合、2
つの誤り条件のうちの一方、すなわち、プロセスが既存
でないオブジェクトをアクセスしようと試みるか又はプ
ロセスが誤ったオブジェクトを参照するといういずれか
の条件が発生しうる。
リを削除する上でのコンテンションを避けるため、オブ
ジェクトの削除を実施するジョブがUSPによりスケジ
ュールされる。これらのジョブは、いくつかのコンテン
ションスペース全体にわたり分散させられていてよい。
各々のジョブでは、その完了を表示するもう1つの「応
答」ジョブが産生させられる。応答ジョブは同期化さ
れ、オブジェクトが存在するコンテンションスペース内
にロードされる。全ての応答ジョブが実行セル内に到着
した時(定足数の完了によって見極められるように)、
全ての応答ジョブは、そのオブジェクトを削除する単一
のジョブへと折畳みされる。
ップの順序決定は、削除の逆である。1つのオブジェク
トを付加する場合(610)、そのオブジェクトは、い
ずれかのインデックスエントリがそれを参照できるよう
になる前に新規作成されなくてはならない。1つのオブ
ジェクトが新規作成され(611、612)、持続メモ
リ内に記憶される場合、各々1つのインデックスエント
リを新規作成し(614、615)、各々が1つの該当
するコンテンションスペース内で実行される「インサー
ト」ジョブが産生される(613)。ここでこれらのジ
ョブがオブジェクト新規作成と同じトランザクション内
で新規作成されるという点に留意されたい。そうでなけ
れば、このオブジェクトは、故障が発生した場合に、対
応するジョブがないまま記憶された状態で終了してしま
う可能性がある。次にオブジェクトとそのインデックス
エントリの間でリンクを確立するためにジョブが新規作
成される(617)。
はそのオブジェクトのインデックスエントリのいずれか
に対しいかなる効果ももたない可能性がある。例えば、
1人の人物の色の好みはその人物のオブジェクト内に記
憶されているもののインデックスエントリのいずれの中
にも記憶されない可能性がある。このような状況下で
は、インデックスエントリのためにいかなる更新も必要
とされない。その他の例においては、更新には、インデ
ックスエントリが更新されるか又は削除されることが必
要となるかもしれないし、あるいは又新しいインデック
スエントリを新規作成することが必要となるかもしれな
い。例えば、一人の人物の住所が変更され、住所がその
人物のインデックスエントリ内に記憶された情報の一部
である場合、インデックスエントリは更新されなくては
ならない。その人物がもう1つの郵送部域内でもう1つ
の家を購入し、郵便番号によりインデックスが打鍵され
た(すなわちソートされた)場合、その人物の新しい家
の住所を含む新しいインデックスエントリが挿入される
必要がある。
おいて、JCP350は、そのインデックスエントリの
いずれかを更新する前にオブジェクトを更新するべくジ
ョブを新規作成する(650、651)。人物の住所を
更新する例においては、インデックスエントリはそれが
更新される前の旧住所を含んでいるものの、その人物の
オブジェクトを指すインデックスエントリの中に含まれ
たOIDはなおも現行状態にある。従って、更新された
オブジェクトはなおも、旧インデックスエントリを用い
ることによってその位置を特定することができる。1つ
のオブジェクトを更新した時点で、JCP350は計算
して、更新後に存在するはずのインデックスエントリの
リストを作成する。次にこのリストは、どの再インデク
シングジョブを実行する必要があるのか、すなわちどの
インデックスエントリが更新され(652)、新規作成
され(654)、削除され(653)又は未変更にとど
まるべきかを見極めるため、オブジェクトに添付された
インデックスの現行リストと比較される。
(653)場合には、それをまずオブジェクトから接続
解除し、その後JCP350がインデックスエントリを
削除するべくジョブを新規作成する。このジョブは、完
了を表わす応答ジョブをオブジェクトまで送り戻す。こ
の応答ジョブは、以下で記述するウエイトフリーアルゴ
リズムのために必要である。インデックスエントリを付
加すべきである場合、JCP350は、適切なコンテン
ションスペース内でインデックスエントリを新規作成す
るのに充分な情報を含むジョブを新規作成し、次に応答
ジョブを、オブジェクトまで送り戻して新規作成された
インデックスエントリを表示する。インデックスエント
リを更新するべきである場合、JCP350は、既存の
インデックスエントリを更新するのに充分な情報を含む
ジョブを新規作成し、その後応答ジョブを完了を表示す
るオブジェクトへと送り戻す。インデックスエントリが
未変更のままとどまるべきである場合、行なうべきこと
は何もない。
る変更が起こるとき(すなわちインデックスエントリが
全てオブジェクトと一致させられる前に発生する変
更)、再インデクシングジョブが正しく作動するように
するためには、ウエイトフリーアルゴリズムが用いられ
る。以下で記述するように、ウエイトフリーアルゴリズ
ムは、オブジェクトが未処理ジョブを有する間1つのオ
ブジェクト内の変更を許容し、さらに全ての再インデク
シングジョブの間のコンテンションを回避する。オブジ
ェクトは、インデックスエントリ更新オペレーションの
ために2ビットのフィールドすなわち、再インデクシン
グインジケータ及びpleaseReindexインジケータを予約
する。再インデクシングインジケータは、応答ジョブを
まだ送り戻していない未処理再インデクシングジョブが
存在することを表示する。pleaseReindexインジケータ
は、その再インデクシングジョブが完了する前にオブジ
ェクトが変更されたことを表示する。個別の再インデク
シングジョブからの応答は同期化される。この同期化に
より、全ての応答がそのオブジェクトの対応する実行セ
ル内に存在するとき、全ての再インデクシング応答が単
一のジョブの形に折畳みすることが可能となる。単一ジ
ョブは、オブジェクトに添付されたインデックスエント
リのリストを更新する。更新の直後に、オブジェクトの
pleaseReindexインジケータは検査される。インジケー
タがセットされる場合は、それは、オブジェクトが終了
したばかりの再インデクシングの間に変化したことを表
示する。新しい変更によるもう1つの再インデクシング
オペレーションが直ちに開始することになる。
は再インデクシングオペレーション中に到着する可能性
がある。オブジェクト及びそのインデックスエントリに
対するあらゆる更新はオブジェクトが削除された後消滅
することから、削除要求は更新要求よりも優先される。
オブジェクトの中では付加的な確保された2ビットフィ
ールドが使用される。1つはdeleting であり、もう1
つは pleaseDeleteである。Deletingビットは、そのオ
ブジェクトが削除されつつあるか否かを表示し、please
Deleteは、オブジェクトを削除するための要求が存在す
るか否かを表示する。いずれかのビットがセットされた
時点で、pleaseReindexインジケータは無視され、その
後に続くオブジェクト更新要求も同様に無視される。
のある種の情報を読みとることのみを望む場合、問合せ
を送ることができる。問合せは、その他の大部分のジョ
ブとは異なり、オブジェクト、インデックスエントリ又
はインデックス内の変更を作り出さない。TCP/IP
ソケットを用いたUSPの実施態様においては、問合せ
は、ネットワークを介して伝送されるデータ量を減少さ
せるべく問合せジョブとして取り扱うことができる。要
求者がBDUオブジェクトの位置を特定するための問合
せを提出すると、JCPはその問合せを問合せジョブの
形へと変換し、これは次に、要求されたオブジェクトが
存在するコンテンションスペースのJEPへと送られ
る。各々の問合せジョブがIDを有し、このIDは、結
果を対応する問合せと整合させるべく発信元JCPのた
めに使用される。問合せジョブには、ネットワーク上で
送られるその他のジョブのように、シーケンス決定番号
が与えられていない。問合せジョブがJEPへの途中で
ネットワーク伝送中に失なわれた場合、問合せを再提出
するか否か(タイムアウトの後であることが考えられ
る)は、要求者次第である。失なわれた問合せの取扱い
は、ウェブブラウザ(例えばマイクロソフト社のIntern
et Explorer)を用いて広域ウェブからある会社のデー
タベースにアクセスする顧客にとって合理的なものであ
る。
対し付加する代りに、JEPがそれを受信した時点で、
異なるキューつまり問合せジョブのキューにこの問合せ
ジョブを付加することができる。通常のジョブの間、さ
らには通常のジョブのステップ間でさえ、この問合せジ
ョブのキューを検査することができる。待機中の問合せ
ジョブが存在する場合、問合せは直ちに実行され、結果
は、そのジョブのIDが添付された状態で発信元JCP
へと送り戻される。問合せジョブはBDU内のデータし
か読取らないことから、問合せがその他のジョブより先
行できるようにすることにより何らかの順序づけ上の問
題が導入されることはない。
ックスを用いるだけでなく、オブジェクトをその他の関
係するオブジェクトに連結させるリンクを用いてもその
位置が特定され得る。数多くのBDUオブジェクトは互
いに関係をもつ。例えば、ここで再び図1を参照する
と、保険会社のデータ処理センタ191は、その被保険
者のオブジェクトと製品のオブジェクトをBDU22内
に記憶することができる。被保険者であるビル(Bill)が
地震保険をかけていると想定する。これは、ビルを表わ
すオブジェクトと地震保険を表わす製品オブジェクトの
間に「所有権」関係が存在することを意味している。シ
ステムユーザーがビルの所有する製品オブジェクトの位
置を特定したいと考えた場合、1つの方法はビルのオブ
ジェクトを検索し、どの保険証券をビルが有しているか
を探し、保険製品のオブジェクトのインデックス内で地
震保険のインデックスエントリの位置を特定することに
ある。あるいは、ビルのオブジェクトと地震保険という
製品のオブジェクトの間に直接的リンクを確立すること
によって検索可能である。直接リンクを用いると、目的
とするオブジェクト(例えば保険製品オブジェクト)に
関する情報を、インデックス内を進むことなく直接検索
することができる。
ばれる。1つの関係は例えば、所有権又は親子関係であ
り得る。オブジェクト間の関係は、非同期関係マネージ
ャ(ARM)と呼ばれる機構によって構築され得る。シ
ステムアドミニストレータは、オブジェクトの特定のク
ラス間の関係を定義する必要しかなく、ARM機構に従
いクラス(すなわちオブジェクト)の対応するインスタ
ンス間の関係を構築するために自動的にジョブが新規作
成される。
テム内といったような数100万の同時アクセスを可能
にするシステムのためにはいかにして関係を構造化し維
持すべきなのかを規定する。ARMは、分散型データベ
ースを横断してオブジェクトが付加され、修正され削除
されるにつれて、関係の無欠性を保証するように環境及
び共通規則の組を提供する。
の担保を停止する決定を下した場合、ARMは、地震保
険の製品オブジェクトがデータベースから除去される前
にビルと地震保険の間の関係が自動的に削除されること
を保証する。関係の変更を実行するタスクは、高いスル
ープット及び効率を可能にするべくUSPによってスケ
ジュールされたジョブにより実施される。例えば、1つ
のオブジェクトが付加又は削除されるとき、付随する関
係を付加又は削除するべく新しいジョブが産生される。
同様にして、1つのオブジェクトを更新するのにその関
係の更新が必要とされる場合、適切な関係を更新するた
めにジョブが産生される。
BDUオブジェクトを付加し、削除し又は更新するジョ
ブであり得る。オブジェクト内の変更には、BDU内の
関連するオブジェクトが付加、削除又は更新されること
が必要となるかもしれない。付加、削除又は更新される
必要のある関連するオブジェクトは、オブジェクト間の
関係を追従することによって識別され位置特定され得
る。関連するオブジェクトがひとたび発見されると、J
EP300は、関連オブジェクトを更新するべく新しい
ジョブを産生する。
いるようなユーザーインタフェイスの中で定義され得
る。このユーザーインタフェイスは、システムアドミニ
ストレータが、例えば組織クラス61、人物クラス62
及び製品クラス63といったようなオブジェクトクラス
間の関係を付加及び削除することを可能にするスキーマ
ウインドウ60を表示する。
ラスの中の各々のオブジェクトは、もう1つのクラスの
中の対応するオブジェクトにリンクされなくてはならな
い。同様にして、JCP350によって新しいオブジェ
クトが作り出された時点で、新しいオブジェクトとその
他の既存のオブジェクトの間の新しい関係が確立されな
くてはならない。1つの関係にある既存のオブジェクト
の位置を特定するためには、JCP350は、BDU2
2中の全てのオブジェクトのためのインデックスを使用
する。スキーマ中に記憶された情報から、JCP350
は、どのインデックスを選択すべきか及びいかにして情
報がインデックス内でソートされるかを知っている。J
CPは、各々の既存のオブジェクトと新しいオブジェク
トの間の関係を確立するためもう1つのジョブを新規作
成する。
して分散させることのできるオブジェクト間の関係を確
立するためには、オブジェクトと同期オペレーションの
間のメッセージ通過を管理するために付加的なジョブ及
びオブジェクトを新規作成しなければならない。より特
定的に言うと、各クラスに1つのロールオブジェクトと
いった1組の相互接続されたロールオブジェクトとして
関係を実施することができる。図6及び図10(1)〜
(4)は、既存のオブジェクト2及びオブジェクト3と
の新たに作成されたオブジェクト1の関係を確立するた
めのプロセスを例示している。オブジェクト1、オブジ
ェクト2及びオブジェクト3は、それぞれクラス1、ク
ラス2及びクラス3のインスタンスであり、オブジェク
トは図9においてそれぞれC1、C2及びC3として示
されている。
ョブJ1によりロールオブジェクトR1が新規作成され
る(510及び620)。その後ジョブJ1at及びJ
1btが新規作成され、各々ポインタがR1を指してい
る状態で(520)、C2及びC3に対し送られる(6
22)。上添字「t」は、J1at及びJ1btが、同期
ジョブを産生するためにタグと定数分数を支持している
ことを表わしている。J1at及びJ1btはロールR2
及びR3を新規作成し(640及び660)、それぞれ
R2及びR3を結びつけるポインタをR1に送り戻す
(531、532)。
1a1s及びJ1b1sを産生し(530、642及び6
62)、それらをR1に送り戻す(643及び66
3)。上添字「s」は、J1a1s及びJ1b1sが同期
ジョブであり、そのためJ1a1 s及びJ1b1sのいず
れもその両方の実行準備完了状態となるまで実行するこ
とができない、ということを示している。実行前に、J
1a1s及びJ1b1sは、それぞれJ1a1s及びJ1
b1sが支持するR2及びR3についての情報を含む単
一のジョブの形に折畳みされる。情報は、R2及びR3
を指すポインタ(531及び532)、及び以下で記述
するC2及びC3の予め定められたキャッシュ情報を内
含する。単一のジョブはポインタを記録し、R1内に予
め定められたキャッシュ情報をキャッシュ記憶する(6
24)。
終新規作成ジョブJ2a及びJ2bを産生し、R1、R
2及びR3の情報(540)と共にそれらをR2及びR
3にそれぞれ送る(626)。R2及びR3は、その他
2つのもののポインタ(541、542、543及び5
44)を記録するためにその情報を用い、それぞれその
他2つのものについての情報をキャッシュ記憶する(6
44及び664)。そのロールがその他のロール全ての
情報を有する(680)まで、関係を1つのオブジェク
トが利用することはできない。
ザーは、関係に参加するその他のオブジェクトについて
のある種の情報と共に、1つのオブジェクトの関係全て
を表示させたいと考えるかもしれない。情報を表示する
性能を増大させるため、オブジェクトのロールは、その
オブジェクトが関係をもつその他のオブジェクトについ
ての情報をキャッシュ記憶する。例えば、一人の人物
は、通常多数のデータベースを横断して分散されている
その他の人々、製品及び組織に対する数多くの関係を有
するかもしれない。多数のデータベースを横断して分散
したオブジェクトについての情報を検索するのは、効率
が良くない。従って、ロールオブジェクトは、その関係
内のその他のオブジェクトからの情報をキャッシュ記憶
する。
ブジェクト内にキャッシュ記憶されるべきキャッシュ変
数をユーザーが選択できるようにするユーザーインタフ
ェース80を例示している。ユーザーは、最上部に「Da
ta」としてラベルづけされた列81内の属性をマーキン
グすることによってキャッシュ変数を表示することがで
きる。1つのオブジェクトの全ての関係の要約から、そ
の関係内にあるその他のオブジェクトについてのキャッ
シュ記憶された情報を含め、リスト内に迅速に表示され
得る。
トが修正された時点で増大するバージョン番号を有す
る。オブジェクトのバージョン番号が変更された時点
で、その他のロール内にキャッシュ記憶されたオブジェ
クトの値を相応して更新できるようにそのオブジェクト
の関係のその他のロールに対して1つのメッセージが送
られる。バージョン番号は、65536バージョン毎に
0に回帰する。
シュ記憶したその他のロールすべてのバージョン及び各
々の他のロールについて欠けているバージョンの数も追
跡する。ネットワーク上での伝送中に可変的長さの時間
だけバージョン番号を含むメッセージを遅延させ、この
ようにして、順序外受信をひき起こすことができること
から、バージョンが欠如していることもある。各々のそ
の他のロールについての欠如しているバージョン番号の
数は、いくつの未処理メッセージがそのロールからなお
受信される予定であるかを表示する。ロールは、未処理
メッセージがまもなく到着する場合、自らを削除したい
と考えないかもしれない。
めに、ロールは受信した新しいバージョン番号をとり、
現行バージョン番号を減算する。差から1を引いたもの
が、欠如しているバージョンの数を表わす現合計に加算
される。現行バージョンより少ないバージョンが受信さ
れた時点で、現行バージョンと受信バージョンの間の差
が計算され、欠如バージョンの現合計が1だけ減分され
る。例えば、現行バージョンが6でありバージョン10
が到着した場合、我々は10−6−1=3バージョンが
なおも予想されているという事実を記録する(7、8、
9)。バージョン10が到着した後、旧バージョン8を
受信することはすなわち、なお2つの旧バージョンが通
過状態で存在することを意味する(7及び9)。
更新されたことの結果として、1つの関係を削除するこ
とが可能である。もはや必要でないことを理由として関
係を削除することも同様に可能である。オブジェクトの
間で1つの関係が削除される場合、関係削除のための1
つのアルゴリズムが、その関係内の異なるオブジェクト
から同時に削除要求が存在する場合でさえもその削除の
適正さを保証する。このアルゴリズムは、たとえUSP
がメッセージの到着順を保証しなくても物理的に削除さ
れてしまったロールについてメッセージが到着すること
は決してないことを保証する。
のロールの1つにそのロールの関係を削除するよう告げ
た時点で開始する。このロールはイニシエータと呼ばれ
る。スキーマ定義時点で、関係のロールクラスの1つ
は、コーディネータロールとして任意に選択される。コ
ーディネータは、イニシエータとなることが許されてい
る。
ングされている場合、それは、削除がすでに進行中であ
り関係が場合によって削除されることになることを表わ
している。こうして、イニシエータは何もしない。ある
いは、イニシエータが削除のためマーキングされていな
い場合、それは削除のため自らマーキングし、メッセー
ジ1をコーディネータロールに送る。イニシエータの最
終バージョン番号は、メッセージ1内で中ほどへと入
る。バージョン番号は、ロールキャッシュ更新要求を順
序づけするために用いられる(すなわち1つのオブジェ
クトが変わるとき、そのオブジェクトのロールとの関係
に参加する全てのロールは新しい情報でそのキャッシュ
を更新するよう要請される)。イニシエータロールは、
削除のためにマーキングされているため、イニシエータ
ロールのオブジェクトに対するその後の変更を無視し、
その他のロールに変更メッセージを送らない。
時点で、計数器を増分させて、どれほどの隣接ロールが
削除済みとしてマーキングされたかを表示する。これが
このようなメッセージの最初のものであった場合、メッ
セージ2が各ロールに対し送られる。
点で、削除フラグが検査される。ロールが既に削除につ
いてマーキングされている場合、それはすなわちメッセ
ージ1が既にこのロールからコーディネータまで送られ
たことを意味する。従って、ロールは単に、メッセージ
2が到着したことを記録し、いかなる応答も送らない。
そうでなければ、ロールはそれ自体削除されたものとし
て自らにマーキングし、メッセージ1をコーディネータ
に送ってこのことを表示する。
は、コーディネータが各ロールから正確に1つのメッセ
ージ1を受信し、ロールが削除済みとマーキングされた
後に初めてこのメッセージを受信することになるよう保
証している。このことは、たとえ、各々が関係の削除を
トリガーしようとしている多数のイニシエータが存在す
る場合にさえ言えることである。
ジ1を受理したことから)全てのロールが削除済みとし
てマーキングされたことをコーディネータ内の計数器が
表示した時点で、コーディネータは、各ロールに対し、
それを物理的に削除するのが安全であることを表示する
メッセージ3を送る。
からロールに送られる最後のメッセージである。各々の
ロールはこれに先立ち既に削除済みとマーキングされて
いるため、これらはまた互いにキャッシュ更新メッセー
ジを送ることをやめている。しかしながら、ずいぶん前
に送られしかもまだ到着していない(USPがメッセー
ジの順序付けを保証しないことを理由として)メッセー
ジも存在し得る。全てのメッセージが到着する前に、ロ
ールを物理的に削除するのを避けるため、各ロールは、
その他のロール各々に1つずつのバージョン番号のアレ
イを有する。バージョン番号は、対応するロールについ
ての受信メッセージのうちの最後のバージョン番号を記
録する。もう1つのアレイは、その他のロール各々につ
いて未処理メッセージの計数を維持し、この計数は、そ
の他のロール各々からまだ到着していないメッセージが
いくつあるかを表わしている。未処理メッセージは、標
準的にキャッシュ更新メッセージである。
がロールに到着することを保証し、全てのロールについ
て最終バージョン番号のアレイを支持している。このメ
ッセージが到着した時点で、物理的削除準備完了フラグ
がセットされる。ロール内部の計数器が、未処理入メッ
セージが全くないことを表示した場合、そのロールは直
ちに削除される。そうでなければ、旧キャッシュ更新メ
ッセージが最終的にロールに到着した時点で常に計数器
は更新され、全てのメッセージが到着しロールが物理的
削除準備完了としてマーキングされた場合、ロールはデ
ータベースから物理的に削除される。
ある場合、メッセージ1の後にロールに到着する。各ロ
ール内のフラグが、メッセージ2が既に到着したか否か
を表示し、メッセージ2(ならびに上述のように何らか
の未処理キャッシュ更新メッセージ)が到着するまで物
理的削除は延期される。
ジの中に含まれる情報の短い要約である: メッセージ1(「ロールは削除のためマーキングされて
いる」)には、次のものが含まれる: − 削除のためにマーキングされたロール。 − そのロールの最終バージョン番号。メッセージ2
(「コーディネータに代って削除のためマーキングして
下さい」)には以下のものが含まれる: − コーディネータのロールの最終バージョン番号。メ
ッセージ3(「旧メッセージが全て説明された時点でロ
ールを物理的に削除すること」)には、以下のものが含
まれる: − 各ロールの最終バージョン番号。
された時点で、そのロールをそのオブジェクトから接続
解除されなくてはならない。こうして、オブジェクトの
観点からは、削除は既に起こっているように見える。
3つの接続されたロールR1、R2及びR3を考慮す
る。図12及び図13(a)〜(f)を参照して、削除
がR1で開始されていると想定する(810、82
0)。同様に、例全体について通過状態にあるR1から
R3の未処理キャッシュ更新メッセージが存在すること
も仮定する。例は、各々のロールが取るステップを反映
している。
11)、従って、私は私自身を削除済みとしてマーキン
グし(813)、メッセージ1をコーディネータである
R2に送る(814)。私は、自分の最終バージョン番
号FV1を内含することになる。(R1からR2への通
過中のいかなるキャッシュ更新メッセージも存在しない
と想定する)。 R2: R1からメッセージ1を受取り(830)、私
は私のロールバージョン番号テーブル内に、FV1がR
1についての現行バージョンであることを記録する(8
35)。私には、R1からR2まで通過中のキャッシュ
更新メッセージが全く存在しないことがわかる。ここで
私は各ロール(R1、R2及びR3)に対しメッセージ
2を送り出す(837)。このメッセージは私の最終バ
ージョン番号FV2を内含している。 R1: 私はメッセージ2を受信する(831)が、す
でに削除済みと自らマーキングしたため、私は単純にコ
ーディネータ(R2)の最終バージョン番号を記録す
る。 R2: 私はメッセージ2を受信する(831)。私は
まだ削除済みとして自らマーキングしていない(83
2)ことから、私は自ら削除済み(833)とマーキン
グし、私の最終バージョン番号FV2を含めたメッセー
ジ1をコーディネータ(すなわち私自身)に送る(83
4)。 R3: 私はメッセージ2を受信する(831)。私は
まだ削除済みと自らマーキングしていないことから(8
32)、私は削除済みと自らマーキングし(833)、
私の最終バージョン番号FV3を含めコーディネータ
(R2)にメッセージ1を送る(834)。(R2が、
R2からのメッセージ2を受信する前のR3からメッセ
ージ1を受信すると想定する)。 R2: 私はまず最初にR3からメッセージ1を受信す
る。私は、私の現行バージョンアレイの中にR3の最終
バージョン番号を記録する(835)。2つのメッセー
ジ1(R1及びR3から)しか受信していないことか
ら、他に何も行なわない。 R2: 私は次にR2からメッセージ1を受信する(8
31)。これは私の3番目のメッセージ1であったこと
から、今や、全てのロールの全ての最終バージョン番号
ならびにそれら全てが削除のためにマーキングされてい
るということがわかっている。従って私は、メッセージ
3を各ロールに送り(838)、各メッセージ内の最終
バージョン番号FV1、FV2及びFV3を渡す。(R
1、R2及びR3がR2からメッセージ3を受信した
後、R1及びR2について未処理のメッセージは全く存
在しないが、R3について1つの未処理メッセージが存
在すると想定する)。 R1: 私はR2から、私が物理的に自ら削除できるこ
とを表示するメッセージ3を受信する。私は、自分の現
行バージョンに対し最終バージョン番号を調和させる
(839)。すなわち、私は、私の未処理メッセージ計
数のアレイ内の未処理メッセージについてチェックす
る。何もないことがわかる。従って、私は自分自身を削
除する(840)。 R2: 私はR2から、私が物理的に自ら削除できるこ
とを表示するメッセージ3を受信する。私は、自分の現
行バージョンに対し最終バージョン番号を調和させる
(839)。すなわち、私は、私の未処理メッセージ計
数のアレイ内の未処理メッセージについてチェックす
る。何もないことがわかる。従って、私は自分自身を削
除する(840)。 R3: 私はR2から、私が物理的に自ら削除できるこ
とを表示するメッセージ3を受信する。私は、自分の現
行バージョンに対し最終バージョン番号を調和させる
(839)。すなわち、私は、私の未処理メッセージ計
数のアレイ内の未処理メッセージについてチェックす
る。R1からの1つの未処理キャッシュ更新メッセージ
が存在することがわかる。私は、物理的削除準備完了と
して私自身をマーキングし、次のメッセージを待機する
(841)。 R3: 私は、R1から最終未処理キャッシュ更新メッ
セージを受信し(842)、それが到着したことを書き
留め、それが私の待っている最後のメッセージであった
こと及び私の物理的削除準備完了状態がセットされてい
ること(839)を通知する。その後私は、データベー
スから自分自身を物理的に削除する(840)。
を削除するためのメッセージは、時としてロールが関係
を新規作成中であるときに到着することがある。メッセ
ージが、既存でないロールに送られるのを妨げるため、
ロールは自らを削除する前に新規作成ジョブを完了する
ことになる。ロールが、最終的新規作成ジョブ(J2a
又はJ2b)を受信してしまう前に削除済みメッセージ
を受理した場合、それは自らを削除済みとしてマーキン
グし、最終的新規作成ジョブが受信されるまで待機す
る。最終新規作成ジョブが受信されると直ちに、ロール
は削除メッセージの処理に着手することになる。
1がObjectivity/DB5.2.2.データベースシステムと共に
設置されているシステム上で使用するための本発明の実
施のソースコードを内含する。
に入る。例えば、本発明は、関係データベースといった
ような、オブジェクトデータベースではないデータベー
ス上で実施することができる。オブジェクトデータベー
スにおいては、データオブジェクトはデータ項目として
参照され得、データオブジェクト属性は、データ要素と
して参照され得る。関係データベースにおいては、デー
タ記録はデータ項目とみなすことができ、データフィー
ルドは、データ要素とみなすことができる。
センタを例示する図である。
を例示する図である。
スを例示する。
正するプロセスを示す例である。
る。
図である。
めのユーザーインタフェースを例示する。
図である。
られたメッセージのシーケンスを例示する。
9)
Claims (64)
- 【請求項1】 データを持続的に記憶するデータベース
を維持すること、少なくとも一部分が、該データベース
内の一定の与えられた時点で全てが書込みについてロッ
クされるか又はロックされていないかのいずれかである
データを含む領域の使用のための競合する必要条件をも
つタスクをタスクソースから受諾すること、 利用可能なプロセッサと前記領域の各々を結びつけるこ
と、 プロセッサのうちのわずか1台によりアクセスされるべ
き領域に対する書込みアクセスを各々が必要とするジョ
ブを、各タスクについて定義すること、及び結びつけら
れたプロセッサによる同調実行のためジョブを分散させ
ること、を含む方法。 - 【請求項2】 該記憶されたデータには、オブジェクト
データベース内にオブジェクトを含むデータベースのデ
ータ項目が内含されている、請求項1記載の方法。 - 【請求項3】 該記憶されたデータには、オブジェクト
指向アプリケーションに対するオブジェクトとして提供
されるデータ項目が内含されている、請求項1記載の方
法。 - 【請求項4】 オブジェクト関係ブローカが、オブジェ
クト指向アプリケーションのためのオブジェクトの持続
的記憶を提供する請求項1記載の方法。 - 【請求項5】 前記データがオブジェクト指向の拡張と
の関係データベース内に記憶されている、請求項1記載
の方法。 - 【請求項6】 前記データベースが、データを持続的に
記憶するファイルを含む、請求項1記載の方法。 - 【請求項7】 前記タスクソースから受諾されたタスク
の数が恣意的に多い、請求項1、2又は3記載の方法。 - 【請求項8】 受諾されるタスクが由来するタスクソー
スの数が恣意的に多い、請求項1、2又は3記載の方
法。 - 【請求項9】 領域はコンテンションスペースの形に組
織され、コンテンションスペースの数が利用可能なプロ
セッサの数と同様である、請求項1、2又は3記載の方
法。 - 【請求項10】 各々のジョブが、わずか1つのコンテ
ンションスペース内のデータへの書込みアクセスを必要
としている、請求項9記載の方法。 - 【請求項11】 コンテンションスペースの数が利用可
能なプロセッサの数に等しい、請求項9記載の方法。 - 【請求項12】 コンテンションスペースへの領域の組
織が、ジョブの実行において利用可能なプロセッサのス
ループットを最大限にする、請求項9記載の方法。 - 【請求項13】 コンテンションスペースが、利用可能
なプロセッサのスループットを最大限にするべくプロセ
ッサに対し動的に割当てされている、請求項10記載の
方法。 - 【請求項14】 タスクが非同期的に受諾される、請求
項1、2又は3記載の方法。 - 【請求項15】 タスクが同時に受諾される、請求項
1、2又は3記載の方法。 - 【請求項16】 プロセッサが共用メモリを使用しな
い、請求項1、2又は3記載の方法。 - 【請求項17】 各タスクのためのジョブを定義するこ
とには、階層の最も低いレベルにジョブが収納されるサ
ブタスク階層を定義することが含まれている、請求項
1、2又は3記載の方法。 - 【請求項18】 タスクのうちの少なくとも1つが単一
ジョブを含む、請求項1、2又は3記載の方法。 - 【請求項19】 実施すべきタスクを生成するジョブを
も内含する、請求項1、2又は3記載の方法。 - 【請求項20】 タスクの各々は、要求されたデータベ
ーストランザクション内で更新されたデータが、そのト
ランザクションがひとたびコミットされた時点で喪失さ
れないという確実性と少なくとも同じ位高い確実性で完
成される、請求項1、2又は3記載の方法。 - 【請求項21】 領域が単一のデータ項目を含む、請求
項1、2又は3記載の方法。 - 【請求項22】 領域が少なくとも100万個のデータ
項目を含む、請求項1、2又は3記載の方法。 - 【請求項23】 ジョブが、いずれかの領域上の何らか
の書込みロックの解除を待つ必要なく同時に実行され
る、請求項1、2又は3記載の方法。 - 【請求項24】 コンテンションスペースのうちの複数
のものがプロセッサの1つと結びつけられている、請求
項9記載の方法。 - 【請求項25】 各々のプロセッサが、少なくとも1つ
のプロセスをランする物理的プロセッサを含む、請求項
24記載の方法。 - 【請求項26】 各々のタスクがユーザー要求によって
生成される、請求項1、2又は3記載の方法。 - 【請求項27】 コンテンションスペースの各々が、ジ
ョブを実行するもの及び結びつけられたコンテンション
スペースに関して管理機能を実行するものという少なく
とも2つのプロセッサと結びつけられている、請求項9
記載の方法。 - 【請求項28】 ジョブの分散には、実行を必要とする
ものと予測されているジョブの数に比例してプロセッサ
を付加することにより、恣意的に大きい速度での実行の
ためジョブを受取る能力をもつ待ち行列システムを維持
することが含まれている、請求項1、2又は3記載の方
法。 - 【請求項29】 待ち行列システムには、各々がジョブ
を受理できる概念上の行が内含されている、請求項28
記載の方法。 - 【請求項30】 各々の行が、ジョブが行内に受入れら
れつつあるときにロックされる、請求項29記載の方
法。 - 【請求項31】 ロックされていない行のいずれからで
も、実行のため対応するプロセッサによりジョブが受諾
され得る、請求項30記載の方法。 - 【請求項32】 数100万個の領域がコンテンション
スペースに属する、請求項9記載の方法。 - 【請求項33】 付加的なジョブが、ジョブの実行と関
連して新規作成される、請求項1、2又は3記載の方
法。 - 【請求項34】 さらなるジョブが付加的ジョブにより
新規作成される、請求項33記載の方法。 - 【請求項35】 付加的ジョブの新規作成が、ジョブを
実行する上でデータベースから読取られるデータによっ
て左右される、請求項33記載の方法。 - 【請求項36】 付加的ジョブがジョブの実行と関連し
て新規作成され、プロセッサの1つの上でランしている
プロセスがジョブを実行し付加的なジョブを新規作成
し、かつ付加的ジョブのうちの少なくともいくつかが、
その他のプロセッサによりサービス提供されているコン
テンションスペースの間で分散されている、請求項9記
載の方法。 - 【請求項37】 タスクが商取引に関するものである、
請求項1、2又は3記載の方法。 - 【請求項38】 ジョブの各々には、対応するコンテン
ションスペースと結びつけられたインデックスが割当て
られる、請求項9記載の方法。 - 【請求項39】 インデックスが、プロセッサ間でジョ
ブをロードバランシングするために使用される、請求項
38記載の方法。 - 【請求項40】 データベースが、異なる物理的場所の
間で分散されているデータベース単位を内含する、請求
項1、2又は3記載の方法。 - 【請求項41】 各々のジョブがステップを含む請求項
1、2又は3記載の方法。 - 【請求項42】 ジョブの実行には、ステップの一部分
を実行すること、これらのステップを表わすデータベー
ストランザクションをコミットすること及びジョブが完
了するまで反復することが含まれる、請求項41記載の
方法。 - 【請求項43】 ステップのいずれかの部分が完了でき
なかった時点で、要求されたトランザクション内に書込
まれたデータはそのトランザクションが一旦コミットさ
れたならば喪失しないという確実性と少なくとも同レベ
ルの確実性で、不履行部分の第1のステップにおいて実
行を再開することも内含している、請求項42記載の方
法。 - 【請求項44】 プロセッサがその行からジョブを受諾
している時は読取りについてのみ行がロックされてい
る、請求項31記載の方法。 - 【請求項45】 (1)ジョブの分散には、いずれかの
恣意的に大きい速度での実行のためにジョブを受取る能
力をもつ待ち行列システムを維持することが含まれてお
り、(2)待ち行列システムには、各々がジョブを受理
できる概念的行が含まれており、(3)待ち行列システ
ムには、それぞれのコンテンションスペースと結びつけ
られた概念的列が含まれ、待ち行列システムは、行と列
の交差点に概念的セルマトリックスを含み、ここで各々
のセルは、その他のセルに対する読取り及び書込みと矛
盾することなく読取り又は書込みが可能である、請求項
9記載の方法。 - 【請求項46】 行がジョブソースと結びつけられ、行
の数は、全てのジョブソースが同時にキューの中にジョ
ブをロードできるようにするのに充分なものである、請
求項45記載の方法。 - 【請求項47】 行の数は、全ての列から実行のため同
時にジョブを取出しできるようにするのに充分なもので
ある、請求項45記載の方法。 - 【請求項48】 結果の正しさを確保するため、ジョブ
の同期化グループの実行を同期化することをも内含す
る、請求項1、2又は3記載の方法。 - 【請求項49】 同期化には、同期化グループの各々の
ジョブに対して、それらをそのグループのメンバーとし
て識別するタグを割当てることが内含されている、請求
項48記載の方法。 - 【請求項50】 同期化には、同期化グループの各々の
ジョブに対し、そのグループ内のそのジョブの参加割合
を表わす定数分数を割当てることが含まれる、請求項4
8記載の方法。 - 【請求項51】 同期化グループ内の全てのジョブがい
つでもプロセッサにより実行できる状態になるまでジョ
ブは実行されない、請求項50記載の方法。 - 【請求項52】 データを持続的に記憶するデータベー
ス、及び(1)一定の与えられた時点で書込みについて
全てロックされているか又はされていないかのいずれか
であるデータを各々含むデータベースの複数の領域を使
用するための競合する必要条件を有するものを少なくと
もいくつか含む恣意的に数の多いタスクを、恣意的に数
の多いタスクソースから非同期的に受諾し、(2)各々
が利用可能な異なるプロセッサと結びつけられた矛盾し
ないコンテンションスペースの形に領域を組織し、
(3)わずか1つのコンテンションスペースに属する領
域への書込みアクセスを各々が必要とするジョブの形に
各々のタスクを分割し、かつ(4)結びつけられたプロ
セッサによる同時実行のため対応するコンテンションス
ペースに対してジョブを分散するジョブ処理機構、を含
んで成る器具。 - 【請求項53】 機械上で実行されるように構成された
ソフトウエアオブジェクトにおいて、 データを持続的に記憶するデータベースの領域に対する
アクセスを必要とし、データベースの領域内のデータに
対する命令及びポインタを含む実行すべきジョブ、及び
データベースの領域内に書込むべき競合する必要条件を
有するジョブのコンテンションスペースを識別し、デー
タベースの領域内に書込むべき競合する必要条件をもた
ないジョブのその他のコンテンションスペースから該コ
ンテンションスペースを区別するインデックス、を含ん
で成るオブジェクト。 - 【請求項54】 行及び列の形に配置されたセルを含む
キューにおいて、行内のセルは持続的データベース内に
データを書込むためジョブを受理するように構成されて
おり、列内のセルはプロセッサによる処理のためジョブ
を送達するべく構成されており、さらにジョブが行内に
書込まれているとき、書込みについてのみ行のセルの全
てをロックし、ジョブが列から送達されつつあるとき書
込みについて列のセルのうち1つのみをロックするキュ
ー制御機構を含んで成り、キュー内の行の数は、一度に
ジョブを少なくとも1つの行に書込むことができる全て
のプロセッサが列の1つからジョブを受けとることがで
きるのに充分なものである、キュー。 - 【請求項55】 データを持続的に記憶し、要求された
トランザクション内で書込まれたデータはそのトランザ
クションがひとたびコミットされた時点で喪失しないと
いう一次レベルの保証を提供するデータベースを維持す
ること、 データベースの同じ領域内に書込むべき矛盾する必要条
件をその少なくとも一部が有しているタスクを、多数の
プロセッサによる同時実行のためのタスクソースから受
諾すること、及び、 データ喪失なくかつデータベースの領域に関していかな
る実際の矛盾も発生することなくそのタスクが実行され
ることになるということを、少なくとも一次的保証レベ
ルまで保証するソフトウエア機構を提供すること、を含
んで成る方法。 - 【請求項56】 データを持続的に記憶するデータベー
スを維持すること、 プロセッサによる同時実行のためジョブを受諾すること
であって、ジョブがデータベース内のデータへのアクセ
スを必要とし、ジョブの少なくともいくつかはグループ
としての実行を必要とし、1グループのジョブの各々
が、該グループ内へのその参加を定義する結びつけられ
た情報を有していること;を含んで成る方法において、 1つのプロセッサは、結びつけられた情報から該グルー
プのジョブの全てについて処理が進行し得ることを見極
めるまで、グループのジョブのいずれも実行することを
控えており、その他のジョブでの分岐が、恣意的に深い
一連のことを経て発生する、方法。 - 【請求項57】 データを持続的に記憶するデータベー
スを維持すること、 データベース内のデータに対するアクセスを必要とする
ジョブを、プロセッサによる同時実行のため受諾するこ
と、及びジョブが実行のために受理される順序以外でジ
ョブのうちの少なくともいくつかを各々のプロセッサに
実行させること、を含んで成る方法。 - 【請求項58】 データを持続的に記憶するデータベー
スを維持すること、 タスクソースからタスクを受諾することであって、タス
クがそれらの各々を実行のための少なくとも2つの異な
る優先性レベルのうちの1つを有するものとして識別す
る優先性情報と結びつけられていること、 各々のタスクについて、タスクを完了するために実行さ
れるべきジョブを定義すること、 プロセッサによる同時実行のためジョブを分散させるこ
と、及び結びつけられたタスクの優先順に基づく順序で
実行するためジョブを選択すること、を含んで成る方
法。 - 【請求項59】 データを持続的に記憶すること、 データの一部分の持続的複製を記憶すること、及びデー
タ又は複製が更新されるにつれてそれらの間の一貫性を
維持すること、を含んで成る方法。 - 【請求項60】 データベース内で持続的にデータを記
憶すること、及び記憶媒体内にデータ項目の少なくとも
2つの物理的クラスタを新規作成すること、 を含む方法において、クラスタのうちの少なくとも1つ
は、もう1つのクラスタ内のデータ項目の1つの複製で
ある少なくとも1つのデータ項目を含み、クラスタは2
つの異なる規準により組織されている、方法。 - 【請求項61】 データを持続的に記憶すること、 データの一部分の持続的複製を記憶すること、及びデー
タを使用する1つのアルゴリズムを同時に処理され得る
サブアルゴリズムの形に、分割できるようにする区画へ
と、記憶された複製を区画化すること、を含んで成り、
複製がサブアルゴリズムの1つによって必要とされるデ
ータのみを含んでいる、方法。 - 【請求項62】 データを持続的に記憶すること、 データベース内のデータに対する参照を内含する少なく
とも1つのインデックスを維持すること、 記憶されたデータ及びインデックスに対する同時更新を
処理すること、及び同時更新の間に、インデックスと記
憶されたデータとの間の一貫性を維持すること、を含ん
で成る方法。 - 【請求項63】 データを持続的に記憶すること、 2つの異なる矛盾しない領域又は2つの異なる物理的ク
ラスタ内にデータの少なくとも2つの異なる項目を記憶
すること、 2つの異なるデータ項目の間に、プロセスがそのデータ
項目のうちのいずれか一方にもう1つのデータ項目から
到達できるようにする関係を維持すること、及びいずれ
か一方又は両方の項目の更新にもかかわらず関係の一貫
性を維持すること、を含んで成る方法。 - 【請求項64】 データを持続的に記憶すること、 メモリ内にデータの複製を記憶すること、及びメモリ内
の複製及び持続的に記憶されたデータの両方を更新する
ことによって、データを更新する要求に応答すること、
を含んで成る方法。
Applications Claiming Priority (16)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US68794200A | 2000-10-13 | 2000-10-13 | |
US68830900A | 2000-10-13 | 2000-10-13 | |
US68769400A | 2000-10-13 | 2000-10-13 | |
US68776500A | 2000-10-13 | 2000-10-13 | |
US68794100A | 2000-10-13 | 2000-10-13 | |
US68786100A | 2000-10-13 | 2000-10-13 | |
US68702700A | 2000-10-13 | 2000-10-13 | |
US68726800A | 2000-10-13 | 2000-10-13 | |
US09/687694 | 2000-10-13 | ||
US09/688309 | 2000-10-13 | ||
US09/687268 | 2000-10-13 | ||
US09/687765 | 2000-10-13 | ||
US09/687861 | 2000-10-13 | ||
US09/687027 | 2000-10-13 | ||
US09/687941 | 2000-10-13 | ||
US09/687942 | 2000-10-13 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012066070A Division JP5292489B2 (ja) | 2000-10-13 | 2012-03-22 | 持続的データ記憶技術 |
JP2013222462A Division JP5844333B2 (ja) | 2000-10-13 | 2013-10-25 | 持続的データ記憶技術 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002169718A true JP2002169718A (ja) | 2002-06-14 |
JP5425355B2 JP5425355B2 (ja) | 2014-02-26 |
Family
ID=27575503
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000352662A Expired - Fee Related JP5425355B2 (ja) | 2000-10-13 | 2000-11-20 | 持続的データ記憶技術 |
JP2012066070A Expired - Fee Related JP5292489B2 (ja) | 2000-10-13 | 2012-03-22 | 持続的データ記憶技術 |
JP2013222462A Expired - Fee Related JP5844333B2 (ja) | 2000-10-13 | 2013-10-25 | 持続的データ記憶技術 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012066070A Expired - Fee Related JP5292489B2 (ja) | 2000-10-13 | 2012-03-22 | 持続的データ記憶技術 |
JP2013222462A Expired - Fee Related JP5844333B2 (ja) | 2000-10-13 | 2013-10-25 | 持続的データ記憶技術 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP1197876A3 (ja) |
JP (3) | JP5425355B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005108186A (ja) * | 2003-09-26 | 2005-04-21 | Microsoft Corp | 自己維持型リアルタイム・データ集約 |
JP2009535688A (ja) * | 2006-04-28 | 2009-10-01 | ネットアップ,インコーポレイテッド | クラスタ環境においてジョブを管理するシステム、及び方法 |
WO2013073005A1 (ja) * | 2011-11-15 | 2013-05-23 | 株式会社日立製作所 | 計算機システム及び複製制御方法 |
WO2019198824A1 (ja) * | 2018-04-12 | 2019-10-17 | 日本電信電話株式会社 | 制御処理装置、制御処理方法および制御処理プログラム |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010550B2 (en) | 2006-11-17 | 2011-08-30 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US7860847B2 (en) | 2006-11-17 | 2010-12-28 | Microsoft Corporation | Exception ordering in contention management to support speculative sequential semantics |
US8024714B2 (en) | 2006-11-17 | 2011-09-20 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US7711678B2 (en) * | 2006-11-17 | 2010-05-04 | Microsoft Corporation | Software transaction commit order and conflict management |
US20080320011A1 (en) * | 2007-06-20 | 2008-12-25 | Microsoft Corporation | Increasing file storage scale using federated repositories |
EP2241982A1 (en) * | 2009-04-14 | 2010-10-20 | Siemens AG | Method and system for storing a hierarchy in a RDBMS |
CN101963969B (zh) * | 2009-07-22 | 2013-02-20 | 阿里巴巴集团控股有限公司 | Oracle RAC系统中实现负载均衡的方法和数据库服务器 |
JP5652282B2 (ja) * | 2011-03-18 | 2015-01-14 | 富士通株式会社 | 検索制御プログラム、検索制御方法、検索システム |
CN105630982A (zh) * | 2015-12-25 | 2016-06-01 | 中国民航信息网络股份有限公司 | 航班数据缓存方法及系统 |
CN109614243A (zh) * | 2018-10-22 | 2019-04-12 | 中国平安人寿保险股份有限公司 | 数据处理方法、装置及存储介质、计算机设备 |
CN113721574B (zh) * | 2021-09-07 | 2023-07-18 | 中国联合网络通信集团有限公司 | 一种柔顺控制方法、mec、现场单元、柔顺控制系统及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916453A (ja) * | 1995-06-23 | 1997-01-17 | Internatl Business Mach Corp <Ibm> | 同期システム及び同期方法 |
JPH0922356A (ja) * | 1994-12-14 | 1997-01-21 | Internatl Business Mach Corp <Ibm> | トランザクション相互運用システム及び方法 |
JPH1083336A (ja) * | 1996-05-01 | 1998-03-31 | Internatl Business Mach Corp <Ibm> | オブジェクト指向データ処理方法及びシステム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61233849A (ja) * | 1985-04-08 | 1986-10-18 | Hitachi Ltd | デ−タベ−ス排他制御方法 |
US5504894A (en) * | 1992-04-30 | 1996-04-02 | International Business Machines Corporation | Workload manager for achieving transaction class response time goals in a multiprocessing system |
JP3621433B2 (ja) * | 1993-05-24 | 2005-02-16 | 日本電信電話株式会社 | データベース排他制御方法 |
US5454108A (en) * | 1994-01-26 | 1995-09-26 | International Business Machines Corporation | Distributed lock manager using a passive, state-full control-server |
US5924103A (en) * | 1997-03-12 | 1999-07-13 | Hewlett-Packard Company | Works-in-progress in an information management system |
JP3052908B2 (ja) * | 1997-09-04 | 2000-06-19 | 日本電気株式会社 | トランザクションプログラム並列実行方法およびトランザクションプログラム並列実行方式 |
US5940828A (en) * | 1997-11-18 | 1999-08-17 | International Business Machines Corporation | Locking contention resolution for shared resources |
JP2000137688A (ja) * | 1999-12-07 | 2000-05-16 | Hitachi Ltd | 多重プロセッサシステムおよびデ―タ処理方法 |
-
2000
- 2000-11-16 EP EP00310170A patent/EP1197876A3/en not_active Withdrawn
- 2000-11-20 JP JP2000352662A patent/JP5425355B2/ja not_active Expired - Fee Related
-
2012
- 2012-03-22 JP JP2012066070A patent/JP5292489B2/ja not_active Expired - Fee Related
-
2013
- 2013-10-25 JP JP2013222462A patent/JP5844333B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0922356A (ja) * | 1994-12-14 | 1997-01-21 | Internatl Business Mach Corp <Ibm> | トランザクション相互運用システム及び方法 |
JPH0916453A (ja) * | 1995-06-23 | 1997-01-17 | Internatl Business Mach Corp <Ibm> | 同期システム及び同期方法 |
JPH1083336A (ja) * | 1996-05-01 | 1998-03-31 | Internatl Business Mach Corp <Ibm> | オブジェクト指向データ処理方法及びシステム |
Non-Patent Citations (8)
Title |
---|
CSND199801077008; C. Mohan: '並列DBMSのアルゴリズムとアーキテクチャ(下)' 日経エレクトロニクス 第619号 , 19941010, p.113-119, 日経BP社 * |
CSND199801079003; C. Mohan: '並列処理:並列DBMSのアルゴリズムとアーキテクチャ(上)' 日経エレクトロニクス 第618号 , 19940926, p.99-118, 日経BP社 * |
CSNG199800848006; 中津 楢男: '直列化可能性の新しい判定法' 電子情報通信学会論文誌 第J76-D-I巻,第6号, 19930625, p.279-287, 社団法人電子情報通信学会 * |
CSNG199900728003; 最所 圭三: '並列トランザクションのための並行処理制御について' 電子情報通信学会技術研究報告 Vol.90 No.144 第90巻,第144号, 19900720, p.13-18, 社団法人電子情報通信学会 * |
JPN6011007466; C. Mohan: '並列処理:並列DBMSのアルゴリズムとアーキテクチャ(上)' 日経エレクトロニクス 第618号 , 19940926, p.99-118, 日経BP社 * |
JPN6011007468; C. Mohan: '並列DBMSのアルゴリズムとアーキテクチャ(下)' 日経エレクトロニクス 第619号 , 19941010, p.113-119, 日経BP社 * |
JPN6011060315; 中津 楢男: '直列化可能性の新しい判定法' 電子情報通信学会論文誌 第J76-D-I巻,第6号, 19930625, p.279-287, 社団法人電子情報通信学会 * |
JPN6012055995; 最所 圭三: '並列トランザクションのための並行処理制御について' 電子情報通信学会技術研究報告 Vol.90 No.144 第90巻,第144号, 19900720, p.13-18, 社団法人電子情報通信学会 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005108186A (ja) * | 2003-09-26 | 2005-04-21 | Microsoft Corp | 自己維持型リアルタイム・データ集約 |
JP2009535688A (ja) * | 2006-04-28 | 2009-10-01 | ネットアップ,インコーポレイテッド | クラスタ環境においてジョブを管理するシステム、及び方法 |
WO2013073005A1 (ja) * | 2011-11-15 | 2013-05-23 | 株式会社日立製作所 | 計算機システム及び複製制御方法 |
JPWO2013073005A1 (ja) * | 2011-11-15 | 2015-04-02 | 株式会社日立製作所 | 計算機システム及び複製制御方法 |
WO2019198824A1 (ja) * | 2018-04-12 | 2019-10-17 | 日本電信電話株式会社 | 制御処理装置、制御処理方法および制御処理プログラム |
JP2019185492A (ja) * | 2018-04-12 | 2019-10-24 | 日本電信電話株式会社 | 制御処理装置、制御処理方法および制御処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
EP1197876A2 (en) | 2002-04-17 |
JP5844333B2 (ja) | 2016-01-13 |
EP1197876A3 (en) | 2003-04-16 |
JP5425355B2 (ja) | 2014-02-26 |
JP5292489B2 (ja) | 2013-09-18 |
JP2014038657A (ja) | 2014-02-27 |
JP2012138110A (ja) | 2012-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200167370A1 (en) | Maintaining a relationship between two different items of data | |
US20200081879A1 (en) | Persistent data storage techniques | |
JP5844333B2 (ja) | 持続的データ記憶技術 | |
US20190258625A1 (en) | Data partitioning and ordering | |
US11288002B2 (en) | System and method for providing high availability data | |
US7149736B2 (en) | Maintaining time-sorted aggregation records representing aggregations of values from multiple database records using multiple partitions | |
CA2436517C (en) | Method and apparatus for data processing | |
US8150812B2 (en) | Methods, apparatus and computer programs for data replication | |
JP2708356B2 (ja) | データベースを更新するための方法、システム及び装置 | |
US8261020B2 (en) | Cache enumeration and indexing | |
US8156078B2 (en) | Intelligent client architecture computer system and method | |
US5920857A (en) | Efficient optimistic concurrency control and lazy queries for B-trees and other database structures | |
US20130297565A1 (en) | Database Management System | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
EP1204938A1 (en) | System for accessing database tables mapped into memory for high performance data retrieval | |
US6295539B1 (en) | Dynamic determination of optimal process for enforcing constraints | |
US9766949B2 (en) | System and method for locking exclusive access to a divided resource | |
Jolson | A Method for Selective Update Propagation in Replicated Databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071018 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100615 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100910 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100915 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110215 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110510 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110513 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110715 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111122 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120322 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120521 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20120611 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20120803 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130823 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130903 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130926 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131001 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131025 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131127 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |