Focusing on "SQL" being a problem is misguided. The amount of SQL knowledge needed to achieve basic CRUD/REST behavior takes about an hour to learn. More advanced SQL takes much longer but most of these new DBs don't allow for queries that complex or would not perform well if you tried.<p>I'm using mongodb for a new app at the moment. Here are some of the reasons I chose it:<p>1 - schema-less. I like having postgresql as my backstop for data constraints. It has saved me many times to have a locked down schema that will refuse to corrupt when my app code gets sloppy. That said, during the dev process, its nice at times to avoid thinking through these constraints and getting straight to persisting objects ad-hoc.<p>2 - fast enough. I have a few features that will creep into the area of "I might need memcached". I'm betting mongodb will be "fast enough" to give me one object repo for my entire app and I can avoid the headaches of writing cache management code.<p>3 - good enough. Having step 2, fast-enough, means I may have to give up some ACID. I don't need an ACID guarantee for this app. If I did, I would go back to step 2 and rethink writing all that cache management code as I'd stick with postgresql. I do need durability relative to my daily backup. If the tradeoff is 5 or 7 9s (postgres) for a system that is 3 9s (mongodb), and a restore from a dbdump always works, then 3 9s reliability is ok with me. Note: I have no meaningful data on mongodb reliability other than "others are using it for more demanding projects than mine and have good things to say".<p>4 - more than just simple key/value. I needed to be able to retrieve parts of objects, not just the entire value for a key.<p>5 - Simplify my app code. Sure, ORMs all well-refined: simple stuff is simple, complex stuff is possible. But it takes a heap of code. With ORM frameworks, I constantly monitor the SQL being output to the log to ensure the framework crafted my SQL properly. Now that I'm using mongodb, my app code's "models" are just thin wrappers around a ruby Hash and simple queries go straight to the mongo ruby drver API. More complex queries get written by me and sit as their only little methods on my model objects. Sure, there is a ruby framework and evolving DSL for mongo, but I want to get away from these added layers.<p>Notice that the syntax or structure of the db's query language did no crack my requirements list? In fact, mongo has what I would consider some inconsistencies in its query language (if you could even call it a language).<p>So here are some suggestions for a better name:<p>* - alt.db<p>* - SchemaFree<p>* - less_ACID<p>* - next-gen object stores<p>* - hybrid db models