始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a Bigtable table
/ 40
Delete a Bigtable table
/ 40
Bigtable は、Google のフルマネージドでスケーラブルな NoSQL データベース サービスです。大量のデータを Key-Value ストアに格納できるため、パーソナライズ、広告テクノロジー、金融テクノロジー、デジタル メディア、モノのインターネット(IoT)などのユースケースに最適です。また、低レイテンシで高スループットの読み取りと書き込みをサポートしており、大量のデータにすばやくアクセスして処理や分析を行うことができます。
Bigtable では、各行は単一のエンティティ(個々のユーザーやセンサーなど)を表し、一意の行キーでラベル付けされます。各列には、各行の属性値が格納されます。列ファミリーを使用すると、関連する列を整理できます。行と列が交差する部分に複数のセルが存在することがあります。各セルは、特定のタイムスタンプに対するデータの異なるバージョンを表します。
このラボでは、Google Cloud コンソールの Bigtable ページを使用して Bigtable インスタンスの詳細を確認し、Bigtable CLI(cbt CLI)を使用して Bigtable テーブルのデータをクエリします。さらに、Bigtable のベスト プラクティスに沿ってテーブル スキーマと行キーを設計します。
このラボでは、Bigtable インスタンスにアクセスして Bigtable スキーマをクエリする方法を学びます。
cbt CLI を構成する。こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
このラボ演習では、事前に作成されている Bigtable のインスタンスとテーブルの詳細を見ていきます。このタスクでは、Google Cloud コンソールで personalized-sales という名前の Bigtable インスタンスにアクセスし、インスタンスの詳細を確認します。
Google Cloud コンソールのナビゲーション メニュー()で、[データベース] の下にある [Bigtable] をクリックします。
Bigtable インスタンスのリストから、[personalized-sales] という名前のインスタンス ID を見つけます。
[ノード] に表示される詳細を確認し、次の質問に答えてください。
インスタンスの詳細に移動するには、[personalized-sales] というインスタンス ID をクリックします。
[インスタンスの編集] をクリックします。
インスタンスの詳細を確認し、次の質問に答えてください。
インスタンスの編集ページを閉じるには、[キャンセル] をクリックします。
クラスタ ID のテーブルで、personalized-sales-cluster1 の行の [編集](鉛筆アイコン)をクリックします。
クラスタの詳細を確認し、次の質問に答えてください。
クラスタの詳細を閉じるには、[キャンセル] をクリックします。
ナビゲーション メニューの [インスタンス] で、[テーブル] をクリックします。
UserSessions というテーブルの詳細を確認し、次の質問に答えてください。
Bigtable インスタンスの詳細を確認したら、次のタスクに進み、cbt CLI を使用してインスタンスに接続しましょう。
cbt CLI コマンドを使用して Bigtable に接続するには、まず Cloud Shell を使用して、.cbtrc 構成ファイルのプロジェクト ID と Bigtable インスタンス ID を更新する必要があります。
Cloud Shell へのアクセス方法については、このラボガイドの冒頭にある設定と要件のセクションをご覧ください。
cbt CLI は主にデバッグとデータ探索に使われますが、Bigtable の基礎を学ぶのにも便利なツールです。本番環境で CRUD(作成、読み取り、更新、削除)オペレーションを実施する場合は、Bigtable のいずれかのクライアント ライブラリを使用することをおすすめします。
.cbtrc ファイルのプロジェクト ID を変更するには、Cloud Shell で次のコマンドを実行します。出力から、personalized-sales という名前のインスタンスが 1 つ確認できます。
.cbtrc ファイルの Bigtable インスタンス ID を変更するには、次のコマンドを実行します。.cbtrc ファイルのプロジェクト ID とインスタンス ID が正常に変更できたことを確認するには、次のコマンドを実行します。出力は次のようになります。
出力から、インスタンスに UserSessions という名前のテーブルが 1 つ含まれていることが確認できます。このテーブルは後のタスクで使用します。
このタスクでは、Bigtable でスキーマ設計と行キー設計の原則を確認するためのテストテーブルを作成します。
Bigtable でスキーマと行キーを設計する前に、保存するデータに関する重要なポイントを押さえておきましょう。
| ポイント | 目的 |
|---|---|
| 各行は何を表しているか(個々のユーザーやセンサーなど) | 行の構造を把握する |
| このデータに対して最も頻繁に実行されるクエリは何か | 行キーを作成する |
| 各行で収集される値は何か | 列を特定する(列修飾子と呼ばれます) |
| 関連する列をグループ化または整理できるか | 列ファミリーを特定する |
たとえば、e コマース企業のウェブサイトで、全ユーザーのオンライン ショッピング セッションを記録するデータセットについて考えてみましょう。各行は、タイムスタンプ付きの各オンライン ショッピング セッションを表しています。このデータセットでよく実行されるクエリは、各セッションと関連するユーザー ID の詳細を取得するものです。各ショッピング セッションで保存される値は、セッション中にユーザーが閲覧や購入を行ったすべての商品と、ユーザーの色の好みです。
元データは次のように整理できます。別の商品(blue_jacket や purple_bag など)の列を追加することもできます。
| timestamp | user_id | preferred_color | red_skirt | red_hat | orange_shoes | sale |
|---|---|---|---|---|---|---|
| 1638940844260 | 1939 | green | seen | seen | ||
| 1638940844260 | 2466 | blue | seen | seen | ||
| 1638940844260 | 1679 | blue | seen | blue_blouse#blue_jacket | ||
| 1638940844260 | 2737 | blue | seen | blue_dress#blue_jacket | ||
| 1638940844260 | 582 | yellow | yellow_skirt |
Bigtable のベスト プラクティスは、似たスキーマを持つデータを別々のテーブルではなく同じテーブルに保存することです。たとえば、オンライン ショッピング セッションのすべてのデータを 1 つのテーブルに保存することで、簡単にデータを取得できます。
Bigtable の列と列ファミリーに関するベスト プラクティスには、次のようなものがあります。
列修飾子をデータとして使用して、行ごとの値の重複を避ける。
関連する列は、同じ列ファミリーに整理する。
列ファミリー名は、短くわかりやすい名前にする。
このデータセットでは、商品インタラクションを保存する列修飾子は Interactions という 1 つの列ファミリーにグループ化できます。一方、購入を保存する列修飾子は、Sales という別の列ファミリーに整理できます。これにより、スキーマは次のように整理されます。
| ... | ... | ... | Interactions | --- | --- | Sales |
|---|---|---|---|---|---|---|
| timestamp | user_id | preferred_color | red_skirt | red_hat | orange_shoes | sale |
| 1638940844260 | 1939 | green | seen | seen | ||
| 1638940844260 | 2466 | blue | seen | seen | ||
| 1638940844260 | 1679 | blue | seen | blue_blouse#blue_jacket | ||
| 1638940844260 | 2737 | blue | seen | blue_dress#blue_jacket | ||
| 1638940844260 | 582 | yellow | yellow_skirt |
このコマンドは、次の出力を返します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Bigtable のベスト プラクティスは、1 つのエンティティ(個々のオンライン ショッピング セッションなど)のすべての情報を 1 行に保存することです。関連するベスト プラクティスとしては、定義した範囲の行をクエリして取得しやすい行キーを作成することです。
Bigtable で行キーのベスト プラクティスを適用するには、次の点を考慮してください。
データの取得に使用するクエリに基づいて行キーを設計する。
タイムスタンプや連番の数値 ID で始まる行キー、または関連データをグループ化できない行キーは避ける。
一般的な値(国など)から始まり、詳細な値(都市など)で終わる行キーを設計する。
複数の区切られた値を行キーに含める場合は、ユーザー ID に続いてタイムスタンプを付けるなど、言葉で表せる文字列値の形式を使用する。
前のセクションでは、timestamp、user_id、preferred_color は列ファミリーに整理されていませんでした。このデータセットでは、多くのクエリが各セッションとそのユーザー ID の詳細取得を目的としている点は、元データに関する説明のとおりです。
これらのクエリに対応するには、行キーをユーザー ID とセッションのタイムスタンプの組み合わせにするのがよいでしょう。また、特定の色を好むユーザーを検索しやすくするために、行キーに接頭辞として色名を付けてラベル付けする方法も有効です。たとえば、ユーザー ID 1939 の場合は green1939#1638940844260 のようにします。
| ... | Interactions | --- | --- | Sales |
|---|---|---|---|---|
| row_key | red_skirt | red_hat | orange_shoes | sale |
| green1939#1638940844260 | seen | seen | ||
| blue2466#1638940844260 | seen | seen | ||
| blue1679#1638940844260 | seen | blue_blouse#blue_jacket | ||
| blue2737#1638940844260 | seen | blue_dress#blue_jacket | ||
| yellow582#1638940844260 | yellow_skirt |
blue2737#1638940844260 のデータは 2 番目に追加されましたが、結果では green1939#1638940844260 より上に表示されます。これは、Bigtable が行キーを辞書順に並べて保存し、レコードも同じ順序で返すためです。アルファベット順に近い並びになりますが、数字で始まる行は 1、13、2、25、6、70 のように、数値としての大小順には並びません。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、cbt CLI を使用して、事前に作成されデータがすべて入力済みのテストテーブルのバージョン(既存の UserSessions テーブル)からデータを取得します。また、Bigtable のスキーマ設計や行キー設計のベスト プラクティスが、このテーブルでどのように適用されているかも確認します。
このステップでは、UserSessions テーブルに Bigtable のベスト プラクティスがどのように適用されているかを調べます。具体的には、このテーブルがオンライン ショッピングの各セッションにつき 1 行を持ち、その行にユーザーの商品インタラクションと購入情報がすべて保存されていることを確認します。
出力は次のような構成になります。
出力値は次のようになります。
各行には、1 人のユーザーが複数の商品(blue_hat、green_jacket など)に対して行ったインタラクションが記録されており、表示(seen)、詳細を確認(viewed details)、購入(purchased)などのユーザーの行動がわかります。また、購入情報はテーブルの Sales 列ファミリーの sale 列修飾子に記録されます。
UserSessions では、インタラクション タイプ、商品、販売ごとに 1 つのテーブルを作成するのではなく、関連するユーザー インタラクションと商品をすべて 1 つのテーブルに含めるというベスト プラクティスが適用されています。さらに、このテーブルでは、各オンライン ショッピング セッションにおけるすべての商品のインタラクションと購入が、1 行に保存されています。
Bigtable のクエリでは、次のいずれかの方法でデータを取得するのが最も効率的です。
次の手順では、cbt CLI の各オプションを使用して UserSessions テーブルをクエリし、必要なレコードを取得します。
Bigtable クライアント ライブラリで行キーを使用してデータの単一行を読み取る方法については、Bigtable のドキュメントをご覧ください。
出力値は次のようになります。
出力値は次のようになります。
read コマンドの範囲は、start 値として指定した行キーから始まり、end 値として指定した行キーの直前で終了します。そのため、行キー yellow991#1638940844645 は出力で返されません。
出力値は次のようになります。
次の手順では、列修飾子や列ファミリーでデータをフィルタして取得し、UserSessions テーブルに列のベスト プラクティスがどのように実装されているかを確認します。
出力値は次のようになります。
出力値は次のようになります。
出力値は次のようになります。
Sales という名前の列ファミリーには列修飾子が 1 つ(sale)しかないため、columns の値 "Sales:sale" と "Sales:.*" はどちらも同じ列を返します。
このラボでは、Google Cloud コンソールを使用して Bigtable インスタンスの詳細を確認し、Cloud Bigtable CLI(cbt CLI)で Bigtable テーブルのデータをクエリしました。さらに、Bigtable のベスト プラクティスに沿って、テーブル スキーマと行キーの設計も行いました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 5 月 30 日
ラボの最終テスト日: 2023 年 2 月 16 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください