5.34.1 SQLServiceの役割
このサービスが最もよく使用されるのは、IBM i アプリケーションが別のサーバー上のデータにアクセスする場合です。これは、別のIBM i 上のDB2データベース、Linuxボックス上のOracleデータベース、Windowsマシン上のSQLサーバー、その他JDBCドライバー経由でデータにアクセス可能な組み合わせなどが該当します。必要なデータ・アクセスは、CREATE、READ、UPDATE、DELETEになります。
リモート・データベースにアクセスするという点で同じ目的を実現するには複数の方法がありますが、JDBCが最も簡単な場合が多いため、このような問題の対応方法を決める際に検討すべき方法がSQLServiceになります。
以下に、このサービスの使用を実証するいくつかの例を示します。
例1
Webアプリケーションのサンプルが多数あり、これらが複数のサーバーの情報にアクセスする必要があるとします。IBM i サーバーではLANSA for the Webアプリケーションが実行しています。このアプリケーションはIBM i のほとんどの情報にアクセスしますが、複数の画面で、IBM i から収集されるデータに加えてWindowsサーバー上のOracleデータベースにある一部のデータを表示する必要があります。IBM i 上にあるデータについては、LANSA IBM i アプリケーションの場合と同様に通常の方法でこの情報のFETCH、SELECT、INSERT、UPDATE、DELETEを行います。ただし、Oracleデータベースにあるデータについては、SQLServiceを使用してJDBCドライバー経由でこのデータベースにアクセスすることを真剣に検討する必要があります。
他にも、LANSAを使用してこの目的を実現できる方法があります。データをIBM i 上のデータ待ち行列やステージング・ファイルに置くようにして、Visual LANSAアプリケーションでこのデータ待ち行列やステージング・ファイルをポーリングしてから、必要に応じてDB2データベースやOracleデータベースにデータを転送します。簡単なソリューションの場合、この方法はかなり効果的です。ただし、いくつかの欠点があります。
· この方法では、IBM i からデータを取り出すという概念が使用されます。この場合、Webアプリケーション自体は更新を行う別のシステムに依存します。
· Visual LANSAアプリケーションのポーリングが定期的に行われない場合、Webアプリケーションでは非同期データや非リアルタイム・データが生じる可能性があります。この問題はポーリング・レートを増やすことで解消されますが、当然CPUリソースやネットワーク・リソースの消費が増えます。更新が必要なデータがない場合でも、データ待ち行列やステージング・ファイルを調べるためにポーリングは引き続き行われます。これは、データを何らかの形で移動する必要があるかどうかを判断できる唯一の方法であるためです。
SQLServiceとJDBCドライバーを使用すると、Webユーザーに対してデータのアクセスやデータの更新を必要な限り行うことができます。これは、データベースへのアクセスがLANSA for the WebのWebEventファンクションやWAM自体で処理されるためです。データを転送する際にポーリング・アプリケーションに依存することはありません。したがって、この方法では、必要なときにのみCPUリソースやネットワーク・リソースを使用します。
例2
「IBM i アプリケーションではなぜJDBCドライバーを使用してIBM i のDB2データにアクセスする必要があるのか?」(IBM Toolbox for Javaに付属の2つのドライバーによる規定)という疑問があります。
このような方法は、別のリモートIBM i 上にあるDB2データベースにアクセスする場合に特に役立ちます。例えば、ある組織で、IBM i マシンが世界中のさまざまな場所で使用されているとします。ある国で実行するLANSA、RPG、またはCobolアプリケーションが、別の国にあるIBM i 上のDB2データベースのデータにアクセスする必要が生じる場合があります。これは、SQLServiceを使用する場合の適例です。SQLServiceを使用すると、IBM Toolbox for Java JDBCドライバー経由でリモートDB2データベースにリアルタイムでアクセスできます。このドライバーはすべてのIBM i インストールに付属しているため、IBM i アプリケーションでリモートDB2データベースにアクセスする場合の簡単でコスト効率の良いメカニズムになります。