We use MySQL a lot at Smartling. However, MongoDB is quickly becoming the database of choice when designing our various translation platform components. I am often asked about our experience comparing both, then making the choice of MySQL vs. MongoDB (or any other nosql database).
How It Happened
We’ve started looking beyond MySQL because we started to hit some limits (and using the largest instances on Amazon AWS we could get). The way our software works leads to a ton of inserts/updates/deletes as well as a fair number of selects. So we can’t optimize for a single action without introducing penalties for another actions. The natural progression led to sharding. MySQL does not support sharding natively from the ground up – this alone was enough to start looking around. We’ve resisted sharding for as long as we could by optimizing our application, but the clock was ticking.
Choosing a New Database
A number of realizations led to our new database of choice:
1. We wanted native support for sharding to be able to scale horizontally.
2. We realized we did not need transactionality of relational databases for the most part (pure overhead without any benefits in our case).
3. Referential integrity was also not very high on our list even though it is engrained in developer’s minds and hearts since Databases 101 in school. Relational databases or not – once you run at scale – it is a lost cause anyway.
4. We still needed high availability and replication.
5. The ability to add fields to the tables with millions and millions of records without any downtime sounded super sexy to our development team (this is really a dream come true).
MongoDB Wins Out
After some consideration, we settled on MongoDB without spending too much time researching every single nosql database on the market. Our reasons:
- MongoDB fits our requirements well
- 10gen (creators of MongoDB) is our customer. Russian docs anyone? You can contributehere.
- Many of our customers use mongoDB. Foursquare is an example. Their presentations about mongo learning done the hard way is very useful (look at “see also” materials on the bottom of this page).
- 10gen office is very close to Smartling HQ in NYC – we can run there and scream on top of our lungs for help in case of emergencies (never happened so far!)
- Dwight (@dmerr), 10gen CEO and co-founder, is an impressive dude and when you walk through 10gen office – it is unmistakably a database company. You just know.
- 10gen is backed by first class investors – gives you a confidence they are here to stay
In future posts, I’ll talk more about MongoDB performance comparing to MySQL and a lot of gotchas we had to sort through that were not immediately apparent.