The rise of MongoDB continues with the news that the Huffington Post is moving from its current MySQL/PHP stack to use MongoDB, Scala and AngularJS.
John Pavley, CTO, Huffington Post , said in a blog post that while MySQL is one of the best databases around, the team behind the Huffington Post’s new content delivery system, which is codenamed Athena, wanted more freedom to be able to model the complex documents that news stories have become in the 21st century.
“I'm sure HuffPost readers would be disappointed to find a news story that didn't have relevant images, videos, tweets, and Facebook posts embedded inside it. For that task we're using MongoDB. While MySQL requires lots of up front planning and modeling to translate a news story into a collection of data fields and datatypes, MongoDB is a new kind of database that natively stores documents with flexibility. As our idea of what a news story evolves over the next eight years, MongoDB will help us keep pace.”
In the explanation of why they’re moving from PHP to Scala, Pavley says that while Huffpost, like Facebook, is built upon PHP:
“it has its warts and its limits, especially when it comes to handling a high volume of users. Facebook has worked miracles around the scalability issues of PHP. But to write humanistic code, code that isn't micromanaged by merciless engineering managers, (our content delivery system) needed a new programming language at her heart. The Athena team chose Scala (and its Play framework). “
The reason for the choice is that:
“Scala gets the benefits of Java's performance and stability while enabling developers to write simpler, more robust, and more reusable code. While keeping things simple, safe, and reusable can be done in PHP it takes a tremendous amount of effort. Scala enforces humanistic coding by default. (You can write bad code with Scala but you have to work hard to do it.)”
AngularJS has also been added to the mix to:
The writing and editing team at the Huffington Post will be able to use the new system to collaborate on stories in real time, seeing the changes being made with one editor in control of the other. Pavely says this ability to manage real-time collaboration where the developer relies on the AngularJS framework and Scala to manage collaborative changes is key.