(21) 並列アクティブデータベースにおけるI/O処理の高速化
研究代表者:
| 横田 治夫 助教授
|
|
北陸先端科学技術大学院大学 情報科学研究科
|
|
(現・東京工業大学大学院 情報理工学研究科 助教授)
|
[目次]
- 研究の背景
- 研究の目的
- 研究内容
- 研究体制/研究方法
- 想定されるソフトウェア成果
現在、データベースの分野で、データベースの状態により、予め定
められたルールに従って、データベース管理システムが能動的にデー
タベース処理を行なうアクティブデータベースシステムが注目を集め
ている。アクティブルールを利用することにより、自由度の高い高度
な処理の実現が可能となることが、その大きな要因であると思われる。
具体的には、従来からのデータベースのトリガー/アラータ機能に
加え、完全性制約や参照制約などをデータベース内で自動的に保つ機
構を持たすことができる。また、データの自動解析、データマイニン
グ、マルチデータベース間のメディエータとして状態管理をするエー
ジェントの実現、モーバイルデータベースにおける移動ホストの環境
変化への適応などが研究されており、推論機能を使った大規模知識ベー
スの実現など知識処理分野への展開も期待される。このように、アク
ティブデータベースの利用範囲は非常に広いと言える。
しかし、アクティブルール処理自体が重い処理であるため、実際に
利用されるためには、並列処理による高速化が望まれている。ルール
実行の並列化、ルールの条件照合の並列化、ルールの最適化処理の並
列化などに加え、ベースとなる関係データベース自体の並列化も重要
である。
これまで我々は、アクティブデータベース処理を統合的に並列化す
ることを目指して Parade と名付けたアクティブデータベースエンジ
ンを KLIC を用いて実現してきた。昨年度までに、サーバが並列マシ
ン上で動作するクライアント/サーバタイプの実験システムを試作し
てきた。これにより、KLIC の並列プログラムの記述能力や移植性を
実証してきた。
しかしながら、データベースとしての実用的な処理速度という面で、
特に大きなデータをアクセスする際に、I/Oがボトルネックとなるこ
とが分かってきた。速度向上を目指して並列化しているため、実質的
に処理速度を支配している I/O を高速化することが、何より重要で
ある。これは、今後 I/O を含む処理に対する KLIC の潜在能力を示
し、更に広く多くの分野に KLIC の機能をアピールすることにつなが
ると確信する。
我々が研究している KLIC による並列アクティブデータベースシス
テムのプロトタイプを、実用的な処理速度で動作させるため、KLIC
のジェネリックオブジェクトを用いた低レベルの I/O 性能の向上と、
並列ディスクアレー向けに B-Tree の改良を施すことにより、達成す
ることを目指す。これは、KLIC の拡張性や記述能力の高さを実証す
るとともに、その応用の広さを示し、第五世代技術の普及と発展に貢
献することにつながる。
第五世代プロジェクトでの成果を、経営判断の意志決定支援等の応
用分野において広く利用されるためには、実用的な処理速度を持つ、
並列アクティブデータベースシステムを用意することが重要である。
KLICの論理変数によるプロセス間のメッセージ通信は、無共有並列計
算機上でデータベース処理を実現する際に非常に適合性がよい。
昨年までの委託研究では、アクティブデータベース処理をKLICのプ
ロセス間のメッセージ通信を利用することにより実現し、汎用ワーク
ステーションならびに超並列計算機nCUBE上で動作させ、その記述能
力と移植性の高さを実証してきた。この研究を通して、データベース
処理では非常に大きな鍵を握るI/O処理が、システムの性能の向上に
大きく影を落していることが分かってきた。これは、KLIC標準のI/O
が、性能を重視して設計されたものではないことと、一般のB-Treeが
並列ディスクアレーに対応しておらず、データへのアクセスの際に木
のルートノード付近にトラフィックが集中することに起因する。本研
究では、KLICのジェネリックオブジェクトを用いて、ページ単位で
I/Oを直接アクセスし、低レベルI/Oの高速化を目指すとともに、
B-Treeを並列ディスクアレー向けに改良したFat B-Treeにより、デー
タへのアクセス速度の改善を、ワークステーションクラスタや超並列
計算機nCUBE上での実験を通して明らかにする。特に、ジェネリック
オブジェクトを利用した低レベルのI/O性能の向上は、アクティブ
データベースの実用的な処理速度を目指す目的だけでなく、KLICの言
語処理系レベルの拡張性をアピールすることにもつながる。
昨年度までの委託研究により開発した、並列アクティブデータベー
スParadeをベースに、1) ジェネリックオブジェクトによる低レベル
I/O性能の改善、2) 並列ディスクアレー向きFat B-Treeによるデータ
アクセスの高速化、に分けてその内容の詳細を以下に示す。
- 1) ジェネリックオブジェクトによる低レベルI/Oの高速化
- KLIC標準のI/Oは、外部表現と内部表現を交換するために
parse/unparse機構を必要とし、かつそのデータアクセスの単位は小
さい。そのため、極めてソフトウェアオーバヘッドの大きいものと
なっており、かつディスクI/Oの面から見ても、スループットを高く
することを困難なものとしている。
しかしながら、一般的にデータベース処理では、ディスクI/Oが全
体のボトルネックとなることが多く、このボトルネックを解決するこ
とが、データベース全体の処理速度の向上に大きく貢献する。通常の
データベースでは、ディスクをページ単位といった大きなデータ単位
でアクセスしてディスクI/Oのスループットを高くすることが行なわ
れている。これをKLICで行なうためには、KLICのデータ型を拡張する
ためのジェネリックオブジェクトを用いるのが、最も簡単にかつ性能
を上げることを可能にすると考えられる。なおかつ、ジェネリックオ
ブジェクトの導入により、プログラムの移植性を損なわないという利
点も見逃せない。具体的には、新しいデータ型としてページオブジェ
クトをジェネリックオブジェクトにより定義し、ページ単位でディス
クアクセスを行なえるようにし、ディスクI/Oのスループットの向上
を図る。このページオブジェクトによるページ単位のディスクアクセ
スは、B-Treeなどのアクセスパス構造との親和性の向上にも貢献す
る。また、このページオブジェクトに適切なメソッドを定義し、KLIC
の基本データ構造に変換することなく直接データを扱えるようにす
る。これにより、parse/unparseというソフトウェアのオーバヘッド
を大きく削減できる。
このページオブジェクトの導入は、無共有並列計算機におけるKLIC
のプロセス間のメッセージ通信のオーバヘッドの削減にも有効であ
る。なぜならば、一般的に無共有並列計算機は、メッセージのセット
アップコストがメッセージバッファの獲得やロックのため、通信のス
ループットに比較してかなり大きいが、一方で分散版KLICはプロセッ
サ間通信の際に、通常1レベルずつの細かなメッセージが転送され
る。このため、言語処理系レベルでの通信オーバヘッドが大きくなっ
てしまうからである。分散版KLICでは、マルチレベルでのメッセージ
通信もサポートしているが、これは、メッセージのencode/decodeと
いうソフトウェアのオーバヘッドを伴う。しかしながら、前述のペー
ジオブジェクトを用いれば、大きなデータ単位でメッセージを送受信
することが可能となり、メッセージのセットアップコストを相対的に
小さくでき、データのencode/decodeといったソフトウェアのオーバ
ヘッドも削減することができる。これによりトータルなメッセージハ
ンドリングオーバヘッドを大きく改善することが期待できる。特に、
専用計算機に比較して、メッセージハンドリングオーバヘッドが大き
いワークステーションクラスタでは、この改善は大きな意味をなす。
このページオブジェクトを実現し、具体的なI/O性能やメッセージ
ハンドリングオーバヘッドを、nCUBEやワークステーションクラスタ
上で比較し、評価を行なう。
- 2) 並列ディスクアレー向きFat B-Treeによるデータアクセスの高速化
- 並列ディスクアレー上へのデータ配置の有効な手法として、ハッ
シュ分割と値域分割がある。ハッシュ分割は適切なハッシュ関数によ
りデータの分配の偏りを小さくすることができるが、値域指定の検索
やデータのクラスタ化には対応できない。値域分割はこれらに対応で
きるが、静的な基準によりデータを分配するためデータ配置の偏りが
生じる。
一方、効率の良いデータのアクセスパス構造の1つとして、B-Tree
が挙げられる。B-Treeは、範囲指定の検索やデータのクラスタ化に強
いが、データの分割が困難である。また、その構造が木状であるた
め、データへのアクセス頻度が高い場合、木の根付近のノードでトラ
フィックが集中し、ボトルネックとなる。
本研究では、B-Treeの問題点を解決するFat B-Treeを提案する。
Fat B-Treeは値域分割されたページのディレクトリ構造としてB-Tree
を利用し、各ディスクには均等に分配されたB-Treeの葉ページの一部
と、そこから根までのパス構造を持つ部分木を格納する。このため
Fat B-Treeでは、多くの葉ページまでのパスに共有される木の根付近
のノードは、複数のコピーが存在することになり、根ノードは全ての
ディスクにコピーされる。しかしながら、木の根付近のノードの更新
頻度は葉ページに比較して少ないため、ディレクトリを全てのディス
クにコピーする方式に比較して、更新時の処理は軽くなることが期待
できる。さらに、根から各葉ページへのアクセスパス構造は全ての
ディスクに存在するため、木の根付近のノードのアクセスの衝突を減
少させることができる。また、Fat B-Treeの各ページは、前述した
ページオブジェクト型を利用することにより、ディスクI/Oのオーバ
ヘッドを削減でき、データアクセスの高速化に貢献する。
この提案するFat B-Treeを、並列ディスクアレーをもつnCUBEに実
現することにより、データのアクセスに対するレスポンスタイムやス
ループットを測定することにより、通常のB-Treeに対する利点を示
す。
以上で述べた2つの項目を、現状の並列アクティブデータベース
Paradeに統合して、システムの性能の向上を目指す。
(1) 研究体制
|
氏 名 |
所 属 |
研究代表者 | 横田 治夫 | 北陸先端大 助教授 |
研究協力者 | 宮崎 純 | 北陸先端大 助手 |
研究協力者 | 金政 泰彦 | 北陸先端大 修士課程2年 |
(2) 研究の方法
-
ジェネリックオブジェクトを用いた低レベルI/Oの高速化には、宮
崎が担当し、Fat B-Treeの実現には金政が担当する。それぞれの作業
は並行して行ない、最終的な機能の統合および取りまとめは横田が担
当する。
(1)作成されるソフトウェア名称
KLICによる並列アクティブデータベース
(2)そのソフトウェアの機能/役割/特徴
以下に、並列アクティブデータベースサーバとクライアントに分け
て記述する。
-
- 1) 並列アクティブデータベースサーバ
- クライアントからの関係代数レベルのコマンドを受け付け、主に
nCUBE上において並列データベース処理を行なう。全てがKLICで記述
されているため、ディスクドライブ名など機種や計算機環境依存部分
のテーブルを書き換えるのみで、他の機種で動作させることができ
る。すなわち、LANに接続されたワークステーション上でもデータ
ベースサーバとして利用することができる。並列マシンの上で動作さ
せる場合、KLICにより関係データベース演算やデッドロック検出の並
列アルゴリズムを記述してあるため、並列性を活かした高速実行が可
能である。特に、処理コストの大きな結合演算は高い速度向上が望め
る。さらに、ジェネリックオブジェクトを用いた低レベルI/Oの高速
化のほか、並列ディスクアレー向けのFat B-Treeにより、高速なデー
タアクセスが可能である。
機能的には、アクティブルールをサポートしているため、一貫性制
約などをルールで記述することにより、データベース処理の高機能化
を図ることが可能である。アクティブデータベースの応用範囲は、演
繹データベースと比較するとかなり広く、データの一貫性を強く維持
しなければならないようなビジネス分野での利用が望める。さらに、
複雑なルールの実行であっても、ネステッドトランザクションにより
並列性を活かした高速実行が可能である。
当然、サーバとして同時に複数のクライアントからの要求に対応す
る必要があり、二相ロックによる並行性の制御により、クライアント
間のシリアライザビリティは保たれる。
なお、クライアントは、関係代数コマンドを発行できるものであれ
ば何でもよい。例えば演繹データベース用のクライアントを実現すれ
ば、アクティブデータベースと演繹データベースとを組み合わせたシ
ステムの実験等も可能となる。このように、並列マシンで動作させた
場合の効果が大きく、拡張性も高いシステムである。
- 2) クライアント
- SQL、OQL、QBEライクな3種類のクライアントを用意する。SQLクラ
イアントは、関係データベースの標準的なデータ操作記述言語(DML)
である SQLをインタラクティブに受け付け、関係代数レベルのコマン
ドに変換する。OQLクライアントは、OODBのようなDMLをインタラク
ティブに受け付け、関係代数レベルのコマンドに変換する。QBEクラ
イアントはJAVAで記述されており、GUIを利用したインタフェースと
なっており、最終的には関係代数レベルのコマンドに変換する。LAN
環境下のワークステーション上で動作することを前提に、変換した関
係代数コマンドを、Unixのソケットインタフェースを介して、前述し
た並列アクティブデータベースサーバに渡す。さらに、各クライアン
トは、サーバーから送られてくる実行結果の表示を行なう。
特に、SQLクライアントにおけるSQL自身は、JISやISO等で規格化さ
れており、それに準拠する形になっているため、ビジネス分野等の広
い分野での利用性が高い。また、SQL、OQLクライアントは、全てが
KLICで記述されているため機能拡張性に富み、言語仕様を拡張するこ
とも容易である。当然ながら、ソケットをサポートする機種ならば、
KLICがインストールされていれば機種に依存することなく、変更なし
に動作させることができ、ポータビリティは非常に高い。
QBEクライアントはJAVAで記述されており、それ自身のポータビリ
ティは非常に高く、ワークステーションに限らずソケットをサポート
するパソコンなど、多くの機種で動作させることが可能である。ま
た、GUIを用いてインタラクティブにデータの操作を行なえるため、
初心者でも違和感なく操作できる。
(3)ソフトウェアの構成/構造
-
- 1) 並列アクティブデータベースサーバ
サーバは、トランザクションマネージャ、ロックマネージャ、デッ
ドロックマネージャ、コマンド実行マネージャ、ログマネージャ、
ディスクアクセスマネージャ、ルールマネージャ、およびクライアン
トと対話するためのソケットインタフェースから構成される。
トランザクションマネージャは、クライアントに対応してトランザ
クションIDを管理しながら、他のマネジャとのメッセージ通信を行
い、ネステッドトランザクションの管理も行なう。ロックマネージャ
は、アクセスするデータに対する適切なロックを獲得し、これを管理
する。デッドロックマネージャは、Wait-For Graphを利用して、トラ
ンザクション間のデッドロックを検出する。コマンド実行マネージャ
は関係代数レベルのコマンドの実行を行なう。ディスクアクセスマ
ネージャは、並列ディスクアレー内に格納されたデータのアクセス、
およびその維持を行なう。ログマネージャは実行ログの管理を行な
う。ルールマネージャは、アクティブルールの管理を行なうととも
に、ルールで指定されたデータベースイベントに反応して、適切な
ルールをトランザクションマネージャを介して実行する。
以上は、昨年度までの委託研究により実現されている構成である。
今年度は、I/O周り、すなわちディスクアクセスマネージャの強化を
行なう。新たにジェネリックオブジェクトを利用することにより、
ページ単位で低オーバヘッドでディスクアクセスできるように改良を
行なうとともに、並列計算機上でのメッセージ通信のオーバヘッドの
削減も、同時に実現する。さらに、Fat B-Treeと名付ける並列ディス
クアレー向けの、アクセス衝突の少ない、かつデータのクラスタ化が
可能なアクセスパス構造を実現し、データのアクセスの高速化、維持
の効率化を行なえるようにする。
- 2) クライアント
SQL、OQL、QBEの3種類のクライアントとも、パーザおよび関係代数
レベルコマンドジェネレータとソケットインタフェースから構成され
る。
SQL、OQLクライアントは、ともに全てKLICで記述されており、イン
タラクティブに入力されたデータ操作言語の解釈、関係代数コマンド
への変換、およびソケットインタフェースを介してサーバとの対話を
行なう。
QBEクライアントは、JAVAで記述されており、GUIを通してインタラ
クティブに入力されたデータ操作言語の解釈、関係代数への変換、ソ
ケットインタフェースを介してのサーバとの対話を行なう。
ソケットインタフェースによるサーバとの対話は、基本的にキャラ
クタベースで行なわれる。
(4)参考とされたICOTフリーソフトウェアとの関連
KLIC(一部JAVA)で記述した内容を、全てIFSとして公開する。
(5)使用予定言語および動作環境/必要とされるソフトウェア・パッケージ/ポータビリティなど
-
- 使用予定言語:KLICおよびJAVA(オプショナル)
- 動作環境: Unixワークステーション及びnCUBEを始めとする並列マシン
- ポータビリティ:並列ディスクアクセスなどの機種依存の部分を除け
ば、非常にポータビリティは高い。特に、クライアントについては、
ソケットさえサポートしていれば特に機種を限定しない。
- (6)ソフトウェアの予想サイズ(新規作成分の行数)
-
2000行程度
- (7)ソフトウェアの利用形態
-
これまで、汎用並列マシン上の関係データベース処理系としては、
Oracle 7等市販のものは存在しているが、フリーでポータビリティの
高い、なおかつ簡単に実験に利用できるものはなかった。そのため、
本システムのように移植が簡単で、機能的な拡張も容易である並列ア
クティブデータベースがフリーソフトとして公開されれば、かなり広
範囲で利用されると考える。
特に、QBEクライアントを除く全てがKLICで記述されているため、
研究者や技術者が自ら拡張することも容易であり、これからの並列
データベース関係の研究用、実験用のツールとして、利用してもらえ
ることを望んでいる。また、クライアントとサーバ間で規定している
関係代数レベルのコマンドは、クライアントを構成する上でも、各種
の実験を試みることが可能な枠組みとなっており、単なるSQL、OQL、
QBEのインタフェースだけでなく、いろいろなシステムに組み込ん
で、利用して貰えるものと考えている。
さらに、研究分野のみでなく、ビジネスなど広範囲の分野での利用
も可能であると思われる。無論、完成度として不十分な部分があるこ
とは承知して頂かなければならないが、銀行のオンライン等シビアな
環境でなく、企業内データのデータベース化等には、性能的に耐える
レベルにしたいと考えている。特にクライアントは、これまでビジネ
スでデータベースを利用してきた人々にとって、非常に馴染みやすい
インタフェースとなるよう設計されており、逐次処理の実行時間に不
満があるような場合には、積極的に利用してもらえるのではないかと
考えている。また、本システムをベースとして、より完成度の高いシ
ステムの開発を目指すところが出現してくれれば、より広範囲での利
用が望めると思われる。
アクティブルールの枠組みは、今後いろいろな発展が望めるが、さ
しあたって、一貫性保持や動的な動向調査(OLAP)等は、研究分野でも
ビジネス分野でも、実験的に利用されていくものと考えている。
- (8)添付予定資料
www-admin@icot.or.jp