A Pinterest, empresa por trás da ferramenta de bookmarking visual que ajuda a descobrir e salvar idéias criativas, está usando análise de dados em tempo real para tomada de decisões orientada a dados (data-driven). Estão experimentando o MemSQL e as tecnologias Spark para o engajamento de usuários em tempo real.
Utilizando o MemSQL e o Spark, a Pinterest criou um pipeline para receber dados dentro do MemSQL utilizando o Apache Kafka e alimenta os dados dentro do Spark via Spark Streaming API. Essa solução fornece, em tempo real, informações sobre como os usuários estão interagindo com os Pins pelo mundo a fora. Isso ajuda a Pinterest a melhorar o mecanismo de recomendação mostrando os Pins relacionados para as pessoas usarem o serviço para diferentes casos de uso como: se planejar sobre quais produtos comprar, locais para ir e receitas para cozinhar.
Os dados de engajamento do Pin são inseridos em um tópico do Kafka que é então consumido pela tarefa do Spark streaming. Nessa tarefa cada Pin é filtrado e então enriquecido, com a geo-localização e a informação da categoria do Pin. Esse dado enriquecido é persistido pelo banco de dados MemSQL usando MemSQL Spark Connector e é disponibilizado para servir de consulta. O conector MemSQL Spark fornece ferramentas para leitura e escrita no banco de dados MemSQL usando o Spark. O conector usa MemSQLRDD para ler os dados do banco de dados MemSQL.
Essa solução oferece uma infra-estrutura que coleta, armazena e processa os dados de engajamento dos usuários em tempo real. Também ajuda a alcançar as seguintes recursos:
- Alto desempenho no log de eventos usando um agente chamado Singer para coletar eventos de logs e enviá-los para um repositório centralizado;
- Transporte e armazenamento confiável de log utilizando o Apache Kafka e serviço de persistência de log chamado Secor, que escreve de forma confiável esses eventos para o armazenamento de longo prazo na Amazon S3. Secor foi projetado para superar o fraco modelo de consistência do S3, sem a perda de dados e com escalabilidade horizontal e particionamento opcional de dados baseados em data.
- Execução rápida de consulta de dados em tempo real que permite uma execução de consultas SQL sobre os eventos à medida que eles chegam.