テーブルの管理

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

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

また、Cloud Bigtable クライアント ライブラリまたはサービス API のいずれかを使用して、プログラムでテーブルを管理することもできます。

始める前に

始める前に、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 のフルマネージド サービスとしての機能に 1 つに、複数のノード間でテーブルを自動的に分割するというものがあります。この機能により、各ノードに格納されるデータ量が均等に分散し、頻繁にアクセスされる行が可能な限りばらけるため、パフォーマンスが最適化されます。

テーブルを作成する場合、テーブルを事前分割するための行キーを選択できます。たとえば、テーブルに多数の行を書き込む場合は、特定の行を指定してテーブルを事前分割することもできます。テーブルの事前分割は必須の作業ではありませんが、テーブルの作成時に、負荷とデータのフットプリントが Cloud Bigtable のどこに配置される可能性があるのかがわかるので便利です。事前分割しておくと、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]

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

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. Cloud 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]

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

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

テーブルのバックアップと復元

Cloud Bigtable ではテーブルのバックアップを作成し、そのデータに最大 30 日の TTL を割り当てることができます。復元は、バックアップを作成したインスタンスで、新しいテーブルに行えます。テーブルのバックアップと復元方法の手順については、バックアップの管理をご覧ください。

テーブルの削除

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

cbt deletetable [TABLE_NAME]