NOSQL = Not Only SQL - I don't think you should ever expect it to completely replace SQL since they're good at different things. I've played with a bunch of NOSQL engines (including CouchDB, MongoDB, App Engine, Solr, Xapian and Tokyo) and while I really like them and would use them for a bunch of problems, for most of my projects the ability to create arbitrarily complex queries using joins is essential for rapidly iterating and trying out new ideas.<p>Instead, I'd suggest using NOSQL stuff to complement SQL. Songkick use MongoDB as a fast caching layer for example: <a href="http://effectif.com/ruby/manor/denormalising-your-rails-application" rel="nofollow">http://effectif.com/ruby/manor/denormalising-your-rails-appl...</a> - and I've found Redis incredibly useful as a way of handling write-heavy parts of my applications and dealing with requirements to return random elements.<p>One of the most interesting aspects of document stores such as CouchDB is that they are schemaless, which for some problem sets is incredibly powerful - anything where you might be tempted to use key/value pairs in SQL for example.