Querier

GCPのCloud SQLを徹底解説!使い方から料金、Cloud Spanner/Amazon RDSとの比較まで

2023.07.07に公開 | 2023.07.12に更新

Querier運営

@querier_io@querierinc

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る

今回は、Cloud SQLの特徴や料金、使い方から、Terraformでの管理方法まで詳しく解説します。

Cloud SQLとは

Cloud SQLは、Google Cloud Platformのフルマネージド型リレーショナルデータベースサービスです。Cloud SQLを使用することで、MySQLやPostgreSQLのようなデータベースをクラウド上で容易に設定し、使用することができます。

特徴

Cloud SQLの主な特徴としては、以下のような点が挙げられます。

  • フルマネージド: サーバーの保守、パッチ適用、データベースのバックアップなど、データベース運用における面倒な作業を全てGoogleが行います。
  • 高可用性: Cloud SQLは自動的にデータを複製し、リージョン間でデータをレプリケートすることでデータの可用性を高めます。
  • スケーラビリティ: Cloud SQLは、使用するリソースを動的に調整することが可能で、リクエストの増減に柔軟に対応します。
  • セキュリティ: Cloud SQLは、Google Cloudの強固なセキュリティ対策によって、データの安全性を保証します。

メリット

Cloud SQLを使用する主なメリットは以下の通りです。

  • 運用の容易さ: データベースの運用に必要な作業の多くをGoogleが自動で行うため、エンジニアはアプリケーション開発に専念することができます。
  • 柔軟なスケーラビリティ: Cloud SQLは、データベースのリソースを動的に調整することができ、利用者の需要に応じて容易にスケールアップ・スケールダウンが可能です。
  • GCPとの高い互換性: Google Cloud Platformの他のサービス、例えばApp EngineやCloud Runとの統合が容易であり、これにより効率的なシステム開発が可能です。

デメリット

一方で、Cloud SQLには以下のようなデメリットも存在します。

  • 料金: Cloud SQLは他の自己管理型のデータベースソリューションと比較すると費用が高くなります。フルマネージドサービスの便利さと、その料金のバランスを考慮する必要があります。
  • 制限: Cloud SQLはGoogleによって運用が一部制限されており、一部の設定や機能に対するアクセスが制限されています。例えば、特定のデータベースパラメータの調整や、一部のDBMS特有の機能が使用できない場合があります。

Cloud SQLの料金、無料枠はある?

Cloud SQLの料金は、主に以下の3つの要素によって決まります。

  1. インスタンスの種類: 使用するインスタンスの種類によって、インスタンスの料金が変わります。例えば、共有vCPUのインスタンスは、専用vCPUのインスタンスよりも費用が低くなります。
  2. ストレージとネットワーク: ストレージ容量とネットワークの利用量によっても料金が発生します。また、バックアップのデータ量によっても追加料金が発生します。
  3. ライセンス: PostgreSQLやMySQLはオープンソースのDBMSなので、これに関してはライセンス料金は発生しません。しかし、Microsoft SQL Serverのような商用DBMSを使用する場合、ライセンス料金が発生します。

また、Cloud SQLは無料枠を提供していません。ですので、テストや開発で利用する際も料金が発生する点には注意が必要です。

Google Cloud Platformの公式ドキュメントでは、Cloud SQLの料金について詳細な情報を提供しています。具体的な料金や料金計算の例などは、以下のリンクをご覧ください。

Cloud SQLの料金

Cloud SQLの使い方、初期設定

Cloud SQLを初めて使用する場合、以下の手順で初期設定を行います。

  1. GCPのコンソールでCloud SQLを選択
  2. 「インスタンスの作成」をクリック
  3. データベースのエンジン(MySQLやPostgreSQL)を選択
  4. インスタンスIDとパスワードを設定
  5. 必要に応じて、他の設定(リージョン、ネットワーク、バックアップなど)を調整

これでCloud SQLインスタンスの作成が完了し、クラウドでデータベースを使用する準備が整います。

Cloud SQLへの接続方法

Cloud SQLにはいくつかの接続方法がありますが、ここでは主に2つの接続方法、標準の接続方法とCloud SQL Proxyを使用した接続方法について詳しく説明します。

標準の接続方法

MySQLやPostgreSQLなど、標準的なリレーショナルデータベースに対する接続方法と同様に、JDBCやODBCなどの一般的な接続手段を使ってCloud SQLに接続することができます。

以下に、Goでの接続のサンプルコードを示します。

package main

import (
	"database/sql"
	"fmt"

	_ "github.com/go-sql-driver/mysql"
)

func main() {
	// Set up the database connection.
	db, err := sql.Open("mysql", "user:password@tcp(cloud_sql_instance_ip:3306)/dbname")

	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("Database successfully connected!")
	}

	defer db.Close()
}

このコードでは、Goの標準ライブラリの一部であるdatabase/sqlパッケージと、MySQLのドライバであるgo-sql-driver/mysqlを使ってCloud SQLのMySQLインスタンスに接続しています。

Cloud SQL Proxyの使用

また、Cloud SQL Proxyを使用することで、Cloud SQLのインスタンスに対して、より安全に接続することが可能です。Cloud SQL ProxyはローカルのネットワークインターフェースをCloud SQLのインスタンスにマップする役割を果たします。

Goでのサンプルコードは以下の通りです。

package main

