建立及管理持續具體化檢視表

本文說明如何在 Bigtable 中建立及對連續具體化檢視區執行作業。閱讀本文前,請先參閱「持續性 materialized view」一文的總覽。

您可以使用 Google Cloud CLI、 Google Cloud 控制台中的 Bigtable Studio 查詢編輯器,或是適用於 Java 和 Go 的 Bigtable 用戶端程式庫,建立持續具體化檢視區塊。

事前準備

如果您打算使用 gcloud CLI,請按照下列步驟操作:

  1. 安裝 Google Cloud CLI。

  2. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  3. 執行下列指令,初始化 gcloud CLI:

    gcloud init

如果 gcloud CLI 傳回 Method not found 訊息,請再次執行 gcloud auth login 指令。

必要的角色

如要取得建立及管理持續具體化檢視區塊所需的權限,請要求管理員授予您執行個體的 Bigtable 管理員 (roles/bigtable.admin) 角色。否則,請視要執行的作業,要求執行個體層級的下列權限:

  • 建立:bigtable.materializedViews.create
  • 更新狀態:bigtable.materializedViews.update
  • 刪除:bigtable.materializedViews.delete
  • 清單:bigtable.materializedViews.list

如要建立連續具體化檢視表,您也必須至少具備來源資料表的 bigtable.tables.readRows 權限。

如要查看所有可用的角色和權限,請參閱「使用 IAM 控管 Bigtable 存取權」。

建立持續性具體化檢視表

建立持續性具體化檢視區塊前,請先執行下列操作:

  • 選用:最佳做法是為執行個體中的叢集啟用自動調度資源,確保叢集在 Bigtable 處理及同步處理連續具體化檢視區塊時,可以視需要擴充資源,並處理任何額外的儲存空間用量
  • 選用:決定是否要讓連續具體化檢視區塊在所有叢集中可用,或是要將其處理和查詢可用性隔離到單一叢集。詳情請參閱非決定性 SQL 函式
  • 找出您有權讀取的 Bigtable 資料表,做為連續具體化檢視的來源。
  • 準備定義持續增補 materialized view 的 SQL 查詢。如需查詢規定,請參閱「持續性 materialized view 查詢」。

控制台

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

    開啟執行個體清單

  2. 選取執行個體。

  3. 在導覽窗格中,按一下「Bigtable Studio」

  4. 按一下 開啟新分頁,然後選擇「編輯器」

    1. 查詢編輯器隨即顯示,請編寫查詢。如果查詢是有效的 SQL,系統會顯示「有效」訊息。

    2. 選用:如要以 SQL 樣式設定陳述式格式,請按一下「格式」

    3. 按一下「執行」。查詢結果會顯示在「結果」表格中。

    4. 確認查詢內容正確無誤後,按一下「另存為」展開箭頭,然後選擇「另存為 materialized view」

  5. 在「Save your materialized view」(儲存具體化檢視) 對話方塊中,輸入檢視名稱,然後按一下「Save」(儲存)

    如要進一步瞭解如何使用查詢編輯器,請參閱「使用 Bigtable Studio 管理資料」。

gcloud

如要建立連續具體化檢視表,請使用 gcloud bigtable materialized-views create 指令:

    gcloud bigtable materialized-views create VIEW \
            --instance=INSTANCE --query=QUERY

更改下列內容:

  • VIEW:持續具體化檢視表的專屬 ID。查詢連續具體化檢視區塊時,您會使用這個 ID 做為資料表 ID。
  • INSTANCE:要建立持續 materialized view 的執行個體 ID。必須與來源資料表位於相同執行個體。
  • QUERY:定義持續增補 materialized view 的有效 SQL 陳述式。

(選用) 啟用防刪除功能

如要為連續 materialized view 啟用防刪除功能,請在指令中附加 --deletion-protection=DELETION_PROTECTION。將 DELETION_PROTECTION 替換為 truefalse

選用:建立僅限單一叢集的檢視畫面

