MENU

05 IBM iとデータベース

OS/マイクロコードレベルで
完全統合

業務アプリケーションを開発し、業務データを保持、活用するにあたってまず必要になるのは、データベース機能である。

データベース機能としてはいくつか種類がある。メインフレームでは木構造でデータを管理する仕組みの「階層型データベース」が広く利用されている。非メインフレームでは関係データモデルに基づきデータを管理する仕組みの「リレーショナル・データベース(関係データベース)」(RDB:Relational Database)が最も広く利用されている。

単に「データベース」と呼んだ場合には、このリレーショナル・データベースを指していることも多く、さまざまなベンダーからリレーショナルデータベース管理システム(RDBMS:RDB Management System)が提供されている。

IBM iは、RDBMSをOSおよびマイクロコードのレベルで完全に統合している世界でも稀なOSである。図表1のように、LinuxやUNIX、Windowsでリレーショナル・データベースを使用する場合は別途、RDBMSをOS上で動くミドルウェア・ソフトとして導入、構成する必要があるが、IBM iではRDBMSがOSに統合・同梱されているので不要である。

 

図表1 画像をクリックすると拡大します】

 

このOSに統合されているRDBMSを「DB2 for i」と呼び、IBMから各プラットフォーム向けに提供されているDB2ファミリーの一員として位置づけられている。

IBM iは、AS/400として登場した当初からリレーショナルデータベースをOSに統合し提供している(正確には、AS/400の前身であるSystem/38ですでに統合されていた)。

当時は、SQLという現在普及しているデータベース言語も存在していない時代である。そのため、DBオブジェクトのタイプとして実データを格納する「物理ファイル」、物理ファイル内のデータに選択条件などを加えて論理的なデータの集まりを定義した「論理ファイル」といった名称が使われている。これらとSQLにおける名称を対比したのが図表2だ。

 

図表2 画像をクリックすると拡大します】

 

データベースを
OSに統合するメリット

では、データベースがOSに統合されているメリットは何だろうか。一言で述べれば、データベース運用の容易性である。IBM iはOSとしての高い信頼性、運用容易性を誇るプラットフォームであり、そのメリットをそのままデータベース運用に活用できる。図表3にデータベース運用としての一般的な管理タスクをまとめた。

 

図表3 画像をクリックすると拡大します】

 

ほかのプラットフォームでは、各項目をどう運用するかを担当者が決定しなければならない。DB2 for iでは多くの項目がOSによる自動管理なので、その違いが一目瞭然だ。

日々の保管・復元運用を例に取ると、DB2 for iではテーブルなどのデータベース・オブジェクトはそのままOSオブジェクトとして認識されるため、システム提供の保管復元コマンド1つで、テーブル単位で保管、復元できる。IBM iを愛用しているユーザーにとっては当たり前のことだろうが、ほかのプラットフォームのRDBMSではそうはいかない。

また、ほかのプラットフォームでは表スペースの空き容量の管理は重要な運用項目の1つだが、IBM iでは表スペースの概念自体がなく、DBオブジェクトのストレージ領域への配置はすべてOSが自動的に判断・決定してくれる。

さらにSQLによるデータ照会時の最適化過程を視覚的に表現するVisual Explainやプラン・キャッシュ・スナップショット、作成が望ましい索引情報を自動で提供してくれる索引アドバイザーなど、豊富な管理機能も実装されている(図表4)

 

図表4 画像をクリックすると拡大します】

 

データにアクセスする
2つのメカニズム

このように運用容易性が大きなメリットをもつDB2 for iだが、そのデータベースに格納されているデータにアクセスするメカニズムとしては、大きく分けて2つ用意されている。

1つ目は、SQL登場以前より使用されている文字どおりデータベースのレコード単位でデータを操作する方式である「レコード・レベル・アクセス」(RLA:Record Level Access)である。RPGにおけるREADやCHAIN、WRITEといったIBM iネイティブ・プログラミング言語におけるファイル・アクセス命令は、このRLAの代表例だ。

2つ目は、SQLアクセスである。図表5のようにDB2 for iへSQLアクセスするためのインターフェースも数多く取り揃えられている。ODBCアクセスを通じてADO.NETやPHPで作成されたアプリケーションからのアクセスも、JDBCドライバを用いてのJavaアプリケーションからのアクセスも簡単だ。

 

図表5 画像をクリックすると拡大します】

 

そのほかにも、「DRDA(Distributed Relational Database Architecture)」と呼ばれるDB2独自に実装されているプロトコルで接続もでき、DB2ファミリーとしてほかのプラットフォーム上のDB2とも連携できる。

なお、RPGやCOBOLといったRLAでのアクセスをベースとしたデータ・アクセス用の命令セットがあらかじめ用意されているプログラムにおいても、組み込みSQLと呼ばれる機能がある。RPGなどのプログラム・ソースにSQLステートメントを埋め込んで、実行する形式である。

図表6 画像をクリックすると拡大します】

以上が、2つに大別されるDB2 for iへのデータ・アクセス・メカニズムである。このうちRLAは歴史の長いメカニズムで、そのインターフェースは今後も安定的に提供され続けるが、機能強化は図られない点に留意しておくとよいだろう。

昨今のDB2 for iの動向として、IBM i開発部門は明確にSQLアクセスに対する機能強化を打ち出している。図表6で近年のDB2 for iの機能拡張点をまとめたが、言語としてのSQLの機能強化のほかにも、「IBM i Service」「 DB2 for i Service」と呼ぶSQLインターフェースからシステム系のデータを効率的に抽出する方法を多く提供するようになっている。もちろん、これらSQLの機能拡張はRPGやCOBOLでも、組み込みSQLの利用により活用できる。[中村陽一]