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

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

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

CData Connect



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

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

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

Google Cloud Storage の仮想MySQL データベースを作成

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

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

    ユーザーアカウントでの認証

    ユーザー資格情報の接続プロパティを設定することなく接続できます。InitiateOAuth をGETANDREFRESH に設定したら、接続の準備が完了です。

    接続すると、Google Cloud Storage OAuth エンドポイントがデフォルトブラウザで開きます。ログインして権限を付与すると、OAuth プロセスが完了します。

    サービスアカウントでの認証

    サービスアカウントには、ブラウザでユーザー認証を行わないサイレント認証があります。サービスアカウントを使用して、企業全体のアクセススコープを委任することもできます。

    このフローでは、OAuth アプリケーションを作成する必要があります。詳しくは、ヘルプドキュメントを参照してください。以下の接続プロパティを設定したら、接続の準備が完了です:

    • InitiateOAuth: GETANDREFRESH に設定。
    • OAuthJWTCertType: PFXFILE に設定。
    • OAuthJWTCert: 生成した.p12 ファイルへのパスに設定。
    • OAuthJWTCertPassword: .p12 ファイルのパスワードに設定。
    • OAuthJWTCertSubject: 証明書ストアの最初の証明書が選ばれるように"*" に設定。
    • OAuthJWTIssuer: [サービスアカウント]セクションで[サービスアカウントの管理]をクリックし、このフィールドをサービスアカウントID フィールドに表示されているE メールアドレスに設定。
    • OAuthJWTSubject: サブジェクトタイプが"enterprise" に設定されている場合はエンタープライズID に設定し、"user" に設定されている場合はアプリユーザーID に設定。
    • ProjectId: 接続するプロジェクトのID に設定。

    これで、サービスアカウントのOAuth フローが完了します。

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

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

PHP での接続

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

  • Host:サービスが稼働しているリモートホストロケーションを指定します。この場合、"myinstance.cdatacloud.net" がリモートホスト設定の値になります。
  • Username:Connect Cloud で登録された権限のあるユーザー名を指定します。
  • Password:ユーザーのパスワードを指定します。
  • Database Name:Google Cloud Storage の仮想データベース名を指定します。
  • 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", "googlecloudstoragedb",3306,NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
?>

PDO

<?php
$pdo = new PDO('mysql:host=myinstance.cdatacloud.net;dbname=googlecloudstoragedb;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. Buckets テーブルをクエリします。結果は、$result オブジェクトの関連する配列に保存されます。
  2. PHP ページに行、カラムとして値がプリントされます。
  3. 接続をクローズします。

mysqli

$result = $mysqli->query("SELECT Name, OwnerId FROM Buckets WHERE Name = 'TestBucket'");
while($row = $result->fetch_assoc()) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$mysqli->close();

PDO

$result = $pdo->query("SELECT Name, OwnerId FROM Buckets WHERE Name = 'TestBucket'");
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$result = null;
$pdo = null;