2011-06-28 13 views
3

データベースの大きなグラフが相互に接続されているとします。事実上、1つの巨大な分散データベースです。グラフ上の任意のノードは、近隣ノードから取得した結果を受け取り、結合された結果をクエリ・パスに戻すことで、近隣ノードを再帰的に照会することによってデータベース全体を照会できます。この分散データベースのデータロケーション最適化アルゴリズムの名前は?

また、ノードのデータベースに「十分な」結果が含まれている場合、再帰を停止する機能があると仮定して、まともな結果が既に存在する場合はネットワーク全体を照会する必要はありません。これは、私が関連すると言っていることを意味します。

返されたデータを、クエリが作成されるたびにクエリを生成したノードに一歩近づけて転送するのは意味がありませんか?つまり、照会されたノードはネイバーに照会してXを取得し、自身を照会してYを取得し、照会したノードにX + Yを戻し、Xをそのデータベースに保管し、Yをそのデータベースから削除します。この結果、最終的には、クエリ中に参照されるノードの量に関して、平均して分散データベースがそのノード間でほぼ最適なデータ分布を持つことになるのではないでしょうか?

このテクニックの名前はありますか?

+1

これは、「データ局所性」という概念がある場合にのみ意味があります。つまり、ノードの特定のセットから発信されたクエリは、特定の種類のデータを必要とします(たとえば、巨大なデータベースにHTMLページ、イタリアからはイタリアのページが欲しい)。基本的には、「分散キャッシング」という形式を実行しようとしています。私が理解していないことは、この後にYが保存されるところです。あなたはどこかYを削除しないで保存する必要があります... – akappa

+0

ノードがY情報を削除するのはなぜですか? – Tobu

+0

Yは、クエリノードに渡された結果の一部で、クエリノードを格納します。 – mwhite

答えて

2

このトピックは、グリッドコンピューティングに多く含まれています。あなたはdata grid replica placementのようなもののためのGoogleの学者の検索をしたいです。アクセスに多くの時間的局所性がある場合(ノードがいくつかのデータを必要とする場合、近い将来にはそれが多く必要になる)、データはほとんどが読み込みされます。 yi_Hが指摘しているように、データが大きく変更された場合、「キャッシュ」(レプリカ)のコヒーレンシーが大きな問題になります。

1

このような手法がありますが、データを変更すると更新する必要がある結果をキャッシュすると、そのデータをキャッシュするデータに格納するか、みんなに知らせるこのようなものを実装するには、パフォーマンスを低下させる多くの調整が必要です。また、データベースが提供する制約を緩和して、同期していないキャッシュ結果を取得する可能性があることをアプリケーションで認識することもできます(キャッシュされていないバージョンを必要とする場合)。

関連する問題