MySQL のFederated Table としてOData のデータを連携利用する

古川えりか
古川えりか
コンテンツスペシャリスト
SQL Gateway とODBC Driver を使ってOData のMySQL Federated Table を構築する。



SQL Gateway を使って、MySQL リモーティングサービスを作成し、OData のMySQL Federated Table を構築できます。CData ODBC Driver for OData のMySQL インターフェースのdeamon になります。サービス起動後、MySQL のFEDERATED ストレージエンジンを使ってサーバーおよびテーブルを作成します。OData のデータ をMySQL テーブルのように使いましょう。

OData のデータへの接続

まだ設定していない場合は、データソース名(DSN)に必要な接続プロパティの値を指定します。DSN の設定には、Microsoft ODBC Data Source Administrator を使用できます。これはドライバーインストールの最終手順でもあります。Microsoft ODBC Data Source Administrator を使ったDSN の作成・設定方法については、ヘルプドキュメントの「Getting Started」の章を参照してください。

OData への接続

OData に接続するには、Url を有効なOData サービスルートURI に設定する必要があります。 OData サービスにルートドキュメントがない場合、テーブルとして公開したい特定のエンティティをFeedURL に指定してください。

OData への認証

OData は、以下を経由する認証をサポートします。

  • HTTP
  • Kerberos
  • SharePoint Online
  • OAuth
  • Azure AD

HTTP 認証スキーム

HTTP で認証する場合は、次の表に従ってAuthScheme を設定します。

SchemeAuthSchemeその他の設定
NoneNone認証を必要としない場合に使用。
BasicBasicUserPassword
NTLMNTLMUserPassword
Digest(サポートされている場合)DigestUserPassword

その他の認証方法の詳細は、ヘルプドキュメントの「接続の確立」セクションを参照してください。

SQL Gateway の設定

OData のデータを仮想的なMySQL データベースとして利用できるように接続を設定するには、SQL Gateway の概要を参照してください。クライアントからのMySQL リクエストを受け付けるMySQL リモーティングサービスを設定します。このサービスは、SQL Gateway のUI で設定できます。

Creating a MySQL Remoting Service in SQL Gateway (Salesforce is shown)

OData データのFEDERATED サーバーおよびテーブルを作成

サービスの設定と起動が完了したら、FEDERATED サーバーを作成しましょう。これにより、FEDERATED テーブルの作成が簡単になります。

FEDERATED サーバーの作成

以下のステートメントでは、ODBC Driver for OData を基にしたFEDERATED サーバーを作成します。FEDERATED サーバーのユーザー名とパスワードは、SQL Gateway のUsers タブで定義したユーザーアカウントと一致させる必要があります。

CREATE SERVER fedOData
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'sql_gateway_user', PASSWORD 'sql_gateway_passwd', HOST 'sql_gateway_host', PORT ####, DATABASE 'CData OData Sys');

FEDERATED テーブルの作成

先ほど作成したサーバーを使ってFEDERATED テーブルを作成するには、CONNECTION キーワードを使い、FEDERATED サーバーの名前とリモートテーブル(Orders)を指定します。FEDERATED テーブルを作成するステートメントは、以下のテンプレートを参考にしてください。

CREATE TABLE fed_orders (
  ...,
  ordername  TYPE(LEN),
  freight  TYPE(LEN),
  ...,
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='fedOData/orders';

注:FEDERATED テーブルのテーブルスキーマは、リモートテーブルのスキーマと完全に一致させる必要があります。任意のMySQL クライアントを使ってMySQL リモーティングサービスに直接接続し、SHOW CREATE TABLE クエリを実行すれば、テーブルスキーマを取得できます。

クエリの実行

これで、MySQL に接続できる任意のツールからOData のFEDERATED テーブルに対してクエリを実行できるようになりました。ローカルテーブルのデータとOData のデータをJOIN したい場合には、特に便利です。以下の例を参考にしてください。

SELECT
  fed_orders.ordername,
  local_table.custom_field
FROM
  local_table
JOIN
  fed_orders
ON
  local_table.foreign_ordername = fed_orders.ordername;

はじめる準備はできましたか?

OData ODBC Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

OData Icon OData ODBC Driver

OData ODBC ドライバーは、ODBC 接続をサポートする任意のアプリケーションからリアルタイムなOData サービスに直接接続できるパワフルなツールです。標準のODBC ドライバーインタフェースを使用して、標準のデータベースのようにOData サービスにアクセスし、読み出し、書き込み、更新などを実行できます。