August 29, 2012, 8:03 AM — In an effort to improve how MongoDB supplies its data to external applications, MongoDB keeper 10gen has extended the open source data store's query language, providing developers with more sophisticated ways to extract and transform data.
"We've focused on making it easier for developers to write code against MongoDB," said Jared Rosoff, 10Gen's product marketing liaison, of the new release. "We found that a lot of people were have trouble doing things that are relatively simple in SQL."
The fresh release of MongoDB 2.2 includes a new batch of query operators and expressions, as well as a pipeline-processing framework that will allow MongoDB to process data itself in serial multistep procedures. 10gen calls this collection of technologies a real-time aggregation framework.
MongoDB 2.2 has also been outfitted with a new locking mechanism and can now tag individual database shards as well.
Overall, this release -- the first major one since MongoDB 2.0 a year ago -- has gotten 600 new tweaks. (Production ready releases of MongoDB are even numbered, while the odd number versions, such as 2.1, are for internal testing and development.)
MongoDB, like most NoSQL data storage software, has been criticized for offering only simple methods of retrieving data, compared to the rich set of commands SQL databases provide. With prior versions of MongoDB, any processing against a set of queried records had to be done by external application programming, or through the MapReduce processing framework, which was not the best fit for the data store for various reasons, 10Gen and outside observers have noted.
The new aggregation framework adds additional MongoDB queries, allowing more data processing to be done by MongoDB itself, which could be a time saver.
"If I want to compute an average sales price from all the objects inside a terabyte of data, the alternative would be to extract a terabyte of data into my application and construct the average myself," Rosoff said. "With the application framework, I can construct a pipeline that will run the inside the database and I'll get back an average. I don't need to transfer a terabyte of data."