O que é Google BigQuery?

É uma solução em nuvem (cloud) para entregar Big Data SaaS. Pague pelo que usar. O Google BigQuery é uma solução Big Data, como o Hadoop, com a vantagem de não se precisar contratar e/ou comprar uma série de servidores, nem, contar com mão-de-obra, altamente, especializada. Bom, esta é a promessa do Google.

Estou usando o BigQuery desde dezembro de 2012, portanto, há pouco menos de 30 dias. Ainda é cedo para dar uma impressão apurada, mas, até agora tudo tem sido bom.

Subi um conjunto de dados, digamos, modesto: 500 milhões de linhas, dados oriundos de navegação em determinado site. E, estou “perguntando” coisas como: quais produtos foram vistos? o que foi, efetivamente, comprado? de onde são os internautas, e, quais produtos foram vistos/comprados por determinada região? quais ofertas foram  “empurradas” para cada internauta, enquanto navegavam? Entre outras.

Atenção! O BigQuery não é um banco de dados relacional tradicional! Ele continua sendo um Big Data, em toda sua amplitude: Dados não estruturados (embora apresente-os como tabelas), NoSQL (embora tenha uma linguagem, própria, SQL “like”), não é possível criar índices, não é possível modificar os dados (updates or deletes). Ele é um sistema, puramente, OLAP.

Sempre digo: BigData não é para todos, nem para todas as aplicações.

Se o BigData é para voce e/ou sua aplicação. É possível que o BigQuery sirva também!

Assim como no Hadoop é possível utilizar o Hive (e, seu HiveQL), no BigQuery é possível fazer queries Ad Hoc, com SQL “like”, extremamente rápidas.

Por que o BigQuery é muito mais rápido do que o Hadoop? Bem, está é dificil de responder. Muito dificil. Para ganhar performance escalar, o Hadoop depende de caixas (servidores). Enquanto a maioria dos clusters de Hadoop que tenho visto no Brasil, vão de 4 a 10 servidores (alguns casos com até 40 servidores, mas, a maioria fica abaixo de 10), no BigQuery as aplicações já nascem grande. Seus dados são replicados para dezenas de servidores.

Assim como, uma andorinha não faz verão, meia dúzia de servidores Hadoop também não.

Então, comparar a performance do BigQuery com um “clusterzinho” de Hadoop não é uma comparação das mais justas.

Como disse, anteriormente, importei para a nuvem do BigQuery uma base modesta, em termos de BigQuery: 500 milhões de linhas, diversos arquivos TXT, que somados, batem na casa dos 150GB. A importação e/ou cópia dos dados para a nuvem é uma tarefa árdua, demorada, chata e nada inteligente. Se algo dá errado em algum arquivo, as coisas ficam, realmente, pretas.

Fico imaginando uma carga de 100GB diária, ou, uma carga inicial por volta de 10TB. É possível que através de um relacionamento comercial com a Google possa existir algo como os teletransportadores de Star Trek. Eu não achei.

De qualquer forma, lógico que estou muito entusiasmado com a performance. Mas, de novo, estou fazendo comparações contra meu “clusterzinho” de 6 servidores.

No meu cluster, com tudo “txu-nadinho” 🙂 Eu consigo fazer a minha query mais pesada em 3 minutos. No Google BigQuery em 5 segundos. Note-se, no meu cluster eu uso o Hive/HiveQL para poder traçar um paralelo com a mesma flexibilidade do SQL do Big Query. Sim, é muito mais rápido.

Não estou gostando muito da inflexibilidade de controlar meus dados, poder acessá-lo de formas diferentes, mudá-lo, enfim ter domínio sobre “meus dados”. Já num cluster Hadoop tradicional, eu tenho total liberdade.

O preço me parece, bastante, justo. Muito mais barato do que comprar (ou alugar) servidores e ter que manter toda a estrutura. Não sei se eu teria coragem de colocar dados estratégicos numa nuvem tão aberta quanto à da Google, mesmo que, protegida via SSL, blá blá blá.

Joins! Sim é possível fazer Joins no BigQuery, assim como, e possível fazê-lo em clusters Hadoop através de Hive e Pig. Não tive problemas com Joins, mas o Google faz uma série de notas de limitação. De novo, minha massa de dados é pequena, e quase ridícula, em termos de Big Data, portanto, nem esbarro nestas limitações.

Sinto falta de uma série de recursos do ecossistema Hadoop, mas, ainda é cedo para imprimir um veredicto importante sobre o BigQuery, apenas, posso dizer que para um marinho de 30 dias de viagem estou satisfeito.

Sabe quando voce compra um carro novo? Não tem defeitos nem barulhos, aparentemente. Na verdade, eles estão lá, mas, o entusiasmo com o carro novo mascara-os. Acho que estou nesta fase. Até agora, quase tudo é “love”.