Saturday, June 29, 2013

Features and UseCases of MongoDB NoSQL DB

In Last Post "Overview on MongoDB" we have discussed about the MongoDB. Now in this post we will discuss about the features and Use cases in Real World.

Main features

The following is a brief summary of some of the main features:
Ad hoc queries
MongoDB supports search by field, range queries, regular expression searches. Queries can return specific fields of documents and also include user-defined JavaScript functions.
Any field in a MongoDB document can be indexed (indices in MongoDB are conceptually similar to those in RDBMSes). Secondary indices are also available.
MongoDB supports master-slave replication. A master can perform reads and writes. A slave copies data from the master and can only be used for reads or backup (not writes). The slaves have the ability to select a new master if the current one goes down.
Load balancing
MongoDB scales horizontally using sharding The developer chooses a shard key, which determines how the data in a collection will be distributed. The data is split into ranges (based on the shard key) and distributed across multiple shards. (A shard is a master with one or more slaves.)
MongoDB can run over multiple servers, balancing the load and/or duplicating data to keep the system up and running in case of hardware failure. Automatic configuration is easy to deploy and new machines can be added to a running database.
File storage
MongoDB could be used as a file system, taking advantage of load balancing and data replication features over multiple machines for storing files.
This function, called GridFS,[11] is included with MongoDB drivers and available with no difficulty for development languages (see "Language Support" for a list of supported languages). MongoDB exposes functions for file manipulation and content to developers. GridFS is used, for example, in plugins for NGINX.[12] and lighttpd[13]
In a multi-machine MongoDB system, files can be distributed and copied multiple times between machines transparently, thus effectively creating a load balanced and fault tolerant system.
MapReduce can be used for batch processing of data and aggregation operations. The aggregation framework enables users to obtain the kind of results for which the SQL GROUP BY clause is used.
Server-side JavaScript execution
JavaScript can be used in queries, aggregation functions (such as MapReduce), are sent directly to the database to be executed.

Capped collections
MongoDB supports fixed-size collections called capped collections. This type of collection maintains insertion order and, once the specified size has been reached, behaves like a circular queue.

Use cases and production deployments

MongoDB is well suited for the following cases:
·         Archiving and event logging
·         Document and Content Management Systems. As a document-oriented (JSON) database, MongoDB's flexible schemas are a good fit for this.
·         E-commerce. Several sites are using MongoDB as the core of their ecommerce infrastructure (often in combination with an RDBMS for the final order processing and accounting).
·         Gaming. High performance small read/writes are a good fit for MongoDB; also for certain games geospatial indexes can be helpful.
·         High volume problems. Problems where a traditional DBMS might be too expensive for the data in question. In many cases developers would traditionally write custom code to a filesystem instead using flat files or other methodologies.
·         Mobile. Specifically, the server-side infrastructure of mobile systems. Geospatial indexes are key here.
·         Operational data store of a web site. MongoDB is very good at real-time inserts, updates, and queries. Scalability and replication are provided which are necessary functions for large web sites' real-time data stores. Specific web use case examples:
·         content management
·         comment storage, management, voting
·         user registration, profile, session data
·         Projects using iterative/agile development methodologies. Mongo's BSON data format makes it very easy to store and retrieve data in a document-style / "schemaless" format. Addition of new properties to existing objects is easy and does not generally require blocking "ALTER TABLE" style operations.
·         Real-time stats/analytics

Next Post we will see how to Install MongoDB on Linux.