MySQL のFederated Table としてJD Edwards のデータを連携利用する
SQL Gateway を使って、MySQL リモーティングサービスを作成し、JD Edwards のMySQL Federated Table を構築できます。CData ODBC Driver for JDEdwards のMySQL インターフェースのdeamon になります。サービス起動後、MySQL のFEDERATED ストレージエンジンを使ってサーバーおよびテーブルを作成します。JD Edwards のデータ をMySQL テーブルのように使いましょう。
JD Edwards のデータへの接続
まだ設定していない場合は、データソース名(DSN)に必要な接続プロパティの値を指定します。DSN の設定には、Microsoft ODBC Data Source Administrator を使用できます。これはドライバーインストールの最終手順でもあります。Microsoft ODBC Data Source Administrator を使ったDSN の作成・設定方法については、ヘルプドキュメントの「Getting Started」の章を参照してください。
ドライバーは Application Interface Services(AIS)Server を経由して JD Edwards に接続します。以下の接続プロパティを設定します。
- URL:AIS Server のベース HTTPS URL(例:https://jde-ais.example.com:8300)。
- User:JD Edwards のユーザー名。
- Password:JD Edwards のパスワード。
- Environment(オプション):使用する JD Edwards の環境(例:本番環境なら PD920、開発環境なら DV920)。指定しない場合は、AIS Server のデフォルト環境が使用されます。
- Role(オプション):セッションで使用する JD Edwards のロール。指定しない場合は、AIS Server のデフォルトロールが使用されます。
- DeviceName(オプション):接続元のデバイスまたはアプリケーションの識別子。AIS Server での監査やログ記録に使用されます。
- Jasserver(オプション):リクエストのルーティング先となる Java Application Server(JAS)インスタンス。クラスタ環境で便利です。
公開するデータの選択
JD Edwards ではテーブルとビジネスビューが System Code ごとに整理されており、ドライバーは各 System Code をそれぞれ個別のスキーマとして公開します。利用できるスキーマは、以下のプロパティで制御できます。
- DataModel:System Code をスキーマとして公開する ERP モジュール(カンマ区切りで複数指定可)。接続先インスタンスのすべての System Code を公開する場合は All を指定します。デフォルトは FinancialManagement です。
- SystemCodes:DataModel の System Code に加えて公開したい System Code のカンマ区切りリスト(例:42,43)。
接続時、ドライバーは認証情報を AIS Server に送信してセッショントークンを取得し、キャッシュします。セッションの有効期限が切れる前に、新しいトークンが自動でリクエストされます。
SQL Gateway の設定
JD Edwards のデータを仮想的なMySQL データベースとして利用できるように接続を設定するには、SQL Gateway の概要を参照してください。クライアントからのMySQL リクエストを受け付けるMySQL リモーティングサービスを設定します。このサービスは、SQL Gateway のUI で設定できます。

JD Edwards データのFEDERATED サーバーおよびテーブルを作成
サービスの設定と起動が完了したら、FEDERATED サーバーを作成しましょう。これにより、FEDERATED テーブルの作成が簡単になります。
FEDERATED サーバーの作成
以下のステートメントでは、ODBC Driver for JDEdwards を基にしたFEDERATED サーバーを作成します。FEDERATED サーバーのユーザー名とパスワードは、SQL Gateway のUsers タブで定義したユーザーアカウントと一致させる必要があります。
CREATE SERVER fedJDEdwards FOREIGN DATA WRAPPER mysql OPTIONS (USER 'sql_gateway_user', PASSWORD 'sql_gateway_passwd', HOST 'sql_gateway_host', PORT ####, DATABASE 'CData JDEdwards Sys');
FEDERATED テーブルの作成
先ほど作成したサーバーを使ってFEDERATED テーブルを作成するには、CONNECTION キーワードを使い、FEDERATED サーバーの名前とリモートテーブル(AccountsPayable.AccountLedger)を指定します。FEDERATED テーブルを作成するステートメントは、以下のテンプレートを参考にしてください。
CREATE TABLE fed_accountspayable.accountledger ( ..., documentnumber TYPE(LEN), amount TYPE(LEN), ..., ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='fedJDEdwards/accountspayable.accountledger';
注:FEDERATED テーブルのテーブルスキーマは、リモートテーブルのスキーマと完全に一致させる必要があります。任意のMySQL クライアントを使ってMySQL リモーティングサービスに直接接続し、SHOW CREATE TABLE クエリを実行すれば、テーブルスキーマを取得できます。
クエリの実行
これで、MySQL に接続できる任意のツールからJD Edwards のFEDERATED テーブルに対してクエリを実行できるようになりました。ローカルテーブルのデータとJD Edwards のデータをJOIN したい場合には、特に便利です。以下の例を参考にしてください。
SELECT fed_accountspayable.accountledger.documentnumber, local_table.custom_field FROM local_table JOIN fed_accountspayable.accountledger ON local_table.foreign_documentnumber = fed_accountspayable.accountledger.documentnumber;