4-4. Google Cloud(GCP)上のRDB(クラウドデータベース)への接続

EveryDB3は、Google Cloud(GCP)上に構築したリレーショナルデータベースにも接続できます。 GCPのフルマネージドRDBサービスであるCloud SQLは、MySQL / PostgreSQL / SQL Server と 互換のプロトコルで通信するため、EveryDB3側では専用のドライバを追加することなく、通常の 「MySQL」「PostgreSQL」「SQLserver」と同じ方法で接続できます。

本章では、Cloud SQLへの接続手順を解説します。

4-4-1. 対象とするGCPサービス

項番 GCPサービス EveryDB3で選択するDBの種類 既定ポート 可否 備考
1 Cloud SQL for MySQL MySQL 3306  
2 Cloud SQL for PostgreSQL PostgreSQL 5432  
3 Cloud SQL for SQL Server SQLserver 1433 SQL Server認証を使用
4 BigQuery (対象外) × 下記「BigQueryについて」を参照

BigQueryについて

BigQueryはGCPの大規模データ分析向けのデータウェアハウス(DWH)であり、MySQL/PostgreSQL等のような 一般的なRDBの接続プロトコル(TCP上のMySQL/PostgreSQLワイヤープロトコル)を持ちません。 EveryDB3はADO.NETの各DBプロバイダ経由で接続し、行単位の更新やテーブル作成(DDL)を多用するため、 BigQueryはEveryDB3の更新先としては適しておらず、本章の対象外とします。
BigQueryでJRA-VANデータを分析したい場合は、いったんCloud SQL等のRDBへEveryDB3で構築し、 そこからBigQueryへエクスポート/連携する、といった運用をご検討ください。

4-4-2. 接続方式(ネットワーク構成)の選択

EveryDB3はWindows上で動作するデスクトップアプリケーションです。Cloud SQLへ接続するには、 EveryDB3を動かすパソコンからインスタンスへ到達できる経路を用意する必要があります。代表的な構成は次の3つです。

方式 概要 長所 注意点
A. Compute Engine上でEveryDB3を実行
(推奨)
同一VPC内のWindows版Compute Engine(GCE)インスタンス上でEveryDB3を動かし、 Cloud SQLのプライベートIPで接続する。 低遅延・高速・安全。更新処理が最も安定する。 GCEの費用・運用が必要。JV-Link/JRA-VAN利用条件を確認のこと。
B. Cloud SQL Auth Proxy 経由
(推奨)
手元のPC(またはGCE)でCloud SQL Auth Proxyを起動し、 EveryDB3はlocalhostの指定ポートに接続する。Proxyが暗号化とIAM認証を仲介する。 DBをパブリック公開せずに済み、通信が自動的に暗号化される。 Proxyの常駐起動とIAM権限(Cloud SQL Client)の設定が必要。
C. パブリックIP + 承認済みネットワーク Cloud SQLにパブリックIPを割り当て、「承認済みネットワーク」に手元PCのグローバルIPのみを登録する。 手軽に試せる。 インターネットに公開されるため、必ずIP制限とSSL利用を行うこと。本番運用は非推奨。

速度・安定性・安全性の観点から、本番運用では「A. 同一VPC内のGCEで実行」または「B. Cloud SQL Auth Proxy経由」を推奨します。 インターネット越し(方式C)の場合、ネットワーク遅延により更新処理が遅くなる場合があります。

4-4-3. 事前準備(GCP側の作業)

EveryDB3で接続する前に、Google Cloud コンソール等で以下を準備してください。

  1. 接続対象のCloud SQLインスタンスを作成する。
  2. 接続に必要な情報を控える(採用する方式により異なります)。
  3. 方式C(パブリックIP)の場合は、Cloud SQLの「接続」→「承認済みネットワーク」に、 EveryDB3を動かす端末のグローバルIPアドレス(/32)のみを登録する。
  4. 方式B(Auth Proxy)の場合は、以下を準備する。

(方式Bの場合)Cloud SQL Auth Proxyの起動例

EveryDB3を動かす端末で、Cloud SQL Auth Proxyを起動します(コマンドはバージョンにより異なります)。

REM 例:MySQL/PostgreSQLインスタンスへ、ローカルの既定ポートで待ち受ける場合
cloud-sql-proxy my-project:asia-northeast1:my-instance

