next up previous
Up: KLIC による並列アクテイブデータベース処理の実現 Previous: 研究の内容

研究の成果

(1)研究上の成果

○SQL クライアント
クライアントにおける SQL の会話的なインタフェースを実現した。今後、 KLIC 中からストリーム的にコマンドを渡せるように拡張することにより、組 込み型のデータベース操作も可能となる。標準的なデータベース操作言語が、 KLIC の中から利用できることは、今後の展開において大きなメリットであろ う。

○並列関係データベース処理
関係データベース処理の並列化では、次の3つのレベルが考えられる。

  1. 複数のトランザクションをシリアライザビリティを保ちながら同時に並 列実行
  2. 1つのトランザクションの問い合わせ木内の関係代数演算をパイプライ ン並列実行
  3. 1つの関係代数演算の中の処理をデータ並列で実行
水平データ分割を行い、KLIC の永続プロセスのカプセル化機能、論理変数の ストリーム並列機能、プラグマによるプロセサ割り当て機能等を有効利用する ことにより上記の 3 レベル全てをスマートに採り入れられることを示すこと ができた。水平データ分割に関しては、これまでレンジ分割、ラウンドロビン 分割、ハッシュ分割が研究されてきた。ページの絞込み、不等号検索の可否、 データの偏りなどの面で、それぞれに長短所があることが知られている。我々 は、絞込みと不等号検索が可能で、データの偏りをある程度抑えられる手法と して、B-tree との組合せを提案し、実現した。B-tree の分岐部分も並列に扱 うことにより、処理性能を向上させている。

○並列トランザクション管理
ネステッドトランザクションの並列実行管理、ログによる部分的リカバリィ機 能、階層ロック、並列デッドロック検出、アクティブルールの発火等を実現し た。これらの機能は、かなり複雑な構造を必要とするが、KLIC を用いること によって比較的少ない工数で実現することができた。特に、並列デッドロック 検出では、実行中のトランザクション間の依存関係を KLIC のサスペンド/レ ジューム機構を使うことにより、動的検出を非常にスマートに実現できること が分かった。

○耐故障化
非決定性を含む KLIC の耐故障化は非常に難しい問題の1つであったが、我々 は、並列論理型言語のデバッグのために提案されていた Instant Replay の手 法と耐故障化のための Primaly Site Approach を融合させることによって、 並列ハードウェアの故障を KLIC のレベルでマスクする手法を提案した。プロ グラム変換を用いているため、プログラマは耐故障化を気にすることなくプロ グラムすることができ、耐故障化のコストもあまり高くないことを示すことが できた。

(2)ソフトウェアとしての成果

Parade (PARallel Active Database Engine) と名付けた並列アクティブデー タベースシステムを KLIC で実現している。ソフトウェア構成の概要を 図1に示す。KLIC の永続プロセスとプロセス間のメッセー ジ通信をベースに、全体として拡張性に重点を置いて、新たな機能を盛り込む ことが容易になっている。以下に、SQL クライアント、並列関係データベース 演算実行、並列トランザクション管理、耐故障化、に分けてその内容を記す。

  
図1: システム構成

○SQL クライアント
KLIC のソケット機能を利用することにより、容易にクライアント/サーバが 実現できた。クライアントでは、SQL 文をパーズして関係代数演算列を生成し サーバに送る。パーザはコンパクトにできており、パーザ自身にあまり並列性 がないため、クライアント側で実行するようにしている。今後 KLIC に SQL インタフェースを組み込むことを考えた場合には、パーズをサーバ側で行なう ことも考慮したい。現在、SUN ワークステーションをクライアント、超並列マ シン nCUBE2 を並列アクティブデータベース処理サーバとして実現し、既に部 分的に動作している。しかしこれに留まらず、KLIC の高いポータビリティか ら、より広い範囲の動作環境に適用できる。

