Bigtable でカウンタを作成して更新する
このクイックスタートでは、書き込み時に値を集計するテーブルセルである
集計を使用して、Bigtable でカウンタを作成して更新する方法について説明します。このクイックスタートでは、
Google Cloud コンソール、Google Cloud CLI、または
cbt CLI
を使用して
、次のカウンタを作成します。
- 実行中の合計を保持するカウンタ
- 追加されたすべての値の最小値を追跡するカウンタ
- 追加されたすべての値の最大値を追跡するカウンタ
始める前に
-
ログイン Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、 新しいアカウントを登録します。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
gcloud CLI を初期化した後に更新して、必要なコンポーネントをインストールします。
gcloud components update gcloud components install cbt
-
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成する Google Cloud :
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Cloud Bigtable API と Cloud Bigtable Admin API API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
gcloud CLI を初期化した後に更新して、必要なコンポーネントをインストールします。
gcloud components update gcloud components install cbt
-
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成する Google Cloud :
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Cloud Bigtable API と Cloud Bigtable Admin API API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com - 次のコマンドを実行して、gcloud CLI が最新の状態であり、
cbtCLI が含まれていることを確認します。gcloud components updategcloud components install cbt
Bigtable インスタンスを作成する
コンソール
コンソール Google Cloud で [インスタンスの作成] ページに移動します。
[インスタンス名] フィールドに「
Counters quickstart instance」と入力します。[インスタンス ID] フィールドに「
counters-quickstart-instance」と入力します。[続行] をクリックします。
[エディションを選択] セクションで [Enterprise] を選択します。
[続行] をクリックします。
[ストレージの種類] セクションで [SSD] を選択します。
[続行] をクリックします。
[クラスタ ID] フィールドに「
counters-quickstart-cluster」と入力します。[リージョン] リストで [us-east1(サウスカロライナ)] を選択します。
[ゾーン] リストで [us-east1-c] を選択します。
ノードのスケーリング セクションで [自動スケーリング] を選択し、次の操作を行います。
- ノードの最小数に「
1」と入力します。 - ノードの最大数に「
3」と入力します。
- ノードの最小数に「
[作成] をクリックしてインスタンスを作成します。
gcloud
bigtable instances createcommand を使用して インスタンスを作成します。gcloud bigtable instances create counters-quickstart-instance \ --display-name="Counters quickstart instance" \ --edition=ENTERPRISE \ --cluster-config=id="counters-quickstart-cluster",zone="us-east1-c"
インスタンスへの接続
cbtCLI を構成して、プロジェクトと インスタンスを使用するように.cbtrcファイルを作成します。echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrcPROJECT_ID は、使用しているプロジェクトの ID に置き換えます。
.cbtrcファイルが正しく設定されていることを確認します。cat ~/.cbtrcターミナルに
.cbtrcファイルの内容が次のように表示されます。project = PROJECT_ID instance = counters-quickstart-instance
これで、インスタンスで
cbtCLI を使用できるようになりました。
集計列ファミリーを含むテーブルを作成する
コンソール
コンソールの左側のナビゲーション パネルで Google Cloud [テーブル] をクリックします。
[ [Create table]] をクリックします。
[Table ID] フィールドに「
counters_quickstart_table」と入力します。[**列ファミリー**] で、追加する列ファミリーごとに [**列ファミリーを追加**] をクリックし、次の設定を入力します。
sum_family:- [列ファミリー名] フィールドに「
sum_family」と入力します。 - [列ファミリーのタイプ] セクションで [集計] を選択します。
- [Aggregator] リストで [合計] を選択します。
- [ガベージ コレクション ポリシーを設定] セクションで [ガベージを収集しない] を選択します。
- [完了] をクリックします。
- [列ファミリー名] フィールドに「
min_family:- [列ファミリー名] フィールドに「
min_family」と入力します。 - [列ファミリーのタイプ] セクションで [集計] を選択します。
- [Aggregator] リストで [最小] を選択します。
- [ガベージ コレクション ポリシーを設定] セクションで [ガベージを収集しない] を選択します。
- [完了] をクリックします。
- [列ファミリー名] フィールドに「
max_family:- [列ファミリー名] フィールドに「
max_family」と入力します。 - [列ファミリーのタイプ] セクションで [集計] を選択します。
- [Aggregator] リストで [最大] を選択します。
- [ガベージ コレクション ポリシーを設定] セクションで [ガベージを収集しない] を選択します。
- [完了] をクリックします。
- [列ファミリー名] フィールドに「
[作成] をクリックします。
新しい列ファミリーとその集計構成を表示するには:
- ナビゲーション メニューで [Bigtable Studio] をクリックします。
- 左側の [Object Explorer] ツリーで、[Tables] を展開し、
counters_quickstart_tableを展開して、 [Column Families] を展開します。
cbt
cbt createtableコマンドを使用して、3 つの集計列ファミリーを持つcounters_quickstart_tableという名前のテーブルを作成します。各列ファミリーを異なる集計タイプで構成します。- 列ファミリー
max_familyはMax型で、入力型はInt64です。 - 列ファミリー
min_familyはMin型で、入力型はInt64です。 - 列ファミリー
sum_familyはSum型で、入力型はInt64です。
cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax- 列ファミリー
cbt lsコマンドを実行して、列ファミリーを一覧表示します。cbt ls counters_quickstart_tableシェルによって次のような出力が表示されます。
Family Name GC Policy ----------- --------- max_family <never> min_family <never> sum_family <never>
テーブルにカウンタを作成する
cbt addtocellコマンドを使用して、行キーrow-key1とタイムスタンプ0を使用して、 3 つの列ファミリーのそれぞれに新しい列を作成し、初期値5を書き込みます。 このオペレーションでは、カウンタとして使用する集計セルが作成されます。cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=5@0 cbt addtocell counters_quickstart_table row-key1 min_family:min_column=5@0 cbt addtocell counters_quickstart_table row-key1 max_family:max_column=5@0
データを読み取る
テーブルからデータを読み取るには、
コンソールで SQL を使用してクエリを実行するか、 Google Cloud
cbt CLI
を使用します。
Google Cloud コンソールで SQL を使用してテーブルにクエリを実行する
コンソール Google Cloud で [Bigtable インスタンス] ページを開きます。
リストから
counters-quickstart-instanceを選択します。ナビゲーション メニューで [Bigtable Studio] をクリックします。
[エディタ] タブをクリックします。
このクエリをエディタに貼り付けます。
SELECT * FROM `counters_quickstart_table`[実行] をクリックします。クエリの結果が [結果] テーブルに次のように表示されます。
_key max_family min_family sum_family row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 5 }
cbt CLI
で読み取る
カウンタ値をバイトではなく整数として表示するには、YAML ファイル(
cbtCLI で出力のフォーマットに使用できる)を定義します。以下のコマンドを実行します。echo "families:" > ~/cbtformat.yaml echo " max_family:" >> ~/cbtformat.yaml echo " default_encoding: BigEndian" >> ~/cbtformat.yaml echo " default_type: INT64" >> ~/cbtformat.yaml echo " min_family:" >> ~/cbtformat.yaml echo " default_encoding: BigEndian" >> ~/cbtformat.yaml echo " default_type: INT64" >> ~/cbtformat.yaml echo " sum_family:" >> ~/cbtformat.yaml echo " default_encoding: BigEndian" >> ~/cbtformat.yaml echo " default_type: INT64" >> ~/cbtformat.yamlcbtformat.yamlファイルが正しく設定されていることを確認します。cat ~/cbtformat.yamlターミナルに
cbtformat.yamlファイルの内容が次のように表示されます。families: max_family: default_encoding: BigEndian default_type: INT64 min_family: default_encoding: BigEndian default_type: INT64 sum_family: default_encoding: BigEndian default_type: INT64cbt readコマンドを使用して YAML ファイルを渡し、テーブルに追加したデータを読み取ります。テーブルに 3 つの列が追加され、それぞれ異なる集計タイプが設定されています。cbt read counters_quickstart_table format-file=$HOME/cbtformat.yamlシェルによって次のような出力が表示されます。値は整数としてフォーマットされ、タイムスタンプは UTC 形式です。
row-key1 max_family:max_column @ 1970/01/01-00:00:00.000000 5 min_family:min_column @ 1970/01/01-00:00:00.000000 5 sum_family:sum_column @ 1970/01/01-00:00:00.000000 5
カウンタを更新する
セルを作成したときに使用した同じタイムスタンプ を使用して、テーブルの各列に値 3 を追加します。** 各列で、セルの値は セルの集計タイプに基づいて既存の値とマージされます。
cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=3@0 cbt addtocell counters_quickstart_table row-key1 min_family:min_column=3@0 cbt addtocell counters_quickstart_table row-key1 max_family:max_column=3@0cbt readコマンドをもう一度使用して、テーブル内のデータを読み取ります。各セルに集計値が含まれるようになりました。cbt read counters_quickstart_table format-file=$HOME/cbtformat.yamlsum_columnには 5 と 3 の合計(8)が含まれ、min_columnには書き込まれた 2 つの値の最小値(3)が含まれ、max_columnには書き込まれた 2 つの値の最大値(5)が含まれます。row-key1 max_family:max_column @ 1970/01/01-00:00:00.000000 5 min_family:min_column @ 1970/01/01-00:00:00.000000 3 sum_family:sum_column @ 1970/01/01-00:00:00.000000 8
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。
コンソール
counters_quickstart_tableテーブルを削除します。コンソール Google Cloud で [Bigtable インスタンス] ページに移動します。
インスタンスのリストで [Counters quickstart instance] をクリックします。
左側のナビゲーション パネルで [テーブル] をクリックします。
の横にある
counters_quickstart_tableをクリックし、[Delete] をクリックします。counters_quickstart_tableと入力して確定し、[削除] をクリックします。
インスタンスを削除します。
コンソール Google Cloud で [Bigtable インスタンス] ページに移動します。
[Counters quickstart instance] をクリックします。
[インスタンスの削除] をクリックします。
counters-quickstart-instanceと入力して確定し、[削除] をクリックします。
ターミナルで、構成ファイルとオプションの認証情報を削除します。
.cbtrcファイルを削除します。rm ~/.cbtrcフォーマット ファイルを削除します。
rm ~/cbtformat.yaml(省略可)gcloud CLI から認証情報を取り消します。
gcloud auth revoke
cbt
ターミナルで、テーブル
counters_quickstart_tableを削除します。cbt deletetable counters_quickstart_tableインスタンスを削除します。
cbt deleteinstance counters-quickstart-instance.cbtrcファイルを削除します。rm ~/.cbtrcフォーマット ファイルを削除します。
rm ~/cbtformat.yaml(省略可)gcloud CLI から認証情報を取り消します。
gcloud auth revoke
次のステップ
- 集計の詳細を確認する。
- SQL を使用して Bigtable データにクエリを実行する。
cbtCLI を使用してクイックスタートを行う。- その他のコードサンプルを確認する。