建立及管理邏輯檢視區塊

在 Bigtable 中,邏輯檢視區塊是 SQL 查詢的結果,可做為虛擬資料表,供其他 SQL 查詢使用。資料仍保留在來源資料表中。

本文說明邏輯檢視畫面,以及如何建立及對其執行作業。如要與持續性具體化檢視區塊和授權檢視區塊比較,請參閱資料表和檢視區塊

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

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

邏輯檢視區塊是執行個體層級的資源。您可以使用 Google Cloud CLI 或 Google Cloud 控制台中的 Bigtable Studio 查詢編輯器,建立邏輯檢視區塊。如要查詢邏輯檢視區塊,可以使用 Bigtable Studio 查詢編輯器,或任何支援 SQL 的 Bigtable 用戶端程式庫

邏輯檢視畫面具有下列特性:

  • 必須使用 GoogleSQL for Bigtable 支援的 SQL 功能
  • 唯讀
  • 必須使用 SQL 讀取,而非呼叫 ReadRows
  • 可使用任何支援 SQL 的 Bigtable 用戶端程式庫查詢
  • 使用定義者權限。即使您沒有從來源資料表讀取的權限,只要有從邏輯檢視區塊讀取的權限,就能查詢該檢視區塊。

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

事前準備

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

  1. Install the 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 Reader (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. 按一下 開啟新分頁,然後選擇「編輯器」

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

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

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

    4. 確認查詢內容正確無誤後,按一下「儲存」,然後選擇「儲存檢視表」

    如要進一步瞭解如何使用查詢編輯器,請參閱「使用 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
  • INSTANCE:要在其中建立邏輯檢視區塊的執行個體 ID

選用:

  • 如要防止刪除邏輯檢視區塊,請在指令中附加 --deletion-protection 標記。如果未套用這項設定,系統可能會刪除邏輯檢視畫面。您也可以附加 --no-deletion-protection,明確允許刪除邏輯檢視區塊。詳情請參閱本文件的「修改刪除保護機制」一節。

更新邏輯檢視區塊

主控台

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

    開啟執行個體清單

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

  3. 在導覽窗格中,按一下「Bigtable Studio」。檔案總管會顯示檢視畫面清單。

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

  5. 在要更新的檢視區旁,按一下 more_vert 動作選單,然後點選「查看定義」

  6. 修改查詢。

  7. 按一下「執行」

  8. 確認結果窗格顯示的資料應納入檢視畫面後,請按一下「另存為」

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

    對話方塊會顯示訊息,警告您即將覆寫現有檢視區塊。

  10. 按一下 [儲存]

gcloud

如要更新邏輯檢視區,以執行其他查詢,請使用 gcloud bigtable logical-views update 指令。

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

更改下列內容:

  • VIEW:要更新的邏輯檢視區塊 ID
  • QUERY:有效的 GoogleSQL 查詢
  • INSTANCE:包含邏輯檢視區塊的例項 ID

如要更新邏輯檢視區塊以修改防刪除設定,請參閱本文的「修改防刪除設定」一節。

刪除邏輯檢視畫面

這項操作無法復原。

如果邏輯檢視區已啟用防刪除功能,您就無法刪除該檢視區。如要刪除已啟用防刪除功能的邏輯檢視區塊,請更新邏輯檢視區塊以停用防刪除功能。詳情請參閱本文件的「修改刪除保護機制」一節。

主控台

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

    開啟執行個體清單

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

  3. 在導覽窗格中,按一下「Bigtable Studio」。檔案總管會顯示檢視畫面清單。

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

  5. 展開「Views」(檢視畫面)

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

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」。檔案總管會顯示檢視畫面清單。

  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 查詢資料

修改防刪除設定

防刪除功能可防止刪除邏輯檢視區塊。如要啟用或停用邏輯檢視區塊的防刪除功能,您必須具備必要權限。詳情請參閱本文的「必要角色」一節。

gcloud

如要為邏輯檢視區啟用刪除保護功能,請執行 gcloud bigtable logical-views update 指令:

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

如要停用邏輯檢視區塊的刪除保護機制,請執行下列指令:

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

更改下列內容:

  • VIEW:邏輯檢視區塊的 ID,最多 128 個字元。這個 ID 在執行個體中不得與其他資料表和檢視區塊 ID 重複。
  • INSTANCE:要更新邏輯檢視區塊的執行個體 ID。

後續步驟