EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第4回(最終回) 徹底的にOracleとの互換性を高めたDB2 9.7なら移行の手間も大幅削減

  2010/06/28 07:00

Oracleとの互換性を高めた3つのポイント

 当然ながら、DB2とOracleでは基本的なアーキテクチャも異なるし、SQLもまるっきり同じというわけにはいかない。そのため、移行時にはそれなりにプログラムに手を入れる必要がある。とはいえ、機能的には両者ともそれなりに豊富に揃っているので、こちらにあってあちらにないという機能はそれほど多くはないはずだ。

 しかしながら、Oracleの便利な機能を十分に使いこなしていればいるほど、DB2への移行は苦労することになるはずだ。 ところが、最新版のDB2 9.7では、OracleにあってDB2にはないといった機能を、大幅に減らすことに成功している。これにより、それなりにOracleの機能を使い込んでいたとしても、OracleからDB2への移行の手間を従来に比べて大きく削減しているのだ。

 DB2 9.7でこの手間の削減に大きく貢献しているのが、Oracle独自の拡張プロシージャ言語であるPL/SQLのサポートがまず挙げられる(図1)。これは、足りなかったPL/SQLの機能をエミュレーションするといったものではない。

 なんとPL/SQLのコンパイラを追加し、別途実装してしまったのだ。これにより、Oracleで動いていたPL/SQLのプログラムが、多くの場合、手をほとんど入れずにDB2 9.7の上で動いてしまうのだ。これは、エミュレータ方式ではないので、パフォーマンスの劣化も心配ないとのことだ。

図1:DB2 9.7のPL/SQL実行サポート

 もう1つのOracleとの互換性を高めたポイントが、Oracle固有の関数やデータ型のサポートをDB2 9.7では大幅に追加しているところだ(図2)。たとえば、結合演算子の(+)やVARCHAR2データ型なども新たに追加されており、それらを利用することで、SQLの書き換えの必要も大幅に削減されている。

図2:DB2がサポートするおもなSQL言語要素

 3つ目の大きな変化が、DB2 9.7でのロックメカニズムの変更だ。Oracleを使っている技術者であれば当たり前の機能とも言える、読み取り一貫性機能がDB2 9.5までは実装されていなかった。そのため、更新中のレコードを読み込む際には、更新レコードはロックされ読み込むにはロックが解除されるのを待つ必要があったのだ。

 これを回避するために、DB2では更新中のロックがなるべく発生しないようプログラミング側でなんらかの工夫をする必要もあった。DB2 9.7ではOracleと同様のREAD COMMITTED分離レベルを採用できるようになり、この拡張も移行の手間を大幅に削減することにつながる。


著者プロフィール

  • 谷川 耕一(タニカワ コウイチ)

    EnterpriseZine/DB Online チーフキュレーター かつてAI、エキスパートシステムが流行っていたころに、開発エンジニアとしてIT業界に。その後UNIXの専門雑誌の編集者を経て、外資系ソフトウェアベンダーの製品マーケティング、広告、広報などの業務を経験。現在はフリーランスのITジャーナリストとして、クラウド、データベース、ビッグデータ活用などをキーワードに、エンタープライズIT関連の取材、執筆を行っている。

バックナンバー

連載:DB2 Webセミナー
All contents copyright © 2007-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5