根據預設,Bigtable 會在執行個體中的所有叢集,複製連續具體化的檢視區塊。如要只保留特定叢集中的檢視畫面,請使用 CLUSTER_ATTRIBUTE 定義檢視畫面,並傳遞 --ignore-warnings 旗標:

gcloud bigtable materialized-views create VIEW \
  --instance=INSTANCE \
  --query="SELECT ... WHERE CLUSTER_ATTRIBUTE('cluster_id') = 'CLUSTER_ID'" \
  --ignore-warnings

更改下列內容:

  • VIEW:持續具體化檢視表的專屬 ID。查詢連續具體化檢視區塊時,您會使用這個 ID 做為資料表 ID。
  • INSTANCE:要建立持續 materialized view 的執行個體 ID。必須與來源資料表位於相同執行個體。
  • CLUSTER_ID:要維護檢視區塊的叢集 ID。

由於 CLUSTER_ATTRIBUTE 會在叢集之間產生不同的結果,因此您必須加入 --ignore-warnings 旗標,確認這些差異。如要進一步瞭解查詢語法和規定,請參閱「將檢視畫面隔離至單一叢集」。

查詢持續性 materialized view

持續性具體化檢視區處於啟用狀態後,您可以使用 Google Cloud 控制台的 Bigtable Studio,或支援的用戶端程式庫,像查詢任何其他資料表一樣查詢該檢視區。如要進一步瞭解查詢語法和規定,請參閱「持續具體化檢視區塊查詢」。

如要在初始填入作業完成前測試及查詢檢視區塊,請使用 @{allow_incomplete_view=true} 查詢提示。詳情請參閱「在初始填入期間讀取資料」。

更新持續性具體化檢視表

您可以更新連續具體化檢視的防刪除設定。您無法更新定義持續增補 materialized view 的 SQL 查詢;如要修改查詢,請刪除持續增補 materialized view,然後建立包含變更的新檢視表。

控制台

您無法在控制台中更新持續性具體化檢視表。 請改用 gcloud CLI。

gcloud

如要啟用或停用連續 materialized view 的防刪除功能,請使用 gcloud bigtable materialized-views update 指令。

gcloud bigtable materialized-views update VIEW \
        --instance=INSTANCE --deletion-protection=DELETION_PROTECTION

更改下列內容:

  • VIEW:要更新的持續具體化檢視區塊專屬 ID
  • INSTANCE:包含連續 materialized view 的執行個體 ID
  • DELETION_PROTECTIONtruefalse

刪除持續性具體化檢視表

您可以刪除未啟用防刪除功能的連續具體化檢視區塊。請注意,初始化後即無法復原。

控制台

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

    開啟執行個體清單

  2. 從清單中選取執行個體。

  3. 在導覽窗格中,按一下「Bigtable Studio」

  4. 展開「具體化檢視表」

  5. 找到要刪除的檢視畫面,然後依序點按旁邊的「更多」圖示 more_vert 和「刪除」

gcloud

如要刪除連續具體化檢視區塊,請使用 gcloud bigtable materialized-views delete 指令:

gcloud bigtable materialized-views delete VIEW \
      --instance=INSTANCE

更改下列內容:

  • VIEW:要刪除的連續具體化檢視區塊專屬 ID
  • INSTANCE:包含連續具體化檢視區塊的執行個體 ID

取得持續性 materialized view 清單

您可以查看執行個體的持續性具體化檢視清單。

控制台

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

    開啟執行個體清單

  2. 從清單中選取執行個體。

  3. 在導覽窗格中,按一下「Bigtable Studio」。系統會顯示持續性 materialized view 清單。

  4. 選用:系統會列出執行個體中的前 10 個檢視區塊。如要查看另外 10 個,請按一下「顯示更多」

gcloud

如要列出執行個體的所有連續具體化檢視區塊,請使用 gcloud bigtable materialized-views list 指令。

gcloud bigtable materialized-views list --instance=INSTANCE

INSTANCE 替換為執行個體 ID。

後續步驟