テーブルの管理

Cloud Bigtable テーブルを管理する方法としては、cbt コマンドライン ツールを使用するのが最も簡単です。このページでは、cbt を使用してテーブルの作成、変更、削除を行う方法と、cbt または Google Cloud Platform Console によって既存のテーブルに関する情報を取得する方法について説明します。

cbt ツールは、このページで説明されていないコマンドをいくつかサポートしています。コマンドの完全なリストについては、cbt リファレンスをご覧ください。

また、いずれかの Cloud Bigtable クライアント ライブラリまたはサービス API を使ってプログラムによりテーブルを管理することも、HBase シェル コマンドライン ツールを使ってテーブルを管理することもできます。HBase シェルの使用方法については、HBase のドキュメントをご覧ください。

始める前に

開始する前に、cbt ツールをインストールする必要があります。

cbt ツールの構成

次の cbt 構成設定のデフォルトを指定できます。

  • Cloud Bigtable インスタンスが配置されているプロジェクト。
  • 接続する Cloud Bigtable インスタンス。
  • インスタンスに接続するときに使用する認証情報ファイル(JSON 形式)。 サービス アカウント キーの作成手順をご覧ください。gcloud auth application-default login を実行して認証が完了している場合や、Compute Engine インスタンスで cbt ツールを使用する場合は、認証情報ファイルは必要ありません。
  • 使用する API エンドポイント。通常、これらの値を変更する必要はありません。

これらの設定のデフォルトを指定する場合は、ホーム ディレクトリに .cbtrc ファイルを作成します。コマンドライン フラグを使用すると、.cbtrc のデフォルト値をオーバーライドできます。

.cbtrc ファイルを作成するには、次のコマンドを実行します。その際、[PROJECT_ID][INSTANCE_ID] を適切な値に置き換えます。

echo -e "project = [PROJECT_ID]\ninstance = [INSTANCE_ID]" > ~/.cbtrc

このページのこれ以降の説明では、わかりやすくするために、.cbtrc ファイルにプロジェクト ID とインスタンス ID がすでに設定されているものとします。これらの値は、cbt を実行するたびに -project フラグと -instance フラグを使用して設定することもできます。

テーブルの作成

cbt ツールを使用してテーブルを作成する場合、テーブルで使用する列ファミリーを指定する必要はありません。列ファミリーは後で追加または削除できます。

テーブルを作成する場合は、[TABLE_NAME] をテーブルの名前に置き換えて次のコマンドを実行します。

cbt createtable [TABLE_NAME]

行キーによるテーブルの分割

テーブルを作成する際には、行キーを用いてテーブルを事前に分割することで、複数の Cloud Bigtable ノード間に負荷を分散させることができます。たとえば、テーブルに非常に多くの行を書き込む場合は、事前にテーブルを分割できます。

一般に、Cloud Bigtable は必要に応じてテーブルを自動的に分割するため、テーブルを事前分割する必要はありません。また、テーブルのデータ量および各行のアクセス頻度に応じて、最終的には複数の異なる行キーでテーブルが分割されることを覚えておいてください。

行キーに基づいてテーブルを事前分割する場合は、次の構文を使用してテーブルを作成します。[TABLE_NAME] をテーブル名に、[SPLITS] を事前分割に使用する行キー接頭辞のカンマ区切りリストに置き換えます。

cbt createtable [TABLE_NAME] splits=[SPLITS]

たとえば、10 および 20 で始まる行キーでテーブル my-table を事前分割する場合には、次のように指定します。

cbt createtable my-table splits=10,20

テーブルの列ファミリーの変更

cbt ツールを使用して、既存のテーブルの列ファミリーを追加または削除できます。

列ファミリーの追加

列ファミリーをテーブルに追加する場合は、[TABLE_NAME] をテーブル名に、[FAMILY_NAME] を列ファミリー名に置き換えて、次のコマンドを実行します。

cbt createfamily [TABLE_NAME] [FAMILY_NAME]

たとえば、列ファミリー cf1cf2 をテーブル my-table に追加する場合には、次のように指定します。

