Before jumping into Adam D’Angelo details about the decisions of using MySQL at Quora instead of a NoSQL database, I think we should firstly ask ourselves why would Quora need to look beyond a relational database?
As far as I can tell and please take it with a grain of salt, Quora is just a new fancy form of a forum: questions and non hierarchical answers. So, I’d speculate that based only on the amount of traffic and the amount and frequency of posts, scalability could be the only concern for Quora. But now let’s see what Adam says:
- If you partition your data at the application level, MySQL scalability isn’t an issue.
- These distributed databases like Cassandra, MongoDB, and CouchDB aren’t actually very scalable or stable.
- The primary online data store for an application is the worst place to take a risk with new technology.
- You can actually get pretty far on a single MySQL database and not even have to worry about partitioning at the application level.
- Many of the problems created by manually partitioning the data over a large number of MySQL machines can be mitigated by creating a layer below the application and above MySQL that automatically distributes data.
- Personally, I believe the relational data model is the “right” way to structure most of the data for an application like Quora
These are confirming my initial thoughts, but also provide a decent and correct perspective on choosing your storage solution.