---
title: "Google Cloud SQL の利用方法"
date: "2016-01-06"
categories: 
  - "data-integration"
  - "mobile"
  - "software"
  - "technology"
tags: 
  - "baseball"
  - "cloud-sql"
  - "database"
  - "google-cloud-sql"
  - "lahmans-baseball-database"
  - "sql"
description: Google Cloud SQLとLahmanの野球データベースを活用して、モバイルアプリのバックエンド機能を強化し、データ分析能力を向上させる方法について解説します。
---
Status: #blog

Tags:  #baseball #cloud-sql #database #google-cloud-sql #lahmans-baseball-database #sql

Categories: [data-integration](/blog/ja/category/data-integration.md) 
# Google Cloud SQL の利用方法

Google [最近発表された](http://googlecloudplatform.blogspot.com/2015/12/the-next-generation-of-managed-MySQL-offerings-on-Cloud-SQL.html) Cloud SQL上で提供される、次世代のマネージドMySQLサービスを試してみたかったのです。そして、モバイルアプリのバックエンドとして利用できる、あるいはデスクトップ環境から高度なデータ分析を行うための、クラウドベースのSQLデータベースを構築したいと考えていました。

Googleによると、Cloud SQLの第2世代の主な目標は、より優れた_パフォーマンス_と、コストパフォーマンスに優れた_拡張性_でした。彼らはこれらの目標を達成したようです。第2世代のCloud SQLは、第1世代よりも7倍以上の速度で動作します。また、1インスタンスあたり10TBのデータ、15,000 IOPS、104GBのRAMまで拡張可能であり、これは第1世代を大きく上回ります。そのため、モバイルアプリ向けの理想的な、拡張性の高いクラウドベースのデータベース基盤と言えるでしょう。

![クラウド上のデータ](/blog/images/shutterstock_68942902.jpg)

<!--more-->If you follow the instructions on the the [Google blog post](http://googlecloudplatform.blogspot.com/2015/12/the-next-generation-of-managed-MySQL-offerings-on-Cloud-SQL.html), you will first have to create a trial account for Google Cloud. Then, once you are logged into the Google Developer Console, click on the top-left menu button and select SQL under the storage section. This will enable you to create a new second generation Cloud SQL instance:

![Google Cloud SQL コンソール](/blog/images/GoogleCloudSQLConsole-1030x880.png)

ルートパスワードを変更し、クラウドインスタンスへのアクセスを、開発環境やモバイルアプリのバックエンドサーバーが接続される許可されたネットワークからのみ許可することを強く推奨します。例えば、今後のブログ記事では、このデータベースを活用してモバイルアプリを構築する方法について解説する予定です。その際、モバイルアプリのサーバー機能とワークフローを提供する[MobileTogetherバックエンドサーバー](https://www.altova.com/ja/mobiletogether/server.html)は、このCloud SQLインスタンスにアクセスできる必要があります。

ローカルの開発環境からCloud SQLインスタンスを利用するには、まずお使いの環境に合わせた[MySQLツール](http://dev.mysql.com/downloads/)をダウンロードする必要があります。これにより、**mysql**コマンドラインツールを使用できるようになります。また、コンピューター上の他のアプリケーションからCloud SQLデータベースを利用するには、それぞれの[MySQL Connector](http://dev.mysql.com/downloads/connector/)をダウンロードする必要があります。

今回のブログ記事では、SQLインスタンスへのアクセス、データのアップロード、および分析を行うために[Altova DatabaseSpy](https://www.altova.com/ja/databasespy.html)を使用します。そのため、[MySQL Connector/ODBC for Windows](http://dev.mysql.com/downloads/connector/odbc/)をダウンロードしてください。DatabaseSpyは、Toadと似ていますが、異なるデータベースサーバー上の複数のデータベースインスタンスに同時に接続できる点が特徴です。つまり、Cloud SQLへの接続、ローカルのSQL Serverへの接続、そしてOracle Databaseへの接続を、すべて同じワークスペース内で同時に行うことができます。非常に便利です。

重要な注意点として、正しいConnector/ODBCドライバをダウンロードするようにしてください。DatabaseSpyの64ビット版を使用している場合は、MySQL Connector/ODBCドライバの64ビット版も必要になります。あるいは、より良い方法として、Connector/ODBCの32ビット版と64ビット版の両方をダウンロードしてインストールし、両方をインストールすることで、お使いのコンピューター上の32ビットおよび64ビットのソフトウェアからCloud SQLを利用できるようになります。

実験やさらなる分析のために、Cloud SQLインスタンスに役立つデータをいくつか取り込むため、優れたデータセットをダウンロードしました [ラフマン野球データベース](http://www.seanlahman.com/baseball-archive/statistics/), これは、便利なことに圧縮されたMySQLのダンプファイルとして提供されています。このファイルをダウンロードした後、SQLデータベースのテーブル定義とすべてのデータが、すべて1つのSQLファイルにまとめられているため、簡単にCloud SQLインスタンスにアップロードできます。

最初のステップは、〜です [Cloud SQLで新しいデータベースを作成してください](https://cloud.google.com/sql/docs/create-database) 例えば、データベースを作成するには、mysqlコマンドラインユーティリティ、Googleデベロッパーコンソール、またはcURLを使用できます。詳細は、この段落の冒頭にあるリンクを参照してください。ここでは、このデータベースを単に「lahman」と呼びます。

データベースSpyからこのデータベースに接続するには、「データベースに接続」コマンドを選択し、接続ウィザードの手順に従います。まず、データベースの種類としてMySQLを選択します

![Google Cloud SQL への接続 (1)](/blog/images/GoogleCloudSQLConnect1.png)

次に、以前にダウンロードしたMySQL Connector/ODBCドライバが正しく使用されていることを確認します

![Google Cloud SQL 接続ツール 2.0](/blog/images/GoogleCloudSQLConnect2.png)

そして最後に、クラウドSQLインスタンスのIPアドレス、ユーザー名、パスワードを指定し、接続を確認するために「テスト」ボタンをクリックします。もし接続が確立できれば、データソースの名前を付けて作成し、以前に作成した「lahman」データベースを指定することができます

![Google Cloud SQL 接続 (バージョン3)](/blog/images/GoogleCloudSQLConnect3.png)

さて、準備が整いましたので、ダウンロードして展開したLahman Baseball DatabaseのSQLダンプファイルを、新しいデータベースのテーブルにデータを投入します。そのために、DatabaseSpyで開いたSQLダンプファイルは、以下のような表示になります

![LahmanSQLdump (または、Lahman SQLダンプ)](/blog/images/LahmanSQLdump-1030x854.png)

ご覧の通り、そのデータベースのSQLダンプには、新しいCloud SQLインスタンス上にすべてのテーブルを再作成するために必要なコマンドがすべて含まれています。したがって、今やるべきことは、「実行」ボタンをクリックするだけです。インターネット接続の速度にもよりますが、これにはしばらく時間がかかる場合があります。なぜなら、現在、1871年から2014年までの詳細な野球統計データを含む24のテーブルを作成しているからです。そのうちのいくつかは、16万件以上の行を含んでいます。私の場合は、完了するまでに約8分かかりました。

データベースSpyのオンラインデータベースブラウザで「更新」ボタンをクリックすると、データベース内のすべてのテーブルとそこに格納されているデータ、そして[Lahmanデータベースの構造](http://seanlahman.com/files/database/readme2014.txt)を閲覧できます。このデータベースを利用して、興味深い過去のデータを分析したり、統計的な分析を行ったり、[セイバーメトリクス](https://en.wikipedia.org/wiki/Sabermetrics)で一般的に使用されるツールを適用したりすることで、選手の能力をより深く理解することができます。

例として、以下について見ていきましょう [デビッド・オティス](http://www.baseball-reference.com/players/o/ortizda01.shtml)彼のキャリア全体における、打席数に対する本塁打の割合を計算し、それを彼の年齢に対する関数としてグラフに表示します。選手の打撃成績は「打撃」テーブルに、氏名、生年月日などは「マスター」テーブルに記載されています。SQLを使ってこの2つのテーブルを結合し、デビッド・オルティーズのデータを選択するのは簡単です。そして、彼のキャリアにおける本塁打の推移を、本塁打数/打席数で計算し、それを特定の年の彼の年齢に対してグラフにプロットすることができます

```
SELECT yearID-birthYear AS Age, HR/AB AS CareerHRTrajectory FROM Batting, `Master` 
WHERE Batting.playerID = `Master`.playerID AND nameLast='Ortiz' AND nameFirst='David'
ORDER BY Age ASC
```

「実行」ボタンをクリックすると、このクエリがCloud SQLインスタンスに送信され、結果データがほぼ瞬時にテーブル形式で返されます。その後、結果テーブルのビューにある「グラフ」ボタンをクリックすることで、データをグラフ化し、選手の年齢に対するキャリアでの得点数の推移を可視化することができます

![DBSpy Google Cloud SQL](/blog/images/DBSpyGoogleCloudSQL-1030x863.png)

ご覧の通り、新しいGoogle Cloud SQLインスタンスをAltova DatabaseSpyから、また、XMLSpy、MapForce、MobileTogether、StyleVision、UModelといった他のAltova開発ツールからも、非常に簡単に接続して利用することができます。さらに、MapForceサーバーからCloud SQLインスタンスを簡単に利用して、データ統合や変換プロジェクトを行うことも可能です。

今後のブログ記事では、このCloud SQLインスタンスにモバイルアプリから接続し、Lahman野球データベース上に、どれほど簡単に便利なモバイルアプリのインターフェースを構築できるのかを詳しく解説します。
