建立及管理邏輯檢視表

Bigtable 的邏輯檢視表可讓您將 SQL 查詢儲存為虛擬資料表,其他 SQL 查詢可以參照這些資料表,而資料仍保留在來源資料表中。使用這些檢視畫面可協助您執行下列操作:

  • 避免重複查詢邏輯
  • 以關聯格式呈現資料
  • 限制特定資料列或資料欄的讀取權限

您可以使用 Google Cloud CLI 或 Google Cloud 控制台中的 Bigtable Studio 查詢編輯器,建立及管理邏輯檢視表。您可以使用查詢編輯器或任何支援 SQL 的 Bigtable 用戶端程式庫,查詢邏輯檢視表。如要比較持續增補的 materialized view 和授權 view,請參閱「資料表和 view」。

關於邏輯檢視表

邏輯檢視表可讓您對 Bigtable 資料執行下列操作:

  • 避免重複查詢:您可以在邏輯檢視中儲存及演進資料欄對應和轉換邏輯,其他邏輯檢視可以使用這些邏輯,而不必複製及貼上,或需要瞭解這些邏輯。
  • 與專為讀取關聯式資料庫而設計的系統整合:邏輯檢視可讓您像讀取關聯式資料庫資料表或 Cassandra 資料表一樣,讀取 Bigtable 資料。
  • 對多個資料表執行相同的邏輯檢視表:修改 FROM 子句,即可使用相同的檢視表查詢 Bigtable 執行個體中的任何資料表。
  • 提供一致的介面:即使來源資料表有所變更,應用程式仍可使用邏輯檢視表。
  • 限制特定資料欄或資料列的讀取權限:您可以只公開要允許使用者讀取的資料,而不授予整個資料表的存取權。

邏輯檢視表是執行個體層級資源,具有下列特性:

  • 必須使用 GoogleSQL for Bigtable 支援的 SQL 功能
  • 定義邏輯檢視表的 SQL 查詢無法使用 SELECT *。
  • 唯讀
  • 必須使用 SQL 讀取,而非呼叫 ReadRows
  • 可使用任何支援 SQL 的 Bigtable 用戶端程式庫查詢
  • 使用定義者權限。如果您有權讀取邏輯檢視表,即使沒有來源資料表的讀取權限,也能查詢邏輯檢視表。

您用來定義邏輯檢視表的資料列索引鍵、資料欄限定詞和資料欄值,都會視為服務資料。因此,請勿使用包含機密資訊的資料列索引鍵、資料欄限定詞或資料欄值建立邏輯檢視表。如要瞭解服務資料的處理方式,請參閱《Google Cloud 隱私權聲明》。

事前準備

如要使用 gcloud CLI,請按照下列步驟操作:

  1. 安裝 Google Cloud CLI。

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

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

    gcloud init

必要的角色

如要使用邏輯檢視表,您必須具備下列權限:

如何管理邏輯檢視表:

  • 如要建立、更新或刪除邏輯檢視表,您必須具備執行個體的 Bigtable 管理員 (roles/bigtable.admin) 角色。
  • 或者,您也可以請管理員在執行個體層級授予下列權限:
    • 建立:bigtable.logicalViews.create
    • 更新狀態:bigtable.logicalViews.update
    • 刪除:bigtable.logicalViews.delete

如要查看及查詢邏輯檢視表,請按照下列步驟操作:

  • 如要列出或描述邏輯檢視,您必須具備執行個體的 Bigtable 讀取者 (roles/bigtable.reader) 角色。
  • 或者,您也可以要求管理員在執行個體層級授予下列權限:

    • 清單:bigtable.logicalViews.list
    • 說明:bigtable.logicalViews.get
  • 如要查詢邏輯檢視表,您必須具備邏輯檢視表的 bigtable.logicalViews.readRows 權限。

如要建立邏輯檢視表,請按照下列步驟操作:

  • 您必須至少具備來源資料表的 bigtable.tables.readRows 權限。

如要授予特定檢視表的讀取權限:

您可以授予使用者讀取特定邏輯檢視表的權限,即使他們沒有其他 Bigtable 權限也沒問題。如要這麼做,請使用 IAM 條件,僅對該檢視表授予 bigtable.logicalViews.readRows 權限:

  1. 將專案的 bigtable.reader 角色授予使用者。
  2. 建立 IAM 條件,將 bigtable.logicalViews.readRows 權限限制在特定邏輯檢視。例如:

    resource.name == projects/PROJECT_ID/instances/INSTANCE_ID/logicalViews/VIEW
    

    更改下列內容:

    • PROJECT_ID:Bigtable 執行個體所在的 Google Cloud 專案。
    • VIEW:新邏輯檢視表的 ID,長度不超過 128 個字元。ID 不得與執行個體中的資料表 ID 和檢視表 ID 重複。
    • INSTANCE_ID:要建立邏輯檢視表的執行個體 ID。

    詳情請參閱「使用 IAM 條件管理資源存取權」。

如要進一步瞭解所有可用的角色和權限,請參閱「使用 IAM 控管 Bigtable 存取權」。

建立邏輯檢視表

