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. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Update and install gcloud components:

    gcloud components update
    gcloud components install cbt
  5. 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.

  6. Make sure that billing is enabled for your Google Cloud project.

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

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Update and install gcloud components:

    gcloud components update
    gcloud components install cbt
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

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

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

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_family は、入力タイプが IntegerMax 型です。
    • 列ファミリー min_family は、入力タイプが IntegerMin 型です。
    • 列ファミリー sum_family は、入力タイプが IntegerSum 型です。
    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
    

次のステップ