Using HBase or Cassandra for a token server

Posted by crippy on Programmers See other posts from Programmers or by crippy
Published on 2011-08-30T22:27:07Z Indexed on 2012/06/08 16:49 UTC
Read the original article Hit count: 294

Filed under:
|

I've been trying to figure out how to use HBase/Cassandra for a token system we're re-implementing. I can probably squeeze quite a lot more from MySQL, but it just seems it has come to clinging on to the wrong tool for the task just because we know it well. Eventually will hit a wall (like happened to us in other areas). Naturally I started looking into possible NoSQL solutions. The prominent ones (at least in terms of buzz) are HBase and Cassandra.

The story is more or less like this:

  1. A user can send a gift other users.
  2. Each gift has a list of recipients or is public in which case limited by number or expiration date
  3. For each gift sent we generate some token that uniquely identifies that gift.
  4. For each gift we track the list of potential recipients and their current status relating to that gift (accepted, declinded etc).
  5. A user can request to see all his currently pending gifts
  6. A can request a list of users he has sent a gift to today (used to limit number of gifts sent)
  7. Required the ability to "dump" or "ignore" expired gifts (x day old gifts are considered expired)

There are some other requirements but I believe the above covers the essentials.

How would I go and model that using HBase or Cassandra?


Well, the wall was performance. A few 10s of millions of records per day over 2 tables kept for 2 weeks (wish I could have kept it for more but there was no way). The response times kept getting slower and slower until eventually we had to start cutting down number of days we kept data. Caching helps here but it's not an ideal solution since a big part of the ops are updates.

Also, as I hinted in my original post. We use MySQL extensively. We know exactly what it can and can't do both in naive implementations followed by native partitioning and finally by horizontally sharding our dataset on the application level to reside on multiple DB nodes. It can be done, but that's not really what I'm trying to get from this. I asked a very specific question about designing a solution using a NoSQL solution since it's very hard to find examples for designs out there.

Brainlag, not trying to come off as rude. I actually appreciate it a lot that you are the only one who even bothered to respond. but I see it over and over again. People ask questions and others assume they have no idea what they're talking about and give an irrelevant answer. Ignore RDBMS please. The question is about nosql.

© Programmers or respective owner

Related posts about nosql

Related posts about cassandra