April 25, 2013
Qeep is a global social network, with more than 19 million registered users sending nearly five million messages each day. Qeep allows you to play games, chat with friends, send pictures, and more. They use Riak to store all user chat messages.
Qeep was founded in 2006. As they started to grow, they realized their single-instance relational database was not going to work for them anymore. Sharding was becoming a significant operational burden and high latency was preventing quick access to the users’ messages. Qeep needed a new solution that could better handle their significant growth.
They started evaluating a number of different NoSQL solutions. With over one billion keys to store and no complex querying requirements, a key/value store would provide straightforward access to user data. Ultimately, Qeep selected Riak due to its high availability, ease of scale, and predictable operational cost. Once chosen, they quickly migrated over 1.8 billion entries of legacy data from their previous relational database installation over to Riak.
Currently, Qeep uses Riak to store all user chat messages. These messages are stored as JSON objects and are accessed using the open source Riak Java Client, offering high performance access for fetching this data. Qeep uses additional structs to model aggregation of data like inbox, outbox and chats between two users. Qeep has made some changes to the Java client to meet their unique caching needs, which can be reviewed on Github.
Qeep has a 12-node cluster with 48GB of RAM per node, connected via a 1GB network. Qeep uses Riak’s LevelDB backend, which is ideal for deployments with a very large number of keys.
“We love the simplicity of administration and scaling that Riak offers,” said Ingo Rockel, Engineer at Blue Lion Mobile, “We have seen huge performance gains since switching to Riak, which has been the biggest plus for us, and has been the basis for planning future feature releases.”