The last few years have seen an explosion of interest in NoSQL data-storage layers, and then some retrenchment as the limitations of these systems became increasingly apparent. (It turns out they’re not magic, after all!) Today we seem faced with a choice. On one hand, we can reach for some of the potential “big wins” of NoSQL systems, but many of them are still relatively immature — at least when compared to the RDBMS — and the things we give up (transactionality, durability, manageability) we often discover to be very painful losses. On the other hand, we can reach for the security of a traditional RDBMS; we get incredibly well-understood, robust, durable, manageable systems…but we often sacrifice a lot of potential future growth.
In this talk given at the San Francisco Ruby on Rails Group, Andrew Geweke shows you how to have some of your cake and eat some of it, too. He introduces a combination of architectural patterns and software (including two brand-new RubyGems) that let you build schema-free, scalable data storage inside a traditional RDBMS, and shows you how just changing your deployment options lets you scale the same codebase and database design from a site that’s just barely getting started to one under extremely high load. These are the same techniques used by sites like Scribd, which happily serve dozens of pages per second from a RDBMS. These techniques also open up an easy migration path for you to move appropriate data sets to a NoSQL system when desired, allowing you to form a “blended” system that gives you the best of both worlds.