起動すると、ローカルの 127.0.0.1 上の対応ポート(MySQL=3306 / PostgreSQL=5432 / SQL Server=1433)で 待ち受けます。EveryDB3側では「サーバ名」に127.0.0.1(または localhost)を指定します。 Proxyが起動している間のみ接続できる点に注意してください。

4-4-4. EveryDB3での接続設定(共通の流れ)

Cloud SQLでも、基本的な操作は通常のDBMSと同じく「接続設定」→「データベース作成」→「テーブル作成」の順で行います。 異なるのは、接続設定の「サーバ名」に、採用した方式に応じた接続先アドレスを入力する点です。

1. 接続設定(Cloud SQL for MySQL)

  1. 「データベースの種類」グループで、「MySQL」を選択します。
  2. 接続設定の「サーバ名」に、上記の方式に応じた接続先アドレスを入力します。
  3. 接続設定の「ポート番号」に、3306(既定値)を入力します。
  4. 接続設定の「ユーザ名」に、Cloud SQLに接続するユーザ名を入力します。
  5. 上記ユーザ名に対応するパスワードを入力します。
  6. 「接続確認(K)」ボタンをクリックして、「接続に成功しました」とメッセージが表示されることを確認してください。

2. 接続設定(Cloud SQL for PostgreSQL)

  1. 「データベースの種類」グループで、「PostgreSQL」を選択します。
  2. 接続設定の「サーバ名」に、上記の方式に応じた接続先アドレスを入力します。
  3. 接続設定の「ポート番号」に、5432(既定値)を入力します。
  4. 接続設定の「ユーザ名」に、Cloud SQLに接続するユーザ名(既定でpostgres)を入力します。
  5. 上記ユーザ名に対応するパスワードを入力します。
  6. DB文字コードはデフォルトの「Shift-JIS」のままとしてください。
  7. 「接続確認(K)」ボタンをクリックして、「接続に成功しました」とメッセージが表示されることを確認してください。

3. 接続設定(Cloud SQL for SQL Server)

  1. 「データベースの種類」グループで、「SQLserver」を選択します。
  2. 接続設定の「サーバ名」に、上記の方式に応じた接続先アドレスを入力します。
    ※既定の1433以外のポートを使用する場合は、サーバ名をアドレス,ポート番号(例:127.0.0.1,1433)の形式で指定します。
  3. 認証方式は「SQL Server認証」を選び、Cloud SQLで作成したユーザ名・パスワードを入力します。
    ※Cloud SQLではWindows統合認証は利用できません。
  4. 「接続確認(K)」ボタンをクリックして、「接続に成功しました」とメッセージが表示されることを確認してください。

4. データベースの作成

  1. 「データベースの作成」ボタンをクリックします。
  2. 「データベースの作成を行いますか?」という確認メッセージに「はい」を答えます。
  3. 「データベース「EveryDB3」の作成に成功しました」というメッセージを確認します。

※マネージドサービスの権限設定によっては、アプリケーションからのデータベース作成が許可されていない場合があります。 その場合は、あらかじめGCP側(または管理ツール)でデータベースを作成し、EveryDB3の接続設定で そのデータベースを指定してください。

5. テーブルの作成

  1. 「テーブル作成」ボタンをクリックします。
  2. 「テーブルの作成を行いますか」の確認メッセージに「はい」を答えます。
  3. 「テーブルの作成に成功しました」の確認メッセージを確認します。

4-4-5. SSL/TLS(暗号化通信)に関する注意

方式B(Cloud SQL Auth Proxy)を使う場合、Proxyが通信を自動的に暗号化するため、 EveryDB3側で特別なSSL設定は不要です(接続先はローカルのProxyになります)。これがGCPで最も簡単かつ安全な方法です。

方式C(パブリックIP)でProxyを使わず直接接続する場合は、通信の盗聴を防ぐためSSL/TLSの利用を強く推奨します。 Cloud SQL側で「SSL接続を必須」に設定している場合は、接続設定画面の 「SSLで接続する」チェックボックスをオンにしてください。 これにより、EveryDB3が接続文字列へ自動的にSSL指定(MySQLはSslMode=Required;、PostgreSQLはSSL Mode=Require;)を付与します。

※クライアント証明書やサーバCA証明書は、Cloud SQLの「接続」→「セキュリティ」からダウンロードできます。 検証レベルや証明書の指定方法は、各プロバイダおよびGCPのドキュメントを参照してください。

4-4-6. 性能・運用上の注意

4-4-7. 接続できない場合の確認ポイント