---
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/zh/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 数据库，以便将其用作移动应用程序的后端，或者甚至用于我们桌面应用程序的高级数据分析。

根据谷歌的说法，第二代Cloud SQL的主要目标是：性能更好 _表演_ 和 _可扩展性_ 每美元的价格。 看起来他们在这方面取得了成功：第二代 Cloud SQL 的速度是第一代的七倍以上。 并且，它可以扩展到 10TB 的数据存储、15,000 次 IOPS 读写速度，以及每个实例配备 104GB 的内存，远远超过第一代产品。 因此，它看起来是移动应用程序的理想、可扩展的云数据库后端解决方案。

![云端数据](/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)

强烈建议您更改您的 root 密码，并且仅允许来自授权网络的访问您的云实例。这些网络应该用于托管您的开发机器，或者用于您正在构建的移动应用程序的后端服务器。例如，在未来的博文中，我们将探讨如何基于此数据库构建移动应用程序，而为我们的移动应用程序提供所有服务器功能和工作流程的 [MobileTogether 后端服务器](https://www.altova.com/zh/mobiletogether/server.html) 需要能够访问此 Cloud SQL 实例。

为了在您的开发机器上使用 Cloud SQL 实例，您需要 [下载适用于您机器的 MySQL 工具](http://dev.mysql.com/downloads/)，这将使您能够使用 **mysql** 命令行工具。此外，为了在您计算机上的其他应用程序中使用 Cloud SQL 数据库，您需要下载相应的 [MySQL 连接器](http://dev.mysql.com/downloads/connector/)。 在这篇博文中，我们将使用 [Altova DatabaseSpy](https://www.altova.com/zh/databasespy.html) 来访问 SQL 实例，上传一些数据，然后进行一些分析，因此您需要 [下载适用于 Windows 的 MySQL Connector/ODBC](http://dev.mysql.com/downloads/connector/odbc/)。 基本上，DatabaseSpy 类似于 Toad，但它允许您同时连接到多个不同的数据库实例，这些实例位于不同的数据库服务器上。 这样，您可以在一个工作空间中同时保持一个连接到 Cloud SQL，一个连接到本地 SQL Server，以及第三个连接到 Oracle 数据库。 非常方便。

需要注意的是，请务必下载正确的 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 数据库表结构描述，以及所有的数据，所有内容都包含在一个 SQL 文件中，因此可以轻松地上传到我们的 Cloud SQL 实例。

第一步是 [在您的 Cloud SQL 中创建一个新的数据库](https://cloud.google.com/sql/docs/create-database) 例如，您可以通过命令行工具 mysql、Google 开发者控制台或 cURL 来执行此操作。有关更多详细信息，请参阅本段开头提供的链接。我们将简单地将此数据库命名为 "lahman"。

现在，我们可以通过DatabaseSpy连接到这个数据库。选择“连接到数据库”命令，然后按照连接向导的步骤进行操作。首先，我们选择MySQL作为数据库类型：

![Google Cloud SQL 连接 1](/blog/images/GoogleCloudSQLConnect1.png)

接下来，我们将确认之前下载的 MySQL Connector/ODBC 驱动程序是否已正确安装并可用

![Google Cloud SQL 连接器 2.0](/blog/images/GoogleCloudSQLConnect2.png)

最后，但同样重要，我们需要指定我们的 Cloud SQL 实例的 IP 地址、用户名和密码，然后点击“测试”按钮以验证连接。如果连接成功，我们就可以创建一个数据源，为其指定一个名称，并指定我们之前创建的 "lahman" 数据库

![Google Cloud SQL 连接 (版本 3)](/blog/images/GoogleCloudSQLConnect3.png)

现在，我们已经准备好将所有数据导入到我们新数据库中的表格中。为此，我们只需打开之前下载和解压的 Lahman Baseball 数据库的 SQL 导出文件，在 DatabaseSpy 中它会显示如下：

![LahmanSQLdump (一种用于导出Lahman数据库的工具)](/blog/images/LahmanSQLdump-1030x854.png)

正如您所看到的，该数据库的 SQL 导出文件包含了所有必要的命令，可以用来在我们的新 Cloud SQL 实例上重新创建所有表。现在，我们只需要点击“执行”按钮，然后耐心等待。根据您的网络连接速度，这个过程可能需要一些时间，因为您现在正在创建 24 个表，这些表包含了从 1871 年到 2014 年的详细棒球统计数据，其中一些表包含超过 16 万行。在我这边，完成这个过程大约需要 8 分钟。

现在，您可以在DatabaseSpy的在线数据库浏览器中点击“刷新”按钮，然后浏览所有表及其包含的数据，以及[Lahman数据库的结构](http://seanlahman.com/files/database/readme2014.txt)。 您可以使用这个数据库来计算有趣的历史数据，进行统计分析，并应用其他常用于[棒球数据分析（Sabermetrics）](https://en.wikipedia.org/wiki/Sabermetrics)的工具，从而更好地了解球员的水平。

举例来说，我们将探讨 [大卫·奥蒂兹](http://www.baseball-reference.com/players/o/ortizda01.shtml)该分析将计算球员整个职业生涯中，每次上场击出的本垒打（HR）的百分比，并将其作为年龄的函数进行绘制。 您可以在“打击”表格中找到球员的每次上场表现，以及在“球员信息”表格中找到他的姓名、出生日期等信息。 通过SQL将这两个表格连接起来，并选择大卫·奥蒂兹的数据非常简单。 之后，我们可以简单地计算他的职业生涯本垒打率，即本垒打数/上场次数，并将该数值与他在特定年份的年龄进行对比，从而绘制出他的职业生涯本垒打趋势图

```
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)

正如您所看到的，使用 Altova DatabaseSpy，或者其他 Altova 开发工具，包括 XMLSpy、MapForce、MobileTogether、StyleVision 和 UModel，连接并使用新的 Google Cloud SQL 实例非常简单。此外，您还可以轻松地利用 MapForce 服务器上的 Cloud SQL 实例，用于数据集成和转换项目。

在未来的博文中，我们将从一个移动应用程序连接到这个 Cloud SQL 实例，并探讨如何轻松地在 Lahman 棒球数据库之上构建一个便捷的移动应用程序前端。
