耐故障化
- 非決定性を含む 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(並列アクティ
ブデータベースシステムのプロジェクト名)と独立に研究する価値のあるもの
であると考えている。
Up: KLIC による並列アクテ
イブデータベース処理の実現 Previous: 研究の内容
www-admin@icot.or.jp