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

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

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

始める前に

  1. ログイン Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、 新しいアカウントを登録します

  2. 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. プロジェクトを 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 プロジェクトの名前に置き換えます。

  7. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  8. 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
  9. 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. プロジェクトを 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 プロジェクトの名前に置き換えます。

  14. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  15. 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
  16. 次のコマンドを実行して、gcloud CLI が最新の状態であり、cbt CLI が含まれていることを確認します。
    gcloud components update
    gcloud components install cbt

Bigtable インスタンスを作成する

コンソール

  1. コンソール Google Cloud で [インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. [インスタンス名] フィールドに「Counters quickstart instance」と入力します。

  3. [インスタンス ID] フィールドに「counters-quickstart-instance」と入力します。

  4. [続行] をクリックします。

  5. [エディションを選択] セクションで [Enterprise] を選択します。

  6. [続行] をクリックします。

  7. [ストレージの種類] セクションで [SSD] を選択します。

  8. [続行] をクリックします。

  9. [クラスタ ID] フィールドに「counters-quickstart-cluster」と入力します。

  10. [リージョン] リストで [us-east1(サウスカロライナ)] を選択します。

  11. [ゾーン] リストで [us-east1-c] を選択します。

  12. ノードのスケーリング セクションで [自動スケーリング] を選択し、次の操作を行います。

    1. ノードの最小数に「1」と入力します。
    2. ノードの最大数に「3」と入力します。
  13. [作成] をクリックしてインスタンスを作成します。

gcloud

  1. bigtable instances create command を使用して インスタンスを作成します。

    gcloud bigtable instances create counters-quickstart-instance \
        --display-name="Counters quickstart instance" \
        --edition=ENTERPRISE \
        --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. コンソールの左側のナビゲーション パネルで Google Cloud [テーブル] をクリックします。

  2. [ [Create table]] をクリックします。

  3. [Table ID] フィールドに「counters_quickstart_table」と入力します。

  4. [**列ファミリー**] で、追加する列ファミリーごとに [**列ファミリーを追加**] をクリックし、次の設定を入力します。

    • sum_family:

      1. [列ファミリー名] フィールドに「sum_family」と入力します。
      2. [列ファミリーのタイプ] セクションで [集計] を選択します。
      3. [Aggregator] リストで [合計] を選択します。
      4. [ガベージ コレクション ポリシーを設定] セクションで [ガベージを収集しない] を選択します。
      5. [完了] をクリックします。
    • min_family:

      1. [列ファミリー名] フィールドに「min_family」と入力します。
      2. [列ファミリーのタイプ] セクションで [集計] を選択します。
      3. [Aggregator] リストで [最小] を選択します。
      4. [ガベージ コレクション ポリシーを設定] セクションで [ガベージを収集しない] を選択します。
      5. [完了] をクリックします。
    • max_family:

      1. [列ファミリー名] フィールドに「max_family」と入力します。
      2. [列ファミリーのタイプ] セクションで [集計] を選択します。
      3. [Aggregator] リストで [最大] を選択します。
      4. [ガベージ コレクション ポリシーを設定] セクションで [ガベージを収集しない] を選択します。
      5. [完了] をクリックします。
  5. [作成] をクリックします。

  6. 新しい列ファミリーとその集計構成を表示するには:

    1. ナビゲーション メニューで [Bigtable Studio] をクリックします。
    2. 左側の [Object Explorer] ツリーで、[Tables] を展開し、 counters_quickstart_table を展開して、 [Column Families] を展開します。

cbt

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

    • 列ファミリー max_familyMax 型で、入力型は Int64 です。
    • 列ファミリー min_familyMin 型で、入力型は Int64 です。
    • 列ファミリー sum_familySum 型で、入力型は Int64 です。
    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
    

データを読み取る

テーブルからデータを読み取るには、 コンソールで SQL を使用してクエリを実行するか、 Google Cloud cbt CLI を使用します。

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": 5 }

cbt CLI で読み取る

  1. カウンタ値をバイトではなく整数として表示するには、YAML ファイル( cbt CLI で出力のフォーマットに使用できる)を定義します。以下のコマンドを実行します。

    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
    

クリーンアップ

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

コンソール

  1. counters_quickstart_table テーブルを削除します。

    1. コンソール Google Cloud で [Bigtable インスタンス] ページに移動します。

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

    2. インスタンスのリストで [Counters quickstart instance] をクリックします。

    3. 左側のナビゲーション パネルで [テーブル] をクリックします。

    4. の横にある counters_quickstart_table をクリックし、[Delete] をクリックします。

    5. counters_quickstart_table と入力して確定し、[削除] をクリックします。

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

    1. コンソール Google Cloud で [Bigtable インスタンス] ページに移動します。

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

    2. [Counters quickstart instance] をクリックします。

    3. [インスタンスの削除] をクリックします。

    4. counters-quickstart-instance と入力して確定し、[削除] をクリックします。

  3. ターミナルで、構成ファイルとオプションの認証情報を削除します。

    1. .cbtrc ファイルを削除します。

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

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

      gcloud auth revoke
      

cbt

  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
    

次のステップ