Databases · Online gaming

HBase and MongoDB, which is better for a massive online game development?

Anonymous

January 11th, 2016

Would like to hear from others on which is better for massive online game development: HBase or MongoDB? Why would you recommend one over the other?


Henry Zektser Director of Software Innovation at Dell SecureWorks

January 11th, 2016

This really requires more information to answer.. What are you storing? What's your projected usage pattern and dataset size? Do you have resiliency/consistency requirements you need to address? What language are you coding in?

Joe Emison Chief Information Officer at Xceligent

January 11th, 2016

Both of those seem really inappropriate to me. HBase is going to be way too slow. Mongo doesn't really have much to recommend it over Cassandra or Riak for high availability, high volume writes.

If I were starting out, I'd consider DynamoDB or Firebase for initial development just to not have to deal with deploying one of those other DBs myself. You're going to spend a lot of time getting a cluster up, stable, available, with failover that you probably would want to spend on product-market fit initially.

Jason Graves Software Architect - Nokia Bell Labs

January 11th, 2016

When in doubt, just look at how the big-boys do it.

aws.amazon.com/solutions/case-studies/supercell

Specifically this part...

"Supercell is usingAmazon Kinesisfor real-time delivery of in-game data, handling 45 billion events per day. Whereas it recently ran its own Hadoop instances on Amazon EC2, it now usesAmazon Elastic MapReduce(Amazon EMR) to provide a managed Hadoop framework before passing the data into its data warehouse service running on top of Amazon EC2 instances. Kinesis data is also read intoAmazon DynamoDB. "Amazon DynamoDB is good for use cases like ours where scalability and speed are crucial," says Yliharju."

However...  if you are expecting more than 45-billion requests a day, this might not be the best option for you :)


Matt Kaufman Cloud Technology Expert

January 11th, 2016

There are several comparisons of the two on the web. Here's an easy to read table: http://db-engines.com/en/system/HBase%3BMongoDB I honestly can't speak in terms of massive online game development, however, I typically recommend that startups go with the technology for which there are the most developers OR the technology their existing developers already know. I think you're going to have to provide some addl details to get a better answer. Is your massive online gaming going to have users interacting with each other in real-time?

David Raccah eCommerce Software Architect and Technical Advisor

January 11th, 2016

Well, if I was advising you - like I do for many startups and companies - I would ask the same question that Henry asked - what are your requirements? MMORPG - is not a requirement.

What is a requirement is and what is needed is defining:

1) Size of object being stored
2) MOST IMPORTANT - I STRESS this MORE than TPS - contention requirements. Are you allowing players to act and interact within the same space? Will they be messing with each other's lives? If yes - this removes a a fair number of options, including MongoDB - whose real ONLY strength is in single player non contention gaming scenarios.
3) Yes - TPS
4) Read rate - versus write rate. This is important because if all u are doing is writing and little reading - think log files, sure Cassandra is the winner. What if you are reading and writing - think session caches and the sort, where every real action involves a read and write, in those cases Cassandra is not very good at all, and things like Riak and Couchbase crush it.
5) Next and very important is besides the read/write rating - how slow is one versus the other? I state this because if the writes are high but they are not needed in realtime, while the reads are - and old cache values are ok, then the architecture - can vary significantly. However, if the read rate and write rate and their performances vary greatly, and worse - they need to happen in RT and they are of equal importance - then this will require a larger set of technologies to make it work

Finally, there is always the WHO CARES approach. This approach is the true and tried approach for almost every startup I know of. It works great as long as you do TWO things:

1) You create a clean and layered abstraction for the code - so that as you change out back ends - tour system does not get affected.
2) You promise it will happen :-) Though if you are succeeding - you will be forced to do so.

Joanan Hernandez CEO & Founder at Mollejuo

January 11th, 2016

Shouldn't the decision of what DB engine or development platform to use, be based on the technical requirements rather than the game itself?

Just saying.

Cheers!

Krassimir Fotev Founder of Peer Belt Inc.

January 11th, 2016

Go with Cassandra - easy to develop, scale, fix if broken. Sent from my iPhone

Jordan Olin Senior Consultant at xMatters, inc

January 11th, 2016

I would concur with Joe Emison's advice.  Have not used DynamoDB specifically, but have used Amazon RDS for both Aurora and MySQL and can attest to how easy it was to setup, configure, and manage so that I could focus on implementing my MVPs.  In addition, Aurora was extremely fast and efficient; could be something to consider for anything requiring transactions.