BigLake é a camada de acesso unificado do GCP que estende o BigQuery para dados armazenados no Cloud Storage (e outros sistemas como Amazon S3 e Azure Data Lake). Permite aplicar governança de dados (controle por coluna e por linha) sobre arquivos no data lake sem precisar mover ou ingerir os dados no BigQuery.
Em essência, BigLake transforma tabelas externas em objetos de primeira classe com segurança e performance comparáveis a tabelas nativas.
O problema que o BigLake resolve
Tabelas externas comuns no BigQuery têm uma limitação crítica: as políticas de IAM do BigQuery não se aplicam ao nível de linha ou coluna. Qualquer usuário com acesso à tabela externa lê todos os dados. BigLake resolve isso centralizando o acesso: o BigQuery acessa o GCS em nome do usuário via uma connection, e as políticas de linha/coluna são aplicadas antes de retornar os dados.
graph LR U[Usuário] -->|query| BQ[BigQuery] BQ -->|via connection| BL[BigLake API] BL -->|aplica policies| GCS[(GCS / S3 / ADLS)] GCS --> BL BL --> BQ BQ --> U
Sem BigLake, o usuário poderia acessar o GCS diretamente e contornar qualquer controle do BigQuery.
Criando uma tabela BigLake
1. Criar uma connection
A connection é a identidade (Service Account gerenciada pelo Google) que o BigQuery usa para acessar o storage:
-- Via BigQuery SQL (BigQuery Omni / connections)
-- Ou via bq CLI:bq mk --connection \
--location=US \
--project_id=meu-projeto \
--connection_type=CLOUD_RESOURCE \
minha-connectionApós criar, o BigQuery retorna uma Service Account associada à connection. Conceder a ela acesso de leitura ao bucket:
# Ver o SA da connection
bq show --connection meu-projeto.US.minha-connection
# Conceder acesso ao bucket
gsutil iam ch \
serviceAccount:[email protected]:roles/storage.objectViewer \
gs://meu-bucket2. Criar a tabela BigLake
CREATE EXTERNAL TABLE meu_dataset.pedidos_biglake
WITH CONNECTION `meu-projeto.US.minha-connection`
OPTIONS (
format = 'PARQUET',
uris = ['gs://meu-bucket/trusted/pedidos/*.parquet']
);A diferença em relação a uma tabela externa comum é o WITH CONNECTION: isso ativa o controle de acesso via BigLake.
Governança: column e row-level security
Com a tabela BigLake criada, as mesmas políticas do BigQuery passam a funcionar:
Column-level security (Policy Tags)
-- 1. Criar policy tag no Data Catalog / Dataplex
-- 2. Aplicar na coluna da tabela BigLake
ALTER TABLE meu_dataset.pedidos_biglake
ALTER COLUMN cpf
SET OPTIONS (policy_tags='projects/meu-projeto/locations/us/taxonomies/123/policyTags/456');Usuários sem permissão na policy tag recebem erro ao tentar ler a coluna cpf.
Row-level security (Row Access Policies)
-- Usuários do time "sul" veem apenas pedidos da região sul
CREATE ROW ACCESS POLICY regiao_sul
ON meu_dataset.pedidos_biglake
GRANT TO ("group:[email protected]")
FILTER USING (regiao = 'sul');
-- Administradores veem tudo
CREATE ROW ACCESS POLICY admin_full_access
ON meu_dataset.pedidos_biglake
GRANT TO ("group:[email protected]")
FILTER USING (TRUE);Cache gerenciado (BigLake Managed Tables)
Para tabelas com acesso frequente, o BigLake pode materializar um cache dos dados do GCS em storage gerenciado pelo BigQuery, reduzindo latência e custo de queries repetidas:
-- Ativar managed tables (preview)
CREATE EXTERNAL TABLE meu_dataset.eventos_cache
WITH CONNECTION `meu-projeto.US.minha-connection`
OPTIONS (
format = 'PARQUET',
uris = ['gs://meu-bucket/raw/eventos/*.parquet'],
metadata_cache_mode = 'AUTOMATIC' -- atualiza cache automaticamente
);O cache é transparente para o usuário: o BigQuery decide automaticamente quando usar o cache ou ler do GCS.
BigLake Metastore
Hive Metastore gerenciado integrado ao BigLake. Permite que engines como Dataproc (Spark), Dataflow e BigQuery compartilhem o mesmo catálogo de tabelas sem duplicar definições de schema:
graph TD BQ[BigQuery] --> BLM[BigLake Metastore] DP[Dataproc / Spark] --> BLM DF[Dataflow] --> BLM BLM --> GCS[(GCS)]
Substitui o Dataproc Metastore (Hive Metastore tradicional) em arquiteturas novas.
BigLake vs tabela externa comum
| Tabela externa | Tabela BigLake | |
|---|---|---|
| Acesso ao GCS | Direto (credenciais do usuário) | Via connection (SA gerenciada) |
| Column-level security | Não | Sim |
| Row-level security | Não | Sim |
| Cache gerenciado | Não | Sim (Managed Tables) |
| Metastore compartilhado | Não | Sim (BigLake Metastore) |
| Acesso multi-engine | Limitado | Sim (BQ + Spark + Dataflow) |
Posição no ecossistema
BigLake é a peça que fecha o gap entre data lake (GCS) e data warehouse (BigQuery) do ponto de vista de governança. Combinado com o Dataplex, forma a base de uma arquitetura data lakehouse com segurança centralizada:
- Dataplex: catalogação, linhagem e qualidade de dados
- BigLake: controle de acesso e cache sobre os dados físicos no GCS
- BigQuery: engine SQL de consulta
Ver também: gcp-bigquery | gcp-cloud-storage | gcp-dataplex | gcp-dataproc | gcp-bigquery-otimizacao | data-lake-lakehouse