ネットワークにおける複数データベースの最適ロケーション問題

藤重研究室  都築 祐哉

1.序論

ネットワークシステムの信頼性や能力の向上など,様々な目的で複製データベー スのロケーション問題は研究されている.本研究ではコミュニケーショ ンの費用に注目して,その最適な複製データベースの配置について研究を行う.
ネットワーク内のデータベースを利用する各ユーザについて,期間毎に要求され る情報量を,ユーザ固有の値として設定する.このネットワークをグラフで表し, 各ユーザをグラフ内の点とし,その情報量を各点の重みとして,1期間における,ネッ トワーク全体の情報伝達の費用が最小になるように,データベースを配置する.
しかし,一般のネットワークにおけるこの問題はNP-困難であることが分かってい るので,本研究では 木構造を持ったネットワークについて研究を行う.

2.問題の設定

ネットワークを重み付けされた無向グラフ G(V,E)で表し,点vをユーザ, 枝 eを,ユーザ間のリンクとする.各ユーザ vは,1期間の読み書きの情 報の要求量に応じて,それぞれr(v),w(v)の重みを持っているとする.また, ある2点x,y間の距離を,d(x,y)で表し,特に, ネットワーク内のある点集合をX={x1,x2,・・・,xp}と したとき,
d(x,X)を

d(x,X) = min{d(x,xi)|xi in X}

と定義する. ネットワーク上でデータベースの置かれた点の集合をXとし,Xの全ての点を 結ぶGの部分木をT(X)とする.あるユーザvがデータを読む際は,vから最も近いデータベースから読むとし,その 単位期間の費用は,r(v)d(v,X)であるとする.
また,書き込む際には,全てのデータベースに書き込まなければならない.そこで, T(X)の点で,vから最も近い点をv'とし,T(X)の全ての枝の長さの和を l(X)とすると, 点集合X cup{v}の全ての点を結ぶGの部分木T(X cup{v})の全長は l(X cup{v})=l(X)+d(v,v')と置ける.このとき,単位期間におけるユーザ vからの書き込みの費用は,w(v)l(X cup{v})であるとする.
以上より,全体の費用 Cost(X)は,次のように表される. Cost(X)=sum r(v)d(v,X)+sum w(v)l(X cup{v}) 3.新しいモデルとその解法 データベースの利用において,常に最新の情報を必要としない状況を考える.そ こで,各データベースへの,情報の書き込みについて,次のような設定を加える.
各ユーザが書き込んだ情報は,ある期間一定のデータベースに蓄えられ,期間毎に, 他の全てのデータベースを書き換えるようにする.つまり,ユーザが情報を書き 込めるデータベースは1つに決まっており,他のデータベースは全て読み出し専 用と考える.
このようなモデルについて,~1期間での費用を考えると,読む場合は,以前と同様で ある.次に,各ユーザが書き 込む場合の費用は,情報を蓄えるデータベースの置かれる点をx0とすると, sum{w(v)d(v,x_0)|v\in V}で求められる.そして,一定期間蓄えた情報を全て のレプリカにコピーする際は,1期間当り,蓄えられた情報の総量sum{w(v)|v in V} と木T(X)の全長l(X)の積より求められる.このモデルにおける 1期間当りの全体の費用評価の式は,次のように与えられる.

Cost(X,x_0)=sum r(v)d(v,X)+sum w(v)d(v,x_0) +l(X)sum w(v)

この問題を,任意のx0についての部分問題に分け,各x0についての最適解 X*(x_0)のうちで,最小のものが,原問題の最適解(X*,x0*)である.
この問題を解くために,ネットワークの1-メディアンを求める.1-メディアンと は,各点の重みをalpha(v)としたとき,H(u)=sum alpha(v)d(v,u)を最小にするuであるが,このモデルでは,データベースへ の書き込みはx0から行われるため,次のようにalpha(v)={r(v)|v !=x0},alpha(x0)=r(x0) +sum w(v)として求める.
この1-メディアンをu0(x0)として,部分問題を解くアルゴリズムを以下に示す.

<部分問題の解 X*(x0)を求めるアルゴリズム>}

[Step 0] X*(x0)={u0(x0)}とする.
[Step 1] T(X*(x0))の任意の葉u'に隣接する X*(x0)に含まれない点uで,
     sum w(v) - sum{r(v) | v in Tu} < 0となる点uが存在すればStep 2へ.
     存在しなければ,
     X*(x0)は部分問題の解である.(停止)
[Step 2] X*(x0)←X*(x0) cup{u}としてStep 1へ戻る.
このアルゴリズムで,Tuは,Tをu0(x0)を根とする木としたときの,uを根とするTの部分木である.

4.今後の課題

今回提案したアルゴリズムでは,各x0毎に部分問題を解いているが,この形で はないより高速な解法の研究が望まれる.