建立及管理資料表

Bigtable 資料表可讓您整理及儲存大規模資料,以供低延遲應用程式工作負載使用。您可以使用 Google Cloud 控制台、Google Cloud CLI、cbt CLI,或透過 Cloud Bigtable 用戶端程式庫以程式輔助方式建立及管理這些資料表。

如要進一步瞭解如何建立及管理資料表的授權 view,請參閱「授權 view」。

事前準備

如要使用指令列工具處理資料表,請按照本節中的步驟操作。

  1. 安裝 gcloud CLI。

  2. 選用:如要使用 cbt CLI ,請按照「安裝 cbt CLI 」中的操作說明執行,包括建立 .cbtrc 檔案的步驟。

    本頁的 cbt CLI 指令假設您已在 .cbtrc 檔案中設定專案 ID 和執行個體 ID。或者,您也可以在每次執行 cbt CLI 指令時,使用 -project 和 -instance 旗標設定這些值。

建立資料表

建立資料表時,您不需要指定要在資料表中使用哪些資料欄系列。您之後可以新增或刪除資料欄系列。

控制台

如要在執行個體中建立新資料表,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 按一下「建立資料表」。

  5. 輸入資料表的資料表 ID。

  6. 選用:新增資料欄系列。

    你可以現在或稍後新增資料欄。資料表必須至少有一個資料欄系列,才能寫入資料或從中讀取變更串流。

  7. 選用:為資料表啟用變更串流。啟用變更串流前,請務必瞭解相關影響,包括儲存空間費用增加,以及應用程式設定檔用量需求。如要查看這些詳細資料,請參閱「變更串流總覽」。

    1. 選取「啟用變更串流」。

    2. 在「保留時間」欄位中,輸入 1 到 7 之間的數字,指定要保留變更串流資料的天數。

  8. 選用步驟:如不想讓 Bigtable 每天備份資料表,請取消勾選「啟用自動備份」核取方塊。詳情請參閱「使用自動備份功能」。

  9. 選用:啟用資料表的不常存取功能,做為分層儲存空間的一部分 (預先發布版):

    1. 選取「啟用分級式儲存空間」。

    2. 在「年齡門檻」欄位中,輸入 Bigtable 將資料從 SSD 儲存空間移至不常存取儲存空間的天數。數字必須大於或等於 30。

  10. 選用,Enterprise Plus 版:根據預設,系統會在資料表執行個體中的所有叢集建立每日備份。如要選擇 Bigtable 必須建立每日資料表備份的叢集,請在「選取要備份的叢集」欄位中選取叢集位置。 詳情請參閱「設定自動備份叢集位置」。

  11. 選用:如要設定資料列索引鍵結構定義,請選取「定義資料列索引鍵結構定義」,然後執行下列操作:

    1. 在「Encoding」(編碼) 清單中,選取資料列索引鍵結構定義的編碼類型。

    2. 如果您選取「DelimitedBytes」,請在「Delimiter」欄位中輸入分隔符號,用來分隔現有資料列索引鍵中的區隔。預設值為井號 (#)。

    3. 在「Segment」(區隔) 欄位中輸入區隔名稱,例如 device_type。

    4. 在「類型」清單中,選取資料列索引鍵區隔的資料類型。

    5. 視所選資料類型而定,在「位元組編碼」清單中,保留或變更資料列索引鍵區隔的預設編碼類型。

    6. 選用:如果資料列索引鍵區隔有多個部分,請按一下「新增資料列索引鍵區隔」,新增其他欄位。

  12. 點選「建立」。

gcloud

如要建立資料表,請執行下列指令。如需完整的選項清單,請參閱 gcloud bigtable instances tables create。

gcloud bigtable instances tables create TABLE_ID \
    --instance=INSTANCE_ID \
    --project=PROJECT_ID \
    --column-families=COLUMN-FAMILIES

更改下列內容:

  • TABLE_ID:新資料表的專屬 ID
  • INSTANCE_ID:執行個體的 ID
  • PROJECT_ID:新資料表所屬的專案
  • COLUMN-FAMILIES:以半形逗號分隔的資料欄系列名稱清單。您之後可以新增更多資料欄系列。

選用:

  • 如要防止資料表遭到刪除,請在指令中附加 --deletion-protection。如未套用這項設定,表格可能會遭到刪除。您也可以附加 --no-deletion-protection,明確允許刪除資料表。

  • 如要為資料表啟用變更串流,請指定變更串流資料的保留期限。啟用變更串流前,請務必瞭解相關影響,包括儲存空間費用增加和應用程式設定檔用量規定。如要查看這些詳細資料,請參閱「變更串流總覽」。

    --change-stream-retention-period=RETENTION_PERIOD
    

    將 RETENTION_PERIOD 替換為 Bigtable 應保留表格變更串流資料的時間長度。 時間範圍必須介於 1 到 7 天之間。可接受的單位為天 (d)、小時 (h)、分鐘 (m) 和秒 (s)。例如:48h 或 6d

  • 如要讓 Bigtable 每天備份資料表,並將每個備份保留預設的七天保留期限,請在建立資料表時使用 --enable-automated-backup 標記。

    gcloud bigtable instances tables create TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --column-families=COLUMN-FAMILIES \
        --enable-automated-backup
    

    如要設定不同的保留期限,請使用 --automated-backup-retention-period 旗標,而非 --enable-automated-backup 旗標,並提供最多 90 天的值。值必須以數字表示,並以 m、h 或 d (分鐘、小時或天) 為單位,例如 15d 代表 15 天。

    Enterprise Plus 版:系統預設會為資料表執行個體中的所有叢集建立每日備份。如要設定 Bigtable 必須每天備份資料表的叢集位置,請使用 --automated-backup-locations 旗標,而非 --enable-automated-backup 旗標。請提供叢集位置清單,並以半形逗號分隔,這些位置必須啟用自動備份功能。例如:us-central1-a,us-east1-b,europe-west1-c。

  • 如要啟用不常存取儲存空間,請使用
    --tiered-storage-infrequent-access-older-than 標記,並將 AGE_THRESHOLD 替換為至少 30 天的值。
    可接受的單位為天 (d)、小時 (h)、分鐘 (m) 和秒 (s)。例如:32d 或 32d12h。

    gcloud beta bigtable instances tables create TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --tiered-storage-infrequent-access-older-than=AGE_THRESHOLD
    

cbt

請使用下列指令,並將 TABLE_NAME 替換成資料表名稱。您無法使用 cbt CLI 建立啟用變更串流的資料表。

cbt createtable TABLE_ID

選用:如要在資料表中建立匯總資料欄系列,請在資料欄系列名稱後方附加匯總類型。以下程式碼會建立聚合資料欄系列,並將垃圾收集政策設為 never。

cbt createtable TABLE_ID families=FAMILY_NAME:never:TYPE

更改下列內容:

  • TABLE_ID:新資料表的專屬 ID
  • FAMILY_NAME:以半形逗號分隔的資料欄系列名稱清單。您之後可以新增更多資料欄系列。
  • TYPE:匯總類型。必須是 intsum、intmin、intmax 或 inthll。

如需更多選項,請參閱 cbt CLI 參考資料中的「建立表格」。

如果誤刪資料表,請勿嘗試手動建立已刪除的資料表。使用 gcloud CLI 指令 bigtable instances tables undelete 復原資料表。

選用:依資料列索引鍵分割資料表

為達到最佳效能,Bigtable 會持續將資料表分割到多個節點,平均分配每個節點儲存的資料量,並盡可能將經常存取的資料列分散開來。這項持續進行的程序會自動完成。

建立新資料表時,您可以指定初始資料表分割。Bigtable 會在您提供的資料列索引鍵位置分割資料表。如果鍵空間過大,Bigtable 會進一步分割資料表。資料表建立完成後,初始分割會保留約 24 小時。您最多可以提供 100 個資料列索引鍵,做為初始分割的發生位置。

舉例來說,如果您即將在表格中寫入多個資料列,可以指定特定資料列預先分割表格。

預先分割資料表並非必要,但好處多多,因為這能為 Bigtable 提供資訊,瞭解建立資料表時,負載和資料足跡可能落在哪裡。預先分割可避免 Bigtable 在資料抵達時,必須一次分割資料表並重新平衡負載。

控制台

使用Google Cloud 控制台建立資料表時,無法預先分割資料列。

gcloud

如要依資料列索引鍵分割資料表,請執行下列指令。如需完整的選項清單,請參閱 gcloud bigtable instances tables create。

gcloud bigtable instances tables create TABLE_ID\
    --instance=INSTANCE_ID \
    --project=PROJECT_ID \
    --column-families=COLUMN-FAMILIES \
    --splits=SPLITS

更改下列內容:

  • TABLE_ID:新資料表的專屬 ID
  • INSTANCE_ID:執行個體的 ID
  • PROJECT_ID:新資料表所屬的專案
  • COLUMN-FAMILIES:以半形逗號分隔的資料欄系列名稱清單。您之後可以新增更多資料欄系列。
  • SPLITS:資料表應先分割的資料列索引鍵,例如 10,20。

cbt

如要根據資料列索引鍵預先分割資料表,請使用下列語法建立資料表。將 [TABLE_NAME] 替換為表格名稱,並將 [SPLITS] 替換為以半形逗號分隔的資料列鍵前置字元清單,用於預先分割。

```none
cbt createtable [TABLE_NAME] splits=[SPLITS]
```

舉例來說,如要在以 10 和 20 開頭的資料列索引鍵預先分割資料表 my-table:

```none
cbt createtable my-table splits=10,20
```

修改表格中的資料欄系列

建立資料表時或在現有資料表中,都可以新增資料欄系列。如果資料表未啟用防刪除功能,即可刪除資料表中的資料欄系列。

新增資料欄系列

控制台

在新資料表中新增資料欄系列

  1. 在「建立資料表」窗格中,針對要新增的每個資料欄系列,按一下「新增資料欄系列」。

  2. 在「資料欄系列名稱」欄位中,輸入資料欄系列的專屬 ID。

  3. 選擇資料欄系列類型:

    • 標準:建立由垃圾收集政策管理的標準資料欄系列。
    • 匯總:建立資料欄系列,在寫入時自動匯總資料。您可以設定專屬的垃圾收集政策,管理資料保留政策,例如時間值區。
  4. 如果您選取「Aggregate」(匯總),請在「Aggregator」(匯總器) 欄位中,選取下列其中一個選項:

    • 加總:匯總所有儲存格值的總和。
    • 最小值:匯總儲存格的最小值。
    • 最大值:匯總最大儲存格值。
    • HyperLogLog:匯總儲存格值的近似基數。
  5. 為資料欄系列設定垃圾收集政策。

  6. 按一下「完成」。

在現有資料表中新增資料欄系列

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 找到要修改的表格,然後按一下「編輯」。

  5. 針對要新增的每個資料欄系列,執行下列操作:

    1. 點選「新增資料欄系列」。
    2. 在「資料欄系列名稱」欄位中,輸入資料欄系列的專屬 ID。
    3. 選擇資料欄系列類型:

      • 標準:建立由垃圾收集政策管理的標準資料欄系列。
      • 匯總:建立資料欄系列,在寫入時自動匯總資料。您可以設定專屬的垃圾收集政策,管理資料保留政策,例如時間值區。
    4. 如果選取「匯總」,請在「匯總器」欄位中選取下列其中一個選項:

      • 加總:匯總所有儲存格值的總和。
      • 最小值:匯總儲存格的最小值。
      • 最大值:匯總最大儲存格值。
      • HyperLogLog:匯總儲存格值的近似基數。
    5. 為資料欄系列設定垃圾收集政策。

    6. 按一下「完成」。

  6. 按一下 [儲存]。

gcloud

您無法使用 gcloud CLI 將資料欄系列新增至資料表。

cbt

如要將資料欄系列新增至資料表,請使用下列指令:

cbt createfamily TABLE_ID FAMILY_NAME

舉例來說,如要將資料欄系列 cf1 和 cf2 新增至資料表 my-table:

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

選用:如要將匯總資料欄系列新增至資料表,請在資料欄系列名稱後方附加匯總類型。下列程式碼會建立資料表,其中包含匯總資料欄系列,並採用 never 的垃圾收集政策。

cbt createfamily TABLE_ID FAMILY_NAME:never:TYPE

更改下列內容:

  • TABLE_ID:資料表 ID
  • FAMILY_NAME:以半形逗號分隔的資料欄系列名稱清單。您之後可以新增更多資料欄系列。
  • TYPE:匯總類型。必須是 intsum、intmin、intmax 或 inthll。

刪除資料欄系列

如要刪除資料表中的資料欄系列,請先停用防刪除功能。

控制台

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 找到要修改的表格,然後按一下「編輯」。

  5. 針對要刪除的每個資料欄系列,完成下列步驟:

    1. 將滑鼠游標懸停在要刪除的資料欄系列所在資料列上。
    2. 按一下「」。
  6. 按一下 [儲存]。

  7. 如要確認您瞭解刪除資料欄系列是永久性操作,且資料欄系列中的所有資料都會刪除,請在文字欄位中輸入「Delete column families」。

  8. 按一下「確認」。

gcloud

您無法使用 gcloud CLI 刪除表格中的資料欄系列。

cbt

如要從資料表刪除資料欄系列,請使用下列指令,並將 [TABLE_NAME] 替換為資料表名稱,[FAMILY_NAME] 則替換為資料欄系列名稱:

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

舉例來說,如要刪除表格 my-table 中的資料欄系列 cf2:

cbt deletefamily my-table cf2

查看資料表清單

控制台

如要查看執行個體中的資料表清單:

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

gcloud

如要查看資料表清單,請執行 gcloud bigtable instances tables list 指令。

gcloud bigtable instances tables list --instances=INSTANCE_IDS

更改下列內容:

  • INSTANCE_IDS:以半形逗號分隔的執行個體 ID 清單。

cbt

如要查看執行個體中的資料表清單,請執行下列指令:

    cbt ls INSTANCE_ID

更改下列內容:

  • INSTANCE_ID: 執行個體的永久 ID。

C++

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

namespace cbt = ::google::cloud::bigtable;
namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::StreamRange;
[](cbta::BigtableTableAdminClient admin, std::string const& project_id,
   std::string const& instance_id) {
  std::string instance_name = cbt::InstanceName(project_id, instance_id);

  google::bigtable::admin::v2::ListTablesRequest r;
  r.set_parent(instance_name);
  r.set_view(google::bigtable::admin::v2::Table::NAME_ONLY);

  StreamRange<google::bigtable::admin::v2::Table> tables =
      admin.ListTables(std::move(r));
  for (auto& table : tables) {
    if (!table) throw std::move(table).status();
    std::cout << table->name() << "\n";
  }
}

C#

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

// Lists tables in intance.
// Initialize request argument(s).
ListTablesRequest request = new ListTablesRequest
{
    ParentAsInstanceName = s_instanceName
};
try
{
    // Make the request.
    PagedEnumerable<ListTablesResponse, Table> response = bigtableTableAdminClient.ListTables(request);

}
catch (Exception ex)
{
    Console.WriteLine($"Error listing tables {ex.Message}");
}

Java

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

// Lists tables in the current instance.
try {
  String parent = "projects/" + projectId + "/instances/" + instanceId;
  ListTablesRequest request = ListTablesRequest.newBuilder().setParent(parent).build();
  for (Table table : adminClient.listTables(request).iterateAll()) {
    System.out.println(table.getName());
  }
} catch (NotFoundException e) {
  System.err.println("Failed to list tables from a non-existent instance: " + e.getMessage());
}

Node.js

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

// List tables in current project
const [tables] = await adminClient.listTables({parent: instance.name});
tables.forEach(table => {
  console.log(table.name);
});

PHP

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

use Google\Cloud\Bigtable\Admin\V2\Client\BigtableInstanceAdminClient;
use Google\Cloud\Bigtable\Admin\V2\Client\BigtableTableAdminClient;
use Google\Cloud\Bigtable\Admin\V2\ListTablesRequest;

/**
 * List tables in an instance
 *
 * @param string $projectId The Google Cloud project ID
 * @param string $instanceId The ID of the Bigtable instance
 */
function list_tables(
    string $projectId,
    string $instanceId
): void {
    $instanceAdminClient = new BigtableInstanceAdminClient();
    $tableAdminClient = new BigtableTableAdminClient();

    $instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);

    printf('Listing Tables:' . PHP_EOL);
    $listTablesRequest = (new ListTablesRequest())
        ->setParent($instanceName);
    $tables = $tableAdminClient->listTables($listTablesRequest)->iterateAllElements();
    $tables = iterator_to_array($tables);
    if (empty($tables)) {
        print('No table exists.' . PHP_EOL);
        return;
    }
    foreach ($tables as $table) {
        print($table->getName() . PHP_EOL);
    }
}

