Biblioteca de grafos Cassovary: mais um projeto do Twitter com código aberto
Foi liberada no início deste mês pelo grupo de engenharia do Twitter o código fonte de sua sofisticada biblioteca de processamento de grafos Cassovary. Segundo anúncio no blog de engenharia do Twitter, a Cassovary foi projetada para lidar eficientemente com grafos contendo bilhões de arestas e nós, e foi desenvolvida pelo grupo de engenharia do Twitter. A biblioteca oferece alguns tipos de nós e estruturas de dados básicas, além de algoritmos de percurso dos grafos. Um uso típico para esta biblioteca é fazer análise e mineração de dados em grande escala estruturados como grafos.
Segundo Pankaj Gupta líder técnico do Twitter é usado flockDB como banco de dados para armazenamento de grafos em tempo real. Esses dados são exportados diariamente para processamento pela Cassovary. Gupta descreve o uso da Cassovary no Twitter:
No Twitter, a Cassovary é parte da camada inferior de um conjunto de tecnologias utilizadas para suportar muitas das nossas funcionalidades básicas para tratamento de grafos, incluindo as funcionalidades Who to Follow e Similar to. Também utilizamos a biblioteca em buscas e nos algoritmos que determinam que tipo de produtos promocionais os usuários vêem. Com o tempo, esperamos trazer para a Cassovary mais lógica não proprietária [utilizável em contextos diferentes do Twitter].
A Cassovary apesar de ter sido desenvolvida em Scala, pode ser utilizada com qualquer outra linguagem que suporte a JVM. Uma característica importante é a economia de espaço, aspecto em que se diferencia em relação a outras bibliotecas para tratamento de grafos que fazem uso da JVM.
Veja um exemplo mínimo de uso da API, em Scala, que gera um grafo direcionado com três nós e imprime estatísticas sobre o grafo gerado:
import com.twitter.cassovary.graph.TestGraphs
object HelloGraph {
def main(args: Array[String]) {
val numNodes = if (args.length > 0) args(0).toInt else 3
printf("Generating a complete directed graph with %d nodes...\n", numNodes)
val graph = TestGraphs.generateCompleteGraph(numNodes)
printf("\nHello Graph!\n\tA complete directed graph with %s nodes has %s directed edges.\n",
graph.nodeCount, graph.edgeCount)
}
}
Há outros exemplos do Cassovary na página do projeto no Github.
O Twitter encoraja que os desenvolvedores usem a biblioteca, criem projetos fork e contribuam para o projeto, participem por meio das listas de discussão e até criem issues no GitHub. A conta @cassovary é a recomendação dada para se manter informado sobre as atualizações na biblioteca.
Conteúdo educacional
Mobilidade: Frameworks, SOs e o Mercado
Ricardo Ogliari 23 Mai, 2013
Caminhos de uma estratégia mobile
Sérgio Lopes 23 Mai, 2013
Complexidade organizacional no Século 21
Alexandre Magno 16 Mai, 2013

Olá visitante
Você precisa cadastrar-se no InfoQ Brasil ou Login para enviar comentários. Há muitas vantagens em se cadastrar.Obtenha o máximo da experiência do InfoQ Brasil.
Dê sua opinião