In computing, NoSQL (commonly interpreted as "not only SQL") is a broad class of database management systems identified by non-adherence to the widely used relational database management system model. NoSQL databases are not built primarily on tables, and generally do not use SQL for data manipulation.
NoSQL database systems are often highly optimized for retrieval and appending operations and often offer little functionality beyond record storage (e.g. key–value stores). The reduced run-time flexibility compared to full SQL systems is compensated by marked gains in scalability and performance for certain data models.
NoSQL database management systems are useful when working with a huge quantity of data when the data's nature does not require a relational model.
The data can be structured, but NoSQL is used when what really matters is the ability to store and retrieve great quantities of data, not the relationships between the elements.
Usage examples might be to store millions of key–value pairs in one or a few associative arrays or to store millions of data records. This organization is particularly useful for statistical or real-time analyses of growing lists of elements (such as Twitter posts or the Internet server logs from a large group of users).
1. NoSQL does not use SQL as its query language.
2. NoSQL database systems are developed to manage large volumes of data that do not necessarily follow
a fixed schema.
3. Data is partitioned among different machines (for performance reasons and size limitations) so that traditional
JOIN operations cannot be used.
4. NoSQL cannot necessarily give full ACID guarantees.
5. NoSQL has a distributed, fault-tolerant architecture.
NoSQL databases are categorized according to the way they store the data and fall under categories such as key–value stores, Big-Table implementations, document store databases, and graph databases.
1. Document-Oriented & XML Database:
Documents are addressed in the database via a unique key that represents that document. One of the other defining characteristics of a document-oriented database is that, beyond the simple key-document (or key–value) lookup that you can use to retrieve a document, the database will offer an API or query language that will allow retrieval of documents based on their contents.