Couchbase NoSQL at Tunewiki: A Billion Documents and Counting
TuneWiki now stores more than 1,000,000,000 documents for its service in Couchbase, proving once again the scalability and performance you get with Couchbase. Now that's a billion fewer things users need to worry about. Read this blog to learn more...
The other day I had a chance to catch up with Chad Kouse, CTO and Co-Founder of TuneWiki, an awesome app built using Couchbase. TuneWiki is revolutionizing the social music experience giving music lovers the opportunity to share their favorite music, lyrics and photos with friends. It is the #1 app on Spotify with the world’s largest database of scrolling lyrics, providing an unsurpassed karaoke style listening experience.
With over a billion data objects and growing, TuneWiki uses Couchbase Server to serve lyrics to millions of users around the world. I wanted to share in this blog my conversation with Chad, as he explains why the TuneWiki team went with Couchbase Server, what they’re doing with Couchbase, and why he’s confident about the capabilities of Couchbase Server to support TuneWiki’s growing user base.
Chad, can you share more details about how your application uses Couchbase?
At
TuneWiki, we use Couchbase for caching and storing data. We ran across
Couchbase when we were looking for a replacement for memcached. If a
memcached node suddenly failed or if we were adding a new memcached node
into the cluster - the entire app would slowdown. MySQL just wasn’t
able to keep up. There was also extra effort needed when we wanted to
expire items from the cache and to keep MySQL in sync with the caching
tier.
With Couchbase, we didn’t need to have two data stores - just a single one. Couchbase was easy to setup, use and manage. Because the Couchbase API was compatible with memcached, we could leave the memcached code as is and we only had to replace all the MySQL calls with Couchbase. Couchbase gave us predictable performance we needed for our app. We also never had to worry about growing the cluster. Adding more nodes always gave us the performance boost we needed without diminishing returns. Using Couchbase Server simplified our backend architecture to a great extend.
What exactly does your app store in Couchbase?
We
basically store everything our app needs in Couchbase. This includes
lyrics, timelines, API keys to quickly validate user actions and OAuth
tokens. Tunewiki has social elements like sharing photos and lyrics with
friends. If you’re using this feature, the items you share are stored
in Couchbase.
Tell me about your app workload.
We
currently have over 1 billion objects stored in Couchbase with the
system running at over 10K ops / sec. We have sized our cluster to keep
around 80% of our total data in RAM. For example, we use counters to
monitor API usage and throttle clients based on these counters. With a
relational database, as you can imagine, this is not something you can
do easily. With Couchbase, this counter gets shared across our entire
API cluster of servers automatically without the need to write any extra
application code. We use the atomic increment API’s to increment the
counter in memory to track hits - it is lightweight because it is all in
memory and you never have to go to disk. We don’t have any slowdowns
and there’s never a bottleneck.
What advice do you have for other Couchbase users?
Couchbase
is a great option even if you're starting out with a small project. You
can experiment with just 1 or 2 nodes during development and when
you’re ready to go into production, you can easily provision more nodes
in your cluster to scale. We also got excellent support from Couchbase
and I recommend users to checkout the Couchbase Google groups and other material that’s on the Couchbase site.
Any next steps? Are there new features or new apps you are planning to build with Couchbase Server 2.0?
Views
in Couchbase Server 2.0 is a cool feature. We plan to use views in
Couchbase Server for general housekeeping of our data and to improve app
functionality. With a key-value store, you couldn’t support predicates
on your data - you had to know the keys that you needed. This would
involve scanning across your data to figure out what keys were relevant
and what were not. With a billion objects in Couchbase, you can imagine
how tedious that would be.
For example, if there are a bunch of OAuth keys that are not needed any more, it would be nice to use views to get a list of them so that they can be cleaned up. Well without views you could potentially set an expiration time on them but if you forgot to put a value for the expiration time, these keys would live forever.
Where can folks learn more about how you have used Couchbase?
Couchbase users can checkout our blog to learn more.
Comments