Bigtable でカウンタを作成して更新する
書き込み時に値を集計するテーブルセルである集計を使用して、Bigtable でカウンタを作成して更新する方法について説明します。このクイックスタートでは、Google Cloud CLI と cbt CLI を使用して 3 つのカウンタを作成します。
- 実行中の合計を保持するカウンタ
- 追加されたすべての値の最小値を追跡するカウンタ
- 追加されたすべての値の最大値を追跡するカウンタ
始める前に
-
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 ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
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 を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(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 ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
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 を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com - 次のコマンドを実行して、gcloud CLI が最新の状態であり、
cbtCLI が含まれていることを確認します。gcloud components updategcloud components install cbt
Bigtable インスタンスを作成する
bigtable instances createコマンドを使用して、インスタンスを作成します。gcloud bigtable instances create counters-quickstart-instance \ --display-name="Counters quickstart instance" \ --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 を使用できるようになりました。
集計列ファミリーを含むテーブルを作成する
cbt createtableコマンドを使用して、3 つの集計列ファミリーを持つcounters_quickstart_tableという名前のテーブルを作成します。各列ファミリーを異なる集計タイプで構成します。- 列ファミリー
max_familyはMax型で、入力型はIntegerです。 - 列ファミリー
min_familyはMin型で、入力型はIntegerです。 - 列ファミリー
sum_familyはSum型で、入力型はIntegerです。
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
データを読み取る
カウンタ値をバイトではなく整数として表示するには、
cbtCLI が出力のフォーマットに使用できるyamlファイルを定義します。以下のコマンドを実行します。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 コンソールで 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": 8 }
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。
ターミナルで、テーブル
counters_quickstart_tableを削除します。cbt deletetable counters_quickstart_tableインスタンスを削除します。
cbt deleteinstance counters-quickstart-instance.cbtrcファイルを削除します。rm ~/.cbtrcフォーマット ファイルを削除します。
rm ~/cbtformat.yaml(省略可)gcloud CLI から認証情報を取り消します。
gcloud auth revoke