図面 (/)

この項目の情報は公開日時点(1998年10月20日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (7)

課題・解決手段

分散形オブジェクト指向データベース(8)の中のオブジェクトのために、包括的に唯一識別子を生成するためのシステム。一つの実施兄弟においては、このシステムは通信網(10)全体を通してオブジェクトのための包括的に唯一の識別子を提供するサーバープロセス(26)を実行するプロセッサー(16)に対してこの通信網(10)を用いて接続されている少なくとも2基のプロセッサー(12、14)を含んで成る通信網(10)上の各プロセッサー(12、14)は、単数又は複数の顧客プロセス(18、20、22、24)を実行し、その各々がデータベース(8)に対するトランザクション走行させることができる。このような各々の顧客プロセス(18、20、22、24)は、サーバープロセス(26)に対して、1つの要求を伝送し、このサーバープロセスは、その顧客プロセス(18、20、22、24)が、自ら作成中のオブジェクトについての包括的に唯一のオブジェクト識別子を要求した時点で、包括的に結う一のオブジェクト識別子を提供する。この要求に応えて、包括的に唯一の識別子を提供するサーバー(26)は、要求している顧客プロセス(18、20、22、24)に対して、1レンジの包括的に唯一のオブジェクト識別子を伝送する。次に、要求している顧客プロセス(18、20、22、24)は、自ら作成中のオブジェクトに対しオブジェクト識別子を割り当てる。作成されたオブジェクトに対する包括的に唯一のオブジェクト識別子の割当が完了した時点で、要求している顧客プロセス(18、20、22、24)は、次に未使用の包括的に唯一のオブジェクト識別子があればそれを全てサーバー(26)に戻し、その他の顧客プロセス(18、20、22、24)が使用できるようにする。

概要

背景

概要

分散形オブジェクト指向データベース(8)の中のオブジェクトのために、包括的に唯一識別子を生成するためのシステム。一つの実施兄弟においては、このシステムは通信網(10)全体を通してオブジェクトのための包括的に唯一の識別子を提供するサーバープロセス(26)を実行するプロセッサー(16)に対してこの通信網(10)を用いて接続されている少なくとも2基のプロセッサー(12、14)を含んで成る通信網(10)上の各プロセッサー(12、14)は、単数又は複数の顧客プロセス(18、20、22、24)を実行し、その各々がデータベース(8)に対するトランザクション走行させることができる。このような各々の顧客プロセス(18、20、22、24)は、サーバープロセス(26)に対して、1つの要求を伝送し、このサーバープロセスは、その顧客プロセス(18、20、22、24)が、自ら作成中のオブジェクトについての包括的に唯一のオブジェクト識別子を要求した時点で、包括的に結う一のオブジェクト識別子を提供する。この要求に応えて、包括的に唯一の識別子を提供するサーバー(26)は、要求している顧客プロセス(18、20、22、24)に対して、1レンジの包括的に唯一のオブジェクト識別子を伝送する。次に、要求している顧客プロセス(18、20、22、24)は、自ら作成中のオブジェクトに対しオブジェクト識別子を割り当てる。作成されたオブジェクトに対する包括的に唯一のオブジェクト識別子の割当が完了した時点で、要求している顧客プロセス(18、20、22、24)は、次に未使用の包括的に唯一のオブジェクト識別子があればそれを全てサーバー(26)に戻し、その他の顧客プロセス(18、20、22、24)が使用できるようにする。

目的

効果

実績

技術文献被引用数
0件
牽制数
3件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

、分散形オブジェクト指向データベース内で作成した1つのオブジェクトに対して包括的な唯一識別子を割り当てするためのシステムにおいて、通信網少なくとも1つの顧客プロセスを実行するものを1基、ならびに包括的に唯一の識別子の扱者プロセスを実行するものを1基含めた、前記回路網に接続された少なくとも2基のプロセッサー;を含んで成り、前記少なくとも1つの顧客プロセスのうちの1つが、前記包括的に唯一の識別子扱者プロセスから1範囲の包括的に唯一の識別子を要求し、前記包括的に唯一の識別子扱者プロセスは、1レンジの包括的に唯一の識別子を要求する前記少なくとも1つの顧客プロセスのうちの1つのために1レンジの包括的に唯一の識別子を予約し、1レンジの包括的に唯一の識別子を要求する前記少なくとも1つの顧客プロセスのうちの1つは、この1つの顧客プロセスによって作成された各オブジェクトのために、前記1レンジの包括的に唯一の識別子の中からの1つの包括的に唯一の識別子を割り当て、前記少なくとも1つの顧客プロセスのうちの1つが、包括的に唯一の識別子の前記割り当ての完了時点で前記包括的に唯一の識別子扱者プロセスに対して、前記1レンジの包括的に唯一の識別子の未使用部分解放する、識別子割り当てシステム

請求項2

、前記包括的に唯一の識別子扱者プロセスが、前記1レンジの包括的に唯一の識別子を予約した後この1レンジの識別子を要求する前記少なくとも1つの顧客プロセスのうちの1つに対して、この範囲からの第一の包括的に唯一の識別子及び最後の包括的に唯一の識別子を伝送する、請求の範囲第1項に記載のシステム。

請求項3

、前記1レンジの包括的に唯一の識別子が、複数の包括的に唯一の識別子の範囲の中から選択される、請求の範囲第2項に記載のシステム。

請求項4

、前記複数の包括的に唯一の識別子の範囲のうちの各々の範囲が、包括的に唯一の識別子を同数ずつ内包している、請求の範囲第3項に記載のシステム。

請求項5

、包括的に唯一の識別子の各々の範囲が隣接している、請求の範囲第3項に記載のシステム。

請求項6

、前記複数の包括的に唯一の識別子の範囲が、前記包括的に唯一の識別子扱者プロセスによって、OIDスペースオブジェクトの中に維持される、請求の範囲第3項に記載のシステム。

請求項7

、前記OIDスペースオブジェクトが前記包括的に唯一の識別子扱者プロセスによって、作成されている、請求の範囲第6項に記載のシステム。

請求項8

、前記OIDスペースオブジェクトが前記少なくとも1つの顧客プロセスにより作成され、前記包括的に唯一の識別子扱者プロセスにより作成され、前記包括的に唯一の識別子扱者プロセスに対して移送される、請求の範囲第7項に記載のシステム。

請求項9

、前記包括的に唯一の識別子扱者プロセスからの前記1レンジの包括的に唯一の識別子を要求する前記少なくとも1つの顧客プロセスが、予約すべき一定数の包括的に唯一の識別子を特定する、請求の範囲第1項に記載のシステム。

請求項10

、分散形オブジェクト指向データベースの中で作成された1つのオブジェクトに対し包括的に唯一の識別子を割り当てるためのシステムにおいて、回路網、及び少なくとも1つの顧客プロセスを実行するもの1基と、包括的に唯一の識別子扱者プロセスを実行するもの1基を含めた、前記回路網に接続された少なくとも2つのプロセッサー、を含んで成り、前記少なくとも1つの顧客プロセスのうち1つが、前記包括的に唯一の識別子扱者プロセスからの1レンジの包括的に唯一の識別子を要求し、前記包括的に唯一の識別子扱者プロセスが、前記1レンジの包括的に唯一の識別子を要求する少なくとも1つの顧客プロセスのうち1つに対して、複数の包括的に唯一の識別子の範囲を有するオブジェクト識別子スペースオブジェクトを移送し、前記1レンジの包括的に唯一の識別子を要求する少なくとも1つの顧客プロセスのうちの1つが、前記オブジェクト識別子スペースオブジェクトの中で、1レンジの包括的に唯一の識別子を予約し、前記1レンジの包括的に唯一の識別子を要求する少なくとも1つの顧客プロセスのうちの1つが、この1つの顧客プロセスによって作成された各々のオブジェクトに対し予約された前記包括的に唯一の識別子の予約済み範囲からの1つの包括的に唯一の識別子を割り当てし、この1つの顧客プロセスが、前記予約済み範囲の未使用部分を解放し、前記1レンジの包括的に唯一の識別子を要求する少なくとも1つの顧客プロセスのうちの1つが、前記包括的に唯一の識別子扱者プロセスに対して、前記オブジェクト識別子スペースオブジェクトを伝送する、割り当て用システム。

請求項11

、前記オブジェクト識別子スペースオブジェクトが前記少なくとも1つの顧客プロセスによって作成され前記包括的に唯一の識別子扱者プロセスに対し伝送される、請求の範囲第10項に記載のシステム。

請求項12

、前記包括的に唯一の識別子扱者プロセスが、前記1レンジの包括的に唯一の識別子を要求する少なくとも1つの顧客プロセスのうちの1つに対して、前記複数の包括的に唯一の識別子の範囲をもつ前記オブジェクト識別子スペースオブジェクトを伝送する前に前記オブジェクト識別子スペースオブジェクトをロックする施錠装置内含する、請求の範囲第十項に記載のシステム。

請求項13

、前記1レンジの包括的に唯一の識別子を要求する少なくとも1つの顧客プロセスのうちの1つが、各オブジェクトに対して前記包括的に唯一の識別子の予約済み範囲からの前記包括的に唯一の識別子を割り当てる前に、前記オブジェクト識別子スペースオブジェクトのロックを解除して戻す、請求の範囲第10項に記載のシステム。

請求項14

、分散形オブジェクト指向データベースの中で作成された1つのオブジェクトに対して包括的に唯一の識別子を1つ割り当てるための方法において、1レンジの包括的に唯一のオブジェクト識別子を要求する段階;前記少なくとも一つの顧客プロセスに対して1レンジのオブジェクト識別子を予約する段階、前記オブジェクト識別子の予約済み範囲から前記少なくとも1つの顧客プロセスによって**された各々のオブジェクトに対して包括的に唯一のオブジェクト識別子を1つ割り当てる段階;前記包括的に唯一のオブジェクト識別子の割り当てが完了した時点で前記オブジェクト識別子の範囲の未使用部分を解放する段階;を含んで成る方法。

請求項15

、1つの回路網を有する分散形オブジェクト指向データベースの中で作成された1つのオブジェクトに対して包括的に唯一の識別子を1つ割り当てるための方法において、1レンジの包括的に唯一の識別子を要求する段階;前記要求に応えて複数の包括的に唯一の識別子の範囲を持つオブジェクト識別子スペースオブジェクトを検索する段階;前記オブジェクト識別子スペースオブジェクトの中で1レンジの包括的に唯一の識別子を予約する段階;1レンジの包括的に唯一の識別子を要求する前記少なくとも1つの顧客プロセスの内の1つによって作成された各オブジェクトに対し予約された包括的に唯一の識別子の前記予約済みレンジから包括的に唯一の識別子を1つ割り当てる段階;前記包括的に唯一の識別子の予約済みレンジの未使用部分を開放する段階;及び前記オブジェクト識別子スペースオブジェクトを復帰する段階、を含んで成る方法。

背景技術

0001

発明の名称包括的に唯一オブジェクト識別を生成するためのシステム
発明の分野
本発明は、オブジェクト指向データベースの分野、より特定的に言うと
、分散形オブジェクト指向データベースシステムのための包括的に唯一のオブ
クト識別子の生成に関する。
あらゆるオブジェクト指向データベース(ODB)にとって重要なのは
持続的オブジェクトアイデンティティという概念である。 最も一般的な意味
では、オブジェクトアイデンティティというのは、その他のオブジェクトが他の
点では類似したものである場合でさえ、1つのオブジェクトをその他すべてのオ
ブジェクトから区別するため、及びそのオブジェクトを磁気ディスクといったよ
うな持続的記憶装置から検索しそれをコンピューターメモリーの中に移送するた
めに使用できるオブジェクトの譲りがたい特性のことである。
理論的には、いかなるビットパターンでも、それがその他のいずれか
のオブジェクトのアイデンティティを実行するのに使用されたことがない限りに
おいて、オブジェクト識別子(OID)を実行するために利用することができる
。従って、唯一のビット・パターンを生成する機械またはシステムは、同じビッ
ト・パターンが2度生成されたことがないということを条件として、持続的OI
Dを提供するのに充分なものとなる。実際には、性能を考慮して出来る限り小さ
く、かつできる限り迅速にOIDを生成するシステムが好まれる。
多くの顧客プロセスを実行し1つの通信網によって相互接続された多数
プロセサーから成る分散形計算システムにおいては、各々の顧客プロセスが、す
べての顧客プロセスを横断して包括的に唯一のものであるOIDを確実に局所
に指定できるようにする上で特別な挑戦がなされている。この挑戦に対する具体
的なアプローチとして、標準的に3つのものが試みられてきた。
第1のアプローチでは、各々の顧客プロセスは独立して包括的に唯一の
OIDを生成する。1つの標準的な技術は、日付け時刻スタンププロセッサ
ー識別子を連結することによってOIDを形成することである。通信網上の各々
プロセッサーは、(ネットワーク通信を目的とする)唯一の識別子を有しており
、日付け−時刻スタンプは、単調に増加することから、作成された各々のOID
には、唯一のものであるという保証がある。もう1つのアプローチでは、各々の
顧客プロセスは独立して局所的に唯一のOIDを生成し、これらのOIDは次に
中央サーバーといった独立した機関によって(必要とあらば)包括的に唯一の
OIDへと変更される。この問題に対する第3のアプローチにおいては、各々の
顧客プロセスは、1つのオブジェクトを作成する必要がある毎に包括的に唯一の
OIDを生成するように中央サーバーといったような独立した機関に要請する。
これらのアプローチの各々は、性能上のトレードオフを有している。第
1のアプローチは、包括的に唯一のID(GUIDS)を局所的に生成すること
から、その他のアプローチがもたらすサーバー又は調整機関とのネットワーク
信の費用を節約する。しかしながら、この通信欠如によってもたらされる対価
は、このアプローチにおいてOIDが大きいものとなる傾向を持つということに
ある。OIDが大きくなると、より大きいディスク記憶装置が必要となり、又、
読みとり、書き込み及び処理に必要な時間も長くなる。
第2のアプローチは、局所的に唯一のOID(LUID)を生成し、こ
れらのLUIDが、認知できるほどに包括的に唯一のものであった場合には、こ
のアプローチは優れた性能を発揮する。しかしながら、LUIDをGUIDに変
換または、再マッピングしなければならない場合に併発する環境における問題点
が発生する。この変換のコストは、新たに作成されたオブジェクトを参照するす
べてのオブジェクトが、LUIDからGUIDへと変換された参照をも有してい
なくてはならないことから、新たに作成されたオブジェクトの数に正比例し、し
かもはるかに大きいものとなる。
第3のアプローチでは、第2のアプローチの変換費用及び第1のアプローチの
大きいGUIDを両方とも回避できる。しかしながらこの方法に付随する性能上
の問題点は、その他のアプローチのいずれの場合よりも頻繁であるサーバー又は
調整機関との通信の結果としてもたらされる。このような頻繁な通信は大量のネ
トワーク・トラフィックの存在下で性能を非常に急速に劣化させる。

0002

従って、必要とされているは、局所的に生成される識別子の大きなサイズが必
要とされることなく、識別子変換により性能が劣化するこたなく、又、識別サー
バーの使用に標準的に随伴する過度の通信網トラフィック無しに、包括的に唯一
のオブジェクト識別子を生成するようなシステムである。
発明の要約

0003

本発明は、分散形オブジェクト指向データベースの中のオブジェクトのため
に包括的に唯一の識別子を生成するためのシステムに関する。1つの実施形態で
は、システムは各々単数または、複数の顧客プロセスを実行でき、かつ1つの通
信網を通して通信網全体にわたるオブジェクトのための包括的に唯一の識別子を
提供するサーバーに各々接続されていいる少なくとも2基のプロセッサを含んで
成る。

0004

通信網上の各々の顧客プロセスは、サーバーに対して1つの要求を伝送するこ
とができ、このサーバーは、顧客プロセスが自ら作成中のオブジェクトを識別す
るための包括的に唯一のオブジェクト識別子を要求した時点で、包括的に唯一の
識別子を提供する。この要求に応えてサーバーは要求している顧客プロセスに対
し、1レンジの包括的に唯一のオブジェクト識別子を伝送する。

0005

要求している顧客プロセスは、次に、この包括的に唯一のオブジェクト識別子
のレンジからオブジェクト識別子を割り当てる。要求している顧客プロセスは、
自ら作成したオブジェクトに対する包括的に唯一のオブジェクト識別子の割り当
てが完了した時点で、次に、未使用の包括的に唯一のオブジェクト識別子をサー
バーまで戻し、その他の顧客プロセスのために使用できるようにする。
図面の説明

0006

本発明は、添付のクレームの中で特定的に指摘されている。本発明の上記の及
びその他の利点は、添付図面と合わせて以下の記述を参照することにより、より
よく理解できることだろう。なお、図面中、
図1は、本発明のシステムの一実施形態のブロックダイヤグラムである

図2は、図1の本発明の包括的に唯一の識別サーバーと顧客プロセスの
間の通信のブロックダイヤグラムである。
図3は、本発明のオブジェクト識別子スペースのブロックダイヤグラム
である。
図4は、図2に示されているプロセス・サーバー通信の間の包括的に唯
一の識別子スペースのブロックダイヤグラムである。
図5は、顧客プロセスとサーバープロセスの間の包括的に唯一のオブジ
ェクト識別子の作成及び移送を描いた、図1のシステムの1つの実施形態の流れ
図である。そして、
図6は、顧客プロセスとサーバープロセスの間のパラメータデータの移
送を描いた、図1のシステムのもう1つの実施形態の流れ図である。
発明の詳細な説明
図1を参照すると、分散形オブジェクト指向データベースシステム(O
DB)8は、1つの実施形態において、少なくとも3基のプロセッサーに12、
14及び16を接続する通信網10を内含する。この実施形態において、プロセ
ッサ12及び14は、各々それぞれ2つの異なる顧客プロセス18、22及び2
0、24を実行している。これらの顧客プロセス18、20、22、24は、単
一のアプリケーションプログラムの異なる連結であってもよいし、或いは異なる
アプリケーションプログラムであってもよい。ここで論述するにあたっては、顧
客プロセス18、20、22、24は、同時に走行させており、各々がオブジェ
クトを生成し従って、包括的に唯一でなくてはならないOIDを使用している。
プロセッサー16は、通信網上のオブジェクトのための包括的に唯一の
識別子を提供するサーバープロセス26を実行している。サーバープロセス26
は、多くの機能を行うことができるが、本発明ではサーバープロセス26は少な
くとも包括的に唯一のOIDの生成を援助しなくてはならない。以下ではサーバ
ープロセス26をGUIDサーバー26とも呼んでいる。さらにGUIDサーバ
ープロセス26を実行しているプロセッサー16は、その他の関連性の無いプロ
セス28を走行していってもよく、GUID生成タスク専用である必要はない。

0007

簡単に概覧して、図2を参照すると、性能を改善するために、分散形オブジェ
クト指向データベースシステム8は、包括的に唯一のオブジェクト識別子が要求
される毎にGUIDサーバー26と通信するのに顧客プロセス18、20、22
、24を必要としない。その代わり、各々の顧客プロセス18、20、22、2
4は、頻繁にではなくGUIDサーバー26からの1レンジの包括的に唯一のオ
ブジェクト識別子を要求することになる。

0008

顧客プロセス18、20、22、24がGUIDサーバー26から1レンジの
包括的に唯一のオブジェクト識別子を要求する毎に、顧客プロセス18、20、
22、24は、1ブロックの包括的に唯一のオブジェクト識別子を予約する。(
テップ50)一定の与えられた顧客プロセス(例えば18)が、1レンジの予
約済みOIDを有する間その他のいかなる顧客プロセス(例えば20)もそのレ
ンジ内のOIDを使用することが出来ない。その他の顧客プロセス18、20、
22、24は各々それ自身のレンジを代わりに予約しなくてはならない。こうし
てどの2つの顧客プロセス18、20、22、24もそれが生成するオブジェク
トに対して、同じOIDを指定できないということが保証されることになり、か
くして、包括的な唯一性が確保される。

0009

1レンジのOIDを予約の後、顧客プロセス(例えば18)は、このOIDレ
ンジからのOIDと、自らが生成したオブジェクトに対し、局所的に割り当てる
ことになる。(ステップ52)

0010

ひとつの顧客プロセス18、20、22、24は、OIDが必要と成る毎にG
IDサーバー26と通信する必要がない、という事実から、このOID生成方
法の性能利点は、増大する。実際、GUIDサーバー26に対する付加的な要求
は、顧客プロセス18、20、22、24が自ら以前に予約したすべてのOID
使い果たした時点で初めて発生することになる。

0011

顧客プロセス18が、自ら生成しつつあるオブジェクトに対し、OIDを割り
当てているのと同時に、もう1つの顧客プロセス20は包括的に唯一のオブジェ
クト識別子の異なる1ブロックを予約している(ステップ54)。顧客プロセス
20がGUIDサーバー26からそのOIDブロックをひとたび受理したならば
、このプロセスもまた自ら作成しつつあるオブジェクトに対して、OIDを割り

て始めることができる(ステップ56)。

0012

顧客プロセス18は、自ら作成しつつあるオブジェクトに対するOIDの割り
当てを終了した時点でGUIDサーバー26と再び通信して、予約済みのレンジ
からあらゆる未使用のOIDを戻す(ステップ58)。標準的には、実際に顧客
プロセス18、20、22、24がオブジェクトに対し、割り当てるOIDの数
は、この顧客プロセス18、20、22、24による使用のために予約された数
よりもはるかに少ないものとなる。顧客プロセス18が以前に自ら予約したOI
Dレンジの未使用部分を戻した後、GUIDサーバー26は、自由に未使用OI
Dをどの顧客プロセス18、20、22、24にでも提供できる(ステップ60
)。

0013

本発明の技術は、同様に同じプロセッサ上で多くのODB顧客が実行される実
施形態において、唯一のOIDを生成するためにも使用することができる。この
実施形態では、顧客プロセス及びサーバープロセスは共有のメモリーを通して通
信することができる。このような実施形態における本発明の方法による性能の改
善は、1つの通信網を内蔵する実施形態の場合ほど大きいものではない。

0014

さらに詳細に、図3も参照してみるとここで示されている実施形態においては
、OIDスペース80と呼ばれている1つのオブジェクトを用いるGUIDサー
バー26によって包括的に唯一のOIDの生成が調整されている。OIDスペ
スオブジェクトを用いることの利点は、このオブジェクトにより異なるプロセッ
サ12、14上で同時に実行中の多くの顧客プロセス18、20、22、24が
重複したOIDを生成する危険性なく新しいオブジェクト識別子をもつ新しい
オブジェクトを作成できるという点にある。

0015

1つの実施形態において、本発明は0から231ー1までの順次整数をOIDを
形成するビットパターン内にマッピングするのにOIDスペースオブジェクト8
0を使用する。従ってこのスペース内の有効なOIDの数は、そのシーケンス
の整数の数と等しい。この結果、OIDスペースオブジェクト80の濃度と呼ば
れるものがもたらされる。

0016

GUIDサーバー26は、OIDスペースオブジェクト80内の一定数のオー
バーラップしないOIDレンジ(1〜n)82、84、86、88、90へと
全ての有効OIDのスペースを区分する。これらはオブジェクト識別子が要求さ
れた時点で顧客プロセス18、20、22、24によって予約されるレンジであ
る。どの時点においても一定の与えられたレンジ(例えばレンジ 1 82)は
、最大1つの顧客プロセス18、20、22、24によって予約可能である。こ
のことはすなわちOIDスペースレンジ82、84、86、88、90の数がオ
ブジェクトを生成中でありうる。従って同時にOIDを要求することになる顧客
プロセス18、20、22、24の最大数に等しい、ということを意味している

0017

1つの顧客プロセス18、20、22、24は一般に、オブジェクトを生成中
であるトランザクションの接続時間中、1つのOIDレンジを予約する。このト
ランザクション終わりで顧客プロセスが、OIDの割り当てを終了した時点で
顧客プロセス18、20、22、24は自ら予約した各レンジについて、自らが
実際に割り当てた最高のOID92、94、96、98を記録する。かくして、
予約済みレンジの未使用部分は、次にGUIDサーバー26に戻されて、その後
の時点で同じまたは、その他のプロセスが使用できるようになる。顧客プロセス
18、20、22、24が、自ら予約したレンジ内のいずれのOIDも使用しな
かった場合この顧客プロセスは単に予約を取り消す

0018

OIDスペースオブジェクト80の濃度及び区分レンジの数は、両方ともOI
Dスペースオブジェクト80が生成された時点で特定される。濃度もパーティ
ョン数の両方ともいかなる自然数であってもよいが、(ただしパーティション
数は濃度以下であることを条件とする)、ここで示されている実施形態は両方の
数を2の累乗であるよう制限している。こうして、スペースを等しいレンジに分
割でき、又ビットシフトオペレーションによって各レンジの最初と最後の迅速な
計算が可能となる。

0019

図示されている実施形態において、OIDスペースオブジェクト80は、以下
で記述する3つのスペースパラメータ(Number-of-OIDs,Number-of-Partitions,N
umber-of-Partitions-Created)、及びHigh-Water-Vector81を含むデータ構造
ある。OIDスペースオブジェクト80は、231という濃度と27のパーティシ
ョンを持つ。かくして、ここに描かれているOIDスペースオブジェクト80は
、1レンジあたり約1600万のOIDを伴う128レンジ82、84、86、

8、90へと区分された約20億のOIDを割り当てることが出来る。各レンジ
82、84、86、88、90は、開始OID100、102、104、106
、110と最終OIDを有する、最後のものを除くすべてのレンジについて、1
つのレンジの最後のOIDは、次に続くレンジの開始OID102、104、1
06、108、110よりも1つ少ないOIDである。図3は、各レンジ100
、102、104、106、108、110の開始数値を示している。各レンジ
82、84、86、88、90は、割り当てを受けているべきそのレンジ内の最
後のOIDを表す高水位マークの92、94、96、98を有していてよい。

0020

GUIDを生成するためにOIDスペースオブジェクト80を用いることの1
つの複雑さはOIDスペースオブジェクト80がそれ自体包括的に唯一の識別子
をもっていなければならないという点にある、ということにも留意すべきである
。この問題にはいくつかの方法で対処することができる。第1の方法はOIDス
ペースオブジェクト80内の1つのOIDをそれ自身に指定することである。か
くして、例えばOIDスペースオブジェクト80にしビット例0と指定すると、
第1のパーティションは、その他のパーティションよりも1つ少ないOIDを持
つことになるが、第1のOIDはOIDスペースオブジェクト80に属すること
が予め決定されることになる。第2の方法は単に、OIDスペースオブジェクト
80を、それ自体予め予約されたOIDを持ち得るより大きなOIDオブジェク
トスペース内の1つのオブジェクトとすることにある。

0021

図4は、GUIDサーバー26と顧客プロセス18及び20(図2に示されて
いる通り)の間に複雑化が発生するにつれてのOIDスペースオブジェクト80
’内の変化を描いている。最初に(ステップ48)OIDスペースオブジェクト
80’は4つのレンジ82’84’86’88’に区分される。レンジ82’8
4’及び86’は、各々OIDを割り当て、かくして表示されている通りの高水
位マーク92’94’及び96’を有する。この例では、レンジ86’が、全レ
ンジ86’を包括する高水位マーク96’を有し、従って、それからそれ以上の
OIDを割り当てることができない、という点に留意すべきである。換言すると
、レンジ88’にはいかなるOIDも割り当てられておらず、従って、その高水
位マークはその開始点にある。

0022

顧客プロセス18がひとたびGUIDサーバー26と接触し、1レンジのOI
Dを予約したならば、前の高水位マーク92’から、終わりまでのレンジ82’
内のOID130は、予約済みとしてマーキングされる(ステップ50)。プロ
セス20がGUIDサーバー26と接触して1レンジのOIDを予約した時点で
異なるレンジ84’内の前の高水位マーク94’から、レンジ84’の終わりま
でのOID132は、予約済みとしてマーキングされる(ステッブ54)。顧客
プロセス18がGUIDサーバー26と接触してその予約済みレンジ130の未
使用部分を戻した時点で(ステップ58)、レンジ82’内の高水位マーク92
’’は、最後に使用されたOIDのレベルまで上昇させられる。新しい高水位マ
ーク92’’とレンジ82’の終わりの間のOID134は、この時未予約とし
てマーキングされる。この時、顧客プロセス18が、新しいOIDレンジを予約
するべくGUIDサーバー26に対し要求を行った場合(ステップ60)、いず
れかの未予約のレンジ(この例では88’)からのOID136を割り当てるこ
とができる。

0023

簡単に概覧して図5を参照すると、包括的に唯一の識別子を生成するためのシ
ステムの1つの実施形態においては、顧客プロセス18が1つのOIDスペース
オブジェクト80を生成し、それを一定数のレンジ82、84、86、88に区
分し、次にOIDオブジェクト80をサーバープロセス26まで移送する(ステ
ップ152)。サーバープロセス26はこのとき、OIDスペースオブジェクト
80を記憶し、オブジェクトが一度に複数の顧客プロセス18、20によって修
正されないようにするこのオブジェクトに対するロックを制御する役目を担う。
顧客プロセス18が1つのOIDレンジを予約することを望む場合、顧客プロセ
ス18はレンジを要求し(ステップ152)、それに応えてサーバープロセス2
6はOIDスペースオブジェクト80に対するロックを設け、OIDスペースオ
ブジェクト80を顧客プロセス18まで移送する(ステップ156)。

0024

顧客プロセス18はこのときOIDのレンジ86を予約する(ステップ158
)。従って顧客プロセス18は、そのレンジの開始を終わりによって区別される
通り、割り当てに利用できるOIDの1つのレンジを有する。この時点で、同時
に発生する他のいかなる顧客プロセスも、顧客プロセス18により予約された
レンジ内のOIDを割り当てることはできない。顧客プロセス18は次にオブジ
ェクト80をサーバープロセス26まで移送し戻し、サーバープロセスは、ロッ
クを解除して(ステップ160)、OIDスペースオブジェクト80に対し、顧
客プロセス18、20、22、24がアクセスできるようにする。このとき、顧
客プロセス18は、この予約済みOIDレンジからのOIDを、それが作成する
各々のオブジェクトに対して割り当てる。

0025

顧客プロセス18がOIDを割り当てている間、顧客プロセス20はOIDレ
ンジを要求し(ステップ162)、サーバープロセス26は再びロックを設ける
。その後、サーバープロセス26は、OIDスペースオブジェクト80を顧客プ
ロセス20に移送する(ステップ164)。次に顧客プロセス20は、OIDレ
ンジ82を予約し(ステップ166)、OIDスペースオブジェクト80サーバ
ープロセス26までに戻し、これがロックを解除する(ステップ168)。
顧客プロセス18がその未使用のOIDを解除することを望む場合、こ
のプロセスはサーバープロセス26に対して要求を送り(ステップ170)、こ
のサーバープロセスはロックを設けて、OIDスペースオブジェクト80を顧客
プロセス18へと移送する(ステップ172)。顧客プロセス18が未使用OI
Dを解放し高水位マーク180をリセットした時点で(ステップ174)、OI
Dスペースオブジェクト80は再びサーバープロセス26(ステップ176)ま
で移送され、これがロックを解除する。未使用のOIDの解除は、顧客がその予
約済みレンジからのOIDの割り当てを完了した後に解放される。この完了は通
常、顧客のトランザクションが完了した時点(ディスクにトランザクションを引
き渡すか又は、放棄することによって)で、あるいは稀ではあるが顧客がその予
約済みレンジを使い果たし新しいレンジを予約しなければならない時点で起こる

予約したレンジを戻す手段としては2つある、すなわちサーバーに対し
て最後に使用されたOIDを伝送すること、そして予約を取り消すことである。
前者はより一般的なものであり、顧客が1つのオブジェクトに対して予約済みレ
ンジからのすくなくとも1つのOID割り当てた時点で起こる。予約取り消し
プションは顧客がそのレンジからのいかなるOIDも割り当てしなかった場合又
は、そのトランザクションを放棄する意図がある場合のいずれかにおいて使用さ
れる。未使用OIDを戻す2つの手段については、以下でさらに詳しく記述する

ここで図6を参照すると、包括的に唯一の識別子を生成するためのシ
ステムの一変形実施形態においては、サーバープロセス26は、1つのOIDス
ペースオブジェクト80を作成し、それを一定数のレンジ82、84,86,8
8へと区分する(ステップ180)。サーバープロセス26は、OIDスペース
オブシェクトを記憶し維持する責を負う。

0026

顧客プロセス18が1つのOIDレンジを予約することを望む場合、顧客プロ
セス18は、1つのレンジを要求し(ステップ182)、それに応じて、サーバ
ープロセス26は、1つのOIDレンジを予約し、(ステップ184)、予約済
みレンジの下部および上部境界にあるOIDを顧客プロセス18まで移送する(
ステップ186)。従って、顧客プロセス18は、レンジの開始及び終わりによ
って区別されている、割り当てに利用できる1つのOIDレンジを持つ。この時
点で、同時に発生する、その他のいかなる顧客プロセス20も顧客プロセス18
により予約されたレンジ内のOIDを割り当てることができない。次に顧客プロ
セス18は、このOIDレンジからの1つのOIDを、それが作成する各々のオ
ブジェクトに対して割り当てる。

0027

その顧客プロセス18がオブジェクトに対しOIDを割り当てているのと同時
に、プロセス20は、1つのOIDレンジを要求する(ステッブ188)。サー
バープロセス26は、1つのOIDレンジを予約し(ステップ190)、予約済
みレンジの下部および上部境界OIDを顧客プロセス20まで移送する(ステッ
プ192)。

0028

顧客プロセス18がその未使用OIDを解放することを望む場合、このプロセ
ス18は、サーバープセス26に対して、それが使用した最後のOIDを含む要
求を送る。顧客プロセスが、その予約済みレンジからのOIDの割り当てを完了
した後、未使用のOIDの解放が開始される。ここでも又、この完了は、顧客の
トランザクションが完了した時点か又は、希ではあるが、顧客プロセスがその完
了済みレンジを使い果たし、新しいレンジを予約しなければならない時点で起こ
る。

0029

ここでも又、予約済みレンジを戻す手段としては2つある。すなわち、サーバ
ーに対して、最後に使用したOIDを伝送すること、そして予約を取り消すこと
である。前者はより一般的なものであり、顧客プロセスがデイスクに引き渡した
いオブジェクトに対し予約済みレンジからの少なくとも1つのOIDを割り当て
た場合に起こる。予約取り消しオプションは、顧客がそのレンジからのOIDを
全く割り当てなかったとき又は、そのトランザクションの放棄を意図している場
合のいずれかにおいて使用される。予約済みレンジがひとたび戻されたならば、
サーバープロセス26は、高水位マーク180´をリセットし(ステップ196
)、レンジ内の残りのOIDを使用できるように解放する。
いずれの実施形態にも共通の関数

0030

これらの実施形態のいずれかを実施するために、下記の関数が顧客プロセス1
8、20、22、24(第1の実施形態用)或いはサーバープロセス26(変形
形態用)のいずれかによって実行される。
OIDオブジェクトを作成し区分する

0031

[Create OID Space Object(Number of
OID Bits、Number of Partition Bits)]と
いう形式の、Create OID Space Objectと称される関数
は、一つのOIDスペースを作成して当該スペースを一定数のレンジに区分する
。Number of OID Bitsのパラメータは、OIDを形成するビ
ット数を規定する。一実施形態において、一つのOID内のビット数は省略時解
釈により31に設定され、従ってOIDスペースは231(−20億)のOIDを
含むことになる。この省略時値は、作成されたOIDが省略時解釈によって32
ビット長の単語に確実に適合するようにしている。しかしながら、OIDのサイ
ズに関して理論的な上限は無い。OIDのサイズに関しては、より低い制限を設
けることも同様に可能であることにも留意しなければならない。一つの実施形態
においては、Number of OID Bitsの数値で8ビット未満のも
のは、8ビットに切り上げられている。

0032

Number of Partition Bitsパラメータは、各々1つ
のOIDレンジを同時に予約できる顧客プロセスの最大数を規定し、従ってOI
Dスペースオプジェクト80内のパーティション数に等しい。1つの実施形態に
おいては、省略時値は128のパーティションを許容し、従って最大で128の
顧客プロセスが各々1つのOIDレンジを予約することができる。

0033

更に、OIDスペースオブジェクト80を作成した結果として、1つのベクト
ルアレーであるHigh Water Vetorと称されるデータ構造が作成
されることになる。当該ベクトルへの各入力は、1つの特定のパーティション又
はOIDレンジを表している。

0034

従って前述の省略時例では、ベクトルの長さは128のロケーション即ち;1
28のパーティション各々について1つのロケーションということになる。ベク
トル内の一定の与えられたロケーション内に記憶された数字は、その入力ロケー
ションに対応するレンジから割り当てられた現行で最大のOIDである。一つの
実施形態においては、ベクトル内の各ロケーションの高位で最も有意なビット(
例えば31ビットのOIDについてはビット32)は、「使用中」インジケータ
として解釈される。即ち、このビットが(1)に設定されると、そのロケーショ
ンによって代表されるOIDレンジは予約済みである。ビットが0であるならば
、レンジは予約されるべく利用可能である。一つの変形実施形態では、OIDレ
ンジ当たり1つのこれらのビットフラグは、別々のベクトル内に記憶される。

0035

下記の疑似コードは、この関数の実施の一つの実施形態を実証している。

0036

//最大及び最小値を規定する
MUXIMUM OID SIZEを31と定める//省略時最大OIDサ
イズ
MINIMUM OID SIZEを8と定める//省略時最小OIDサイ

0037

//省略時値を使用するか否か決定する
NUMBEROF OIDSをNumber of OID Bits及
びMUXIMUM OID SIZEの最小に設定する
NUMBER OF OIDSをNUMBER OF OID Bits及
びMINIMUM OID SIZEの最大に設定する
NUMBER OF PARTITIONSを
NUMBER OFPERTITIONS
BITS及びMUXIMUM OID SIZE
の最大に設定する
NUMBER OF PERTITIONS CREATEDを
2NUMBER_OF_PERTITI0NSに設定する
(Number_of_OIDs+1)×(Number of Part
itions Created)ビットを保持するようにHigh Water

0038

Vectorを割り当てる

0039

//各パーティションについて使用された最後のOIDに高水位マークを初期
化し、これはHigh Water Vector内の各スロットについて低位
ビット内で0を有することになる。
begin−for
スロットでの値をスロット*2(NUMBER_OF_CIDS・NUMBER_OF_PERTITI0NS)
に設定する
end−for

0040

パラメータ(Number of OIDs、 Number of Par
tition、Number of Partition Created)は
、OIDスペースオブジェクト80のデータ構造の属性である(図3)。
パーティションを予約する

0041

[Reserve Partition(Beginning OID、En
ding OID)]の形式のReserve Partitionと称される
関数は、オブジェクト識別子の1つのレンジを予約する。一つの実施形態では、
この関数は、予約に成功した場合はTRUEを戻し、いずれのレンジも予約不可
能であった場合はFALSEを戻すブール関数である。FALSEの戻しは、全
てのパーティションが使用中の場合か、或いは使用中でないものが既に使い果た
されたいた場合にのみ発生する。予約に成功した場合、この関数は、出力パラ
ータBeginning OID及びEnding OIDを、予約されたパー
ティション又はレンジ内の開始及び終了OIDそれぞれに設定する。この関数が
顧客18、20、22、24によって実行された場合、ロックを解除してOID
スペースオブジェクト80を他のユーザーが利用できるようにするため、この関
数の直後に、OIDスペースオブジェクト80はサーバープロセス26へと戻さ
れ。

0042

下記の疑似コードはこの関数の実施の一つの形態を実証している:
各パーティションについて
begin−for
開始しない場合(パーティションが使い果たされている成いはパーティシ
ョンは予約済み)
次に
begin−then
Beginning OIDをパーティションの高水位マーク+1に設
定する
Ending OIDを次のパーティション開始マイナス1に設定する
パーティションを予約済みであるとしてマークする
trueを戻す
end−then
end−for
falseを戻す
予約を取り消す

0043

[Cancel Reservation(An OID In Reser
ved range)]の形式のCancel Reservationと称さ
れる関数は、An OID In Reserved Rengeパラメータ内
引用されているOIDを含むOIDのレンジについての予約を取り消す。一つ
の実施形態では、この関数は、取り消しに成功した場合はTRUEを戻し、An

0044

OID In Reserved Rengeパラメータ内のOIDが予約済
みレンジ内に無いことが理由で取り消しに失敗した場合はFALSEを戻すブー
ル関数である。

0045

ここで記述する第1の実施形態では、この関数を使用することによって、顧客
プロセス18、20、22、24は、顧客プロセス18、20、22、24から
サーバープロセス26にOIDスペースオブジェクト80を転送するのに先立ち
、An OID In Reserved Rengeを含むパーティションが
もはや予約されていないことを表示するためにHigh Water Vect
or81内の高位ビットクリアすることができる。ここで記述する第2の実施
形態では、顧客プロセス18、20、22、24によっていかなるOIDも割り
当てられていないことをCancel Reservation関数が表示して
いることから、サーバーは高水位マークを更新する必要が無い。但し、An O
ID In Reserved Rengeを含むパーティションは未予約とし
てマークされる。

0046

下記の疑似コードはこの関数の実施の一つの形態を実証している:
An OID In Reserved Rengeを含むパーティション
探す
(パーティションが予約済みの)場合には:
begin−then
未予約であるものとしてパーティションにマークする
trueを戻す
end−then
falseを戻す
新しい高水位マークを設定する

0047

[Set New High Water Mark(New High W
ater Mark)]形式の、Set New High Water Ma
rkと称される関数は、Reserve Partition関数と共に使用す
ることを意図されている。New High Water Markパラメータ
は、顧客プロセス18、20、22、24によって割り当てられた最後のOID
を指定する。

0048

かくして例えば、顧客プロセス18、20、22、24は最初に、Reser
ve Partition関数でOIDの一つのレンジを予約し、次に新しいオ
ブジェクトが作成された場合に必要に応じてそのレンジからのOIDを割り当て
、そして最後に、トランザクションの最後に割り当てられた最高位のOIDを記
録するためにSet New High Water Markを使用する。関
数が成功裏に完了した時点で、それに続くReserve Partition
に対する呼び出しが、前の高水位マークより1だけ大きいものである開始値を戻
す。

0049

下記の疑似コードはこの関数の一つの形態を実証している:
New High Water Markを含むパーティションを探す
(パーティションが予約済みで、New High Water Mark
が前の高水位マークより大きい)場合には:
begin−then
New High Water Markを思い起こす
trueを戻す
end−then
そうでなければ
begin−otherwise
falseを戻す
end−otherwise
高水位マークを位置設定する

0050

[Locate High Water Mark(Partition N
umber)]形式の、New High Water Mark関数は、特定
されたPartition Number内で割り当てられた最後のOIDを戻
す。この関数は、成る与えられたOIDが既に割り当て済みであるか否かを決定
するためにも同様に利用することができる。ある与えられたOIDがそのそれぞ
れのパーティションについての高水位マークよりも上にある場合、それはまだ割
り当てられていない。このOIDが高水位マークより下にある場合、オブジェク
トによって現在も利用中であるという保証は無いが、それは既に割り当て済みで
ある。

0051

下記の疑似コードはこの関数の実施の一つの形態を実証している:

0052

(Partition Numberがパーティションの数より大きい)場合
には:
begin−then
error
end−then
Partition NumberについてのHigh Water Ve
ctorの内容を戻す
レンジ内の最初のOID

0053

[Get First OID In Range(Partition N
umber)]形式の、Get First OID In Rangeと称さ
れる関数は、Partition Numberによって特定されたパーティシ
ョンの最初のOIDを戻す。この関数は、それが既に割り当て済みであるか否か
に関わらずレンジの最初のOIDが戻されるような形で実行される。Get F
irst OID In Rangeの一つの用途は、使用中の全てのOIDを
探すことにあるが、前のパーティションの最後のOIDを探すためにも同様に利
用される。

0054

下記の疑似コードはこの関数の実施の一つの形態を実証している:

0055

(Partition Numberがパーティションの数より大きい)場合

0056

次に
begin−then
error
end−then
(NUMBEROF OID BITS−NUMBER OF PART
ITION BITS)+1ビットによってPartition Number
を左にシフトする
resultを戻す
第1の実施形態に必要とされる付加的関数

0057

第1の実施形態において、顧客プロセス18、20、22、24とサーバープ
ロセス26の間でOIDスペースオブジェクト80を移送するには、同時に複数
の顧客プロセス18、20、22、24によってオブジェクト80が変更される
のを予防するために、サーバープロエス26がOIDスペースオブジェクト80
上にロックを設けることができる必要がある。オブジェクト80のためのロック
を提供する一つの方法は、オブジェクト80を瞬間更新オブジェクト(IUO)
とすることによるものである。

0058

瞬間更新オブジェクトは、一度に一つの顧客アプリケーションによってオブジ
ェクトに対し変更を加えることが可能であり、これらの変更が一旦完了すると、
現行のトランザクションメカニズムとは無関係に、それらが直ちに他の顧客アプ
リケーションに見えるようになるという特性を伴うオブジェクトである。これは
変更を行う顧客のトランザクションが完全でない場合でも、或いは変更を行う顧
客のトランザクションが最終的に放棄された場合でも言えることである。或るO
JECTのIUOとしての処理は、オブジェクト又はオブジェクトのタイプに
固有のものである必要はないことに留意しなければならない。一つの実施形態に
おいては、或るオブジェクトは、Instant Update Lock(瞬
更新ロック)と呼ばれる特別な種類のロックによって施錠されている場合、そ
して唯一その場合にのみIUOである。

0059

或る顧客によって行われた更新を他の顧客に直ちに見えるようにすることによ
り、IUOは非常に高度の同時性を備えている。個々で記述したOID生成の方
法はこの種の高い同時性を要求する。特に、或る顧客が1つのOIDのレンジを
予約するためにOIDスペースオブジェクト80を修正した場合、他の顧客が修
正されたOIDスペースオブジェクト80を見て同一のレンジを予約することを
避けるものの、直ちに他のレンジを予約することを妨げられないようにするため
、OIDスペースオブジェクト80はIUOとして処理される。

0060

IUOは、複数の顧客が、他の顧客によって既に行われたオブジェクトに対す
る修正を見ることができるようにするものの、現在加えられている最終である修
正を複数の顧客が見ることは予防しなければならない。従って、瞬間更新ロック
によってOIDスペースオブジェクト80をロックすることには二重の目的があ
る。第1に、瞬間更新ロックの存在は、ロックされたオブジェクトをIUOとし
て処理するようにサーバープロセスに通知する。第2に、瞬間更新ロックの存在
は、解除されるまで他の何れかの顧客がOIDスペースオブジェクト80を読む
ことをも同様に抑止する。

0061

このようなロックの存在は、処理されなければならない付加的な問題点も発生
させる。例えば、顧客アプリケーション1(CA1)及び顧客アプリケーション
2(CA2)と呼ばれる2件の顧客アプリケーションが、瞬間更新ロックを伴う
obj1及びobj2と呼ばれる2つのオブジェクトへのアクセスを要求してい
ると考えてみよう。ここで、CA1がobj1をロックし、CA2がobj2を
ロックしていると仮定する。CA1がここでobj2のロックを試みた時点で、
CA2が既にobj2をロック済みであることから、(上述の通り)これは抑止
されることになる。次にCA2が、obj1をロックしようと試みた時点で、C
A1が既にobj1をロック済みであることから、これは抑止されることになる
。かくして両方のアプリケーションは、各々他方がその瞬間更新ロックを解除す
るのを待ちながら永遠に抑止される可能性がある。このような(デッドロック
呼ばれる)状況を回避するために、一つの実施形態は、或る顧客アプリケーショ
ンが一つの瞬間更新ロックを取得した時、当該アプリケーションは、それ以外の
ロックを取得する前に、その修正を加えロックを解除しなければならないといる
ことを要求している。顧客アプリケーションが一つの瞬間更新ロックを保持しな
がらロックの取得を試みた場合には、エラー条件が発生する。

0062

サーバープロセスは、各瞬間更新オブジェクトを、リスト中の1つの要素(I
UO List Element)として維持する。各IUO List要素に
は、一つのオブジェクト(即ち、OIDスペースオプジェクト)の包括的な唯一
の識別子、当該オブジェクト(OIDスペースオプジェクト)のディスク表示に
対するポインタ、OIDスペースオブジェクトが修正されたか否かの表示、そし
てロックされた場合には下にあるOIDスペースオブジェクトをロックしたトラ
ンザクションに対するポインタが含まれている。各IUO List要素には、
リスト中の次のIUO List要素の引用が含まれている。リストのスタート
への静的ポインタが存在する。
サーバーの機能
以下のサーバーは、読出し書込み、コミットおよびアボート、操作による
参照を永久記憶装置のデータに対して行う。
サーバー読出し処理
形式[Server Read Procedure (OID, Loc
k Type)]の関数であるServer Read Procedureは
、パラメータOIDに指示されるOIDを有するOIDスペースオブジェクト8
0を読出し、OIDスペースオブジェクト80をパラメータLock Type
を用いて、指定タイプのロックでロックする。

0063

以下の疑似コードは、この関数の実現の一実施例を示す。

0064

(Lock TypeがInstant Update Lock)であるな
らば、

0065

その時は、
以下を開始する。
必要なOIDを含むIUO List Elementを
探索し、(IUO List Elementを検出した)場合には、
その時は、
以下を開始する。
(IUO List Elementが別の処理でロックされている
)のであれば、
その時は、
以下を開始する。
顧客の処理を待機させるように指示し、
この状態を、 ロックが解除されるまで続ける。
以上を終了する。
IUO LIST Element lockerを要求中の処理
にセットする。
以上を終了する。
以上を終了する。
(IUO List Elementを)検出しなければ、
以下を開始する。
IUO List Elementを作成する。
新規のIUO LIST ElementをOID Space
Objectの各パーティションに 対するIUO Listに挿入
する。
パーティションを確保していないものとして標識を付ける
以上を終了する。
(IUOがメモリにない)場合には、
その時は、
以下を開始する。
最新のIUOの状態をディスクから読出す
以上を終了する。
以上を終了する。
OIDスペースオブジェクトを顧客に戻す。
サーバー書込み手続

0066

形式[Server Write Procedure(OID Space

0067

object)]の関数Server Write Procedureは、
パラメータOID Space objectによって指定されたオブジェクト
をディスクに書込み、OIDスペースオブジェクト80をアンロックする。

0068

以下の手続き、この関数の実現の一実施例である。

0069

(現在のトランザクションがIUOをロックしている)ならば、

0070

その時は、
以下を開始する。
IUO List Elementオブジェクトの古いバージョンを削除す
る。
IUO List Elementオブジェクトを(OID Space
Object)にセットする。
IUO List Element modified indicato
rを真にセットする。
IUO List Element transaction locke
rを0にセットする。
現在のトランザクションがIUOをロックしていないことを指示する。
以上を終了する。
サーバーコミット手続き

0071

形式[Severver Commit Procedure()]の関数S
erver Commit Procedureは、顧客のトランザクションが
コミットされる場合に、IUO List Elementを変更する。コミッ
ト時に、サーバーリストのIUOに保持された変更OIDスペースオブジェクト
80は、ディスクに書込まれる。

0072

以下の手続きは、この関数の実現の一実施例である。

0073

各IUO List Elementに対して
以下を繰り返す。
(次のIUO List Element modified,indi
catorが真である)ならば、
その時は、
以下を開始する。
IUO List Elementオブジェクトをディスクに書
き込み、
IUO List Element modified ind
icatorを
にセットする。
以上を終了する。
繰り返しを終了する。

0074

正規のコミット手続きを続ける。
サーバーアボート手続き

0075

この関数、Server Abort Procedure()は、顧客のト
ランザクションが中止された場合に、IUO List Elementを変更
する。トランザクションが中止されると、サーバーは、それが(OIDスペース
オブジェクトの)瞬間更新ロックを保持しているか否かをチェックし判定し、保
持している場合には、それらのロックを解除し、他の顧客がこれらのオブジェク
トにアクセスできるようにする。

0076

以下の疑似コードは、この関数の実現の一実施例を示す。

0077

(現のトランザクションがIUOをロックしている)ならば、

0078

その時は、
以下を開始する。
IUO LIST Element Lockerを0にセットする。
現在のトランザクションがIUOをロックしていないことを指示する。
以上を終了する。

0079

正規のアボート手続きを続ける。
サーバーのエラー回復検出および訂正

0080

顧客のアプリケーションを確保する場合、後で、その確保を戻したりキャン
ルしたりする前に、顧客のアプリケーションまたはサーバーの処理が異常に終了
し、OIDの領域が確保されているのであれば、OIDスペースオブジェクト8
0の確保を訂正するステップを踏まなければならないことに留意されたい。ある
態様では、OIDスペースオブジェクトは、すべての明らかな確保をキャンセル
することによって回復される。

0081

要求されるOIDスペースオブジェクト80がすでにメモリに存在しないとき
、OIDスペースオブジェクト80はディスクから読出され、変数Need R
ecoveryが真にセットされる。この回復関数はもOIDスペースのHig
h Water Markベクトルかビットフラグを反復適用し、億パーティシ
ョンに対し、OIDの対応範囲が確保されることを指示するために使用されるビ

トをクリアする。OIDスペースオブジェクト80は、メモリに読出されたばか
りなので、確保される領域がないため、異常終了した以前のセッションから確保
を残してから、この確保されたビットをクリアできるようにしなければならない

種々の機能

0082

上述の機能に加え、本発明に係るシステムの一実施例では、以下の機能も実現
し機能性を向上させたが、これらの機能を実現し本発明に利用する必要はない。
使用領域
形式[Ranges In Use]の関数Ranges In Useは
、現在使用中の領域数に等しい値を戻す。この数は、このOIDスペースオブジ
ェクト80を用いてOIDを現在割り当て中の顧客のアプリケーション数に等し
い。

0083

以下の疑似コードは、この関数の実現の一実施例を示す。

0084

Range Countにゼロに初期化する。

0085

各パーティションについて、
以下を繰り返す。
(パーティションが使用中に標識される)ならば、
その時は、
以下を繰り返す。
Range Countをインクリメントする。
以上を終了する。
Range Countを戻す。
使用される最高領域
形式[Highest Range Used]の関数Highest Ran
ge Usedは、OID割当のために使用される最大領域に等しい値に戻す。
戻された領域よりも大きい領域は、割り当てられたOIDを含まないが、その逆
は必ずしも正しくはないことに留意されたい。最高領域よりも低い未使用領域
あることも考えられる。例えば、Nの顧客が領域を確保しており、その顧客のう
ちKがそれぞれの確保をキャンセルし、N番目の顧客はキャンセルしなかった場
合には、未使用のKの領域が残り得る。

0086

以下の疑似コードは、この関数の実現の一実施例を示す。

0087

結果を0に初期化する
各パーティションについて、
以下を繰り返す。
パーティションに対するhigh water markを検出する。
(high water mark>Start For Given
Range(Partition))である
ならば、
以下を行う。
結果=パーティション。
以上を終了する。
繰り返しを終了する。

0088

結果に戻る。
OIDサイズ
形式[Get OID Size]の関数Get OID Sizeは、O
IDのビット数であり、Create OID Space Object関数
に対するNumber Of OID Bits入力パラメータ値に等しい値を
戻す。
パーティション

0089

形式[Get Number Of Partitions]の関数Get
Number Of Partitionsは、OIDスペースオブジェクトが
作成されたパーティション数である値を戻す。この値は、Create OID

0090

Space Object関数に対するNumber Of Partiti
on Bits入力パラメータに等しくなる。
OID生成の例

0091

一意のOIDを大域的に割り当てる際に必要な処理の全体的な流れを以下の疑
似コードに示す。この例のために、サーバーの処理で、OIDスペースオブジェ
クトを作成し、そのオブジェクトをディスクに書き込む。後になって、顧客の処
理で、OIDスペースオブジェクトを要求し、サーバー処理で、OIDスペース
オブジェクトをディスクから読み出し、そのオブジェクトをロックする。次に、
顧客の処理はOIDの領域を確保し、OIDを確保された領域から割り当て、未
使用のOIDを戻す。その後、サーバー処理で、OIDスペースオブジェクトを
アンロックし、OIDスペースオブジェクトをディスクに書き込む。
/32ビットOIDと128パーティションを有するOIDスペースオブジェク
トを作成する
/OIDスペースオブジェクトをディスクに書き込む

Create OID Space Object (32, 7)
Server Write Procedure (OID Spac
e Object)

/サーバーはOIDスペースオブジェクトを読み出しロックする。

Server Read Procedure(OID Space
Object, IUO Lock)

/OIDスペースオブジェクトのOIDの領域を確保する。

Reserve Pertition(Beginning OID,

0092

Endin OID)
Beginning OIDおよびEnding OIDを記憶する。
Number Of Allocated OIDを0にセットする。

/サーバーは、確保された領域を用いてOIDオブジェクトを書き込み、アンロ
ックし、/他の顧客が他の領域を確保できるようにする。
Server Write Procedure(OID Space O
bject)

/OIDを確保された領域から割り当てる。

割り当てられた各OIDに対するNumber Of Allocated

0093

OIDsをインクリメントする。
New High Water Mark = Beginning O
ID + Number Of Allocated OIDs

/確保された領域を戻す。
/ OIDスペースオブジェクトを読み出す
/新規のhigh water markをセットする。
/ OIdスペースオブジェクトを書き込む。

Server Read Procedure (OID Space

0094

Object, IUO Lock)
Set New High Water Mark (New Hig
h Water Mark)
Server Write Procedure (OID Spac
e Object)

0095

上述の実施例は、OIDスペースオブジェクト80を無限数の等しいパーティ
ションに区分するが、そのようなことは必ずしも必要ないことに留意されたい。
OIDスペースオブジェクト80を作成し、そのオブジェクトスペースを区分す
る関数は、大した手間をかけずに、アルゴリズムを利用してそのスペースを不平
等なパーティションに区分することができる。したがって、相当数の大きなパー
ティションを有して多数のオブジェクトを作成する顧客のプログラムニーズ
満たし、より少数のパーティションを有して少数のオブジェクトを作成する顧客
のプログラムのニーズを満たすことができるであろう。

0096

さらに、顧客の処理が現在ある領域を要求してはいるが、顧客の処理が限定数
のOIDを(例えば、200OID)、あるいは、OIDの領域のセット(例え
ば200乃至400までと800乃至1200までのOID)を要求することも
できる。これらの変更は、本文に記載した本発明の概要から逸脱することはない

0097

好ましい実施例を示してきたが、当業者らには特許請求の範囲および精神の範
囲内で、多くの変更が可能であることは理解できよう。従って、本発明は、特許
請求の範囲によって指示された如き以外で制限する意図はない。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