Db2 for iの歴史:開発経緯から紐解くデータベースとしての優位性

データベースの歴史とDb2 for i

 リレーショナル・データベースを初めて実装したコンピュータは、IBM System Rである。これは、1974年にIBMサンノゼ リサーチラボで開発が始まった実験機としての意味合いが強いシステムであった。

 System RはCOBOL、PL/IによりRDBMS をSQLで操作していたが、トランザクションプロセッシングにおいて当時卓越した性能を発揮し、RDBMSの優位性を世に知らしめたエポックメイキングなシステムであった。

 System Rの最初の商用ユーザーは1977年、米プラット&ホイットニー社だとされている。ところがIBMは、当時すでに大成功していた階層型DBであるIMSを販売しており、RDBMSを搭載した本格的な製品をすぐには発表しなかった。

 その間に、RDBMSのアドバンテージを認識した新たなベンダーが多数誕生した。なかでも米オラクル社が1979年に発表したOracleが初めてのRDBMS製品である、と言われることが多いのだが、実は同じ1979年に販売を開始したRDBMS製品がある。それがSystem/38、すなわちIBM iとDb2 for iの直接の始祖である。

 System/38もAS/400ファミリーも、RDBMSはOS組み込みの1機能という位置づけだったので、RDBMSとしての製品名・名称はなかった。これが今にして思えば、「世界最初のRDBMS製品」という栄誉に浴することのなかった原因かもしれない。

 さて、Db2 for i(Db2ファミリー)の過去から一貫する特徴は何であろうか。それはイメージに反するかもしれないが、「業界標準への準拠」である。

 そもそもRDBMSも操作言語のSQLも、IBMが開発したのである。IBMは一時期、自社技術を秘匿し独占しようとした黒歴史もあるが、全社史を通して言えるのは自社技術の積極的な開示による業界貢献である。

 有名どころでいえば、SQL以外にもPC-ATの各種仕様(パーソナルコンピュータの元祖、日本ではPC黎明期にPC-AT互換機として花開いた)、Eclipse(VisualAgeとして開発したコードをOSSへ寄贈)などが挙げられる。

 Db2に立ち戻っても、たとえば業界標準SQLへの準拠率は常に高く、他社RDBMSに見られるような独自拡張SQLは基本的に存在しない。

 昨今は、RDBMS以外のデータベース(いわゆるNoSQL)が増えている。この事象を捉えて、「RDBMSの時代は終わった」などと言う説も散見されるが、まったくの誤解である。RDBMSはそもそも、トランザクション処理に最善のパフォーマンスと機能を提供するものとして誕生した。これは今でも変わらない。

 一方でITの適用範囲がトランザクション処理ではない領域、たとえばIoTやソーシャル、マルチメディアなどに拡大したことから、それらの特性に最適な新たなデータ処理の方法としてNoSQLが隆盛しているのである。

 よってトランザクション処理用のデータベースは基本RDBMSであり、NoSQLに置換されることは今後も稀であろう(図表1)。

 ちなみにPower SystemsはNoSQLのMongoDBでも、他プラットフォームに比べて高い処理性能を証明しており、汎用的なデータベースインフラとしての優秀性を裏付けている。

 それでは逆に、「Db2 for iが備える、ほかに見られない特徴・優位性は何か」と言えば、単体データベースとしてのスケーラビリティ(スケールアップ性能)が挙げられる。POWER9サーバーの場合、1コア割り当てでも、億件規模のテーブル(物理ファイル)を要求どおりの性能で処理しているシステムは多数見受けられる。

 これはRDBMSとしての優秀性以外にも、IBM i のOSアーキテクチャとしての優秀さなどが相乗しているためだ。以下に、Db2 for i の特徴について見ていこう。

 

Db2ファミリーを構成する3つの製品ライン

 Db2ファミリーは過去の開発経緯によって、大きく3つの製品ラインに分かれる(図表2)。

 以前は製品ラインごとにまったく別個な実装で、互換性に乏しい面もあったが、時代を経るに従い相互の互換性が高まっている。

 近年は、カラムタイプやSQLステートメントの互換性が相当高くなっている。筆者は最近、Db2 for Windowsを前提としたパッケージ製品をDb2 for iへポーティングする検証を実施したのだが、データベース・オブジェクトを定義するDDL文はほぼ互換性が保たれていた。データ操作のDML文も、通常のステートメントも同様であった。唯一、XML操作については、現時点ではDb2 for i で非サポートのステートメントが見つかった。

 Db2 for i の特徴は何と言っても、OSより下位層のマイクロコード以下で実装されている点である。Db2 for i 以外のRDBMS(Db2、Oracle、SQL Serverなど)はすべてOS上のアプリケーションとしてデータベースが実装されている(図表3)。

 

 つまりOSから見てアプリケーション(ミドルウェア)として稼働するのが、一般的なデータベースである。このためデータベース使用者から見ると、さまざまな課題が発生する。