Python

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

tables = instance.list_tables()
print("Listing tables in current project...")
if tables != []:
    for tbl in tables:
        print(tbl.table_id)
else:
    print("No table exists in current project...")

小茹

如要瞭解如何安裝及使用 Bigtable 的用戶端程式庫,請參閱「Bigtable 用戶端程式庫」。

如要向 Bigtable 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

# instance_id = "my-instance"
bigtable.tables(instance_id).all.each do |t|
  puts "Table: #{t.name}"
end

查看資料表資訊

控制台

如要查看資料表資訊,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。針對每個資料表, Google Cloud 控制台會顯示儲存資料表的叢集數量、資料表狀態、儲存空間使用率,以及資料表目前備份的 ID。如果資料表啟用分級式儲存空間 (搶先版),您可以查看 SSD 儲存空間使用率和不常存取儲存空間使用率。

  4. 如要查看資料表的資料欄系列名稱,請按一下 。如要關閉「編輯表格」窗格,請按一下「取消」。

  5. 如要查看資料表的其他詳細資料,包括資料表層級的指標和複製狀態,請按一下資料表名稱。

gcloud

如要查看資料表資訊,請執行 gcloud bigtable instances tables describe 指令。

gcloud bigtable instances tables describe TABLE_ID \
    --instance=INSTANCE_ID