cbt createfamily my-table cf1
cbt createfamily my-table cf2

列ファミリーの削除

テーブルから列ファミリーを削除する場合は、[TABLE_NAME] をテーブル名に、[FAMILY_NAME] を列ファミリー名に置き換えて、次のコマンドを実行します。

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

たとえば、テーブル my-table から列ファミリー cf2 を削除する場合には、次のように指定します。

cbt deletefamily my-table cf2

テーブルリストの表示

Console

インスタンス内のテーブルのリストを表示するには、以下の操作を行います。

  1. GCP Console で Cloud Bigtable インスタンスのリストを開きます。

    インスタンスのリストを開く

  2. テーブルを表示するインスタンスをクリックします。

  3. 左ペインの [テーブル] をクリックします。

    [テーブル] ページに、インスタンス内のテーブルのリストが表示されます。

    • テーブル ID の横にある矢印をクリックして、テーブルの複製のリストを展開します。
    • テーブル名の横にある [指標の表示] をクリックして、テーブルのモニタリング データを表示します。

cbt

インスタンス内のテーブルのリストを表示するには、次のコマンドを実行します。

cbt ls

テーブルに関する情報の表示

cbt ツールを使用して、テーブル内の既存の列ファミリーのリストを取得できます。

テーブルの列ファミリーを表示する場合は、[TABLE_NAME] をテーブル名に置き換えて次のコマンドを実行します。

cbt ls [TABLE_NAME]

ガベージ コレクション ポリシーの設定

このセクションでは、cbt ツールを使用して、Cloud Bigtable でそれぞれの値に保持するバージョン数を制御する方法と、値の有効期限を指定する方法を説明します。また、Cloud Bigtable クライアント ライブラリを使用する場合は、ガベージ コレクション ポリシーをプログラムによって設定することもできます。

それぞれの値の複数バージョンの保持

列ファミリーを作成するときに、その列ファミリーに保持する値のバージョン数を指定できます。この設定を指定しないと、Cloud Bigtable は次のいずれかのデフォルト値を使用します。

  • 列ファミリーの作成に Java 用 HBase クライアントか HBase shell を使用している場合、あるいは Java 用 HBase クライアントを使用する別のツールを使用している場合、Cloud Bigtable が列ファミリーの値に保持するバージョンは 1 つだけです。このデフォルトの設定は HBase と同じです。
  • これ以外のクライアント ライブラリまたはツールを使用して列ファミリーを作成する場合(たとえば cbt など)、Cloud Bigtable が各値に保持するバージョン数に制限はありません。

列ファミリーに保持するバージョン数を変更するには、次のコマンドを実行します。[TABLE_NAME] はテーブル名、[FAMILY_NAME] は列ファミリー名で置き換えます。また、[VERSIONS] は保持するバージョン数で置き換えます。

cbt setgcpolicy [TABLE_NAME] [FAMILY_NAME] maxversions=[VERSIONS]

たとえば、テーブル my-table の列ファミリー cf1 を更新して、各値の 5 つのバージョンを保持する場合には、次のように指定します。

cbt setgcpolicy my-table cf1 maxversions=5

値の有効期限の設定

列ファミリーを作成するときに、列ファミリーの値に有効期限を指定できます。この設定を指定しないと、列ファミリーの値は期限切れになりません。

指定した時間が経過した後に値を期限切れにするには、次のコマンドを実行します。[TABLE_NAME] はテーブル名に、[FAMILY_NAME] は列ファミリー名に置き換えます。[DAYS] は、値を保持する日数に置き換えます。

cbt setgcpolicy [TABLE_NAME] [FAMILY_NAME] maxage=[DAYS]d

たとえば、列ファミリー cf1 に格納された値が 1 日経過すると削除されるようにするには、次のように指定します。

cbt setgcpolicy my-table cf1 maxage=1d

テーブルの削除

テーブルを削除するには、[TABLE_NAME] をテーブル名に置き換えて次のコマンドを実行します。

cbt deletetable [TABLE_NAME]
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Bigtable ドキュメント