・ データベース層とOS層とで個別のパフォーマンス監視/リソース監視
・ データベースの物理設計
・ 日常のデータベース管理
・ 複雑なバックアップ/回復設計
・ OSのセキュリティとDBのセキュリティのそれぞれを設計/構築

 唯一、Db2 for i だけが上記のようなデータベースの煩雑性・非合理性から解放されている(図表4)。

 それはDb2 for iがOSの一部として、マイクロコードで実装されているからである。

 

IBM iとDb2 for iの特徴①
シングル・レベル・ストレージ 

 Db2 for i は、メモリとディスク間でのアドレス変換が不要なシングル・レベル・ストレージ (SLS)というアドレス管理方法を採用している(図表5)。

 

 シングル・レベルとは、「他のOSでは別々に独立しているメイン・メモリ・アドレッシングと補助記憶域(ストレージ)のアドレッシングが、共通の単一アドレスで管理されている」という意味である。

 IBM iとDb2 for i は対象となるデータがメインメモリ上にあるか、あるいはストレージ上にあるかを意識する必要がない(実際のメモリとストレージ間の移動はマイクロコードが担う)。

 このためWindowsやLinuxなどでは必須となるアドレス変換が存在せず、高負荷状態、すなわち多数のユーザーが同時に処理をする場合や、大量データを扱うバッチ業務などで他のサーバーよりも高いパフォーマンスを発揮する。

 よく聞く話だが、「単発のベンチマーク・ツールを流すとWindowsサーバーのほうが速いのだが、実業務環境で複数ワークロードやトランザクションが集中するピーク状況ではIBM iが圧倒的に速くなる」という理由の1つである。

 

IBM iとDb2 for iの特徴②
表スペースが不要

 OracleやDb2 for LUWで表スペースが必要なのは、データベースがOSの上位層のミドルウェアとしてOS管理のストレージを間借りするからである。

 Db2 for i はIBM i と同じレイヤで動作し、OSが管理するストレージを透過的に利用するため、表スペースと呼ばれるような、OSがRDBMSミドルウェアに専用で割り当てするストレージ領域が不要である。

 このことは、非常に多岐にわたるメリットをもたらす。大きなメリットの1つとして、ストレージ(表スペース)の使用率監視やパフォーマンスなどが挙げられる(図表6)。

 

IBM iとDb2 for iの特徴③
複数論理コピー(MLC)

 IBM iは複数論理コピー、すなわちMultiple Logical Copies (MLC)を実装している。IBM iはプログラムのコード部分とデータ域が分離しており、プログラムコードの部分は対話ジョブかバッチジョブかを問わず、ジョブ間でシェア(共有)されている。

 プログラムのコード部分は、メモリ上に複数存在する必要はない。各ジョブがそれぞれ使用するデータ域をPAG (Process Access Group) と呼び、PAGには個々のジョブで使用するプログラム変数、バッファ領域、ODP(オープン・データ・パス)などが含まれる(図表7)。

 

 プログラムを実行するには、プログラムの命令部分とPAGが必要となる。PAGはシステム・オブジェクトの1つで、一時的な記憶スペースを備える。PAGは連続する補助記憶域上に書き出され、少ない入出力操作で主記憶域とのページングを実行する(図表8)。

 

 PAGを構成する主な要素には、以下がある。

・ PCS (Process Static Storage Area):RPGやCOBOLで定義され、データフィールドや標識、配列などを含む。
・ PASA(Process Automatic Storage Area):CLPの変数などを含む。
・ ODP (Open Data Path):プログラムによってオープンされたファイルに関する情報(ODP)を含む

 ジョブが開始されるとPAGのためにメモリが割り当てられ、ジョブが終了すると除去される。他のOSでは、全ジョブで共通利用するオブジェクトをジョブごとに重複してメモリ上に展開する場合がある。これはパフォーマンス上(とくに高負荷時に)、大きな差異を生むことがあるので、IBM iならではのアドバンテージであると考えられる。

 図表9に、Db2ファミリーの比較をまとめた。

 共通化されている部分、プラットフォームによって異なる部分があるが、俯瞰するとDb2 for i は運用容易性に優れていると言えるだろう。

 


著者
佐々木 幹雄氏

日本アイ・ビー・エム株式会社
パワーシステムテクニカルセールス
シニアITスペシャリスト

AS/400利用のお客様担当SEから出発し、さまざまなテクニカル職種を担当。現在はPower Systemsはじめインフラ提案・アーキテクチャ設計を主に担当している。

 

 

[i Magazine 2020 Summer掲載]

 


特集|あらためて知るDb2 for i

 

Part 1
Db2 for iの歴史
開発経緯から紐解くデータベースとしての優位性
Part 2
Db2 for i の特徴
オブジェクト構成から運用管理までOSとの完全統合が生む数々のメリット
Part 3
Db2 for iでの設計
インスタンスや表スペースの概念をもたず物理設計のステップを簡素化
Part 4
Db2 for iの新機能
IBM i をデータベース・サーバーとして使用するための新情報
Part 5
藤原俊成テクニカルアドバイザーに聞く―JBCCDB化と文字コードの問題