BigQuery中的view

sasa :)
Apr 22, 2021

--

#BigQuery #view #materialview #authorizedview

雖然說BigQuery號稱可以用使用關連式資料庫的方式來操作BigQuery

但中間還是有點差異

其實嚴格說來本質就不一樣啦

BigQuery是OLAP (online analytical process)
一般的關聯式資料庫是OLTP (online transactional process)

因此今天來說說BigQuery中的view跟關聯式資料庫的view的差異

原本在關聯式資料庫的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

[2]https://techdifferences.com/difference-between-view-and-materialized-view.html#:~:text=The%20basic%20difference%20between%20View,stored%20physically%20on%20the%20disk.&text=View%20can%20be%20defined%20as,snapshot%20of%20the%20base%20table

今天的學習就到這邊,我們下次見

有問題歡迎提出討論唷~ :)

--

--

sasa :)
sasa :)

Written by sasa :)

目標是做一個讓所有人都聽得懂技術語言的transfer person

No responses yet