Waterfall Methodologies seem antiquated nowadays, with SCRUM, Crystal, eXtreme, Kanban and others, all these new paradigms for building applications iteratively and quickly have really become commonplace. I feel NoSQL with Couchbase is the next evolution of that movement, allowing you to develop the data model just as smoothly and iteratively, and a lot more quickly.
When I create an application, I often only know part of the idea. I like to dive in, roll up my sleeves, and figure it out. I have an idea to start, but as I get into building it, I learn more, and change what I think often, when I show it to other people I learn more and change it again. With ActiveRecord and Ruby, I have to create migrations every time I change my mind about how something should work from a data perspective. I find this to be more than a pain.
When I switched to Couchbase, I found myself in a much more peaceful and organic world. I could add fields, remove fields, and change them so easily that I was giddy with migration-less development. Schema flexibility is SCRUMptious. I honestly feel it cut out a lot of headache and made development smoother. It also allows me to have additional “columns” which are just json fields that may vary from one “record” to the next. Of course these are Documents in Couchbase, they are not columns or rows, but most people still seem to think in SQL (for now).
So what does it mean to have Schema Flexibility? Couchbase stores data as JSON documents. That means as I retrieve and save my Ruby objects, I can easily add new JSON keys to the document or change their values from strings to arrays or whatever I need to change. I don't have to do a migration. Its nearly the same as creating or consuming an API with JSON, only it's my database and model.
(*Caveat – Of course if I already have millions of documents in a certain data format, I might want to handle the changover when they are instantiated, or do a “data migration,” which is different than development of a new application. Even this is trivial to implement.)
Ruby is a beautiful language, Rails a beautiful framework and paired with Couchbase, development has become even more organic than before.