更改下列內容:

  • TABLE_ID:資料表的專屬 ID
  • INSTANCE_ID:執行個體的 ID

cbt

您可以使用 cbt CLI 取得資料表中現有資料欄系列的清單。

請使用下列指令,並將 [TABLE_NAME] 替換為資料表名稱:

cbt ls [TABLE_NAME]

設定垃圾收集政策

垃圾收集政策會告知 Bigtable 要保留哪些資料,以及要標示哪些資料以供刪除。建立資料表時或之後,您可以在資料欄系列層級設定垃圾收集政策。

建立資料欄系列時,您可以指定要在該資料欄系列中每個資料欄保留的儲存格數量。如未指定這項設定,Bigtable 會使用下列其中一項預設設定:

  • 如果您使用適用於 Java 的 Cloud Bigtable HBase 用戶端或 HBase Shell 建立資料欄系列,或是使用適用於 Java 的 HBase 用戶端,Bigtable 只會保留資料欄系列中每個資料列或資料欄交集的 1 個儲存格。此預設的設定與 HBase 一致。

  • 如果您使用 Google Cloud 控制台、任何其他用戶端程式庫或 cbt CLI 建立資料欄系列,Bigtable 會在每個資料欄中保留無限數量的儲存格。

如需查看、設定及更新垃圾收集政策的詳細操作說明,請參閱「設定垃圾收集政策」。

