I think the SQL is Agile post by Armin Ronacher is a little short sighted. Disclaimer: I rarely use MongoDB or other NoSQL offerings. There are plenty of good reasons to use MongoDB in production. Many people and companies have shown it to be successful. More importantly we should not be afraid of trying out new things, especially for side projects. We should be cautious of trying new things for important projects. By “important”, I mean those projects that need to be reliable or where there is some sort of SLA. This important distinction between types of projects is not made in the article. If we are building some toy application or program, then I see no problem considering MongoDB. For those 1-2% of toy projects that take off and need to scale big, you will have some growing pains with MongoDB. However, you will always have growing pains. Even with SQL there will be growing pains. There are always new ideas coming out about how we can use relational databases to scale. At one point there was no such thing as the idea of sharding or master/slave replication. These ideas came about as SQL became more mature. There may be another breakthrough that no one has thought of to scale relational databases. There also may be some breakthroughs with NoSQL datbases that make them scale better than they do now.
Relational databases have been around since the 1970s and Oracle was started in 1977. There has been a ton of research poured into relational databases. We have the SQL-99 standard and ACID compliance. There are a lot of people using relational databases and they have become very familiar with them over the years. MongoDB was just started a little over 5 years ago. Not as many people have as much knowledge or expierence with MongoDB as they do with something like MySQL because it has not been around as long. To say that you will “never” use it again for a project moving forward is the wrong attitude. If you do not feel comfortable with MongoDB, then you should not use it for any sort of serious project. That should not prevent you from using it for toy projects so you can build more experience. Let’s face it: document databases have a place in the world and they are not going to go away.
I think a lot of the problems Armin has with NoSQL, such as adding a new index, will go away. The fact that indices are hard to add or can change the output is a problem that can be solved. That is not a problem inherit with document databases. That is just a pain point of the implementation. The global lock in MongoDB was a huge pain point and it eventually went away. Maybe saying that you “would never start a project with MongoDB” is just sensationalism. I believe NoSQL can be used for toy projects if you think the technology is interesting but are not ready to use it on something more serious. That is a great way we can be responsible with approaching new technology.