メニューボタン
IBMi海外記事2020.12.09

TRでのDb2およびSQLサービスのアップグレード

Alex Woodie 著

IBMが最新のテクノロジー リフレッシュでIBM i に導入する最大の機能強化として、統合化されたDb2データベースに追加されるいくつかの新機能を挙げることができます。具体的には、IBM i プロフェッショナルに代って、このプラットフォームからすべてのタイプのデータを取得してくれる数多くのSQLベースのサービスです。

以前の記事で取り上げましたが、IBMはSQLサービスの名称を変更しました。SQLサービスというのは、従来のIBM i コマンドを改造したり、まったく新しいものを作り出したりする定義済みSQL照会のコレクションでした。こうしたサービスはますます増え続けており、大小様々ありますが、そうしたサービスの一群は、公式にIBM i サービスと呼ばれるようになりました。それらのサービスに共通する性質や、それらによって幅広い全般的なシステム関連の処理を実現できることについて言い表すには、おそらく、そう呼んだ方がふさわしいのかもしれません(つまるところ、誰もが皆SQLとの対話処理について興味津々というわけではありませんが、IBM i のことは、皆、大好きなのです)。

IBMは、IBM i 7.3 TR9および7.4 TR3で、29件の新規または改良されたIBM i サービスを導入しました。これにより、世界各地のIBM i プログラマー、管理者、およびデータベース エンジニアの手元に数多くの新機能がもたらされます。7.4 TR3では、16件の新規のIBM i サービス、10件の改良されたIBM i サービス、2件の新規のDb2 for iサービス、および1件の改良されたDb2 for iサービスが導入されましたが、これらすべてのサービスの詳細情報については、 こちらのIBM Support Webページ で確認することができます(IBM i 7.3 TR9については こちらのページ )。

この記事で、これらすべてのサービスについて取り上げるというわけには行きません。そこで、今回のTRの中でも特に重要と思われるものを探るべく、IBMの非凡なDb2 for iアーキテクトであるScott Forstie氏に話を聞くこととしました。 先週のCOMMONのアナウンスメント ウェブキャストで同氏が行った概要紹介は、新たなSQLおよびデータベースの重要な機能強化についての実に素晴らしいプレゼンテーションでした。

まず一番に取り上げるべきなのは、新たなQSYS2.IFS_READおよびQSYS2.IFS_WRITE関数およびプロシージャーです。これらは、重要な機能として特に目立つものではないかもしれませんが、おそらく、今後登場する素晴らしい機能の基盤となると思われます(また、DIY派のユーザーにとっては、自分自身でSQL関連の操作を行うためのツールがさらに加わることになります)。

表向き、この関数およびプロシージャーが追加されたのは、IFSストリーム ファイルの内容を構成または利用する機能をSQLプログラマーに提供するためでした。簡単そうに聞こえるでしょうか。IFS_READは、パス名によってIFSファイルを読み取り、結果を文字、バイナリー、またはUTF-8データとして返すのに使用できる表関数です。一方、IFS_WRITEは、IFSファイルに文字、バイナリー、またはUTF-8データとしてデータを書き込むためのプロシージャーです。

「業務で生成されたデータは、データベースの中にあるものもあります」とForstie氏は述べます。「また、IFSの中にあるものもあります。業務記録であろうと、受領書であろうと、あるいは、そこに保存しているどのようなものであれ、SQLがそれらを自由に処理できるようになります。」

この関数により、開発者は「より大きな望みを抱く」ことができ、IFSに蓄えてきたデータへSQLの能力を適用する様々な処理を行えるようになるとForstie氏は述べます。実際、そうしたければ、IFS_READサービスを検索エンジンのように使用することもできます。

「読み取りができるようになったら、このようなことを考えるのは自然な流れのように思われます。自分独自の小さな検索エンジンを構築するとしたら、どのようなことを行えるように構築するでしょうか。もちろん、望むことは何でもやってもらいたいでしょう」とForstie氏は述べます。「これはLucene検索エンジンとまでは言いませんが、SQLでできる範囲で、どのようなものにすることもできるのです。」

また、IFS_WRITEの持つ可能性についても、注目せずにはいられません。このプロシージャーがバイナリー、文字、およびUTF-8データをサポートすることからすると、開発者は、自分の望む言語を使用してIFSに書き込む機能を実現できるようになるとForstie氏は述べます。また、RPGおよびCOBOLでの組み込みSQLサポートによって、それらの言語で作業している開発者も、その新機能を活用できるようになります。

「文字データのみに制限されることはありません」とForstie氏は述べます。「もちろん、こうしたバイナリー データは、自分の望むタイプのデータへ変換することができます。そして、ここに数値タイプが含まれているとしたら、INTERPRET組み込み関数を使用してそれらを抽出し、SQL内でそれらを読み取ったデータ タイプのように処理することもできます。このようにしてIFSとの間で行ったり来たりすることができるのです。」

これらのTRでの機能強化の多くは、IBMのRFE(機能拡張要望)プログラムを通じてコミュニティから提案されたものです。かねてから、SQLでIFSとの間で読み書きを行えるようにしてほしいという要望は相当数あったようです。

「これは、年中、寄せられる問い合わせでした。「このデータベースには、どうしてこれを行う方法がないのですか」と。だからこそ、ようやくそのサポートが実現したわけです」とForstie氏は述べます。「考え得る新しいものは非常にたくさんあります。コミュニティがそれらを取り入れるのには、ある程度時間が掛かると思います。」

Forstie氏は、彼の相棒であり、IBM i でのアプリケーション開発およびシステム管理ツールを担当するビジネス アーキテクトのTim Rowe氏とともに、COMMONウェブキャストで、QSYS2.DATA_QUEUE_ENTRIESという、別の新たなIBM i サービスについてのデモを行いました。この表関数は、指定したデータ待ち行列から1つまたは複数のメッセージを返すのに使用されます。

