MongoDB and PHP

Once every decade or so, a technology comes along that is so revolutionary that it fundamentally alters the way we approach everything we do.

The world itself has changed. As I think back to 1995 when I first started developing Internet applications, our data needs were relatively simple. For the next 10 years, little changed; more and more people were using the Internet, and consequently data stores needed to scale to larger workloads, but caching largely took care of that, as all users were accessing the same set of data.

As social media came to fruition, it was clear that the approach that had worked for the prior 30 years was not longer sufficient. In the future, all data and experience would need to be personalized—on a large scale.

It was out of this need that MongoDB was created. A database for today’s applications, a database for today’s challenges, a database for today’s scale: MongoDB has that disruptive potential that will fundamentally change the way you approach developing applications.

In 2007, two brilliant developers, Eliot Horowitz and Dwight Merriman (the founders of 10gen), set out to do just that. Both had previously worked at DoubleClick—Dwight as CTO and founder and Eliot as an engineer—designing the system that served and tracked hundreds of thousands of ads per second and were intimately familiar with the challenges of building a high-volume, high-transaction, scaleable system with existing database technologies. They knew the challenges well and what current relational database offerings lacked. They set out to build a database optimized for operations and scale. They called their database MongoDB.

The driving philosophy behind MongoDB was to retain as much functionality as possible while permitting horizontal scale and, at the same time, to ensure that the developer experience is as elegant as possible.

As they set out to build MongoDB, they looked at the features provided by relational databases and asked what we could live without and still make it easy for the developer to work with. Relationships make horizontal scale impossible and multiple table transactions hard to do on distributed clusters. They then looked at improving the developer experience. Key value stores are great, but often more functionality is needed. Sometimes we need to access things by something other than the key. Since most languages today operate on objects, what if MongoDB used a data structure that resembled an object?

Download MongoDB and PHP (7.32 MB, 76 pages)