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

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



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

BugHerd のデータへの接続

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

まず、Profile 接続プロパティをディスク上の BugHerd プロファイルの場所に設定します(例:C:\profiles\BugHerd.apip)。次に、ProfileSettings 接続プロパティを BugHerd の接続文字列に設定します(以下を参照)。

BugHerd API プロファイル設定

BugHerd では、API キーをユーザー名とする HTTP Basic 認証を使用します。API キーは以下の手順で取得できます。

  1. https://www.bugherd.com で BugHerd アカウントにサインインします。
  2. 「Settings」>「General Settings」に移動します。
  3. 「API Key」セクションで、生成されたキーをコピーします。

API キーを取得したら、以下の接続プロパティを設定します。

  • AuthScheme:APIKey に設定します。

ProfileSettings 接続プロパティには、以下を設定します。

  • APIKey:BugHerd の API キーに設定します。ドライバーはこのキーを Basic 認証のユーザー名として使用し、BugHerd の仕様に従ってパスワードを内部的に固定値 'x' に設定します。

SQL Gateway の設定

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

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

BugHerd データの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 サーバーの名前とリモートテーブル(Tasks)を指定します。FEDERATED テーブルを作成するステートメントは、以下のテンプレートを参考にしてください。

CREATE TABLE fed_tasks (
  ...,
  id  TYPE(LEN),
  title  TYPE(LEN),
  ...,
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='fedAPI/tasks';

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

クエリの実行

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

SELECT
  fed_tasks.id,
  local_table.custom_field
FROM
  local_table
JOIN
  fed_tasks
ON
  local_table.foreign_id = fed_tasks.id;

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

API Driver で BugHerd のライブデータに接続

BugHerd に接続