A conexão de dados do usuário está conduzindo o emparelhamento entre o banco de dados NoSQL e o Hadoop
A AOL Advertising executa uma das maiores operações de veiculação de anúncios on-line, fornecendo bilhões de impressões por mês a centenas de milhões de pessoas. A AOL enfrentou três desafios de gerenciamento de dados ao criar sua plataforma de veiculação de anúncios:
- Como analisar bilhões de eventos relacionados ao usuário, apresentados como uma combinação de dados estruturados e não estruturados, para inferir características demográficas, psicográficas e comportamentais que são encapsuladas em centenas de milhões de "perfis de cookies"
- Como disponibilizar centenas de milhões de perfis de cookies para sua plataforma de segmentação de anúncios com latência de leitura aleatória inferior a um milissegundo
- Como manter os perfis de usuário atualizados
A solução foi integrar dois sistemas de gerenciamento de dados: um otimizado para análise de dados de alto rendimento (o sistema "analítico") e o outro para acesso aleatório de baixa latência (o sistema "transacional"). Depois de analisar alternativas, a arquitetura final selecionada combinou o Cloudera Distribution for Hadoop (CDH) com o Membase:

Nessa arquitetura, (1) os dados do fluxo de cliques e outros eventos são alimentados no CDH a partir de uma ampla variedade de fontes; (2) os dados são analisados usando o MapReduce para gerar centenas de milhões de perfis de usuários; em seguida, com base nas campanhas publicitárias em execução, os perfis de usuários selecionados são carregados no Membase, onde (3) a lógica de segmentação de anúncios pode consultar o Membase com latência inferior a um milissegundo para obter os dados necessários para tomar decisões otimizadas sobre a colocação de anúncios em tempo real.
Embora a AOL ofereça um exemplo específico do poder de combinar um sistema de banco de dados transacional "NoSQL" com a plataforma de análise do Hadoop, eles representam o que está surgindo como um padrão comum de implementação em uma ampla variedade de ambientes de aplicativos da Web.
Cada vez mais, as organizações implementam essas duas tecnologias em conjunto. Eu me arriscaria a dizer que toda implantação de banco de dados NoSQL seria mais valiosa quando combinada com o Hadoop. Por quê?
Um banco de dados NoSQL é invariavelmente usado para permitir que aplicativos interativos da Web atendam a populações grandes e crescentes de usuários de aplicativos. Um conjunto grande e crescente de usuários gera naturalmente muitos dados - direta e indiretamente, estruturados e não estruturados. O Hadoop pode armazenar, processar e analisar muitos dados. A análise resultante pode oferecer insights sobre o comportamento, as preferências e os padrões do usuário, que podem ser usados para tornar a experiência do aplicativo ainda melhor para os usuários. Um aplicativo melhor leva a mais usuários. E o ciclo se acelera.
Muitos usuários
Em termos mais simples, um banco de dados NoSQL (como Membase, MongoDB ou Riak) foi projetado para fornecer aos aplicativos interativos da Web acesso econômico, de baixa latência e aleatório aos dados. Os aplicativos da Web têm três características definidoras que são importantes nesse contexto:
- Hipercrescimento. Elas podem crescer de um para centenas de milhares de usuários da noite para o dia - literalmente. E podem continuar crescendo para atender a centenas de milhões de usuários. O mundo é um lugar muito grande. Hoje, uma interface pública da Web torna um sistema de software acessível a quase dois bilhões de pessoas.
- Atendendo aos impacientes. Os seres humanos usam esses sistemas. Décadas de pesquisa mostraram que a velocidade é importante. As pessoas não gostam de ficar esperando. Qualquer parte da pilha de tecnologia que contribua para a espera de um usuário contribui para o fim do aplicativo.
- Transitoriedade. A população de usuários de um aplicativo da Web vem e vai, tanto permanente quanto temporariamente. Normalmente, existe uma população de usuários "on-line" ou ativos em um determinado momento. Eles vêm, usam e vão embora. Espera-se que retornem.
A tecnologia de banco de dados NoSQL foi inventada para resolver esses problemas. Eles crescem de forma elástica - basta adicionar mais servidores baratos em um cluster e os dados e, principalmente, a E/S, são automaticamente reequilibrados entre os novos servidores para suportar o aumento da carga. E o mesmo acontece no sentido inverso quando a população de usuários de um aplicativo diminui. E eles são criados para garantir acesso aleatório de leitura e gravação de baixíssima latência aos dados quando um aplicativo precisar. Eles fazem isso, em parte, aproveitando o uso transitório desses sistemas de software. Quando os usuários estão ativos, os dados necessários para atendê-los são armazenados em cache na memória principal. Nesse caso, a leitura ou gravação de um objeto de dados 5k pode ser feita com latência inferior a um milissegundo. Quando um usuário está ausente e começa a usar o aplicativo novamente, se seus dados não estiverem mais na memória, eles são automaticamente buscados e disponibilizados por meio da sessão do usuário, com os dados de um usuário que não está mais ativo sendo ejetados da memória e armazenados em um armazenamento em disco de baixo custo, aguardando o próximo uso.
Muitos dados
Se os dados precisarem estar prontos para "entrar em atividade" a qualquer momento, então um banco de dados NoSQL é a solução certa. Mas o Hadoop é uma opção muito melhor para armazenar dados quando isso não é um requisito. E os aplicativos interativos da Web podem gerar montanhas desse tipo de dados - dados que, historicamente, podem não ter sido coletados. Informações de login, fluxos de cliques, visualizações de página, dados de gaze, dados de aplicativos "antigos" que não são mais necessários para acesso em tempo real, drivers de entrada e saída, fluxos de compra, fluxos históricos de oferta e compra, informações de tempo. A lista é infinita. Com o Hadoop, você pode simplesmente coletar coisas. Não há necessidade de configurar um esquema ou definir formatos de dados com antecedência. Se você tiver uma ideia para coletar alguma informação que possa gerar um insight útil, armazene-a no Hadoop. "Quando estiver em dúvida, escreva."
O Hadoop foi criado para absorver informações e armazená-las de forma econômica. Ele emprega a mesma abordagem de "scale-out" de um banco de dados NoSQL, distribuindo dados em servidores de baixo custo. Mas armazena os dados de forma otimizada para análise em lote de alto rendimento, em vez de acesso aleatório e de baixa latência. Com o Hadoop MapReduce, as tendências podem ser descobertas, os dados podem ser agregados e as conclusões podem ser tiradas. Essas conclusões podem então moldar o comportamento do aplicativo.
Confira o webinar
Na próxima quinta-feira, Matt Aslett, analista sênior do The 451 Group, apresentará hospedar um webinar intitulado How AOL Accelerates Ad Targeting Decisions with Hadoop and Membase Server (Como a AOL acelera as decisões de segmentação de anúncios com o Hadoop e o Membase Server). Junto com Matt estará Pero Subasic, arquiteto-chefe da AOL.
Para todos os interessados em criar aplicativos da Web dimensionáveis, recomendo que assistam ao webinar. É divertido ver como essas tecnologias são usadas "no mundo real" e isso pode despertar uma ideia para seu próprio ambiente.
i A Zynga indicou publicamente que 290.000 pessoas jogaram o CityVille em suas primeiras 24 horas (https://www.insidesocialgames.com/2010/12/06/cityville-claims-cityville-is-its-fastest-growing-game/)