O InfoQ Brasil conversou com Manik Surtani, fundador do Infinispan. Surtani trabalha há anos com computação distribuída e open source e já foi líder do projeto JBoss Cache, tendo participado diretamente da construção dos recursos de clustering do JBoss AS. Veja destaques da entrevista.
Poderia falar sobre o Infinispan, suas motivações e o que está acontecendo no projeto nesse momento?
O Infinispan é uma plataforma de data grids open source. Data grids são repositórios distribuídos, com estrutura chave/valor em memória, que podem ser utilizados como bancos de dados de objetos ou como camada de aumento de performance sobre um banco relacional ou NoSQL. As motivações são simples: qualquer pessoa que precise de alta disponibilidade e acesso rápido com baixa latência aos dados pode usar o Infinispan para auxiliar na obtenção desses benefícios.
Você está envolvido nas especificações JSR-107 (JCACHE) e JSR-347 (Data Grids). Poderia nos contar sobre elas e em que o Infinispan difere dessas especificações?
Ambas as especificações estão atualmente incompletas. O Infinispan irá implementar ambos os padrões. Nesse momento, o Infinispan inclui e vai além das duas especificações.
Por que você acha que Java precisa de um padrão para data grids? Qual é a demanda?
Existem muitos provedores de data grids no mercado, na maioria proprietários. Os usuários finais têm dificuldades com todas elas, uma vez que a curva de aprendizado é alta. Ter uma API padrão vai ajudar a tornar os data grids mais fáceis de usar, e também para migrar de uma solução para outra.
Quando um arquiteto deve considerar o uso de um cache distribuído, um Data Grid ou NoSQL?
Os Data Grids são um subconjunto do NoSQL. O NoSQL é um termo muito amplo e cobre vários e diferentes repositórios de dados "modernos".
Como o Infinispan pode ajudar com análise de dados? E que tendências você vê nas áreas de NoSQL, Data Grids e Big Data?
A análise de dados (Analytics) é uma técnica poderosa. O Hadoop é líder do mercado nesa área, com sua habilidade de capturar e armazenar grandes volumes de dados rapidamente. O próximo passo em Analytics será uma análise de dados sensível ao tempo - essencialmente um map/reduce mais rápido. Ideias como as apresentadas no artigo publicado pelo Google sobre Dremel, e a implementação do Impala da Cloudera, são alguns exemplos. Além disso, o processamento de fluxos de dados em tempo real será interessante, como o Storm do Twitter.
Como você vê o futuro dos repositórios de dados? Teremos diferentes tipos? Como as transações funcionariam nesses cenários?
Transações funcionam em alguns repositórios NoSQL, mas não em todos. Na verdade, nem todos os repositórios de dados precisam ser transacionais; por exemplo, armazenar logs no Hadoop para um processamento offline não deveria ser transacional. O futuro do armazenamento de dados, na minha opinião, seguirá a linha poliglota.
Com a persistência poliglota, um desenvolvedor poderá utilizar mais de um repositório de dados para uma aplicação, para tirar o máximo de proveito das diferentes características de cada um: transacional quando necessário, in-memory quando possível, e assim por diante. Também irão surgir camadas de abstração e ferramentas de desenvolvimento para tornar tudo isso possível.
A última release do Infinispan traz o novo protocolo de commit "Total Order". Quais as diferenças para o 2PC (Two Phase Commit)?
O Total Order é um novo protocolo de commit que oferece as mesmas garantias que o 2PC, mas com menos RPCs (chamadas remotas de procedimentos). Mas o 2PC não foi removido e ainda é o default. A maior vantagem do Total Order é a de ser livre de deadlocks. Com isso, torna-se muito mais performático em cenários com alta contenção por um conjunto de dados.
Quais são os próximos passos para o Infinispan? O que podemos esperar para as futuras releases?
A maioria das funcionalidades que estão por vir, podem ser acessadas publicamente através de nosso roadmap. https://community.jboss.org/wiki/InfinispanRoadmap