[題名] jnushareの提案その3 [作成] 2000年11月22日 daishi@axlight.com [名称] プロジェクト名:jnushare プロトコル名:Global Information Sharing Protocol (GISP) [言葉の整理] ノード :サービスを提供する単位(ソフトウエア) ノードID:ノードの識別子で、"ホスト名:ポート番号" ホスト名は、FQDNまたはIPアドレス ビュー :あるノードが認識している別のノードのリスト アイテム:情報(ファイル)の単位 メタ情報(題名等)と情報の所在(URL)を保持する場合と、 メタ情報(題名等)と情報の中身(データ)を保持する場合がある コレクション:アイテムのリスト 検索結果の一覧や、あるノードが持っているアイテムの一覧を 表す場合に用いる [登録クエリ・検索クエリのルーティング] まずは、状況について ノードが提供するもの ノードID :"ホスト名:ポート番号" (例:"192.168.12.34:5678") ノードの強さ :0〜10 (例:8) ノードがある国:(新登場) 国の識別子 (例:"JP") 登録クエリが提供するもの アイテム:登録する情報 アイテムにはキーワードと対象とする国識別子が含まれている 強さ :対象とするノードの強さ 検索クエリが提供するもの キーワード :検索語 (例:"apple") 対象とする国:国の識別子 強さ :対象とするノードの強さ 次に、情報を登録する場合について 1. ノード集合Aを自ノードのビューで初期化する 2. 登録クエリに国識別子が指定されていれば、 指定された国以外の国識別子を持つノードをAから削除する 3. 登録クエリに強さが指定されていれば、 指定された強さ_以上_のノードをAから削除する 4. 登録クエリのキーワードのMD5ハッシュ値と、 自ノードIDのMD5ハッシュ値との差より遠い ノードIDのMD5ハッシュ値を持つノードをAから削除する 5. 登録クエリのキーワードのMD5ハッシュ値に一番近い ノードIDのMD5ハッシュ値を持つノードをAから一つ選び、ノードBとする 6. Bに登録クエリを転送する ただし、強さとしてノードBの強さを指定する 7. 登録クエリを処理して、情報を自ノードに登録する さらに、情報を検索する場合について 1. 検索クエリを自ノード内部のコレクションに対して処理する 検索結果が存在する場合は終了する それ以外の場合は次に進む 2. ノード集合Aを自ノードのビューで初期化する 3. 検索クエリに国識別子が指定されていれば、 指定された国以外の国識別子を持つノードをAから削除する 4. 検索クエリに強さが指定されていれば、 指定された強さ_以上_のノードをAから削除する 5. 検索クエリのキーワードのMD5ハッシュ値と、 自ノードIDのMD5ハッシュ値との差より遠い ノードIDのMD5ハッシュ値を持つノードをAから削除する 6. 検索クエリのキーワードのMD5ハッシュ値に一番近い ノードIDのMD5ハッシュ値を持つノードをAから一つ選び、ノードBとする 7. Bに検索クエリを転送する ただし、強さとしてノードBの強さを指定する [クエリルーティングのさらなる拡張] 上記ルーティング方式では国で分割したが、 さらに州や県を指定して階層的に分割することもできる 上記検索クエリのルーティングでは、検索結果が1件でも 見つかった時点で検索が終了するが、 検索クエリに検索をストップするノードの強さを指定して、 その強さのノードまでは検索結果があってもルーティングを続けるようにできる ノードの強さが0の場合はルーティングをしない方式にすれば、 ノード情報を公開するが、アイテムを保存しないノードも導入できる [あいまい検索について] GISPでは、キーワードのMD5ハッシュ値によりインデックスの分散を行うので、 キーワードが異なると検索ができない場合がある。 (できる場合は、たまたま別のキーワードのハッシュ値が近いか、 検索したいアイテムがキャッシュ機能によって大くのノードに共有されている場合等) 例えば、Aさんが"friends"の情報を公開しようとして、 キーワード"friends"で登録したとする。 このとき、Bさんが、"friends"の情報を検索しようとして、 キーワード"friends"で検索を行えば問題なく情報は得られる。 しかし、Bさんが、"friend"で検索した場合は、 "friends"と"friend"のMD5ハッシュ値はたぶん大きく異なるので、 異なるノードに検索にいってしまう可能性が高い。 これを回避するには、キーワードを登録するときに 「大文字は小文字に」、「複数形は単数形に」、、、 などの細かいルールを決め、それに従う必要がある。 または、思い付く限りのキーワードを挙げ(ソフトウエアが自動展開し)、 複数のアイテムとして重複して登録するという方法も考えられる。 ---- 以上