MySQL のFederated Table としてFactorial のデータを連携利用する
SQL Gateway を使って、MySQL リモーティングサービスを作成し、Factorial のMySQL Federated Table を構築できます。CData ODBC Driver for API のMySQL インターフェースのdeamon になります。サービス起動後、MySQL のFEDERATED ストレージエンジンを使ってサーバーおよびテーブルを作成します。Factorial のデータ をMySQL テーブルのように使いましょう。
Factorial のデータへの接続
まだ設定していない場合は、データソース名(DSN)に必要な接続プロパティの値を指定します。DSN の設定には、Microsoft ODBC Data Source Administrator を使用できます。これはドライバーインストールの最終手順でもあります。Microsoft ODBC Data Source Administrator を使ったDSN の作成・設定方法については、ヘルプドキュメントの「Getting Started」の章を参照してください。
認証
Factorial は認証に OAuth 2.0 を使用し、自分の HR データに接続する場合も、他のユーザーが各自のデータに接続できるようにする場合も、OAuth 2.0 認証を利用できます。
OAuth 認証の設定
OAuth を使って接続するには、以下のステップで進めます:
- Factorial の管理パネルに移動して、新しい OAuth アプリケーションを作成します。
- アプリケーション設定から Client ID と Client Secret をコピーします。
- 以下の接続プロパティを設定します。
- AuthScheme:OAuth に設定します。
- OAuthClientId:OAuth Client ID に設定します。
- OAuthClientSecret:OAuth Client Secret に設定します。
- Scope:データへのアクセス権限を指定します(デフォルト:"read write")。
SQL Gateway の設定
Factorial のデータを仮想的なMySQL データベースとして利用できるように接続を設定するには、SQL Gateway の概要を参照してください。クライアントからのMySQL リクエストを受け付けるMySQL リモーティングサービスを設定します。このサービスは、SQL Gateway のUI で設定できます。

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