建立及管理邏輯檢視表
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,請按照下列步驟操作:
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 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 權限:
- 將專案的
bigtable.reader角色授予使用者。 建立 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 存取權」。
建立邏輯檢視表
控制台
在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。
選取執行個體。
在導覽窗格中,點選「Bigtable Studio」。
按一下 ,然後選擇「Editor」(編輯器),開啟新分頁。
在查詢編輯器中編寫查詢。如果查詢是有效的 SQL,系統會顯示「Valid」(有效) 訊息。
選用:如要將陳述式設為 SQL 樣式,請按一下「格式」。
按一下「執行」。查詢結果會顯示在「Results」(結果) 資料表中。
確認查詢正確無誤後,按一下「Save as」(另存為) 展開箭頭,然後選擇「Save as logical view」(另存為邏輯檢視表)。
在「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。
在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。
從清單中選取執行個體。
在導覽窗格中,點選「Bigtable Studio」。Explorer 中會顯示檢視表清單。
選用:系統會列出執行個體中的前 10 個檢視表。如要再查看 10 個,請按一下「顯示更多」。
在要更新的檢視表旁邊,按一下 more_vert 動作選單,然後點選「View definition」(檢視定義)。
修改查詢。
按一下「執行」。
確認結果窗格顯示的資料應包含在檢視表中後,請按一下「Save as」(另存新檔)。
在對話方塊中,輸入您修改的檢視表 ID。
對話方塊會顯示訊息,警告您正在覆寫現有檢視畫面。
按一下 [儲存]。
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:要更新的邏輯檢視表 IDINSTANCE:包含邏輯檢視表的執行個體 IDQUERY:有效的 GoogleSQL 查詢
刪除邏輯檢視表
這項操作無法復原。
如果邏輯檢視表已啟用防刪除功能,就無法刪除。如要刪除已啟用防刪除功能的邏輯檢視表,您必須更新邏輯檢視表,停用防刪除功能。詳情請參閱本文的「更新邏輯檢視表」一節。
控制台
在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。
從清單中選取執行個體。
在導覽窗格中,點選「Bigtable Studio」。Explorer 中會顯示檢視表清單。
選用:系統會列出執行個體中的前 10 個檢視表。如要再查看 10 個,請按一下「顯示更多」。
展開「Views」。
找到要刪除的檢視表,按一下旁邊的 more_vert 動作選單,然後點選「Delete」(刪除)。
gcloud
如要刪除邏輯檢視表,請使用 gcloud bigtable logical-views delete 指令。
gcloud bigtable logical-views delete VIEW \
--instance=INSTANCE
更改下列內容:
VIEW:要更新的邏輯檢視表 IDINSTANCE:包含邏輯檢視表的執行個體 ID
取得執行個體的邏輯檢視表清單
您可以查看執行個體的邏輯檢視表清單。
控制台
在 Google Cloud 控制台中,開啟 Bigtable 執行個體清單。
從清單中選取執行個體。
在導覽窗格中,點選「Bigtable Studio」。Explorer 中會顯示檢視表清單。
選用:系統會列出執行個體中的前 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 查詢資料」。
限制
- 如果資料表的時間戳記精細程度設為微秒,就無法建立邏輯檢視表。
後續步驟
- 如要進一步瞭解如何使用 SQL 查詢 Bigtable 資料,請參閱「Bigtable 適用的 GoogleSQL 總覽」。
- 如要預先計算及快取來源資料表的查詢結果,請參閱「連續 materialized view」。
- 如要設定特定資料子集的精細讀取和寫入權限,請參閱「授權檢視表總覽」。
- 如要根據應用程式情境動態篩選邏輯檢視表資料,請參閱「參數化檢視表總覽」。