Why MongoDB Is Popular
There are many reasons that MongoDB is the most popular non-relational database by far, but one reason stands out across the broad spectrum of customers and users : Agility . I suppose there once was a time when it was acceptable to take months (or years) planning out an application and its associated data schema, building it and then resisting any efforts to update it (because the data infrastructure was so calcified that change was painful if not impossible). We don't live in that time anymore. Particularly in this age of Big Data , we must constantly iterate on our applications as we hone the types of data we're collecting and deploying to improve our user experiences. This is hard to do with a relational database. It's like trying to win the World Series with the Kansas City Royals. Or the English Premiership with Stoke City. It's possible, but unlikely. Iteration is critical to satisfying customers and adapting fast enough to win markets, as noted on the Wide Awake Developers blog : Iteration is [a] fundamental dynamic[[. Iteration facilitates adaptation, and adaptation wins competition. History is littered with the carcasses of "superior" contenders that simply didn't adapt as fast as their victorious challengers. MongoDB enables such iteration. More than any other NoSQL database, and dramatically more than any relational database, MongoDB's document-oriented data model makes it exceptionally easy to add or change fields, among other things. So if a developer needs to quickly evolve an application, MongoDB's flexible data model facilitates this. Rather than fitting an application to meet schema requirements, the developer writes her application and the schema follows. Form follows function in MongoDB, as it were. Yes, MongoDB is popular because it's easy to learn and get started. Yes, it's highly scalable (auto-sharding, anyone?), cost effective and more. But the biggest reason MongoDB is wildly popular, in my experience? Because MongoDB enables profound developer agility through its flexible data model.