EveryDB3は、Google Cloud(GCP)上に構築したリレーショナルデータベースにも接続できます。
GCPのフルマネージドRDBサービスであるCloud SQLは、MySQL / PostgreSQL / SQL Server と
互換のプロトコルで通信するため、EveryDB3側では専用のドライバを追加することなく、通常の
「MySQL」「PostgreSQL」「SQLserver」と同じ方法で接続できます。
本章では、Cloud SQLへの接続手順を解説します。
| 項番 | 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はGCPの大規模データ分析向けのデータウェアハウス(DWH)であり、MySQL/PostgreSQL等のような
一般的なRDBの接続プロトコル(TCP上のMySQL/PostgreSQLワイヤープロトコル)を持ちません。
EveryDB3はADO.NETの各DBプロバイダ経由で接続し、行単位の更新やテーブル作成(DDL)を多用するため、
BigQueryはEveryDB3の更新先としては適しておらず、本章の対象外とします。
BigQueryでJRA-VANデータを分析したい場合は、いったんCloud SQL等のRDBへEveryDB3で構築し、
そこからBigQueryへエクスポート/連携する、といった運用をご検討ください。
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)の場合、ネットワーク遅延により更新処理が遅くなる場合があります。
EveryDB3で接続する前に、Google Cloud コンソール等で以下を準備してください。
my-project:asia-northeast1:my-instance)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が起動している間のみ接続できる点に注意してください。
Cloud SQLでも、基本的な操作は通常のDBMSと同じく「接続設定」→「データベース作成」→「テーブル作成」の順で行います。 異なるのは、接続設定の「サーバ名」に、採用した方式に応じた接続先アドレスを入力する点です。
アドレス,ポート番号(例:127.0.0.1,1433)の形式で指定します。
※マネージドサービスの権限設定によっては、アプリケーションからのデータベース作成が許可されていない場合があります。 その場合は、あらかじめGCP側(または管理ツール)でデータベースを作成し、EveryDB3の接続設定で そのデータベースを指定してください。
方式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;)を付与します。
SslMode=None;、PostgreSQLはSSL Mode=Disable;)となります。TrustServerCertificate=True;を付与するため、通常は追加設定なしで暗号化接続できます。※クライアント証明書やサーバCA証明書は、Cloud SQLの「接続」→「セキュリティ」からダウンロードできます。 検証レベルや証明書の指定方法は、各プロバイダおよびGCPのドキュメントを参照してください。
アドレス,1433形式で指定しているかを確認します。