Melhores práticas utilizando BigQuery

Este post é um texto bem pequeno sobre como eu trabalho com Google Cloud BigQuery no dia a dia, vai servir para quem trabalha com ele também e que acha que não conhece as features legais que ele tem.

Preview

Para mim uma das ferramentas mais legais do BigQuery é a função “preview”. Ao utilizar o console (web) do BigQuery você pode economizar dinheiro ao não rodar uma query contra os dados e ao invés disso ir na aba “preview” e checar os dados que estão lá sem precisar gastar. Dessa forma você ganha agilidade por não precisar rodar a query e ainda vê se tem algo absurdamente errado com os dados, uma coluna vazia, por exemplo.

SELECT

Entender que por baixa do BigQuery eles utilizam um formato colunar de storage [1], por isso outro dica que eu dou é evitar SELECT * quando for rodar uma query no BigQuery porque o custo do BigQuery é em boa parte pela quantidade de dados lidas [2], ou seja, se você ler menos colunas, você vai ler menos dados (dado que o formato de arquivo utilizado pelo BigQuery permite isto).

Partições

Para quem gosta de otimizar código e deixar tudo rodando rapidão acho que uma forma massa de alcançar isso é através de partições. Com as partições se torna bem simples de remover, atualizar e inserir dados em uma grande tabela sem preocupações com o custo e a performance.

Lembra quando falei do format de storage do BigQuery no paragrafo anterior? Então, por conta deles também é bem complicado inserir e remover conjunto de linhas específicas no BigQuery, ou pelo menos, não é tão otimizado quanto fazer isto para uma coluna. Uma solução para isto é a partição, com ela, você pode agrupar os arquivos no armazenamento, o que permite que ao atualizar uma partição somente aqueles arquivos necessários serão manipulados. E se você alguma vez pensou em performance sabe que I/O é um gargalo enorme em qualquer sistema né? (comparado com memória primária).

Acho que por enquanto é isso, pessoal, este artigo vai ser um documento vivo então provavelmente vou editá-lo ao longo da vida para que outras pessoas possam aproveitar coisas que eu for aprendendo também.

Referências

[1] https://cloud.google.com/blog/products/gcp/inside-capacitor-bigquerys-next-generation-columnar-storage-format

[2] https://cloud.google.com/bigquery/pricing

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s