P2Pを活用した小規模データベースの集約化

P2Pを活用した小規模データ
ベースの集約化
大阪市立大学大学院
創造都市研究科
藤田昭人
はじめに
• 個人アーカイブ
– 個人が維持・管理するスタンドアロン論文データベース
– 公開論文アーカイブ( CiteSeerなど)から取得した論文メタデータを管理する
– 論文データの格納場所(URL)を示すと共にローカルにキャッシュする
• 本研究のテーマ: 多数の個人アーカイブをネットワーク経由で共有する
→ 個人アーカイブの核となる小規模データベースの集約化
– メタデータの冗長保存により耐障害性が向上する
– 公開論文アーカイブ・サービスのシステム負荷を軽減する
– 利用者が作成する2次的情報(要約やコメントなど)も共有できる
◎ 十分に多数の個人アーカイブを集約できれば公開論文アーカイブに
匹敵する収蔵論文の網羅性が確保できる
小規模データベースの集約化
• 個人アーカイブ相互でのデータ共有からの要請
– 可能な限り多くのノードが接続できることが望ましい
– 携帯型情報機器(ノートPC)などのサポートが前提
• 既存の分散データベース技術活用での問題
– 分散アーカイブとしてのスケーラビリティ
– ネットワーク接続状態の動的な変化
◎個人アーカイブのネットワークは自律分散型の分散システム
として機能する必要がある
小規模データベースの集約方法
• 自律分散システムとしてP2Pに注目
• 分散データベースに対するP2Pシステムの相違点*
① ノードの接続・離脱(自律的に接続・離脱)
② クエリ対象の配置(任意のノードに存在可能)
メリット
③ クエリ応答(全てのノードからクエリ応答があるとは限らない)
→分散ハッシュテーブル(DHT)の活用により改善される
④ データの構造定義(全てのノードで共有されるスキーマがない)
* Ng W.S., Ooi B.C., Tan K.L., Zhou A.:
PeerDB: A P2P-based System for Distributed Data Sharing. (ICDE ’03)
問題点
DHT上でのスキーマ共有の実現
• DHTの問題点
– データのルックアップにはハッシュを使用しなければならない
– クエリにおいて対象データの構造(スキーマ)を仮定できない
解決策: ハッシュを使ってデータとスキーマを表現する
• DHTで使用されるハッシュ
– コンテント・ハッシュ (Content Hash)
• 格納データに基づくハッシュを使用する
• データ更新時の競合を考慮する必要がない
– コンシステント・ハッシュ (Consistent Hash)
• 格納データの内容に依存しないハッシュを使用する
• データ更新時の競合を考慮する必要がある
ハッシュを使ったデータとスキーマの表現
• データとスキーマの対応付けを含めた表現 → テーブル
• データベース内のテーブルをハッシュ・ブロックとして表現
– テーブルをスキーマとレコードに分割
– 各々をコンテンツ・ハッシュ化
– スキーマ・ブロックおよびメタデータ・ブロックのハッシュ・キーのリストを
コンシステント・ハッシュ化
テーブルのハッシュ化
Table
Title
Title
Author
Author
・・・・・・・・・ URL
・・・・・・・・・ URL
Record List
(Consistent-Hash)
Schema Block
(Content-Hash)
H(Schema)
Schema
H(MetaData0)
H(MetaData1)
Title
Author
MetaData Block
(Content-Hash)
・・・・・・・・・ URL
MetaData0
H(MetaDataN)
MetaData1
MetaData Block
文献ごとのメタデータを Content Hash 化したブロック
SQL の INSERT 文により記述する
Schema Block
テーブルのスキーマを Content Hash 化したブロック
SQLのCREATE TABLE 文により記述する
Record List
Schema Block と MetaData Block のハッシュ・キーのリスト
テーブル名から生成したハッシュ・キーによる Consistent-Hash
MetaDataN
Hash
ハッシュ化テーブルに対する検索
• ネットワーク上に分散する複数のハッシュ化テーブルに対して
検索を行う
– 検索はハッシュ化テーブルが存在する各ノードで並列して実行される
– 検索結果は検索を要求したノードのデータベースに新たなテーブルとし
て格納される
小規模データベース集約のための機能
• 個人アーカイブの論文メタデータ(文献情報)をノード間で
共有するためには・・・
メタデータの公開
論文メタデータをテーブルに登録し、
テーブルのハッシュ化を行う。
メタデータの取得
ハッシュ化されたテーブルに対して選択条件を指定して
論文メタデータを検索し、その結果から新規テーブルを
作成する
メタデータの公開
①
②
③
④
公開するメタデータをデータベース上のテーブルに登録する
該当テーブルをハッシュ化する
DHTアルゴリズムにより決定されるノードにハッシュ・ブロックを格納する
レコードリストが格納されたノードではバックアップのテーブルを作成する
メタデータ
③
④
③
①
レコードリスト
②
スキーマブロック
③
メタデータブロック
メタデータブロック
メタデータブロック
③
③
メタデータの取得
①
②
③
④
任意の複数のテーブルに対し選択条件を付与して検索を行う
各テーブルでの検索結果はレコード・リストとして受け取る
レコード・リストに基づいてスキーマ・ブロックとメタデータブロックを取得する
ローカル・データベース上に新規テーブルを作成する
スキーマブロック
メタデータブロック
③
③
①
④
レコードリスト
②
③
メタデータブロック
③
メタデータブロック
おわりに
• P2Pによる小規模データベースの集約化での技術的課題は
クエリ応答の不確実性とスキーマの共有である
• アクセス可能な全てのノードからのクエリ応答を得るためには
分散ハッシュテーブル(DHT)が活用できる
• DHT上でスキーマの共有を図るため、テーブルのハッシュ化
およびそれを利用したメタデータの共有方法を提案した
• 現在 i3Chord および SQLite を利用したプロトタイプを開発中