Skip to main content

SQL ビジネス・サービスの使用法

InterSystems IRIS® データ・プラットフォームでは、SQL を使用してデータをプロダクションに読み込む事前構築済みのビジネス・サービスを 2 つ提供しています。1 つはクエリ用、もう 1 つはストアド・プロシージャ用です。ビジネス・サービスを使用してクエリを実行するには、EnsLib.SQL.Service.GenericServiceOpens in a new tab をプロダクションに追加します。クエリではなく SQL プロシージャを実行する場合は、EnsLib.SQL.Service.ProcServiceOpens in a new tab を使用します。

これらの組み込みのビジネス・サービスは、受信 SQL アダプタ (EnsLib.SQL.InboundAdapterOpens in a new tab) を使用して外部データ・ソースにアクセスします。このアダプタとその結果の処理方法を詳しく制御できるカスタム・ビジネス・サービスの構築が必要になることもあります。

Java ゲートウェイ・サービス (JDBC 用) の追加

JDBC データ・ソースを使用している場合、プロダクションで EnsLib.SQL.Service.GenericServiceOpens in a new tab または EnsLib.SQL.Service.ProcServiceOpens in a new tab を扱うには、プロダクションに EnsLib.JavaGateway.ServiceOpens in a new tab も追加します。このビジネス・サービスは Java ゲートウェイを開始し、また停止します。このビジネス・ホストは追加の機能を実行します。その設定は、Java ゲートウェイの場所を示します。プロダクションにあるほとんどのビジネス・ホストと異なり、EnsLib.JavaGateway.ServiceOpens in a new tab ではプロダクション・メッセージが処理されません。

EnsLib.JavaGateway.ServiceOpens in a new tab の設定の詳細は、"EnsLib.JavaGateway.Service の設定" を参照してください。

データ・ソース名の指定

使用するデータを保持しているデータ・ソースを指定するには、ビジネス・サービスの設定 EnsLib.SQL.Service.GenericServiceOpens in a new tab または EnsLib.SQL.Service.ProcServiceOpens in a new tab を構成します。

DSN

このデータ・ソース名は、接続先である外部データ・ソースを指定します。定義済みの InterSystems SQL ゲートウェイ接続、JDBC URL、またはオペレーティング・システムに構成した ODBC DSN の名前を指定できます。

管理ポータルの [システム管理][構成する][接続性][SQLゲートウェイ接続] ページから構成された JDBC 接続または ODBC 接続の名前とこの名前が一致すると、その仕様のパラメータが使用されます。エントリが構成済みの接続名ではなく、そこにコロン (:) が使用されていると、その名前は JDBC URL と見なされます。それ以外の場合は ODBC DSN と見なされます。

以下の例は、JDBC URL を参照する DSN の名前を示しています。

jdbc:IRIS://localhost:9982/Samples

以下の例は、Microsoft Access データベースを参照する ODBC DSN の名前を示しています。

accessplayground

このデータ・ソースがパスワードによって保護されている場合は、ユーザ名とパスワードを含むプロダクション認証情報を作成します。その後、これらの認証情報の ID と一致するように Credentials を設定します。詳細は、"その他の実行時設定の指定" を参照してください。

JDBC データ・ソースを使用している場合は、以下の設定も適用されます。

Java Gateway Service

このビジネス・サービスで使用する Java ゲートウェイ・サーバを制御する Java ゲートウェイ・サービスの構成名です。基盤となるアダプタ設定は JGService です。"Java ゲートウェイ・サービス (JDBC 用) の追加" を参照してください。

JDBC ドライバ

JDBC ドライバ・クラス名です。

名前付き SQL ゲートウェイ接続を DSN として使用する場合、この値の指定は任意です。ただし、値を指定すると、名前付き JDBC SQL ゲートウェイ接続のプロパティよりも優先して適用されます。

JDBC クラスパス

JDBC ドライバ・クラス名のクラスパスです (Java ゲートウェイ・サービスで構成したクラスパス以外にも必要な場合)。

接続の属性

必要に応じて設定できる一連の SQL 接続属性オプション。ODBC の場合は、これらの形式は次のとおりです。

attr:val,attr:val

例 : AutoCommit:1

