Bigtable でカウンタを作成して更新する

集計を使用して Bigtable でカウンタを作成して更新する方法について説明します。集計とは、書き込み時に値を集計するテーブル セルです。このクイックスタートでは、Google Cloud CLI と cbt CLI を使用して 3 つのカウンタを作成します。

  • 実行中の合計を保持するカウンタ
  • 追加されたすべての値の最小値を追跡するカウンタ
  • 追加されたすべての値の最大値を追跡するカウンタ

始める前に

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Install the Google Cloud CLI.

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. gcloud CLI を初期化した後に更新して、必要なコンポーネントをインストールします。

    gcloud components update
    gcloud components install cbt
  6. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Bigtable API and Cloud Bigtable Admin API APIs:

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  9. Install the Google Cloud CLI.

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. gcloud CLI を初期化した後に更新して、必要なコンポーネントをインストールします。

    gcloud components update
    gcloud components install cbt
  13. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the Cloud Bigtable API and Cloud Bigtable Admin API APIs:

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  16. 次のコマンドを実行して、gcloud CLI が最新の状態であり、cbt CLI が含まれていることを確認します。
    gcloud components update
    gcloud components install cbt
  17. Bigtable インスタンスを作成する

    1. 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"
      

    インスタンスへの接続

    1. プロジェクトとインスタンスを使用するように cbt CLI を構成するため、.cbtrc ファイルを作成します。

      echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrc
      

      PROJECT_ID は、使用しているプロジェクトの ID に置き換えます。

    2. .cbtrc ファイルを正しく設定したことを確認します。

      cat ~/.cbtrc
      

      ターミナルに .cbtrc ファイルの内容が次のように表示されます。

      project = PROJECT_ID
      instance = counters-quickstart-instance

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

    集計列ファミリーを含むテーブルを作成する

    1. cbt createtable コマンドを使用して、3 つの集計列ファミリーを持つ counters_quickstart_table という名前のテーブルを作成します。各列ファミリーを異なる集計タイプで構成します。

      • 列ファミリー max_familyMax 型で、入力型は Integer です。
      • 列ファミリー min_familyMin 型で、入力型は Integer です。
      • 列ファミリー sum_familySum 型で、入力型は Integer です。
      cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax
      
    2. cbt ls コマンドを実行して、列ファミリーを一覧表示します。

      cbt ls counters_quickstart_table
      

      シェルによって次のような出力が表示されます。

      Family Name     GC Policy
      -----------     ---------
      max_family      <never>
      min_family      <never>
      sum_family      <never>
      

    テーブルにカウンタを作成する

    1. 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
      

    データを読み取る

    1. カウンタ値をバイトではなく整数として表示するには、cbt CLI が出力のフォーマットに使用できる 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.yaml
      
    2. cbtformat.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: INT64
      
    3. cbt 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
      

    カウンタを更新する

    1. セルを作成したときに使用した同じタイムスタンプを使用して、テーブルの各列に値 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@0
      
    2. cbt read コマンドをもう一度使用して、テーブル内のデータを読み取ります。各セルに集計値が表示されます。

      cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
      

      sum_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
      
    3. 省略可: Google Cloud コンソールで SQL を使用してテーブルに対してクエリを実行します。

      1. Google Cloud コンソールで、[Bigtable インスタンス] ページを開きます。

        インスタンス リストに移動

      2. リストから counters-quickstart-instance を選択します。

      3. ナビゲーション メニューで [Bigtable Studio] をクリックします。

      4. [エディタ] タブをクリックします。

      5. 次のクエリをエディタに貼り付けます。

        SELECT * FROM `counters_quickstart_table`
        
      6. [実行] をクリックします。クエリの結果は [結果] テーブルに表示され、次のようになります。

      _key max_family min_family sum_family
      row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 8 }

    クリーンアップ

    このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。

    1. ターミナルで、テーブル counters_quickstart_table を削除します。

      cbt deletetable counters_quickstart_table
      
    2. インスタンスを削除します。

      cbt deleteinstance counters-quickstart-instance
      
    3. .cbtrc ファイルを削除します。

      rm ~/.cbtrc
      
    4. フォーマット ファイルを削除します。

      rm ~/cbtformat.yaml
      
    5. (省略可)gcloud CLI から認証情報を取り消します。

      gcloud auth revoke
      

    次のステップ