ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Cloud Spanner - データの読み込みとバックアップの実行

ラボ 25分 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

GSP1049

Google Cloud セルフペース ラボのロゴ

概要

Cloud Spanner は Google の水平スケーリングが可能なフルマネージド リレーショナル データベース サービスです。金融サービス、ゲーム、小売など多くの業界のお客様が、大規模な整合性と可用性が要求されるワークロードの実行に使用しています。

このラボでは、Cloud Spanner にデータを読み込むさまざまな方法を学び、データベースのバックアップを実行します。

演習内容

  • DML を使用してデータを挿入する
  • クライアント ライブラリを使用してデータを挿入する
  • クライアント ライブラリを使用してバッチデータを挿入する
  • Dataflow を使用してデータを読み込む
  • データベースをバックアップする

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. インスタンスを調べる

デプロイ中に、Cloud Spanner のインスタンス、データベース、テーブルが作成されました。

  1. コンソールから、ナビゲーション メニュー(ナビゲーション メニュー)> [すべてのプロダクトを表示] を開きます。[データベース] セクションで [Spanner] をクリックします。

インスタンス名は banking-instance です。クリックしてデータベースを確認します。関連付けられたデータベースの名前は banking-db です。クリックして探索すると、Customer という名前のテーブルがすでに存在することがわかります。クリックすると、スキーマを確認できます。

  1. 現在、テーブルは空の状態です。banking-db の概要ページに戻ります。左側のメニューで [Spanner Studio] をクリックし、以下のコマンドを実行します。
SELECT * FROM Customer;
  1. 結果は返されません。

タスク 2. DML を使用してデータを挿入する

Spanner にデータを挿入する最も簡単な方法は、DML を使用することです。Cloud Shell と gcloud を使用して、INSERT を含む任意の DML ステートメントを実行できます。

  1. Cloud Shell で、以下のコマンドを実行します。
gcloud spanner databases execute-sql banking-db --instance=banking-instance \ --sql="INSERT INTO Customer (CustomerId, Name, Location) VALUES ('bdaaaa97-1b4b-4e58-b4ad-84030de92235', 'Richard Nelson', 'Ada Ohio')"
  1. コンソールに戻り、左側のメニューで [概要] をクリックします。Customer テーブルに移動して [Data] を選択すると、先ほど挿入した行が表示されます。

前述のように、gcloud を使用して任意の DML コマンドを実行できます。DML と Spanner のドキュメントを確認します。

もちろん、データベースの行を 1 行ずつ読み込むのは効率的ではありません。

タスク 3. クライアント ライブラリを使用してデータを挿入する

Spanner にアクセスする最適な方法は、プログラム インターフェースを使用することです。C++、C#、Go、Java、Node.js、PHP、Python、Ruby など、さまざまなクライアント ライブラリが用意されています。

  1. Cloud Shell で以下のコマンドを入力して Nano テキスト エディタを呼び出し、insert.py という名前の新しい空の構成ファイルを作成します。
nano insert.py
  1. 以下のコードブロックを貼り付けます。
from google.cloud import spanner from google.cloud.spanner_v1 import param_types INSTANCE_ID = "banking-instance" DATABASE_ID = "banking-db" spanner_client = spanner.Client() instance = spanner_client.instance(INSTANCE_ID) database = instance.database(DATABASE_ID) def insert_customer(transaction): row_ct = transaction.execute_update( "INSERT INTO Customer (CustomerId, Name, Location)" "VALUES ('b2b4002d-7813-4551-b83b-366ef95f9273', 'Shana Underwood', 'Ely Iowa')" ) print("{} record(s) inserted.".format(row_ct)) database.run_in_transaction(insert_customer)
  1. Ctrl+X キーで nano を終了したら、Y キーで更新を確認し、Enter キーを押して変更を保存します。

  2. Python コードを実行します。

python3 insert.py
  1. Cloud Console を更新するか、左側のメニューで別の項目をクリックしてから [データ] を再度クリックすると、データベースに新しい行が表示されます。

gcloud と同様に、クライアント ライブラリから任意の DML ステートメントを実行できます。さまざまな言語の複数の例については、ドキュメントをご覧ください。

