原本在關聯式資料庫的view
其實就是把原本table裡面的資料撈一份出來(可能已經做好一些運算等等)
然後可以讓使用者更好更方便地去查詢,也可以節省效能並做到權限控管
不過這樣做的缺點是,這些資料的即時性是有待確認的
因為可能我現在寫了一份過去view裡面,明天這些資料就不準了
BigQuery中的view
BigQuery中的view為了解決原本關聯性資料庫中的即時性的問題
因此定義上做了一些調整。
在 BigQuery中的view是邏輯存在的,不佔有儲存空間
而是,使用者在查詢view的當下,才幫你先根據你的設定的語法作出查詢後直接讓你使用[1]
當然,使用view也是有一些限制,詳細請參閱[2]
[1]https://cloud.google.com/bigquery/docs/views-intro
`A view is a virtual table defined by a SQL query.
When a user queries the view, the query results contain data only from the tables and fields specified in the query that defines the view.`[2]https://cloud.google.com/bigquery/docs/views-intro#view_limitations
View中還有Authorized view
另外,還有一個authorized view
這個是可以做到權限控管的view
在古早的世界裡面,若要做到view的權限控管,就只能做到誰能查誰不能查
但在BigQuery的世界中,可以做到 誰可以查哪些row/column
所需要做的事情就是在設定好的view裡面另外在做設定就可以[1]
[1]https://cloud.google.com/bigquery/docs/authorized-views#row-level-permissions
Materialized view
在BigQuery中的materialized view反而比較像傳統我們所認知的view
他實際上是會 佔有硬碟空間 的
所以跟view比起來(BigQuery中的view)會快很多,因為它實際上已經存在某個地方等著你來查詢了
當然,缺點就跟關聯式資料庫裡面的view一樣,要自己想辦法處理資料同步的問題囉~~~~~
create materialized view的方式及注意事項就請參考這裡囉[1]
然後也有網路上神人說明兩者的差異[2]
給大家參考囉
[1]https://cloud.google.com/bigquery/docs/materialized-views-best-practices
今天的學習就到這邊,我們下次見
有問題歡迎提出討論唷~ :)