備份及還原資料表

如需備份資料表,以及從備份還原至新資料表的操作說明,請參閱「管理備份」。

如果您在建立資料表時已啟用自動備份功能,可以修改資料表的自動備份設定,啟用或停用自動備份功能,或將保留期限變更為最多 90 天。詳情請參閱「使用自動備份」。

啟用、停用或設定變更串流

如需下列工作的操作說明,請參閱「設定變更串流」。

  • 在現有表格上啟用變更串流
  • 停用變更串流
  • 更新變更串流的保留期限

刪除資料表

刪除資料表時,系統也會刪除該資料表的所有授權檢視畫面。如果資料表的任何授權檢視畫面已啟用防刪除功能,您就無法刪除資料表。此外,您也無法刪除以連續具體化檢視畫面為依據的資料表。

控制台

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 按一下要刪除的表格 。

  5. 點選「刪除」。

  6. 如要確認您瞭解這項操作會刪除執行個體中所有叢集的資料表,且您只有七天時間可以取消刪除資料表,請在「刪除資料表」方塊中輸入資料表 ID。

  7. 點選「刪除」。

gcloud

  1. 如要刪除資料表,請執行 gcloud bigtable instances tables delete 指令。

    gcloud bigtable instances tables delete TABLE_ID --instance=INSTANCE_ID
    

    更改下列內容:

    • TABLE_ID:資料表的專屬 ID
    • INSTANCE_ID:執行個體的 ID
  2. 在終端機中輸入 y,確認刪除資料表。

