160bit space
Tag: γ
β α
γ
図5.2 タグを基にした検索(γグループに属するノードに検索を行う)
5.2.2 ノードタグの共有
ノードタグの選出方法を図5.3に示す.図5.3に示すように,ノードのタグは,ノード が取得したデータにより動的に決定される.5.2.1節で説明したように,データにはタグ が付加されているため,データを取得したノードは,そのデータに付加されているタグ 情報も取得可能である.そのため,P2Pシステム上で複数のデータを取得していく中で,
あるノードにおいて出現頻度の高いタグと,出現頻度の低いタグを区別することが可能で ある.本研究では,あるノードにおけるタグの出現頻度を,タグの優先度として扱い,出 現頻度の高いタグほど,あるノードにとって重要なタグであると定義する.そして,ある ノードの中で相対的に高い優先度を持つタグをノードのタグとして設定し,P2P システ ム上で共有する.
ノードのタグとその優先度は,P2P システム上において,ノードへのポインタ(ノー ドの識別子,IPアドレスなど)と一緒に共有される.本研究では構造化P2Pオーバーレ イネットワークとしてKademliaを用いているため,ノード情報はP2Pシステム上への データの登録・検索・取得処理など,様々な操作によってやりとりされる.Kademliaで は,このような操作を行う中で経路表へノード情報を格納するため,本研究でも,基本的
䝕䞊䝍
Tag A Tag B Tag C
Tag A Tag C
䝜䞊䝗
A A
A B
C B
C C
䝎䜴䞁䝻䞊䝗䛧䛯䝕䞊䝍
ືⓗ䛻Ỵᐃ
図5.3 ノードタグの選出方法
な動作は同様である.したがって,実装における本研究で拡張したKademliaと,通常の
Kademliaとの唯一の違いは,ノードへのポインタにタグが入っているか居ないかという
ことになる.
また,本研究においてノードのタグは,データの取得を行っていく中で決定されるた め,初めてP2Pシステム上に参加したノードにはタグがつかないことになる.このよう な場合,ノードはどのグループにも属さないため,P2P システム上への操作は,全ての ノードが関与するKademliaへの操作となってしまい,オーバーヘッドが高くなると共 に,ユーザへの応答が遅れる可能性がある.そのため,実装を行う場合には,検索クエリ などに含まれるキーワードなどを基に,一時的なタグを決定し,実際にデータを取得した 場合に,ノードのタグを正式に決定するといった動作を行う.
5.2.3 データタグとノードタグとのマッチング
データタグとノードタグとのマッチングは,データ展開時のキャッシュノードの選択時 に発生する.この作業では,データタグにより多く該当するノードを検索するため,5.2.2 節で述べた,ノードタグを手がかりにノードの検索を行う.データタグとノードタグとの マッチングを図5.4に示す.
まず,あるデータタグを持つノードに対して,すべてのデータタグを検索クエリとして ノードの検索を行う.ある1つのタグに関して問い合わせを行うのは,5.2.1節で述べた,
タグのみを指定した検索と同様の理由からだが,4.2.1節で述べた理由から,データを配 置するユーザはあらかじめ同じタグを持つノードを隣接ノードして選んでいる可能性が高
いため,5.2.1節で述べた場合よりも,検索時間は短くなることが期待できる.
また,5.2.2節で述べたように,ノードタグには,優先度としてタグの出現頻度(=デー
タ取得数情報)が付加されている.そのため,上述した方法で取得したノードの中から,
展開しようとしているデータタグとノードタグの一致数が多く,かつ,絶対的にタグ優先 度の高いノードをキャッシュノード候補として選出することが可能である.したがって,
本研究では,データタグとノードタグの一致数でまず候補を絞り,さらに,その中で優先 度の高いノードを選ぶという,2段階の照合を行うことで,高精度なデータタグとノード タグとのマッチングを行う.
2
4 2
3
4 2 5
3
3
5 2 3
6 2
2
2
3 5
2 3 Tag A
Tag B Tag C Tag D Tag E Tag F
䠄 Tag A 䠅 Kademlia
=11 =14 =13 =12 =13
Priority:
New Data
図5.4 データタグとノードタグとのマッチング
5.3 動作
本節では,5.2で説明した各要件について,実際のP2Pシステム上での動作に沿って説 明を行う.
5.3.1 データの配置
データの配置方法を図5.5に示す.本研究のP2Pシステムでは,データを配置する際 は,必ずキャッシュノードについて考慮を行った後,データ展開を行う.そのため,デー タの配置は,オリジネータノードがキャッシュノードを作成することで行われる.本研 究手法では,配置しようとしているデータに似た種類のデータを取得しているノードを キャッシュノードとするため,まず,キャッシュノードとして適切なノードを検索する.
検索方法は,5.2.3節で述べたとおりである.このとき,もし複数のノードが見つかった 場合には,パレートの法則により,上位20%のノードに対して配置を行う.パレートの 法則を用いるのは,P2Pネットワーク上で扱われるタグの分布の傾向が,パレートの法則 にしたがっているためである.したがって,複数のノードが見つかっても,上位20%の ノードが1以下の場合(見つかったノードが5ノード未満の場合)には,キャッシュノー ドの作成は行わない.また,ノードが見つからなかった場合には,データのキャッシュ
ノードによる展開は行わず,通常のP2Pシステムと同様に,オリジネータノードからの データ展開を行う.