16.1. 識別子の管理

著者
Matthew B. Jones
日付
  • 20100301 [MBJ] 識別子の説明文の最初の素案
目標
任意の書式の識別子を Metacat が扱えるように拡張する
要約
Metacat は現在のところ ‘docids’ と呼ばれる識別子文字列をサポート している。これは ‘scope.object.revision’ という書式を持っており、 たとえば ‘foo.34.1’ となる(これを ‘LocalIDs’ と呼ぶことにしよう)。 今、我々は、Metacat に任意の文字列が識別子として使える様にしたいと 思っているが、識別子の固有性と正しいリビジョン操作はなお強制したい。 (これを GUIDs と呼ぶことにする)。Metacat はこれらの文字列を CRUD の全操作に対する識別子として受理できなければならないし、 検索結果において参照できなければならない。

16.1.1. 識別子の解決

Metacat は LocalIDs を、オブジェクトを参照するコードの至る所で 使用しており、また LocalID は制約された構造になっていて 識別子の中にリビジョンに関する意味を含んでいるため、 それをより制約の少ない文字列型識別子にすっかり置き換えるには、 Metacat の大部分の書き換えが避けられない。 それゆえ、代替案として、Metacat の API に 識別子解決レイヤをかぶせて、制約のない GUID を Metacat 内部で使用する制約のあるローカル識別子に対応させる方法を 考えている。基本的な識別子テーブルモデルは図1 に示した。 図2 にはオブジェクト取り出しの基本戦略を示した。 オブジェクト作成は図3、オブジェクト更新は図4、オブジェクト消去は 図5である。

16.1.1.1. 識別子テーブル構造

_images/identifiers.png

図 1. 識別子用のテーブル構造

16.1.1.2. 文書読み出し操作の扱い

GUID を用いてオブジェクトを読み出すのに必要な手順を示す。

_images/guid_read.png

図 2. オブジェクトを取り出すため、文字列型識別子 (GUIDs) を docids (LocalIDs) に変換するための基本操作

16.1.1.3. 文書作成操作の扱い

GUID を用いてオブジェクトを作成するのに必要な手順を示す。

_images/guid_insert.png

図 3. オブジェクトを取り出すため、文字列型識別子 (GUIDs) を docids (LocalIDs) に変換するための基本操作

16.1.1.4. 文書更新操作の扱い

GUID を用いてオブジェクトを更新するのに必要な手順を示す。

_images/guid_update.png

図 4. オブジェクトを更新するため、文字列型識別子 (GUIDs) を docids (LocalIDs) に変換するための基本操作

16.1.1.5. 文書削除操作の扱い

GUID を用いてオブジェクトを削除するのに必要な手順を示す。

_images/guid_delete.png

図 5. オブジェクトを削除するため、文字列型識別子 (GUIDs) を docids (LocalIDs) に変換するための基本操作