cbt

如要刪除資料表,請使用下列指令,並將 [TABLE_NAME] 替換為資料表名稱:

cbt deletetable [TABLE_NAME]

取消刪除資料表

如果不小心刪除資料表,可以使用 gcloud CLI 指令 bigtable instances tables undelete取消刪除或復原資料表。請勿嘗試手動重建已刪除的表格。

如要取消刪除資料表,請在終端機中執行下列指令:

gcloud bigtable instances tables undelete TABLE_ID --instance=INSTANCE_ID

更改下列內容:

  • TABLE_ID:資料表的專屬 ID
  • INSTANCE_ID:執行個體的 ID

還原資料表時,Bigtable 會自動為該資料表啟用防刪除功能。

限制如下:

  • 資料表刪除後,約有七天的時間可以復原。
  • 您無法使用 Google Cloud 控制台、Cloud Bigtable 用戶端程式庫或 cbt CLI 復原已刪除的資料表。
  • 您無法從已刪除的執行個體還原資料表。
  • 如果資料表已啟用 CMEK,就無法取消刪除。
  • 還原資料表時,Bigtable 不會將任何細微的 IAM 政策繫結還原至已刪除的資料表。

您也可以在稽核記錄中查看 undelete 作業的狀態。

修改防刪除功能

如果您是具備 bigtable.tables.update 權限的角色主體 (例如 roles/bigtable.admin),可以啟用或停用資料表的防刪除功能。防刪除功能可防止刪除資料表、資料表中的所有資料欄系列,以及包含資料表的執行個體。

