Google Cloud (GCP) には、様々な種類のデータベースサービスがあり、用途やデータの特性に合わせて最適なものを選択できます。本記事では、GCPの代表的なデータベースサービスの種類とその特徴を解説し、実際に手を動かしてデータベース構築を体験できるハンズオン手順をご紹介します。
1. GCPのデータベースサービスの種類
GCPでは、構造化データを扱うリレーショナルデータベース、非構造化データを扱うNoSQLデータベース、そして大量のデータを分析するためのデータウェアハウスなど、多様なデータベースサービスが提供されています.
1.1. 構造化データ向けデータベース (リレーショナルデータベース)
リレーショナルデータベースは、行と列からなるテーブルで構成され、事前に定義された関係に基づいてデータを整理・管理します.
- Cloud SQL: フルマネージドなリレーショナルデータベースサービスで、MySQL、PostgreSQL、SQL Server を選択できます。セットアップが容易で、バックアップ、高可用性 (HA) 構成、セキュリティアップデートなどをGoogle Cloud側が自動で行ってくれるため、アプリケーション開発に集中できます。比較的小規模なWebアプリケーションや業務アプリケーションに適しています。
- AlloyDB for PostgreSQL: PostgreSQLと互換性のあるフルマネージドデータベースサービスで、高い可用性とパフォーマンスが求められるアプリケーション向けに設計されています。Googleが独自に開発した「カラム型エンジン」と「AlloyDBに組み込まれた機械学習」によって、高いパフォーマンスを実現しています。
- Cloud Spanner: グローバルに分散可能な、強整合性を持つフルマネージドリレーショナルデータベースです。負荷に応じて無限にスケーリングでき、グローバルに分散しながらも強整合性のトランザクションを提供できるのが特徴です。大量のデータを扱うグローバルなアプリケーションに適しています。
1.2. 非構造化データ向けデータベース (NoSQLデータベース)
NoSQLデータベースは、リレーショナルデータベースのような厳密なスキーマを持たず、多様な形式の非構造化データを柔軟に保存・管理できます。音声データや画像データなどが非構造化データとして挙げられています.
- Cloud Bigtable: ペタバイト級の大量データを、毎秒何百万ものリクエストを処理できるNoSQL型のフルマネージドデータベースです。Google検索やGoogleマップなど、多くのGoogleサービスで利用されており、IoTデバイスのデータ、金融取引、ログ分析、時系列データなどの用途に適しています。データは一意の行キーとそれに対応する列データを持つキーバリューストアとして保存され、行単位でスキャンされます。スケーリングが必要な大規模アプリケーションに適しています。
- Cloud Datastore (Cloud Firestore in Datastore mode): フルマネージドなNoSQLドキュメントデータベースで、現在はCloud Firestoreの一部として提供されています。スキーマレスであり、エンティティと呼ばれる単位でデータを管理し、エンティティはカインドと呼ばれるカテゴリに分類されます。ドキュメントのような非構造化データを扱うのに便利です。
1.3. データウェアハウス
データウェアハウスは、様々なアプリケーションから生成された大量のデータを集約し、分析するためのサービスです。
- BigQuery: フルマネージドなデータウェアハウスで、数テラバイトから数ペタバイトのデータを扱うことができます。コンピューティングリソースとストレージが分離しているため、柔軟なスケーラビリティを持ちます。列指向のストレージを採用しており、大量のデータに対する高速なクエリ処理が可能です。データ分析基盤として広く利用されています。複雑なクエリに対処できる点が大きな利点です。
2. ハンズオン:Cloud SQL for MySQLインスタンスの作成と接続
ここでは、最も手軽に始められるCloud SQL for MySQLを使用して、データベースインスタンスを作成し、接続する手順をハンズオン形式で解説します。
2.1. Google Cloud プロジェクトの準備
まだGoogle Cloudアカウントをお持ちでない場合は、Google Cloud の無料トライアルに登録してください。
2.2. Cloud SQL for MySQL インスタンスの作成
- Google Cloudコンソールにアクセスし、左側のメニューから [SQL] を選択します。
- [インスタンスを作成] をクリックします。
- [MySQL] をデータベースエンジンとして選択します。
-
インスタンスID を設定します (例:
my-mysql-instance
)。 - root パスワード を設定します (空白も可能ですが、セキュリティのため設定推奨)。
- リージョン を選択します。最適なパフォーマンスを得るためには、ユーザーの近くのリージョンを選択してください。無料枠の対象となるリージョンがデフォルトで選択されている場合があります。
- [Show configuration options] をクリックして構成オプションを開きます。
- [Connectivity] セクションで、[Public IP] にチェックが入っていることを確認します。これにより、AppSheetなどの外部アプリケーションから接続するためのIPアドレスが作成されます。
-
[ネットワークを追加] をクリックし、AppSheetサーバーのIPアドレス (Google Cloud でホストされる MySQL データベースを作成する - AppSheet ヘルプ に記載) をCIDR表記 (
20.189.130.98/32
の形式) で入力します。これにより、AppSheetサーバーからの接続が許可されます。 - [作成] をクリックします。インスタンスの作成には数分かかることがあります。
2.3. Cloud Shell から Cloud SQL インスタンスへの接続
-
Google Cloudコンソールの右上にある [Cloud Shell をアクティブにする] アイコンをクリックします。
-
Cloud Shell が起動したら、以下のコマンドを入力してCloud SQLインスタンスに接続します:
gcloud sql connect [インスタンス名] --user=root --quiet
[インスタンス名]
の部分には、先ほど作成したインスタンスID (my-mysql-instance
など) を入力します。 -
rootパスワードの設定時にパスワードを入力します (設定していない場合はEnterキーを押します)。
-
MySQLのプロンプト (
mysql>
) が表示されれば、接続は成功です。
2.4. データベースの作成とデータの挿入
-
MySQLプロンプトで、新しいデータベースを作成します:
CREATE DATABASE my_first_db;
-
作成したデータベースを使用します:
USE my_first_db;
-
簡単なテーブルを作成し、データを挿入してみましょう:
CREATE TABLE books (bookName VARCHAR(255), price INT); INSERT INTO books (bookName, price) VALUES ("はじめてのGCP", 2000); INSERT INTO books (bookName, price) VALUES ("GCPステップアップ", 2500);
-
挿入したデータを確認します:
SELECT * FROM books;
以下のような結果が表示されるはずです。
+--------------------+-------+ | bookName | price | +--------------------+-------+ | はじめてのGCP | 2000 | | GCPステップアップ | 2500 | +--------------------+-------+ 2 rows in set (0.00 sec)
-
Cloud Shell を終了するには、
exit
コマンドを入力します。
2.5. MySQL Workbench からの接続 (任意)
ローカルのMySQL WorkbenchなどのツールからCloud SQLインスタンスに接続することも可能です。
- Cloud SQLインスタンスの詳細ページで、[接続] タブを開き、[パブリックIPアドレス] を確認します。
- MySQL Workbenchを起動し、新しい接続を作成します。
- ホスト名に上記のパブリックIPアドレスを入力します。
- ユーザー名に
root
を入力し、設定したパスワードを入力します。 - [Test Connection] をクリックして接続を確認し、[OK] をクリックして保存します。
3. まとめ
本記事では、Google Cloudの代表的なデータベースサービスの種類と特徴、そしてCloud SQL for MySQLインスタンスを作成して接続する基本的な手順を解説しました。GCPには、様々なニーズに対応できる多様なデータベースサービスが用意されています。まずはCloud SQLのようなフルマネージドサービスから試してみて、徐々に他のサービスにも挑戦していくのがおすすめです。
参考資料:
- GCPの各種DBサービスについて理解を深めよう #GoogleCloud - Qiita: https://qiita.com/ponkomarujp/items/b58c6b478c54892a4892
- Google Cloud でホストされる MySQL データベースを作成する - AppSheet ヘルプ: https://support.google.com/appsheet/answer/10067447?hl=ja
- Google Cloudのデータベースの作成|shun: https://zenn.dev/shun/articles/6404297c602678
- GoogleCloud入門、インスタンス作成、データベース構築 (YouTube動画のトランスクリプト): 提供されたトランスクリプトは直接的なURLではありません。動画はYouTubeチャンネル "Minokamo Citizens" にアップロードされています。
- 【Google Cloud】データベースの特徴を覚えるぞ(クラウド入門者向け) - Sight-R(サイタル): https://www.sight-r.com/column/googlecloud-database/
- データベースの作成と管理 | Cloud SQL for MySQL | Google Cloud: https://cloud.google.com/sql/docs/mysql/create-manage-databases?hl=ja
- クイックスタート: Cloud Shell から Cloud SQL for MySQL に接続する | Google Cloud: https://cloud.google.com/sql/docs/mysql/quickstart-connect-cloud-shell?hl=ja
Cloud SQLのデータベース作成と管理に関する公式ドキュメント (https://cloud.google.com/sql/docs/mysql/create-manage-databases?hl=ja) も併せて参照ください。