「DATA_QUEUE_ENTRIESを使用すると、任意のデータ待ち行列を調べて、そこに何があるのか確認することができます」とForstie氏は述べます。「したがって、IFSの場合と同様に、文字データ、UTF-8データ、またはバイナリー データのように処理することができます。」

グリーンスクリーン コンソールでデータベース関係の表示(DSPDBR)コマンドを使用することの多い開発者は、SYTOOLS.RELATED_OBJECTSというSQLと同等の機能が追加されたと聞いて喜んでいることでしょう。これは、GUI環境(すなわち、IBM i およびDb2 for iサービスを利用する際の主流の方法となっているAccess Client Solutions)でデータを返すのに使用することができます。このDb2 for iサービス(これはIBM i サービスではありません。両者は別のものです)は、指定したデータベース ファイルに直接または間接的に従属するすべてのオブジェクトのリストを表示する表関数です。

「これはDSPDBRと比べてもはるかに有用です」とForstie氏は述べます。「なぜでしょうか。RELATED_OBJECTSは、DSPDBRと同じ情報を返すだけではなく、もう一歩踏み込んだ機能があるからです。すなわち、他の従属オブジェクトを見つける機能です。DSPDBRからプロシージャーや関数が見つかるでしょうか。いや、見つかりません。トリガーはどうでしょうか。それらすべての情報を得ることができるのです。」

これによって、プログラムについての理解がまったく新たなレベルまで高められます。あるいはForstie氏に言わせれば、「お手軽に影響分析を行える」ということです。「そのため、データベース エンジニアであれば、RELATED_OBJECTSを組み込むことで、依存関係のネットワーク構造を理解することができます。」

また、データベース エンジニアにとっては、QSYS2.DB_TRANSACTION_INFOも興味深いかもしれません。これは、コミットされていないデータベース アクションがあるジョブごとに1行を返すビューです。保留中の行またはオブジェクト変更があることを示してくれるサービスは他にはないとForstie氏は述べます。そのため、DB_TRANSACTION_INFOは、クローンする前、またはFlashCopyコマンドを使用する前に、データベースがすべて最新状態になっていること確認するための便利なツールとなります。

管理者にとっては、新たなQSYS2.OPEN_FILES()表関数が興味深いかもしれません。これは、ジョブのすべてのスレッドでオープンされているファイルのリストを返します。この新たなIBM i サービスは、機能的にはジョブの表示(DSPJOB)CLコマンドと同等ですが、OPEN_FILES()はSQLで使用されます。

改良されたIBM i サービスの1つに、IBM i NetServer共有に関する情報を返すQSYS2.SERVER_SHARE_INFOビューがあります。このビューは、サーバー情報のリスト(QZLSLSTI)およびサーバー情報のオープン・リスト(QZLSOLST)APIで得られるのと同じような情報を表示します。ネットワーク化されたシステムのセキュリティ構成が期待通りになっているかどうかを確認するのに有用だとForstie氏は述べます。

「それらについては、仕様を維持するのは非常に難しいものです。SQLでは、使用しているダッシュボードにこのような照会を追加するかもしれません」と彼は述べます。「このような操作は、2秒おきに繰り返し実行するといったようなものではありません。おそらく、あなたのネットワークのセキュリティ構成は、何秒おきに絶えず変更されているというわけではないでしょう。しかし、おそらく1日に一度は、この情報を確認するようにするとよいと思います。」

セキュリティ関連で言えば、新たなQSYS2.EXIT_POINT_INFOおよびQSYS2.EXIT_PROGRAM_INFOビューは、出口点および出口プログラムについての情報を返します。これらのプログラムは、出口プログラムを実装するプロセスを簡略化するのではなく、他のプログラムが既存のプログラムを検出しやすくするとForstie氏は述べます。

一方、アップデートされたQSYS2.DISPLAY_JOURNAL()表関数は、ジャーナル項目についての情報を返します。この関数は、ジャーナルの表示(DSPJRN)CLコマンドおよびジャーナル項目の検索(QjoRetrieveJournalEntries)APIによって返されるのと同じような情報を返します。しかし、DISPLAY_JOURNAL()は、特にSyslogについてはすべてカバーするようになっています。

「Syslogサポートでは、監査ジャーナル項目タイプを100%カバーするようになりました。また、ユーザー作成の監査ジャーナル項目も同様です」とForstie氏は述べています。「つまり、IBM i でSyslogフォーマットの詳細情報を問い合わせ、SIEM(セキュリティ情報およびイベント管理システム)に接続することで、この情報がすべて自動的にSIEMへ送られるようにすることができます。」

IBM i (またはDb2 for i)サービスのカテゴリーには分類されませんが、データベース本体に対する機能強化についても触れておきます。

たとえば、IBMは、IF EXISTS節をサポートするようにDROPステートメントを強化しました。IBMによれば、これにより、Database Definition Language(DDL)処理が効率化されるということです。また、SQL照会の述部にSELECTIVITY節が追加されました。これにより、データベース パフォーマンス エキスパートが、SQL Query Engineのプラン選択により良い影響を及ぼすことができるようになるとIBMは述べています。さらに、IBMは、WHENEVER SQLステートメントをサポートするように、RPG、COBOL、C、および++向けのSQLプリコンパイラーの強化も行なっています。

Forstie氏とRowe氏によるプレゼンテーションは、 こちらで視聴することができます。日本向けのIBM i 7.3 TR9のPDF発表レターは こちら 、IBM i 7.4 TR3のPDF発表レターは こちらでご覧になれます。

あわせて読みたい記事

PAGE TOP