為資料表啟用防刪除功能時,不會為資料表的授權檢視畫面啟用這項功能。同樣地,停用資料表的防刪除功能,不會停用資料表授權檢視畫面的防刪除功能。您必須 分別更新資料表的授權檢視區塊。

控制台

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 按一下資料表 ID 旁的 。

  5. 如要啟用防刪除功能,請按一下「防止刪除」。如要停用防刪除功能,請按一下「啟用刪除功能」。系統只會顯示有效選項。

gcloud

如要為資料表啟用防刪除功能,請執行 gcloud bigtable instances table update 指令:

```sh
gcloud bigtable instances tables update TABLE_ID \
    --instance=INSTANCE_ID \
    --deletion-protection
```

如要停用資料表的防刪除功能,請執行下列指令:

```sh
gcloud bigtable instances tables update TABLE_ID \
    --instance=INSTANCE_ID \
    --no-deletion-protection
```

更改下列內容:

+ TABLE_ID: the unique identifier for the table
+ INSTANCE_ID: the ID of the instance

cbt

您無法使用 cbtCLI 啟用或停用刪除防護功能。

修改不常存取儲存空間的年齡門檻

您隨時可以修改不常存取資料的年齡門檻,這項資料屬於分層儲存空間。

控制台

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 找到要修改的表格,然後按一下「編輯」。

  5. 在「年齡門檻」欄位中,輸入新的天數,Bigtable 會在經過這段時間後,將資料從 SSD 儲存空間移至不常存取儲存空間。數字必須大於或等於 30。

gcloud

如要修改不常存取儲存空間的年齡門檻,請執行 gcloud beta bigtable instances tables update 指令並搭配 --tiered-storage-infrequent-access-older-than 旗標:

    gcloud beta bigtable instances tables update TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --tiered-storage-infrequent-access-older-than=AGE_THRESHOLD

更改下列內容:

  • TABLE_ID:要更新的資料表 ID。
  • INSTANCE_ID:執行個體的 ID。
  • PROJECT_ID:包含要更新資料表的專案。
  • AGE_THRESHOLD:時間門檻,至少須為 30 天。可接受的單位為天 (d)、小時 (h)、分鐘 (m) 和秒 (s)。例如:從先前的 32d 改為 33d。

停用不常存取的儲存空間

您隨時可以停用分層儲存空間的低頻存取功能。因此,Bigtable 會將不常存取的儲存空間中的所有資料移至 SSD 儲存空間。停用不常存取儲存空間前,請務必瞭解費用影響。

控制台

  1. 在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。

    開啟執行個體清單

  2. 按一下您要查看其資料表的執行個體。

  3. 按一下左側窗格中的 [Tables] (資料表)。

    「表格」頁面會顯示執行個體中的表格清單。

  4. 找到要修改的表格,然後按一下「編輯」。

  5. 取消勾選「Enable tiered storage」(啟用分層儲存空間) 核取方塊。

  6. 按一下 [儲存]。

gcloud

如要停用不常存取的儲存空間,請使用 gcloud beta bigtable instances tables update 指令搭配 --clear-tiered-storage-config 旗標:

    gcloud beta bigtable instances tables update TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --clear-tiered-storage-config

更改下列內容:

  • TABLE_ID:要更新的資料表 ID
  • INSTANCE_ID:執行個體的 ID
  • PROJECT_ID:包含要更新資料表的專案

後續步驟