Yesterday was an exciting and busy day – lots of good talks, conversations, and beer! Let me take you back to the morning sessions and the first keynotes of the day, Sam Ghods of Box: “MySQL: Still the Best Choice for Mission-Critical Data”.
This is the usual story of a (file sharing) application that started out on one MySQL instance to store metadata and ran into scaling bottlenecks. Interestingly, NoSQL did not work out for them, and they ended up sharding MySQL. “If you use a NoSQL store, but need any advanced features in your data store, you end up building them yourself. If you’re willing to partition your data yourself, you can use MySQL’s fancy features.”
Now, onto specific MySQL features that Box uses, not directly provided by NoSQL:
- Inter-row Consistency (aka Unique Key) ensures unique filenames in folders;
- Transactions maintain integrity on file/folder renames where the whole tree needs to be updated;
- Transactions also help maintain consistency when modifying denormalized data;
- Indexes are guaranteed to be consistent and fast, get you only the required data, and require no maintenance;
- Tools (or – whats happening in your data store), Metrics, Benchmarking;
- Maturity and Reliability (of MySQL).
And just to prove that they’re not anti-NoSQL, Box is using NoSQL as well, but for different applications. In other words, choose the right tool for the right job and be sure to consider all the pros and cons of a solution.
- Don’t choose a database just because “it scales” (whats the trade-off);
- Wait — don’t jump into new technologies;
- If you go with new technology, be aware that crazy things might happen;
- Make sure you’re not rebuilding MySQL.