JDBC の場合は、これらの形式は次のとおりです。

attr=val;attr=val

例 : TransactionIsolationLevel=TRANSACTION_READ_COMMITTED

名前付き JDBC SQL ゲートウェイ接続を DSN として使用する場合、この値の指定は任意です。ただし、値を指定すると、名前付き JDBC SQL ゲートウェイ接続のプロパティよりも優先して適用されます。

受信クエリの指定

既定では、SQL ビジネス・サービスは、受信アダプタを使用してクエリを定期的に実行します。このアダプタからビジネス・サービスに結果が 1 行ずつ送信されます。

クエリの指定

ビジネス・サービスで使用される基本のクエリを指定するには、Query 設定を使用します。この設定では、基本のクエリ文字列を指定します。置き換え可能なパラメータの表現には、SQL 標準の ? を使用できます。これは、個別の設定で指定します。以下の例を検討します。

SELECT * FROM Customer
SELECT p1,p2,p3 FROM Customer WHERE updatetimestamp > ?
SELECT * FROM Sample.Person WHERE ID > ?
SELECT * FROM Sample.Person WHERE Age > ? AND PostalCode = ?

パラメータの指定

Parameters 設定では、クエリ文字列内の置き換え可能なパラメータを指定します。この設定は、以下のような、パラメータ値指定子のカンマ区切りリストになります。

value,value,value,...

指定する値ごとに、10Gotham City などの定数リテラル値を使用したり、以下のいずれかを参照したりできます。

  • アダプタのプロパティを参照できます。Parameters 設定内で、構文 %property_name を使用します。

  • ビジネス・サービスのプロパティを参照できます。構文 $property_name を使用します。

    例えば、タイムスタンプを入れるために、LastTS という名前のプロパティをビジネス・サービス・クラスに追加できます。Parameters 設定では、プロパティの値を $LastTS として参照します。

  • &%LastKey などの特別な永続値を参照できます。この値には、アダプタによって最後に処理された行の IDKey 値が含まれています。

    Parameters 設定でパラメータ名がアンパサンド (&) で始まる場合は、その名前は特別な永続値であると見なされます。

    Note:

    カスタム・ビジネス・サービスを使用したこれらの値の初期化については、"アダプタの初期化" を参照してください。

文字列データの最大長の指定

ビジネス・サービスの [VARCHAR LOB Boundary] 設定では、VARCHAR データ型を使用して InterSystems IRIS に格納できる文字列の最大長を指定します。ソース・データベース内に、指定した値より長い文字列を含む列があると、InterSystems IRIS では、LOB (ラージ・オブジェクト) データ型を使用してその文字列が格納されます。ビジネス・サービスの受信アダプタの対応するプロパティは、MaxVarCharLengthAsString です。

デフォルトの最大文字列長は 32767 です。値 -1 を指定すると、InterSystems IRIS の最大文字列長を使用できます。現在、これは 3641144 ですが、今後のバージョンで変更される可能性があります。InterSystems IRIS の最大文字列長より大きな値を指定した場合、InterSystems IRIS の現在の最大文字列長が使用されます。

SQL プロシージャ設定

ビジネス・サービスでストアド・プロシージャを呼び出す方法を制御する設定の詳細は、"プロシージャの詳細" を参照してください。

メッセージについて

外部データ・ソースから取得したデータを受信するために、カスタム・メッセージ・クラスを作成する必要はありません。既定では、SQL データはダイナミック・オブジェクト内にクエリの各列のプロパティと共に配置されます。このオブジェクトを記述する JSON 文字列は、Ens.StreamContainer のストリーム値として挿入されるので、その値をプロダクション経由で他のビジネス・ホストに送信できます。

カスタム・メッセージ・クラスを開発し、それを使用してデータをプロダクション経由で転送する場合は、プロパティ名が SQL クエリの列に完全に一致する必要があります。回避策として、SQL As キーワードを使用して、列の名前をプロパティ名に変更できます。メッセージ・クラスを定義したら、管理ポータルを開き、ビジネス・サービスの [メッセージ・クラス] 設定を使用して、そのメッセージ・クラスを選択します。

データ型とメッセージの詳細は、"メッセージの詳細" を参照してください。

FeedbackOpens in a new tab