Db2 for iはデジタル・トランスフォーメーション (DX) に応えるため今でも進化を続けている。AS/400の時代からのユーザーだけでなく、IBM i を新しく採用しているユーザーに向けて、新たな機能拡張によりビジネス変革の一助を担っている。
本稿では、IBM i をデータベース・サーバーとして使用するうえで有用な新機能やTipsなどを紹介しよう。
Db2 for i サービス
Db2 for i は、データベースを管理するDBA(データベース・アドミニストレーター)が不要であると、昔から言われている。ここまでのPartで紹介してきたとおり、LUW版のDb2に比べてこれは非常に優位な点である。
データベースの観点でディスク管理が不要である、統計情報が自動で収集される、アクセスプランが自動で再生成されるなどの理由で、いわゆるデータベース管理者としての運用管理は不要である。
ただしデータベースを最適に利用するには、パフォーマンス・チューニングは必要である。そのようなヘルスチェックを行う役割をDBE (データベース・エンジニア)と呼ぶが、統計情報、索引アドバイス、SQEプランキャッシュ、SQLパフォーマンス・モニターなどのデータを用い、データベースのヘルスチェックを実行して最適化する必要はある。
しかし、これらの膨大なデータのどこから取りかかればよいのか。この疑問に答えるために、IBM i ではさまざまなDb2 for i サービスを提供している(図表1)。
Db2 for i サービスは、データベースのパフォーマンスやヘルスチェックを行うための操作をSQLプロシージャーで実行できる。
たとえば、オプティマイザーにより作成された一時索引(MTI)のなかで頻繁に使われているものを洗い出し、永続オブジェクトとなる索引を明示的に作成するACT_ON_INDEX_ADVICEプロシージャーや、指定した期間使われていない索引を削除するようなメンテナンス処理をサポートするREMOVE_INDEXESプロシージャーがある。
一時索引は一時領域を使用するうえ、オプティマイザーによって管理されるため、場合によっては不要な一時索引がゴミとして残ることがある。一時索引が大量に作成されるのは、新規にアプリケーションを追加するなど新しいテーブルへのアクセスが発生する場合が主であるが、テスト環境または移行期間中などで、不要な一時索引は削除し、必要な一時索引は作成するような運用を自動化するのは効果的である。
このようなSQLプロシージャーを実行する際、通称グリーン・スクリーンと言われる5250エミュレータを使うこともできるが、新しいクライアント・ツールであるIBM i Access Client Solutions (以下、ACS)を使用することもできる。
ACSではデータベースの開発・運用で必要となる各種ツールを提供しており、SQLを実行するインターフェース、SQLパフォーマンスを分析して可視化するVisual Explainなどがある。
IBM i に対してSQLを実行できる「SQLスクリプトの実行」機能では、SQLスクリプトの実行サンプルも用意されている。サンプルではテーブル作成用のDDLだけでなく、Db2 for i サービスのサンプルも提供されている(図表2)。
先の例で挙げたように、インデックスを管理する場合、「Db2 for i Services」カテゴリーを開き、「Automated index advice processor」と書かれたサンプルを選択すると、ACT_ON_INDEX_ADVICEとREMOVE_INDEXESプロシージャーを使った手法について説明が表示される。
さらに、自動化運用するためのCLプログラムとそのプログラムの呼び出し方法まで細かく手順で示されているので、IBM i に詳しくないユーザーであっても、記載された説明を参考にインデックス管理を自動化することが可能となる。
また最新のACS 1.1.8.4では、SQL文のコンテンツ・アシストも可能なので、SQL文の入力が容易である。
さらにIBM i サービスではDb2に限らず、IBM iを運用するうえで必要とするシステム情報などをSQLで取得するためのプロシージャーが提供されている。たとえばPart3のデータベース設計で制限値に関する説明があったが、IBM i サービスにはSYSLIMTBLというテーブルが用意され、そのテーブルに対して閾値を超えたらアラートを発することもできる。
トリガー作成方法については、こちらもACSのサンプルとして提供されているので参照されたい(図表3)。
SQLベースのREST API
IBM i をデータベース・サーバーとして使用する際、SQLベースでREST APIを提供する非常に有用な機能が2019年に発表されている。i Magazine 2019 Autumn号でも掲載しているが、IBM i 7.4の発表と同時に、統合Webサービス・サーバー (IWS) が拡張され、これまでILEプログラムのみをREST API化できていたのに対し、SQLを定義するのみでREST APIをウィザード形式で作成できるようになった(図表4)。
これにより、ILE RPGやILE COBOLのプログラムを新たに作成する、もしくは既存のアプリケーションを改修することなく、IBM i 上のデータをREST APIでアクセス可能になる。
SQLベースのREST APIは、ブラウザからウィザード形式で作成できる。RESTの基本的な作法、IBM i上のデータの情報、SQL構文さえ理解していれば、企業間でHTTP/HTTPSを用いて在庫情報などを照会できる(図表5)。
Unicodeの考慮点
従来からの5250インターフェースではなく、REST APIなどWebベースでIBM iデータをアクセスする際、気になるのが文字コードである。
「IBM i はEBCDICなので」とコード変換を気にするユーザーも多いかもしれないが、IBM iではUnicodeもサポートしている。IBM i ではV5R4からUnicodeをサポートしており、Db2 for iではデータソースとしてUnicodeデータを格納し、扱えるようになっている。
表を定義する際は、CCSIDパラメータでUnicode用のコードである1208 (UTF-8の場合)を指定することで、Unicodeデータを格納し、取り出せる。これはSQLベースで指定できるし、従来からのDDSベースでも指定できる(図表6)。
なお、UTF-8の場合はCHARACTER型/VARCHAR型、UTF-16の場合はGRAPHIC型/VARGRAPHIC型を指定するなど、定義方法も異なるので注意されたい。
ただしデータベースにUnicodeデータを格納できると説明したが、IBM iに限らず考慮すべきは、データサイズである。UTF-16の場合、大半の文字は1文字2バイトなので、文字数を数えることでデータサイズを見積もれるが、UTF-8の場合は英数1文字当たり1バイト、日本語の場合は3バイトを使用するので配慮が必要である。
さらにIBM iではデータをUnicodeで格納して終わりではなく、IBM i で最も多く使用されている言語であるRPGから普通にアクセスできる。
従来はUnicode対応用の関数を使用する必要があったが、IBM i 7.2からはプログラム内でデータのCCSIDを指定することで、暗黙的に文字コード変換を実行し、操作が容易になっている。
唯一考慮すべき点としては、UnicodeからEBCDICへの変換時、その収録文字数の違いによりマッピングできないケース、また違う文字にマッピングされるケースなどが考えられる。
これに対応するため、IBM i 6.1からH仕様書で指定するCCSIDCVTキーワードのサポートが追加されている。CCSIDCVT(*LIST)を指定することで、モジュール内のすべてのCCSID変換のリストが作成される。これにより、そのプログラム・モジュール内で発生する文字変換を確認し、%UCS2関数や%CHAR関数を使った明示的な文字変換、その他英数文字など暗黙的にUnicodeへ変換された情報などを収集できる。
この機能を使えば、事前に配慮すべき文字コード変換や置き換え文字が必要なケースを洗い出せる。それでも対応できなかった場合、CCSIDCVT(*EXCP)を指定することで、変換時に置き換え文字が必要となった場合、例外を発生させて変換できなかった場合の文字の欠落を防ぐこともできる(*1)。
UnicodeデータをWebなどからアクセスしたり、新規に開発するプログラムでハンドリングしたりする場合は、データがUnicodeであることを意識してプログラムを作成すればよいのだが、既存の5250アプリケーションに読み込ませたい場合にはどうすればよいだろうか。そういった場合には、UnicodeとEBCDIC間の変換を行うための論理ファイルを介して処理することで対応できる。
本特集ではリレーショナル・データベースの歴史から、Db2 for iの特徴および概要、設計開発、最新情報までを紹介してきた。
データベースだけでなく、その操作の容易性はIBM i のアーキテクチャに由来するものである。35年前の設計を維持しながら新しい技術も採用できるのは、Db2 for i の強みであり、さらに今後何十年も使用できるデータベースであることを証明している。
本特集を通し、新規に使用するユーザーにはその特徴や優位性について理解し、長きに渡りIBM iを使用しているユーザーには、進化し続けているDb2 for iを再認識してもらえれば幸いである。
[i Magazine 2020 Summer掲載]
著者
藤村 奈穂氏
日本アイ・ビー・エム
システムズ・エンジニアリング株式会社
クラウド・プラットフォーム#1
アドバイザリーITスペシャリスト
日本アイ・ビー・エム システムズ・エンジニアリング入社以来、15年以上、IBM iのテクニカル・サポートに従事。IBM iにおけるアプリケーション開発、Webインフラなどを中心としたバックエンド・サポートやプロジェクトに参画し、現在に至る。
特集|あらためて知るDb2 for i