According to Ohloh, MySQL and MongoDB have little in common. One’s seen commits from over a thousand people, the other shy of sixty. One’s 1.1M+ lines of code, the other not even two hundred thousand. And architecturally, the projects are quite distinct.
But in many respects, MongoDB is the new MySQL.
Not because MongoDB is a replacement, as Joseph Ritchey argues in his piece “MongoDB is the New MySQL.”
It is certainly true that there are instances of MongoDB replacing MySQL. It is equally true that there are instances of MongoDB being replaced. In at least one instance, by MySQL. What MongoDB is doing, however, and doing well, is playing a role similar to the one MySQL began playing a decade ago.
Consider the following:
- Application Traction:
MySQL was so popular that Linux distributions offered to install the database as part of their own setup and configuration process. Every new programming language and framework supports MySQL out of the box; for most, the documentation assumes MySQL as your database.
MySQL was driven towards ubiquity by its grassroots success and adoption. Because they suffered from traditional limitations in customer conversion, however, it was to the enterprise market that they turned to ramp up revenue growth. This meant adding features that its base had no use for, but this tradeoff was viewed as necessary [coverage].
10gen hasn’t yet come to this crossroads. But as they increasingly turn to traditional enterprises like Disney for revenue growth, they are following the MySQL path even more closely.
A decade ago, MySQL’s lack of features traditionally favored by the enterprise – think stored procedures and triggers – was a virtue for workloads that didn’t require them. This made the database less DBA friendly but more accessible to developers. Further, with the project open source and license compatible with Linux, there were no throttles to adoption. More often than not, availability trumps features. A decade later, MySQL – a feature-poor database relative to the commercial alternatives at the time – was the most popular relational database on the planet.
What is MongoDB? An even simpler datastore than MySQL, at least from a developer’s perspective. No schema, JSON storage/retrieval. The lack of friction from code acquisition to storing items in Mongo is offsetting concerns about its limitations, just as we’ve seen before.
MySQL employs the GPL as the foundation, along with its copyright, for its dual license revenue model [coverage]. This model relies on the GPL’s reciprocal provisions, which are restrictive compared to permissive licenses such as the Apache, BSD or PostgreSQL.
MongoDB, similarly, is governed by a restrictive license in the AGPL [coverage], a version of the GPL that closes the so-called ASP loophole. Its drivers are permissively licensed to insulate application providers from the copyleft provisions of the AGPL, but the core product is more restrictively governed than Apache licensed alternatives such as Couchbase.
From a market visibility standpoint, the popularity of MySQL dwarfs that of MongoDB.
But within developer specific communities, the relative trajectories of the two projects is indicative of greater parity. Here is a map of the mentions of MongoDB vs MySQL via Hacker News Trends, for example.
MySQL remains, then, far more popular. But MongoDB’s accelerating traction is impressive.
- Technical Criticism:
The more popular MongoDB becomes, the more criticism it attracts. In this, too, MongoDB is like MySQL. For years, very good database people would happily detail the dozens of reasons that they believed MySQL to be inferior to PostgreSQL, as an example. And yet adoption of the former significantly outpaced adoption of the latter.
For all of the technical criticism that MongoDB has attracted – and as was the case with MySQL, much of it is warranted – this has not had an obvious impact on the popularity of the project. As long as developer sentiment towards MongoDB remains within acceptable parameters, as in the diagram below, adoption should be unaffected.
Technology, as is frequently forgotten in this industry, is but one portion of the adoption equation. Enough so that VHS vs Betamax has transitioned from parable to cliche.
Good technology is important. It is not, however, the sole determinant of success. Ease of use, for example, will often trump features. And availability, more often than not, is more important than all of the above.
MySQL became the most popular relational database on the planet by turning its weaknesses into strengths and successfully leveraging its ubiquity. It was, in that respect, one of the original guerrilla success stories in the open source world.
As the market moves ahead into a world with room for both relational datastores and NoSQL alternatives, we can expect to see patterns from the former repeat themselves within the latter. The most obvious of these, to date, is the degree to which MongoDB is following in the footsteps of MySQL.
It would be foolish to predict the same success that MySQL enjoyed for MongoDB, because the underlying market context has changed. But it is clear that – whether it is intentional on 10gen’s part or no – MongoDB is, according to a variety of metrics, the new MySQL.
What does this mean for MongoDB competitors? It certainly does not preclude success; PostgreSQL, after all, remains a vibrant and important project in spite of MySQL’s massive growth. It does mean, however, that projects competing directly with Mongo would do well to study the market conditions that produced MySQL, because they’re about to play themselves out once more.
All of this has happened before. All of this will happen again.
Disclosure: 10gen, the parent company of MongoDB, is not a RedMonk customer. Several competitive vendors are, however, including Couchbase.