Cloud Spanner: 初めてのデータベース

1. 概要

最終更新日: 2020 年 7 月 23 日

Cloud Spanner とは

Google Cloud Spanner は、グローバルに分散された ACID 準拠のデータベースであり、レプリカ、シャーディング、トランザクション処理を自動的に処理するため、使用パターンに合わせて迅速にスケールでき、プロダクトを成功に導くことができます。

主な機能

  • スケーリングを念頭に置いたリレーショナル データベース: スキーマ、SQL クエリ、ACID トランザクションなど、リレーショナル データベースに期待される機能がすべて実証され、グローバルにスケーリングできます。
  • 99.999% の可用性: Cloud Spanner は、マルチリージョン インスタンスで業界トップクラスの 99.999% の可用性を提供します。ダウンタイムは 99.999% の 10 分の 1 です。リージョンとマルチリージョンの構成間で透過的な同期レプリケーションを提供します。
  • 自動シャーディング: Cloud Spanner は、リクエストの負荷とデータのサイズに基づいてデータを自動的にシャーディングすることで、パフォーマンスを最適化します。その結果、データベースのスケーリング方法について心配する時間を減らし、ビジネスのスケーリングに集中できます。

すべての機能を表示

学習内容

  • Google Cloud コンソールを使用した Cloud Spanner インスタンスの作成。
  • Cloud Spanner インスタンスに新しいデータベースを作成する。
  • sampledb を使用してサンプルデータを読み込んでクエリを実行する。
  • Cloud Spanner インスタンスを削除する。

2. 設定と要件

セルフペース型の環境設定

Google アカウント(Gmail または Google Apps)をお持ちでない場合は、1 つ作成する必要があります。Google Cloud Platform コンソール(console.cloud.google.com)にログインし、新しいプロジェクトを作成します。

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

プロジェクト ID を忘れないようにしてください。プロジェクト ID はすべての Google Cloud プロジェクトを通じて一意の名前にする必要があります(上記の名前はすでに使用されているので使用できません)。以降、この Codelab では PROJECT_ID と呼びます。

次に、Google Cloud リソースを使用するために、Cloud コンソールで課金を有効にする必要があります。

この Codelab をすべて実行しても費用はかかりませんが、より多くのリソースを使用する場合や実行したままにする場合は、コストが高くなる可能性があります(このドキュメントの最後にある「クリーンアップ」セクションをご覧ください)。

Google Cloud Platform の新規ユーザーは、$300 分の無料トライアルをご利用いただけます。

3. Cloud コンソールで Cloud Spanner を開く

Google Cloud コンソールで、画面左上のメニュー アイコン(左側のナビゲーション)をクリックします。

下にスクロールして [Spanner] を選択します。

46fe7785700d335.png

これで Cloud Spanner UI が表示されます。Cloud Spanner API をまだ有効にしていないプロジェクトを使用している場合は、有効にするように求めるダイアログが表示されます。API をすでに有効にしている場合は、この手順をスキップできます。

[有効にする] をクリックします。続行します。

323474ade0d07c48.png

4. インスタンスを作成する

まず、Cloud Spanner インスタンスを作成します。UI で、[インスタンスを作成] をクリックします。次のようにして新しいインスタンスを作成します。

1126607e9b3a95f7.png

[インスタンスを作成] をクリックすると、インスタンスの作成ページが表示されます。インスタンス名を入力し、構成を選択します。

リージョンまたはマルチリージョンの設定を選択できます。リージョン設定では、すべてのレプリカが同じリージョン内に存在します。マルチリージョン設定では、複数のリージョンにリードレプリカが作成されます。[リージョン構成を比較]を クリックすると構成を比較します。

f5f41323226be8b7.png

構成を選択すると、右側のパネルにサマリーが表示されます。

be5e99711a47047f.png

将来的には、ノードの数を増やすことで、インスタンスにより多くのリソースを割り当てることができ、インスタンスで追加のリソースが必要ない場合はノード数を減らすことができます。

[作成] をクリックします。インスタンスを作成します。

97cf7427660e36bd.png

これで Cloud Spanner インスタンスを使用できるようになりました。

13ac2d48ea60370b.png

5. データベースの作成

新しいデータベースを作成するには、[データベースを作成] をクリックします。

71761f0803038a5.png

新しいデータベースの名前を入力します。この時点で、必要に応じてスキーマを指定することもできます。

d7ca47df879931c2.png

このステップではスキーマの指定は行わず、[作成] をクリックします。空のデータベースを作成します。

e398ab29aad3d601.png

[Create] をクリックすると、新しいデータベースが作成されます。

4164af0df20ca180.png

6. サンプルデータの読み込みとクエリ

この Codelab では、sampledb を使用してサンプルデータを読み込んでクエリを実行します。Sampledb にはさまざまなデータセットが含まれており、既存のデータベースにデータをインポートできます。

プログラムを Google Cloud Shell で実行します。このプロジェクトで Google Cloud Shell を初めて使用する場合は、上部のナビゲーション バーに Google Cloud Shell ロゴが表示されます。Cloud Shell を押してアクティブにします。

e23b881395174c00.png

有効にすると、下部にコンソールが表示されます。

b885c452da656556.png

コンソールで、sampledb リポジトリのクローンを作成し、この手順に沿って依存関係をインストールします。

$ git clone https://github.com/cloudspannerecosystem/sampledb.git
Cloning into 'sampledb'...
remote: Enumerating objects: 59, done.
remote: Counting objects: 100% (59/59), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 59 (delta 23), reused 35 (delta 11), pack-reused 0
Unpacking objects: 100% (59/59), done.
$ cd sampledb
$ virtualenv env
$ source env/bin/activate
$ pip install -r requirements.txt

依存関係がインストールされたら、sampledb を実行して、サンプルデータを含む新しいデータベースを作成できます。

$ python batch_import.py my-first-instance my-sample-db

成功すると、「my-sample-db」という名前の2 つの新しいテーブル(コメントとストーリー)が追加されました。

eb4adca281f8704a.png

サンプル データセットには、Hacker News からの記事とコメントが含まれています。[クエリ]をクリックするとデータのクエリとブラウジングを開始するには:

8b95a3b14709b285.png

7. クリーンアップ

このステップは省略可能です。引き続き Cloud Spanner インスタンスのテストを行う場合、この時点ではクリーンアップの必要はありません。ただし、使用しているプロジェクトには、インスタンスに対して引き続き課金されます。このインスタンスが不要になった場合は、この料金が発生しないように、このインスタンスが削除する必要があります。

[my-first-instance] をクリックしてインスタンス ページに戻るをクリックします。

2a226b985f43074f.png

[削除] をクリックします。ボタンをクリックしてインスタンスを削除します。

27ee8f9656364f98.png

インスタンスの削除は元に戻せません。そのインスタンスからのデータは復元できません。誤ったインスタンスを誤って削除しないように、確認ダイアログにインスタンス名を入力して削除を確認する必要があります。

537e18cf2dd7a668.png

インスタンス名を入力し、[Delete] を押します。

8. 完了

新しい Cloud Spanner インスタンスを作成し、空のデータベースを作成し、サンプルデータを読み込み、(必要に応じて)Cloud Spanner インスタンスを削除しました。

学習した内容

  • Google Cloud コンソールを使用した Cloud Spanner インスタンスの作成。
  • Cloud Spanner インスタンスに新しいデータベースを作成する。
  • sampledb を使用してサンプルデータを読み込んでクエリを実行する。
  • Cloud Spanner インスタンスを削除する。

詳細