O paradigma BigData

Vemos por aí tanta gente falando sobre o tal BigData, então pareceu ser uma ótima oportunidade para fazer um post sobre ele!

Afinal o que é BigData?

Vamos primeiro analisar a motivação por trás dele, que levou ao surgimento do termo.

Cena do filme Matrix. No contexto de BigData, a informação circula constantemente por todos os lados.

Atualmente estamos vivendo a era das redes sociais, do conteúdo multimídia distribuído, da informação contextual e democratizada.

Os usuários geram conteúdo!

A informação não flui mais apenas em uma direção, do provedor de conteúdo aos usuários, agora os grandes geradores de informação são os próprios usuários. Diante desse cenário, temos um aumento significante no fluxo de informação, ao qual um serviço precisa dar vazão, e também da complexidade, pois já não existe só uma entidade controlando o conteúdo.

Agora é a vez da estatística!

Outra grande mudança foi no valor da informação. No paradigma BigData fazemos as seguintes perguntas:

  • Quantos usuários do Facebook estão postando sobre um mesmo assunto?
  • Qual a relação entre a faixa etária e os termos buscados no Google?
  • Que categoria de vídeo gera visualizações mais rapidamente no Youtube?

A resposta para essas e muitas outras perguntas são as que criam novas oportunidades de negócio, e para obter a informação necessária para respondê-las é necessário guardar todo tipo de informação que circula em um sistema, o que passa a ser inviável com as soluções existentes de banco de dados relacional, pois não será possível operar no fluxo e crescimento da ordem de Terabytes/segundo.

São muitos dados!

Para resolver esse problema, foi necessário pensar diferente, pensar NoSQL!

Para suportar um sistema da ordem de grandeza de TB/s, é necessário um banco de dados com propriedades naturalmente escaláveis, semi-estruturado (já pensou em adicionar uma coluna a uma tabela com 10 bilhões de registros?) e que possa ser fragmentado (vamos manter réplicas dos registros, não do banco todo!). Diante dessas características, o BigData foi aos poucos se moldando, cada vez se contrastando mais com os outros paradigmas, até se definir como um novo e único paradigma.

Por onde eu começo?

O Google foi o grande pioneiro nessa área,  a integração entre seus serviços de busca e propaganda levou aos primeiros modelos de implementação: a BigTable!

A BigTable pode ser vista como uma matriz esparsa tridimensional, ou como um simples JSON de 3 chaves: { “column family: column”, “row”, “timestamp” : “value” }. Essa configuração permite um emprego muito variado de estruturas, como por exemplo:

  • Rows são endereços de páginas, Column Families são tipos de tags presentes no HTML, as Columns são as tags, o Timestamp é a data de modificação, e o valor é o título da página.
  • Rows são posições de latitude, Columns são longitude, Timestamp é a data da última atualização, e o valor é a imagem de satélite em bytes.

Exemplo do Google de organização dos dados coletados por web crawlers.

Exemplo do Google de organização dos dados coletados por web crawlers.

O Google não foi bonzinho em abrir o código da BigTable, porém nossos amigos da Apache implementaram a descrição conceitual que pode ser encontrada neste artigo do Google LINK.

Enter Hadoop e HBase

Para não haver confusão (no meu dia-a-dia eu vejo muita confusão sobre isto!), vamos dar nomes aos bois!

A ferramenta HBase é responsável por implementar a BigTable em si, ela proporciona a mesma estrutura, column families, timestamps, exatamente como descrito pelo Google.

A ferramenta Hadoop é a que faz a magia acontecer. Para se ter um ambiente de BigData operacional, é necessário criar um cluster de no mínimo 4 máquinas, com um sistema de arquivos distribuído, com gerenciamento de replicação, fornecer uma plataforma de desenvolvimento de operações de Inserção, Busca, Remoção (em outras palavras, Map-Reduce) para assim permitir que o sistema seja escalável, fragmentado, replicado e dê vazão para a aplicação!

Ambos são disponibilizados gratuitamente pela Apache, implementados em Java, e fornecem a camada mais baixa de uma aplicação, que é a de gerenciamento do banco de dados em si. Ao se desenvolver uma aplicação BigData, é necessário desenvolver a camada DAO da sua aplicação, e possívelmente será necessário criar APIs para isso, pois cada emprego de BigData define sua própria organização dos dados!

Fechando

Bom agora já dá pra ter uma idéia do que diabos é BigData, como funciona, e por onde dar os primeiros passos, lembrando que BigData não é pra se fazer sistema de padaria! Sempre que estiver em dúvida em usar ou não BigData lembre-se dos seguintes termos: Volume (TB/s), Variedade (Dados semi-estruturados) e Velocidade (Clusters de várias máquinas).

Leia Mais