要望が多かったSQL機能がIBM i 7.6で導入へ
IBM i エンジニアおよびプロダクト マネージャーは、目を通すべき機能要望には事欠きません。それらのうち、プラットフォームへの導入にまでこぎつけるものも一部にはありますが、多くはそうなりません。間近に迫るIBM i 7.6のデリバリーでは、IBMは、最も要望が多かった機能の1つを提供する予定です。すなわち、SQLステートメントのdata-change-table-reference節でのUPDATEおよびDELETEステートメントのサポートです。
IBMのDb2 for i ビジネス アーキテクト、Scott Forstie氏によれば、data-change-table-referenceでUPDATEおよびDELETEステートメントをサポートできることは、大したことではないように思われるかもしれませんが、実際のところは、開発者のデータベース プログラミング タスクを簡略化することで、著しい改善をもたらすということです。
「データベース プログラマーなら誰でも、行の更新や行の削除のやり方はご存じでしょう」とForstie氏は先週のブリーフィングで『 IT Jungle 』に述べています。「7.6以前になかったのは、照会で更新および削除をラッピングして、このアクションがデータベース ファイルに対して行ったことに関して、どのような影響があったかのインサイトを詳細に把握できるようにする方法です。」
この機能をビジネスでどのように利用できるかに関しては、様々な実例があります。たとえば、従業員の昇給が実施されたとします。データベースの給与額の行は最新の金額に更新されますが、以前の給与額用の別の列を作成しているか、あるいはテンポラル表(IBMが IBM i 7.3で追加 )を実装していなければ、古い給与額の情報は失われ、それについて計算を行うことはできなくなります。
data-change-table-reference節でのUPDATEおよびDELETEステートメントのサポートにより、プログラマーは、一度に新たな給与額で行を更新して、古い値を削除して、増加額を返す(データベースに対する一度の操作ですべてを行う)照会を書くことができるようになりました。
「これは、私のプログラミング ロジックの中では、テンポラル表と比較しても、より実用的です。私は、あるコードの流れの中で、何らかのデータ操作を行う必要がありましたが、どの行で作業していたかに関して把握する必要もありました」とForstie氏は述べています。「この機能のおかげで、SQLプログラマーが、サマリー レポートを作成するのが非常に簡単になります。また、プログラム ロジックで役に立ったり、そのような情報を使用する他の方法でも役に立ったりするインサイトの抽出も非常に簡単に行えます。」
他のSQLデータベースは、data-change-table-reference節でUPDATEおよびDELETEステートメントをサポートしてきました。しかし、これまでのところ、Db2 for i は、data-change-table-referenceでは、INSERTコマンドをサポートするのみで、追加のSQLコマンドのサポートはありませんでした。
「DB2の他のバージョンでは、データ変更表参照(data change table references)は、UPDATEおよびDELETEステートメントでも使用できるようになる可能性があります」と、 Broadway Systems社のデータベース管理者で、『 IT Jungle 』にも記事を寄稿しているMichael Sansoterra氏は 2015年の記事で記しています。「これらの機能がいつかDB2 for i に導入されることがあるとしたら、将来の展望として胸躍るものがあります。」
その日がとうとうやって来ます。IBM i 7.6が4月18日に提供開始されるからです。Forstie氏によれば、data-change-table-referenceでのUPDATEおよびDELETEステートメントのサポートは、統合された多要素認証(同じく今回のリリースで追加)とともに、IBM i CTOのSteve Will氏が背負い込んでいた「重要課題」の1つだということです。
「LUG企業からも、IBM Ideas Portalやアドバイザリー グループからも、何度となく要望されてきました」とForstie氏は述べています。「誰もが求めていました。プログラマーが助けを求めていたのです。それは複雑なプログラミング タスクを簡略化するものです。彼らにとっては当然実装されるべきものだったのです。」
もうひとつ、data-change-table-referenceでのUPDATEおよびDELETEステートメントのサポートに付随する隠れたメリットがあるとForstie氏は述べています。すなわち、並列化およびデータベースの対称型マルチプロセッシング(SMP: symmetric multi-processing)のサポートによる処理の高速化です。
「このdata-change-table-referenceサポートが導入されたら、それを使用して、更新および削除の並行実行を実装することができます」と彼は述べています。「そのため、それが提供する機能から知見が得られるというだけではありません。それを使用することを選べば、実行全体の高速化も実現できます。」
IBMは、Db2 SMP機能(オプション26として知られる)に対して、以前は追加料金を求めていました。しかし、 2022年にIBMが様々なIBM i ライセンス プログラム製品(LPP)で行ったIBM i 簡素化の取り組みのおかげで、現在は、Db2 SMPはオペレーティング システムにバンドルされるようになっています。
新たなMFA機能と同様に、data-change-table-referenceでのUPDATEおよびDELETEステートメントのサポートも、IBM i 7.6でのみ提供される機能です。
IBMは、7.6で、ある程度の数のSQLサービスの新規追加および改善など、他にも様々なデータベースの変更を行っています。その1つは、Db2 for i によって使用されるSQLSTATE値とそれに対応するSQLCODEに関する情報を返す、SQLSTATE_INFOと呼ばれる新たなテーブルです。また、データベース エンジニアは、DUMP_PLAN_CACHEプロシージャーへのQRO_HASHオプション フィルターの追加も評価するでしょう。これにより、特定のSQLステートメントに対するSQL Query Engine(SQE)の詳細情報を簡単に取得できるようになりました。
また、Code for IBM i 向けのDb2 for i 拡張機能も更新されています。IBM製品ではないものの、このオープンソース プロジェクトは非常に人気が高く、ユニーク ダウンロード回数は27,000回以上を数えます。Steve Will氏のブログ記事によれば、近頃、このデータベース拡張機能には、自然言語処理向けのAIプラットフォームとの統合機能だけでなく、新たなSQL構文の検証機能も加わっているということです。
IBM i 7.6は、4月18日に一般利用可能となります。4月10日午前9時(米国東部時間)に、Will氏による、新たなリリースおよびIBM i 7.5テクノロジー リフレッシュ6に関するウェブキャストが行われる予定です。 こちらで参加登録できます。