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.


MongoDB Overview :: A NoSQL DB Server

MongoDB Overview

MongoDB is the leading NoSQL database. Designed for how we build and run applications today, MongoDB (named from "huMONGOus," meaning "extremely large") empowers organizations to be more agile and scalable. It enables new types of applications, better customer experience, faster time to market and lower costs for organizations of all sizes.
MongoDB is a general purpose, open-source database. It features:
  • Document data model with dynamic schemas
  • Full, flexible index support and rich queries
  • Auto-Sharding for horizontal scalability
  • Built-in replication for high availability
  • Text search
  • Advanced security
  • Aggregation Framework and MapReduce
  • Large media storage with GridFS
Instead of storing data in rows and columns as one would with a relational database, MongoDB stores a binary form of JSON documents (BSON). Relational databases impose flat, rigid schemas across many tables. By contrast, MongoDB is an agile NoSQL database that allows schemas to vary across documents and to change quickly as applications evolve, while still providing the functionality developers expect from relational databases, such as secondary indexes, a full query language and strong consistency.

MongoDB architecture diagram
MongoDB is built for scalability, performance and high availability. Auto-sharding allows MongoDB to scale from single server deployments to large, complex multi-data center architectures. Leveraging native caching and RAM, MongoDB provides high performance for both reads and writes. Built-in replication with automated failover enables enterprise-grade reliability and operational flexibility. MongoDB also provides native, idiomatic drivers for all popular programming languages and frameworks to make development natural.
This database is used by MTV Networks, Craigslist and UIDAI Aadhar. MongoDB is the most popular NoSQL database management system.
This was overview about MongoDB. We will check the features in next post.


Monday, June 24, 2013

RPM :: How To Remove Packages With RPM "Error: ... Specifies Multiple Packages "

Hi Friends,

Sometimes when you want to remove any packages installed on Server using RPM, you will get errors as "error: "" specifies multiple packages ". To get ride of this error, you have to use "--allmatches" option available with RPM command.

Below is example where I have tried to remove "cups-libs-1.3.7-30.el5" from server. Actually here we have "cups-libs-1.3.7-30.el5" installed for i386(32 bit) as well as x86_64(64 bit). So there are two copies of a single package available.

Example :

~$ sudo rpm -qa | grep cups
~$ sudo rpm -e cups-libs-1.3.7-30.el5
error: "cups-libs-1.3.7-30.el5" specifies multiple packages
~$ sudo rpm -e  --allmatches cups-libs-1.3.7-30.el5
error: Failed dependencies: is needed by (installed) gtk2-2.10.4-21.el5_7.7.x86_64 is needed by (installed) paps-0.6.6-20.el5.x86_64 is needed by (installed) gtk2-2.10.4-21.el5_7.7.i386
~$ sudo rpm -e  --allmatches --nodeps cups-libs-1.3.7-30.el5
~$ sudo rpm -qa | grep cups

Note : Here, we have used "--nodeps" option for excluding dependencies!