import (
    "database/sql"

    "cloud.google.com/go/cloudsqlconn"
    "cloud.google.com/go/cloudsqlconn/mysql/mysql"
)

func main() {
    cleanup, err := mysql.RegisterDriver("cloudsql-mysql", cloudsqlconn.WithCredentialsFile("key.json"))
    if err != nil {
        // ... handle error
    }
    // call cleanup when you're done with the database connection
    defer cleanup()

    db, err := sql.Open(
        "cloudsql-mysql",
        "myuser:mypass@cloudsql-mysql(project:region:instance)/mydb",
    )
    // ... etc
}

Cloud SQL Proxyを使用して接続する際は、先程のTCPを使用した接続とは異なり、UNIXドメインソケットを使用して接続します。

公式ドキュメントの接続方法について詳しく解説されていますので、詳細はこちらをご覧ください。

Cloud SQLへの接続方法

Cloud SQLとCloud Spannerの比較

Cloud SQLの特徴

  1. 一般的なリレーショナルデータベースに対応: Cloud SQLはフルマネージドのリレーショナルデータベースサービスで、MySQLやPostgreSQLに対応しています。従って、これらのデータベースを用いて開発されているアプリケーションとの互換性が高く、既存の知識やツールを引き続き使用できます。
  2. スケールアップによるパフォーマンス向上: Cloud SQLでは、より大きなインスタンスに移行することでパフォーマンスを向上させることができます。ただし、これは垂直方向のスケーリング(スケールアップ)に限定されます。
  3. 運用が容易: Cloud SQLは自動バックアップ、フェイルオーバー、レプリケーションといった機能を提供しており、データベースの運用を容易にします。

Cloud Spannerの特徴

  1. 水平スケーリングが可能なリレーショナルデータベース: Cloud SpannerはGoogleが独自に開発したデータベースで、リレーショナルデータベースの特性を維持しつつ、NoSQLデータベースのように水平スケーリングが可能です。そのため、非常に大規模なアプリケーションでも高いパフォーマンスを発揮します。
  2. 強力な一貫性保証: Cloud Spannerはグローバルなトランザクション一貫性を提供します。これにより、複数の地域やゾーンに跨ったトランザクションでも、データの一貫性を保つことができます。

Cloud SQLの利用シーン

  • 既存のMySQLやPostgreSQLの知識を活用したい場合
  • 中規模以下のアプリケーションで、垂直スケーリングで十分な場合
  • 既存のアプリケーションをクラウドに移行したい場合

Cloud Spannerの利用シーン

  • 大規模なアプリケーションで、水平スケーリングが必要な場合
  • グローバルな規模でデータの一貫性を保証する必要がある場合
  • 高い可用性とデュラビリティが求められる場合

Cloud SQLとAmazon RDSの比較

Cloud SQLの特徴

  1. 一般的なリレーショナルデータベースに対応: Cloud SQLは、MySQLやPostgreSQLに対応したフルマネージドのリレーショナルデータベースサービスです。これらのデータベースを用いた開発者がすぐに利用できます。
  2. Google Cloudとの親和性: Cloud SQLはGoogle Cloud Platform(GCP)の一部であるため、GCPの他のサービスとの連携が容易です。これにより、一貫したセキュリティモデルや、GCP内のリソース間での低レイテンシ通信が可能になります。

Amazon RDSの特徴

  1. 多様なDBエンジンに対応: RDSは、MySQLやPostgreSQLの他にも、MariaDB、Oracle、SQL Serverといった多様なデータベースエンジンに対応しています。これにより、さまざまな既存のデータベースアプリケーションをサポートできます。
  2. AWSとの親和性: RDSはAmazon Web Services(AWS)の一部であるため、AWSの他のサービスとの連携が容易です。これにより、AWS内のリソース間での低レイテンシ通信や、一貫したセキュリティモデルが提供されます。

Cloud SQLの利用シーン

  • GCPを主に利用している、またはこれから利用する予定の企業や開発者
  • Google Cloudの他のサービスとの深い連携が必要な場合

Amazon RDSの利用シーン

  • AWSを主に利用している、またはこれから利用する予定の企業や開発者
  • MariaDB、Oracle、SQL ServerといったRDSがサポートしているデータベースエンジンを利用する場合

Terraformでの管理方法

Cloud SQLインスタンスは、Infrastructure as Code(IaC)ツールであるTerraformを用いて管理することが可能です。

以下に、TerraformのCloud SQLリソースの設定例を示します。

resource "google_sql_database_instance" "instance" {
  name             = "my-instance"
  project          = "my-project"
  region           = "us-central1"
  database_version = "MYSQL_5_7"

  settings {
    tier = "db-f1-micro"
  }
}

詳しくは、Terraformの公式ドキュメントをご確認ください。

さいごに

この記事では、Cloud SQLの特徴や料金、初期設定、接続方法から、Cloud SpannerやAmazon RDSとの比較、そしてTerraformを用いた管理方法まで詳しく解説しました。

この情報が、Cloud SQLをより効果的に使用する上での一助となれば幸いです。

Cloud SQLを使用することで、あなたのアプリケーションはスケーラビリティと可用性の高いデータベースバックエンドを手に入れることができます。

是非、Cloud SQLを活用して、より良いアプリケーションを作成しましょう。

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

最新の記事

【告知】値の参照時の仕様変更のお知らせ

このたび2024年11月11日に値の参照に関する仕様変更を予定しておりますので詳細について報告いたします。

more

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る