第 5 章 設計 21
5.2 設計概要
本節では,5.1節で説明したそれぞれの要件について,設計を行う.
5.2.1 データタグの共有
データのタグは,各データについて必ず1個以上設定される.基本的にはタグはデータ に関するその他のメタ情報(データのサイズ,データの識別子など)と同様に共有され るが,このような方法のみだと,構造化P2Pオーバーレイネットワークの性質上,キー があらかじめわかっていないと検索が出来ないため,データの発見に時間がかかる可能 性が高い.そのため,本研究では,P2Pシステム上にデータのメタ情報を登録する際に,
キーとバリュー以外に,タグを指定することを可能とする.タグを指定することで,メタ 情報の登録処理は,P2Pシステム上の同じタグを持つノードに対して優先的に行われる.
そして,同じタグを持つノードの中で,Kademliaとして適切なノードにバリューが格納 されるようになるため,タグを指定することで,データの発見を高速に行うことが可能と なる.
データを検索・取得する際も,キーを基にして検索するだけでなく,キーとタグ,タグ を基にした検索を可能とする.タグは複数個指定することが可能であり,タグを指定しな
21
5.2. 設計概要 第 5章 設計
い場合には通常のKademliaの動作によって検索・取得が行われる.キーとタグを指定し た場合(図5.1)には,キーを検索する際に,同じタグを持つノードのみに検索を行うた め,検索範囲を縮小することで,より高速な発見を行うことが可能である.
また,タグを指定した検索を可能にする.これは,構造化P2Pオーバーレイネットワー ク上で,擬似的なキーワード検索を可能にするためである.タグのみで検索を行う場合
(図5.2)には,同じタグを持つほぼ全てのノードに対して検索を行うことになるため,構
造化P2Pオーバーレイネットワークを用いた通常の検索よりも時間がかかる可能性があ る.しかし,複数のタグを指定した場合にも,それぞれのタグに対して検索を行うのでは なく,ある1つのタグに関して問い合わせを行えば検索が完了するため,通常の非構造化 P2Pオーバーレイネットワークでのキーワード検索と比べて,リソースの消費を最小化 することが可能である.検索が1つのタグに関しての問い合わせのみで終わる理由は,構 造化P2Pオーバーレイネットワークが,1度の検索で,あるタグを含むすべてのメタ情報 を取得することが可能であるためである.そのため,複数のタグが検索された場合には,
1つのタグの検索によって得られたメタ情報に対して,他のタグをマッチングすることに よりAND検索を行い,最終的な結果が得られることとなる.
D
Y B
Z C
X A
Y B
X A
Y
Z C
Kademlia 160bit space
Key: D Tag: γ
β α
γ D
図 5.1: キーとタグを基にした検索(γグループに検索を行う)
5.2. 設計概要 第 5章 設計
D
Y B
Z C
X A
Y B
X A
D
Z C
Y Kademlia
160bit space
Tag: γ
β α
γ
図 5.2: タグを基にした検索(γグループに属するノードに検索を行う)
5.2.2 ノードタグの共有
ノードタグの選出方法を図5.3に示す.図5.3に示すように,ノードのタグは,ノード が取得したデータにより動的に決定される.5.2.1項で説明したように,データにはタグ が付加されているため,データを取得したノードは,そのデータに付加されているタグ 情報も取得可能である.そのため,P2Pシステム上で複数のデータを取得していく中で,
あるノードにおいて出現頻度の高いタグと,出現頻度の低いタグを区別することが可能で ある.本研究では,あるノードにおけるタグの出現頻度を,タグの優先度として扱い,出 現頻度の高いタグほど,あるノードにとって重要なタグであると定義する.そして,ある ノードの中で相対的に高い優先度を持つタグをノードのタグとして設定し,P2Pシステ ム上で共有する.
ノードのタグとその優先度は,P2Pシステム上において,ノードへのポインタ(ノード の識別子,IPアドレスなど)と一緒に共有される.本研究では構造化P2Pオーバーレイ ネットワークとしてKademliaを用いているため,ノード情報はP2Pシステム上へのデー タの登録・検索・取得処理など,様々な操作によってやりとりされる.Kademliaでは,こ のような操作を行う中で経路表へノード情報を格納するため,本研究でも,基本的な動作
– 23 –
5.2. 設計概要 第 5章 設計
䝕䞊䝍
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段階の照合を行うことで,高精度なデータ タグとノードタグとのマッチングを行う.