# UserVideoGraph (UVG)

## What is it
User Video Graph (UVG) is a Finalge thrift service built on the GraphJet framework. In maintains a graph of user-video engagements and serves user recommendations based on traversals in this graph.

## How is it used on Twitter
UVG generates video recommendations from a given seed tweet set. It recommends tweets based on collaborative filtering & random walks.

UVG is a stateful service and relies on a Kafka stream to ingest & persist states. The Kafka stream is processed and generated by Recos-Injector. 
It maintains an in-memory user engagements over the past 24-48 hours. Older events are dropped and GC'ed. 

For full details on storage & processing, please check out our open-sourced project GraphJet, a general-purpose high performance in-memory storage engine.
- https://github.com/twitter/GraphJet
- http://www.vldb.org/pvldb/vol9/p1281-sharma.pdf