これは gcloud を使用してデータを読み込むよりも柔軟性がありますが、行数が非常に多いソースを読み込む場合は、依然として制限があります。

  1. [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
クライアント ライブラリを使用してデータを挿入する

タスク 4. クライアント ライブラリを使用してバッチデータを挿入する

データを Spanner に読み込むより最適な方法は、バッチ処理を行うことです。すべてのクライアント ライブラリでバッチ読み込みがサポートされています。この例では Python を使用します。

  1. Cloud Shell で以下のコマンドを入力して Nano テキスト エディタを呼び出し、batch_insert.py という名前の新しい空の構成ファイルを作成します。
nano batch_insert.py
  1. 以下のコードブロックを貼り付けます。
from google.cloud import spanner from google.cloud.spanner_v1 import param_types INSTANCE_ID = "banking-instance" DATABASE_ID = "banking-db" spanner_client = spanner.Client() instance = spanner_client.instance(INSTANCE_ID) database = instance.database(DATABASE_ID) with database.batch() as batch: batch.insert( table="Customer", columns=("CustomerId", "Name", "Location"), values=[ ('edfc683f-bd87-4bab-9423-01d1b2307c0d', 'John Elkins', 'Roy Utah'), ('1f3842ca-4529-40ff-acdd-88e8a87eb404', 'Martin Madrid', 'Ames Iowa'), ('3320d98e-6437-4515-9e83-137f105f7fbc', 'Theresa Henderson', 'Anna Texas'), ('6b2b2774-add9-4881-8702-d179af0518d8', 'Norma Carter', 'Bend Oregon'), ], ) print("Rows inserted")
  1. Ctrl+X キーで nano を終了したら、Y キーで更新を確認し、Enter キーを押して変更を保存します。

  2. Python コードを実行します。

python3 batch_insert.py
  1. Cloud コンソールに戻り、更新して先ほど挿入した新しいデータを確認します。

バッチメソッドは単一のリクエストとして実行されるため、より効率的です。クライアントとサーバーの間の往復が 1 回のみで済むため、レイテンシが短縮されます。

しかし、これはデータの読み込みに非常に時間がかかり、リソースを消費する方法です。

  1. [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
クライアント ライブラリを使用してバッチデータを挿入する

タスク 5. Dataflow を使用してデータを読み込む

Dataflow は、大規模なストリーミング データ処理とバッチデータ処理を行う Google Cloud サービスです。Dataflow は複数のワーカーを使用してデータ処理を並行して実行します。データの処理方法は、データの生成元(ソース)から宛先(シンク)にデータを変換するパイプラインを使用して定義されます。

Dataflow でデータベースをソースまたはシンクとして接続できる Spanner 用のコネクタが用意されています。

大量のデータを読み込むには、Dataflow のサーバーレス分散機能を使用してソース(Google Cloud Storage の CSV ファイルなど)からデータを読み取り、シンクコネクタを使用して Spanner データベースに読み込むことができます。

  1. Dataflow ジョブの準備として、Cloud Shell で以下のコマンドを実行してプロジェクトにバケットを作成し、その中に空のファイルを含むフォルダを作成します。
gsutil mb gs://{{{project_0.project_id|Project ID}}} touch emptyfile gsutil cp emptyfile gs://{{{project_0.project_id|Project ID}}}/tmp/emptyfile
  1. 適切な API と権限を設定するために、Cloud Shell で以下のコードブロックを実行します。
gcloud services disable dataflow.googleapis.com --force gcloud services enable dataflow.googleapis.com
  1. コンソールから、ナビゲーション メニュー(ナビゲーション メニュー)> [すべてのプロダクトを表示] を開きます。[分析] セクションで [Dataflow] をクリックします。

  2. 画面上部にある [テンプレートからジョブを作成] をクリックします。

  3. テンプレートに以下の値を配置します。

    • ジョブ名: spanner-load

    • リージョナル エンドポイント:

  4. Dataflow テンプレート セレクタを下にスクロールすると、Dataflow で使用できるさまざまなブループリントが表示されます。もちろん、Beam SDK を使用して、独自のカスタマイズされたパイプラインを作成することもできます。

テンプレートには主に以下の 2 種類があります。

  • ストリームは、継続的に流れて処理されるデータ(ウェブサイトからのオンライン注文など)のパイプラインを作成します。
  • バッチは、開始と終了があるデータセット(Google Cloud Storage に保存されたファイルなど)を処理します。

このシナリオでは、150,000 行を超える CSV ファイルから Spanner の銀行データベースにデータを読み込みます。

  1. Text Files on Cloud Storage to Cloud Spanner テンプレートを選択します。

  2. テンプレートに以下の値を配置します。

項目
Cloud Spanner インスタンス ID banking-instance
Cloud Spanner データベース ID banking-db
テキスト インポート マニフェスト ファイル spls/gsp1049/manifest.json



manifest.json ファイル形式については、このテンプレートのチュートリアルで説明されています(パラメータ入力フィールドのすぐ上にある [チュートリアルを開く] をクリックするとアクセスできます)。

マニフェスト ファイルは、Dataflow がアクセスして読み取ることができる Google Cloud Storage バケットに保存する必要があります。このラボでは、manifest.json の内容は以下のようになります。

{ "tables": [ { "table_name": "Customer", "file_patterns": [ "gs://spls/gsp1049/Customer_List.csv" ], "columns": [ {"column_name" : "CustomerId", "type_name" : "STRING" }, {"column_name" : "Name", "type_name" : "STRING" }, {"column_name" : "Location", "type_name" : "STRING" } ] } ] }

マニフェスト ファイルでは、テーブル、列の名前と型(CSV ファイルに表示される順序)、および CSV ファイル自体を指定します。CSV ファイルも Google Cloud Storage バケットに保存されます。

CSV ファイルは以下のようになります。

9d238899-8348-4642-9c00-77dc4481145b,Nicole Anderson,Ada Ohio 360ecaa6-9ec3-4fa0-81a5-3b0dc629e1fa,Ellen Richardson,Ada Ohio 8ee6c2ea-923b-45db-8d51-7f8e7a117af0,Wendy Daniel,Ada Ohio 1d7112cc-c1ee-414f-9325-95c97f9a25d3,Virginia Beasley,Ada Ohio ...
  1. [一時的な場所] パラメータに以下の値を入力します。
{{{project_0.project_id|Project ID}}}/tmp
  1. [オプション パラメータ] を開きます。

  2. [デフォルトのマシンタイプを使用する] チェックボックスをオフにします。

  3. [汎用] で次の設定を選択します。

    • [シリーズ]: E2
    • [マシンタイプ]: e2-medium(2 vCPU、4 GB メモリ)
  4. [ジョブを実行] をクリックしてパイプラインを開始します。

  5. このプロセスには 12~16 分ほどかかります。Dataflow が複数のステージを通過し、最初にワーカーを起動してテンプレートからパイプラインを分析する様子が表示されます。その後、マニフェスト ファイルを読み込み、CSV ファイルの処理を開始します。

注: ワーカーノードがプロビジョニングされていないことに関連するエラーでパイプラインが失敗した場合は、ステップ 4 から同じテンプレートを使用して同じ名前で新しいジョブを作成します。今回は、米国で別のリージョナル エンドポイントを選択します。たとえば、ステップ 5 でリージョナル エンドポイントが "us-east4" と表示された場合は、2 回目の試行で "us-east1" を試してください。

Dataflow の処理が完了するまで待ってから、次に進みます。完了すると、ステータスが [成功] になります。

  1. Cloud コンソールの左側のメニューで [Spanner] を選択して、Spanner に戻ります。Customer テーブルに移動し、[Data] を選択します。Dataflow を使用して読み込まれた新しい行がすべて表示されます。

  2. banking-db の概要ページに戻ります。左側のメニューで [Spanner Studio] をクリックし、以下のコマンドを実行して Customer テーブルの合計行数を確認します。

SELECT COUNT(*) FROM Customer;

Dataflow テンプレートを使用することで、大量のデータを簡単に(そして素早く)読み込むことができます。他のデータベースからダンプを読み込むことができ、同じ手順で CSV ファイルだけでなく Avro ファイルも読み込めます。Dataflow で Spanner データベースをソースとして使用し、CSV または Avro でデータをエクスポートして、プロセスを逆方向に実行することもできます。

  1. [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Dataflow を使用してデータを読み込む

タスク 6. データベースをバックアップする

上記で説明したように Dataflow を使用することで、データのバックアップを作成できます。しかし、Spanner にはバックアップ用の独自のツールがあります。Spanner データベースのバックアップは、Cloud コンソールクライアント ライブラリgcloud コマンドから実行できます。ドキュメントについては、前のリンクをご確認ください。

このラボでは、Cloud コンソールを使用してデータベースをバックアップします。

  1. 左側のメニューから [Backup/Restore] を選択します。

  2. [バックアップを作成] をクリックします。

  3. ウィザードで以下の値を入力または選択します。

項目
データベース名 banking-db
バックアップ名 banking-backup-001
有効期限 1 年



  1. [作成] をクリックします。

  2. バックアップが完了するまで約 15 分かかります。作成中は、[バックアップ] リストに表示されます。

お疲れさまでした

これで、Cloud Spanner インスタンスにデータを読み込み、バックアップを実行するさまざまな方法について、しっかりと理解できました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 9 月 16 日

ラボの最終テスト日: 2025 年 9 月 16 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。