Over a million developers have joined DZone.

How to Build Schema-Free & Scalable NoSQL Data Storage Inside Your RDBMS

DZone 's Guide to

How to Build Schema-Free & Scalable NoSQL Data Storage Inside Your RDBMS

· Java Zone ·
Free Resource

If you're a SQL developer looking to reap some of the benefits of NoSQL solutions, or a NoSQL developer interested in some of the more mature features of an RDBMS, you might be interested in Andrew Geweke's talk from the San Francisco Ruby on Rails Group.

Geweke's talk, titled "NoSQL in SQL: Getting to Have it All," explores the dilemmas faced by developers choosing between NoSQL and RDBMS database solutions. Do they go with the flexibility and scalability of NoSQL, or the security and familiarity of RDBMS? It's a tough trade-off, according to Geweke's write-up on the talk:

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.

And how do you combine the strengths of these databases? According to Geweke, it can be done using ". . . 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." So, yes: you put NoSQL in your RDBMS.

This can give you the best of both worlds, improving performance with requiring a completely new approach so much as an upgraded approach. If you want to get more specific and see how it's done, though, Geweke's talk is available in it's entirety:

Check out Geweke's full write-up for more background.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}