TOPシステムトレンド> 効率よくデータベースの内部構造を学ぶために
近未来データベース
近未来データベース

第5回:データベース技術者を育むために
著者:NTTデータ先端技術  鈴木 幸市   2005/9/22
前のページ  1  2  3
効率よくデータベースの内部構造を学ぶために

   前項のようにオープンソースとはいえ、データベースは実際のシステムで使うように実装してあるので、ソースコードは大規模で使用されている技術要素も大変広範囲に渡ります。

   データベースでは、ディスク装置という低速な記憶装置を相手にしなければならず、かつ信頼性を犠牲にすることなく最大限の性能を引き出さなければならないのです。実装での方式の選択理由には、深い背景事情が隠されていることが多く、これらのすべてをソースコードだけで理解することは実際には大変困難です。

   一方、一般的にこのようなデータベースの内部構造を知る手がかりになる書籍の情報も、大変限られています(文献1、文献2、文献3)。書籍では、実装の細部に立ち入るには限界があります。そこで、書籍と実際の実装の間を埋めるような教材や実装モデルが必要ではないかと考えています。

参考文献1: Hector Garcia-Molina、Jeffrey D. Ullman、Jennifer Widom、「Database System Implementation」、2000、Prentice Hall、ISBN:0130402648
参考文献2: Raghu Ramakrishnan、Johannes Gehrke、「Database Management Systems」、2003、McGraw-Hill、ISBN:0071151109
参考文献3: 鈴木 幸市、藤塚 勤也、「RDBMS解剖学」、2005、翔泳社、ISBN:4798108642

   これらの橋渡しとなるモデル実装を行ってはどうでしょうか。システム部品として使い物になるデータベースのソースコードは、数十万行の規模になりますが、高度な最適化や高速化のための工夫を制限することで、数十万行程度のデータベースエンジンが作れるのではないかと期待しています。

   データベースエンジンは、図2に示すような構造でできています。

データベースエンジンの構造の模式図
図2:データベースエンジンの構造の模式図

   このそれぞれの部品に対して、表3のような実装を行うことが可能ではないかと思われます。

  1. コードの可読性を最優先する
  2. ソフトウェアのモジュール構造、データ構造、処理方式など、すべてを詳細に文書化する
  3. SQLは基本的なもののみを実装し、データ型は基本的なものに限定することでソースコードの肥大化を防ぐ
  4. 実用に供するための高速化は行わない。実用に供する際に不足している性能チューニングについて、しっかりとした文書を残すことを優先する
  5. 同時実行制御やトランザクション管理といった基本的なデータベースの機能、それにログやリカバリといった機能の実装はしっかり行う
  6. 例えば、同時実行制御のポリシーや特定の関係演算の実行方式など、複数の実装が可能な場合、これらの追加が今後可能なように、プログラム内部のインタフェース条件をあらかじめ厳密に規定しておく
  7. ハードウェアや環境に依存する部分を多く実装することはしない。例えば、誰でも自由に使用できるLinuxの環境に合わせるように実装する。Linuxの環境に過度にチューンしない実装を心がける
  8. コードは、継続的に公開し、評価に耐えられるようにする

表3:モデル実装の提案

   こういった工夫をしたモデル実装およびその成果は今後データベースエンジンの開発にかかわる技術者の鍛錬の場として使えないでしょうか。データベースは大規模かつ複雑で広範囲の背景技術を組み合わせなければなりませんが、このようなモデル実装が技術者育成をはじめ、システムソフトを育むのに役に立つのではないでしょうか。


おわりに

   本連載ではリレーショナルデータベースを取り巻くトピックスを紹介させていただきました。データベースは理論ではなく、きわめて現実的な技術ですが、その内部構造は複雑を極めています。

   一方、ITにおけるデータベースの役割はますます重要になっています。安全にデータベースにデータを蓄積し、安心してシステムを利用できるようにするためには、今後もデータベースの利用のみならず、内部方式に精通した技術者が多く必要になります。これら技術者が多く育つよう、読者の皆様を含め、多くの人々の知恵を絞っていくことを提案することで、一連の連載の締めくくりとしたいと思います。

前のページ  1  2  3


NTTデータ先端技術株式会社 鈴木 幸市
著者プロフィール
NTTデータ先端技術株式会社  鈴木 幸市
Unixにおける日本語ハンドリング、Oracleの移植、オブジェクトリレーショナルデータベースのエンジンの開発などに携わる。現在、NTTデータ先端技術にてLinux、PostgreSQLなどのオープンソースソフトウェアに関する技術を統括している。著書に「RDBMS解剖学」(翔泳社)、訳書に「オブジェクト指向データベース入門」(共立出版)など。


INDEX
第5回:データベース技術者を育むために
  はじめに
  最近の動き「オープンソースデータベース」
効率よくデータベースの内部構造を学ぶために