08/03/2020 スコット・マッキニー
「ILEの観点からすると、データベースに対するインターフェースは沢山ありますが、PASEの観点からすると、これらのインターフェースには常に幾つかの弱点がありました。」とオープンソース、PASE、IBM i Access ODBCに関するアドバイザリー・ソフトウェアエンジニアのケビン・アドラー氏は語ります。「私たちはODBCをPASEに移植し、お客様がこれらのインターフェースと言語を使って少し上手く、そして容易にデータベースを活用できるようにました。」
このドライバーのお陰で、IBM iクライアントは複数のデータベースやプラットフォームに跨るODBCの標準インターフェースを活用できます。これはIBM Db2®専用に書かれた特化したコネクターを扱うよりもずっと容易です。ドライバーは新しい言語向けの既存ODBCインターフェースを使用するので、クライアントは新しい環境あるいはそれらの言語を活用することができます。こうした言語にはPython、Node.js、PHP、Perl、Rubyそして近い将来登場する新言語が含まれます。
何が変わったのか
これに先立ち、ODBCドライバーはIBM iに移植されました。開発者がローカルデスクトップで仕事をしたい場合、IBM iにそのアプリケーションを配置し、デスクトップ上にDb2 Connectを用意する必要があります。しかし、これには高額なライセンス料が求められます。
ODBCドライバーを使えば、LinuxやWindows®から接続するために使用するインターフェースはPASE内で使用するそれと同じです。それらはパラメータや接続オプションを共有し、そして何よりも同じように動作するのです。「多くのクライアントがこれを必要とし、私たちは以前には存在しなかったオプションを使えるようにしたのです。」とアドラー氏は言います。
「ODBCドライバーを使えば、構成オプションを追加でき、アプリケーションはそれをうまく利用するためにその構成を調整できます。一方、CLIを使用するとアプリケーションが設定できる接続属性またはステートメント属性を作成しなければなりません。」とオープンソース、PASE、IBM i Access ODBCに関するアドバイザリー・ソフトウェアエンジニアのケビン・アドラー氏は語ります。 |
クライアントのパフォーマンス向上
このODBCは、組み込まれた構成機能を含め、IBM iクライアントに多くの恩恵をもたらします。新しい環境では、クライアントはPHPにおけるPDO_ODBCあるいはPythonにおけるPyODBCのようなODBCドライバーと言語インターフェースを使用できます。この組み合わせにより、データソース名(DSN)を.iniファイルに渡し、その.iniファイルに直接構成オプションと接続文字列キーワードを指定することができます。
「この素晴らしい構成機能のお陰で、私たちはニーズと要求にもっと機敏に反応することができます。ODBCドライバーを使うことで、構成オプションを追加でき、アプリケーションはそれを活用するためにその構成を調整できます。一方、CLIを使うとアプリケーションが設定できる接続属性あるいはステートメント属性を作成しなければなりません。」とアドラー氏は言います。「接続属性とステートメント属性を設定するにはアプリケーションを変更する必要があります。一方、DSN構成はアプリケーションの変更を必要としません。これがODBCドライバーのもたらす利点です。」
新しいPHPが市場に出るとき、Zendが提供しているコミュニティPHPのRPMには一般にクライアントがZendサーバーと一緒に使ってきたIBM Db2およびPDO_IBMインターフェースが付いてきません。その代わり、ODBCとPDO_ODBCインターフェースが付いてきます。「我々のビジネスパートナーとコミュニティパートナーの一部は、クライアントをIBM Db2を使ったZendサーバーからODBCを使った新しいPHPに移行したときに、パフォーマンスの改善を経験しています。」とアドラー氏は言います。
更に、ODBCドライバーのお陰で、アドラー氏のチームはPython用のリレーショナル・マッパーであるSQLAlchemyへのインターフェースのような他のツールの開発により多くの時間を費やすことができます。チームは、エコシステムの残りの部分の拡張に注力できるよう、PyODBCインターフェースを活用しています。チームはIBM i用のコネクターLoopBackおよびSequlizerに関する同様の作業を完了しました。これらのコネクターはNode.js用のそれと僅かながら等価なものですが、Node.js用ではありません。
ODBCドライバーを最大限活かす
ODBCドライバーはデータベース・ホストサーバーを介して通信します。PASE APIディレクトリ・メモリーを介して接続するCLIとは違い、ホストサーバーへのTCP接続を確立する必要があり、すべての通信にはそれと関連付けられた事前開始ジョブがなければなりません。
パフォーマンス向上のために、事前開始ジョブに対する様々なチューニング・パラメータを使うことができます。通常時またはピーク時の負荷が分かっている場合には、間違いなくジョブが資源を消費して居座り続けることがないようにできます。これらのパラメータについてもっと知りたければ、IBM Knowledge Centerをご覧ください。
パフォーマンスを向上させるためにできるもう1つのことは、接続プールを使うことです。ODBC APIにはそのAPIに接続プールの機能があります。使用法と構成はプラットフォームと言語インターフェースに依存します。
ODBCドライバーの導入
導入プロセスは十分に文書化されています。ドライバーはWindows、Linux、PASE for IBM iそして直近ではmacOS用のものが利用可能です。PASEに導入すると、デフォルトの*LOCAL DSNが付いてきます。導入が完了すると、選択した言語用のODBCインターフェースが利用可能になるはずです。PyODBCはPythonで使用可能で、IBMのオープンソース・パッケージ管理を介して利用可能です。node-odbc(これはIBMが維持管理しています)はNode.js 8またはそれ以降のバージョン上のnpmを介して導入することができます。Zendが提供しているコミュニティPHPにはODBCインターフェースとPDO_ODBCインターフェースの両方が付いています。
「私たちは、これらすべての言語からこれらのインターフェースをすぐに使用できるようにするという経験を確実に活用しました。」とアドラー氏は言います。「私たちは、コマンド行あるいはACSのオープンソース・パッケージGUIを使って導入ができるよう、Yumリポジトリの一部としてドライバーを出荷することに取り組んでいます。」
アドラー氏のチームは既存のインターフェースを維持し続ける予定ですが、積極的にそれらを使った開発を行うつもりはありません。
「私たちはODBC用に提供されている言語インターフェースをもったODBCドライバーを活用することに重点を置いています。」とアドラー氏は言います。「既存のアプリケーションをノードまたはPythonインターフェースに変換することをお奨めします。そして、ゆくゆくはODBCドライバーを使うことを検討するよう強くお奨めします。」