控制台

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

    開啟執行個體清單

  2. 選取執行個體。

  3. 在導覽窗格中,點選「Bigtable Studio」。

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

    1. 在查詢編輯器中編寫查詢。如果查詢是有效的 SQL,系統會顯示「Valid」(有效) 訊息。

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

    3. 按一下「執行」。查詢結果會顯示在「Results」(結果) 資料表中。

    4. 確認查詢正確無誤後,按一下「Save as」(另存為) 展開箭頭,然後選擇「Save as logical view」(另存為邏輯檢視表)。

  5. 在「Save your logical view」(儲存邏輯檢視) 對話方塊中,輸入檢視名稱,然後按一下「Save」(儲存)。

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

gcloud

如要建立邏輯檢視表,請使用 gcloud bigtable logical-views create 指令。

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

更改下列內容:

  • VIEW:新邏輯檢視表的 ID,長度不超過 128 個字元。ID 不得與執行個體中的資料表 ID 和檢視表 ID 重複。
  • QUERY:有效的 Bigtable 專用 GoogleSQL 查詢。查詢無法使用 SELECT *。
  • INSTANCE:要建立邏輯檢視的執行個體 ID

選用:

  • 如要防止邏輯檢視表遭到刪除,請在指令中附加 --deletion-protection 旗標。如未套用這項設定,邏輯檢視表可能會遭到刪除。您也可以附加 --no-deletion-protection,明確允許刪除邏輯檢視。詳情請參閱本文的「更新邏輯檢視表」一節。

更新邏輯檢視表

控制台

您無法在Google Cloud 控制台更新邏輯檢視表的防刪除功能。如要啟用或停用防刪除功能,請使用 Google Cloud CLI。

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

    開啟執行個體清單

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

  3. 在導覽窗格中,點選「Bigtable Studio」。Explorer 中會顯示檢視表清單。

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

  5. 在要更新的檢視表旁邊,按一下 more_vert 動作選單,然後點選「View definition」(檢視定義)。

  6. 修改查詢。

  7. 按一下「執行」。

  8. 確認結果窗格顯示的資料應包含在檢視表中後,請按一下「Save as」(另存新檔)。

  9. 在對話方塊中,輸入您修改的檢視表 ID。

    對話方塊會顯示訊息,警告您正在覆寫現有檢視畫面。

  10. 按一下 [儲存]。

gcloud

如要更新邏輯檢視表,以執行其他查詢或修改防刪除功能,請使用 gcloud bigtable logical-views update 指令。必須指定查詢和/或防刪除功能。

如要更新邏輯檢視表的查詢,請按照下列步驟操作:

gcloud bigtable logical-views update VIEW  \
    --instance=INSTANCE --query=QUERY

如要為邏輯檢視表啟用防刪除功能,請按照下列步驟操作:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection=true

如要停用邏輯檢視表的防刪除功能,請按照下列步驟操作:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection=false

更改下列內容:

  • VIEW:要更新的邏輯檢視表 ID
  • INSTANCE:包含邏輯檢視表的執行個體 ID
  • QUERY:有效的 GoogleSQL 查詢

刪除邏輯檢視表

這項操作無法復原。

如果邏輯檢視表已啟用防刪除功能,就無法刪除。如要刪除已啟用防刪除功能的邏輯檢視表,您必須更新邏輯檢視表,停用防刪除功能。詳情請參閱本文的「更新邏輯檢視表」一節。

控制台

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

    開啟執行個體清單

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

  3. 在導覽窗格中,點選「Bigtable Studio」。Explorer 中會顯示檢視表清單。

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

  5. 展開「Views」。

  6. 找到要刪除的檢視表,按一下旁邊的 more_vert 動作選單,然後點選「Delete」(刪除)。

gcloud

如要刪除邏輯檢視表,請使用 gcloud bigtable logical-views delete 指令。

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

更改下列內容:

  • VIEW:要更新的邏輯檢視表 ID
  • INSTANCE:包含邏輯檢視表的執行個體 ID

取得執行個體的邏輯檢視表清單

您可以查看執行個體的邏輯檢視表清單。

控制台

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

    開啟執行個體清單

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

  3. 在導覽窗格中,點選「Bigtable Studio」。Explorer 中會顯示檢視表清單。

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

gcloud

如要查看執行個體的邏輯檢視清單,請使用 gcloud bigtable logical-views list 指令。

gcloud bigtable logical-views list --instance=INSTANCE

將 INSTANCE 替換為執行個體 ID。

描述邏輯檢視表

如要取得邏輯檢視表的詳細資料,請使用 gcloud bigtable logical-views describe 指令。

  gcloud bigtable logical-views describe VIEW \
      --instance=INSTANCE

終端機顯示的詳細資料大致如下:

  createTime: '2025-03-07T19:49:56.316578Z'
  etag: W/"/v1/17919275593532352351"
  name: projects/my-project/instances/my-instance/logicalViews/my-view
  query: SELECT street FROM addresses
  updateTime: '2025-03-07T19:49:56.316578Z'
  deletion_protection: true

查詢邏輯檢視表

建立邏輯檢視表後,您可以使用 SQL 查詢,就像查詢一般資料表一樣。您可以在 SELECT 陳述式的 FROM 子句中使用邏輯檢視表。

在查詢編輯器中,輸入參照檢視表名稱的 GoogleSQL 查詢。舉例來說,如果檢視表名稱為 MyLogicalView:

SELECT *
FROM MyLogicalView
LIMIT 100;

如要進一步瞭解如何在 Bigtable 中執行 SQL 查詢,請參閱「在查詢編輯器中使用 SQL 查詢資料」。

限制

  • 如果資料表的時間戳記精細程度設為微秒,就無法建立邏輯檢視表。

後續步驟