テーブルの作成と管理

このページでは、cbt command-line tool または Google Cloud Console を使用して Cloud Bigtable テーブルの作成、変更、削除、取得を行う方法について説明します。

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

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

始める前に

コマンドラインからテーブルを管理する場合は、cbt tool をインストールします。

cbt ツールを構成する

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

  • Bigtable インスタンスが配置されているプロジェクト。
  • 接続先の 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

このページで説明する cbt tool 命令は、.cbtrc ファイルにプロジェクト ID とインスタンス ID がすでに設定されていることを前提としています。また、cbt を実行するたびに、-project フラグと -instance フラグを使用して、こうした値を設定することもできます。

テーブルを作成する

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

Console

インスタンスに新しいテーブルを作成するには:

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

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

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

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

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

  4. [テーブルの作成] をクリックします。

  5. テーブルのテーブル ID を入力します。

  6. 列ファミリーを追加します(省略可)。

    列は後から追加することもできます。テーブルにデータを書き込むには、テーブルに少なくとも 1 つの列ファミリーが必要です。

  7. [作成] をクリックします。

cbt

次のコマンドを使用します。[TABLE_NAME] は、テーブルの名前に置き換えます。

cbt createtable [TABLE_NAME]

行キーでテーブルを分割する

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

cbt tool または Bigtable クライアント ライブラリを使用してテーブルを作成する場合、行キーを選択してテーブルを事前に分割できます。たとえば、テーブルに多数の行を書き込む場合は、特定の行を指定してテーブルを事前分割することもできます。

テーブルの事前分割は必須の作業ではありませんが、テーブルの作成時に、負荷とデータのフットプリントが Bigtable のどこに配置される可能性があるのかがわかるので便利です。事前分割しておくと、Bigtable にデータが到着した際にテーブルを分割して負荷を一度にまとめてバランスよく再配分するという作業が必要なくなります。

テーブルの作成時に事前分割するために選択した行キーでテーブルが分割されるのではありません。テーブル内のデータ量と各行に対するアクセス頻度に基づいて、Bigtable が最終的にさまざまな行キーでテーブルを分割します。

Console

Google Cloud Console を使用してテーブルを作成する場合、行を事前に分割することはできません。

cbt

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

cbt createtable [TABLE_NAME] splits=[SPLITS]

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

cbt createtable my-table splits=10,20

テーブル内の列ファミリーを変更する

既存のテーブルの列ファミリーを追加または削除できます。

列ファミリーを追加する

Console

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

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

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

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

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

  4. 変更するテーブルの [ 編集] をクリックします。

  5. 追加する列ファミリーごとに、次の手順を行います。

    1. [Add column family] をクリックします。
    2. 列ファミリーの一意の識別子を指定します。
    3. 列ファミリーのガベージ コレクションを設定します。
    4. [完了] をクリックします。
  6. [保存] をクリックします。

cbt

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

cbt createfamily [TABLE_NAME] [FAMILY_NAME]

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

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

列ファミリーを削除する

Console

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

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

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

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

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

  4. 変更するテーブルの [ 編集] をクリックします。

  5. 削除する列ファミリーごとに、次の手順を行います。

    1. 削除する列ファミリーの行にカーソルを合わせます。
    2. [] をクリックします。
  6. [保存] をクリックします。

  7. 列ファミリーの削除は取り消しができません。また、列ファミリーのデータがすべて削除されます。このことを確認するには、テキスト ボックスに「列ファミリーの削除」と入力します。

  8. [確認] をクリックします。

cbt

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

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

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

cbt deletefamily my-table cf2

テーブルのリストを表示する

Console

インスタンス内のテーブルのリストを表示するには:

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

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

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

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

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

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

cbt

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

cbt ls

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

Console

テーブルに関する情報を表示するには:

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

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

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

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

    [テーブル] ページに、インスタンス内のテーブルのリストが表示されます。Cloud Console には、テーブルが保存されているクラスタ数、テーブルのステータス、ストレージの使用率、テーブルの現在のバックアップの ID がテーブルごとに表示されます。

  4. テーブルの列ファミリー名を表示するには、[] をクリックします。[テーブルの編集] ペインを閉じるには、[キャンセル] をクリックします。

  5. テーブルレベルの指標やレプリケーション状態など、テーブルの詳細を表示するには、テーブルの名前をクリックします。

cbt

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

次のコマンドを使用します。[TABLE_NAME] はテーブル名で置き換えます。

cbt ls [TABLE_NAME]

ガベージ コレクション ポリシーを設定する

ガベージ コレクション ポリシーにより、保持するデータと削除対象のデータを Bigtable に指定します。ガベージ コレクション ポリシーは列ファミリー レベルで設定されます。これらは、テーブルの作成時またはそれ以降に設定できます。

列ファミリーを作成するときに、その列ファミリーのすべての列に含めるセル数を指定できます。この設定を指定しない場合、Bigtable は次のいずれかのデフォルト設定を使用します。

  • 列ファミリーの作成に Java 用 HBase クライアントか HBase shell を使用している場合、あるいは Java 用 HBase クライアントを使用する別のツールを使用している場合、Bigtable が列ファミリーの行 / 列の交差位置ごとに保持するセルは 1 つだけです。このデフォルトの設定は HBase と同じです。

  • 列ファミリーを Cloud Console、他のクライアント ライブラリ、または cbt tool で作成した場合、Bigtable が各列に保持するセル数に制限はありません。

ガベージ コレクション ポリシーの表示、設定、更新方法の詳細については、ガベージ コレクション ポリシーの構成をご覧ください。

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

テーブルをバックアップし、バックアップを新しいテーブルに復元する方法については、バックアップの管理をご覧ください。

テーブルを削除する

Console

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

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

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

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

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

  4. 削除するテーブルの [] をクリックします。

  5. [削除] をクリックします。

  6. この操作は元に戻せません。また、インスタンス内のすべてのクラスタからテーブルが削除されます。このことを確認するには、テキスト ボックスにテーブル ID を入力します。

  7. [削除] をクリックします。

cbt

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

cbt deletetable [TABLE_NAME]