○並列関係データベース演算実行
サーバは、トランザクション毎に、関係代数レベルのコマンド木を受け付けて、 トランザクション単位、コマンド木単位、関係代数演算単位の並列処理を実現 している。これまでに、並列選択演算、並列射影演算を実現し評価した。KLIC で実現していることから、I/O 関係も、高速化のための専用コーディングを取 入れながら、できるだけ汎用のものを利用するようにして、システム全体のポー タビリティを高めている。

○並列トランザクション管理
複数のアクティブルールの同時発火、ルールのために起動された操作をサブト ランザクションとして扱うネステッドトランザクションの並列実行管理、ログ によるサブトランザクション単位の部分的リカバリィ機能、リレーション単位 とページ単位の階層ロック、時間監視でなく WFG によるリアルタイム並列デッ ドロック検出等を KLIC によって実現している。

○耐故障化
N-queen 問題をマニュアルで耐故障化して性能評価を行ない、基本的な部分の オーバーヘッドが少ないことを示した。現在、より広い範囲に適用できるよう、 変換プログラムを作成している。

(3)残された課題

○SQL クライアント
現在、会話的なインタフェースを実現しているが、KLIC の中からデータベー スを利用することを想定して、組込みインタフェースの実現する必要がある。 また、SQL 自身の拡張も各種なされており、扱える SQL 文の範囲の広げると ともに、入力間違いの対応法等も検討していく。

○並列関係データベース演算実行
これまでに、並列化したデータベース演算処理は一部であり、これから並列結 合演算、並列集約演算、等を実現していく必要がある。特に、並列結合演算に ついては、各種のアルゴリズムが提案されており、システムの拡張性から複数 のアルゴリズムを実現して、実際に評価を行ないたいと考えている。更に、処 理性能を高めるための各種の最適化手法を実現していく必要がある。並列デー タベース処理の分野では、現在、データと処理の偏りを最小化する最適化が熱 心に行なわれていることから、貢献できる結果を出したいと考えている。

○並列トランザクション管理
現在、分散コミットに関しては、非常にシンプルなものを実現しているのみで、 コミット中の障害等については考慮されていない。まず、2相コミット等を実 現する必要がある。また、ロック処理のオーバーヘッドが比較的大きいことも 実験データから得られているので、2相コミットを前提に2相ロックのみでなく、 各種の同時実行制御を試み、最適化を図りたいと考えている。また、アクティ ブルールの並列発火に関しても最適化が重要であると考えており、弁別ネット ワークによるルールの並列発火管理、ルール更新とデータの同期の取り方、ディ スク内容のキャッシング等、に関して検討を行なう。

○耐故障化
これまでの実験から、変数の複製に予想以上のコストがかかることが分かった ため、最適化を行なう必要がある。また、バックアップのためのログ情報と故 障検出との間の順序関係の保証についても検討する必要がある。さらに、変換 プログラムを完成させ、各種のプログラム例に適用して実験を試みたいと考え ている。

(4)自己評価

ビジネス分野を対象に、ある程度機能の揃った並列アクティブデータベースシ ステムを構成すると言うことは、人的資源の限られた日本の大学ではかなり難 しい面もあると思いながらプロジェクトをスタートした。これまでほとんど並 列論理型言語を触ったこともない学生も交えて、データベース処理やトランザ クション管理のプログラムを KLIC で作成したが、立ち上がりの部分では戸惑 いもあったものの、ある程度のものが形をなしてきたのは、KLIC の生産性の 高さの実証であると思われる。まだ、プロジェクトを開始して1年足らずで、 未完成の部分も多いが、個人的には満足のいく進捗状況であると言える。

また、耐故障化については、研究的に非常に面白い手法を提案できたものと思っ ている。この研究は、適用範囲が広いことからも、今後、Parade(並列アクティ ブデータベースシステムのプロジェクト名)と独立に研究する価値のあるもの であると考えている。



next up previous
Up: KLIC による並列アクテイブデータベース処理の実現 Previous: 研究の内容

www-admin@icot.or.jp