CData Connect Cloud 経由で、PHP からHPCC Systems データにアクセス

詳細情報をご希望ですか?

製品について詳細情報や無償トライアルをご案内します:

CData Connect



PHP の標準MySQL ライブラリでHPCC Systems データをクエリする方法。

CData Connect Cloud を使えば、HPCC Systems データに対し、ETL 処理やキャッシュ処理なしでもMySQL クライアントからデータ連携ができるようになります。次のステップで、HPCC Systems の仮想MySQL データベースを作成して、mysqli toPDO_MySQL の標準MYSQL インターフェースでリアルタイムHPCC Systems に接続します。

CData Connect Cloud は、HPCC Systems データのクラウドto クラウドのインターフェースを仮想MySQL として提供し、PHP からRDB のようにデータをSQL でクエリすることができます。CData Connect Cloud がNode.js から発行されるSQL クエリ(フィルタリングやJOIN も可能)をパースしてHPCC Systems に送り、PHP アプリ にHPCC Systems からのデータを返します。インテリジェントなサーバーサイドプロセスで、多様なクエリをパフォーマンス良く利用できます。

HPCC Systems の仮想MySQL データベースを作成

CData Connect Cloud は、直観的なPoint-and-click インターフェースでデータソースへの接続およびAPI エンドポイント作成を行います。

  1. Connect Cloud にログインして、Databases をクリックします。
  2. 利用できるデータソースアイコンから"HPCC Systems" を選択します。
  3. HPCC Systems に接続するために必要なプロパティを入力します。

    接続するには、次の接続プロパティを設定します。Url をサーバーのマシン名もしくはIP アドレス、およびサーバーが起動しているポートに設定します。例えば、https://server:port。Url で指定されたHPCC システムへの認証には、User およびPassword が必要です。LDAP 認証は、現在サポートされていません。

    Version をWsSQL Web サーバーのバージョンに設定します。HPCC サーバーにWsSQL サービスをインストールしておく必要があることに注意してください。本製品は、HPCC システムへの連携にWsSQL Web サービスを使います。

    Cluster をターゲットクラスタに設定します。

  4. Test Database をクリックします。
  5. Privileges -> Add をクリックして、新しいユーザーを追加し、適切な権限を指定します。

これで、HPCC Systems の仮想データベースが作成でき、MySQL クライアントからの連携が可能になりました。

PHP での接続

次のサンプルのように、Object-Oriented インターフェースを使い、接続とクエリ実行を行います。 仮想MySQL に以下の接続パラメータで接続します:

  • Host:サービスが稼働しているリモートホストロケーションを指定します。この場合、"myinstance.cdatacloud.net" がリモートホスト設定の値になります。
  • Username:Connect Cloud で登録された権限のあるユーザー名を指定します。
  • Password:ユーザーのパスワードを指定します。
  • Database Name:HPCC Systems の仮想データベース名を指定します。
  • Port:3306 を指定します。

mysqli

<?php
$mysqli = mysqli_init();

$mysqli->ssl_set("C:/certs/cloudclient.key",
                 "C:/certs/cloudclient.pem",
                 "C:/certs/myCA.pem",
                 NULL,NULL);

$mysqli->real_connect("mysintance.cdatacloud.net", "admin", "mypassword", "hpccdb",3306,NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
?>

PDO

<?php
$pdo = new PDO('mysql:host=myinstance.cdatacloud.net;dbname=hpccdb;port=3306;','admin', 'mypassword', array(
    PDO::MYSQL_ATTR_SSL_KEY                => 'C:/certs/cloudclient.key',
    PDO::MYSQL_ATTR_SSL_CERT               => 'C:/certs/cloudclient.pem',
    PDO::MYSQL_ATTR_SSL_CA                 => 'C:/certs/myCA.pem',
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    )
);
?>

PHP でのクエリ

作成された接続でテーブルへのアクセスを実行します。以下がサンプルです:

  1. hpcc::test::orders テーブルをクエリします。結果は、$result オブジェクトの関連する配列に保存されます。
  2. PHP ページに行、カラムとして値がプリントされます。
  3. 接続をクローズします。

mysqli

$result = $mysqli->query("SELECT SUM(hpcc::test::orders.Price), hpcc::test::customers.CustomerName FROM hpcc::test::orders INNER JOIN hpcc::test::customers ON hpcc::test::orders.CustomerId=hpcc::test::customers.CustomerId;GROUP BY hpcc::test::customers.CustomerName");
while($row = $result->fetch_assoc()) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$mysqli->close();

PDO

$result = $pdo->query("SELECT SUM(hpcc::test::orders.Price), hpcc::test::customers.CustomerName FROM hpcc::test::orders INNER JOIN hpcc::test::customers ON hpcc::test::orders.CustomerId=hpcc::test::customers.CustomerId;GROUP BY hpcc::test::customers.CustomerName");
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$result = null;
$pdo = null;